Terminy Lambda-Calculus, które redukują się do siebie


13

W mojej ciągłej próbie nauki rachunku różniczkowego lambda, „Lambda-Calculus and Combinators an Introduction” Hindleya i Seldina wymienia następujący artykuł (autorstwa Bruce'a Lerchera), który dowodzi, że jedynym redukowalnym wyrażeniem jest to samo (konwersja modulo alfa) to: .(λx.xx)(λx.xx)

Chociaż wierzę w wynik, wcale nie podążam za argumentem.

Jest dość krótki (mniej niż jeden akapit). Wszelkie wyjaśnienia byłyby bardzo mile widziane.

Dzięki,

Charlie

Odpowiedzi:


16

Po pierwsze, zauważ, że wynik stwierdza, że ​​jedyny redex beta, w którym prawa strona jest równa (konwersja modulo alfa) do lewej strony to . Istnieją inne terminy, które ograniczają się do siebie, mając ten redex w kontekście.(λx.xx)(λx.xx)

Widzę, jak działa większość dowodu Lerchera, choć są punkty, w których nie mogę przejść bez nieznacznej modyfikacji dowodu. Załóżmy, że (użyć = alpha równoważności) i zgodnie z konwencją zmiennej przypuszczać, że x nie występują wolne w B .(λx.A)B=[B/x]A=xB

Policz liczbę po lewej i prawej stronie. Zmniejszenie usuwa jedną z Redex, a także tych z B i dodaje tyle, ile jest w B czasach liczba wystąpień x w A . Innymi słowy, jeśli L ( M ) jest liczbą λ w M, a # x ( M ) jest liczbą wolnych wystąpień x w M, to 1 + L ( B ) = # x (λBBxAL(M)λM#x(M)xM . Jedynym rozwiązaniem tego równania diofantycznego jest # x ( A ) = 2 (i L ( B ) = 1, ale nie wykorzystamy tego faktu).1+L(B)=#x(A)×L(B)#x(A)=2L(B)=1

Nie rozumiem argumentu Lerchera dla powyższego akapitu. Liczy liczbę atomów i atomowych; napiszmy to # ( M ) . Równanie to # ( B ) + 1 = # x ( A ) × ( # ( B ) - 1 ) , który ma dwa rozwiązania: # x ( A ) = 2 , # ( B ) = 3 i # x ( Aλ#(M)#(B)+1=#x(A)×(#(B)1)#x(A)=2,#(B)=3 . Nie widzę oczywistego sposobu na wyeliminowanie drugiej możliwości.#x(A)=3,#(B)=2

Zastosujmy teraz to samo rozumowanie do liczby podwładności równej po obu stronach. Redukcja usuwa jeden u góry i dodaje tyle, ile jest podstawionych wystąpień x w A , tj. 2. Stąd jeszcze jedno wystąpienie B musi zniknąć; ponieważ te w A pozostają (ponieważ B nie zawiera wolnego x ), dodatkowe wystąpienie B po lewej stronie musi wynosić λ x . .BxABABxBλx.A

Nie rozumiem, w jaki sposób Lercher wywnioskuje, że nie ma B jako podterminu, ale w rzeczywistości nie ma to znaczenia dla dowodu.AB

[(λx.A)/x]AA=xAMNλx.MN=[(λx.MN)/x]M=[(λx.MN)/x]NMMλx.PM=xN=x


(λx.A)B=[B/x]A

A=x(λx.A)B=BBAA1A2λx.A=[B/x]A1B=[B/x]A2

A1=xA1=λx.[B/x]AA1=λx.(λx.A1A2)B

A2=xA2xBA2=B

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.