Termeni
Pentru a defini ce este o categorie, trebuie să clarificăm câțiva termeni. În multe cazuri, vom folosi termenul de mulțime (set), o colecție de elemente unice, și clasă (class) pentru colecții de mulțimi. Utilizarea termenului de clasă poate depinde de contextul fondațional, cum ar fi teoria mulțimilor Zermelo-Fraenkel sau teoria mulțimilor von Neumann–Bernays–Gödel. Pentru simplitate, vom folosi termenul de mulțime dacă elementele sale nu au proprietăți suplimentare și termenul de clasă dacă elementele reprezintă structuri cu proprietăți. Astfel, putem defini ce este o categorie.
Definiție: Categorie
O categorie este compusă din:
- o mulțime ale cărei elemente se numesc obiecte
- o mulțime ale cărei elemente se numesc săgeți sau morfisme
- pentru fiecare morfism există o pereche de obiecte numite domeniul, respectiv codomeniul lui
- pentru fiecare pereche de morfisme unde există mereu un morfism (citit după ) numit compusul
- pentru fiecare obiect există mereu un morfism
- astfel încât următoarele proprietăți sunt satisfăcute:
- sursa și destinația respectă compoziția: și
- sursa și destinația respectă identitatea: și
- compoziția e asociativă:
- compoziția satisface unitatea stânga și dreapta:
Un exemplu de categorie ar putea fi următorul:
În principiu, o categorie este un quiver, un graf orientat cu oricâte muchii între oricare două noduri. Aici, importante sunt două proprietăți ale categoriei: faptul că compunerea morfismelor este asociativă și păstrează identitatea. Aceste proprietăți vor fi folosite în conceptul următor, care are legătură mai mult cu programarea funcțională, anume functorul.
Posibila formalizare in Lean 4
universe o h
class Category (Obj : Type o) where
Hom : Obj → Obj → Type h
id : (x : Obj) → Hom x x
comp : ∀ {x y z : Obj}, Hom y z → Hom x y → Hom x z
leftId : ∀ {x y : Obj} (f : Hom x y), comp (id y) f = f
rightId : ∀ {x y : Obj} (f : Hom x y), comp f (id x) = f
assoc : ∀ {x y z w : Obj} (h : Hom z w) (g : Hom y z) (f : Hom x y),
comp h (comp g f) = comp (comp h g) f
source {x y : Obj} (_ : Hom x y) : Obj := x
target {x y : Obj} (_ : Hom x y) : Obj := y
Categoria opusă
Fie o categorie, categoria opusă notată este o categorie în care morfismele sunt inversate cu:
- =
- =
- și
Categoriile opuse sunt utile pentru a dualiza proprietatile categoriei initiale. Aceste lucruri vor fi discutate un următoarele capitole.
Categorii mici si local mici
Pentru moment am definit categoriile în sensul de categorii mici (small), asta însemană că mulțimea de obiecte și cea de morfisme sunt doar mulțimi mici (small) și nu clase propriu-zise (în sensul matematic că nu reprezintă ceva mai mult decât un set). O categorie se numește local mică (locally small) dacă are toate hom-set-urile sunt doar mulțimi. Un hom-set de la obiectul la este mulțimea tuturor morfismelor de la la , nu trebuie confundat cu a categoriei .
Vom vedea că atunci când ne referim la categorii local mici ne referim de fapt la categorii îmbogățite (enriched) peste categoria în care obiectele sunt mulțimi (finite și infinite) mici și morfismele sunt funcții între aceste mulțimi. Este important de mentionat că această categorie nu este categoria tuturor mulțimilor pentru a evita paradoxuri de tip Russell pentru că așa cum un set nu se poate conține pe sine nici o categorie nu se poate conține pe sine. În particular, categoria este local mică.
Categoria produs
O categorie produs dintre categoriile și notată este categoria în care obiectele și morfismele sunt perechi din cele două categorii astfel:
- ,
- ,
- ,