15-816 Linear Logic

Lecture 12: Proof Terms

Natural deductions in intuitionistic logic are in bijective correspondence with simply-typed lambda terms. This correspondence also relates propositions (from logic) to types (from the lambda-calculus). This insight, known as the Curry-Howard isomorphism, shows the deep connection between logic and functional programming, and has led to the development of constructive type theory.

In this lecture we briefly review this connection and extend it to linear logic. Local reduction can be interpreted as rules of functional computation, and local expansions and extensionality principles. Linear types express properties of functions, such as "this function will use its argument exactly once".

Proof terms are also important if we want to verify the operations of tactics and tacticals: to insulate ourselves against errors in complex theorem proving procedures, we might ask for it to produce a proof term, which can be independently checked.

We also show another example application, which is the encoding of computations in a small imperative programming language. We will later increase the complexity of this language to handle more advanced construct.


[ home | schedule | assignments | languages | handouts | overview | links ]


Frank Pfenning
fp@cs