Confluence de l'expansion bêta


10

Soit être -reduction dans le -calculus. Définissez -expansion par .ββλββtβttβt

Est confluentes? En d'autres termes, avons-nous cela pour tout , si , alors il existe tel que ?βl,d,rlβdβrulβuβr

Mots-clés: confluence ascendante, propriété CR à l'envers


J'ai commencé par regarder la propriété la plus faible: la confluence locale (c'est-à-dire si , puis ). Même si cela était vrai, cela n'impliquerait pas de confluence puisque -expansion est sans fin, mais j'ai pensé que cela m'aiderait à comprendre les obstacles.lβdβrlβuβrβ

(Haut) Dans le cas où les deux réductions sont au niveau supérieur, l'hypothèse devient . Jusqu'à -renaming, nous pouvons supposer que , et que ni ni n'est libre dans ces termes.(λx1.b1)a1b1[a1/x1]=b2[a2/x2](λx2.b2)a2αx1x2x1x2

(Lancer) Si n'est pas libre dans , nous avons et avons donc .x1b1b1=b2[a2/x2](λx1.b1)a1=(λx1.b2[a2/x2])a1(λx1.(λx2.b2)a2)a1(λx2.b2)a2

Une preuve naïve par induction (sur et ) pour le cas (Top) serait la suivante:b1b2

  • Si est une variable ,b1y1

    • Si , l'hypothèse devient , et nous avons en effet .y1=x1(λx1.x1)a1a1=b2[a2/x2](λx2.b2)a2(λx1.x1)a1=(λx1.x1)(b2[a2/x2])(λx1.x1)((λx2.b2)a2)(λx2.b2)a2

    • Si , alors nous pouvons simplement utiliser (Throw).y1x1

  • Les mêmes preuves s'appliquent si est une variable.b2

  • Pour et , l'hypothèse devient et l'hypothèse d'induction donne tel que ce qui implique que . Malheureusement, nous n'avons pas . (Cela me fait penser à -reduction.)b1=λy.c1b2=λy.c2(λx1.λy.c1)a1λy.c1[a1/x1]=λy.c2[a2/x2](λx2.λy.c2)a2d(λx1.c1)a1d(λx2.c2)a2λy.(λx1.c1)a1λy.dλy.(λx2.c2)a2λy.(λx2.c2)a2(λx2.λy.c2)a2σ

  • Un problème similaire se pose pour les applications: les ne sont pas là où ils devraient être.λ


1
@chi Sauf erreur, fonctionne. (λb.yb)y(λa.(λb.ab)y)y(λa.ay)y
xavierm02

1
Je suis un peu d'accord avec @chi qu'il semble confluent après y avoir réfléchi et voir quelques contre-exemples. Mais en fait, qu'en est-il de ? (λx.xxy)yyyy(λx.yxx)y
Rodolphe Lepigre

2
Bien que ce soit pratique pour moi si c'était vrai, je suis un peu plus pessimiste. Un de mes collègues a fait la remarque suivante qui la rend peu probable: cela impliquerait que deux programmes arbitraires qui calculent le même entier (église) peuvent être combinés.
xavierm02

2
La réponse est non. L'exercice 3.5.11 de Barendregt donne un contre-exemple attribué à Plotkin, mais sans référence: et . Je vais chercher une preuve. ( λ x . x x ) ( b c )(λx.bx(bc))c(λx.xx)(bc)
Gilles 'SO- arrête d'être méchant'

1
J'ai posté le contre-exemple comme réponse, avec ce que je pensais être une preuve, mais il y a une étape que je ne peux pas comprendre. Si quelqu'un peut le comprendre, veuillez poster une réponse et je supprimerai la mienne.
Gilles 'SO- arrête d'être méchant'

Réponses:


7

Deux contre-exemples sont:

  • (λx.bx(bc))c et (Plotkin).(λx.xx)(bc)
  • (λx.a(bx))(cd) et (Van Oostrom).a((λy.b(cy))d)

