Lambda表达减少示例

时间:2018-10-31 03:12:39

标签: lambda lambda-calculus

如何减少以下lambda表达式(λs.λq.sq q)(λq.q)q?在第一个括号中,q q是表达式(λs.λq.s)的输入,还是表达式(s q q)的一部分?

(λs.λq.sqq)(λq.q)q =(λq.qq)(λq.q)q =(λq.q)(λq.q)q =(λq.q)q = q < / p>

(λs.λq.sq q)(λq.q)q =(λq。(λq’.q’)q q)q =(λq.qq)q = qq

根据我的看法,我会得到两个不同的答案。哪个是正确的?

2 个答案:

答案 0 :(得分:0)

Lambda calculus reducer

一起使用
 (\s.\q.s q q)(\q.q)q

返回

Normal order:

q q
Performed 3 beta-reductions

使用StackExchange网站(例如StackOverflow)的人们经常忽略的一个有价值的领域是标签的信息标签。

enter image description here

特别是对于带有lambda-calculus标签的问题,信息标签会显示

  

由于许多人问如何通过中间步骤来减少λ表达式,因此请看一下Lambda calculus reduction workbench及其interpreter

因此,您的问题是输入

enter image description here

,然后单击Do it

enter image description here


还有一个跟踪选项可以查看所有转换

enter image description here

答案 1 :(得分:0)

一般规则是从左开始读取表达式,直到 您到达lambda。就您而言,(λs.λq.s q q)。然后继续 阅读直到找到下一个术语-参数。在你的 情况1}}。然后剥去λ的外层并更换 带参数的变量名。在您的情况下,(λq.q)被替换为 s

(λq.q)

然后重复该过程。现在,lambda为 (λs.λq.s q q) (λq.q) q -> (λq.(λq.q) q q) q ,而 参数为(λq.(λq.q) q q)

q

q的数量令人困惑,但规则微不足道。重复 再次处理:

   (λq.(λq.q) q q) q
-> (λq.q) q q

现在可以从表达式中删除更多内容,因此您 完成。您可以使用上的交互式解释器自己尝试 this page