15-312 Foundations of Programming Languages
Lecture 23: The Curry-Howard Isomorphism
In this lecture we explore an interesting connection between logic and
programming languages. In brief, logical proofs embody certain
constructions which may be interpreted as programs. Under this
interpretation, propositions become types. It was first observed by the
logicians Haskell Curry  and William Howard  in
different contexts that this is in fact an isomorphism: in a certain
fragment of logic, every proof describes a program and every program
describes a proof.
We will make the same observation here, using the methodology of
judgments that we have used to far in the course, applied to the
development of principles of logical reasoning. This formulation
is due to Per Martin-Löf .