Come si possono trasformare


14

Ho pensato a queste domande:

Esiste un calcolo lambda tipizzato che è coerente e Turing completo?

/cs/65003/if-%CE%BB-xxx-has-a-type-then-is-the-type-system-inconsistent

e ci sono già alcune domande a cui è difficile rispondere nell'impostazione non tipizzata ! Più in particolare, sono curioso di sapere se possiamo recuperare la completezza di Turing dalla non cessazione nel modo seguente:

Domanda: Dato un (puro) λ -termine t con nessuna forma normale testa debole, fa c'è sempre esiste un combinatore a punto fisso Yt tale che

Yt (λx.x)=t

Le uguaglianze sono tutte prese modulo βη .

In realtà sospetto che questa versione della domanda sia falsa , quindi si può rilassare la domanda ai combinatori di loop , in cui un combinatore di loop è definito come un termine tale che per ogni f YYf dove Y è nuovamente necessario essere un combinatore di loop. Questo è abbastanza per definire le funzioni ricorsive come al solito, ovviamente.

Y f=f (Y f)
Y

Più in generale, sono interessato a trovare modi "naturali" per passare da una non terminante a un combinatore di loop, anche se l'equazione sopra non è soddisfatta.t

Sono anche interessato a versioni più deboli della domanda di cui sopra, ad esempio può essere considerato un'applicazione t t con ogni t i in forma normale (anche se non sono sicuro che aiuta veramente).tt1 t2tnti


Finora: l'approccio naturale è quello di prendere e applicazioni "pepe" di f in tutto, ad esempio,tf

Ω:=(λx.x x)(λx.x x)

diventa il solito

YΩ:=λf.(λx.f (x x)) (λx.f (x x))

L'idea è di ridurre la testa di ad un'applicazione lambda λ xt e sostituirlo con λ x . f t , ma il passo successivo non è chiaro (e sono scettico sul fatto che questo possa portare a qualsiasi cosa).λx.tλx.f t

Io non sono sicuro di aver capito abbastanza alberi Böhm per vedere se hanno qualcosa da dire, ma ne dubito fortemente, dal momento che Böhm albero s' è semplicemente , che sembra niente come quello per Y Ω : un albero di infinita astrazioni.ΩYΩ


Modifica : Un mio amico ha osservato che questo approccio ingenuo non funziona con il termine: L'approccio ingenuo darebbe ( λ x . F ( x x x ) ) ( λ x . f ( x x x ) ) Ma questo non è un combinatore a punto fisso! Questo può essere risolto sostituendo la seconda applicazione di f con

(λx.x x x)(λx.x x x)
(λx.f (X X x))(λX.f (X X X))
f , ma poi f io non dà il termine originale. Non è chiaro se questo termine sia un contro-esempio alla domanda originale (e certamente non è un contro-esempio a quella più generale).λyz.f yfio

Credo che il requisito che t non abbia una forma normale della testa debba essere rafforzato per escludere anche le forme normali della testa debole. Se t è in grado di produrre una lambda, allora, poiché in posizione di testa hai sempre un combinatore di punti fissi (a partire da f = id), la lambda dovrebbe essere prodotta da essa, ciò non è possibile.
Andrea Asperti,

@AndreaAsperti hai ragione, ovviamente. Modificherò la domanda.
cody

Risposte:


7

Ci sono molti aspetti di questa bella domanda, quindi strutturerò questa risposta di conseguenza.

1. La risposta alla domanda in scatola è no . Il termine suggerito dal tuo amico è davvero un controesempio.Ω3=(λx.xxx)(λx.xxx)

Nei commenti si era notato in precedenza che si hanno controesempi come "l'orco" , fino a quando la domanda non si limita a termini senza forma normale testa debole. Tali termini sono noti comezero termini. Questi sono termini che non si riducono mai a un lambda, sotto qualsiasi sostituzione.K=YK

Per qualsiasi combinatore a punto fisso (fpc) , YY è un termine cosiddettomuto(AKA "radice attiva"): ogni sua riduzione si riduce ulteriormente ad un redex.YI

