Confluência da expansão beta


10

Vamos β seja β -redução no λ -calculus. Definir β expansão β por tβttβt .

É β confluentes? Em outras palavras, temos que para qualquer l,d,r , se lβdβr , então existe u tal que lβuβr ?

Palavras-chave: confluência ascendente, propriedade CR de cabeça para baixo


Comecei examinando a propriedade mais fraca: confluência local (ou seja, se lβdβr , então lβuβr ). Mesmo se isso fosse verdade, não implicaria confluência, já que a expansão β não tem fim, mas eu pensei que isso me ajudaria a entender os obstáculos.

(Superior) No caso em que ambas as reduções são em alto nível, a hipótese torna-se (λx1.b1)a1b1[a1/x1]=b2[a2/x2](λx2.b2)a2 . Até α renomeação de α , podemos assumir que x1x2e que nem x1 nem x2 são livres nesses termos.

(Lance) Se x1 não é livre em b1 , temos b1=b2[a2/x2] e, por conseguinte, ter (λx1.b1)a1=(λx1.b2[a2/x2])a1(λx1.(λx2.b2)a2)a1(λx2.b2)a2 .

Uma prova ingénuos por indução (em b1 e b2 ) para o caso (Superior) seria o seguinte:

  • Se b1 for uma variável y1 ,

    • Se y1=x1 , a hipótese torna-se (λx1.x1)a1a1=b2[a2/x2](λx2.b2)a2 , e que, de facto,(λx1.x1)a1=(λx1.x1)(b2[a2/x2])(λx1.x1)((λx2.b2)a2)(λx2.b2)a2 .

    • Se y1x1 , então podemos simplesmente usar (Lance).

  • As mesmas provas aplicadas são b2 é uma variável.

  • Para b1=λy.c1 e b2=λy.c2 , torna-se a hipótese (λx1.λy.c1)a1λy.c1[a1/x1]=λy.c2[a2/x2](λx2.λy.c2)a2 e a hipótese de indução dád tal que(λx1.c1)a1d(λx2.c2)a2 o que implica queλy.(λx1.c1)a1λy.dλy.(λx2.c2)a2 . Infelizmente, não temosλy.(λx2.c2)a2(λx2.λy.c2)a2 . (Isso me faz pensar emσ redução.)

  • Um problema semelhante surge para aplicativos: os λ s não estão onde deveriam estar.


11
@chi A menos que eu esteja enganado, funciona. (λb.yb)y(λa.(λb.ab)y)y(λa.ay)y
precisa saber é

11
Concordo um pouco com o @chi que parece confluente depois que você pensa sobre isso e vê alguns contra-exemplos. Mas, na verdade, e quanto a ?(λx.xxy)yyyy(λx.yxx)y
Rodolphe Lepigre

2
Embora fosse conveniente para mim se fosse verdade, sou um pouco mais pessimista. Um colega meu fez a seguinte observação, o que parece improvável: implicaria que dois programas arbitrários que computam o mesmo número inteiro (da igreja) possam ser combinados.
precisa saber é o seguinte

2
A resposta é não. O Exercício 3.5.11 em Barendregt fornece um contra-exemplo atribuído a Plotkin, mas sem uma referência: e ( λ x . X x ) ( b c )(λx.bx(bc))c(λx.xx)(bc) . Vou procurar uma prova.
Gilles 'SO- stop be evil'

11
Publiquei o contra-exemplo como resposta, com o que pensei que seria uma prova, mas há uma etapa que não consigo entender. Se alguém puder descobrir, poste uma resposta e eu excluirei a minha.
Gilles 'SO- stop be evil'

Respostas:


7

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[zN]β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[zN]β(λ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[zN]β(λ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.


0

Observe que a redução β pode fazer qualquer termo desaparecer. Assumindo que a variável x não aparece livre no termo v , você tem (λx.v)t1βv e(λx.v)t2βvt1t2βt1t2uuβt1uβt2


2
(λx.v)t1(λx.(λx.v)t1)t2(λx.v)t2

Porra, você está certo! Vou tentar pensar em outra coisa mais tarde, não tenho tempo agora.
Rodolphe Lepigre
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.