Tout d'abord, notez que le résultat indique que le seul bêta redex où le côté droit est égal (conversion alpha modulo) au côté gauche est . Il y a d'autres termes qui se réduisent à eux-mêmes, ayant ce redex dans un contexte.( λ x . x x ) ( λ x . x x )
Je peux voir comment la plupart des preuves de Lercher fonctionnent, bien qu'il y ait des points où je ne peux pas passer sans modifier légèrement la preuve. Supposons que (I utilise = pour alpha équivalence), et comme supposons par la convention de variable x ne se produit pas libre dans B .( λ x . A ) B = [ B / x ] A=XB
Comptez le nombre de dans le côté gauche et le côté droit. La réduction supprime l' un de l'Redex, ainsi que ceux de B , et ajoute autant qu'il ya en B fois le nombre d'occurrences de x dans A . En d'autres termes, si L ( M ) est le nombre de λ dans M et # x ( M ) est le nombre d'occurrences libres de x dans M alors 1 + L ( B ) = # x (λBBXUNEL ( M)λM#X( M)XM . La seule solution à cette équation diophantienne est # x ( A ) = 2 (et L ( B ) = 1 mais nous n'utiliserons pas ce fait).1 + L ( B ) = #X(A)×L(B)#x(A)=2L(B)=1
Je ne comprends pas l'argument de Lercher pour le paragraphe ci-dessus. Il compte le nombre de termes et atomiques; écrivons ceci # ( M ) . L'équation est # ( B ) + 1 = # x ( A ) × ( # ( B ) - 1 ) , qui a deux solutions: # x ( A ) = 2 , # ( B ) = 3 et # x ( Aλ#(M)#(B)+1=#x(A)×(#(B)−1)#x(A)=2,#(B)=3 . Je ne vois pas de moyen évident d'éliminer la deuxième possibilité.#x(A)=3,#(B)=2
Appliquons maintenant le même raisonnement au nombre de sous-termes égal à deux côtés. La réduction en supprime une près du sommet et en ajoute autant qu'il y a d'occurrences substituées de x dans A , c'est-à-dire 2. Par conséquent, une autre occurrence de B doit disparaître; puisque ceux de A restent (parce que B ne contient pas de x libre ), l'occurrence supplémentaire de B sur le côté gauche doit être λ x . A .BxABABxBλx.A
Je ne comprends pas comment Lercher déduit que n'a pas B comme sous-terme, mais ce n'est pas en fait pertinent pour la preuve.AB
D'après l'hypothèse initiale, est une application. Cela ne peut pas être le cas si A = x , donc A lui-même est une application M N , avec λ 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. Puisque ne peut pas avoir lui-même comme sous-terme, M ne peut pas avoir la forme λ x . P , donc M = x . De même, N = x .MMλx.PM=xN=x
Je préfère une preuve sans argument de comptage. Supposons que .(λx.A)B=[B/x]A
Si alors nous avons ( λ x . A ) B = B , ce qui n'est pas possible car B ne peut pas être un sous-terme de lui-même. Ainsi, puisque le côté droit de l'hypothèse est égal à une application, A doit être une application A 1 A 2 et λ x . A = [ B / x ] A 1 et B = [ B / x ] A 2 .A=x(λx.A)B=BBAA1A2λx.A=[B/x]A1B=[B/x]A2
De l'ancienne égalité, soit ou A 1 = λ x . [ B / x ] A . Dans le second cas, A 1 = λ x . ( λ x . A 1 A 2 ) B , ce qui n'est pas possible car $ A_1 ne peut pas être un sous-terme de lui-même.A1=xA1=λx.[B/x]AA1=λx.(λx.A1A2)B
A2=xA2xBA2=B
A=xxBBB=λx.Aλx.xx