The Turing Machine is an imperative computational model. The Lambda Calculus is a functional computational model.

Church-Turing Thesis

The Church-Turing Thesis states that any language that can be effectively computed by some finite process (-computable) can be recognised by a Turing machine.

Link to original

Functions in the Lambda Calculus are black-boxes, they do not have an internal representation or implementation and can be seen as pure operations.

Example functions

SuccessorAddition

A function can be applied to values.

Example application of Lambda functions

Notation

Terms in the Lambda calculus are built from three components:

  1. Variables: assume variables are taken from an infinite set
  2. Abstractions: if is a variable and is a term, then is a term
  3. Applications: if and are terms then is a term

Syntax

Application associates to the left, instead of writing we can write . Abstraction associates to the right, instead of writing , we simply write or just .

Free and Bound Variables

A variable can either be free or bound. Bound variables are defined by the given context, e.g. in . Free variables are defined outside of given context, e.g. in .

The set of free variables of a term , is defined as a recursive function:

Terms without free variables are combinators or closed terms.

The set of bound variables of a term , , is defined as a recursive function.

-equivalence

Recall that represents a function . Therefore, the name of bound occurrences is immaterial.

So and represent the exact same function as they only differ on the name of their bound variable occurrences, so we call them -equivalent. and are not -equivalent as we have renamed a free variable. and are not -equivalent, we have to rename consistently.

Variable capture

Variable renaming should preserve the meaning of the term. If we rename a variable in such a way that a variable that was free before but is bound after, then we say that variable has been captured. e.g. renaming as in the term gives where we have captured the variable.

If we capture a variable when renaming, we will not preserve the meaning of the term.

Computation

Computation in the Lambda Calculus is composed of a series of substitution rewritings, known as -reductions. A redex is a term of the form . Redexes can be -reduced.

The -reduction rule is where is the term obtained when we substituted free occurrences of by .

We can apply the -reduction rule to any redex in a term, it does not have to be at the start. The redex can be a subterm. If then write .

0 items under this folder.