15-816 Linear Logic
Lecture 15: Linear Lambda-Calculus
In this lecture we switch from logic programming to functional programming.
Since our logic is constructive, proofs can be seen as constructions.
For example, a proof of A -o B can be seen as a plan for
achieving goal B from resource A. To find concise
notations for such plans we introduce the linear lambda-calculus.
In the linear lambda-calculus, computation arises from reduction
rather than from proof search. It can therefore serve as the basis for
a functional programming language. On the other hand, linearity
introduces state into the computational model, so we will be interested
in capturing some imperative features as well in the upcoming lectures.
From a judgmental point of view, proof terms arise by the transformation
of a synthetic judgment into an analytic one. A synthetic judgment
requires external evidence; an analytic judgment can be seen to be
evident by examining its constituents. For this to hold, proof terms
must carry enough information to reconstruct a proof.