Implementierung von „internen“ Sprachen


11

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.


Nur aus Gründen der Klarheit: Fragen Sie sich, ob jemals jemand eine mathematische Theorie in der internen Sprache der zugrunde liegenden Kategorie umgeschrieben hat (um Theorembeweiser zu verwenden, um solche mathematischen Theorien zu beweisen)? Oder sind Sie daran interessiert zu wissen, ob jemand eine Modelltheorie in der Typentheorie (einer Kategorie) durchgeführt hat?
Giorgio Mossa

Ich frage nicht nach der Arbeit, die Menschen in einer bestimmten internen Sprache in einem Theorembeweiser geleistet haben (obwohl Referenzen dafür willkommen wären). Ich frage, ob jemand die Arbeit der Implementierung von "Interne Sprachen" als im Wesentlichen DSLs in einem Theorembeweiser erledigt hat, damit ich die interne Sprache für ein bestimmtes Modell verwenden kann, an dem ich interessiert bin, und alle Vorteile einer netten Syntax nutzen kann. Für CCCs scheint dies einfach zu sein, da die Syntax leicht in Coq / Agda usw. ausgedrückt werden kann, Topoi jedoch schwieriger erscheint.
Max New

Antworten:


7

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 laterModalitä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.


5

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 Propstimmen 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:

  • die Syntax und die Regeln der internen Sprache
  • das Model
  • die Interpretation

λ

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!


Haben Sie eine Referenz für Typentheorie + Prop ~~ Topos? Dies war meine Intuition, aber ich habe bis jetzt noch niemanden gesehen, der es gesagt hat.
Max New

Auch für modellspezifische Logiken sind bestimmte Axiome modellspezifisch, aber die Struktur der Logik insgesamt ist immer noch nur Logik höherer Ordnung, oder? Ich stelle mir vor, Sie würden Merkmale Ihres Modells extern charakterisieren (wie den Next-Time-Funktor im Schrittindexierungspapier) und sie dann einfach als Axiome in Ihrer internen Sprache wiedergeben. Coming up mit schönen und komplett Axiomatisierungen würde immer noch hart Mathe, aber meine Hoffnung ist , dass die Maschine einen Teil des Sanitärbereiches automatisiert.
Max New

Insbesondere für die Schrittindizierung wäre es sinnvoll, die Topos-Logik um einen Modaloperator zu erweitern. Dies ist im Allgemeinen ein Merkmal jeder Situation, in der Sie sich für ein Unterthema interessieren oder eine (Co) Monade haben, die Sie studieren möchten usw.
Andrej Bauer

Für die Typentheorie + Prop starren Sie einfach auf jede Regel und sehen, dass, wenn Sie Prop als Subobjektklassifikator interpretieren, alles in einem Topos gültig ist.
Andrej Bauer
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.