Lambda calculus (also written as λ-calculus or called "the lambda calculus" is a formal system in mathematical logic for expressing computation by way of variable binding and substitution. It was first formulated by Alonzo Church as a way to formalize mathematics through the notion of functions, in contrast to the field of set theory. Although not very successful in that respect, the lambda calculus found early successes in the area of computability theory, such as a negative answer to Hilbert's Entscheidungsproblem.
Because of the importance of the notion of variable binding and substitution, there is not just one system of lambda calculus. Historically, the most important system was the untyped lambda calculus. In the untyped lambda calculus, function application has no restrictions (so the notion of the domain of a function is not built into the system). In the Church–Turing Thesis, the untyped lambda calculus is claimed to be capable of computing all effectively calculable functions. The typed lambda calculus is a variety that restricts function application, so that functions can only be applied if they are capable of accepting the given input's "type" of data.
Today, the lambda calculus has applications in many different areas in mathematics, philosophy, and computer science. It is still used in the area of computability theory, although Turing machines are arguably the preferred model for computation. Lambda calculus has played an important role in the development of the theory of programming languages. The most prominent counterparts to lambda calculus in computer science are functional programming languages, which essentially implement the calculus (augmented with some constants and datatypes). Beyond programming languages, the lambda calculus also has many applications in proof theory. A major example of this is the Curry–Howard correspondence, which gives a correspondence between different systems of typed lambda calculus and systems of formal logic.
=============================
接受征召:
1 Lambda calculus in history of mathematics
=============================
1. Lambda calculus in history of mathematics
The lambda calculus was introduced by mathematician Alonzo Church in the 1930s as part of an investigation into the foundations of mathematics.[1][2] The original system was shown to be logically inconsistent in 1935 when Stephen Kleene and J. B. Rosser developed the Kleene–Rosser paradox.
lambda演算在20世纪30年代由数学家Alonzo Church提出, 作为研究/调查数学基础理论的一部分. 1935年, Stephen Kleene(此人似乎是正则表达式L* -- Kleene闭包的命名由来)和J. B. Rosser提出了Kleene-Rosser悖论, 表明丘奇的原始的lambda演算系统存在逻辑上的不一致性.
Subsequently, in 1936 Church isolated and published just the portion relevant to computation, what is now called the untyped lambda calculus.[3] In 1940, he also introduced a computationally weaker, but logically consistent system, known as the simply typed lambda calculus.[4]
=============================
正文中的引用:
[1].^ A. Church, "A set of postulates for the foundation of logic", Annals of Mathematics, Series 2, 33:346–366 (1932).
丘奇, 《一组关于逻辑基础的假定/前提》, 数学年刊, 序列号2, 33:346-366
[2].^ For a full history, see Cardone and Hindley's "History of Lambda-calculus and Combinatory Logic" (2006).
完整历史, 参看Cardon和Hindley的《lambda演算和组合逻辑的历史》.
[3].^ A. Church, "An unsolvable problem of elementary number theory", American Journal of Mathematics, Volume 58, No. 2. (April 1936), pp. 345-363.
丘奇, 《一个初等数论中的unsolvable problem》, 美国数学期刊, 卷58, ...
[4].^ A. Church, "A Formulation of the Simple Theory of Types", Journal of Symbolic Logic, Volume 5 (1940).
丘奇, 《简单类型理论的一个构想》, 符号逻辑期刊, 卷5.
- x[ x := r ] = r;
- y[ x := r ] = y 前提是 x 和 y 不等价;
- (t s)[ x := r ] = (t[ x := r ])(s[ x := r ]);
- (λx.t)[x := r] = λx.t;
- (λy.t)[x := r] = λy.(t[x := r]),前提是x和y不等价,且y不是r中的自由变量。(也就是说,对r来说,y是新引入的变量[不存在或者已经被绑定]。)