Eine der praktischsten Konsequenzen der "Curry-Howard-Lambek" -Korrespondenz ist, dass die Syntax vieler Lambda-Calucli / Logiken verwendet werden kann, um Konstruktionen in einer ausreichend strukturierten Kategorie auszuführen.
Beispielsweise verfügt die synthetische Differentialgeometrie über Modelle in Topoi, die die Kategorie der glatten Mannigfaltigkeiten enthalten und einbetten, sodass Sie Logik höherer Ordnung verwenden können, um glatte Funktionen zu konstruieren und Differentialgleichungen zu lösen.
Als weiteres Beispiel in diesem Artikel stellen sie fest, dass "Schrittindizierung" wirklich nur mit Vorspannungen über den Naturwerten (einem anderen Topos) funktioniert, sodass Sie die Syntax der Logik höherer Ordnung verwenden können, um schrittweise indizierte logische Beziehungen ohne langwierige zu definieren Manipulation von Schritten.
Schließlich zeigt Andrej Bauer in dieser MO-Frage, dass man mit der "internen Sprache" der Topos von Graphen viel anfangen kann.
Meine Frage ist, hat jemand diese Vision buchstäblich in einem Theorembeweiser verwirklicht ? Wenn ich zum Beispiel zeige, dass eine Kategorie, die mir wichtig ist, kartesisch geschlossen ist, könnte ich in den "internen Modus" wechseln, in dem ich die Lambda-Kalkül-Syntax (mit einigen modellspezifischen Axiomen) schreibe, und dann in den "externen Modus" zurückkehren. und sie als Objekte in meinem Modell manipulieren?
Im Extremfall würde ich sogar Topos-Theorie und Logik höherer Ordnung wollen, damit ich meine schrittindizierten logischen Beziehungen ohne Schritte schreiben oder klassische Mechanik mit einem Theorembeweiser unter Verwendung von SDG unterrichten kann. Dies scheint mir eine sehr wirkungsvolle Idee zu sein, da jemand die Theorie des erweiterungsabhängigen Typs einmal implementieren und nette Werkzeuge bereitstellen und sie dann mit ganz anderen Anwendungen verwenden könnte, wie oben beschrieben.
quelle
Antworten:
In der Erweiterung der Typentheorie mit Forcing von Guilhem Jaber, Nicolas Tabareau und Matthieu Sozeau, 2012, wird intuitionistisches Forcen als Internalisierung der Presheaf-Konstruktion vorgestellt, die als typerhaltende Übersetzung im Stil der Parametrizitätsübersetzung von Bernardy und Lasson implementiert ist .
Dies bedeutet, dass Sie Begriffe in Ihrer üblichen Typentheorie definieren und sie dann in eine "Forcierungsschicht" "übersetzen" können, in der sie als Übersetzungen mit einem anderen Übersetzungstyp interpretiert werden. Mit der Übersetzung, die durch Indizieren über abnehmende natürliche Zahlen induziert wird, können Sie beispielsweise Ihre üblichen Begriffe in einer Theorie nach der Übersetzung verwenden, in der eine
later
Modalität definierbar ist. Dies kommt Ihrer Vorstellung, intern in den Topos von Bäumen zu arbeiten, ziemlich nahe.Es scheint, dass sie ein neues, einfacheres Coq-Plugin haben, das diese Ideen bei CoqHott / coq-Forcing implementiert , und insbesondere SI.v erstellt diese Forcing-Übersetzung für die Schrittindizierung. Leider gibt es während der Erstellung des Modells in der Praxis kein Beispiel für die Verwendung für schrittweise indizierte Definitionen (das einzige, was in der Forcierungsschicht übersetzt statt definiert wird
Forcing Translate eq
, ist , was nicht besonders informativ ist). Sie könnten versuchen zu experimentieren, um zu sehen, wie (un) bequem dies zu verwenden ist.quelle
Wenn Sie nur in der internen Sprache arbeiten möchten, können Sie einfach einen Proof-Assistenten verwenden. Es gibt eine geringfügige technische Besonderheit, Powersets zu haben oder nicht zu haben, da Beweisassistenten typischerweise Typentheorien sind, aber Coqs
Prop
stimmen mit einer Interpretation von Coq in einem Topos überein.Sie schlagen jedoch vor, die Maschine als eine Art Übersetzungswerkzeug zu verwenden, mit dem Sie von der internen Sprache zur Interpretation in einem Modell gelangen. Dies ist eine gute Idee, außer ich denke, es wäre nicht so nützlich, wie man es erwarten könnte. Die Übersetzung von der internen Sprache in das Modell ist zwar mechanisch, führt jedoch leider zu verschlungenen Übersetzungen, die viel Massage erfordern, bevor sie nützlich sind. (Wenn Sie jemals versucht haben, die Lawvere-Tierney-Interpretation der Topos-Logik in einem Garben-Topos zu verwenden, wissen Sie Bescheid.)
Es gibt noch ein Problem, nämlich die umgekehrte Übersetzung. Wir beginnen oft mit einem bekannten Konzept oder Objekt im Modell und möchten eine gute Beschreibung oder Axomatisierung in der internen Sprache. Dies ist normalerweise harte Arbeit und echte Mathematik. Ich sehe nicht ein, wie aktuelle Beweisassistenten helfen könnten.
Auf der technischen Seite müsste man sich um die Formalisierung kümmern:
Zusammenfassend ist es eine gute Idee, einen Proof-Assistenten zu verwenden, um zu überprüfen, ob Sie in der internen Sprache nichts falsch machen (tatsächlich ist dies eine sehr gute Idee, wie die Homotopietypentheorie bestätigt, bei der wir Coq und Agda verwendet haben neue Theoreme zu entwickeln, die erst später nicht ins Englische übersetzt wurden), aber es ist unwahrscheinlich, dass sie ohne viel zusätzliche Arbeit funktionieren, um Aussagen über Modelle zu erhalten. Das heißt nicht, dass Sie es nicht versuchen sollten!
quelle