Wie können nicht terminierende Terme in Festkomma-Kombinatoren umgewandelt werden?


14

Ich habe über diese Fragen nachgedacht:

Gibt es eine typisierte Lambda-Rechnung, die konsistent und vollständig ist?

/cs/65003/if-%CE%BB-xxx-hat-a-type-then-is-the-type-system-inkonsistent

und es gibt bereits einige schwer zu beantwortende Fragen in der untypisierten Einstellung! Insbesondere bin ich gespannt, ob wir Turing-Vollständigkeit auf folgende Weise von der Nichtkündigung wiederherstellen können:

Frage: a (rein) Da -term mit keiner schwachen Kopf Normalform, tut es immer existiert einen festen Punkt combinator so dass λY t Y t ( λ x . x ) = ttYt

Yt (λx.x)=t

Gleichheit wird alle modulo .βη

Ich vermute tatsächlich, dass diese Version der Frage falsch ist , so dass man die Frage auf Schleifen-Kombinatoren reduzieren kann , wobei ein Schleifen-Kombinator als ein Term definiert ist, der für jedes Dabei muss wieder ein Schleifenkombinator sein. Dies reicht natürlich aus, um rekursive Funktionen wie gewohnt zu definieren.Yf

Y f=f (Y f)
Y

Im Allgemeinen bin ich daran interessiert, "natürliche" Wege zu finden, um von einem nicht terminierenden zu einem Schleifen-Kombinator zu gelangen, selbst wenn die obige Gleichung nicht erfüllt ist.t

Ich bin auch in schwächeren Versionen der oben genannten Frage interessiert, zum Beispiel eine Anwendung sein kann genommen mit jedem in Normalform (obwohl ich nicht sicher bin , dass wirklich hilft).ttt1 t2tnti


Bisher: Der natürliche Ansatz besteht darin, und "Pfeffer" -Anwendungen von durchgehend zu nehmen, ztf

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

wird das übliche

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

Die Idee ist, den Kopf von auf eine Lambda-Anwendung zu reduzieren und ersetze es durch , aber der nächste Schritt ist unklar (und ich bin skeptisch, dass dies zu irgendetwas führen kann).λ x . t ' λ x . f t 'tλx.tλx.f t

Ich bin nicht sicher, ob ich genug über Böhm-Bäume verstehe, um zu sehen, ob sie etwas zu sagen haben, aber ich bezweifle es sehr, da Böhm-Baum einfach , was nichts mit dem für tun hat : an unendlicher Baum der Abstraktionen.Y ΩΩYΩ


Edit : Ein Freund von mir bemerkte, dass dieser naive Ansatz nicht mit dem Begriff funktioniert: Der naive Ansatz würde Dies ist jedoch kein Festkomma-Kombinator! Dies kann behoben werden, indem die zweite Anwendung von durch , aber dann gibt nicht den ursprünglichen Ausdruck. Es ist jedoch nicht klar, ob dieser Begriff ein Gegenbeispiel zur ursprünglichen Frage ist (und es ist sicherlich kein Gegenbeispiel zur allgemeineren Frage).

(λx.x x x)(λx.x x x)
(λx.f (x x x))(λx.f (x x x))
fλyz.f yfI

Ich bin der Meinung, dass die Forderung, dass t keine normale Kopfform hat, verstärkt werden sollte, um auch schwache normale Kopfformen auszuschließen. Wenn t ein Lambda erzeugen kann, dann sollte das Lambda von ihm erzeugt werden, da Sie in der Kopfposition immer einen Fixpunktkombinator haben (beginnend mit f = id), was nicht möglich ist.
Andrea Asperti

@ AndreaAsperti Sie sind natürlich richtig. Ich werde die Frage ändern.
Cody

Antworten:


7

Diese sehr schöne Frage hat mehrere Aspekte, daher werde ich diese Antwort entsprechend strukturieren.

1. Die Antwort auf die Boxed-Frage lautet Nein . Der Begriff von Ihrem Freund vorgeschlagen ist in der Tat ein Gegenbeispiel .Ω3=(λx.xxx)(λx.xxx)

In den Kommentaren wurde bereits bemerkt, dass man Gegenbeispiele wie den "Oger" , bis sich die Frage auf Begriffe ohne schwache Kopfnormalform beschränkt. Solche Terme werden als Nullterme bezeichnet . Dies sind Begriffe, die sich unter keinen Umständen zu einem Lambda reduzieren.K=YK

