Termes Lambda-Calculus qui se réduisent à eux-mêmes

13

Dans ma quête continue pour essayer d'apprendre le calcul lambda, "Lambda-Calculus and Combinators an Introduction" de Hindley & Seldin mentionne l' article suivant (par Bruce Lercher) qui prouve que la seule expression réductible qui est la même (conversion modulo alpha) pour elle-même est: (λx.xx)(λx.xx) .

Bien que je crois au résultat, je ne suis pas du tout d'accord avec cet argument.

Il est assez court (moins d'un paragraphe). Toute explication serait la bienvenue.

Merci,

Charlie

Charles Reich
la source

Réponses:

16

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.XX)(λX.XX)

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.UNE)B=[B/X]UNE=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

Gilles 'SO- arrête d'être méchant'
la source