¿Aplicaciones sólidas de la teoría de categorías en TCS?


103

He estado aprendiendo algunas partes de la teoría de categorías. Ciertamente es una forma diferente de ver las cosas. (Resumen muy aproximado para aquellos que no lo han visto: la teoría de categorías ofrece formas de expresar todo tipo de comportamiento matemático únicamente en términos de relaciones funcionales entre objetos. Por ejemplo, cosas como el producto cartesiano de dos conjuntos se definen completamente en términos de cómo se comportan otras funciones con él, no en términos de qué elementos son miembros del conjunto).

Tengo una vaga comprensión de que la teoría de categorías es útil en el lado de los lenguajes de programación / lógica (la "Teoría B"), y me pregunto cuánto podrían beneficiarse los algoritmos y la complejidad ("Teoría A"). Sin embargo, podría ayudarme a despegar si conozco algunas aplicaciones sólidas de la teoría de categorías en la Teoría B. (Ya estoy asumiendo implícitamente que no se han encontrado aplicaciones en la Teoría A hasta ahora, pero si tiene algunas de esas, eso es incluso ¡mejor para mi!)

Por "aplicación sólida", quiero decir:

(1) La aplicación depende tanto de la teoría de categoría que es muy difícil de lograr sin usar la maquinaria.

(2) La aplicación invoca al menos un teorema no trivial de la teoría de categorías (por ejemplo, el lema de Yoneda).

Bien podría ser que (1) implica (2), pero quiero asegurarme de que estas son aplicaciones "reales".

Si bien tengo algunos antecedentes de "Teoría B", ha pasado un tiempo, por lo que cualquier desmitificación sería muy apreciada.

(Dependiendo del tipo de respuestas que obtenga, podría convertir esta pregunta en un wiki comunitario más tarde. Pero realmente quiero buenas aplicaciones con buenas explicaciones, por lo que parece una pena no recompensar a los que responden con algo).

Respuestas:


79

Puedo pensar en una instancia en la que la teoría de categorías se "aplicó" directamente para resolver un problema abierto en lenguajes de programación: Thorsten Altenkirch, Peter Dybjer, Martin Hofmann y Phil Scott, "Normalización por evaluación para cálculo lambda mecanografiado con coproductos" . A partir de su resumen: "Resolvemos el problema de decisión para el cálculo lambda simplemente tipado con sumas binarias fuertes, equivalente a la palabra problema para categorías cerradas cartesianas libres con coproductos binarios. Nuestro método se basa en la técnica semántica conocida como 'normalización por evaluación' e implica invirtiendo la interpretación de la sintaxis en un modelo de haz adecuado y, a partir de esto, extrayendo formas normales únicas y apropiadas ".

Sin embargo, en general, creo que la teoría de categorías generalmente no se aplica para probar teoremas profundos en lenguajes de programación (de los cuales no hay tantos), sino que ofrece un marco conceptual que a menudo es útil (por ejemplo, en lo anterior, el idea de (pre) semántica de gavilla).

Un ejemplo histórico importante es la sugerencia de Eugenio Moggi de que la noción de mónada (que es básica y ubicua en la teoría de categorías) podría usarse como parte de una explicación semántica de los efectos secundarios en los lenguajes de programación (p. Ej., Estado, no determinismo). Esto también inspiró algunas reflexiones sobre la sintaxis de los lenguajes de programación, por ejemplo, directamente a la "clase de tipo Monad" en Haskell (utilizada para encapsular efectos).

Más recientemente (la década pasada), esta explicación de los efectos en términos de mónadas ha sido revisada desde el punto de vista de la antigua conexión (establecida por los teóricos de la categoría, en los años 60) entre mónadas y teorías algebraicas: ver Martin Hyland y John Power's , "La categoría comprensión teórica del álgebra universal: teorías de Lawvere y mónadas" . La idea es que la vista monádica de los efectos es compatible con la vista algebraica (de alguna manera más atractiva) de los efectos, en la que los efectos (por ejemplo, almacenar) se pueden explicar en términos de operaciones (por ejemplo, "búsqueda" y "actualización") y ecuaciones asociadas (por ejemplo, idempotencia de actualización). Paul-André Melliès ha desarrollado recientemente un documento sobre esta conexión: "La condición segal se encuentra con los efectos computacionales", que también depende en gran medida de las ideas que provienen de la "teoría de la categoría superior" (por ejemplo, la noción de "estructura de Yoneda" como una forma de organizar la semántica previa a la tormenta).

