The Lambda Calculus
The λcalculus is, at heart, a simple notation for functions and application. The main ideas are applying a function to an argument and forming functions by abstraction. The syntax of basic λcalculus is quite sparse, making it an elegant, focused notation for representing functions. Functions and arguments are on a par with one another. The result is a nonextensional theory of functions as rules of computation, contrasting with an extensional theory of functions as sets of ordered pairs. Despite its sparse syntax, the expressiveness and flexibility of the λcalculus make it a cornucopia of logic and mathematics. This entry develops some of the central highlights of the field and prepares the reader for further study of the subject and its applications in philosophy, linguistics, computer science, and logic.
 1. Introduction
 2. Syntax
 3. Brief history of λcalculus
 4. Reduction
 5. λtheories
 6. Consistency of the λcalculus
 7. Semantics of λcalculus
 8. Extensions and Variations
 9. Applications
 Bibliography
 Academic Tools
 Other Internet Resources
 Related Entries
1. Introduction
The λcalculus is an elegant notation for working with applications of functions to arguments. To take a mathematical example, suppose we are given a simple polynomial such as x^{2} − 2·x + 5. What is the value of this expression when x = 2? We compute this by ‘plugging in’ 2 for x in the expression: we get 2^{2} − 2·2 + 5, which we can further reduce to get the answer 5. To use the λcalculus to represent the situation, we start with the λterm
λx[x^{2} − 2·x + 5].
The λ operators allows us to abstract over x. One can intuitively read ‘λx[x^{2} − 2·x + 5]’ as an expression that is waiting for a value a for the variable x. When given such a value a (such as the number 2), the value of the expression is a^{2} − 2·a + 5. The ‘λ’ on its own has no significance; it merely binds the variable x, guarding it, as it were, from outside interference. The terminology in λcalculus is that we want to apply this expression to an argument, and get a value. We write ‘Ma’ to denote the application of the function M to the argument a. Continuing with the example, we get:
(λx[x^{2} − 2·x + 5])2 ⊳ ⟨ Substitute 2 for x ⟩ 2^{2} − 2·2 + 5 = ⟨ Arithmetic ⟩ 4 − 4 + 5 = ⟨ Arithmetic ⟩ 5
The first step of this calculation, plugging in ‘2’ for occurrences of x in the expression ‘x^{2} − 2·x + 5’, is the passage from an abstraction term to another term by the operation of substitution. The remaining equalities are justified by computing with natural numbers.
This example suggests the central principle of the λcalculus, called βreduction:
(β) (λx[M])N ⊳ M[x := N]
The understanding is that we can reduce or contract (⊳) an application (λxM)N of an abstraction term (the lefthand side, λxM) to something (the righthand side, N) by simply plugging in N for the occurrences of x inside M (that’s what the notation ‘M[x := N]’ expresses). This is the principle of βreduction; it is the heart of the λcalculus.
1.1 Multiargument operations
What about functions of multiple arguments? Can the λcalculus represent operations such as computing the length of the hypotenuse of a right triangle:
Hypotenuse of a right triangle with legs of length x and y ⇒ √(x² + y²),
The lengthofhypotenuse operation maps two positive real numbers x and y and to another positive real number. One can represent such multiplearity operations using the apparatus of the λcalculus by viewing the operation as taking one input at a time. Thus, the operation can be seen as taking one input, x, a positive real number, and producing as its value not a number, but an operation: namely, the operation that takes a positive real number y as input and produces as output the positive real number √(x² + y²). One could summarize the discussion by saying that the operation, hypotenuselength, that computes the length of the hypotenuse of a right triangle given the lengths a and b of its legs, is:
hypotenuselength := λa[λb[√(a² + b²)]]
By the principle of βreduction, we have, for example, that hypotenuselength 3, the application of hypotenuselength to 3, is λb[√(3² + b²)], which is a function of that is ‘waiting’ for another argument. The λterm hypotenuselength 3 can be viewed as a function that computes the length of the hypotenuse of a right triangle the length of one of whose legs is 3. We find, finally, that (hypotenuselength 3)4—the application of hypotenuselength to 3 and then to 4—is 5, as expected.
Another way to understand the reduction of manyplace functions to oneplace functions is to imagine a machine M that initially starts out by loading the first a of multiple arguments a, b, … into memory. If one then suspends the machine after it has loaded the first argument into memory, one can view the result as another machine M_{a} that is awaiting one fewer input; the first argument is now fixed.
1.2 NonExtensionality
An important philosophical issue concerning the λcalculus is the question of its underlying concept of functions. In set theory, a function is standardly understood as a set of argumentvalue pairs. More specifically, a function is understood as a set f of ordered pairs satisfying the property that (x,y) ∈ f and (x,z) ∈ f implies y = z. If f is a function and (x,y) ∈ f, this means that the function f assigns the value y to the argument x. This is the concept of functionsassets. Consequently, the notion of equality of functionsassets is equality qua sets, which, under the standard principle of extensionality, entails that two functions are equal precisely when they contain the same ordered pairs. In other words, two functions are identical if and only if they assign the same values to the same arguments. In this sense, functionsassets are extensional objects.
In contrast, the notion of a function at work in λcalculus is one where functions are understood as rules: a function is given by a rule for how to determine its values from its arguments. More specifically, we can view a λterm λx[M] as a description of an operation that, given x, produces M; the body M of the abstraction term is, essentially, a rule for what to do with x. This is the conception of functionsasrules. Intuitively, given rules M and N, we cannot in general decide whether λx[M] is equal to λx[N]. The two terms might ‘behave’ the same (have the same value given the same arguments), but it may not be clear what resources are needed for showing the equality of the terms. In this sense, functionsasrules are nonextensional objects.
To distinguish the extensional concept of functionsassets from the nonextensional concept of functionsasrules, the latter is often referred to as an ‘intensional’ function concept, in part because of the ostensibly intensional concept of a rule involved. This terminology is particularly predominant in the community of mathematical logicians and philosophers of mathematics working on the foundations of mathematics. But from the perspective of the philosophy of language, the terminology can be somewhat misleading, since in this context, the extensionalintensional distinction has a slightly different meaning.
In the standard possibleworlds framework of philosophical semantics, we would distinguish between an extensional and an intensional function concept as follows. Let us say that that two functions are extensionally equivalent at a world if and only if they assign the same values to the same arguments at that world. And let us say that two functions are intensionally equivalent if and only if they assign the same values to the same arguments at every possibleworld. To illustrate, consider the functions highestmountainonearth and highestmountainintheHimalayas, where highestmountainonearth assigns the highest mountain on earth as the value to every argument and highestmountainintheHimalayas assigns the highest mountain in the Himalayas as the value to every argument. The two functions are extensionally equivalent (at the actual world), but not intensionally so. At the actual world, the two functions assign the same value to every argument, namely Mt. Everest. Now consider a world where Mt. Everest is not the highest mountain on earth, but say, Mt. Rushmore is. Suppose further that this is so, just because Mt. Rushmore is 30.000 feet/9.100 m higher than it is at the actual world, while Mt. Everest, with its roughly 29.000 feet/8.800 m, is still the highest mountain in the Himalayas. At that world, highestmountainonearth now assigns Mt. Rushmore as the value to every argument, while highestmountainintheHimalayas still assigns Mt. Everest to every object. In other words, highestmountainonearth and highestmountainintheHimalayas are extensionally equivalent (at the actual world) but not intensionally equivalent.
A function concept may now be called extensional if and only if it requires functions that are extensionally equivalent at the actual world to be identical. And a function concept may be classified as intensional if and only if it requires intensionally equivalent functions to be identical. Note that these classifications are conceptually different from the distinctions commonly used in the foundations of mathematics. On the terminology used in the foundations of mathematics, functionsassets are classified as extensional since they use the axiom of extensionality as their criterion of identity, and functionsasrules are classified as intensional because they rely on the ostensibly intensional concept of a rule. In the present possibleworlds terminology, function concepts are classified as extensional or intensional based of their behavior at possibleworlds.
An issue from which conceptual confusion might arise is that the two terminologies potentially pass different verdicts on the function concept at work in the λcalculus. To see this, consider the following two functions:
addone := λx[x+1]
addtwosubtractone := λx[[x+2]1]
These two functions are clearly extensionally equivalent: they assign the same value to the same input at the actual world. Moreover, given standard assumptions in possible worlds semantics, the two functions are also intensionally equivalent. If we assume that mathematical facts, like facts about addition and subtraction, are necessary in the sense that they are the same at every possible world, then we get that the two functions give the same value to the arguments at every possible world. So, an intensional function concept would require the two functions to be identical. In the λcalculus, however, it’s not clear at all that we should identify the two functions. Formally speaking, without the help of other principle, we cannot show that the two λterms denote the same function. Moreover, informally speaking, on the conception of functionsasrules, it’s not even clear that we should identify them: the two terms involve genuinely different rules, and so we might be tempted to say that they denote different functions.
A function concept that allows for intensionally equivalent functions to be distinct is called hyperintensional. The point is that in possibleworlds terminology, the function concept at work in the λcalculus may be regarded not as intentional but hyperintensional—in contrast to what the terminology common in the foundations of mathematics says. Note that it’s unclear how an intensional semantic framework, like the possibleworlds framework, could even in principle account for a nonintensional function concept. On the semantics of the λcalculus, see section 7. The point here was simply to clarify any conceptual confusions that might arise from different terminologies at play in philosophical discourse.
The hyperintensionality of the λcalculus is particularly important when it comes to its applications as a theory of not only functions, but more generally nary relations. On this, see section 9.3. It is effectively the hyperintensionality of the λcalculus that makes it an attractive tool in this context. It should be noted, however, that the λcalculus can be made extensional (as well as intensional) by postulating additional laws concerning the equality of λterms. On this, see section 5.
2. Syntax
The official syntax of the λcalculus is quite simple; it is contained in the next definition.
Definition For the alphabet of the language of the λcalculus we take the left and right parentheses, left and right square brackets, the symbol ‘λ’, and an infinite set of variables. The class of λterms is defined inductively as follows:
 Every variable is a λterm.
 If M and N are λterms, then so is (MN).
 If M is a λterm and x is a variable, then (λx[M]) is a λterm.
