Frage

Ich habe gehört, dass es in LCF-basierten Theorem-Begriffe einen Mechanismus gibt, der nur einige Funktionen ermöglicht, um Werte des Typs THEOREM zu erstellen.Ich glaube, dass diese auf abstrakten Datentypen basieren.

Könnte jemand in Pseudo-Code skizzieren? Wie funktioniert das?(falls das obige korrekt ist)

War es hilfreich?

Lösung

Hier sind einige Gedanken und Code aus dem Kernel (Datei thm.ml in Isabelle / rein) von Isabelle:

generasacodicetagpre.

Auch hier ist ein Zitat von Paulson-Buch auf ml. Über abstrakte Datentypen, sagt er:

Eine modulare Struktur macht ein Programm leichter zu verstehen. Besser noch das Module sollten als austauschbare Teile dienen: Ersetzen eines Moduls von einem Eine verbesserte Version sollte nicht erforderlich sein, um den Rest der zu ändern. Programm. Standard MLs Abstract-Typen und Funktoren können uns auch dazu beitragen, dieses Ziel zu erfüllen. Ein Modul kann seine internen Details offenbaren. Wenn das Modul ersetzt wird, andere Teile des Programms, das von solchen Details abhängt, fehlschlagen. Ml liefert mehrere. Möglichkeiten, einen abstrakten Typ und damit zusammenhängende Vorgänge zu erklären, während Sie den Typ verbergen Darstellung.

Sie können also einen abstrakten Datentyp nicht instanziieren, den Sie verwenden können (seine Felder + Funktionen). Die Angelegenheit, wie Sie diese Funktion umsetzen, ist sehr abhängig von der Sprache. Wenn Sie es im Lambda-Kalkül machen möchten, sollte es in Benjamin Pierce's TAPL-Buch auf den späteren Kapiteln so etwas geben.

Eine schöne Referenz dafür ist auch hier .

Andere Tipps

Wenn ich mich richtig erinnere, war dies Kapitel 5 oder 6 von John Harrison's Handbuch von praktischer Logik und automatisierten Argumentation .

jon sterling schrieb einige Notizen Für eine Rezitation ein oder zwei Jahre zurück, insbesondere für einen LCF-Prüfer mit sequentem Kalkül.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit cs.stackexchange
scroll top