我一直在阅读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
。
答案 0 :(得分:0)
我认为这样的想法是,每个变量名只能绑定一次。
在您的示例中,我们看到b
是整个术语中唯一的自由变量,因此我们不会去碰它。但是,左侧还有另一个b
,因此将其重命名为c
以避免混淆。
a
被绑定三次,因此我们决定将其中两个重命名(分别为d
和e
)。
请注意,这实际上不是 reduction ,而是一种重命名策略。