By ‘term’ we always mean ‘λterm’. Terms formed according to rule (2) are called application terms. Terms formed according to rule (3) are called abstraction terms.
As is common when dealing with formal languages that have grouping symbols (the left and right parenthesis, in our case), some parentheses will be omitted when it is safe to do so (that is, when they can be reintroduced in only one sensible way). Juxtaposing more than two λterms is, strictly speaking, illegal. To avoid the tedium of always writing all needed parentheses, we adopt the following convention:
Convention (association to the left): When more than two terms M_{1}M_{2}M_{3}…M_{n} are juxtaposed we can recover the missing parentheses by associating to the left: reading from left to right, group M_{1} and M_{2} together, yielding (M_{1}M_{2})M_{3}…M_{n}; then group (M_{1}M_{2}) with M_{3}: ((M_{1}M_{2})M_{3})…M_{n}, and so forth.
The convention thus gives a unique reading to any sequence of λterms whose length is greater than 2.
2.1 Variables, bound and free
The function of λ in an abstraction term (λx[M]) is that it binds the variable appearing immediately after it in the term M. Thus λ is analogous to the universal and existential quantifiers ∀ and ∃ of firstorder logic. One can define, analogously, the notions of free and bound variable in the expected way, as follows.
Definition The syntactic functions FV and BV (for ‘free variable’ and ‘bound variable’) are defined on the set of λterms by structural induction thus:
Free Bound
 For every variable x, FV(x) = { x }.
 For every term M and every term N, FV(MN) = FV(M) ∪ FV(N).
 For every variable x and every term M, FV(λx[M]) = FV(M) − { x }.
 For every variable x, BV(x) = ∅.
 For every term M and every term N, BV(MN) = BV(M) ∪ BV(N).
 For every variable x and every term M, BV(λx[M]) = BV(M) ∪ { x }.
If FV(M) = ∅ then M is called a combinator.
Clause (3) in the two definitions supports the intention that λ binds variables (ensures that they are not free). Note the difference between BV and FV for variables.
As is typical in other subjects where the concepts appear, such as firstorder logic, one needs to be careful about the issue; a casual attitude about substitution can lead to syntactic difficulties.^{[1]} We can defend a casual attitude by adopting the convention that we are interested not in terms themselves, but in a certain equivalence class of terms. We now define substitution, and then lay down a convention that allows us to avoid such difficulties.
Definition (substitution) We write ‘M[x := N]’ to denote the substitution of N for the free occurrences of x in M. A precise definition^{[2]} by recursion on the set of λterms is as follows: for all terms A, B, and M, and for all variables x and y, we define
 x[x := M] ≡ M
 y[x := M] ≡ y (y distinct from x)
 (AB)[x := M] ≡ A[x := M]B[x := M]
 (λx[A])[x := M] ≡ λx[A]
 (λy[A])[x := M] ≡ λy[A[x := M]] (y distinct from x)
Clause (1) of the definition simply says that if we are to substitute M for x and we are dealing simply with x, then the result is just M. Clause (2) says that nothing happens when we are dealing (only) with a variable different from x but we are to substitute something for x. Clause (3) tells us that substitution unconditionally distributes over applications. Clauses (4) and (5) concern abstraction terms and parallel clauses (1) and (2) (or rather, clauses (2) and (1), in opposite order): If the bound variable z of the abstraction term λz[A] is identical to the variable x for which we are to do a substitution, then we do not perform any substitution (that is, substitution “stops”). This coheres with the intention that M[x := N] is supposed to denote the substitution of N for the free occurrences of x in M. If M is an abstraction term λx[A] whose bound variable is x, then x does not occurr freely in M, so there is nothing to do. This explains clause 4. Clause (5), finally, says that if the bound variable of an abstraction term differs from x, then at least x has the “chance ” to occur freely in the abstraction term, and substitution continues into the body of the abstraction term.
Definition (change of bound variables, αconvertibility, nocapture convention on βconversion) The term N is obtained from the term M by a change of bound variables if, roughly, any abstraction term λx[A] inside M has been replaced by λy[A[x := y]].
Let us say that terms M and N are αconvertible if there is a sequence of changes of bound variables starting from M and ending at N.
Finally, we agree that when we write
‘(λx[M])N reduces to M[x := N]’,
we require that no variable occurring freely in N becomes bound after its substitution into M.
Roughly, we need to adhere to the principle that free variables ought to remain free; when an occurrence of a variable is threatened to become bound by a substitution, simply perform enough αconversions to sidestep the problem. If we keep this in mind, we can work with λcalculus without worrying about these nettlesome syntactic difficulties.
The syntax of λcalculus is quite flexible. One can form all sorts of terms, even selfapplications such as xx. Such terms appear at first blush to be suspicious; one might suspect that using such terms could lead to inconsistency, and in any case one might find oneself reaching for a tool with which to forbid such terms. If one were to view functions and sets of ordered pairs of a certain kind, then the x in xx would be a function (set of ordered pairs) that contains as an element a pair (x,y) whose first element would be x itself. But no set can contain itself in this way, lest the axiom of foundation (or regularity) be violated. Thus, from a set theoretical perspective such terms are clearly dubious. Below one can find a brief sketch of one such tool, type theory. But in fact such terms do not lead to inconsistency and serve a useful purpose in the context of λcalculus. Moreover, forbidding such terms, as in type theory, does not come for free (e.g., some of the expressiveness of untyped λcalculus is lost).
2.2 Combinators
As defined earlier, a combinator is a λterm with no free variables. One can intuitively understand combinators as ‘completely specified’ operations, since they have no free variables. There are a handful of combinators that have proven useful in the history of λcalculus; the next table highlights some of these special combinators. Many more could be given (and obviously there are infinitely many combinators), but the following have concise definitions and have proved their utility.
Name  Definition & Comments  

