Ich lese das HoTT-Buch und habe es schwer mit der Pfadeinführung.
Wenn ich mir den Typ in Abschnitt 1.12.1 anschaue : ich habe kein Problem zu verstehen, was das bedeutet (ich habe nur den Typ aus dem Speicher geschrieben, um das zu überprüfen).
Ich habe Probleme mit der nächsten Anweisung: der
erste Eindruck war , dass dieser letzte Ausdruck nicht definieren , die resultierende Funktion
aber gerade erklärt seine Eigentum .
Dies steht im Gegensatz zu früheren Beispielen der Induktionsprinzipien , oder - dort sind Definitionsgleichungen für diese Elemente - wir tatsächlich wissen , wie die sich ergebende Funktion, die Räumlichkeiten gegeben zu konstruieren. Das stimmt mit der "Konstruktivität" der Typentheorie überein, auf die im gesamten Kapitel hingewiesen wird.
Als ich zurück zu , war ich misstrauisch darüber, dass (wie es aussieht) es nicht definiert ist. Die Aussage, dass das Element nur existiert, schien mit dem Rest des Kapitels nicht übereinzustimmen . In der Tat scheint der Abschnitt 1.12.1 zu betonen, dass mein Eindruck falsch ist und wir ihn tatsächlich definiert haben
... die Funktion definiert durch Pfadinduktion
von , die darüber hinaus
erfüllt ...
Das verwirrt mich zutiefst, aber ich habe das Gefühl, dass dieser Punkt für alle weiteren Entwicklungen sehr wichtig ist. Also, mit welcher der beiden Lesungen für soll ich gehen? Oder fehlt mir wahrscheinlich eine wichtige Subtilität und die Antwort lautet "beides"?
Antworten:
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=A 1
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 ⋆ ee 1 ⋆ 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=C ind=C ind=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 durchH⊆N×{0,1}
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.
quelle
Ich bin keine HoTT-Person, aber ich werfe meine zwei Cent ein.
Angenommen, wir möchten eine Funktion Wie würden wir das tun? Nehmen wir an, wir bekommen ein und einen Beweis für ihre Gleichheit . Da ich nichts über den beliebigen Typ weiß, weiß ich nichts über die Struktur von . Ich weiß jedoch etwas über den spezifischen Gleichheitstyp: Er hat einen einzelnen Konstruktor, Daher für ein , aber dies würde erzwingen . Wenn wir also ein Element von für ein beliebigesx , y : A p : x = A y A x , y r e f l ein : ein = A a , für jedes a : A p ≡ r e f l
Das Entfernen der Indizes führt zur allgemeinen induktiven Definition.
Ich hoffe, das hilft!
PS. Ich bin kein HoTT-Typ, also gehe ich von Axiom K aus. Genauer gesagt gehe ich davon aus, dass ein Element vom Typ das Ergebnis wiederholter Anwendungen des Konstruktors von . Soviel ich weiß, wirft HoTT, wahrscheinlich ab Kapitel 2, diesen Gedanken weg ... und das ergibt für mich absolut keinen Sinn.E Ee E E
quelle
Ich bin ein Amateur- Typ von HoTT, also werde ich versuchen, Moses 'bereits großartige Antwort zu ergänzen. Lassen Sie mich als Beispiel den Typ . Das von Martin-Löf skizzierte Grundprinzip der konstruktiven Typentheorie ist, dass * jedes Element von als im Bild des Konstruktors beschrieben wird: dieser Philosophie erlaubt uns zu definieren Eliminierung : eine Funktion aufzubauen out der genügt es , seine Wirkung auf dem beschreiben Bild .A × B p a i r : A → B → A × B f A × B p a i rA×B A×B
Aber da ein Konstruktor ist (und insbesondere injektiv), bedeutet dies genau, dass es ausreicht, um eine Funktion zu erstellen , die Aktion auf ein Elementpaar in und , also reicht aus, um ein solches zu beschreiben . Zusammenfassend kann gesagt werden, dass es eine kanonische Möglichkeit gibt, Funktionen außerhalb von zu definieren , und dies kann in den Typ eingekapselt werden, aber genau dies ist der Fall die Art von .pair f:A×B→C A B
Dies ist jedoch nur die halbe Wahrheit: Was passiert, wenn dieses neu konstruierte auf ein gegebenes angewendet wird ? Nun, dann sollte mit seiner Definitionsfunktion übereinstimmen , dh dh und dies sollte definitiv (oder rechnerisch ) gelten, was bedeutet, dass die beiden in allen Situationen vollständig austauschbar sein sollten (was sich stark unterscheidet von das in HoTT).f pair(a,b) f f′
Sie sehen also, dass die Definition eines Eliminators für induktiven Typ mit gegebenen Konstruktoren in zwei Schritten erfolgt:
ein Existenzprinzip , das den Typ von .ind
ein Kohärenzprinzip, das das Rechenverhalten von . In der Kategorietheorie würde dies in gewissem Sinne der Eindeutigkeit des Eliminators entsprechen .ind
Lassen Sie mich argumentieren, dass dies auch für den Typ . Wir wollen mit und ein Element von (wir vergessen die Abhängigkeiten zur Vereinfachung). Dazu müssen wir annehmen, dass mit einem Konstruktor für den Typ , der für einige nur . Das heißt, um eine Funktion zu geben, genügt es, eine Funktion die für (wieder die Abhängigkeiten in vergessen ).=A x,y:A p:x=y C p x=y refl(z) z
Was sagt nun das Kohärenzprinzip aus? Nun einfach, wenn auf einen bekannten Konstruktor angewendet wird, sollte es sich wie verhalten , wasf f′
Aber genau das haben Sie oben! Das gleiche Prinzip, das uns die Existenz und Kohärenz für den Eliminator von gibt uns die Existenz und Kohärenz für den Eliminator von .A×B =A
quelle