Lambda calculus forms terms from variables, abstraction, and application, and computes by substitution.
A lambda term is a variable, an abstraction , or an application , formed recursively from lambda terms and .
The untyped lambda calculus forms terms from variables, abstraction, and application without assigning types.
Beta reduction performs capture-avoiding substitution:
Capture-avoiding substitution replaces the free occurrences of in by , renaming bound variables when necessary so that free variables of do not become bound.
Beta equivalence is the smallest equivalence relation containing beta reduction; equivalently, when a finite sequence of beta reductions and reversed beta reductions connects and .
A beta-redex is a subterm of the form , to which beta reduction can be applied.
A lambda term is in beta-normal form when it contains no beta-redex.
A combinator is a lambda term with no free variables.
The omega combinator is the divergent untyped lambda calculus term
whose only beta reduction reproduces .
An untyped lambda term is a fixed-point combinator when for every term .
Every lambda term has a fixed point: the term
satisfies . Equivalently, a fixed-point combinator such as
satisfies for every .
The set of fixed-point combinators is recursively enumerable. Enumerate closed lambda terms and finite proofs of beta equivalence, and output whenever a proof of appears for a fresh variable .
Two lambda terms are alpha-equivalent when they differ only by consistent renaming of bound variables.
If a lambda term beta-reduces to both and , then and beta-reduce to a common term. Consequently two beta-equivalent beta-normal forms are alpha-equivalent.
The simply typed lambda calculus assigns arrow types to variables, abstractions, and applications according to syntax-directed typing rules.
Every well-typed term in the simply typed lambda calculus has some finite beta-reduction sequence ending in a beta-normal form.
Every well-typed simply typed lambda term admits no infinite beta-reduction sequence.
The Church numeral encodes the natural number by iteration.
A function is lambda-definable when some combinator satisfies
for every tuple of natural numbers.
The successor function is lambda-defined on Church numerals by
because .
Using a fixed-point combinator, Church Boolean conditionals, a zero test, and a predecessor term, lambda-definable and give
Normal-order beta reduction evaluates only the selected conditional branch, so this term implements primitive recursion on Church numerals.
A partial function is lambda-definable when one lambda term maps Church numerals in its domain to the numeral of the output and produces no numeral on inputs outside its domain.
For a lambda-definable partial , a fixed-point search term tests and returns the first for which . If no such value is reached, reduction produces no Church numeral. This realizes unbounded minimization and therefore makes every partial recursive function lambda-definable.
At type , the Church Booleans are and .

Articles by others on the same topic (1)

Lambda calculus is a formal system in mathematical logic and computer science for expressing computation based on function abstraction and application. It was developed by Alonzo Church in the 1930s as part of his work on the foundations of mathematics. The key components of lambda calculus include: 1. **Variables**: These are symbols that can stand for values. 2. **Function Abstraction**: A lambda expression can describe anonymous functions.