S  λx[λy[λz[xz(yz)]]]
Keep in mind that ‘xz(yz)’ is to be understood as the application (xz)(yz) of xz to yz. S can thus be understood as a substituteandapply operator: z ‘intervenes’ between x and y: instead of applying x to y, we apply xz to yz.  
K  λx[λy[x]]
The value of KM is the constant function whose value for any argument is simply M.  
I  λx[x]
The identity function.  
B  λx[λy[λz[x(yz)]]]
Recall that ‘xyz’ is to be understood as (xy)z, so this combinator is not a trivial identity function.  
C  λx[λy[λz[xzy]]]
Swaps an argument.  
T  λx[λy[x]]
Truth value true. Identical to K. We shall see later how these representations of truth values plays a role in the blending of logic and λcalculus.  
F  λx[λy[y]]
Truth value false.  
ω  λx[xx]
Selfapplication combinator  
Ω  ωω
Selfapplication of the selfapplication combinator. Reduces to itself.  
Y  λf[(λx[f(xx)])(λx[f(xx)])]
Curry’s paradoxical combinator. For every λterm X, we have:


Θ  (λx[λf[f(xxf)]])(λx[λf[f(xxf)]])
Turing’s fixedpoint combinator. For every λterm X, ΘX reduces to X(ΘX), which one can confirm by hand. (Curry’s paradoxical combinator Y does not have this property.) 
Notation  Reading & Comments 

MN  The application of the function M to the argument
N.
Usually, parentheses are used to separate the function from the argument, like so: ‘M(N)’. However, in λcalculus and kindred subjects the parentheses are used as grouping symbols. Thus, it is safe to write the function and the argument adjacent to one other. 
PQR  The application of the function PQ—which is
itself the application of the function P to the argument
Q—to R.
If we do not use parentheses to separate function and argument, how are we to disambiguate expressions that involve three or more terms, such as ‘PQR’? Recall our convention that we are to understand such officially illegal expressions by working from left to right, always putting parentheses around adjacent terms. Thus, ‘PQR’ is to be understood as (PQ)R. ‘PQRS’ is ((PQ)R)S. The expression ‘(PQ)R’ is disambiguated; by our convention, it is identical to PQR. The expression ‘P(QR)’ is also explicitly disambiguated; it is distinct from PQR because it is the application of P to the argument QR (which is itself the application of the function Q to the argument R). 
(λx[M])  The λ term that binds the variable x
in the body term M.
The official vocabulary of the λcalculus consists of the symbol ‘λ’, left ‘(’and right ‘)’ parentheses, and a set of variables (assumed to be distinct from the three symbols ‘λ’, ‘(’, and ‘)’ lest we have syntactic chaos). Alternative notation. It is not necessary to include two kinds of grouping symbols (parentheses and square brackets) in the syntax. Parentheses or square brackets alone would obviously suffice. The two kinds of brackets are employed in this entry for the sake of readability. Given the two kinds of grouping symbols, we could economize further and omit the parentheses from abstraction terms, so that ‘(λx[M])’ would be written as ‘λx[M]’. Some authors write ‘λx.M’ or ‘λx·M’, with a full stop or a centered dot separating the bound variable from the body of the abstraction term. As with the square brackets, these devices are intended to assist reading λterms; they are usually not part of the official syntax. (One sees this device used in earlier works of logic, such as Principia Mathematica, where the function of the symbol . in expressions such as ‘∀x.φ’ is to get us to read the whole of the formula φ as under the scope of the ∀x.) Some authors write abstraction terms without any device separating the bound variable from the body: such terms are crisply written as, e.g., ‘λxx’, ‘λyx’. The practice is not without its merits: it is about as concise as one can ask for, and permits an even simpler official syntax of the λcalculus. But this practice is not flawless. In ‘λxyz’, is the bound variable x or is it xy? Usually the names of variables are single letters, and theoretically this is clearly sufficient. But it seems unduly restrictive to forbid the practice of giving longer names to variables; indeed, such constructions arise naturally in computer programming languages. For the sake of uniformity, we will adopt the square bracket notation in this entry. (Incidentally, this notation is used in (Turing, 1937).) 
M[x := A]  The λterm that is obtained by substituting the
λterm A for all free occurrences of x inside M.
A bewildering array of notations to represent substitution can be found in the literature on λcalculus and kindred subjects:
Which notation to use for substitution seems to be a personal matter. In this entry we use a linear notation, eschewing superscripts and subscripts. The practice of representing substitution with ‘:=’ comes from computer science, where ‘:=’ is read in some programming languages as assigning a value to a variable. As with the square brackets employed to write abstraction terms, the square brackets employed to write substitution are not officially part of the syntax of the λcalculus. M and A are terms, x is a variable; M[x := A] is another term. 
M ≡ N  The λterms M and N are identical:
understood as sequences of symbols, M and N have the
same length and corresponding symbols of the sequences are identical.
The syntactic identity relation ≡ is not part of the official syntax of λcalculus; this relation between λterms belongs to the metatheory of λcalculus. It is clearly a rather strict notion of equality between λterms. Thus, it is not the case (if x and y are distinct variables) that λx[x] ≡ λy[y], even though these two terms clearly ‘behave’ in the same way in the sense that both are expressions of the identity operation x ⇒ x. Later we will develop formal theories of equality of λterms with the aim of capturing this intuitive equality of λx[x] and λy[y]. 
3. Brief history of λcalculus
λcalculus arose from the study of functions as rules. Already the essential ingredients of the subject can be found in Frege’s pioneering work (Frege, 1893). Frege observed, as we did above, that in the study of functions it is sufficient to focus on unary functions (i.e., functions that take exactly one argument). (The procedure of viewing a multiplearity operation as a sequence of abstractions that yield an equivalent unary operation is called currying the operation. Perhaps it would be more historically accurate to call the operation fregeing, but there are often miscarriages of justice in the appellation of mathematical ideas.) In the 1920s, the mathematician Moses Schönfinkel took the subject further with his study of socalled combinators. As was common in the early days of the subject, Schönfinkel was interested in the kinds of transformations that one sees in formal logic, and his combinators were intended to be a contribution to the foundations of formal logic. By analogy with the reduction that one sees in classical propositional logic with the Sheffer stroke, Schöfinkel established the astonishing result that the all functions (in the sense of all transformations) could be given in terms of the combinators K and S; later we will see the definition of these combinators.
Theorem For every term M made up of K and S and the variable x, there exists a term F (built only from K and S) such that we can derive Fx = M.
(The proof that these two suffice to represent all functions is beyond the scope of this entry. For further discussion, see the entry on combinatory logic.) One can prove the theorem constructively: there is an algorithm that, given M, produces the required F. Church called this F ‘λx[M]’ (Church, 1932).^{[3]} From this perspective, the βrule can be justified: if ‘λx[M]’ is to be a function F satisfying Fx = M, then λx[M]x should transform to M. This is just a special case of the more general principle that for all N, (λx[M])N should transform to M[x := N].
Although today we have more clearly delimited systems of abstraction and rewriting, in its early days λcalculus and combinatory logic (à la Schönfinkel) were bound up with investigations of foundations of mathematics. In the hands of Curry, Church, Kleene, and Rosser (some of the pioneers in the subject) the focus was on defining mathematical objects and carrying out logical reasoning inside the these new systems. It turned out that these early attempts at socalled illative λcalculus and combinatory logic were inconsistent. Curry isolated and polished the inconsistency; the result is now known as Curry’s paradox. See the entry on Curry’s paradox and appendix B of (Barendregt, 1985).
The λcalculus earns a special place in the history of logic because it was the source of the first undecidable problem. The problem is: given λterms M and N, determine whether M = N. (A theory of equational reasoning about λterms has not yet been defined; the definition will come later.) This problem was shown to be undecidable.
Another early problem in the λcalculus was whether it is consistent at all. In this context, inconsistency means that all terms are equal: one can reduce any λterm M to any other λterm N. That this is not the case is an early result of λcalculus. Initially one had results showing that certain terms were not interconvertible (e.g., K and S); later, a much more powerful result, the socalled ChurchRosser theorem, helped shed more light on βconversion and could be used to give quick proofs of the noninterconvertibility of whole classes of λterms. See below for more detailed discussion of consistency.
The λcalculus was a somewhat obscure formalism until the 1960s, when, at last, a ‘mathematical’ semantics was found. Its relation to programming languages was also clarified. Till then the only models of λcalculus were ‘syntactic’, that is, were generated in the style of Henkin and consisted of equivalence classes of λterms (for suitable notions of equivalence). Applications in the semantics of natural language, thanks to developments by Montague and other linguists, helped to ‘spread the word’ about the subject. Since then the λcalculus enjoys a respectable place in mathematical logic, computer science, linguistics (see, e.g., Heim and Kratzer 1998), and kindred fields.
4. Reduction
Various notions of reduction for λterms are available, but the principal one is βreduction, which we have already seen earlier. Earlier we used the notation ‘⊳’; we can be more precise. In this section we discuss βreduction and some extensions.
Definition (onestep βreduction ⊳_{β,1}) For λterms A and B, we say that A βreduces in one step to B, written A ⊳_{β,1} B, just in case there exists an (occurrence of a) subterm C of A, a variable x, and λterms M and N such that C ≡ (λx[M])N and B is A except that the occurrence of C in A is replaced by M[x := N].
Here are some examples of βreduction:

