¿Cuáles son los usos de los límites y los colímites de la teoría de categorías en los problemas cotidianos?


9

¿Me interesa saber cómo podemos usar los conceptos de Límites y Colimits para modelar problemas en la vida cotidiana? ¿Podría alguien proporcionar ejemplos de ingeniería (de software), tal vez? ¿O describir intuitivamente en general para qué tipo de problemas de modelado podemos usar estos conceptos? Gracias.


1
En todas partes se utiliza esta biblioteca, hackage.haskell.org/package/data-category-0.5.1/docs/…
Chad Brewbaker

3
Lo que lamentablemente no está en ninguna parte, un hecho ...
Sjoerd Visscher

1
Consulte el capítulo sobre teoría de categorías en el manual de lógica en cs.
Kaveh

Respuestas:


7

Tome algunas relaciones , R 1A 1 × A 2 . Sea π 1 : R 0A 1 , π 0 : R 1A 1 sean proyecciones con dominios restringidos a las relaciones R 0 , R 1 . Entonces el retroceso de π 0 , π 1 es la unión de R 0 yR0 0UNA0 0×UNA1R1UNA1×UNA2π1:R0 0UNA1π0 0:R1UNA1R0 0R1π0 0π1R0 0 en el sentido de SQL.R1


5

Un buen ejemplo es la Generación de optimizaciones del compilador de Tate et al. A partir de pruebas . Utiliza retrocesos y expulsiones como uniones e intersecciones generalizadas, en categorías donde las flechas son sustituciones (IIRC).

Ross Tate afirma (en la página web en papel) que los detalles eran abrumadores sin la abstracción que ofrece la teoría de categorías. Personalmente, me gustaría presentar como "evidencia sugestiva" (si puede haber evidencia de tal afirmación) los diagramas (6) y (7) en su documento, se ven lo suficientemente complejos en forma de diagrama. Permítanme citar sus comentarios en línea.

Algunos nos han preguntado por qué abstrajimos nuestra técnica de generalización de pruebas y por qué utilizamos la teoría de categorías como nuestra abstracción. Sin embargo, en realidad diseñamos el algoritmo abstracto primero, usando la teoría de categorías, y luego lo usamos para descubrir cómo resolver nuestro problema concreto. Nos quedamos atrapados con el problema concreto, abrumados por los detalles y las variables, y cualquier solución que pudiéramos pensar parecía arbitraria. Para reflexionar y simplificar, decidimos formular nuestra pregunta categóricamente. Esto condujo a un diagrama de fuentes y sumideros, por lo que solo usamos pushouts y retrocesos para unir las cosas. El mayor desafío consistía en completar las modificaciones, en lugar de utilizar algún concepto estándar existente. La formulación categórica fue fácil de especificar y razonar. Luego, instanciamos los procesos abstractos,

De hecho, hemos encontrado que este proceso de abstracción a la teoría de categorías cada vez que nos atascamos es bastante fructífero. No solo termina resolviendo nuestro problema concreto, sino que terminamos con una mejor comprensión de nuestro propio problema, así como una solución abstracta que se puede adaptar fácilmente a otras aplicaciones. Por lo tanto, nuestra experiencia sugiere que la teoría de categorías puede ser útil para construir algoritmos reales, además de ser útil como marco para la formalización. Nos interesaría conocer otras experiencias similares, ya sean positivas o negativas.


4

En el libro de Spivak en la página 192, da un ejemplo del uso de colimits para crear mapas de tránsito . Además, su Aplicación 5.2.1.2 discute la aplicación de parches similares a Liquibase a un esquema de base de datos a lo largo del tiempo y luego usa los colimits para razonar entre datos antiguos y nuevos de manera universal.


4

Un amplio campo de aplicaciones se encuentra en las transformaciones de gráficos (aplicadas en la ingeniería basada en modelos). Dos documentos relevantes son (dados con enlaces a Google Scholar):

EDITAR: nuevamente, (parte de) la idea básica es que los pushouts actúan como una unión con algo de pegamento. Esto permite definir "reglas de reescritura" para los gráficos: puede hacer coincidir el lado izquierdo con el gráfico y luego pegar el lado derecho al (resto del) gráfico de la manera correspondiente. Me temo que no puedo agregar detalles porque nunca he tenido más que la intuición.


Una mejor explicación está en esta respuesta de Dave Clarke: cstheory.stackexchange.com/a/947/989
Blaisorblade
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.