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 ) = 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.
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.
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).
Bisher: Der natürliche Ansatz besteht darin, und "Pfeffer" -Anwendungen von durchgehend zu nehmen, z
wird das übliche
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 '
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 Ω
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).
Antworten:
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.Y YI
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 −
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.YI Y − −
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 .M Y 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 .z Yz YM z M
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 [YI M M′ R:YI↠sM′ M′ YI≡Yz[z:=I] C[N]=M′ R , 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 ] .YI↠C[N0]↠whC[N1]↠iC[N] N z IP I [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.Y M
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 1 ⋯ P k , wobei jedes P i entweder I , W oder eine " z- Streuung" von diesen ist. Also ΨΨ=WW W= λ w . w ichw w Ω W z zP1⋯ Pk Pich ich W z Ψ 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, IichichichWW, IichichWW, IichWW, IWW} Ψ Y.ich Y.ich↠ ichichWW
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 1 ≤ I , N 2 ≤ I , N 3Y.ich↠sichichWW
Nennen wir die Reduktion als R 0 und die Reduktionen ausgehend von N i als R i .Y.ich↠wN1N2N3N4 R0 Nich Rich
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 i ≤ M i [ z : = I ], so dass R 0 ist die Zusammensetzung Y I R z 0 [ z : = I ] ↠ I[ z: = Ich]
Und jetzt sind wir fertig. Durch die Inspektion von jedemNzich , zum i ≤ 4 und jeder mögliche Wert von kj , zum j ≤ 2 + 7 ≤ i - 12⌋ Wir stellen fest, dass es keine solche Besprengung gibt.
Zum Beispiel, wenn wir den letzten ändernW im ichichWW wie Wz= λ w . z( W Iw w ) , dann bekommen wir die Normalisierungsreduktion
(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 M erhalten 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, dassY.ich= M finden Sie verschiedene (schwache) fpcs Y. welche die Reduktion von simulieren M , während eine Kette von ausgegeben wird z s auf dem Weg. Ich bin mir nicht sicher, ob dies Ihre allgemeine Frage beantworten würde, aber es gibt sicherlich eine Reihe von (berechenbaren) TransformationenM↦ YM 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
[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.
quelle