正确重命名绑定变量以执行Alpha缩减

时间:2019-12-24 14:45:54

标签: lambda-calculus

我一直在阅读this博客以了解更好的alpha重命名和alpha减少,目前我知道要正确执行此操作,我们只需要重命名绑定变量,这很好,但是,有一个我感到困惑并想要更好地理解的例子。

如果我们对本示例执行alpha缩减:

((λa. λb. a b) (λa. a)) (λa. a b)

根据博客,我们将获得:

((λa. λc. a c) (λd. d)) (λe. e b)

我不明白的是,为什么在重命名此部分(λa. a b)时将其更改为变量e而不是上一部分的d,因此,请参考相同的功能。

第二个问题,为什么我们只在部分b中重命名((λa. λb. a b)并跳过a

1 个答案:

答案 0 :(得分:0)

我认为这样的想法是,每个变量名只能绑定一次。 在您的示例中,我们看到b是整个术语中唯一的自由变量,因此我们不会去碰它。但是,左侧还有另一个b,因此将其重命名为c以避免混淆。 a被绑定三次,因此我们决定将其中两个重命名(分别为de)。

请注意,这实际上不是 reduction ,而是一种重命名策略。