Für jeden Festkomma-Kombinator (fpc) ist Y I ein sogenannter Mute -Term (AKA "root-active"): Jede Reduktion davon reduziert sich weiter zu einem Redex.YYI

ist nicht stumm; weder Ω 3 - wie manifest ist durch ihren Satz von reducts Inspizieren, was { Ω 3 ( λ x . x x x ) ( λ x . x x x ) k | k N }KΩ3

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

Anstatt ein genaues Argument dafür anzugeben, warum für alle fpcs Y stummgeschaltet ist (in der Tat für jeden Schleifen-Kombinator) - was mühsam und doch hoffentlich klar genug sein kann -, werde ich die offensichtliche Verallgemeinerung Ihrer Frage behandeln und mich auch auf stumme Begriffe beschränken.YIY

Stumme Begriffe sind eine Unterklasse von Null-Begriffen, die eine Unterklasse von unlösbaren Begriffen sind. Zusammen sind dies möglicherweise die beliebtesten Optionen für den Begriff "bedeutungslos" oder "undefiniert" im Lambda-Kalkül, entsprechend den trivialen Berarducci-Bäumen, Levy-Longo-Bäumen und B-Ohm-Bäumen. Das Gitter von Begriffen mit bedeutungslosen Begriffen wurde von Paula Severi und Fer-Jan de Vries eingehend analysiert. [1] Die stummen Terme bilden das unterste Element in diesem Gitter, dh den restriktivsten Begriff von "undefiniert".

2. Wäre ein stummer Begriff sein, und Y ein Looping combinator mit der Eigenschaft , dass seine Y I = M .MY.YI=M

Zuerst haben wir argumentieren , dass, für eine neue Variable , Y z sieht eigentlich viel wie der Y M Sie beschrieben, erhalten durch „Beregnung z um“ einige reduct von M .zYzYMzM

Nach Church-Rosser haben und M ein gemeinsames Redukt, M ' . Nehmen Sie eine Standardreduktion R : Y I s M . Jeder Unterpunkt von M ' entspricht einem eindeutigen Unterpunkt von Y I Y z [ z : = I ] unter dieser Reduktion. Für jede Teilterm C [ N ] = M ' , R Faktoren wie Y I C [YIMMR:YIsMMYIYz[z:=I]C[N]=MR , wobei das mittlere Bein eine schwache Kopfverkleinerung ist (und das letzte Bein intern ist). N wird von einem z "bewacht",wenn dieses Rückspiel einen Redex I P kontrahiert, wobei I ein Nachkomme der Substitution ist [ z : = I ] .YIC[N0]whC[N1]iC[N]NzIPI[z:=I]

Offensichtlich muss einige Subtermen von M schützen , sonst wäre es auch stumm. Auf der anderen Seite muss darauf geachtet werden, die für die Nicht-Terminierung erforderlichen Subtermen nicht zu schützen, da sonst der unendliche B "Ohm-Baum eines Schleifen-Kombinators nicht entstehen kann.YM

Es genügt also, einen stummen Ausdruck zu finden, bei dem jeder Teilbegriff jedes Redukts für die Nichtnormalisierung benötigt wird, in dem Sinne, dass das Setzen einer Variablen vor diesen Teilbegriff einen normalisierenden Ausdruck ergibt.

Betrachte , wobei W = λ w . w I w w . Dies ist wie Ω , aber wir überprüfen bei jeder Iteration, dass das Auftreten von W in der Argumentposition nicht durch eine Kopfvariable "blockiert" wird, indem wir ihr eine Identität zuweisen. Wenn Sie ein z vor ein Subterm stellen, erhalten Sie schließlich eine normale Form von z P 1P k , wobei jedes P i entweder I , W oder eine " z- Streuung" von diesen ist. Also ΨΨ=WWW=λw.wichwwΩWzzP1PkPichichWzΨ ist ein Gegenbeispiel zur verallgemeinerten Frage.

SATZ. Es gibt kein Looping combinator , so dass Y I = Ψ .Y.Y.ich=Ψ

BEWEIS. Die Menge aller reducts von ist { W W , W I W W , I I I I W W , I I I W W , I I W W , I W W } . Um mit umwandelbar zu sein Ψ , Y I muss eine davon reduzieren. Das Argument ist in allen Fällen identisch; nehme an, für Konkretion, dass Y I I I W W .Ψ{WW,WichWW,ichichichichWW,ichichichWW,ichichWW,ichWW}ΨY.ichY.ichichichWW