Otra clase de ejemplos relacionados proviene de la lógica lineal . Poco después de su introducción por Jean-Yves Girard en los años 80 (con el objetivo de una mejor comprensión de la lógica constructiva), se establecieron conexiones sólidas con la teoría de categorías. Para una explicación de esta conexión, vea John Baez y Mike Stay's, "Física, topología, lógica y computación: una piedra de Rosetta" .

Finalmente, esta respuesta estaría incompleta sin referencia al blog iluminador de sigfpe "Un vecindario del infinito" . En particular, puede consultar "Un ordenamiento parcial de alguna teoría de categoría aplicada a Haskell" .


3
Hola Noam, creo que después de esa excelente respuesta, ¡tu representante es lo suficientemente alto como para agregar enlaces!
Suresh Venkat

Me enfrenté al mismo problema que un novato. Solo esperé a que mi respuesta fuera votada, luego puse los enlaces. Usted podría hacer lo mismo ...
Andrej Bauer

10
¡Gracias! Perdón por la restricción de hipervínculos ... desearía que hubiera alguna forma de decirle al sistema "yo, soy Noam Zeilberger, soy legítimo"
Ryan Williams

agregó los enlaces! Sí, es una política totalmente razonable, a veces se interpone en el camino.
Noam Zeilberger

46

Computación Cuántica

Un área muy interesante es la aplicación de varias categorías monoidales a la computación cuántica. Algunos podrían argumentar que esto también es física, pero el trabajo lo realizan personas en departamentos de informática. Un artículo temprano en esta área es Una semántica categórica de protocolos cuánticos de Samson Abramsky y Bob Coecke; muchos trabajos recientes de Abramsky y Coecke y otros continúan trabajando en esta dirección.

En este cuerpo de trabajo, los protocolos cuánticos se axiomatizan como (ciertos tipos de) categorías cerradas compactas. Dichas categorías tienen un hermoso lenguaje gráfico en términos de diagramas de cuerdas (y cintas). Las ecuaciones en la categoría corresponden a ciertos movimientos de las cuerdas, como enderezar una cuerda enredada pero no anudada, que a su vez corresponde a algo significativo en la mecánica cuántica, como una teletransportación cuántica.

El enfoque categórico ofrece una visión lógica de alto nivel sobre lo que generalmente implica cálculos de muy bajo nivel.

Teoría de los sistemas

FF

Transformaciones Gráficas

G1,G2Pe1:PG1e2:PG2G1G2G1G2P

(L,K,R)LRKl:KLr:KRLKRKdKDdlGdk

Lenguajes de programación (a través de MathOverflow)

Ha habido muchas aplicaciones de la teoría de categorías en el diseño de lenguajes de programación y teoría de lenguajes de programación. Se pueden encontrar amplias respuestas en MathOverflow. https://mathoverflow.net/questions/3721/programming-languages-based-on-category-theory ) https://mathoverflow.net/questions/4235/relating-category-theory-to-programming-language-theory .

Bigraphs - Cálculos de proceso

Finalmente, están los bigrafos de Milner , un marco general para describir y razonar sobre los sistemas de agentes que interactúan. Puede verse como un marco general para razonar sobre álgebras de procesos y sus teorías estructurales y conductuales. El enfoque también se basa en pushouts.


35

