Wahrscheinlich ist die häufigste Anwendung von linearen Typen in PL, sie zu verwenden, um Sprachen zu geben, die das Aliasing steuern (dh ein linearer Wert hat mehr oder weniger einen einzelnen Zeiger darauf).
Es gibt jedoch eine leichte Abweichung zwischen dieser Verwendung und typischen Denotationsmodellen der linearen Logik. IIRC, Benton zeigte, dass, wenn eine kartesische geschlossene Kategorie eine starke kommutative Monade hat, ihre Kategorie von Algebren symmetrisch monoidal geschlossen ist (dh ein Modell der linearen Logik). Dieser Satz gilt jedoch nicht für die Verwendung der Alias-Kontrolle, da die Zustandsmonade nicht kommutativ ist. In der Tat haben Simpson und seine Mitarbeiter in den letzten Jahren Kalküle für allgemeine starke Monaden angegeben, die nicht als Kalküle für lineare Logik bezeichnet werden.
Meine Frage ist also, was ist die Denotationssemantik linearer Sprachen mit Staat? Gibt es eine nicht degenerierte (dh Tensor ist kein kartesisches Produkt) symmetrische monoidale geschlossene Kategorie, in der Zuordnung, Lesen und lineare Aktualisierung modelliert werden können?
quelle
Antworten:
Mir scheint, dass sich die Richtung, in die Sie schauen sollten, um die Spielsemantik für allgemeine Verweise und die damit zusammenhängende Semantik für lineare Logik dreht , wie etwa die auf Conway-Spielen basierenden . Ein algebraischer Bericht über Referenzen in der Spielesemantik von Paul-André Melliès und Nicolas Tabareau ist wahrscheinlich der beste Ausgangspunkt. In diesem Artikel wird die lineare Logik zu einer sogenannten Tensorlogik gelockert, um die Dinge zum Laufen zu bringen. Da sie sich jedoch auf Conway-Spiele verlassen, besteht sicherlich ein Zusammenhang mit Modellen der linearen Logik. Sie nutzen die Linearität auch nicht wirklich wie bei linearen Typen, aber die Maschinerie ist da, wenn Sie wollen, glaube ich.
Die Arbeit von Jim Laird (wie A Game Semantics of Names and Pointers ) und Guy McCusker kann ebenfalls zu Ihrer Suche beitragen. Die kürzlich erschienene interessante Dissertation Spielesemantik für eine objektorientierte Sprache von Nicholas Wolverson treibt diese Ideen in einem OO-Setting weiter voran. Er geht im Detail auf lineares Threading ein , wobei jeweils nur eine Operation aktiv ist, und beschreibt, wie lineare Klassen hinzugefügt werden . Beide setzen auf lineare Eingabe. Auch hier ist das zugrunde liegende Modell kein Modell der linearen Logik, aber es ist eng.
quelle
(Meine Güte, Neel, das war eine schwierige Frage.)
Das "Volksmodell" der linearen Logik ist definitiv das kohärente Raummodell, das in Girards linearer Logik (und auch in "Proofs and Types") diskutiert wird. Dies ist nicht in dem von Ihnen beschriebenen Sinne entartet.
Ob diese Semantik Aufschluss darüber gibt, wie eine lineare funktionale Sprache implementiert werden kann, weiß ich nicht. Wenn Sie über Zuweisung, Lesen und lineare Aktualisierung sprechen, sprechen Sie tatsächlich über die Implementierung. Vielleicht könnte Ihre Frage so formuliert sein: "Wie beweise ich die Implementierung einer linearen funktionalen Sprache, die state-update verwendet, als korrekt?" Ich kenne die Antwort darauf nicht, aber ich denke, es muss in den Papieren vorhanden sein, die lineare Update-Implementierungen vorschlagen.
quelle