The variable x does not βreduce to anything. (It does not have the right shape: it is simply a variable, not an application term whose lefthand side is an abstraction term.)

(λx[x])a ⊳_{β,1} a.

If x and y are distinct variables, then (λx[y])a ⊳_{β,1} y.

The λterm (λx[(λy[xy])a])b βreduces in one step to two different λterms:
(λx[(λy[xy])a])b ⊳_{β,1} (λy[by])a
and
(λx[(λy[xy])a])b ⊳_{β,1} (λx[xa])b
Moreover, one can check that these two terms βreduce in one step to a common term: ba. We thus have:
(λy[by])a ↗ ↘ (λx[(λy[xy])a])b ba ↘ ↗ (λx[xa])b
As with any binary relation, one can ask many questions about the relation ⊳_{β,1} holding between λterms, and one can define various derived notions in terms of ⊳_{β,1}.
Definition A βreduction sequence from a λterm A to a λterm B is a finite sequence s_{1}, … s_{n} of λterms starting with A, ending with B, and whose adjacent terms (s_{k},s_{k+1}) satisfy the property that s_{k} ⊳_{β,1} s_{k+1}.
More generally, any sequence s—finite or infinite—starting with a λterm A is said to be a βreduction sequence commencing with A provided that the adjacent terms (s_{k},s_{k+1}) of s satisfy the property that s_{k} ⊳_{β,1} s_{k+1}.

Continuing with βreduction Example 1, there are no βreduction sequences at all commencing with the variable x.

Continuing with βreduction Example 2, the twoterm sequence
(λx[x])a, a
is a βreduction sequence from (λx[x])a to a. If a is a variable, then this βreduction sequence cannot be prolonged, and there are no other βreduction sequences commencing with (λx[x])a; thus, the set of βreduction sequences commencing with (λx[x])a is finite and contains no infinite sequences.
 The combinator Ω has the curious property that Ω ⊳_{β,1} Ω. Every term of every βreduction sequence commencing with Ω (finite or infinite) is equal to Ω.

Consider the term KaΩ. There are infinitely many reduction sequences commencing with this term:
 KaΩ ⊳_{β,1} a
 KaΩ ⊳_{β,1} KaΩ ⊳_{β,1} a
 KaΩ ⊳_{β,1} KaΩ ⊳_{β,1} KaΩ ⊳_{β,1} a
 KaΩ ⊳_{β,1} KaΩ ⊳_{β,1} KaΩ …
If a is a variable, one can see that all finite reduction sequences commencing with KaΩ end at a, and there is exactly one infinite reduction sequence.
Definition A βredex of a λterm M is (an occurrence of) a subterm of M of the form (λx[P])Q. (‘redex’ comes from ‘reducible expression.) A βredex is simply a candidate for an application of βreduction. Doing so, one contracts the βredex. A term is said to be in βnormal form if it has no βredexes.
(Can a term have multiple βnormal forms? The answer is literally ‘yes’, but substantially the answer is ‘no’: If a M and M′ are βnormal forms of some term, then M is αconvertible to M′ Thus, βnormal forms are unique up to changes of bound variables.)
So far we have focused only on one step of βreduction. One can combine multiple βreduction steps into one by taking the transitive closure of the relation ⊳_{β,1}.
Definition For λterms A and B, one says that A βreduces to B, written A ⊳_{β} B, if either A ≡ B or there exists a finite βreduction sequence from A to B.
Definition A term M has a βnormal form if there exists a term N such that N is in βnormal form an M ⊳_{β} N.
Reducibility as defined is a oneway relation: it is generally not true that if A ⊳_{β} B, then B ⊳_{β} A. However, depending on one’s purposes, one may wish to treat A and B as equivalent if either A reduces to B or B reduces to A. Doing so amounts to considering the reflexive, symmetric, and transitive closure of the relation ⊳_{β,1,}.
Definition For λterms A and B, we say that A =_{β} B if either A ≡ B or there exists a sequence s_{1}, … s_{n} starting with A, ending with B, and whose adjacent terms (s_{k},s_{k+1}) are such that either s_{k} ⊳_{β,1} s_{k+1} or s_{k+1} ⊳_{β,1} s_{k}.
4.1 Other notions of reduction
We have thus far developed the theory of βreduction. This is by no means the only notion of reduction available in the λcalculus. In addition to βreduction, a standard relation between λterms is that of ηreduction:
Definition (onestep ηreduction) For λterms A and B, we say that A βηreduces in one step to B, written A ⊳_{βη,1} B, just in case there exists an (occurrence of a) subterm C of A, a variable x, and λterms M and N such that either
C ≡ (λx[M])N and B is A except that the occurrence of C in A is replaced by M[x := N]
or
C ≡ (λx[Mx]) and B is A except that the occurrence of C in A is replaced by M.
The first clause in the definition of ⊳_{βη,1} ensures that the relation extends the relation of onestep βreduction. As we did for the relation of onestep βreduction, we can replay the development for ηreduction. Thus, one has the notion of an ηredex, and from ⊳_{η,1} one can define the relation ⊳_{η} between λterms as the symmetric and transitive closure of ⊳_{η,1}, which captures zeroormoresteps of ηreduction. Then one defines =_{η} as the symmetric and transitive closure of ⊳_{η}.
If A ⊳_{η,1} B, then the length of B is strictly smaller than that of A. Thus, there can be no infinite ηreductions. This is not the case of βreduction, as we saw above in βreduction sequence examples 3 and 4.
One can combine notions of reduction. One useful combination is to blend β and ηreduction.
Definition (onestep βηreduction) λx[Mx] ⊳_{βη,1} M and (λx[M])N ⊳_{βη,1} M[x := N]. A λterm A βηreduces in one step to a λterm B just in case either A βreduces to B in one step or A ηreduces to B in one step.
Again, one can replay the basic concepts of reduction, as we did for βreduction, for this new notion of reduction βη.
4.2 Reduction strategies
Recall that a term is said to be in βnormal form if it has no βredexes, that is, subterms of the shape (λx[M])N. A term has a βnormal form if it can be reduced to a term in βnormal form. It should be intuitively clear that if a term has a βnormal form, then we can find one by exhaustively contracting all all βredexes of the term, then exhaustively contracting all βredexes of all resulting terms, and so forth. To say that a term has a βnormal form amounts to saying that this blind search for one will eventually terminate.
Blind search for βnormal forms is not satisfactory. In addition to be aesthetically unpleasant, it can be quite inefficient: there may not be any need to exhaustively contract all βredexes. What is wanted is a strategy—preferably, a computable one—for finding a βnormal form. The problem is to effectively decide, if there are multiple βredexes of a term, which ought to be reduced.
Definition A βreduction strategy is a function whose domain is the set of all λterms and whose value on a term M not in βnormal form is a redex subterm of M, and whose value on all terms M in βnormal form is simply M.
In other words, a βreduction strategy selects, whenever a term has multiple βredexes, which one should be contracted. (If a term is in βnormal form, then nothing is to be done, which is why we require in the definition of βreduction strategy that it does not change any term in βnormal form.) One can represent a strategy S as a relation ⊳_{S} on λterms, with the understanding that M ⊳_{S} N provided that M is obtained from M in one step by adhering to the strategy S. When viewed as relations, strategies constitute a subrelation of ⊳_{β,1}.
A βreduction strategy may or may not have the property that adhering to the strategy will ensure that we (eventually) reach a βnormal form, if one exists.
Definition A βreduction strategy S is normalizing if for all λterms M, if M has a βnormal form N, then the sequence M, S(M), S(S(M)), … terminates at N.
Some βreduction strategies are normalizing, but others are not.
 The rightmost strategy, whereby we always choose to reduce the rightmost βredex (if there are any βredexes) is not normalizing. Consider, for example, the term KIω. This term has two βredexes: itself, and ω (which, recall, is the term (λx[xx])(λx[xx])). By working with lefthand βredexes, we can βreduce KIω to I in two steps. If we insist on working with the rightmost βredex ω we reduce KIω to KI(ωω), then KI(ωωω), … .
 The leftmost strategy, whereby we always choose to reduce the leftmost βredex (if there are any βredexes) is normalizing. The proof of this fact is beyond the scope of this entry; see (Barendregt, 1985, section 13.2) for details.
