Können wir in der Programmiersprache streng syntaktische und semantische Methoden unterscheiden?

14

Während von starken Normalisierungsbeweisen die Rede ist, kontrastiert dieser Kommentar das "Normalformmodell" mit "rein syntaktischen Methoden".

Dies bringt mich zu einer grundlegenderen Frage zurück: Können wir syntaktische und semantische Konstruktionen angesichts syntaxbasierter Modelle immer noch streng unterscheiden? Was ist mit Termmodellen für Algebren, Henkin-Modellen für Logiken erster Ordnung? Was ist mit struktureller operativer Semantik? Da Termmodelle in Bezug auf die Syntax isomorph sein können, scheint es schwierig zu sein, eine eindeutige Unterscheidung zu treffen.

Bis ich den Unterschied zwischen Beweis- und Modelltheorie in der Logik studierte, war ich sogar von der Vorstellung verwirrt, dass "statische Typsysteme eine syntaktische Methode sind". Ein Typensystem begründet schließlich Typen, die eine Abstraktion des Programmverhaltens darstellen (und bei abhängigen Typen eine willkürlich genaue).

Blaisorblade
quelle

Antworten:

14

Nein, Sie können syntaktische Methoden nicht streng von semantischen Methoden unterscheiden, aber die Unterscheidung ergibt trotzdem Sinn.

  • Strukturelle operationale Semantik ist keine denotationale, weil sie keine kompositorische Methode ist, um einer Programmiersprache Semantik zu verleihen.

  • Sie können jedoch denotationale Modelle aus einer strukturellen operativen Semantik erstellen, indem Sie eine Realisierbarkeits- oder eine logische Beziehungsmethode verwenden. Als Beispiel siehe Robert Harpers Konstruieren von Typensystemen über operationelle Semantik .

  • Begriffsmodelle sind denotational, aber im Allgemeinen sind Semantiker mit ihnen nicht zufrieden. Was sie normalerweise wollen, ist eine Kategorie von Modellen, bei denen der Begriff "Modell" anfänglich ist, was zum Nachweis der Zuverlässigkeit und der Vollständigkeit der Ergebnisse verwendet werden kann. (Die Richtigkeit und Vollständigkeit des typisierten Lambda-Kalküls für geschlossene kartesische Kategorien ist das paradigmatische Beispiel; für einige Details siehe Alex Simpsons Ergebnisseλ der kategorialen Vollständigkeit für den einfach typisierten λ- Kalkül .)

  • In der anderen Richtung, wenn Sie eine Denotationssemantik haben, möchten Sie vielleicht herausfinden, wie die Syntax dafür lautet. Dann möchten Sie eine Syntax- und abstrakte Maschine suchen, deren Begriff Modell als erstes Objekt in einer geeigneten Kategorie von Modellen dienen kann.

    Zum Beispiel begann die Spielesemantik als eine rein semantische Konstruktion und führte schließlich zur Arbeit an der operativen Spielesemantik - ein aktuelles Beispiel hierfür ist Alexis Goyets The Lambda Lambda-Bar-Kalkül: Ein Doppelkalkül für unbeschränkte Strategien .

  • Insgesamt können Sie sich die strukturelle Betriebssemantik als eine Möglichkeit vorstellen, abstrakte Maschinen zu spezifizieren, von denen wir hoffen, dass sie leicht zu implementieren sind. Eine Denotationssemantik liefert ein kompositorisches Modell einer Sprache, über das wir hoffentlich leicht nachdenken können. Wenn wir beide haben, können wir beide implementieren und über die Sprache nachdenken.

  • Normierungssätze sind ein interessanter, mehrdeutiger Fall. Normalerweise benötigen Sie zum Nachweis der Normalisierung ein semantisches Modell (normalerweise eine logische Beziehung). Wenn Sie jedoch wissen, dass die Normalisierung zutrifft, können viele Eigenschaften jetzt durch Induktion auf Normalformen bewiesen werden. Dies ist ein rein syntaktisches Argument.

    Für schwache Logiken (alles bis zur Logik erster Ordnung ohne Induktion, ungefähr) können Sie die Normalisierung syntaktisch unter Verwendung der Technik der erblichen Substitution nachweisen . In diesen Logiken gilt die Eigenschaft subformula, sodass Sie die Normalisierung durch Induktion auf Typen nachweisen können. Wie das funktioniert, erfahren Sie in Frank Pfennings Aufsatz Structural Cut Elimination .

Neel Krishnaswami
quelle
Wow, danke für die schnelle und gründliche Antwort!
Blaisorblade
Ich bin nicht einverstanden mit dem Grund, den Sie angegeben haben, dass die operationale Semantik nicht denotational ist. Die operationale Semantik ist nicht denotational, da den Programmen keine Bezeichnung zugewiesen ist. Es gibt Arbeiten, die die operationale Semantik komponieren.
Tag