In 1934, logician Haskell Curry noticed something odd: the types of combinators in combinatory logic matched the axioms of intuitionistic logic. Twenty years later, William Howard formalized the observation for the λ-calculus — and the Curry-Howard correspondence was born.
The correspondence states three things at once:
- A proposition in logic is exactly a type in a programming language.
- A proof of a proposition is exactly a program of that type.
- Simplifying a proof (normalizing it) is exactly running a program.
This is not a metaphor. It is a precise mathematical isomorphism — every construct on one side maps to a matching construct on the other:
| Logic | Programs |
|---|---|
| Proposition | Type |
| Proof of | Term of type |
| Implication | Function type |
Conjunction A ∧ B |
Product type |
Disjunction A ∨ B |
Sum type |
| False (⊥) | Empty type (no inhabitants) |
The simplest instance: a function is literally a proof that "if then ". Calling on a proof of produces a proof of — exactly modus ponens.
Comments
Loading comments...