Lambda Church-Rosser定理是否适用于按值缩减调用?

Lambda Church-Rosser定理是否适用于按值缩减调用?,lambda,lambda-calculus,call-by-value,Lambda,Lambda Calculus,Call By Value,我一直在研究lambda微积分,最近看到了Church-Rosser定理。该定理指出,当对lambda演算中的项应用约简规则时,选择约简的顺序对最终结果(来自wiki)没有影响。但我发现这与按值缩减调用和按正常顺序缩减调用不一致。例如,当遵循正常的降阶规则时,lambda项λz.(λx.x)y可以降为λz.z。但在使用逐值缩减时,它不能进一步缩减,因为逐值缩减禁止λ-抽象中的缩减。因此,术语λz.(λx.x)y不能使用不同的规则计算为相同的结果,这似乎与Church-Rosser定理相矛盾。这里

我一直在研究lambda微积分,最近看到了Church-Rosser定理。该定理指出,当对lambda演算中的项应用约简规则时,选择约简的顺序对最终结果(来自wiki)没有影响。但我发现这与按值缩减调用和按正常顺序缩减调用不一致。例如,当遵循正常的降阶规则时,lambda项λz.(λx.x)y可以降为λz.z。但在使用逐值缩减时,它不能进一步缩减,因为逐值缩减禁止λ-抽象中的缩减。因此,术语λz.(λx.x)y不能使用不同的规则计算为相同的结果,这似乎与Church-Rosser定理相矛盾。这里有什么问题?请帮帮我。非常感谢

我认为你对Church-Rosser定理不够精确,这就是造成混淆的原因

据我所知(我正在写这篇文章),这个定理是这样说的:

如果两个lambda表达式E和F可以通过任何约化序列相互转换,则存在一个表达式G,使得E和F都可以约化为G

由此可知,一个表达式不能有两个不同的范式(尽管可能根本没有范式)。然而,给定两个缩减顺序,一个可能会导致一个正常形式,而另一个可能会出现分歧——有些甚至可能会在之前停止,例如按名称调用

现在,在您的例子中,
E=\z.z
是标准形式的,
F=\z.(\x.x)z
*可以简化为它;这里唯一可以说的是,
F
不能被简化为
E
之外的任何东西,而没有说明它必须被简化多少

定理的另一部分是,如果存在一个正规形式,正规序就会找到它。同样,这与您的观察结果没有矛盾,因为按值调用和按名称调用可能会以不同于正常顺序的方式结束


*我想你的意思不是
\z.(\x.x)y)
,因为后者没有意义。

谢谢你的回答!自从提出这个问题以来,我做了一些研究。就像你说的,这不是最后一段,当Church提出这个定理时,似乎只有完全beta约化(或者正常阶?)。因此,定理中的“约化”仅指完全β约化(或正常阶)。其他减少策略,如按名称调用和按值调用,都是为了高效实现。