Ya estoy asumiendo implícitamente que no se han encontrado aplicaciones en la Teoría A hasta ahora, pero si tienes algunas de ellas, ¡eso es aún mejor para mí!

  • Según tengo entendido, la teoría de las especies de Joyal se usa de manera relativamente amplia en la combinatoria enumerativa, como una generalización de las funciones generadoras que además le dicen cómo permutar cosas además de cuántas hay.

  • Pippenger ha aplicado la dualidad Stone para relacionar idiomas regulares y variedades de semigrupos. Jeandel ha introducido autómatas topológicos que aplican estas ideas para dar cuentas unificadas (¡y pruebas!) Para autómatas cuánticos, probabilísticos y ordinarios.

  • Roland Backhouse ha dado caracterizaciones abstractas de algoritmos codiciosos por medio de conexiones de Galois con el semired tropical.

En una línea mucho más especulativa, Noam mencionó modelos de gavilla. Estos caracterizan de manera abstracta la técnica sintáctica de las relaciones lógicas, que es probablemente una de las técnicas más poderosas en semántica. Los usamos principalmente para probar resultados de inexpresibilidad y consistencia, pero debería ser interesante para los teóricos de la complejidad, ya que es un buen ejemplo de una técnica de prueba práctica no natural (en el sentido de Razborov / Rudich). (Sin embargo, las relaciones lógicas generalmente se diseñan con mucho cuidado para garantizar que se relativicen; como diseñadores de lenguaje, ¡queremos asegurar a los programadores que las llamadas a funciones son cajas negras!)

EDITAR: Continuaré especulando, a petición de Ryan. Según tengo entendido, una prueba natural es más o menos similar a la de tratar de definir una invariante inductiva de la estructura de un circuito, sujeta a varias condiciones sensibles. Ideas similares son (como era de esperar) bastante comunes en los lenguajes de programación también, cuando intenta definir invariante mantenido inductivamente por un término de cálculo lambda (por ejemplo, para demostrar la seguridad de los tipos). 1

ABABA

ABAB. Tenga en cuenta que no existe una sola invariante inductiva: definimos una familia completa de invariantes por recursión sobre la estructura de la entrada, y utilizamos otros medios para mostrar que todos los términos se encuentran dentro de estas invariantes. Prueba teóricamente, esta es una técnica mucho más fuerte, y es por eso que le permite probar resultados de consistencia.

La conexión con las poleas surge del hecho de que a menudo necesitamos razonar sobre términos abiertos (es decir, términos con variables libres) y, por lo tanto, debemos distinguir entre quedarse atascado debido a errores y quedarse atascado debido a la necesidad de reducir una variable. Las gavillas surgen al considerar las reducciones del cálculo lambda como la definición de los morfismos de una categoría cuyos términos son los objetos (es decir, el orden parcial inducido por la reducción), y luego considerar los functores de esta categoría en conjuntos (es decir, predicados). Jean Gallier escribió algunos buenos documentos sobre esto a principios de la década de 2000, pero dudo que sean legibles a menos que ya haya asimilado una buena cantidad de cálculo lambda.


1
¿Podría dar una referencia al documento de Backhouse? Tiene varios que mencionan "conexión de Galois" en el título, pero una búsqueda rápida obviamente no reveló cuál es sobre algoritmos codiciosos (y no creo que esté lo suficientemente familiarizado con el área para leer los detalles y la figura) averiguar fácilmente cuál es "realmente" acerca de los algoritmos codiciosos). ¡Gracias!
Joshua Grochow

1
Junto con la pregunta de Joshua, también estoy interesado en cómo los modelos de gavilla y las relaciones lógicas se relacionan con las pruebas naturales.
Ryan Williams, el

Re: Dualidad de piedra, para un trabajo reciente más emocionante, vea "La dualidad de piedra y los idiomas reconocibles sobre un álgebra" de Mai Gehrke ( math.ru.nl/~mgehrke/Ge09.pdf ) y Gehrke, Grigorieff y Pin "Un enfoque topológico para el reconocimiento "( math.ru.nl/~mgehrke/GGP10.pdf )
Noam Zeilberger

Re: Gallier, te refieres a finales de los 90 (como en sciencedirect.com/science/article/pii/0304397594002800 ?)
Blaisorblade

24

