Ich bin daran interessiert, einen wirklich soliden Einblick in das abhängige Tippen zu bekommen. Ich habe den größten Teil von TaPL gelesen und in ATTaPL 'Abhängige Typen' gelesen (wenn nicht vollständig aufgenommen) . Ich habe auch eine Reihe von Artikeln über abhängiges Tippen gelesen und überflogen.
Viele typentheoretische Diskussionen scheinen sich auf das Hinzufügen inkrementeller Merkmale zu früheren Typsystemen zu konzentrieren, nicht auf "Was ist die nächste große Verallgemeinerung von Typsystem X?". Abhängige Typen scheinen die nächste große Verallgemeinerung von System F zu sein, aber ich muss noch die intuitive, kanonisch abhängig geschriebene Sprache finden. Die vielen Verweise auf die Berechnung (induktiver) Konstruktionen lassen mich denken, dass CoC diese Sprache ist, aber die Erklärungen der Sprache, die ich gesehen habe, erscheinen mir nicht sehr klar oder intuitiv.
Ich erwarte / vermute, dass eine solche Sprache Features wie: (und lass es mich wissen, wenn etwas als verwirrt oder unrealistisch herausspringt)
- Verallgemeinerte Abstraktion (kann Funktionen von einer beliebigen Domäne in der Typhierarchie zu einer anderen haben, Art -> Term, Term -> Typ '' 'usw.)
- Hat eine unendliche Hierarchie der Typisierung (Begriffe: Typen: Typen ': Typen' ': ...)
- Eine minimale Anzahl von Grundelementen. Ich stelle mir vor, dass die Sprache für jedes Level nur ein einziges Element behauptet. Zum Beispiel könnte es behaupten, dass ((): Unit: Type: Type ': ...). Andere Elemente werden aus diesen Elementen erstellt.
- Summen- und Produkttypen sind ableitbar.
Ich bin auch auf der Suche nach einer Erklärung dieser Sprache, die im Idealfall folgendes besprechen würde:
- Die Beziehung zwischen Abstraktion und Quantifizierung in dieser Sprache. Wenn sie nicht vereint sind, erklären Sie, warum sie nicht vereint sind.
- Die unendliche Typhierarchie explizit
Ich stelle diese Frage, weil ich Theorie der abhängigen Typen lernen möchte, aber auch, weil ich einen Leitfaden zusammenstellen möchte, der unter der Annahme eines kleinen CS-Hintergrunds den Gebrauch von und das Verstehen von Proofassistenten und abhängig getippten Sprachen lehrt.