Istilah Lambda-Calculus yang mengurangi untuk diri mereka sendiri


13

Dalam pencarian saya yang berkelanjutan untuk mencoba mempelajari kalkulus lambda, Hindley & Seldin "Lambda-Calculus and Combinators an Introduction" menyebutkan makalah berikut (oleh Bruce Lercher) yang membuktikan bahwa satu-satunya ekspresi yang dapat direduksi yang sama (modulo alpha conversion) untuk dirinya sendiri adalah: .(λx.xx)(λx.xx)

Sementara saya percaya hasilnya, saya tidak mengikuti argumen sama sekali.

Ini cukup singkat (kurang dari satu paragraf). Setiap penjelasan akan sangat disambut.

Terima kasih,

Charlie

Jawaban:


16

Pertama, perhatikan bahwa hasilnya menyatakan bahwa satu-satunya beta redex di mana sisi kanan sama dengan (modulo alpha-conversion) ke sisi kiri adalah . Ada istilah lain yang mengurangi untuk diri mereka sendiri, memiliki redex ini dalam suatu konteks.(λx.xx)(λx.xx)

Saya bisa melihat bagaimana sebagian besar bukti Lercher bekerja, meskipun ada poin di mana saya tidak bisa melewati tanpa sedikit memodifikasi bukti. Misalkan (saya menggunakan = untuk kesetaraan alpha), dan sesuai konvensi variabel misalkan x tidak terjadi bebas di B .(λx.A)B=[B/x]A=xB

Hitung jumlah di sisi kiri dan kanan. Pengurangan menghilangkan salah satu dari redex, ditambah orang-orang dari B , dan menambahkan sebanyak yang ada di B kali jumlah kejadian x di A . Dengan kata lain, jika L ( M ) adalah jumlah λ dalam M dan # x ( M ) adalah jumlah kemunculan bebas x dalam M maka 1 + L ( B ) = #λBBxAL(M)λM#x(M)xM . Satu-satunya solusi untuk persamaan Diophantine adalah # x ( A ) = 2 (dan L ( B ) = 1 tetapi kami tidak akan menggunakan fakta itu).1+L(B)=#x(A)×L(B)#x(A)=2L(B)=1

Saya tidak mengerti argumen Lercher untuk paragraf di atas. Dia menghitung jumlah dan istilah atom; mari kita tulis ini # ( M ) . Persamaannya adalah # ( B ) + 1 = # x ( A ) × ( # ( B ) - 1 ) , yang memiliki dua solusi: # x ( A ) = 2 , # ( B ) = 3 dan # x ( Aλ#(M)#(B)+1=#x(A)×(#(B)1)#x(A)=2,#(B)=3 . Saya tidak melihat cara yang jelas untuk menghilangkan kemungkinan kedua.#x(A)=3,#(B)=2

Mari kita terapkan alasan yang sama untuk jumlah subterm yang sama dengan di kedua sisi. Pengurangan menghilangkan satu di dekat bagian atas, dan menambahkan sebanyak ada kejadian pengganti x dalam A , yaitu 2. Oleh karena itu satu lagi kejadian B harus menghilang; karena yang ada di A tetap (karena B tidak mengandung x gratis ), kemunculan tambahan B di sisi kiri harus λ x . A .BxABABxBλx.A

Saya tidak mengerti bagaimana Lercher menyimpulkan bahwa tidak memiliki BAB sebagai subterm, tetapi ini sebenarnya tidak relevan dengan buktinya.

Dari hipotesis awal, adalah aplikasi. Ini tidak dapat menjadi kasus jika A = x , oleh karena itu A itu sendiri adalah aplikasi M N , dengan λ 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. Karena tidak dapat memiliki dirinya sebagai subterm, M tidak dapat memiliki bentuk λ x . P , jadi M = x . Demikian pula, N = x .MMλx.PM=xN=x


Saya lebih suka bukti tanpa argumen penghitungan. Misalkan .(λx.A)B=[B/x]A

Jika maka kita memiliki ( λ x . A ) B = B , yang tidak mungkin karena B tidak dapat menjadi subterm itu sendiri. Jadi, karena sisi kanan hipotesis sama dengan aplikasi, A harus menjadi aplikasi A 1 A 2 , dan λ x . A = [ B / x ] A 1 dan B = [ B / x ] A 2 .A=x(λx.A)B=BBAA1A2λx.A=[B/x]A1B=[B/x]A2

Dari persamaan sebelumnya, baik atau A 1 = λ x . [ B / x ] A . Dalam kasus kedua, A 1 = λ x . ( λ x . A 1 A 2 ) B , yang tidak mungkin karena $ A_1 tidak dapat menjadi subterm itu sendiri.A1=xA1=λx.[B/x]AA1=λx.(λx.A1A2)B

A2=xA2xBA2=B .

A=xxBBB=λx.Aλx.xx

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.