Once we have defined a reduction strategy, it is natural to ask whether one can improve it. If a term has a βnormal form, then a strategy will discover a normal form; but might there be a shorter βreduction sequence that reaches the same normal form (or a term that is αconvertible to that normal form)? This is the question of optimality. Defining optimal strategies and showing that they are optimal is generally considerably more difficult than simply defining a strategy. For more discussion, see (Barendregt, 1984 chapter 10).
For the sake of concreteness, we have discussed only βreduction strategies. But in the definitions above the notion of reduction β is but one possibility. For any notion R of reduction we have the associated theory of Rreduction strategies, and one can replay the problems of normalizability, optimality, etc., for R.
5. λtheories
We discussed earlier how the λcalculus is a nonextensional theory of functions. If, in the nonextensional spirit, we understand λterms as descriptions, how should we treat equality of λterms? Various approaches are available. In this section, let us treat the equality relation = as a primitive, undefined relation holding between two λterms, and try to axiomatize the properties that equality should have. The task is to identity axioms and formulate suitable rules of inference concerning the equality of λterms.
Some obvious properties of equality, having nothing to do with λcalculus, are as follows:
Reflexivity, symmetry, and transitivity of equality of λterms as rules of inference Reflexivity Symmetry Transitivity X = Y X = Y Y = Z X = X Y = X X = Z
As is standard in proof theory, the way to read these rules of inference is that above the horizontal rule — are the the premises of the rule (which are equations) and the equation below the horizontal rule is the conclusion of the rule of inference. In the case of the reflexivity rule, nothing is written above the horizontal rule. We understand such a case as saying that, for all terms X, we may infer the equation X = X from no premises.
5.1 The basic theory λ
The three rules of inference listed in the previous section governing equality have nothing to do with the λcalculus. The following lists rules of inference that relate the undefined notion of equality and the two termbuilding operations of the λcalculus, application and abstraction.
Rules of inference relating equality to application and abstraction M = N M = N M = N AM = AN MA = NA λx[M] = λx[N]
These rules of inference say that = is a congruence relation on the set of λterms: it ‘preserves’ both the application and abstraction termbuilding operations
The final rule of inference, βconversion, is the most important:
β (λx[M])A = M[x := A]
As before with the reflexivity rule, the rule β has no premises: for any variable x and any terms M and A, one can infer the equation (λx[M])A = M[x := A] at any point in a formal derivation in the theory λ.
5.2 Extending the basic theory λ
A number of extensions to λ are available. Consider, for example, the rule (η), which expresses the principle of ηreduction as a rule of inference:
(η) λx[Mx] = M
Rule η tells us that a certain kind of abstraction is otiose: it is safe to identify M with the function that, given an argument x, applies M to x. Through this rule we can also see that all terms are effectively functions. One can intuitively justify this rule using the principle of βreduction.
(Ext) Mx = Nx provided x ∉ FV(M) ∪ FV(N) M = N
One can view rule Ext as a kind of generalization principle. If we have derived that Mx = Nx, but x figures in neither M nor N, then we have effectively shown that M and N are alike. Compare this principle to the principle of universal generalization in firstorder logic: if we have derived φ(x) from a set Γ of hypotheses in which x is not free, then we can conclude that Γ derives ∀xφ.
Another productive principle in the λcalculus permits us to identify terms that ‘act’ the same:
(ω) For all terms x, Mx=Nx M = N
The rule ω has infinitely many hypotheses: on the assumption that Mx = Nx, no matter what x may be, then we can conclude that M = N. The ω rule is an analogue in the λcalculus of the rule of inference under the same name in formal number theory, according to which one can conclude the universal formula ∀xφ provided one has proofs for φ(x := 0), φ(x := 1), … . Note that unlike the rule Ext, the condition that x not occur freely in M or N does not arise.
6. Consistency of the λcalculus
Is the λcalculus consistent? The question might not be wellposed. The λcalculus is not a logic for reasoning about propositions; there is no apparent notion of contradiction (⊥) or a method of forming absurd propositions (e.g., p ∧ ¬p). Thus ‘inconsistency’ of the λcalculus cannot mean that ⊥, or some formula tantamount to ⊥, is derivable. A suitable notion of ‘consistent’ is, however, available. Intuitively, a logic is inconsistent if it permits us to derive too much. The theory λ is a theory of equations. We can thus take inconsistency of λ to mean: all equations are derivable. Such a property, if it were true of λ, would clearly show that λ is of little use as a formal theory.
Early formulations of the idea of λcalculus by A. Church were indeed inconsistent; see (Barendregt, 1985, appendix 2) or (Rosser, 1985) for a discussion. To take a concrete problem: how do we know that the equation K = I is not a theorem of λ? The two terms are obviously intuitively distinct. K is a function of two arguments, whereas I is a function of one argument. If we could show that K = I, then we could show that KK = IK, whence KK = K would be a theorem of λ, along with many other equations that strike us as intuitively unacceptable. But when we’re investigating a formal theory such as λ, intuitive unacceptability by no means implies underivability. What is missing is a deeper understanding of βreduction.
An early result that gave such an understanding is known as the ChurchRosser theorem:
Theorem (ChurchRosser) If P ⊳_{β} Q and P ⊳_{β} R, then there exists a term S such that both Q ⊳_{β} S and R ⊳_{β} S.
(The proof of this theorem is quite nontrivial and is wellbeyond the scope of this entry.) The result is a deep fact about βreduction. It says that no matter how we diverge from P by βreductions, we can always converge again to a common term.
The ChurchRosser theorem gives us, among other things, that the plain λcalculus—that is, the theory λ of equations between λterms—is consistent, in the sense that not all equations are derivable.
As an illustration, we can use the ChurchRosser theorem to solve the earlier problem of showing that the two terms K and I are not identified by λ. The two terms are in βnormal form, so from them there are no βreduction sequences at all. If K = I were a theorem of λ, then there would be a term M from which there is a βreduction path to both I and K. The ChurchRosser theorem then implies the two paths diverging from M can be merged. But this is impossible, since K and I are distinct βnormal forms.
The ChurchRosser theorem implies the existence of βreduction sequences commencing from K and from I that end at a common term. But there are no βreduction sequences at all commencing from I, because it is in βnormal form, and likewise for K.
Theorem λ is consistent, in the sense that not every equation is a theorem.
To prove the theorem, it is sufficient to produce one underivable equation. We have already worked through an example: we used the ChurchRosser theorem to show that the equation K = I is not a theorem of λ. Of course, there’s nothing special about these two terms. A significant generalization of this result is available: if M and N in βnormal form but M is distinct from N, then the equation M = N is not a theorem of λ. (This simple condition for underivability does not generally hold if we add additional rules of inference to λ.)
The theories λη and λω are likewise consistent. One can prove these consistency results along the lines of the consistency proof for λ by extending the ChurchRosser theorem to the wider senses of derivability of these theories.
7. Semantics of λcalculus
Although the λcalculus is ‘about’ calculating with functions by substituting values for arguments, this simple point of view cannot support a semantics for the (untyped) λcalculus if by ‘function’ we understand, as is standard in set theory, a relation R such that for every pair (x,y) and (x,z) in R with the same first component x we have y = z. For sets X and Y, let X^{Y} denote the set of functions whose domain is Y and with values in X. Intuitively, if X is the domain of an interpretation of λcalculus, then X should be, in some sense, isomorphic to X^{X} because the domain should be closed under abstraction (as well as application). Taken literally, though, this isomorphism is impossible, because the cardinality of X always is of strictly smaller than the cardinality of X^{X}.
If one is interested in simply the existence of some kind of model of the λcalculus—one whose domain not necessarily consist of functions—one can find them by various wellknown ‘syntactic’ constructions involving the theory λ, not unlike the wellknown Henkin constructions . These socalled term models, though, are an unsatisfactory solution to the question of whether there are ‘mathematical’ models of the λcalculus.
The cardinality argument shows that if we are to have a semantics for λcalculus, the interpretation of λterms cannot simply be functions in the settheoretic sense of the term. There are, however, interpretations of λcalculus. The first model, D_{∞}, was found by D. Scott; other models were found later. These models solve the cardinality problem by restricting the domain X of interpretation, so that, in them, X is in a suitable sense isomorphic to the ‘function space’ X^{X}.
One of the advantages of having different interpretations is that one sees different aspects of equality: each of these models takes a different view on what λterms get identified. The definitions of D_{∞} and other interpretations, the verifications that they are indeed models of λcalculus, and the characterizations of the λtheories of these models, are beyond the scope of this entry; see (Barendregt, 1985, chapter 18) or (Meyer 1982) for details. In recent years, there is a renewed interest in the models of λcalculus from the perspective of category theory and categorical logic, focusing mainly on typed λcalculus (see sections 8.2 and 9.1.2 below) but also dealing with category theoretic models of the untyped λcalculus discussed in this article. See, for example, (Hyland, 2017) for details.
8. Extensions and Variations
8.1 Combinatory logic
A sister formalism of the λcalculus, developed slightly earlier, deals with variablefree combinations. Combinatory logic is indeed even simpler than the λcalculus, since it lacks a notion of variable binding.
The language of combinatory logic is built up from combinators and variables. There is some flexibility in precisely which combinators are chosen as basic, but some standard ones are I, K, S, B and C. (The names are not arbitrary.)
As with the λcalculus, with combinatory logic one is interested in reducibility and provability. The principal reduction relations are:
Combinator Reduction Axiom I Ix = x K Kxy = x S Sxyz = xz(yz) B Bxyz = x(yz) C Cxyz = xzy
There is a passage from λcalculus to combinatory logic via translation. It turns out that although combinatory logic lacks a notion of abstraction, one can define such a notion and thereby simulate the λcalculus in combinatory logic. Here is one translation; it is defined recursively.
Rule  Expression  Translation  Condition 

