首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用beta归约查找范式

使用beta归约查找范式
EN

Stack Overflow用户
提问于 2013-02-25 06:50:34
回答 1查看 1.6K关注 0票数 1

给定以下表达式:

代码语言:javascript
复制
((λx.λx.xx) (λx.xzx)) (λy.yy)

我想用beta约简求出它的范式。

我的计算如下:

代码语言:javascript
复制
((λx.λx.xx) (λx.xzx)) (λy.yy) ->
((λx.xzx)(λx.xzx)) (λy.yy) -> ((λx.xzx)z(λx.xzx)) (λy.yy) ->
(zzz (λx.xzx)) (λy.yy) -> ?

但我如何从这里继续:

代码语言:javascript
复制
(zzz (λx.xzx)) (λy.yy) -> ?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-25 07:12:52

\表示λ

代码语言:javascript
复制
((\x.\x.xx) (\x.xzx)) (\y.yy) =
= ((*\x*.\x.xx) *(\x.xzx)*) (\y.yy) =
= (\x.( (\x.xzx) (\x.xzx) )) (\y.yy) =
= (\x.( (*\x*.xzx) *(\x.xzx)* )) (\y.yy) =
= (\x.( (\x.xzx) z (\x.xzx) )) (\y.yy) =
= (\x.( ( (\x.xzx) z) (\x.xzx) )) (\y.yy) =
= (\x.( ( (*\x*.xzx) *z*) (\x.xzx) )) (\y.yy) =
= (\x.( ( (zzz) (\x.xzx) ) (\y.yy) =
= (*\x*.( ( (zzz) *(\x.xzx)* ) (\y.yy) =
= (zzz) (\x.( (\y.yy) z (\y.yy) )) =
= (zzz) (\x.( ((\y.yy) z) (\y.yy) )) =
= (zzz) (\x.( ((*\y*.yy) *z*) (\y.yy) )) =
= (zzz) (\x.( (zz) (\y.yy) )) =
= (zzz) (\x.(zz)(\y.yy))

而且这里没有更多的应用程序可用--至少,只要您没有z的定义。

还请注意,在最终展开中有一个x定义,您可能在计算过程中取消了该定义。

所有变量(λx .λx。xx)在表达式中有共同之处:

代码语言:javascript
复制
((*λx*.*λx*.xx) (λx.xzx)) (λy.yy)

是他们的名字。但它们仍然是不同的变量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15057639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档