Hay muchos ejemplos, el primero que viene a la mente es el uso de Alex Simpson de la teoría de categorías para probar las propiedades de los lenguajes de programación, ver, por ejemplo, " Adecuación computacional para tipos recursivos en modelos de teoría de conjuntos intuitivos ", Annals of Pure and Applic Logic , 130: 207-275, 2004. Aunque el título menciona la teoría de conjuntos, la técnica es teórica por categorías. Vea la página de inicio de Alex para más ejemplos.


Gracias por las referencias, pero tenga en cuenta que no pregunté: "¿qué resultados se obtuvieron utilizando la teoría de categorías que de otra manera no se podrían obtener?"
Ryan Williams

Es cierto que no lo hiciste. Edité mi respuesta.
Andrej Bauer el

11

Creo que está haciendo dos preguntas sobre aplicabilidad, tipo A y tipo B por separado.

Como observa, hay muchas aplicaciones sustantivas de la teoría de categorías para los temas de tipo B: semántica de lenguajes de programación (mónadas, categorías cerradas cartesianas), lógica y demostrabilidad (topoi, variedades de lógica lineal).

Sin embargo, parece haber pocas aplicaciones sustantivas para la teoría A (algoritmos o complejidad).

Hay algunos usos en los objetos elementales, como describir categorías de autómatas u objetos combinatorios (gráficos, secuencias, permutaciones, etc.). Pero estos no parecen explicar una comprensión más profunda de la teoría del lenguaje o los algoritmos.

Especulativamente, podría ser un desajuste entre las estrategias actuales de la teoría de categorías y los temas de la teoría A:

  • La estrategia central de la teoría de categorías es tratar con la igualdad (cuando las cosas son iguales y cuando son diferentes y cómo se mapean entre sí).

  • Para la teoría de la complejidad, la estrategia principal es la reducción y el establecimiento de límites (uno pensaría que una reducción es como una flecha, pero no creo que se haya estudiado nada más allá de esta similitud superficial).

  • Para los algoritmos, no existe una estrategia global que no sea un pensamiento combinatorio inteligente ad hoc. Para ciertos dominios, esperaría que pudiera haber una exploración fructífera (¿algoritmos para álgebras?) Pero aún no la he visto.


2
Resulta que las reducciones están relacionadas con reconstrucciones categóricas de la interpretación dialéctica de Goedel y la semántica de la lógica lineal. Consulte "Preguntas y respuestas de Andreas Blass: una categoría que surge en la lógica lineal, la teoría de la complejidad y la teoría de conjuntos". math.lsa.umich.edu/~ablass/qa.pdf
Neel Krishnaswami

3

Las aplicaciones "TCS-A" que me vienen a la mente son las especies combinatorias de Joyal (generalizaciones de series de potencias para functores a fin de describir objetos combinatorios como árboles, conjuntos, conjuntos múltiples, etc.) y la formalización de "saltos de juego" criptográficos usando relacionales, lógica probabilística de Hoare (Easycrypt, Certicrypt, el trabajo de Andreas Lochbihler). Si bien las categorías no aparecen directamente en este último, fueron fundamentales en el desarrollo de las lógicas subyacentes (por ejemplo, mónadas).

PD: Dado que mi nombre fue mencionado en la primera respuesta: el uso de fibraciones de grupoides para mostrar la no derivabilidad de un cierto axioma en la teoría de tipos de Martin-Löf por Thomas Streicher y por mí mismo también puede considerarse un uso "sólido" de la teoría de categorías (aunque en lógica o "TCS-B").


3

El libro más reciente Seven Sketches in Compositionality enumera varias aplicaciones de la teoría de categorías en ciencias de la computación e ingeniería. Cabe destacar el capítulo sobre bases de datos donde los autores describen las bases de datos de consulta, combinación, migración y evolución basadas en un modelo categórico. Los autores llevaron esto más lejos y desarrollaron el lenguaje de consulta categórica (CQL) y un entorno de desarrollo integrado (IDE) basado en su modelo categórico de bases de datos.

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.