Я нашел Mike Gordon's Введение в функциональное программированиеNotes в сети, и я пытаюсь работать через него. На странице 9 есть этот вопрос:Lambda Calculus Free Variable Issue
Find an example to show that if V1 = V2 , then even if V2 is not free in E1,
it is not necessarily the case that:
(λ V1 V2 . E) E1 E2 = E [E1/V1][E2/V2]
Я предполагаю, что я мог бы сказать, что с V1 и V2 равны, мы могли бы повторить его таким образом:
(λ V2 V1 . E) E1 E2
и поэтому говорят
(λ V1 . E[E1/V2]) E2
с учетом того, что V2 не является свободным в E1. Но тогда мы не можем сказать
E[E1/V2][E2/V1]
потому что E2 обязательно будет иметь V1 бесплатно. Или я чего-то не хватает?
Похоже, что выражение '(λ v1 v2. E) E1 E2 = E [E1/V1] [E2/V2]', где 'v1' и' v2' отличаются друг от друга, например, например, 'λv1. (λ v2. v1) E1 E2', который можно было бы отбросить до '(λ v2. E1) E2', который был бы просто« E1 ». Но если мы попытаемся сказать исходное redex с' v1 = v2' или просто 'v', используя наш пример:' λv. (λ v. v) E1 E2', который был бы бета-версией до 'E2', что является противоречием. Поэтому (и вообще) вы не можете альфа' λ v1 v2. E 'to' λ v v. É'. – user2054900