The lambda calculus
The lambda calculus provides a very concise,
yet powerful formalism to reason about
computational abstraction.
The introduction given here has been taken from
[Barend], which is a standard reference on this subject.
- variables, abstractor λ, punctuation (,)
- x \e Λ
- M \e Λ = > λx. M \e Λ
- M \e Λ and N \e Λ = > M N \e Λ
slide: The lambda calculus -- terms
Syntactically, lambda terms are built from a very simple syntax,
figuring variables, the abstractor
- variables, abstractor λ, punctuation (,)
- x \e Λ
- M \e Λ = > λx. M \e Λ
- M \e Λ and N \e Λ = > M N \e Λ
(that is
used to bind variables in an expression), and punctuation
symbols.
Abstractors may be used to abstract a lambda term
- variables, abstractor λ, punctuation (,)
- x \e Λ
- M \e Λ = > λx. M \e Λ
- M \e Λ and N \e Λ = > M N \e Λ
into
a function
λx.M with parameter
x.
The expression
x must be read as denoting the
function with body
M and formal parameter
M.
The variable x is called the bound variable, since it
is bound by the abstractor %l holds.
See slide [lambda-properties].
As another example, consider the statement that each function F
has a fixed point, that is a value X for which FX = X.
The proof given above, however, does not give us any information
concerning the actual contents of the fixed point,
but merely proves its existence.
In the following (see section [self-reference])
we will write \Y(F) for the fixed
point of a function F.
In [Barend], an extensive account is given of how to
construct mathematical models for the lambda calculus.
A semantics of our type calculus may be given in terms
of such models; however we will not pursue this
any further here.