Confluenza dell'espansione beta


10

Lasciate β be β -riduzione nel λ -calcolo. Definire l' espansione ββ di tβttβt .

È β confluenti? In altre parole, abbiamo quello per ogni l,d,r , se lβdβr , allora esiste u tale che lβuβr ?

Parole chiave: confluenza ascendente, proprietà CR capovolta


Ho iniziato osservando la proprietà più debole: confluenza locale (cioè se lβdβr , quindi lβuβr ). Anche se questo fosse vero, non implicherebbe confluenza poiché l' espansione β non è terminante, ma ho pensato che mi avrebbe aiutato a capire gli ostacoli.

(Top) Nel caso in cui sia riduzioni sono al primo livello, l'ipotesi diventa (λx1.b1)a1b1[a1/x1]=b2[a2/x2](λx2.b2)a2 . Fino a α -renaming, possiamo supporre che x1x2e che né x1x2 sono gratuiti in questi termini.

(Tiro) Se x1 non è libero in b1 , abbiamo b1=b2[a2/x2] e quindi hanno (λx1.b1)a1=(λx1.b2[a2/x2])a1(λx1.(λx2.b2)a2)a1(λx2.b2)a2 .

Una prova ingenua per induzione (su b1 e b2 ) per il caso (in alto) sarebbe la seguente:

  • Se b1 è una variabile y1 ,

    • Se y1=x1 , l'ipotesi diventa (λx1.x1)a1a1=b2[a2/x2](λx2.b2)a2 , e anzi abbiamo (λx1.x1)a1=(λx1.x1)(b2[a2/x2])(λx1.x1)((λx2.b2)a2)(λx2.b2)a2 .

    • Se y1x1 , allora possiamo semplicemente usare (Lancia).

  • Le stesse prove si applicano è b2 è una variabile.

  • Per b1=λy.c1 e b2=λy.c2 , l'ipotesi diventa (λx1.λy.c1)a1λy.c1[a1/x1]=λy.c2[a2/x2](λx2.λy.c2)a2 e l'ipotesi di induzione dàd tale che(λx1.c1)a1d(λx2.c2)a2 che implica cheλy.(λx1.c1)a1λy.dλy.(λx2.c2)a2 . Sfortunatamente, non abbiamoλy.(λx2.c2)a2(λx2.λy.c2)a2 . (Questo mi fa pensare allariduzioneσ .)

  • Un problema simile si presenta per le applicazioni: gli λ non sono dove dovrebbero essere.


1
@chi A meno che non mi sbagli, funziona. (λb.yb)y(λa.(λb.ab)y)y(λa.ay)y
xavierm02,

1
Sono in qualche modo d'accordo con @chi sul fatto che sembra confluente dopo averci pensato e visto un paio di contro-esempi. Ma in realtà, che dire di ? (λx.xxy)yyyy(λx.yxx)y
Rodolphe Lepigre,

2
Anche se sarebbe conveniente per me se fosse vero, sono un po 'più pessimista. Un mio collega ha fatto la seguente osservazione, il che lo rende improbabile: implicherebbe che è possibile combinare due programmi arbitrari che calcolano lo stesso intero (chiesa).
xavierm02,

2
La risposta è no. L'esercizio 3.5.11 in Barendregt fornisce un controesempio attribuito a Plotkin, ma senza riferimento: e ( λ x . X x ) ( b c ) . Cercherò una prova. (λx.bx(bc))c(λx.xx)(bc)
Gilles 'SO- smetti di essere malvagio' il

1
Ho pubblicato il controesempio come risposta, con quello che pensavo fosse una prova, ma c'è un passo che non riesco a capire. Se qualcuno riesce a capirlo, ti preghiamo di inviare una risposta e io eliminerò la mia.
Gilles 'SO- smetti di essere malvagio' il

Risposte:


7

Due controesempi sono:

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

Il controesempio dettagliato di seguito è riportato in The Lambda Calculus: Its Syntax and Semantics di HP Barenredgt, edizione rivista (1984), esercizio 3.5.11 (vii). È attribuito a Plotkin (nessun riferimento preciso). Fornisco una prova incompleta che viene adattata da una prova di Vincent van Oostrom di un diverso controesempio, in Take Five: an Easy Expansion Exercise (1996) [PDF] .

La base della dimostrazione è il teorema di standardizzazione, che ci consente di considerare solo le espansioni beta di una determinata forma. Intuitivamente parlando, una riduzione standard è una riduzione che fa tutte le sue contrazioni da sinistra a destra. Più precisamente, una riduzione è non standard se esiste un passaggio Mi cui redex è un residuo di un redex a sinistra del redex di un passaggio precedente Mj ; "Sinistra" e "destra" per un redex sono definiti dalla posizione di λ che viene eliminata quando il redex viene contratto. Il teorema di standardizzazione afferma che se MβN allora c'è una riduzione standard da M aN .

Sia L=(λx.bx(bc))c e R=(λx.xx)(bc) . Entrambi i termini riducono beta a bc(bc) in un solo passaggio.

Supponiamo che ci sia un antenato comune A tale che LβAβR . Grazie al teorema di standardizzazione, possiamo presumere che entrambe le riduzioni siano standard. Senza perdita di generalità, supponiamo che A sia il primo passo in cui queste riduzioni differiscono. Di queste due riduzioni, sia σ quello dove il redex del primo passo è alla sinistra dell'altro, e scrivi A=C1[(λz.M)N] dove C1è il contesto di questa contrazione e (λz.M)N è il redex. Sia τ l'altra riduzione.

Da τ è standard e il suo primo passo è alla destra del buco in C1 , non può contrarsi a C1 né a sinistra di esso. Pertanto il termine finale di τ è della forma C2[(λz.M)N] dove le parti di C1 e C2 a sinistra dei loro fori sono identiche, MβM e NβN. Poiché σ inizia riducendo in C1 e non riduce mai più a sinistra, il suo termine finale deve essere della forma C3[S] dove la parte di C3 a sinistra del suo foro è identica alla parte sinistra di C1 e C2 , e M[zN]βS .

LRτλz.MLRτNC1=C2=C3=[]

  • Se τ termina con R , allora MβzzNβbcM[zN]β(λx.bx(bc))cNLbcNNσNˇPNˇNLbcbcNLbc

  • Se τ termina con L , allora Mβbz(bc)NβcM[zN]β(λx.xx)(bc)NRc

NM


0

βxv(λx.v)t1βv(λx.v)t2βv per tutti i terminit1t2βt1t2uuβt1uβt2


2
A meno che non mi sbagli, (λx.v)t1(λx.(λx.v)t1)t2(λx.v)t2

Accidenti, hai ragione! Proverò a pensare a qualcos'altro più tardi, non ho tempo in questo momento.
Rodolphe Lepigre,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.