1  x  x  (unconditional) 
2  MN  M^{*}N^{*}  (unconditional) 
3  λx[M]  KM  x does not occur freely in M 
4  λx[x]  I  (unconditional) 
5  λx[Mx]  M  x does not occur freely in M 
6  λx[MN]  BM(λx[N)]^{*}  x does not occur freely in M 
7  λx[MN]  C(λx[M])^{*}N  x does not occur freely in N 
8  λx[MN]  SM^{*}N^{*}  x occurs freely in both M and N 
This translation works insideout, rather than outsidein. To illustrate:

The translation of the term λy[y], a representative of the identity function, is mapped by this translation to the identity combinator I (because of Rule 4), as expected.

The λterm λx[λy[x]] that we have been calling ‘K’is mapped by this translation to:
λx[λy[x]] ≡ ⟨ Rule 1 ⟩ λx[Kx] ≡ ⟨ Rule 3 ⟩ K 
The λterm λx[λy[yx]] that switches its two arguments is mapped by this translation to:
λx[λy[yx]] ≡ ⟨ Rule 8 ⟩ λx[C(λy[y])^{*}x] ≡ ⟨ λy[y] ≡ I, by Rule 4 ⟩ λx[CIx] ≡ ⟨ Rule 7 ⟩ B(CI)(λx[x])^{*} ≡ ⟨ (λx[x])^{*} ≡ I, by Rule 4 ⟩ B(CI)I We can confirm that the λterm λx[λy[yx]] and the translated combinatory logic term B(CI)I have analogous applicative behavior: for all λterms P and Q we have
(λx[λy[yx]])PQ ⊳ λy[yP]) ⊳ QP;
likewise, for all combinatory logic terms P and Q we have
B(CI)IPQ ⊳ (CI)(IP)Q ⊳ IQ(IP) ⊳ Q(IP) ⊳ QP
We can give but a glimpse of combinatory logic; for more on the subject, consult the entry on combinatory logic. Many of the issues discussed here for λcalculus have analogues in combinatory logic, and vice versa.
8.2 Adding types
In many contexts of reasoning and computing it is natural to distinguish between different kinds of objects. The way this distinction is introduced is by requiring that certain formulas, functions, or relations accept arguments or permit substitution only of some kinds of objects rather than others. We might require, for example, that addition + take numbers as arguments. The effect of this restriction is to forbid, say, the addition of 5 and the identity function λx.x.(4). Regimenting objects into types is also the idea behind the passage from (unsorted, or onesorted) firstorder logic to manysorted firstorder logic. (See (Enderton, 2001) and (Manzano, 2005) for more about manysorted firstorder logic.) As it stands, the λcalculus does not support this kind of discrimination; any term can be applied to any other term.
It is straightforward to extend the untyped λcalculus so that it discriminates between different kinds of objects. This entry limits itself to the typefree λcalculus. See the entries on type theory and Church’s type theory for a detailed discussion of the extensions of λcalculus that we get when we add types, and see (Barendregt, Dekkers, Statman, 2013) for a book length treatment of the subject.
9. Applications
9.1 Logic à la λ
Here are two senses in which λcalculus is connected with logic.
9.1.1 Terms as logical constants
In the table of combinators above, we defined combinators T and F and said that they serve as representations in the λcalculus of the truth values true and false, respectively. How do these terms function as truth values?
It turns out that when one is treating λcalculus as a kind of programming language, one can write conditional statements “If P then A else B” simply as PAB, where of course P, A, and B are understood as λterms. If P ⊳ T, that is, P is ‘true’, then we have
ifPthenAelseB := PAB ⊳ TAB ⊳ A,
(recall that, by definition, T ≡ K) and if P ⊳ F, that is, P is ‘false’, then
ifPthenAelseB := PAB ⊳ FAB ⊳ B,
(recall that, by definition, F ≡ KI) which is just what we expect from a notion of ifthenelse. If P reduces neither to T nor F, then we cannot in general say what ifPthenAelseB is.
The encoding we’ve just sketched of some of the familiar truth values and logical connectives of classical truthtable logic does not show that λcalculus and classical logic are intimately related. The encoding shows little more than embeddibility of the rules of computation of classical truthtable logic in λcalculus. Logics other than classical truthtable logic can likewise be represented in the λcalculus, if one has sufficient computable ingredients for the logic in question (e.g., if the logical consequence relation is computable, or if a derivability relation is computable, etc.). For more on computing with λcalculus, see section 9.2 below. A more intrinsic relationship between logic and λcalculus is discussed in the next section.
9.1.2 Typed λcalculus and the CurryHowardde Bruijn correspondence
The correspondence to be descried here between logic and the λcalculus is seen with the help of an apparatus known as types. This section sketches the beginnings of the development of the subject known as type theory. We are interested in developing type theory only so far as to make the socalled CurryHowardde Bruijn correspondence visible. A more detailed treatment can be found in the entry on type theory; see also (Hindley, 1997) and (Barendregt, Dekkers, Statman, 2013).
Type theory enriches the untyped λcalculus by requiring that terms be given types. In the untyped λcalculus, the application MN is a legal term regardless of what M and N are. Such freedom permits one to form such suspicious terms as xx, and thence terms such as the paradoxical combinator Y. One might wish to exclude terms like xx on the grounds that x is serving both as a function (on the lefthand side of the application) and as an argument (on the righthand side of the application). Type theory gives us the resources for making this intuitive argument more precise.
Assigning types to terms The language of type theory begins with an (infinite) set of type variables (which is assumed to be disjoint from the set of variables of the λcalculus and from the symbol ‘λ’ itself). The set of types is made up of type variables and the operation σ → τ. Variables in type theory now come with a type annotation (unlike the unadorned term variables of untyped λcalculus). Typed variables are rendered ‘x : σ’; the intuitive reading is ‘the variable x has the type σ’. The intuitive reading of the judgment ‘t : σ → τ’ is that the term t is a function that transforms arguments of type σ into arguments of type τ. Given an assignment of types to term variables, one has the typing rules:
(M : σ → τ)(N : σ) : τ
and
(λ x : σ [M : τ]) : σ → τ
The above two rules define the assignment of types to applications and to abstraction terms. The set of terms of type theory is the set of terms built up according to these formation rules.
The above definition of the set of terms of type theory is sufficient to rule out terms such as xx. Of course, ‘xx’ is not a typed term at all for the simple reason that no types have been assigned to it. What is meant is that there is no type σ that could be assigned to x such that ‘xx’ could be annotated in a legal way to make a typed term. We cannot assign to x a type variable, because then the type of the lefthand x would fail to be a function type (i.e., a type of the shape ‘σ → τ’). Moreover, we cannot assign to x a function type σ → τ, because then then σ would be equal to σ → τ, which is impossible.
As a leading example, consider the types that are assigned to the combinators I, K, and S:
Combinator  Type^{[5]} 

