2026-08-28·von Sijie Wang#idea#math

curry-howard

Curry–Howard — proofs are programs

Parent: logic

The hinge of the whole branch: propositions = types, proofs = programs, proof-normalization = computation. Logic and computation are the same structure seen twice.

The dictionary

logictype theory / programming
proposition Atype A
proof of Aprogram (term) of type A
A → B (implies)function type A → B
A ∧ Bproduct A × B (pair)
A ∨ Bsum A + B (tagged union)
⊤ / ⊥unit / empty type
∀x.P(x)dependent function Π(x:A). P x
∃x.P(x)dependent pair Σ(x:A). P x
cut / detour eliminationβ-reduction (evaluation)

A proof that assumes A and derives B is literally a function turning evidence-for-A into evidence-for-B. Checking a proof = type-checking a term.

Why it's deep, not a pun

  • Constructivity: to prove ∃x.P(x) you must build a witness x and a proof of P(x) — i.e. a program producing them. So intuitionistic logic ⟺ typed λ-calculus exactly (classical logic needs control operators — Griffin 1990, call/cc).
  • Normalization = running: cut-elimination (simplifying a proof) is β-reduction (evaluating a program). A normalized proof is a value.
  • History: Curry (combinatory logic, 1930s–58), Howard (1969) "formulae-as-types," de Bruijn (Automath). It's why machine proof is even possible.

Consequence

You can compute with proofs and verify programs as proofs. This is the foundation of proof assistants: dependent type theory gives types rich enough to be any proposition, and Lean 4 checks proofs by type-checking. From computation and proof, one object.

über diesen eintrag

Einer von sijie's Wiki-Einträgen. Die KI auf dieser Site ist im selben Corpus verankert und antwortet in sijie's Stimme mit Zitaten zurück auf Einträge wie diesen — das Beantworten kostet sijie Geld, daher wartet sie hinter einem Code: zugriffscode eingeben →