Ich kämpfe darum, den Zweck der universellen und existenziellen Quantifizierung von Typen zu verstehen. Ich spiele damit herum, eine Spielzeugsprache zu schreiben, die auf der Berechnung von Konstruktionen basiert . Ich habe über Morte und Henk gelesen , um ein besseres Verständnis zu erlangen.
Ich verstehe nicht, warum der CoC sowohl Lambda als auch Forall-Abstraktion hat.
( ∀ x : A . B )
Es scheint mir, dass Lambda für alle in einem System subsumiert, in dem Typen manuell übergeben werden. Mit anderen Worten, dass das Folgende
Könnte durch ersetzt werden
Wenn es zuerst auf den verwendeten Typ angewendet wurde.
Was vermisse ich? Welche Artikel, Blogs oder Artikel gibt es zu lesen, die mir helfen könnten?
Vielen Dank.
Denken Sie daran, dass existenzielle und universelle Typen sehr unterschiedlich sind. Es ist konstruktive Logik, keine klassische Logik, und in der konstruktiven Logik sind und nicht so verwandt wie in der klassischen Logik.∀ ∃
A ∨ B A B A B ∃ x : A . B ( x ) B ( x ) x : A B ( x ) x : A B x : A ∃ x : A . B B x : A A × B.∃x:A.B(x) ist die abhängige Version der (konstruktiven) Disjunktion. Sie können sich die konstruktive Disjunktion von zwei Typen und als die disjunkte Vereinigung von und .
ist die disjunkte Vereinigung einer Sammlung von Typen
die durch indiziert sind . Die Tatsache, dass der Van vom Typ abhängig vom Wert von variiert,
macht ihn zu einem abhängigen Typ. Vergleichen Sie mit dem Fall, in dem nicht von abhängt : . Wir nehmen eine Kopie davonA∨B A B A B ∃x:A.B(x) B(x) x:A B(x) x:A B x:A ∃x:A.B B für jedes . Dies ist isomorph zu .x:A A×B
Jetzt können Sie sich fragen, warum wir abhängige Produkt- und Summentypen benötigen . Weil sie uns mehr Ausdruckskraft geben. Jetzt können wir die Typen vollständig ignorieren und haben eine untypisierte Typentheorie / funktionale Programmierung. Dies beseitigt jedoch in erster Linie die Vorteile von Typen, z. B. werden Sie nicht wissen, ob alle Programme immer beendet werden (starke Normalisierung). Siehe Lambda-Würfel und abhängiger Typ . Ich denke, ein guter Weg, um abhängige Typen gut zu verstehen, besteht darin, die Regeln für die Einführung und Eliminierung der abhängigen Typen in Martin-Lofs Typentheorie zu betrachten .
Der Hauptpunkt abhängiger Typen ist: Wir möchten aus verschiedenen Gründen (z. B. Vermeidung von Fehlern, automatischer Kündigungsnachweis usw.) in einer gut typisierten Theorie bleiben. Wir wollen nicht zu so etwas wie untypisiertem Lambda-Kalkül gehen, wo wir das Ausdrücken so machen können, wie Sie es angegeben haben, und viel mächtigeres Zeug. Wir können sagen, dass abhängige Typen erfunden wurden, um mehr Dinge auszudrücken und gleichzeitig in einer schönen Typentheorie zu bleiben.
quelle