Dos contraejemplos son:
- ( λ x . b x ( b c ) ) c(λx.bx(bc))c y ( λ x . x x ) ( b c )(λx.xx)(bc) (Plotkin).
- ( λ x . a ( b x ) ) ( c d )(λx.a(bx))(cd) y a ( ( λ y . b ( c y ) ) d )a((λy.b(cy))d) (Van Oostrom).
El contraejemplo detallado a continuación se da en El cálculo Lambda: su sintaxis y semántica por HP Barenredgt, edición revisada (1984), ejercicio 3.5.11 (vii). Se atribuye a Plotkin (sin referencia precisa). Doy una prueba incompleta que está adaptada de una prueba de Vincent van Oostrom de un contraejemplo diferente, en Take Five: an Easy Expansion Exercise (1996) [PDF] .
La base de la prueba es el teorema de estandarización, que nos permite considerar solo las expansiones beta de una determinada forma. Intuitivamente hablando, una reducción estándar es una reducción que hace todas sus contracciones de izquierda a derecha. Más precisamente, una reducción no es estándar si hay un paso M iMi cuya redex es un residuo de una redex a la izquierda de la redex de un paso anterior M jMj ; “Izquierda” y “derecha” para una redex se definen por la posición del λλ que se elimina cuando se contrae la redex. El teorema de estandarización establece que si M → ∗ β NM→∗βN hay una reducción estándar de MM aNN .
Sea L = ( λ x . B x ( b c ) ) cL=(λx.bx(bc))c y R = ( λ x . X x ) ( b c )R=(λx.xx)(bc) . Ambos términos beta-reducen a b c ( b c )bc(bc) en un solo paso.
Supongamos que hay un ancestro común AA de tal manera que L ← * β A → * β RL←∗βA→∗βR . Gracias al teorema de estandarización, podemos suponer que ambas reducciones son estándar. Sin pérdida de generalidad, suponga que AA es el primer paso donde estas reducciones difieren. De estas dos reducciones, supongamos que σσ sea el lugar donde la redex del primer paso está a la izquierda del otro, y escriba A = C 1 [ ( λ z . M ) N ]A=C1[(λz.M)N] donde C 1C1 is the context of this contraction and (λz.M)N(λz.M)N is the redex. Let ττ be the other reduction.
Como ττ es estándar y su primer paso es a la derecha del agujero en C 1C1 , no puede contraerse en C 1C1 ni a la izquierda del mismo. Por lo tanto, el término final de ττ es de la forma C 2 [ ( λ z . M ′ ) N ′ ]C2[(λz.M′)N′] donde las partes de C 1C1 y C 2C2 a la izquierda de sus agujeros son idénticas, M → ∗ β M ′M→∗βM′ y N → ∗ β N ′N→∗βN′. Dado que σσ comienza reduciendo en C 1C1 y nunca reduce más a la izquierda, su término final debe ser de la forma C 3 [ S ]C3[S] donde la parte de C 3C3 a la izquierda de su agujero es idéntica a la parte izquierda de C 1C1 y C 2C2 , y M [ z ← N ] → * β SM[z←N]→∗βS .
Observe that each of LL and RR contains a single lambda which is to the left of the application operator at the top level. Since ττ preserves the lambda of λz.Mλz.M, this lambda is the one in whichever of LL or RR is the final term of ττ, and in that term the argument of the application is obtained by reducing NN. The redex is at the toplevel, meaning that C1=C2=C3=[]C1=C2=C3=[].
If ττ ends in RR, then M→∗βzzM→∗βzz, N→∗βbcN→∗βbc and M[z←N]→∗β(λx.bx(bc))cM[z←N]→∗β(λx.bx(bc))c. If NN has a descendant in LL then this descendant must also reduce to bcbc which is the normal form of NN. In particular, no descendant of NN can be a lambda, so σσ cannot contract a subterm of the form ˇNPNˇP where ˇNNˇ is a descendant of NN. Since the only subterm of LL that reduces to bcbc is bcbc, the sole possible descendant of NN in LL is the sole occurrence of bcbc itself.
If ττ ends in LL, then M→∗βbz(bc)M→∗βbz(bc), N→∗βcN→∗βc, and M[z←N]→∗β(λx.xx)(bc)M[z←N]→∗β(λx.xx)(bc). If NN has a descendant in RR then this descendant must also reduce to cc by confluence.
At this point, the conclusion should follow easily according to van Oostrom, but I'm missing something: I don't see how tracing the descendants of NN gives any information about MM. Apologies for the incomplete post, I'll think about it overnight.