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).
fuente
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
Transformaciones Gráficas
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.
fuente
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
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.
fuente
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.
fuente
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.
fuente
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").
fuente
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.
fuente