What are the most interesting equivalences arising from the Curry-Howard Isomorphism?

Posted by Tom on Stack Overflow See other posts from Stack Overflow or by Tom
Published on 2010-06-03T19:31:50Z Indexed on 2010/06/03 19:34 UTC
Read the original article Hit count: 414

I came upon the Curry-Howard Isomorphism relatively late in my programming life, and perhaps this contributes to my being utterly fascinated by it. It implies that for every programming concept there exists a precise analogue in formal logic, and vice versa. Here's an "obvious" list of such analogies, off the top of my head:

program/definition        | proof
type/declaration          | proposition
inhabited type            | theorem
function                  | implication
function argument         | hypothesis/antecedent
function result           | conclusion/consequent
function application      | modus ponens
recursion                 | induction
identity function         | tautology
non-terminating function  | absurdity
tuple                     | conjunction (and)
disjoint union            | exclusive disjunction (xor)
parametric polymorphism   | universal quantification

So, to my question: what are some of the more interesting/obscure implications of this isomorphism? I'm no logician so I'm sure I've only scratched the surface with this list.

For example, here are some programming notions for which I'm unaware of pithy names in logic:

currying                  | "((a & b) => c) iff (a => (b => c))"
scope                     | "known theory + hypotheses"

And here are some logical concepts which I haven't quite pinned down in programming terms:

primitive type?           | axiom
set of valid programs?    | theory
?                         | disjunction (or)

© Stack Overflow or respective owner

Related posts about functional-programming

Related posts about formal-methods