non è muto; né è Ω 3 - come si manifesta ispezionando la sua serie di riduttori, che è { Ω 3 ( λ x . x x x ) ( λ x . x x x ) kkKΩ3

{Ω3(λx.xxx)(λx.xxx)kkN}

Piuttosto che dare un argomento preciso sul perché sia muto per tutti gli fpcs Y (in effetti, per qualsiasi combinatore di loop)YIY che può essere laborioso ma si spera abbastanza chiaro - tratterò l'ovvia generalizzazione della tua domanda, limitando anche i termini muti.

I termini muti sono una sottoclasse di zero termini che sono una sottoclasse di termini irrisolvibili. Insieme, queste sono forse le scelte più popolari per il concetto di "insignificante" o "indefinito" nel calcolo lambda, corrispondente rispettivamente ai banali alberi Berarducci, Levy-Longo e B \ "ohm. La grata delle nozioni di termini insignificanti è stato analizzato in dettaglio da Paula Severi e Fer-Jan de Vries. [1] I termini muti costituiscono l'elemento inferiore in questo reticolo, ovvero la nozione più restrittiva di "indefinito".

2. Sia un termine muto e Y sia un combinatore in loop con la proprietà che Y IMY .YI=M

Per prima cosa sosteniamo che, per una nuova variabile , Y z in realtà assomiglia molto alla Y M che hai descritto, ottenuta "spruzzando z intorno" a una riduzione dizYzYMz .M

Di Church-Rosser, e M hanno una reduct comune, M . Prendi una riduzione standard R : Y I s M . Ogni subterma di M corrisponde a un sottoterma unico di Y I Y z [ z : = I ] in questa riduzione. Per ogni sottoterma C [ N ] = M , i fattori R come Y I N 0 ]YIMMR:YIsMMYIYz[z:=I]C[N]=MR , dove la gamba media è una riduzione della testa debole (e la gamba finale è interna). N è "sorvegliato" da una z se questa seconda tappa contrae del redex I P , con I un discendente della sostituzione [ z : =YIC[N0]whC[N1]iC[N]NzIPI .[z:=I]

Ovviamente, deve proteggerne alcuniY sotterfugi di , altrimenti sarebbe anche muto. D'altra parte, bisogna fare attenzione a non proteggere quei sottoterme necessari per la non terminazione, altrimenti non potrebbe sviluppare l'infinito albero B \ "ohm di un combinatore in loop.M

È quindi sufficiente trovare un termine muto in cui ogni sotterfugio, di ogni redazione, è necessario per la non normalizzazione, nel senso che mettere una variabile davanti a quel sotterfugio produce un termine normalizzante.

Considera , dove W = λ w . w I w w . Questo è come Ω , ma ad ogni iterazione, controlliamo che l'occorrenza di W nella posizione dell'argomento non sia "bloccata" da una variabile head, fornendo un'identità. Mettere una z davanti a qualsiasi sottrazione alla fine produrrà una forma normale di forma z P 1P k , dove ogni P i è I , W o una " zΨ=WWW=λw.wIwwΩWzzP1PkPiIWz prinkling" di questi. Quindi Ψ è un controesempio alla domanda generalizzata.

TEOREMA. Non esiste un combinatore di loop tale che Y I = Ψ .YYI=Ψ

PROVA. L'insieme di tutte le riduzioni di è { W W , W I W W , I I I I W W , I I I W W , I I W W , I W W } . Per essere convertibile con Ψ , Y devo ridurre a uno di questi. L'argomento è identico in tutti i casi; per concretezza, supponiamo che Y I I I W WΨ{WW,WIWW,IIIIWW,IIIWW,IIWW,IWW}ΨYIYIIIWW .

Qualsiasi riduzione norma YIsIIWW può essere considerata come

YIwPN4,PwQN3,QwN1N2,thus YIwN1N2N3N4N1I,N2I,N3W,N4W

Facciamo riferimento alla riduzione come R 0 e alle riduzioni a partire da N i come R iYIwN1N2N3N4R0NiRi .

Queste riduzioni possono essere aumentate sulla sostituzione per produrre R z 0 : Y z [z:=I] modo cheR0è la composizioneYI R z 0 [ z : = I ]

R0z:Yzzk(M1M2M3M4)NiMi[z:=I]
R0 .YIR0z[z:=I]Ik(N1N4)wkN1N4

Allo stesso modo, possiamo sollevare ogni come R z i : M iRi:NiN{I,W}

Riz:MiNizRi:NiRiz[z:=I]Niz[z:=I]IN

La seconda tappa di questa fattorizzazione di consiste precisamente nel contrarre quei I -redex che sono creati dalla sostituzione N z i [ z : = I ] . (In particolare, poiché N è una forma normale, così è N z i .)RiINiz[z:=I]NNiz

è quello che abbiamo chiamato un " z -sprinkling di N ", ottenuta ponendo un numero qualsiasi di z s circa qualsiasi numero di sottotermini di N . Poiché N { I , W } , la forma di N z i sarà una delleNizzNzNN{I,W}Niz

zk1(λx.zk2(x))zk1(λw.zk2(zk3(zk5(zk7(w)zk8(λx.zk9(x)))zk6(w))zk4(w)))

Quindi , con N z i una z- dispersione di I per i = 1 , 2 e di W per i = 3 , 4M1M2M3M4N1zN2zN3zN4zNizzIi=1,2Wi=3,4 .

Allo stesso tempo, il termine dovrebbe comunque ridursi per produrre l'infinito fpc Bohm tree z ( z ( z ( ) ) ) . Quindi deve esistere una "spolverata" z k j in una delle N z i che arriva all'infinito spesso alla testa del termine, ma non ne blocca ulteriori riduzioni.N1zN2zN3zN4zz(z(z()))zkjNiz

E ora abbiamo finito. Ispezionando ogni , per i 4 , e ogni possibile valore di k j , per j 2 + 7 i - 1Nizi4kjj2+7i12 , troviamo che non esiste tale spruzzatura.

WIIWWWz=λw.z(wIww)

IIWWzIWWzWWzWzIWzWzz(IIII)WzWzzIWzWz

Ω ammette una tale spolveratura proprio perché un certo subterma può essere "custodito" senza influire sulla non normalizzazione. La variabile si trova in posizione di testa, ma rimangono abbastanza redex sotto.)

zMN=λz.MzNI=M . Questo è stato usato da Statman in [2], per esempio.

YI=MYMzMYMMYMM

YMz={z(YP[x:=Q]z)M(λx.P)QYNzM is not a redex and MwhN

[1] Severi P., de Vries FJ. (2011) Decomposizione della grata di insiemi insignificanti nel calcolo lambda infinito. In: Beklemishev LD, de Queiroz R. (a cura di) Logica, lingua, informazione e calcolo. WoLLIC 2011. Appunti delle lezioni in Informatica, vol 6642.

[2] Richard Statman. Non esiste un combinatore S, K iperrecorrente. Rapporto di ricerca 91–133, Dipartimento di Matematica, Carnegie Mellon University, Pittsburgh, Pennsylvania, 1991.


YY I=Ω3

Buon punto. Ho appena aggiornato la risposta.
Andrew Polonsky,
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.