Quel est le modèle folk de la logique linéaire?


23

L'application la plus courante des types linéaires en PL est probablement de les utiliser pour donner des langages qui contrôlent l'alias (c'est-à-dire qu'une valeur linéaire a un seul pointeur vers elle, plus ou moins).

Mais il y a un léger décalage entre cet usage et les modèles dénotatifs typiques de logique linéaire. IIRC, Benton a montré que si une catégorie fermée cartésienne a une forte monade commutative , alors sa catégorie d'algèbres sera fermée monoïdale symétrique (c'est-à-dire un modèle de logique linéaire). Mais ce théorème ne s'applique pas à l'utilisation de contrôle d'alias, car la monade d'état n'est pas commutative. Et en effet, au cours des dernières années, Simpson et ses collègues ont donné des calculs pour des monades fortes générales, qui ne sont pas des calculs de terme pour la logique linéaire.

Donc ma question est, quelle est la sémantique dénotationnelle des langages linéaires avec état? Existe-t-il une catégorie fermée monoïdale symétrique non dégénérée (c'est-à-dire que le tenseur n'est pas un produit cartésien) dans laquelle l'allocation, la lecture et la mise à jour linéaire peuvent être modélisées?


6
C'est le genre de question à laquelle je m'attendrais à ce que vous répondiez à Neel, pas à la question. ;-)
Marc Hamann

5
si vous pouvez attirer sur cstheory.stackoverflow.com des chercheurs capables de répondre à cette question, alors le monde sera un meilleur endroit pour cela.
Dave Clarke

Réponses:


9

Il me semble que la direction que vous devriez envisager de regarder tourne autour de la sémantique des jeux pour les références générales et de la sémantique associée pour la logique linéaire, comme celles basées sur les jeux Conway . Un compte rendu algébrique des références en sémantique des jeux par Paul-André Melliès et Nicolas Tabareau est probablement le meilleur point de départ. Dans cet article, la logique linéaire est relâchée à la soi-disant logique tensorielle pour que les choses fonctionnent, donc ce n'est pas tout à fait le réglage que vous voulez. Mais ils s'appuient sur les jeux Conway, il y a donc certainement un lien avec les modèles de logique linéaire. Ils n'exploitent pas non plus vraiment la linéarité comme dans les types linéaires, mais la machinerie est là pour le faire si vous le souhaitez, je crois.

Le travail de Jim Laird (comme A Game Semantics of Names and Pointers ) et Guy McCusker peut également contribuer à votre quête. La récente sémantique intéressante du jeu de thèse pour un langage orienté objet par Nicholas Wolverson pousse ces idées plus loin dans un contexte OO. Il considère en détail le filetage linéaire , une seule opération active à la fois, et décrit comment ajouter des classes linéaires . Les deux s'appuient sur un typage linéaire. Encore une fois, cependant, le modèle sous-jacent n'est pas strictement un modèle de logique linéaire, mais il est proche.


1
Juste curieux Neel. Cela vous a-t-il été utile ou saviez-vous déjà tout cela?
Dave Clarke

Je connais ce genre de choses (mais pas bien), mais la sémantique du jeu est beaucoup plus sophistiquée que ce que je recherche. La plupart des gens ont une intuition pour l'état linéaire qui n'est pas loin de la vision à l'ancienne de Strachey d'un calcul impératif en tant qu'élément d'un type monadique , et j'espérais qu'il y avait un modèle d'état linéaire qui ressemblerait à cela. Fondamentalement, j'espérais qu'il y avait quelque chose que vous pourriez montrer à un étudiant de première année sans les effrayer. :)T(A)=SA×S
Neel Krishnaswami

1
Peut-être que l'état global d'Uday Reddy est jugé inutile: une introduction à la sémantique basée sur les objets, J. Lisp et Symbolic Computation, 9 (1996): 7-76.
Dave Clarke

Je lis ça maintenant, en fait!
Neel Krishnaswami

7

(Mon Dieu, Neel, c'était une question difficile.)

Le «modèle populaire» de la logique linéaire est certainement le modèle des espaces cohérents, discuté dans l'article de la logique linéaire de Girard (et aussi dans «Preuves et types»). Ce n'est pas dégénéré dans le sens que vous décrivez.

Que cette sémantique éclaire la façon dont un langage fonctionnel linéaire peut être implémenté, je ne suis pas sûr. Lorsque vous parlez d'allocation, de lecture et de mise à jour linéaire, vous parlez en effet de l'implémentation. Donc, peut-être, votre question pourrait être formulée comme suit: "comment prouver la mise en œuvre correcte d'un langage fonctionnel linéaire qui utilise la mise à jour d'état?" Je ne connais pas la réponse à cela, mais je pense qu'elle doit exister dans les articles qui proposent des implémentations de mise à jour linéaire.


En fait, il est trop facile de prouver l'exactitude des implémentations d'état linéaire - la linéarité est une contrainte structurelle si forte que vous n'avez pratiquement pas besoin de sémantique pour effectuer ces preuves. Par conséquent, je ne connais pas une simple sémantique dénotationnelle de l'état linéaire. Les deux choses les plus proches de ce que je veux sont votre travail sur la sémantique basée sur les objets et le modèle des "espaces de longueur" de Hofmann dans son travail sur la complexité implicite.
Neel Krishnaswami

En fait, je ne décrirais pas la sémantique basée sur les objets comme une modélisation de "l'état linéaire". Il s'agit plutôt d '«état séquentiel» et d' «objets linéaires», le latte étant imposé par SCI. Les modèles de jeux d'Algol idéalisé, qui sont également "basés sur des objets" dans le même sens, n'ont rien de linéaire.
Uday Reddy

Pouvez-vous trouver des références pour trouver de telles preuves de correction? (Désolé, je vous retourne la question!)
Uday Reddy

1
La preuve de solidité la plus simple pour un langage linéaire avec un état que je connais est Ahmed "Fluet et Morisett" L3: Un langage linéaire avec des emplacements ". ( ttic.uchicago.edu/~amal/papers/linloc-fi07.pdf ) Dans l'article, ils donnent une relation logique simple, mais mentionnent qu'une preuve syntaxique de progrès et de préservation passe également.
Neel Krishnaswami

Voici un autre travail qui vient de me venir à l'esprit. Essayez citeseer pour Stephen Cooper, lien "Sur les types linéaires et la mise à jour impérative" . J'aurais dû savoir ça, mais je ne l'ai pas su.
Uday Reddy
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.