Jede Standardreduktion kann als Y I w P N 4 , P w Q N 3 , Q w N 1 N 2 , also  Y I w N 1 N 2 N 3 N berücksichtigt werden 4 N 1I , N 2I , N 3Y.ichsichichWW

Y.ichwPN4,PwQ.N3,Q.wN1N2,somit Y.ichwN1N2N3N4N1ich,N2ich,N3W,N4W

Nennen wir die Reduktion als R 0 und die Reduktionen ausgehend von N i als R i .Y.ichwN1N2N3N4R0NichRich

Diese Reduktionen können über die Substitution aufgehoben werden , um R z 0 zu ergeben : Y z z k ( M 1 M 2 M 3 M 4 ) N iM i [ z : = I ], so dass R 0 ist die Zusammensetzung Y I R z 0 [ z : = I ] I[z: =ich]

R0z:Y.zzk(M1M2M3M4)NichMich[z: =ich]
R0 .Y.ichR0z[z: =ich]ichk(N1N4)wkN1N4

Rich:NichN{ich,W}

Richz:MichNichzRich:NichRichz[z: =ich]Nichz[z: =ich]ichN

RichichNichz[z: =ich]NNichz

NichzzNzNN{ich,W}Nichz

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

M1M2M3M4N1zN2zN3zN4zNichzzichich=1,2Wi=3,4

N1zN2zN3zN4zz(z(z()))zkjNichz das kommt unendlich oft an die spitze des begriffs, blockiert aber nicht die weitere reduktion des begriffs.

Und jetzt sind wir fertig. Durch die Inspektion von jedemNichz, zum ich4und jeder mögliche Wert von kj, zum j2+7ich-12Wir stellen fest, dass es keine solche Besprengung gibt.

Zum Beispiel, wenn wir den letzten ändern W im ichichWW wie Wz=λw.z(wichww), dann bekommen wir die Normalisierungsreduktion

ichichWWzichWWzWWzWzichWzWzz(ichichichich)WzWzzichWzWz

(Beachte das Ωlässt ein solches Bestreuen gerade deshalb zu, weil ein gewisser Teil davon "bewacht" werden kann, ohne die Nichtnormalisierung zu beeinträchtigen. Die Variable befindet sich in Kopfposition, aber es verbleiben genügend Redexes darunter.)

3. Die "Beregnungstransformation" hat andere Verwendungen. Zum Beispiel durch Platzierenz vor jedem Redex in Merhalten wir eine Laufzeit N=λz.Mz Das ist eine normale Form, erfüllt aber die Gleichung Nich=M. Dies wurde zum Beispiel von Statman in [2] verwendet.

4. Alternativ, wenn Sie die Anforderung lockern, dass Y.ich=Mfinden Sie verschiedene (schwache) fpcs Y. welche die Reduktion von simulieren M, während eine Kette von ausgegeben wird zs auf dem Weg. Ich bin mir nicht sicher, ob dies Ihre allgemeine Frage beantworten würde, aber es gibt sicherlich eine Reihe von (berechenbaren) TransformationenMY.M welche Ausgangsschleifen-Kombinatoren für jede Stummschaltung M, so dass der Reduktionsgraph von Y.M ist strukturell ähnlich dem von M. Zum Beispiel kann man schreiben

Y.Mz={z(Y.P[x: =Q.]z)M(λx.P)Q.Y.NzM ist kein Redex und MwhN

[1] Severi P., de Vries FJ. (2011) Zerlegen des Gitters bedeutungsloser Mengen im Infinitary Lambda Calculus. In: Beklemishev LD, de Queiroz R. (Hrsg.) Logik, Sprache, Information und Berechnung. WoLLIC 2011. Lecture Notes in Computer Science, Bd. 6642.

[2] Richard Statman. Es gibt keinen überstromigen S, K-Kombinator. Forschungsbericht 91–133, Fakultät für Mathematik, Carnegie Mellon University, Pittsburgh, PA, 1991.


Diese Antwort ist großartig und ich werde sie wahrscheinlich akzeptieren. Ich bin mir jedoch nicht sicher, was die eigentlichen Sätze sind, die Sie beschreiben, außer "es gibt keinen Schleifen-KombinatorY. so dass Y. ich=Ω3Ich denke, die getrennten Aussagen der Theoreme werden es viel einfacher machen, den Argumenten zu folgen.
Cody

Guter Punkt. Ich habe gerade die Antwort aktualisiert.
Andrew Polonsky
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.