Dois contra-exemplos são:
- (λx.bx(bc))c e(λx.xx)(bc) (Plotkin).
- (λx.a(bx))(cd) ea((λy.b(cy))d) (Van Oostrom).
O contra-exemplo detalhado abaixo é apresentado em The Lambda Calculus: Its Syntax and Semantics por HP Barenredgt, edição revisada (1984), exercício 3.5.11 (vii). É atribuído a Plotkin (nenhuma referência precisa). Dou uma prova incompleta, que é adaptada de Vincent van Oostrom, de um contra-exemplo diferente, em Take Five: a Easy Expansion Exercise (1996) [PDF] .
A base da prova é o teorema da padronização, que nos permite considerar apenas expansões beta de uma determinada forma. Intuitivamente falando, uma redução padrão é uma redução que faz todas as suas contrações da esquerda para a direita. Mais precisamente, uma redução não é padrão se houver uma etapa Mi cujo redex é um resíduo de um redex à esquerda do redex da etapa anterior Mj ; “Esquerda” e “direita” para um redex são definidas pela posição de λ que é eliminada quando o redex é contratado. O teorema da padronização afirma que, se M→∗βN , há uma redução padrão de M paraN .
Seja L=(λx.bx(bc))c e R=(λx.xx)(bc) . Ambos os termos beta-reduzem para bc(bc) em uma etapa.
Suponha-se que há um antepassado comum A tal que L←∗βA→∗βR . Graças ao teorema da padronização, podemos assumir que ambas as reduções são padrão. Sem perda de generalidade, suponha que A seja o primeiro passo em que essas reduções diferem. Destas duas reduções, seja σ aquele em que o redex do primeiro passo fica à esquerda do outro e escreva A=C1[(λz.M)N] ondeC1é o contexto dessa contração e (λz.M)N τ a outra redução. é o redex. Deixeiτ
Como τ é padrão e seu primeiro passo é à direita do orifício em C1 , ele não pode se contrair em C1 nem à esquerda dele. Portanto, o termo final de τ tem a forma C2[(λz.M′)N′] onde as partes de C1 e C2 à esquerda de seus orifícios são idênticas, M→∗βM′ e N→∗βN′. Como σ Scomeça por reduzir em C1 e nunca reduz mais à esquerda, seu termo final deve ser da forma C3[S] que a parte de C3 à esquerda de seu orifício é idêntica à parte esquerda de C1 e C2 , e M[z←N]→∗βS .
Observe que cada um de L e R contém um único lambda que fica à esquerda do operador do aplicativo no nível superior. Como τ preserva a lambda de λz.M , este é o lambda em qualquer um de L ou R é o termo final de τ , e em que o termo o argumento da aplicação é obtido reduzindo N . A REDEX está no nível superior, o que significa que C1=C2=C3=[] .
Se τ extremidades em R , então M→∗βzz , N→∗βbc e M[z←N]→∗β(λx.bx(bc))c . Se N tem um descendente em L então este descendente também deve reduzir para bc que é a forma normal de N, pode ser uma lambda, então σN . Em particular, nenhum descendente deNσ não pode contrair uma subtermo da forma N P onde N é um descendente de N . Como o único subtermo de L que reduz a b c é b c , o único descendente possível de N em L é a única ocorrência do próprio b c .NˇPNˇNLbcbcNLbc
Se τ extremidades em L , em seguida, M→∗βbz(bc) , N→∗βc , e M[z←N]→∗β(λx.xx)(bc) . Se N tiver um descendente em R , esse descendente também deverá reduzir a c por confluência.
Neste ponto, a conclusão deve seguir facilmente, de acordo com van Oostrom, mas estou perdendo alguma coisa: não vejo como o rastreamento dos descendentes de N fornece informações sobre M . Desculpas pelo post incompleto, vou pensar durante a noite.