Categorías, Funtores y Transformaciones Naturales
Categorías
Hay muchas formas diferentes de introducir categorías. Dependiendo el contexto de cada quien alguna podría ser más natural que otra. Como esta introducción será independiente del contexto, vamos a dar una definición sin intentar motivar la necesidad de escribirla.
Definición
Una categoría \(\mathsf{C}\) consta de una colección de objetos \(\text{Obj}(\mathsf{C})\) y una colección de flechas \(\text{Arr}(\mathsf{C})\). Cada flecha \(f\) tiene un dominio y un codominio, denotados por \(\text{dom}(f)\) y \(\text{cod}(f)\) respectivamente. Además, si \(\text{dom}(g)=\text{cod}(f)\), entonces existe una flecha composición \(g\circ f\) con dominio \(\text{dom}(f)\) y codominio \(\text{cod}(g)\). Cada objeto \(A\) tiene una flecha identidad \(\text{id}_A\). Todo lo anterior debe satisfacer los siguientes axiomas:
- Asociatividad: para cualesquiera flechas \(f,g,h\) tales que las composiciones tengan sentido, se tiene que \((h\circ g)\circ f=h\circ(g\circ f)\).
- Identidad: para cualquier flecha \(f\), se cumple \(f\circ\text{id}_{\text{dom}(f)}=f=\text{id}_{\text{cod}(f)}\circ f\).
Usaremos la notación común para denotar una flecha, su dominio y codominio, \(f\colon A\to B\). Además, \(\mathsf{C}(A,B)\) denotará la colección de flechas de \(A\) a \(B\) en la categoría \(\mathsf{C}\). Los objetos de una categoría serán denotados con letras mayúsculas, \(A,B,C,\dots\), la flechas con letras minúsculas \(f,g,h,\dots\). Escribiremos \(A\in\mathsf{C}\) como abreviatura de \(A\in\text{Obj}(\mathsf{C})\) y \(f\in\mathsf{C}\) como abreviatura de \(f\in\text{Arr}(\mathsf{C})\).
El ejemplo más básico de una categoría es la categoría de conjuntos \(\mathsf{Con}\), donde los objetos son conjuntos y las flechas son funciones. En esta categoría, la composición es la composición de funciones usual y las flechas identidad son las funciones identidad. En este caso ya sabemos que la composición es asociativa y las identidades son neutros para la composición.
Otro ejemplo es la categoría de grupos \(\mathsf{Grp}\), donde los objetos son grupos y las flechas son morfismos de grupos. El hecho que sea una categoría se “hereda” de \(\mathsf{Con}\), ya que los grupos son conjuntos con estructura y los morfismos de grupos son funciones que respetan la estructura.
De la misma manera que en grupos hay una colección grande de ejemplos de categorías cuyos objetos son conjuntos con estructura y las flechas son funciones que respetan la estructura. Por ejemplo, anillos, espacios vectoriales, espacios topológicos, etc.
Un ejemplo diferente a los anteriores consiste en tomar un preorden \(\langle P,\leq\rangle\) y considerar la categoría \(\mathsf{P}\) donde los objetos son los elementos de \(P\) y hay una flecha \(x\to y\) si y sólo si \(x\leq y\). La composición está dada por la transitividad del orden y las identidades por la reflexividad. Lo que hace especial a esta categoría es que entre cada par de objetos hay a lo más una flecha.
En el ejemplo de preorden vimos una categoría con muchos objetos y pocas flechas. Ahora veremos el ejemplo opuesto. Consideramos un monoide \(\langle M,\cdot,e\rangle\) y la categoría \(\mathsf{M}\) donde hay un solo objeto \(*\) y las flechas son los elementos de \(M\). La composición está dada por la multiplicación del monoide, \(n\circ m=n\cdot m\), y la identidad es el neutro.
Un ejemplo de categoría que nos será útil consiste en tomar una categoría \(\mathsf{C}\) y considerar la categoría opuesta \(\mathsf{C}^{\text{op}}\) cuyos objetos son los mismos que los de \(\mathsf{C}\) y hay una flecha \(A\to B\) en \(\mathsf{C}^{\text{op}}\) si y sólo si hay una flecha \(B\to A\) en \(\mathsf{C}\). Invertir el sentido de las flecha induce un composición dada por la composición en \(\mathsf{C}\) y las identidades son las mismas.
Funtores
Después de introducir un tipo de estructura matemática es común decir cómo se transforma una de estas estructuras en otra. En el caso de categorías, la forma de hacer esto es mediante funtores.
Definición
Sean \(\mathsf{C}\) y \(\mathsf{D}\) dos categorías. Un functor (covariante) consta de dos asignaciones, \(F_0\colon\text{Obj}(\mathsf{C})\to\text{Obj}(\mathsf{D})\) y \(F_1\colon\text{Arr}(\mathsf{C})\to\text{Arr}(\mathsf{D})\), que cumplen las siguientes condiciones:
- \(\text{dom}(F_1 f)=F_0\text{dom}(f)\) y \(\text{cod}(F_1 f)=F_0\text{cod}(f)\).
- Para cada objeto \(A\in\mathsf{C}\), se tiene que \(F_1\text{id}_A=\text{id}_{F_0 A}\).
- Para cada par de flechas \(f,g\) tales que la composición tiene sentido, se tiene que \(F_1(g\circ f)=F_1 g\circ F_1 f\).
No es común hacer la distinción entre las dos asignaciones que forman a un funtor, así que ambas se denotan con \(F\). El primer punto de la definición nos dice un funtor preserva flechas, es decir, si \(f\colon A\to B\) es una flecha en \(\mathsf{C}\), entonces \(Ff\colon FA\to FB\) en \(\mathsf{D}\).
Si tomamos dos preórdenes y sus categorías asociadas, un funtor \(F\colon\mathsf{P}\to\mathsf{Q}\) es una función que preserva el orden. De manera similar, si consideramos dos monoides, entonces un funtor entre sus categorías correspondientes \(F\colon\mathsf{M}\to\mathsf{N}\) es un morfismo de monoides.
Otro ejemplo de funtor es el funtor que olvida. Por ejemplo, si tomamos la categoría de grupos \(\mathsf{Grp}\) y un grupo \(\langle G,\cdot,e\rangle\), entonces podemos olvidar la estructura de grupo y considerar el conjunto \(G\). De la misma manera, dado un morfismo de grupos \(f\colon G\to H\), podemos olvidar que preserva la estructura y quedarnos sólo con la función \(f\colon G\to H\). No es difícil ver que estas asignaciones describen un funtor \(U\colon\mathsf{Grp}\to\mathsf{Con}\).
Para el siguiente ejemplo consideramos la categoría generada por un monoide, \(\mathsf{M}\), y la categoría de conjuntos \(\mathsf{Con}\). Un funtor \(F\colon\mathsf{M}\to\mathsf{Con}\) tiene que mandar el único objeto de \(\mathsf{M}\) a un conjunto \(X\) y las flechas de \(\mathsf{M}\) a funciones de \(X\) en \(X\). La condición de que sea un funtor implica que la función \(Fe\colon X\to X\) es la función identidad y que la función \(F(n\cdot m)\) es la composición de \(Fn\circ Fm\). Si denotamos con \(x\cdot m\) a \(Fm(x)\), entonces las condiciones de funtor se traducen en que \(x\cdot e=x\) y \((x\cdot m)\cdot n=x\cdot(m\cdot n)\). Finalmente, si “unimos” todas las \(Fm\) en una sola función \(X\times M\to X\) tal que \((x,m)\mapsto x\cdot m\), entonces la condición de funtor se traduce en que esta función es una acción.
Definición
Un functor contravariante entre dos categorías \(\mathsf{C}\) y \(\mathsf{D}\) es un funtor covariante \(F\colon\mathsf{C}^{\text{op}}\to \mathsf{D}\).
Si escribimos la definición de funtor contravariante en términos de la categoría \(\mathsf{C}\), obtenemos que un funtor contravariante \(F\colon\mathsf{C}\to\mathsf{D}\) manda a una flecha \(f\colon A\to B\) en \(\mathsf{C}\) a una flecha \(Ff\colon FB\to FA\) en \(\mathsf{D}\). Como cambió el sentido de las flechas, la composición también cambia de orden, es decir, \(F(g\circ f)=Ff\circ Fg\).
Un vez que tenemos los conceptos de categoría y funtor podemos definir la categoría de categorías \(\mathsf{Cat}\). Los objetos de \(\mathsf{Cat}\) son categorías y las flechas son funtores. No es difícil ver que la composición de funtores en un funtor, que la identidad de una categoría es un funtor y que la composición es asociativa.
Transformaciones Naturales
La teoría de categorías enfatiza la importancia de las relaciones. En la definición de categoría no se dice de qué están formados los objetos ni cómo se evalúan las flechas. En este sentido las flechas sólo son una forma de decir que hay una relación entre el dominio y el codominio.
Siguiendo la idea de enfatizar relaciones, ya tenemos algunas relaciones dadas por las flechas e una categoría, también tenemos relaciones dadas por funtores. El siguiente paso es ver cuándo hay una relación entre relaciones.
Definición
Sean \(\mathsf{C}\) y \(\mathsf{D}\) dos categorías y \(F,G\colon\mathsf{C}\to\mathsf{D}\) dos funtores. Una transformación natural \(\tau\colon F\to G\) es una familia de flechas en \(\mathsf{D}\), \(\tau_A\colon FA\to GA\), una para cada objeto \(A\in\mathsf{C}\), tal que para cada flecha \(f\colon A\to B\) en \(\mathsf{C}\) el siguiente diagrama conmuta:
\[\begin{CD} A \\ @V f VV \\ B \end{CD} \qquad \begin{CD} FA @>\tau_A>> GA\\ @V Ff VV @VV Gf V\\ FB @>>\tau_B> GB \end{CD}\]
Las flechas \(\tau_A\) se llaman componentes de la transformación natural. Dos transformaciones naturales son iguales si los son por componentes.
Notemos que la identidad \(\iota\colon F\to F\) es una transformación natural. Además si \(\tau\colon F\to G\) y \(\sigma\colon G\to H\) son transformaciones, entonces la composición \(\sigma\circ\tau\colon F\to H\) cuya componente en \(A\) es \(\sigma_A\circ\tau_A\) es una transformación natural.
Las observaciones anteriores nos dicen que podemos formar una categoría cuyos objetos son funtores entre dos categorías y las flechas son transformaciones naturales. Esta categoría se llama la categoría de funtores y se denota con \(\mathsf{D}^{\mathsf{C}}\).
Los preórdenes nos dan un ejemplo relativamente sencillo de transformaciones naturales. Ya vimos que un funtor entre dos preórdenes es una función que preserva el orden. Así, si \(F,G\colon\mathsf{P}\to\mathsf{Q}\) son dos funtores, entonces las componentes para formar una transformación natural entre ellos deben ser desigualdades en \(\mathsf{Q}\), es decir, la felacha \(\tau_A\colon FA\to GA\) debe ser \(FA\leq GA\). Como hay una flecha por cada elemento de \(P\), entonces para cada \(x\in P\) se tiene que \(Fx\leq Gx\). Luego, como en una categoría de proeorden hay a lo más una flecha entre cada dos objetos, entonces todo diagrama es conmutativo. Por lo tanto, hay una transformación natural si y sólo si \(Fx\leq Gx\) para todo \(x\in P\).
Supongamos que \(\mathsf{M}\) es la categoría generada por un monoide y que \(F,G\colon\mathsf{M}\to\mathsf{Con}\) son dos funtores, es decir, dos acciones \(\alpha\colon X\times M\to X\) y \(\beta\colon Y\times M\to Y\), respectivamente. Una transformación natural entre \(F\) y \(G\) tiene una componente \(f=\tau_{*}\colon X\to Y\). Esta función debe hacer conmutar el siguiente diagrama, para cada \(m\in M\):
\[\begin{CD} * \\ @V m VV \\ * \end{CD} \qquad \begin{CD} X @>f>> Y \\ @V Fm VV @VV Gm V \\ X @>>f> Y \end{CD}\]Si reescribimos el diagrama anterior en términos de las acciones, obtenemos que
\[\begin{CD} X \times M @>\alpha>> X \\ @V f\times\text{id} VV @VV f V \\ Y\times M @>>\beta> Y \end{CD}\]conmuta, es decir, una transformación natural es un morfismo de acciones.
Otros ejemplos de transformación natural son en las que uno de los funtores es constante. Consideramos dos categorías \(\mathsf{C}\) y \(\mathsf{D}\) y un objeto \(D\in\mathsf{D}\). El funtor constante \(F\colon\mathsf{C}\to\mathsf{D}\) manda a cada objeto de \(\mathsf{C}\) a \(D\) y a cada flecha a la identidad de \(D\). Si \(G\colon\mathsf{C}\to\mathsf{D}\) es otro funtor, entonces una transformación natural \(\tau\colon F\to G\) es una familia de flechas \(\tau_A\colon D\to GA\), tal que para cada flecha \(f\colon A\to B\) en \(\mathsf{C}\) el siguiente diagrama conmuta:
\[\begin{CD} D @>\tau_A>> GA \\ @V \text{id}_D VV @VV Gf V \\ D @>>\tau_B> GB \end{CD}\]El objeto \(D\) que satisface lo anterior es el vértice del cono \(\tau\).
Si ahora consideramos una transformación natural \(\sigma\colon G\to F\), entonces el diagrama de arriba se invertirá y \(D\) será el vértice del cocono \(\sigma\).