9 votos

¿Cómo surgen las mónadas en matemáticas?

Estoy familiarizado con el concepto de una Mónada en programación, donde se utiliza como marco para expresar una variedad de diferentes tipos de cálculo.

Ha sido una teoría de la categoría básica de aprendizaje y entender la correspondiente formulación de una Mónada como una triple $(T, \mu, \eta)$. ¿Tengo curiosidad sobre cómo surge esta idea de una Mónada en matemáticas? ¿Por qué son interesantes para los matemáticos?

7voto

Derek Elkins Puntos 417

Estoy de acuerdo con algo de lo goblin dice. También estoy en desacuerdo con un par de cosas. Las principales son 1) la sugerencia implícita de que cómo utilizan los programadores mónadas como se va a mirar cómo los matemáticos uso de ellos, y 2) que las mónadas se utilizan para "expresar estructuras de datos". Muchos "nociones de cálculo" no se corresponden con el significado coloquial de "estructura de datos", e incluso los que dudo que muchos describen como "expresada" por mónadas, a menos que de pasar a ser algo como una mónada. Estoy de acuerdo con Ian comentario que mucho de la importancia de las mónadas a los matemáticos tiene que ver con su relación con adjoint functors. Yo creo que el goblin se va a ir en una dirección buena hablando de álgebra universal, y es probablemente similar a lo que yo voy a hablar. Espero que vaya en explícito detalles concretos.

Estoy en su mayoría no vamos a hablar de cómo surgió históricamente, pero brevemente, que se definieron por primera vez por Roger Godement , en 1958, en un artículo sobre la gavilla de la teoría en el contexto de la Topología Algebraica. Suena como que, en realidad, él introdujo la noción de un comónada como contraposición a una mónada, y él utiliza el término "norma de construcción". Estoy completamente de adivinanzas aquí ya que no tengo acceso al artículo, pero tengo la sospecha de que él era la definición de un comonad para organizar la degeneración y la cara de los mapas de un complejo simplicial o similar. Me encantaría si alguien puede comprobar o corregir esta en los comentarios. La idea de lo que estoy pensando que puede ser (demasiado) de forma compacta describe de la siguiente manera: La aumentada simplex categoría, $\Delta_+$, puede ser caracterizada como la libre categoría monoidal con un monoid objeto. Un (aumentada) simplicial objeto en una categoría $\mathcal{C}$ es un functor $\Delta_+^{op} \to \mathcal{C}$. El universal propiedad de $\Delta_+$ significa un monoidal functor de cualquier (monoidal) categoría es la misma cosa como una monoid objeto en esa categoría. Usted probablemente ha oído hablar de las mónadas se describe como "monoid objetos en la categoría de endofunctors", y, efectivamente, una mónada en una categoría $\mathcal{C}$ es equivalente a un monoidal functor $\Delta_+ \to [\mathcal{C},\mathcal{C}]$. Un comonad es un functor $\Delta_+^{op} \to [\mathcal{C},\mathcal{C}]$. El resultado de esto es que cada comonad en una categoría $\mathcal{C}$ da lugar a un objeto simplicial en $\mathcal{C}$ (a pesar de que no todos los simplicial objeto surge de esta manera).

Si usted salir y mirar cómo las mónadas son utilizados por categorists, usted probablemente encontrará que no se parece nada a cómo las mónadas se utilizan, por ejemplo, en Haskell. Algunos de los que es porque están siendo utilizados para diferentes cosas; muy de vez en cuando es sólo diferencias en la presentación. Quiero referirme a un aspecto que es bastante diferencia concreta, se pone de relieve algunas de las diferencias de énfasis entre los matemáticos y programadores, y es uno de los más importantes e impresionantes ejemplos de la teoría de la mónada.

Como ha sido mencionado, y como usted probablemente sabe, las mónadas están relacionados con adjunctions. Dado cualquier contigüidad $F \dashv U$, obtenemos una monada $T = UF$ (y un comonad $G = FU$). Una pregunta natural es: ¿podemos obtener una contigüidad dado una monada? La respuesta es "sí, de muchas maneras" y hay dos, no necesariamente distintos, extrema enfoques. Existe un método que utiliza la Kleisli categoría que usted probablemente ha oído hablar de antes. El otro enfoque utiliza la Eilenberg-Moore categoría.

