¿Cuál es el análogo de Curry-Howard para lógicas lineales?

8

Según lo definido por Wikipedia,

(La correspondencia de Curry-Howard) es una generalización de una analogía sintáctica entre sistemas de lógica formal y cálculos computacionales que fue descubierta por primera vez por el matemático estadounidense Haskell Curry y el lógico William Alvin Howard.

Relacionado con él está el cubo λ, que es una representación gráfica de los posibles ejes de refinamiento desde tipos simples hasta el cálculo de construcciones, que tiene una interpretación lógica:

https://upload.wikimedia.org/wikipedia/commons/1/19/Lambda_cube.png

Hasta donde sé, la correspondencia de Curry-Howard es una conexión entre la teoría de tipos y la lógica clásica. Mi pregunta es: ¿hay alguna correspondencia analógica entre sistemas de tipos y lógicas lineales ?

MaiaVictor
fuente
¿Puedes definir qué quieres decir con "lógicas ligeras"?
jmite
Lo siento @jmite, me refiero a la lógica lineal .
MaiaVictor

Respuestas:

8

Puede imponer requisitos similares dentro de su sistema de tipos, lo que equivale a requerir que los objetos nunca se destruyan ni se dupliquen. Para ver un ejemplo de una aplicación práctica, vea Tipos lineales puede cambiar el mundo. por Philip Wadler, que especifica las reglas de escritura para esto. También muestra cómo un sistema de tipos puede combinar tipos lineales y no lineales.

Para una aplicación práctica de esto, eche un vistazo a std::unique_ptrC ++. Aquí, la linealidad asegura que la desasignación siempre ocurra exactamente una vez.

En un lenguaje funcional, la linealidad también ofrece la posibilidad de actualizaciones destructivas (que parecen ser puras para el programador). Sin embargo, en la práctica parece que las mónadas son un enfoque más común para resolver este problema.

Actualización : me di cuenta de que en la tabla de trinitarismo computacional de NLab la ausencia de contracción en una lógica (es decir, no poder duplicar una suposición) corresponde al teorema de no clonación de la mecánica cuántica. (Desafortunadamente) no entiendo las implicaciones de esto, pero pensé que podría resultarle interesante.

Anton Golov
fuente
1
Hay experimentos, por ejemplo, en Idris que incorporan tipos de unicidad (que se llamarían mejor lineales o afines: ¡pueden tener más de un habitante!).
gallais
1
Para más información sobre su último párrafo, consulte dx.doi.org/10.1088/1742-6596/67/1/012045 El documento tiene un buen resumen en su sección de conclusiones.
Fizz
8

La lógica lineal corresponde a un sistema de tipos para un cálculo de proceso (una variante del cálculo interno π ), donde:

  • las pruebas corresponden a procesos ;
  • Las propuestas corresponden a los tipos de sesión (protocolos de comunicación).

Esta es un área de investigación bastante activa. Si bien la gente esperaba una correspondencia entre la lógica lineal y algún modelo de concurrencia desde el inicio de la lógica lineal por Girard [1987] , encontrar algo que sea satisfactorio tanto desde la perspectiva lógica como de la concurrencia ha sido algo difícil de alcanzar.

Aquí hay un resumen de los desarrollos clave hasta ahora.

  • Abramsky [1994] y Bellin y Scott [1994] propusieron la primera correspondencia "Pruebas como procesos", donde las proposiciones lineales son tipos de canales lineales en un cálculo de proceso. Por ejemplo, la proposiciónUNAsi se interpreta como el tipo de canal "enviar UNA y si"; se usa para escribir un proceso que usa un canal para enviar un mensaje que incluye algo de tipo UNA y si(un par, si lo desea), respectivamente, y luego el canal ya no se debe usar. La idea clave es que la regla de corte de la lógica lineal se puede utilizar para escribir la ejecución paralela de dos procesos que se comunican a través de un canal privado. La verificación de dualidad realizada por la regla de corte en lógica lineal corresponde a la verificación de que los dos procesos usan el canal privado compartido de manera compatible.
  • La idea de la dualidad inspiró también varias disciplinas de tipeo para los cálculos de procesos, especialmente los tipos lineales y los tipos de sesión, pero se perdió el enlace directo a la lógica lineal. Los tipos de sesión en particular, de Honda [1993] , describen protocolos de comunicación y su aplicabilidad se hizo evidente muy pronto: la idea generó un área de investigación.
  • Siete años después, después de que Honda desarrollara tipos de sesión, Caires y Pfenning [2010] descubrieron que las proposiciones en lógica lineal intuitiva pueden interpretarse como tipos de sesión. Por ejemplo, la proposiciónUNAsi se interpreta como el protocolo "enviar UNA y luego proceder como si". Este descubrimiento ha rejuvenecido la línea de investigación" Pruebas como procesos ": hay muchos documentos sobre este tema publicados en la última década. Gracias a los fundamentos lógicos, podemos importar ideas desde la lógica para extender la disciplina de escritura de los tipos de sesión .
  • Wadler [2014] reformuló la correspondencia con los tipos de sesión para la lógica lineal clásica y formalizó la primera conexión entre una presentación estándar de los tipos de sesión para un lenguaje funcional y una lógica lineal.
  • Hay un "problema" compartido por todos los trabajos citados anteriormente: mientras que el lado de la lógica lineal es el esperado, el lado del cálculo del proceso no lo es, tanto sintácticamente como semánticamente. Por ejemplo, una discrepancia notable es esa composición paralela (PAGSEl |Q) no es un constructor de términos independiente, porque carece de una regla correspondiente para razonar sobre él directamente en lógica lineal. Este problema se resolvió en [Kokke et al., 2019] (descargo de responsabilidad: soy uno de los autores), reformulando conservadoramente las reglas para, cortar y mezclar. Esto da lugar a nuevas transformaciones de prueba, que resultan corresponder a la semántica observacional esperada del cálculo π.

Si está buscando un par de documentos para comenzar, comenzaría desde [Wadler, 2014] y luego [Kokke et al., 2019] (para ver el último sistema).

fmontesi
fuente