Es ist eine Illusion, dass die Berechnungsregeln die Objekte, über die sie sprechen, "definieren" oder "konstruieren". Sie haben richtig festgestellt, dass die Gleichung für sie nicht "definiert", aber nicht beachtet, dass dies auch in anderen Fällen der Fall ist. Betrachten wir das Induktionsprinzip für den Einheitentyp , der besonders offensichtlich "bestimmt" zu sein scheint. Gemäß Abschnitt 1.5 des HoTT-Buches haben wir
mit die Gleichung
Ist dies "definieren" oder "konstruieren" in dem Sinne, dass es keinen Zweifel darüber lässt, was "tut"? Zum Beispiel gesetzt 1 i n d 1 : Π C : 1 → T y p e C(⋆)→ Π x : 1 P(x) i n d 1 (C,c,⋆)=c. i n d 1 i n d 1 C(x)= Nind=A1
ind1:∏C:1→TypeC(⋆)→∏x:1P(x)
ind1(C,c,⋆)=c.
ind1ind1C(x)=N und , und überlegen Sie, was wir zu
für einen gegebenen Ausdruck vom Typ sagen könnten
. Ihr erster Gedanke könnte sein, dass wir dies auf reduzieren können, weil " das einzige Element von ". Um genau zu sein, gilt die Gleichung für nur, wenn wir , was zum Beispiel unmöglich ist, wenn eine Variable ist. Wir können versuchen, daraus herauszukommen und sagen, dass wir nur an Berechnungen mit geschlossenen Begriffen interessiert sind, daher sollte geschlossen sein.
i n d 1 ( C , 42 , e ) e 1 42 ⋆ 1 i n d 1 e ≡ ⋆ e ea=42ind1(C,42,e)
e142⋆1ind1e≡⋆ee
Ist es nicht so, dass jeder geschlossene Term vom Typ urteilsmäßig gleich ? Das hängt eigentlich von fiesen Details und komplizierten Normalisierungsnachweisen ab. Im Fall von HoTT lautet die Antwort "nein", da Instanzen des Univalence Axiom enthalten könnte und es nicht klar ist, was dagegen zu tun ist (dies ist das offene Problem in HoTT).1 ⋆ ee1⋆e
Wir können die Probleme mit univalance umgehen , indem sie eine Version von Typ - Theorie unter Berücksichtigung der tut so gute Eigenschaften haben , dass jede geschlossene Laufzeit von Typ ist zu judgmentally gleich . In diesem Fall kann man sagen, dass wir wissen , wie man mit berechnet , aber:⋆ i n d 11⋆ind1
Dasselbe hält für den Identitätstyp, weil jede geschlossene Laufzeit eines Identitätstyp judgmentally gleich sein wird , bis zu einem gewissen , und so dann die Gleichung für wird sagen uns wie man berechnet.i n d = Arefl(a)ind=A
Nur weil wir wissen, wie man mit geschlossenen Begriffen eines Typs rechnet, heißt das nicht, dass wir tatsächlich etwas definiert haben, weil ein Typ mehr als seine geschlossenen Begriffe enthält , wie ich einmal zu erklären versucht habe.
Geben Sie beispielsweise Theorie Martin-Löf (ohne die Identität Typen) kann in einer solchen Art und Weise interpretiert domänen theoretisch sein , dass enthält zwei Elemente und , wo entspricht und an nicht-Terminierung. kann nicht benannt werden , da es in der Typentheorie keine Möglichkeit gibt, einen nicht terminierenden Ausdruck aufzuschreiben . Folglich ist die Gleichung für hat nicht uns sagen , wie auf berechnen (die beide offensichtliche Wahl „eifrig“ und „träge“ zu sein).⊥ ⊥ ⊤ ⋆ ⊥ ⊥ i n d 1 ⊥1⊥⊤⊤⋆⊥⊥ind1⊥
In Bezug auf die Softwareentwicklung würde ich sagen, dass wir eine Verwechslung zwischen Spezifikation und Implementierung haben . Die HoTT-Axiome für die Identitätstypen sind eine Spezifikation . Die Gleichung sagt uns nicht, wie man mit berechnet oder wie man konstruiert , aber stattdessen, dass "implementiert" ist, benötigen wir, dass es die Gleichung erfüllt. Es ist eine andere Frage, ob ein solches auf konstruktive Weise erhalten werden kann.ind=C(C,c,x,x,refl(x))≡c(x)ind=Cind=Cind=C
Schließlich bin ich ein bisschen müde, wie Sie das Wort "konstruktiv" verwenden. Es sieht so aus, als ob Sie denken, dass "konstruktiv" dasselbe ist wie "definiert". Nach dieser Interpretation ist das Halting-Orakel konstruktiv, da sein Verhalten durch die Anforderung definiert wird, die wir ihm auferlegen (nämlich, dass es 1 oder 0 ausgibt, je nachdem, ob die gegebene Maschine anhält). Es ist durchaus möglich, Objekte zu beschreiben, die nur in einer nicht konstruktiven Umgebung existieren. Umgekehrt ist es durchaus möglich, konstruktiv über Eigenschaften und andere Dinge zu sprechen, die eigentlich nicht berechnet werden können. Hier ist eine: Die Beziehung definiert durch
H⊆N×{0,1}
H(n,d)⟺(d=1⇒n-th machine halts)∧(d=0⇒n-th machine diverges)
ist konstruktiv, dh aus konstruktiver Sicht ist an dieser Definition nichts auszusetzen. Es kommt einfach so vor, dass man konstruktiv nicht nachweisen kann, dass eine totale Beziehung ist, und seine charakteristische Abbildung berücksichtigt , daher können wir seine Werte nicht "berechnen".
HχH:N×{0,1}→Propbool
Nachtrag: Der Titel Ihrer Frage lautet "Ist die Pfadinduktion konstruktiv?" Nachdem wir den Unterschied zwischen "konstruktiv" und "definiert" geklärt haben, können wir die Frage beantworten. Ja, die Pfadinduktion ist in bestimmten Fällen als konstruktiv bekannt:
Wenn wir uns auf die Typentheorie ohne Univalenz beschränken, damit wir eine starke Normalisierung zeigen können, dann ist die Pfadinduktion und alles andere konstruktiv, da es Algorithmen gibt, die das Normalisierungsverfahren durchführen.
Es gibt Realisierbarkeitsmodelle der Typentheorie, die erklären, wie jeder geschlossene Term in der Typentheorie einer Turingmaschine entspricht. Diese Modelle erfüllen jedoch Streichers Axiom K, das die Univalenz ausschließt.
Es gibt eine Übersetzung der Typentheorie (wieder ohne Univalenz) in die konstruktive Mengenlehre CZF. Dies bestätigt erneut Streichers Axiom K.
Innerhalb von Realisierbarkeitsmodellen gibt es ein Gruppenmodell, mit dem wir die Typentheorie ohne Streichers K interpretieren können . Dies ist eine Vorarbeit von Steve Awodey und mir.
Wir müssen wirklich den konstruktiven Status der Univalenz klären.