Definition
A formal system for expressing computation based on function abstraction (λx. M), application (M N), variable binding and substitution, with operational rules such as alpha-equivalence and beta-reduction; it serves as a foundational model of computation.
Principle
Principle
Computation as substitution: evaluating a computation corresponds to replacing bound variables with argument terms (beta-reduction) under rules that avoid capture (alpha-conversion).
Demonstration
Demonstration
Representing natural numbers as Church numerals and defining addition as a lambda term: add = λm.λn.λf.λx. m f (n f x); reducing add 2 3 yields the church numeral for 5 via successive beta-reductions.
Misapplication
Misapplication
Confusing a lambda term with a mutable function closure in an imperative language or treating free variables as implicitly global, which misrepresents the scoping and substitution semantics and leads to incorrect program reasoning.
Consequence
Consequence
Provides a simple, compositional account of computation that underlies functional programming languages, compiler transformations (inlining, lambda lifting), and theoretical results about computability and program equivalence.
Reversal
Reversal
An operational, state-transition view of computation (imperative machines) that emphasizes mutable state, commands, and explicit steps rather than substitution-based reduction.
Boundary
Boundary
Pertains to syntactic expressions, binding, and reduction; untyped lambda calculus is Turing-complete but omits static guarantees, while typed variants integrate typing rules—operational aspects like I/O or side effects require extensions or embeddings.
Semantic Tension
Semantic Tension
Tension between intensional syntactic reduction (how terms reduce) and extensional function equality (behavior on all inputs), and between untyped expressiveness and typed safety constraints (e.g., simply typed vs. polymorphic vs. dependent systems).
Synthesis
Synthesis
The lambda calculus is a minimal, substitution-centered formalism that models computation by treating functions as first-class terms and evaluation as variable replacement under binding discipline; it forms the theoretical core of functional programming and of many equivalence and normalization results.