En ocasiones será útil señalar explícitamente la categoría sobre la que
se consideran los morfismos. En esos casos se notará con un subíndice,
como $\mathrm{Hom}\cal C(A,B)$. Al conjunto
[fn:clase]: En la definición hemos usado explícitamente conjuntos grandes, más comúnmente llamados clases, en lugar de conjuntos. En el futuro querremos trabajar con categorías que contengan como objetos a todos los conjuntos posibles; pero este tipo de construcciones causan problemas en la teoría axiómatica de conjuntos tales como la paradoja de Russell, así que usaremos esta definición más general para evitarlas.
[fn:clasemorfismo]: Nótese que la clase de morfismos entre dos objetos no tiene por qué ser un conjunto en lugar de una clase. Las categorías con las que trabajaremos, donde efectivamente es un conjunto, se llaman categorías localmente pequeñas.
Vamos a crear una categoría como ejemplo. En nuestra categoría, los
objetos serán
\[\begin{tikzcd}
a \ar{dr}[swap]{h} \rar{f} &
b \dar{g}
& c
\end{tikzcd}\]
donde la única composición posible, además de las de las identidades,
la definimos como
Para comprobar cómo coincide con nuestra definición usual de monoide,
debemos considerar los morfismos
Nótese que cada categoría discreta viene determinada por una clase de objetos y cada clase (o conjunto) de objetos define una única categoría discreta.
Un ejemplo de relación de orden con sus morfismos podría ser la de
los divisores de
\[\begin{tikzcd}
& 12 &
6 \urar & & 4 \ular \
3 \ar{uur} \uar & & 2\uar\ar{ull}\ar{uul} \
& 1 \ular\urar\ar{uuu}\ar{uur}\ar{uul} & &.
\end{tikzcd}\]
Como en el caso de los monoides, podemos tomar los automorfismos del objeto como los elementos del grupo.
Consideremos la inclusión
Sin embargo no es un isomorfismo, no existen homeomorfismos entre
Nótese que una categoría no tiene por qué tener objetos terminales, ni tienen por qué ser únicos; pero sí serán únicos salvo isomorfismos.
En la categoría de los conjuntos, podemos tomar los conjuntos
siguientes
- Un primer candidato a producto será el propio conjunto de símbolos
$A$ con la identidad hacia el propio$A$ y una asignación constante de cualquier símbolo al número$1$ , la función$k(∗) = 1$ .\[\begin{tikzcd}[rowsep=tiny] & A \dlar[swap]{\mathrm{id}}\drar{k} &
A && B &. \end{tikzcd}\]Sin embargo, podemos demostrar que este no es un producto válido. En concreto, como la función
$k$ no es sobreyectiva, podemos simplemente crear un par de morfismos desde el conjunto de un sólo elemento,$\left\{ x \right\}$ , que lleguen a elementos fuera de su imagen\[\begin{tikzcd}[rowsep=tiny] & \left\{ ∗ \right\} \dar[dashed]{?} \ar[bend left]{ddr}{x \mapsto 3}\ar[bend right,swap]{ddl}{x \mapsto ♦} &
& A \drar{k}\dlar[swap]{\mathrm{id}} & \ A && B &, \end{tikzcd}\]y no podremos colocar ningún morfismo que haga cumplir la propiedad del producto. De aquí extraemos que el producto debe ser “suficientemente grande” como para que todos los morfismos puedan escribirse pasando por él, cumplir la propiedad de existencia.
- Un segundo candidato a producto será
$D$ , un conjunto formado por dos números de$B$ y un símbolo de$A$ , es decir\[ D = \left\{ n∗ m \mid ∗ ∈ A, n,m ∈ B \right\} \]
- Nuestro tercer candidato a producto será
$C$ , el conjunto de los pares de elementos de$A$ y$B$ , es decir\[ C = \left\{ n∗ \mid ∗ ∈ A, n ∈ B \right\}, \]
que tendrá elementos como
$3♠$ , con las proyecciones usuales$p_∗,p_n$ , que simplemente devuelven el número o el símbolo sin tener en cuenta el otro.\[\begin{tikzcd}[rowsep=tiny] & C \dlar[swap]{p_1}\drar{p_2} &
A && B &. \end{tikzcd}\]
En un lenguaje de programación funcional puro, hay casos donde podemos formar una categoría que tiene a los tipos como objetos y a las funciones entre ellos como morfismos. Vamos a motivar la definición del producto dentro de esta categoría. En particular, usaremos Haskell.
Supongamos que queremos calcular el producto de los objetos Int
y
String
. Primero tenemos que buscar un tipo que tenga dos funciones
hacia cada uno de ellos, por ejemplo, los tipos Bool
, (Int,String)
o (Int,Int,String)
tienen esta propiedad.
Podemos crear funciones del tipo Bool
a cada uno de los tipos
boolInt :: Bool -> Int
boolInt True = 1
boolInt False = 0
boolString :: Bool -> String
boolString True = "true"
boolString False = "false"
del tipo (Int,String)
a cada uno de los tipos
intstringint :: (Int,String) -> Int
intstringint (i,s) = i
intstringstring :: (Int,String) -> String
intstringstring (i,s) = s
o incluso del tipo (Int,Int,String)
a cada uno de los tipos
intstringint :: (Int,String) -> Int
intstringint (i,s) = i
intstringstring :: (Int,String) -> String
intstringstring (i,s) = s
por lo que tenemos tres candidatos a producto. Ahora comprobaremos que sólo uno de ellos cumple la condición del diagrama
\[\begin{tikzcd}[rowsep=tiny]
& D \dar[dashed]{∃! h} \ar[bend left]{ddr}{f_1}\ar[bend right,swap]{ddl}{f_2} &
& C \drar{π_B}\dlar[swap]{π_A} & \
A && B &.
\end{tikzcd}\]
En la categoría de los conjuntos, el conjunto vacío
El producto de dos conjuntos será su producto cartesiano
Dado un dominio de discurso, una proposición lógica
El objeto inicial de esta categoría es una proposición que implica
todas las demás, la proposición falso
El objeto producto de
Vídeos y artículos de introducción a la teoría de categorías.
- Bartosz Milewski - Category theory for programmers (Youtube).
- Bartosz Milewski - Posts on category theory.
- The Catsters - Videos on category theory.
Libros sobre álgebra y teoría de categorías básica.
- Aluffi, Paolo - /Algebra, Chapter 0/. El inicio y la estructura de estos apuntes están basados en este libro. Presenta una introducción general al álgebra, pero usando como base la teoría de categorías.
bibliographystyle:unsrt bibliography:math.bib
Libros sobre álgebra y teoría de categorías.
- Mac Lane, Saunders - /Categories for the working mathematician/. Es un libro completo dando una introducción general a teoría de categorías.