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.
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 .
The omega combinator is the divergent untyped lambda calculus termwhose only beta reduction reproduces .
Every lambda term has a fixed point: the termsatisfies . Equivalently, a fixed-point combinator such assatisfies 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.
Using a fixed-point combinator, Church Boolean conditionals, a zero test, and a predecessor term, lambda-definable and giveNormal-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.
Articles by others on the same topic
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.