Seminár 1: Úvod do teórie kategórií
Kategória - \(C(O, A, \circ)\):
- \(O\) - kolekcia objektov
- \(A\) - kolekcia arrows - morfizmy medzi objektami z \(O\)
- \(\circ\) - binárne skladanie morfizmov
- musí platiť asociativita - \((h \circ g) \circ f = h \circ (g \circ f) = h \circ g \circ f\)
- identita \(id\) je voči operátoru neutrálna aj zľava aj sprava, nech \(f : a \to b\) potom \(f \circ id_a = id_b \circ f = f\)
- \(id\) / \(1\) - identické morfizmy pre všetky objekty (\(id_a\) - identický morfizmus pre \(a \in O\))
- \(Hom(a, b)\) - kolekcia morfizmov z \(a\) do \(b\)
Kategórie
- Malá: aj \(O\) aj \(A\) sú množiny
- Veľká: nie malá
- Lokálne malá: pre všetky objekty \(a, b \in C\) je \(Hom(a, b)\) množina
- Riedka (thin): pre všetky objekty \(a, b \in C\) platí \(|Hom(a, b)| \in \{0, 1\}\)
- Voľná (free): kategória generovaná z orientovaného grafu pomocou voľnej konštrukcie (doplnenie identít a zložením hrán - pre každú cestu z \(u\) do \(v\) existuje hrana reprezentujúca túto cestu)
Špeciálne objekty
- iniciálny objekt
- \(a\) je iniciálny objekt \(\iff \forall b \in O_C \ldotp\exists! m \in A_C \ldotp m: a \rightarrow b\)
- do každého objektu kategórie vedie unikátna šípka
- v kategórii “typov” (Set) si môžeme predstaviť
void
, pretože pre každý iný typT
existuje funkciaasburd : void -> T
- unikátny až na unikátny izomorfizmus
- terminálny objekt (duálny k iniciálnemu objektu)
- \(a\) je terminálny objekt \(\iff \forall b \in O_C \ldotp\exists! m \in A_C \ldotp m : b \rightarrow a\)
- z každého objektu kategórie vedie unikátna šípka
- v kategórii “typov” si môžeme predstaviť
unit
, pretože pre každý iný typ existuje funkciaunit : T -> ()
- unikátny až na unikátny izomorfizmus
Opačná kategória \(C^{op}\) - Kategória s opačnými morfizmami (od \(C\)). Môžme hovoriť o duálnych pojmoch (napr. terminálny objekt je iniciálny v opačnej kategórii, mono je duálne s epi, atď).
Špeciálne morfizmy
monomorfizmus (mono)
- \(f : a \to b \in C\) je monomorfizmus \(\iff\)
\(\forall x \in C \ldotp \forall g, h : x \to a \in C \ldotp \{ f \circ g = f \circ h \implies g = h \}\)
- v Set je morfizmus \(f\) mono \(\iff\) funkcia \(f\) je injektívna
epimorfizmus (epi) (duálny k monomorfizmu)
- \(f : a \to b \in C\) je epimorfizmus \(\iff\)
\(\forall x \in C \ldotp \forall g, h : b \to x \in C \ldotp \{ g \circ f = h \circ f \implies g = h \}\)
- v Set je morfizmus \(f\) epi \(\iff\) funkcia \(f\) je surjektívna
izomorfizmus
\(f : a \to b \in C\) je izomorfizmus \(\iff\)
\(\exists g : b \to a \in C \ldotp \{ g \circ f = id_a \land f \circ g = id_b \}\)
endomorfizmus
\(f : a \to a\)
automorfizmus
endomorfizmus + izomorfizmus
Príklady kategórií:
- 0 - kategória bez prvkov a morfizmov
- 1 - kategória s práve jedným prvkom a jeho identitou
- 2 - kategória s práve dvoma prvkami, medzi ktorými sú morfizmy
- Set - kategória množín a funkcií
- Grp - kategória grúp a homomorfizmov
- Cat - kategória malých kategórií a funktorov
- Order - kategória usporiadania s \(\le\)
- Voľná kategória - konštrukcia z orientovaného grafu
- Monoid ako kategória - kategória s jedným objektom a endomorfizmami
- Grupa ako kategória - kategória s jedným objektom a automorfizmami
- Hask - “kategória typov v jazyku Haskell a funkcií”
Zdroje:
Milewski, B., 2022. Category Theory for Programmers: The Preface (Part One: 1-4). [online] Bartosz Milewski’s Programming Cafe. Available at: https://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/ [Accessed 3 March 2022].
Buurlage, J-W, 2022. Categories and Haskell (Chapter 1). [online] Github. Available at: https://github.com/jwbuurlage/category-theory-programmers/ [Accessed 3 March 2022].