λ演算本质上是什么?


11

我有一个关于λ微积分的哲学问题。

当您探索λ微积分时,您会惊讶地看到在那里可以做的所有事情。您可以定义整数,算术运算,布尔值,if-then-else语句,循环,递归函数等。我相信它已经被证明在计算上是完整的。

但另一方面,如果考虑使用λ微积分中的函数,您会意识到唯一可以做的就是向它提供一个函数,然后它返回另一个函数。这个过程永无止境。

那么如何从计算中提取结果呢?

假设表达式的结果是function f。您要检查是否f符合您的期望。您可以对其进行测试,采用您知道的功能,应用于f它并接收g。但是要检查g是否正确,您现在需要验证是什么g。然后您从头开始。那么,您如何得知f

在我看来,您可以用一个函数,身份函数替换λ演算中的所有函数I = λx.x,并且一切仍然按λ演算中所述工作。教堂数字3给定fx返回f(f(f(x)))。但是由于f并且x只能是I,它返回II应用于I并且I还返回I。因此I满足的定义3。在“布尔” (λxy.x)(λxy.y)需要2个参数,这将是II这样两个布尔值将会返回I。尽管它们完全按照其定义运行,但每个都等同于标识。

那么,您如何发挥作用呢?您如何证明λ微积分处理的不仅仅是一个函数?

有身份的概念吗?您可以立即识别功能而不进行评估吗?我相信已经证明没有办法测试2个函数是否相等。

还是λ微积分不是功能,而是功能的形式描述?这将意味着λ表达式不仅定义函数的功能,而且还定义函数操作的数据。所以,当你写A B,你并不适用AB,但你申请由字符串描述的功能A的函数的正式定义包含在B返回另一正式定义。

λ演算中实际上发生了什么?它处理的数学对象是什么?


跟进:

好的,从下面的答案看来,λ演算似乎不是关于数学意义上的函数,而是关于可以表示为λ表达式的函数子集。甚至更多关于操纵λ表达的信息。


2
您能否将最后一个问题改写为一点意见导向的东西?为此,应该有一个可靠的,没有问题的答案。
Telastyn

从我的教育来看,λ微积分的存在仅仅是为了使我的大脑受伤。我仍然不确定如何通过该课程完好无损。

Answers:


9

确实不可能确定lambda演算术语的语义对等。这是莱斯定理的一种应用。但是,很容易在语法上比较术语,即测试它们是否具有完全相同的结构(等效地,如果它们的“字符串表示形式”相同)。这实际上是获得结果所需的全部。

例如,要计算n = f(i)从自然数到自然i数的函数,您可以为lambda微积分函数提供as 的教堂编码作为参数,应用约简规则直到停止,然后检查结果项。如果它与教堂数字的结构匹配,请提取n其编码的数字。那是你的结果。如果结果项看起来不像教堂数字,或者归约不停止,则该函数在处未定义i

术语有效地起到了“代码”和“数据”的双重作用。没什么特别的:图灵机的磁带(在某些字母上的字符串)可以被-并且经常被解释为图灵机或其某些方面的编码。同样,冯·诺依曼机器的主存储器中的位可以是程序的编码,也可以是其他内容的编码。甚至一次都可以。只是“默认视角”有所不同。


涉及教堂数字的计算结果的表达式是否总是解析为(λfx.f(f(fx)))之类的规范形式?还是可以得到相同数字的不同等效表达式?
Florian F

@FlorianF我几乎可以肯定有这样的非规范(直到alpha等效)术语,但是如果是这样,可以通过仔细构建程序来避免它们。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.