Ламбда-обчислення терміни, які зводяться до себе


13

У моїх постійних пошуках, щоб спробувати вивчити лямбда-числення, "Хамбда-обчислення та комбінатори" Хіндлі та Селдіна "вступ" згадує наступний документ (Брюс Лерчер), який доводить, що єдиний вичерпний вираз, який є тим самим (перетворення модуля альфа) для себе є: .(λx.xx)(λx.xx)

Хоча я вірю в результат, я взагалі не дотримуюся аргументу.

Він досить короткий (менше одного абзацу). Будь-які пояснення були б дуже вітаються.

Спасибі,

Чарлі

Відповіді:


16

По-перше, зауважте, що в результаті зазначено, що єдиний бета-перенастроювання, де права частина дорівнює (конверсія модуля альфа) до лівої, є ( λ x . X x ) . Є й інші терміни, які зводяться до себе, проводячи це перенастроювання в контексті.(λx.xx)(λx.xx)

Я бачу, як працює більшість доказів Лерчера, хоча є моменти, коли я не можу пройти, не змінивши доказів. Припустимо , що (я використовую = для альфа - еквівалентності), і відповідно з змінної конвенції припустимо , що х не відбувається вільно в B .(λx.A)B=[B/x]A=xB

Порахуйте кількість в лівій та правій частині. Зменшення видаляє один з Redex, а також тих , B , і додає стільки , скільки є в B раз число входжень х в А . Іншими словами, якщо L ( M ) - число λ 's у M, а # x ( M ) - кількість вільних входжень x у M, то 1 + L ( B ) = # x (λBBxAL(M)λM#x(M)xM . Єдиним рішенням цього рівняння Діофантіна є # x ( A ) = 2 L ( B ) = 1, але ми не будемо використовувати цей факт).1+L(B)=#x(A)×L(B)#x(A)=2L(B)=1

Я не розумію аргументу Лерчера для вищевказаного абзацу. Він підраховує кількість і атомних термінів; запишемо це # ( М ) . Рівняння - # ( B ) + 1 = # x ( A ) × ( # ( B ) - 1 ) , яке має два рішення: # x ( A ) = 2 , # ( B ) = 3 і # x ( Aλ#(M)#(B)+1=#x(A)×(#(B)1)#x(A)=2,#(B)=3 . Я не бачу очевидного способу усунути другу можливість.#x(A)=3,#(B)=2

Застосуємо тепер те ж міркування до кількості підрядів, рівних з обох сторін. Зменшення видаляє один біля вершини і додає стільки, скільки є заміщених випадків x в A , тобто 2. Отже, ще одне виникнення B повинне зникнути; оскільки ті, що знаходяться в A, залишаються (оскільки B не містить вільного x ), додаткове виникнення B у лівій частині має бути λ x . .BxABABxBλx.A

Я не розумію, як Лерчер виводить, що не має B як підтерміну, але це насправді не має відношення до доказу.AB

З початкової гіпотези - додаток. Це не може бути випадком, якщо A = x , тому A є додатком M N , при λ x . M N = [ ( λ x . M N ) / x ] M = [ ( λ x . M N ) / x ] N[(λx.A)/x]AA=xAMNλx.MN=[(λx.MN)/x]M=[(λx.MN)/x]N. Оскільки не може мати себе як підтермін, M не може мати вигляд λ x . P , тому M = x . Аналогічно N = x .MMλx.PM=xN=x


Я вважаю за краще доказ без аргументів підрахунку. Припустимо , що .(λx.A)B=[B/x]A

Якщо то маємо ( λ x . A ) B = B , що неможливо, оскільки B не може бути самою підтерміною. Таким чином, оскільки права частина гіпотези дорівнює додатку, A повинен бути додатком A 1 A 2 , а λ x . A = [ B / x ] A 1 і B = [ B / x ] A 2 .A=x(λx.A)B=BBAA1A2λx.A=[B/x]A1B=[B/x]A2

З колишньої рівності або або A 1 = λ x . [ В / х ] . У другому випадку A 1 = λ x . ( λ x . A 1 A 2 ) B , що неможливо, оскільки $ A_1 не може бути самою підтерміною.A1=xA1=λx.[B/x]AA1=λx.(λx.A1A2)B

З останньої рівності або або A 2 не має вільного x (інакше B буде підметою самого себе). В останньому випадку, 2 = B .A2=xA2xBA2=B

Ми показали, що . Права частина початкової гіпотези, таким чином, B B , а B = λ x . A = λ x . х х .A=xxBBB=λx.Aλx.xx

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.