Le contre-exemple détaillé ci-dessous est donné dans The Lambda Calculus: Its Syntax and Semantics par HP Barenredgt, édition révisée (1984), exercice 3.5.11 (vii). Il est attribué à Plotkin (pas de référence précise). Je donne une preuve incomplète qui est adaptée d'une preuve de Vincent van Oostrom d'un contre-exemple différent, dans Take Five: an Easy Expansion Exercise (1996) [PDF] .

La base de la preuve est le théorème de normalisation, qui nous permet de ne considérer que les extensions bêta d'une certaine forme. Intuitivement parlant, une réduction standard est une réduction qui effectue toutes ses contractions de gauche à droite. Plus précisément, une réduction est non standard ssi il y a une étape dont le redex est un résidu d'un redex à gauche du redex d'une étape précédente ; «Gauche» et «droite» pour un redex sont définis par la position du qui est éliminée lorsque le redex est contracté. Le théorème de normalisation que si alors il y a une réduction forfaitaire de à .MiMjλMβNMN

Soit et . Les deux termes bêta-réduisent à en une seule étape.L=(λx.bx(bc))cR=(λx.xx)(bc)bc(bc)

Supposons qu'il y ait un ancêtre commun tel que . Grâce au théorème de normalisation, nous pouvons supposer que les deux réductions sont standard. Sans perte de généralité, supposons que soit la première étape où ces réductions diffèrent. De ces deux réductions, soit soit celle où le redex de la première étape est à gauche de l'autre, et écrivons où est le contexte de cette contraction et est le redex. Soit l'autre réduction.ALβAβRAσA=C1[(λz.M)N]C1(λz.M)Nτ

Étant donné que est standard et que sa première étape se situe à droite du trou dans , il ne peut pas se contracter à ni à gauche de celui-ci. Par conséquent, le terme final de est de la forme où les parties de et à gauche de leurs trous sont identiques, et . Puisque commence par réduire en et ne diminue plus à gauche, son terme final doit être de la forme où la partie deτC1C1τC2[(λz.M)N]C1C2MβMNβNσC1C3[S]C3à la gauche de son trou est identique à la partie gauche de et , et .C1C2M[zN]βS

Observez que chacun de et contient un seul lambda qui se trouve à gauche de l'opérateur d'application au niveau supérieur. Puisque conserve le lambda de , cette lambda est celui dans celui des ou est le dernier terme de , et en ce que l'argument terme de la demande est obtenue en réduisant . Le redex est au niveau supérieur, ce qui signifie que .LRτλz.MLRτNC1=C2=C3=[]

  • Si se termine par , alors , et . Si est un descendant en , alors ce descendant doit aussi réduire à qui est la forme normale de . En particulier, aucun descendant de peut être un lambda, donc ne peut pas contracter un sous - terme de la forme où est un descendant de . Puisque le seul sous-terme de qui se réduit àτRMβzzNβbcM[zN]β(λx.bx(bc))cNLbcNNσNˇPNˇNLbcest , le seul descendant possible de dans est la seule occurrence de lui-même.bcNLbc

  • Si se termine par , alors , et . Si a un descendant dans ce descendant doit également se réduire à par confluence.τLMβbz(bc)NβcM[zN]β(λx.xx)(bc)NRc

À ce stade, la conclusion devrait suivre facilement selon van Oostrom, mais je suis quelque chose qui manque: Je ne vois pas comment tracer les descendants de donne aucune information sur . Toutes mes excuses pour le message incomplet, j'y penserai du jour au lendemain.NM


0

Notez que -reduction peut faire disparaître n'importe quel terme. En supposant que la variable n'apparaisse pas libre dans un terme , vous avez et pour tous les termes et . Par conséquent, le fait que la réduction inverse est confluente est quelque peu équivalent à: pour tous les termes et , il existe un terme tel que et . Cela me semble très faux!βxv(λx.v)t1βv(λx.v)t2βvt1t2βt1t2uuβt1uβt2


2
Sauf erreur, fonctionne pour ces deux termes. (λx.v)t1(λx.(λx.v)t1)t2(λx.v)t2
xavierm02

Merde, tu as raison! J'essaierai de penser à autre chose plus tard, je n'ai pas le temps pour l'instant.
Rodolphe Lepigre
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.