Lambda演算的Beta还原

问题描述 投票:0回答:1

我有以下lambda演算:

1)λx。 katze(x)(加菲猫)

2)λP。 λx P(x)(tea)

3)λy。 λx点赞(x,y)(Mia)

我如何通过减少Beta来减少它们?

我的解决方案:

1)喀兹(加菲猫)

2)茶

3)个赞(Mia)

math lambda lambda-calculus
1个回答
0
投票

执行beta减少时,请使用提供的值将绑定变量替换为lambda函数。表示法为[param := value],然后选择给出的第一个变量。

λx . katze(x)(Garfield)-> katze (Garfield)减小是正确的。我们用x变量代替了Garfield,并在过程中删除了λx,只保留了表达式。这是将要采取的步骤:

λx . katze(x)(Garfield)

= katze(x)[x := Garfield]

= katze(Garfield)

但是,其他两个都不正确。您会忘记自己拥有一个lambda函数,其中的表达式是另一个lambda函数。由于您有一个[[single输入,因此您只需要减少one函数-第一个函数,剩下的另一个。您可以将其剥离掉外层而露出内层。

λP . λx . P(x)(tea)的情况下,可以更好地表示为(λP . (λx . P(x)))(tea),其中现在每个lambda函数都用方括号括起来。由于我们仅提供一个输入tea,因此我们仅使用参数P来解析外部函数(为清楚起见,保留了方括号):

(λP . (λx . P(x)))(tea)

= (λx . P(x))[P := tea]

= (λx . P(x))

= λx . tea(x)

或不带括号:

λP . λx . P(x)(tea)

= λx . P(x)[P := tea]

= λx . tea(x)

至于最后一个功能,当仅给出一个输入时,仍然具有删除两个功能的相同问题。正确的减少步骤是:

λy . λx . likes(x, y)(Mia)

= λx . likes(x, y)[y := Mia]

= λx . likes(x, Mia)

© www.soinside.com 2019 - 2024. All rights reserved.