I  a → a 
K  a → (b → a) 
S  a → (b → c) → ((a → b) → (a → c)) 
(See Hindley (1997) Table of principal types for a more extensive listing.) If we read ‘→’ as implication and type variables as propositional variables, then we recognize three familiar tautologies in the righthand column of the table. The language used is meager: there are only propositional variables and implication; there are no other connectives.
The table suggests an interesting correspondence between λcalculus. Could it really be that the types assigned to formulas, when understood as logical formulas, are valid? Yes, though ‘validity’ needs to understood not as classical validity:
Theorem If τ is the type of some λterm, then τ is intuitionistically valid.
The converse of this theorem holds as well:
Theorem If φ is an intuitionistically valid logical formula whose only connective is implication (→), then φ is the type of some λterm.
The correspondence can be seen when one identifies intuitionistic validity with derivability in a certain natural deduction formalism. For a proof of these two theorems, see (Hindley, 1997, chapter 6).
The correspondence expressed by the previous two theorems between intuitionistic validity and typability is known as the CurryHowardde Bruijn correspondence, after three logicians who noticed it independently. The correspondence, as stated, is between only propositional intuitionistic logic, restricted to the fragment containing only the implication connective →. One can extend the correspondence to other connectives and to quantifiers, too, but the most crisp correspondence is at the level of the implicationonly fragment. For details, see (Howard, 1980).
9.2 Computing
One can represent natural numbers in a simple way, as follows:
Definition (ordered tuples, natural numbers) The ordered tuple ⟨a_{0},…a_{n}⟩ of λterms is defined as λx[xa_{0}…a_{n}]. One then defines the λterm ⌜n⌝ corresponding to the natural number n as: ⌜0⌝ = I and, for every k, ⌜k + 1⌝ = ⟨F, ⌜k⌝⟩.

The λterm corresponding to the number 1, on this representation, is:
⌜1⌝ ≡ ⟨F,⌜0⌝⟩ ≡ ⟨F,I⟩ ≡ λx[xFI] 
The λterm corresponding to the number 2, on this representation, is:
⌜2⌝ ≡ ⟨F,⌜1⌝⟩ ≡ λx[xFλx[xFI]] 
Similarly, ⌜3⌝ is λx[xFλx[xFλx[xFI]]].
Various representations of natural numbers are available; this representation is but one.^{[6]}
Using the ingredients provided by the λcalculus, one can represent all recursive functions. This shows that the model is exactly as expressive as other models of computing, such as Turing machines and register machines. Priority goes to Turing’s definition of his machine, but Church’s proposal of the λcalculus was developed at almost exactly the same time.
Theorem For every recursive function f of arity n, there exists a λterm f^{*} such that
for all natural numbers a_{1},…a_{n}: f(a_{1},…a_{n}) = y iff λ ⊢ f^{*}⟨a_{1},…a_{n}⟩ = y
For a proof, see the appendix.
Since the class of recursive functions is an adequate representation of the class of all computable (numbertheoretic) functions, thanks to the work above we find that all computable (numbertheoretic) functions can be faithfully represented in the λcalculus.
9.3 Relations
The motivation for the λcalculus given at the beginning of the entry was based on reading λexpressions as descriptions of functions. Thus, we have understood ‘λx[M]’ to be a (or the) function that, given x, gives M (which generally, though not necessarily, involves x). But it is not necessary to read λterms as functions. One could understand λterms as denoting relations, and read an abstraction term ‘λx[M]’ as the unary relation (or property) R that holds of an argument x just in case M does (see Carnap 1947, p. 3). On the relational reading, we can understand an application term MN as a form of predication. One can make sense of these terms using the principle of βconversion:
(λx[M])a = M[x := A],
which says that the abstraction relation λx[M], predicated of A, is the relation obtained by plugging in A for all free occurrences of x inside M.
As a concrete example of this kind of approach to λcalculus, consider an extension of firstorder logic where one can form new atomic formulas using λterms, in the following way:
Syntax: For any formula φ and any finite sequence x_{1}, …, x_{n} of variables, the expression ‘λx_{1}…x_{n}[φ]’ is a predicate symbol of arity n. Extend the notion of free and bound variables (using the functions FV and BV) in such a way that
FV(λx_{1}…x_{n}[φ]) = FV(φ) − { x_{1}, … x_{n} }
and
BV(λx_{1}…x_{n}[φ]) = BV(φ) ∪ { x_{1}, … x_{n} }
Deduction Assume as axioms the universal closures of all equivalences
λx_{1}…x_{n}[φ](t_{1},…t_{n}) ↔ φ[x_{1},…x_{n} := t_{1},…t_{n}]
where φ[x_{1},…x_{n} := t_{1},…t_{n}] denotes the simultaneous substitution of the terms t_{k} for the variables x_{k} (1 ≤ k ≤ n).
Semantics For a firstorder structure A and an assignment s of elements of A to variables, define
A ⊨ λx_{1}…x_{n}[φ](t_{1},…t_{n}) [s] iff A ⊨ φ[x_{1},…x_{n} := t_{1},…t_{n}] [s]
According to this approach, one can use a λ to treat essentially any formula, even complex ones, as if they were atomic. We see the principle of βreduction in the deductive and semantic parts. That this approach adheres to the relational reading of λ terms can be seen clearly in the semantics: according to the standard Tarskistyle semantics for firstorder logic, the interpretation of a formula (possibly with free variables) denotes a set of tuples of elements of the structure, as we vary the variable assignment that assigns elements of the structure to the variables.
One can ‘internalize’ this functional approach. This is done in the case of various property theories, formal theories for reasoning about properties as metaphysical objects (Bealer 1982, Zalta 1983, Menzel 1986, 1993, and Turner 1987). This kind of theory is employed in certain metaphysical investigations where properties are metaphysical entities to be investigated. In these theories, metaphysical relations are (or are among) the objects of interest; just as we add termbuilding symbols + and × in formal theories of arithmetic to build numbers, λ is used in property theory to build relations. This approach contrasts with the approach above. There, λ was added to the grammar of firstorder logic by making it a recipe for building atomic formulas; it was a new formulabuilding operator, like ∨ or → or the other connectives. In the case of property theories, the λ plays a role more like + and × in formal theories of arithmetic: it is used to construct relations (which, in this setting, are to be understood as a kind of metaphysical object). Unlike + and ×, though, the λ binds variables.
To give an illustration of how λ is used in this setting, let us inspect the grammar of a typical application (McMichael and Zalta, 1980). One typically has a predication operator (or, more precisely, a family of predication operators) p_{k} (k ≥ 0). In a language where we have terms mary and john and a binary relation loves, we can formally express:
 John loves Mary: loves(john,mary)
 The property that John loves Mary: λ[loves(john,mary)] (note that the λ is binding no variables; we might call this ‘vacuous binding’. Such properties can be understood as propositions.)
 The property of an object x that John loves it: λx[loves(john,x)].
 The property that Mary is loved by something: λ[∃x(loves(x,mary))] (another instance of vacuous binding, viz., proposition)
 The predication of the property of x that John loves x to Mary: p_{1}(λx[loves(john,x)],mary).
 The (0ary) predication of the property that John loves Mary: p_{0}(λx[loves(john,mary)]).
 The property of objects x and y that x loves y: λxy[loves(x,y)].
 The property of an objects x that x loves itself: λx[loves(x,x)].
 The predication of the property of objects x and y that x loves y to John and Mary (in that order): p_{2}(λxy[loves(x,y)],john,mary).