Un objeto de la Eilenberg-Moore categoría para una monada, $T$, es llamado un $T$-álgebra y consta de un par de un objeto $A$ y una flecha $e : TA \to A$ que satisface un montón de leyes que son de importancia para nosotros. Ahora resulta que el Kleisli categoría es equivalente a la subcategoría de Eilenberg-Moore categoría que consta de objetos de $\mu_A : T^2 A \to TA$ donde $\mu : T^2 \to T$ es la monádica de la multiplicación, es decir, join en Haskell. Para la concreción y porque es un simple y relevante ejemplo, vamos a configurar $T$ a ser el libre monoid mónada, es decir, la lista mónada. Voy a utilizar la sintaxis de Haskell, por lo $TA = [A]$. Ahora, resulta que el álgebra, $e$, da lugar a una monoid estructura en $A$ través $a*b \equiv e([a,b])$$1 \equiv e([])$. El $T$-álgebra leyes implica la monoid leyes. Por lo tanto, cada $T$-álgebra es en realidad un monoid, y es inmediato a partir de la definición de "libre monoid" que cada monoid da lugar a una $T$-álgebra. En otras palabras, la categoría de monoids es equivalente a la categoría de $T$-álgebras de donde $T$ es el libre monoid mónada. En general, si existe una contigüidad $F \dashv U : \mathcal{D} \to \mathcal{C}$ que conduce a esta situación, podemos decir que $\mathcal{D}$ es monádico $\mathcal{C}$. En nuestro caso, $U : \mathbf{Mon} \to \mathbf{Set}$, el conjunto subyacente functor, lleva a la categoría de monoids ser monádico $\mathbf{Set}$. Ahora, cuando esto se pone interesante es que esto funciona para cualquier categoría de estructuras algebraicas, por ejemplo, anillos, grupos, redes, álgebras. Ahora el estudio general de monádico categorías puede dar los resultados que se aplican a todas las estructuras algebraicas. Es realmente mejor que eso. Cada monádico ($\mathbf{Set}$ al menos) categoría es "algebraica" en un poco más de sentido general que la definición tradicional. Esto conduce a la algebraica de las presentaciones de las cosas que pueden no ser, obviamente, algebraicas, por ejemplo, compacto Hausdorff espacios topológicos.

Debe ser razonablemente claro que el Kleisli categoría, en nuestro ejemplo, corresponde a la subcategoría de libre monoids. Los programadores tienden a centrarse en las estructuras algebraicas con lawless presentaciones (que son necesariamente gratis). La mayoría de los tipos de datos algebraicos (polinomio) corresponden a lawless algebraicas teorías. (Los que no no corresponden a teorías algebraicas para la mayoría razones técnicas.) La mayoría de las estructuras algebraicas matemáticos interesan son sin ley, o incluso gratis. Finito dimensionales espacios vectoriales son todos gratuitos, y, efectivamente, están bien estudiados por los programadores.

1voto

goblin Puntos 21696

El primer punto que me gustaría hacer es que la programación y las matemáticas no son diferentes como usted podría pensar. Un pequeño experimento mental: supongamos que por "programación" significa "escritura de funciones matemáticas el uso de un no-necesariamente-puro-lenguaje de programación funcional." Bajo esta definición, la programación es en realidad un caso especial de las matemáticas; es un estilo de las matemáticas que consiste en describir las funciones matemáticas en altamente no-lenguajes expresivos que tienen la ventaja de ser computacionalmente factible. Y, por supuesto, usted podría ir a hacer matemáticas con tales funciones, por supuesto - como probando que están total, que hacer o que no muestran ciertos comportamientos, etc. Así que al menos en principio, la programación es sólo una pequeña porción de las matemáticas. Por supuesto, esto pasa por alto un montón de detalles, como el hecho de que la "programación" puede implicar escribir aplicaciones en tiempo real, y que los programadores escriben a menudo muy complicados programas que son básicamente imposible razonar acerca de. Y, en la práctica, el programador tiene un muy distintas habilidades y tienden a utilizar sus habilidades de manera muy diferente. De todos modos, este experimento sugiere que cualquier cosa mónadas son utilizadas en la programación, que probablemente se utiliza para lo mismo que en matemáticas, también. Se usan para expresar estructuras de datos, derecho? Por ejemplo, si usted tiene un tipo de valores de $X$, y usted desea construir el tipo correspondiente a las listas en $X$, se podría aplicar la lista de la mónada a $X$ para obtener un nuevo tipo de $X^*$ cuyos valores son listas de valores en $X$. Así, en matemáticas que hacen exactamente lo mismo, excepto que llamamos $X$ un conjunto, y nos referimos a sus elementos, en lugar de sus valores y de la $X \mapsto X^*$ se llama la "palabra mónada", o mejor aún, de la "libre monoid mónada."

Esto me lleva a mi segundo punto, que es que las mónadas se utilizan en álgebra universal.

[Respuesta a ser más tarde siguió...]

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X