Respuesta un tanto nicho: el operador “hasta” de la lógica temporal, una especie de lógica modal, llevó al descubrimiento de una abstracción unificadora novedosa para la programación reactiva funcional (FRP).
Si no está familiarizado con FRP, escribí una introducción de alto nivel en otra respuesta: la respuesta de Tikhon Jelvis a ¿Qué es la programación reactiva funcional?
La idea central con el FRP clásico es que podemos expresar código que varía con el tiempo de forma natural con dos abstracciones principales:
- eventos : un valor que sucede en un tiempo discreto
- Comportamientos : un valor que varía continuamente con el tiempo.
Como sucede, ambos de estos corresponden naturalmente a las modalidades temporales de la lógica temporal:
- ¿Cuál es la relación entre historia y filosofía?
- ¿Si volvieran a entrar en el mundo hoy, los antiguos filósofos acudirían a las citas como profesores de filosofía en la academia?
- ¿Cuál es el significado de la identificación del Dasein y la Temporalidad en el Ser y el Tiempo?
- ¿Es la política un juego?
- ¿Es la no violencia un arma de los débiles o fuertes?
- los eventos corresponden a eventualmente : [math] \ diamond x [/ math]
- los comportamientos corresponden a siempre : [math] \ square x [/ math]
Estos dos operadores tienen la misma relación dual que otros tipos de modalidades:
- [math] \ diamond x \ Leftrightarrow \ lnot \ square \ lnot x [/ math]
- [math] \ square x \ Leftrightarrow \ lnot \ diamond \ lnot x [/ math]
Piense por qué estas leyes tienen que sostenerse para “eventualmente” y “siempre”.
Esta es una relación muy satisfactoria y demuestra que las dos abstracciones (eventos y comportamientos) no son completamente arbitrarias, pero creo que se descubrió después de que se formuló el FRP clásico, por lo que realmente no cuenta para esta respuesta.
Afortunadamente, algunas investigaciones recientes en FRP han ido en la dirección opuesta, comenzando con la lógica temporal y derivando primitivas de FRP. No creo que haya habido mucho trabajo sobre la idea, pero hubo un interesante artículo de PLPV 2013: “Lógica temporal con” Hasta “, Programación reactiva funcional con procesos y categorías de procesos concretos” por Wolfgang Jeltsch. Aquí está el resumen:
Una investigación reciente ha revelado que los operadores “siempre” y “eventualmente” de la lógica temporal corresponden a los constructores de tipo para comportamientos y eventos de la programación reactiva funcional (FRP). Además, es bien sabido que los operadores “hasta” de LTL son generalizaciones de “siempre” y “eventualmente”. En este documento, mostramos que los comportamientos y los eventos se pueden generalizar de manera análoga. El resultado es una noción de proceso, que combina aspectos continuos y discretos. Desarrollamos una semántica categórica común para una lógica temporal intuicionista con “hasta” y FRP con procesos. Esta semántica refleja la veracidad dependiente del tiempo en la lógica temporal, la habitabilidad del tipo dependiente del tiempo en FRP y la causalidad de las operaciones de FRP.
(Para referencia, LTL significa “lógica temporal lineal”, que es la variante específica de la lógica temporal que se utiliza en la investigación de FRP).
En un nivel alto, el documento desarrolla una versión de lógica temporal con varias variaciones del operador “until” ([math] \ triangleright [/ math]) que se puede usar para codificar [math] \ square [/ math] y [math] \ diamond [/ math]. Luego, utilizando esta idea, desarrollan un lenguaje FRP con una abstracción de “proceso” que corresponde a [math] \ triangleright [/ math] y admite una combinación de tiempo discreto y continuo, con comportamientos continuos y eventos discretos que caen como casos especiales de procesos.
No creo que nadie haya implementado realmente un sistema FRP basado en estas ideas, ni siquiera sé si sería útil o práctico, pero definitivamente es un ejemplo de algo interesante que se descubrió directamente utilizando la lógica modal.