Ist Coq synthetisch oder analytisch?

8

Im HoTT-Kurs der CMU, Vorlesung 1, finden Sie hier: https://scs.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=0945cc7f-48b7-4803-81af-e7193a3f461d

Um 33:52 gab Harper einen parallelen Vergleich zwischen synthetischen und analytischen Theorien, und als er die PL-Theorie erreichte, sagte er, Coq sei analytisch und Coq beweise nur eine Sprache in ihrer Grammatik, nicht aber den Parser selbst.

Ich habe das starke Verlangen, irgendwie nicht zuzustimmen, aber ich habe keine klare Vorstellung, warum ich das tun möchte. Ich glaube, dass Coq sehr synthetisch ist, ebenso wie alle anderen Beweisassistenten, die auf der Theorie des abhängigen Typs basieren, da all diese Sprachen nichts anderes tun, als Programme zu erstellen. Wir können die axiomatische Algebra auch in Coq ausdrücken, indem wir beispielsweise Typklassen verwenden, und konkretisieren, wann immer dies angebracht ist. Dieses Muster ist insbesondere bei Agda der Fall.

Meine Frage ist also, hatte Harper Recht? Wenn er Recht hat, welcher Teil meiner Sichtweise verursacht mein Missverständnis?

Jason Hu
quelle

Antworten:

12

Die Bemerkung bezieht sich auf eine spezifische Verwendung von Coq, nämlich die Formalisierung der Programmiersprachentheorie.

Lassen Sie uns zunächst die Unterscheidung zwischen synthetisch und analytisch klarstellen :

  • In einer synthetischen Herangehensweise an ein Thema sagen wir, dass es Dinge gibt, deren grundlegende Eigenschaften und Struktur auf die eine oder andere Weise postuliert werden. Wir untersuchen diese Dinge dann, indem wir uns nur auf die postulierten Eigenschaften und Strukturen stützen.

  • In einer analytischen Herangehensweise an ein Thema entdecken wir, dass es bestimmte Dinge gibt. Um mehr über sie zu erfahren, nehmen wir sie auseinander, untersuchen, wie sie hergestellt werden, und analysieren sie. Auf diese Weise entdecken wir ihre Eigenschaften und Struktur.

Wie würde man eine Programmiersprache auf diese zwei Arten lernen?

Synthetisch würden wir die Bestandteile der Sprache (es gibt Begriffe, es gibt Typen), ihre Grundstruktur (dies sind die Arten, Begriffe zu erstellen) und grundlegende Eigenschaften postulieren. Wir fragen nicht, woraus die Begriffe und der Typ bestehen, ob es sich bei den Begriffen um Bäume oder Zeichenfolgen handelt oder ob die Sammlung von Typen auf eine bestimmte Weise erstellt wurde.

Analytisch würden wir mit einem mathematischen Aufbau beginnen, der es uns ermöglicht, viele Dinge zu tun, beispielsweise induktive Definitionen zu verwenden, um mathematische Objekte zu konstruieren. Wir werden Begriffe und Typen als bestimmte induktiv definierte Mengen oder Typen erstellen. Dann würden wir ihre Struktur untersuchen, wie wir sie transformieren können usw.

Es sollte klar sein, dass Coq analytischer Art ist. Wenn Sie eine Programmiersprache in Coq implementieren, definieren Sie induktive Arten von Begriffen und Typen. Anschließend analysieren Sie sie mithilfe der Induktion, definieren die operative Semantik als rekursive Funktion für die Syntax von Begriffen usw.

Auf der anderen Seite ist Twelf von der synthetischen Art. Wir postulieren, dass es eine Art von Begriffen und eine Art von Typen gibt, aber wir sagen Twelf nicht , dass dies induktive Typen sind (das kann man in Twelf nicht sagen). Wir definieren die operative Semantik, indem wir grundlegende Übergangsregeln bereitstellen. Es gibt keine Erwähnung rekursiv definierter Funktionen (es gibt keine Möglichkeit, Funktionen in Twelf zu definieren), wir verlassen uns nur auf die Postulate, die wir aufgeschrieben haben.

Sie sollten die obige Situation mit der planaren Geometrie vergleichen. Hilberts Herangehensweise an die Geometrie ist synthetisch (aber seine Ideen wurzeln in Euklid), Descartes 'sind analytisch. Die analytische Geometrie wird so genannt, weil eine Linie kein primitiver Begriff ist: Sie hat eine innere Struktur, nämlich eine Menge von Punkten.

Andrej Bauer
quelle
Vielen Dank für Ihre Antwort. Könnten Sie sehen, ob meine folgenden Aussagen richtig ausgerichtet sind, um mein Verständnis zu überprüfen? 1. Es ist immer noch möglich, in Coq einen synthetischen Ansatz zu verfolgen, der beispielsweise von Unimath übernommen wird, indem die Verwendung induktiver Definitionen verboten wird. 2. Das Studium der Typentheorien selbst ist synthetisch, aber das darauf basierende Studium (unter der Annahme, dass Sprachmerkmale frei verwendet werden) wäre analytisch. Wenn HoTT als Programmiersprache implementiert wird, würde die Verwendung von HIT und Induktion es effektiv zu einer analytischen Studie machen.
Jason Hu
Unimath ist synthetisch, nicht weil es induktive Typen nicht zulässt, sondern weil es über Homotopietypen spricht, ohne zu analysieren, woraus sie bestehen.
Andrej Bauer
@AndrejBauer - Seltsamerweise scheint diese Unterscheidung genau das Gegenteil von der in der Philosophie zu sein, einschließlich der Philosophie der Mathematik . Dort bedeutet "analytisch" Aussagen, deren Bedeutung ausschließlich von den Begriffen und ihren Beziehungen abhängt, ohne dass externe Eingaben (z. B. Faktenwissen über den Zustand der Welt) hinzugefügt, "synthetisiert" werden müssen. Bei dieser Verwendung wäre Euklid also analytisch, während Descartes die Synthese geometrischer Begriffe mit algebraischen Begriffen beinhalten würde (z. B. ist ein Punkt ein Paar (x, y) und eine Linie ist eine Gleichung y = mx + b).
Diagon