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→∗βM′N→∗βN′σC1C3[S]C3à la gauche de son trou est identique à la partie gauche de et , et .C1C2M[z←N]→∗β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[z←N]→∗β(λ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[z←N]→∗β(λ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