Other meanings of Lambda calculus
Computer science
Lambda calculus is a formal system in mathematical logic and computer science for expressing computation based on function abstraction and application. Introduced by Alonzo Church in the 1930s, it is a universal model of computation equivalent to Turing machines and forms the theoretical foundation of functional programming languages.13
Lambda calculus is a formal system designed to study function definition, function application, and recursion. It was first presented by Alonzo Church in 1932 as part of a set of postulates for the foundation of logic.1 Church and his student Stephen Kleene later developed the system to capture all effectively computable functions, leading to the Church–Turing thesis, which asserts that any function computable by an algorithm can be computed by a Turing machine and equivalently defined in lambda calculus.23 The system is minimal yet expressive, using only three constructs: variables, abstraction (λx.M), and application (M N). This simplicity makes it a powerful tool for exploring computability and the foundations of mathematics.
The syntax of the untyped lambda calculus is defined by a context-free grammar. A term may be a variable (e.g., x), an abstraction λx. M (where x is a variable and M is a term), or an application M N (where both M and N are terms). The reduction rules are β-reduction, which replaces a bound variable with an argument, and α-conversion, which renames bound variables to avoid capture. The Church–Rosser theorem guarantees that the order of reduction does not affect the final result if reduction terminates.3 The system is Turing-complete, meaning it can simulate any Turing machine, a fact demonstrated by encoding data structures and control flow as functions (e.g., Church numerals for numbers).
Lambda calculus underpins the design of functional programming languages, including Lisp, Scheme, Haskell, and ML, which adopt its model of functions as first-class values.4 It is also central to type theory, programming language semantics, and proof assistants like Coq and Agda. The Curry–Howard correspondence reveals a deep analogy between lambda calculus and natural deduction, where programs correspond to proofs and types to propositions.3 In computability theory, lambda calculus serves as a clean model for studying decision problems, undecidability, and the halting problem, often used in proof theory and recursion theory.
Beyond the classical results, lambda calculus includes many subtle features. The fixed-point combinator, often denoted Y, enables recursion without explicit self-reference and is fundamental to denotational semantics. Church numerals encode natural numbers as functions, but alternative encodings exist (e.g., Scott numerals). The lambda cube organizes typed lambda calculi along three axes: polymorphism, dependent types, and higher-order types. The simply typed lambda calculus (STLC) is not Turing-complete; its expressiveness is limited to terminating programs, making it a basis for proof checkers. Combinatory logic, a variable-free calculus using only combinators like S and K, is equivalent to lambda calculus and has been used in practical implementations such as the SKI combinator machine.3 The study of lambda calculus also intersects with category theory, where Cartesian closed categories provide a categorical semantics.
Lambda calculus was originally developed as a foundation for logic but later became essential in computer science and mathematical logic.
Help improve the encyclopedia. Reports go straight to the site manager.