¿Cuál es el modelo popular de lógica lineal?


23

Probablemente, la aplicación más común de los tipos lineales en PL es usarlos para dar lenguajes que controlen el alias (es decir, un valor lineal tiene un solo puntero, más o menos).

Pero hay un ligero desajuste entre este uso y los modelos denotacionales típicos de lógica lineal. IIRC, Benton demostró que si una categoría cerrada cartesiana tiene una mónada conmutativa fuerte , entonces su categoría de álgebras será simétrica cerrada monoidal (es decir, un modelo de lógica lineal). Pero este teorema no se aplica al uso de control de alias, ya que la mónada de estado no es conmutativa. Y, de hecho, en los últimos años, Simpson y sus compañeros de trabajo han dado cálculos para mónadas fuertes en general, que no son cálculos de término para lógica lineal.

Entonces mi pregunta es, ¿cuál es la semántica denotacional de los lenguajes lineales con estado? ¿Existe una categoría cerrada monoidal simétrica no degenerada (es decir, el tensor no es un producto cartesiano) en la que se puede modelar la asignación, la lectura y la actualización lineal?


66
Este es el tipo de pregunta que esperaría que respondieras a Neel, no que preguntaras. ;-)
Marc Hamann

55
Si puede atraer investigadores a cstheory.stackoverflow.com que sean capaces de responder a esta pregunta, entonces el mundo será un mejor lugar para ello.
Dave Clarke

Respuestas:


9

Me parece que la dirección que debería considerar mirar en torno a la semántica del juego para obtener referencias generales y la semántica relacionada para la lógica lineal, como las basadas en los juegos de Conway . Un relato algebraico de referencias en la semántica de juegos de Paul-André Melliès y Nicolas Tabareau es probablemente el mejor lugar para comenzar. En este documento, la lógica lineal se relaja con la llamada lógica tensorial para que las cosas funcionen, por lo que no es exactamente la configuración que desea. Pero sí confían en los juegos de Conway, por lo que ciertamente hay una conexión con modelos de lógica lineal. Tampoco explotan realmente la linealidad como en los tipos lineales, pero la maquinaria está ahí para hacerlo si lo desea, creo.

El trabajo de Jim Laird (como A Game Semantics of Names and Pointers ) y Guy McCusker también puede contribuir a su búsqueda. La reciente tesis interesante Semántica del juego para un lenguaje orientado a objetos de Nicholas Wolverson empuja estas ideas aún más en un entorno OO. Considera en detalle el enhebrado lineal , solo una operación activa a la vez, y describe cómo agregar clases lineales . Ambos se basan en la tipificación lineal. Una vez más, sin embargo, el modelo subyacente no es estrictamente un modelo de lógica lineal, sino que está cerca.


1
Solo curiosidad Neel. ¿Te fue de alguna utilidad o ya sabías todo esto?
Dave Clarke el

Sé esto (pero no bien), pero la semántica del juego es mucho más sofisticada de lo que estoy buscando. La mayoría de las personas tienen una intuición para el estado lineal que no está lejos de la vista anticuada de Strachey de un cálculo imperativo como elemento de un tipo monádico , y esperaba que hubiera un modelo de estado lineal que se parecería a eso. Básicamente, esperaba que hubiera algo que pudieras mostrar a un estudiante de primer año sin aterrorizarlo. :)T(A)=SA×S
Neel Krishnaswami

1
Quizás el estado global de Uday Reddy se considera innecesario: una introducción a la semántica basada en objetos, J. Lisp y Symbolic Computation, 9 (1996): 7-76.
Dave Clarke

¡Estoy leyendo eso ahora, en realidad!
Neel Krishnaswami

7

(Dios, Neel, esa fue una pregunta difícil).

El "modelo popular" de la lógica lineal es definitivamente el modelo de espacios coherentes, discutido en el artículo de lógica lineal de Girard (y también en "Pruebas y tipos"). Esto no es degenerado en el sentido que usted describe.

Si esta semántica arroja alguna luz sobre cómo se puede implementar un lenguaje funcional lineal, no estoy seguro. Cuando habla de asignación, lectura y actualización lineal, de hecho habla de la implementación. Entonces, quizás, su pregunta podría formularse como, "¿cómo pruebo que la implementación de un lenguaje funcional lineal que utiliza la actualización de estado es correcta?" No sé la respuesta a eso, pero creo que debe existir en los documentos que proponen implementaciones de actualización lineal.


En realidad, es demasiado fácil demostrar la exactitud de las implementaciones de estado lineal: la linealidad es una restricción estructural tan fuerte que apenas se necesita semántica para hacer estas pruebas. Como resultado, no conozco una semántica simple de denotación del estado lineal. Las dos cosas más cercanas a lo que quiero son su trabajo sobre la semántica basada en objetos y el modelo de "espacios de longitud" de Hofmann en su trabajo sobre la complejidad implícita.
Neel Krishnaswami

En realidad, no describiría la semántica basada en objetos como modelado de "estado lineal". Es más bien "estado secuencial" y "objetos lineales", latte es impuesta por SCI. Los modelos de juegos de Idealized Algol, que también están "basados ​​en objetos" en el mismo sentido, no tienen nada lineal.
Uday Reddy

¿Puedes algunas referencias de dónde se pueden encontrar tales pruebas de corrección? (Lo siento, volviendo la pregunta a ti!)
Uday Reddy

1
La prueba de solidez más simple para un lenguaje lineal con estado que conozco es "L3: Un lenguaje lineal con ubicaciones" de Ahmed, Fluet y Morisett. ( ttic.uchicago.edu/~amal/papers/linloc-fi07.pdf ) En el documento, brindan una relación lógica simple, pero mencionan que también pasa una prueba sintáctica de progreso y preservación.
Neel Krishnaswami

Aquí hay otro trabajo que me llamó la atención. Pruebe citeseer para Stephen Cooper, enlace "Sobre tipos lineales y actualización imperativa" . Debería haberlo sabido, pero no lo hice.
Uday Reddy
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.