Types For Proofs And Programs by S. Berardi