Gibt es eine typisierte Lambda-Rechnung, in der die entsprechende Logik unter der Curry-Howard-Korrespondenz konsistent ist und in der es typisierbare Lambda-Ausdrücke für jede berechenbare Funktion gibt?
Dies ist zugegebenermaßen eine ungenaue Frage, da eine genaue Definition der "typisierten Lambda-Rechnung" fehlt. Ich frage mich im Grunde, ob es entweder (a) bekannte Beispiele dafür oder (b) bekannte Unmöglichkeitsbeweise für etwas in diesem Bereich gibt.
Edit: @cody gibt eine genaue Version dieser Frage in seiner Antwort unten an: Gibt es ein logisches reines Typensystem (LPTS), das konsistent und vollständig ist (in einem unten definierten Sinne)?
type-theory
lambda-calculus
typed-lambda-calculus
curry-howard
Morgan Thomas
quelle
quelle
Antworten:
In Ordnung, ich werde es kurz ansprechen: Im Allgemeinen gilt für ein gegebenes Typensystem Folgendes:T
Der Beweis erfolgt im Allgemeinen unter der Annahme, dass Sie einen Term vom Typ F a l s e haben , indem Sie die Subjektreduktion verwenden, um eine normale Form zu erhalten, und dann durch Induktion über die Struktur eines solchen Terms fortfahren, um einen Widerspruch zu erhalten.absurd False
Es ist natürlich zu fragen, ob das Gegenteil zutrifft, dh
Das Problem dabei ist, dass es keinen wirklich allgemeinsten Begriff von "Typensystem" gibt und noch weniger Übereinstimmung über die Bedeutung der logischen Konsistenz für solche Systeme besteht. Wir können dies jedoch empirisch überprüfen
Wie ist dies mit der Vollständigkeit von Turing verbunden? Nun, zum einen zeigt Andrejs Argument , dass eine der folgenden Aussagen zutreffen muss , wenn die Typprüfung entscheidend ist :
Dies deutet darauf hin, dass:
Um einen tatsächlichen Satz anstelle eines Vorschlags zu geben, müssen Typensysteme und logische Interpretationen mathematisch präzise formuliert werden.
Nun kommen zwei Bemerkungen in den Sinn:
Es gibt ein unentscheidbares Typsystem, das Schnittpunkttypsystem, das eine logische Interpretation hat und jedes normalisierende Term darstellen kann. Wie Sie bemerken, ist dies nicht ganz das Gleiche wie "Turing Complete", da der Typ einer Gesamtfunktion möglicherweise aktualisiert (genauer definiert) werden muss, bevor er auf das gewünschte Argument angewendet wird. Der Kalkül ist ein "Curry-Stil" -Kalkül und ist gleich STLC + Γ ⊢ Mλ
und
ΓΓM:τ∩σ
Es gibt eine Klasse von Typsystemen, die Pure Type Systems , in denen eine solche Frage präzisiert werden könnte. In diesem Rahmen ist die logische Interpretation jedoch weniger klar. Man könnte versucht sein zu sagen: "Ein PTS ist konsistent, wenn es einen unbewohnten Typ hat". Dies funktioniert jedoch nicht, da Typen möglicherweise in verschiedenen "Universen" leben, in denen einige konsistent sind und andere nicht. Coquand und Herbelin definieren einen Begriff von logischen reinen Typensystemen , in denen die Frage sinnvoll ist und zeigen
Welches beantwortet die Frage in eine Richtung (inkonsistent TC) in diesem Fall. Soweit ich weiß, ist die Frage nach dem allgemeinen LPTS noch offen und ziemlich schwierig.⇒
Bearbeiten: Die Umkehrung des Coquand-Herbelin-Ergebnisses ist nicht so einfach, wie ich dachte! Folgendes habe ich mir bisher ausgedacht.
Ein logisches reines Typensystem ist ein PTS mit (mindestens) den Sortierungen und T y p e , (mindestens) dem Axiom P r o p : T y p e und (mindestens) der Regel ( P r o p , P r o p , P r o p ) , mit der weiteren Voraussetzung, dass es keine Art von P r o p gibt .Prop Type Prop:Type (Prop,Prop,Prop) Prop
Jetzt gehe ich von einer bestimmten Aussage zur Vollständigkeit der Prüfung aus: Repariere ein LPTSL and let Γ be the context
Now Andrej's diagonalization argument shows that there are non-terminatingt of type nat .
Now it seems like we are half-way there! Given a non terminating termΓ⊢loop:nat , we want to replace occurrences of nat by some generic type A and get rid of 0 and S in Γ , and we will have our inconsistency (A is inhabited in the context A:Prop )!
Unfortunately this is where I get stuck, since it is easy to replaceS by the identity, but the 0 is much harder to get rid of. Ideally we would like to use some Kleene recursion theorem, but I haven't figured this out yet.
quelle
Hier ist eine Antwort auf eine Variante von @codys Präzisierung meiner Frage. Es gibt eine konsistente LPTS, die in etwa @ cody's Sinne vollständig ist, wenn wir die Einführung zusätzlicher Axiome und zulassenβ -Reduktionsregeln. Das System ist also streng genommen kein LPTS; es ist nur so etwas wie eins.
Betrachten Sie die Konstruktionsrechnung (oder Ihr Lieblingsmitglied derλ -cube). This is an LPTS, but we're going to add extra stuff which makes it not an LPTS. Choose constant symbols nat,0,S , and add the axioms:
Index the Turing machine programs by natural numbers, and for each natural numbere , choose a constant symbol fe , add the axiom fe:nat→nat , and for all e,x∈N , add the β -reduction rule
where as usualΦe(x) is the output of the e th Turing machine program on x . If Φe(x) diverges then this rule doesn't do anything. Note that by adding these axioms and rules the system's theorems remain recursively enumerable, though its set of β -reduction rules is no longer decidable, but merely recursively enumerable. I believe we could easily keep the set of β -reduction rules decidable by spelling out explicitly the details of a model of computation in the syntax and rules of the system.
Now, this theory is clearly Turing complete in roughly @cody's sense, just by brute force; but the claim is that it's also consistent. Let's construct a model of it.
LetU1∈U2∈U3 be three sets, such that:
The existence of such sets follows, for example, from ZFC plus the axiom that every cardinal is bounded by an inaccessible cardinal; we can take each setUi to be a Grothendieck universe.
We define an "interpretation" to be a mappingv from the set of variable names to elements of U2 . Given an interpretation v , we can define an interpretation Iv of terms of the system in the evident way:
We have that for all termsA , Iv(A)∈U3 . Now we say that an interpretation v satisfies A:B , written v⊨A:B , if Iv(A)∈Iv(B) . We say that Γ⊨A:B if for all interpretations v , if v⊨x:C for all (x:C)∈Γ , then v⊨A:B .
It is straightforward to check that ifΓ⊢A:B , then Γ⊨A:B , so this is a model of the system. But, for any variables x,y , it is not the case that y:∗⊨x:y , because we can interpret y by ∅ , so the system is consistent.
Now, this is an answer to my original question, in the sense that this is something that it's reasonable to call a typed lambda calulus, which is consistent and Turing complete. However, it's not an answer to @cody's question, because this is not an LPTS, because of the addition of extra axioms andβ -reduction rules. I imagine that the answer to @cody's question is much harder.
quelle