We reason with these λterms using a βconversion principle such as:
p_{n}(λx_{1},…x_{n}[A], t_{1}, …, t_{n}) ↔ A[x_{1},…x_{n} := t_{1},…t_{n}]
Formally, the predication operator p_{k} is a (k+1)ary predicate symbol. The first argument is intended to be a λterm of k arguments, and the rest of the arguments are intended to be the arguments of the body of the λterm. The βprinciple above says that the predication of an nary λterm L to n terms holds precisely when the body of L holds of those terms.
It turns out that in these theories, we may or may not be able to be fully committed to the principle of βconversion. Indeed, in some property theories, the full principle of βconversion leads to paradox, because one can replay a Russellstyle argument when the full principle of βconversion is in place. In such settings, one restricts the formation of λformulas by requiring that the body of a λterm not contain further λterms or quantifiers. For further discussion, see (Orilia, 2000).
One of the reasons why property theories formulated in the λcalculus are of a particular philosophical importance is the hyperintensional nature of the calculus (see section 1.2). A property concept may be called ‘hyperintensional’ if and only if it does not identify necessarily coextensional properties, i.e. properties that are instanciated by exactly the same objects at every possible world. The properties and relations described by the theories of Bealer, Zalta, Menzel, and Turner have exactly this characteristic. In other words, the theories are hyperintensional property theories. Recent years have seen a significant rise of interest in hyperintensional concepts of properties in metaphysics (Nolan 2014), and correspondingly property theories formulated in the λcalculus will likely experience a rise of interest as well.
In the context of the foundations of mathematics, Zalta and Oppenheimer (2011) argue for the conceptual priority of the relational interpretation of λterms over the functional one.
Bibliography
 Baader, Franz and Tobias Nipkow, 1999, Term Rewriting and All That, Cambridge: Cambridge University Press.
 Barendregt, Henk, 1985, The Lambda Calculus: Its Syntax and Semantics (Studies in Logic and the Foundations of Mathematics 103), 2nd edition, Amsterdam: NorthHolland.
 Barendregt, Henk, 1993, “Lambda calculi with types”, in S. Abramsky, D. Gabbay, T. Maibaum, and H. Barendregt (eds.), Handbook of Logic in Computer Science, Volume 2, New York: Oxford University Press, pp. 117–309.
 Barendregt, Henk, Wil Dekkers, and Richard Statman., 2013, Lambda Calculus With Types, Cambridge: Cambridge University Press.
 Bealer, George, 1982, Quality and Concept, Oxford: Clarendon Press.
 van Benthem, Johan, 1998, A Manual of Intensional Logic, Stanford: CSLI Publications.
 Carnap, Rudolf, 1947, Meaning and Necessity, Chicago: University of Chicago Press.
 Church, Alonzo, 1932, “A set of postulates for the foundation of logic”, Annals of Mathematics (2nd Series), 33(2): 346–366.
 Cutland, Nigel J., 1980, Computability, Cambridge: Cambridge University Press.
 Doets, Kees and Jan van Eijk, 2004, The Haskell Road to Logic, Maths and Programming, London: College Publications.
 Enderton, Herbert B., 2001, A Mathematical Introduction to Logic, 2nd edition, San Diego: Harcourt/Academic Press.
 Frege, Gottlob, 1893, Grundgesetze der Arithmetik, Jena: Verlag Hermann Pohle, Band I. Partial translation as The Basic Laws of Arithmetic, M. Furth (trans.), Berkeley: University of California Press, 1964.
 Kleene, Stephen C., 1981, “Origins of recursive function theory”, Annals of the History of Computing, 3(1): 52–67.
 Heim, Irene and Angelika Kratzer, 1998, Semantics in Generative Grammar, Malden, MA: Blackwell.
 Hindley, J. Roger, 1997, Basic Simple Type Theory (Cambridge Tracts in Theoretical Computer Science 42), New York: Cambridge University Press.
 Hindley, J. Roger and Jonathan P. Seldin, 2008, LambdaCalculus and Combinators: An Introduction, 2nd edition, Cambridge: Cambridge University Press.
 Howard, William A., 1980, “The formulaastypes notion of construction”, in J. Hindley and J. Seldin (eds.), To H. B. Curry: Essays on Combinatory Logic, LambdaCalculus, and Formalism, London: Academic Press, pp. 479–490.
 Hyland, J. Martin E., 2017, “Classical Lambda Calculus in Modern Dress.” Mathematical Structures in Computer Science, 27(5): 762–781.
 Manzano, Maria, 2005, Extensions of Firstorder Logic (Cambridge Tracts in Theoretical Computer Science 19), Cambridge: Cambridge University Press.
 McCarthy, John, 1960, “Recursive functions of symbolic expressions and their computation by machine (Part I)”, Communications of the ACM, 3(4): 184–195.
 McMichael, Alan and Edward N. Zalta, 1980, “An alternative theory of nonexistent objects”, Journal of Philosophical Logic, 9: 297–313.
 Menzel, Christopher, 1986, “A complete, typefree second order logic of properties, relations, and propositions”, Technical Report #CSLI8640, Stanford: CSLI Publications.
 Menzel, Christopher, 1993, “The propert treatment of predication in finegrained intensional logic”, Philosophical Perspectives 7: 61–86.
 Meyer, Albert R., 1982, “What is a model of the lambda calculus?”, In Information and Control, 52(1): 87–122.
 Nederpelt, Rob, with Herman Geuvers and Roel de Vriejer (eds.), 1994, Selected Papers on Automath (Studies in Logic and the Foundations of Mathematics 133), Amsterdam: NorthHolland.
 Nolan, Daniel, 2014, “Hyperintensional metaphysics”, Philosophical Studies 171(1); 149–160.
 Orilia, Francesco, 2000, “Property theory and the revision theory of definitions”, Journal of Symbolic Logic, 65(1): 212–246.
 Partee, Barbara H., with Alice ter Meulen and Robert E. Wall, 1990, Mathematical Methods in Linguistics, Berlin: Springer.
 Revesz, George E., 1988, LambdaCalculus, Combinators, and Functional Programming, Cambridge: Cambridge University Press; reprinted 2008.
 Rosser, J. Barkley, 1984, “Highlights of the History of the LambdaCalculus”, Annals of the History of Computing, 6(4): 337–349.
 Schönfinkel, Moses, 1924. “On the building blocks of mathematical logic”, in J. van Heijenoort (ed.), From Frege to Gödel: A Source Book in Mathematical Logic, Cambridge, MA: Harvard University Press, 1967, pp. 355–366.
 Troelstra, Anne and Helmut Schwichtenberg, 2000, Basic Proof Theory (Cambridge Tracts in Theoretical Computer Science 43), 2nd edition, Cambridge: Cambridge University Press.
 Turing, Alan M., 1937, “Computability and λdefinability”, Journal of Symbolic Logic, 2(4): 153–163.
 Turner, Richard, 1987, “A theory of properties”, Journal of Symbolic Logic, 52(2): 455–472.
 Zalta, Edward N., 1983, Abstract Objects: An Introduction to Axiomatic Metaphysics, Dordrecht: D. Reidel.
 Zalta, Edward N. and Paul Oppenheimer, 2011, “Relations versus functions at the foundations of logic: typetheoretic considerations”, Journal of Logic and Computation 21: 351–374.
Academic Tools
How to cite this entry. Preview the PDF version of this entry at the Friends of the SEP Society. Look up this entry topic at the Indiana Philosophy Ontology Project (InPhO). Enhanced bibliography for this entry at PhilPapers, with links to its database.
Other Internet Resources
 The Lambda Calculator, a tool for working with λterms with an eye toward their use in formal semantics of natural language.
 Lambda Evaluator, for visualizing reductions. Standard combinators and Church numerals are predefined.
 Lambda calculus reduction workbench, for visualizing reduction strategies
 “λCalculus: Then and Now,” useful handout on the milestones in, contributors to, and bibliography on the λcalculus, presented at the several Turing Centennial conferences. There also exists a video recording of the lecture given on the occasion of Princeton University’s celebration of the Turing Centennial in 2012.
Acknowledgments
The first author wishes to acknowledge the contributions of Henk Barendregt, Elizabeth Coppock, Reinhard Kahle, Martin Sørensen, and Ed Zalta in helping to craft this entry. He also thanks Nic McPhee for introducing him to the λcalculus.