Teoría de categorías
Una visión general con aplicaciones a la computación
Juan Marín Noguera
Julio de 2023
Tutor: Alberto del Valle Robles
Facultad de Matemáticas
Universidad de Murcia
Motivation
- Known as abstract nonsense.
- Common vocabulary
- Isomorphisms
- Products
- Kernels
- Quotients
- etc.
- Intuitive reasoning across fields
- Rigorous transfer of knowledge across fields
Motivation
General results, appliable to a lot of fields
- Abbreviate rutinary parts of proofs
- Exploration of new areas
- Diagram chasing
Bibliography
- Adámek, Jiří & Herrlich, Horst & Strecker,
George. Abstract and Concrete Categories: The Joy of Cats
(1990).
- Mac Lane, Saunders. Categories for the
Working Mathematician (1971).
- Riehl, Emily. Category Theory in Context
(2014).
- Some proofs and examples are mine.
Categories
- Collections $\text{Ob}(\mathcal{C})$ and
$\text{Mor}(\mathcal{C})$.
- Functions $\text{dom},\text{cod}:\text{Mor}(\mathcal{C})\to\text{Ob}(\mathcal{C})$.
- $f:a\to b$ means $\text{dom}\,f=a$ and $\text{cod}\,f=b$.
- For $f:a\to b$ and $g:b\to c$, $g\circ f:a\to c$.
- For every $a\in\text{Ob}(\mathcal{C})$, $1_a:a\to a$.
- Construct: Category
made
up of sets and functions.
Monomorphisms and epimorphisms
- Monomorphism:
$f:a\rightarrowtail b$ such that for every $g,h:k\to a$, $f\circ
g=f\circ h\implies g=h$.
- Epimorphism: $f:a\twoheadrightarrow
b$ such that for every $g,h:b\to q$, $g\circ f=h\circ f\implies
g=h$.
- Dual category: the same
category but with direction of arrows (and composition) reversed.
- Dual property: The same
property in the dual category or categories.
Monomorphisms and epimorphisms
Funtores
Morfismos
de categorías.
- Función $T_0:\text{Ob}(\mathcal{C})\to\text{Ob}(\mathcal{D})$.
- Para $a,b\in\text{Ob}(\mathcal{C})$, \[T_{a,b}:\hom(a,b)\to\hom(T_0a,T_0b).\]
- $1_{T(a)}=T(1_a)$.
- $T(g)\circ T(f)=T(g\circ f)$.
- Categoría $\mathbf{Cat}$ de categorías pequeñas y funtores.
Transformaciones naturales
- Sea $V$ un espacio vectorial de dimensión finita.
- $V\cong V^*$, pero en general no hay un isomorfismo
canónico
.
- $V\cong V^{**}$, isomorfismo
natural
$v\mapsto(f\mapsto f(v))$.
- Morfismos que
actúan siempre igual
.
- Dados dos funtores
$S,T:\mathcal{C}\to\mathcal{D}$,
función
$\tau:\text{Ob}(\mathcal{C})\to\text{Mor}(\mathcal{D})$
tal que:
Flechas universales
Sean $U:\mathcal{C}\to\mathcal{B}$ un funtor y
$b\in\text{Ob}(\mathcal{B})$.
-
$\mathbf{Mon}\to\mathbf{Set}$:
$c=\left(\bigcup_nb^n,\bullet\right)$, $ux=(x)$.
-
$R\text{-}\mathbf{Mod}\to\mathbf{Set}$: $c=R^b$, $ux$ en la
base.
Flechas universales
Sean $T:\mathcal{B}\to\mathcal{C}$ un funtor y
$c\in\text{Ob}(\mathcal{C})$.
-
$\mathbf{Mon}\to\mathbf{Set}$:
$c=\left(\bigcup_nb^n,\bullet\right)$, $ux=(x)$.
-
$R\text{-}\mathbf{Mod}\to\mathbf{Set}$: $c=R^b$, $ux$ en la
base.
Adjunciones
Si todo objeto de $\mathcal{B}$ admite flecha
universal hacia $G$...
\[(F,G,\eta,\varepsilon):\mathcal{B}\to\mathcal{C}\]
- $G:\mathcal{C}\to\mathcal{B}$ suele ser un funtor olvidadizo.
- $F:\mathcal{B}\to\mathcal{C}$ es el funtor libre.
- $\eta:1_{\mathcal{B}}\to GF$ es la unidad.
- $\varepsilon:FG\to 1_{\mathcal{C}}$ es la counidad.
- $G\varepsilon\cdot\eta G=1_G$
- $\varepsilon F\cdot F\eta=1_F$
Mónadas
- $T:\mathcal{C}\to\mathcal{C}$
- $\eta:1_{\mathcal{C}}\to T$
- $\mu:T^2\to T$
- $T=\mathcal{P}$
- $\eta_X(x)=\{x\}$
- $\mu_X(\mathcal{X})=\bigcup\mathcal{X}$
- $T=GF$
- $\eta=\eta$
- $\mu=G\varepsilon F$
Categorías en programación
Programación imperativa |
Programación funcional |
Estado accedido por variables.
List<Item> list = new List<>(); int index;
|
Variables que representan valores.
let list = [item1, item2, ...]
|
Comandos que modifican el estado.
list.insert(index, item1); int sum = 0; for (int i = 0; i < list.size(); i++) sum += list[i].price();
|
Expresiones matemáticas.
$\sum_{x\in\text{list}}\text{price}(x)\rightsquigarrow$List.sum(List.map Item.price list)
|
Procedimientos.
void printItem(Item item) { System.out.println(item.name().toString()); }
|
Funciones puras.
itemData item = Int.to_string (item.name)
|
Programación funcional
- Cálculo lambda
- $x$
- $(\lambda x.M)$
- $(M\,N)$
- $(\lambda x.M[x])\to_\alpha(\lambda y.M[y])$
- $((\lambda x.M)\,E)\to_\beta(M\{E/x\})$
- $(\lambda x.M[x])\to_\eta M$
- Teoría de categorías
- Cada expresión tiene un tipo.
- Las funciones (computables) de un
tipo $a$ a un tipo $b$ tienen tipo $a\to b$.
- Objetos: Tipos de dato.
- Morfismos:
Elementos de tipo $a\to b$.
Mónada IO
- Las funciones puras no pueden, p. ej., mostrar
datos por pantalla o interactuar con el usuario.
- Para cada tipo $a$, un tipo $\mathtt{IO}\,a$ de
las acciones que devuelven un elemento de tipo $a$.
- Mónada $(\mathtt{IO},\eta,\mu)$.
- Para $f:a\to b$, $(\mathtt{IO}\,f)(x)$
ejecuta $x$ y aplica $f$ al resultado.
- $\eta_a(x)$ es una acción que no hace nada
y devuelve $x$.
- $\mu_a(x)$ ejecuta $x$ y ejecuta el
resultado de $x$.
Mónada de manejo errores
- Una función $f:a\to b\oplus e$ devuelve un
valor de tipo $b$, o falla con un valor de tipo $e$.
- Mónada $((\oplus\,e),\eta,\mu)$.
- Para $f:a\to b$, $\,f\oplus
e:x_a\rightsquigarrow f(x_a),x_e\rightsquigarrow x_e$.
- $\eta_a:a\hookrightarrow a\oplus e$ es la inclusión en la unión disjunta.
- $\mu_a:(a\oplus e)\oplus e\to a\oplus e$
identifica
las dos copias de $e$.
- Notación: Si $x:Ta$ y $f:a\to Tb$,
$$(x\Rightarrow f)\coloneqq \mu_x(Tf(x)).$$