Teoria kategorii dla informatyków/Wykład 1: Teoria kategorii jako abstrakcyjna teoria funkcji

From Studia Informatyczne

Spis treści

Teoria kategorii jako abstrakcyjna teoria funkcji

Teoria kategorii jako ogólny dział algebry wyrosła z prac Samuela Eilenberga i Saundersa MacLane'a: pionierską pracą jest tu General theory of natural equivalences, Transactions of the American Mathematical Society 58 (1945), str. 231-294 - autorzy wprowadzili tam pojęcie kategorii, funktora i naturalnej transformacji funktorów. Teoria kategorii szybko przekroczyła granice algebry i jej język okazał się uniwersalnym sposobem mówienia o innych teoriach matematycznych: logice, teorii zbiorów, topologii, teorii porządku, geometrii, analizie itd. Jak to możliwe? Treść tych wykładów stanowi jedną z odpowiedzi na to pytanie.

Przekształcenia i ich algebra

Zacznijmy od niegroźnego przeformułowania dwóch znanych pojęć z teorii mnogości. Jak pamiętamy, funkcja f\colon A\to B jest bijekcją, jeżeli jest różnowartościową surjekcją, tj.


\forall x,y\in A\ f(x)=f(y)\implies x=y

oraz

\forall z\in B\ \exists x\in A\ f(x)=z.

Zauważmy, że drugi warunek pozwala nam każdemu elementowi z zbioru B przyporządkować element x zbioru A, zaś warunek pierwszy mówi, że to przekształcenie (nazwijmy je g) jest funkcją (śmiało napiszmy więc g\colon B\to A). W tym świetle z warunku drugiego wynika, że złożenie f\circ g jest funkcją identycznościowś na zbiorze B, a stąd wynika f\circ g\circ f = f, co w połączeniu z pierwszym warunkiem oznacza, że g\circ f jest identycznością na zbiorze A. Idąc dalej tym tropem (patrz Zadanie1.1), jesteśmy w stanie bez trudu pokazać, że:


Fakt 1.1

Funkcja f\colon A\to B jest bijekcją wtedy i tylko wtedy, gdy istnieje funkcja g\colon B\to A taka, że f\circ g = 1_B oraz g\circ f = 1_A.


Sam wynik nie wygląda, być może, ekscytująco, ale w koniunkcji z kolejnymi przykładami pozwoli nam wyciągnąć ekscytujące wnioski.

Rozważmy zatem zbiór liczb naturalnych \mathbb{N}. Teoria mnogości definiuje \mathbb{N} jako najmniejszy zbiór zawierający liczbę zero \mathbf{0} i spełniający: n\in \mathbb{N} \implies succ(n)\in \mathbb{N}, gdzie succ(n)\colon \mathbb{N}\to \mathbb{N} jest funkcją następnika (która jest injektywna i posiada tę właściwość, że succ(n)\neq 0 dla dowolnego n\in \mathbb{N}). Okazuje się, że zbiór liczb naturalnych można wyróżnić spośród innych zbiorów w ten sposób (Zadanie 1.2)):


Fakt 1.2 [liczby naturalne kategoryjnie]

Zbiór liczb naturalnych \mathbb{N} jest to zbiór zawierający liczbę zero oraz wyposażony w funkcję succ(n)\colon \mathbb{N}\to \mathbb{N} taką, że: dla dowolnego zbioru X i elementu e\in X oraz funkcji g\colon X\to X istnieje dokładnie jedna funkcja f\colon \mathbb{N}\to X spełniająca dwa warunki: f(0)= e oraz f\circ succ = g\circ f.
Samuel Eilenberg (1913-1998)Zobacz biografię
Enlarge
Samuel Eilenberg (1913-1998)
Zobacz biografię
Dwa powyższe przykłady wskazują na to, że definicje teorii mnogości można wyrażać, operując jedynie pojęciem funkcji i złożenia funkcji (zauważmy, że elementy zbiorów można traktować jako funkcje, których dziedziną jest singleton). Postawmy więc śmiałe pytanie: czy można prezentować różnorodne teorie matematyczne, badając jedynie własności przekształceń obiektów matematycznych będących przedmiotem zainteresowania danej teorii? A zatem pytamy: czy można prezentować teorię mnogości, badając własności funkcji między zbiorami, teorię grup badając własności homomorfizmów grup, topologię badając własności funkcji ciągłych pomiędzy przestrzeniami topologicznymi? W ogólności zapytajmy więc jeszcze raz: czy można badać dowolne obiekty matematyczne z określoną strukturą za pomocą własności przekształceń, które tę strukturę zachowują?

Odpowiedź brzmi: tak – i ta właśnie twierdząca odpowiedź powołuje do życia teorię kategorii. Teoria kategorii składa się bowiem z twierdzeń dotyczących uniwersalnych własności przekształceń, niezależnych od cech szczególnych danych teorii matematycznych. Tak więc, teoria kategorii bada wspólne, uniwersalne własnościami zbiorów, grup, przestrzeni topologicznych, przestrzeni wektorowych, częściowych porządków, i tak dalej, wszystko w języku przekształceń danej struktury.

Saunders Mac Lane (1909-2005)Zobacz biografię
Enlarge
Saunders Mac Lane (1909-2005)
Zobacz biografię
Czy da się krótko, nieformalnie zebrać najważniejsze cechy przekształceń – cechy niezależne od konkretnej teorii matematycznej? Spróbujmy! Zaczynamy od nazwy: przekształcenie nazywać będziemy również morfizmem (bo w przeróżnych teoriach matematycznych znajdujemy homomorfizmy, homeomorfizmy, endomorfizmy, itd.) lub po prostu strzałką (bo tak zwykle graficznie przedstawia się przekształcenia). Przekształcenie działa pomiędzy obiektami, np. funkcja to przekształcenie zbiorów, homomorfizm to przekształcenie grupy w grupę, funkcja ciągła to przekształcenie przestrzeni topologicznej w przestrzeń topologiczną, funkcja monotoniczna to przekształcenie posetu w poset, itd. (Załóżmy na początku dla prostoty, że w naszych przykładach nie bierzemy pod uwagę przekształceń obiektów pewnej klasy w obiekty innej klasy, na przykład wyznacznika, który przekształca macierz w liczbę. Takimi morfizmami zajmiemy się poźniej.) Każde przekształcenie f działa na pewien jedyny obiekt, nazwijmy go dziedziną f i oznaczmy \mathrm{dom}(f), i przekształca go w inny jedyny obiekt nazywany przeciwdziedziną f i oznaczany jako \mathrm{cod}(f). Fakt, że morfizm f ma dziedzinę A i przeciwdziedzinę B zapisujemy
Grafika:tk-1.1.png

lub po prostu f\colon \mathbf{A}\to\mathbf{B}. Nasza teoria nie może istnieć bez pojęcia złożenia przekształceń: zakładamy, że dwóm morfizmom f,g takim, że \mathrm{cod}(g) = \mathrm{dom}(f) (strzałki takie nazywamy składalnymi) przypisujemy morfizm f\circ g zwany złożeniem, dla którego mamy dom(f \circ g) = dom(g) i cod(f \circ g) = cod(f). Przykłady wskazują na to, że kolejność złożenia składalnych przekształceń nie powinna grać roli, czyli dla:

Grafika:tk-1.2.png

morfizm:

Grafika:tk-1.3.png

może powstać albo z:

Grafika:tk-1.4.png

albo, równoważnie, z:

Grafika:tk-1.5.png

W końcu, w naszej nieformalnej teorii przekształceń postulujemy istnienie przekształceń, które - jak to się potocznie mówi: nic nie zmieniają, tak zwanych identyczności:

Grafika:tk-1.6.png

To kończy nieformalny opis języka, w którym główną rolę grają przekształcenia. Zapiszmy to teraz formalnie.


Definicja kategorii

Definicja 1.3 [Kategoria]

Kategoria C składa się z następujących danych:

(D1) obiektów: A,B,C,...,

(D2) morfizmów: f,g,h,...,

(D3) dwóch operacji dom,cod przypisującej każdemu morfizmowi f obiekty dom(f) i cod(f),

(D4) operacji 1 przypisującej każdemu obiektowi A morfizm 1_A nazywany identycznością,

(D5) operacji \circ przypisującej każdej parze morfizmów f,g takich, że cod(g) = dom(f) morfizm f \circ g nazywany złożeniem,

spełniających następujące aksjomaty:

(A1) dom(1_A) = A = cod(1_A); dom(f\circ g) = dom(g); cod(f\circ g) = cod(f),

(A2) f\circ 1_A = f = 1_B\circ f, gdzie A = dom(f) oraz B = cod(f),

(A3) jeśli f,g są składalne oraz g,h są składalne, to (f\circ  g) \circ h = f\circ (g\circ h).


Kolekcję obiektów kategorii \mathbf{C} będziemy w dalszym ciągu oznaczać jako \mathbf{C}_0, zaś kolekcję jej morfizmów jako \mathbf{C}_1.

Uwaga [Dla dociekliwych]
Wiemy więc, z czego składa się kategoria. Nie znamy jednak odpowiedzi na – być może – równie ważne pytanie: czym jest kategoria? W naszym wykładzie przyjmiemy po prostu, że kategorią będzie każda interpretacja aksjomatów przedstawionych w Definicji 1.3 na gruncie teorii mnogości.

Pokażmy, że o kategorii można też myśleć jako o specjalnym grafie skierowanym. Oto druga, równie dobra dla naszych potrzeb, definicja kategorii:


Definicja 1.4 [Kategoria jako graf]

Grafem skierowanym nazywamy kolekcję obiektów (wierzchołków) O, kolekcję strzałek (krawędzi) A i dwie funkcje
Grafika:tk-1.7.png

W grafie, kolekcja składalnych par strzałek to zbiór

A\times_O A =\{ (g,f)\mid g,f\in A \wedge \mathrm{dom}(g) =  \mathrm{cod}(f)\}

nazywany produktem nad O. O kategorii można myśleć jako o grafie skierowanym \mathbf{C}, który posiada dwie dodatkowe funkcje 1\colon O\to A, C\mapsto 1_C oraz \circ\colon A\times_O A\to A, (g,f)\mapsto g\circ f takie, że spełnione są warunki (A1)–(A3) Definicji 1.3.


Poniżej pokażemy trzecią, równoważną, algebraiczną definicję kategorii (na podstawie książki: Peter J. Freyd, Andre Scedrov, Categories, Allegories, North Holland, 1989).


Definicja 1.5 [Kategoria jako algebra]

Kategoria C składa się z dwóch operacji unarnych i jednej częściowej operacji binarnej. Zmienne, na które działają te operacje nazywamy morfizmami (strzałkami). Wartości tych operacji są zapisywane i czytane jako:
Grafika:tk-1.8.png

Operacje podlegają następującym aksjomatom:


(b1) xy jest zdefiniowane wtw, gdy x\Box = \Box y,

(b2) (\Box x )\Box = \Box x oraz \Box (x\Box) = x\Box,

(b3) (\Box x)x = x oraz x(x\Box)=x,

(b4) \Box(xy) = \Box(x(\Box y)) oraz (xy)\Box = ((x\Box)y\Box,

(b5) x(yz)=(xy)z.


W tym wypadku równoważność definicji z dwiema pozostałymi (Definicje 1.3 i 1.4) nie jest oczywista. Aby ją wykazać, rozpocznijmy od lematu, który rzuci trochę światła na strukturę algebraiczną, którą przed chwilą opisaliśmy.


Lemat 1.6

Dla morfizmu e następujące warunki są równoważne:
  1. istnieje x taki, że e=\Box x;
  2. istnieje y taki, że e=y\Box;
  3. e=\Box e;
  4. e=e\Box;
  5. dla każdego x, ex\approx  x (co oznacza, że jeżeli złożenie ex jest zdefiniowane, to jest równe x), dla każdego x, xe\approx x.

Dowód

(1)\to(2) Dla y=\Box x mamy y\Box = (\Box  x)\Box = \Box x = e. (2)\to(3) \Box e = \Box(y\Box) = y\Box = e. (3)\to(4) e\Box = (\Box e)\Box)=\Box e = e. (4)\to(5) Załóżmy, że ex jest zdefiniowane dla każdego x; to oznacza, że e\Box = \Box x, czyli z (4), e=\Box x dla każdego x. A zatem ex =(\Box x)x = x. (3)\to(1) Oczywiste. (4)\to(3) \Box e =  \Box(e\Box) = e\Box = e. (5)\to(4) Połóżmy x=e\Box. Mamy \Box x = \Box (e \Box) = e\Box, czyli ex istnieje. Z (5) wynika, że e(e\Box) = e\Box. Ale (b3) implikuje, że e(e\Box)=e, czyli e=e\Box. Dowód równoważności (6) z (3) jest podobny do równoważności (5) z (4). image:End_of_proof.gif


Morfizm e spełniający dowolny z powyższych warunków nazywamy identycznością.

A zatem równoważność trzeciej definicji kategorii z pierwszą uzyskujemy następująco (tak naprawdę, to pokażemy jedynie, że dane Definicji 1.5 wystarczą do zrekonstruowania Definicji 1.3): Identyczność 1_x to zmienna x taka, że x=\Box x =x\Box. Dziedziną x jest \Box x, przeciwdziedziną x\Box. Złożenie x\circ y to yx. Kolekcja obiektów Definicji 1.3 pokrywa się z kolekcją morfizmów identycznościowych Definicji 1.5. Zauważmy, że dla dowolnego x, zarówno \Box x, jak i x\Box są obiektami (identycznościami), bo \Box(\Box x) = \Box x, (\Box  x)\Box = \Box x, (x\Box)\Box =(\Box(x\Box))\Box = \Box(x\Box) =  x\Box, \Box(x\Box)=x\Box.

Sprawdźmy aksjomaty: \mathrm{dom}(1_x) = \Box x = x = x\Box =  \mathrm{cod}(1_x). Aby pokazać, że f jest morfizmem, załóżmy, że x=\mathrm{dom}(f)(czyli 1_x = \Box f) oraz y=\mathrm{cod}(f)(czyli 1_y = f\Box). Wówczas f\circ 1_x =  1_x f = (\Box f)f = f, 1_y \circ f = f 1_y =f(f\Box) = f.

Załóżmy teraz, że \mathrm{dom}(f)=\mathrm{cod}(g). Wówczas \mathrm{dom}(f\circ g) = \Box(gf) = \Box(g\Box f) =  \mathrm{dom}(1_{\mathrm{dom}(f)}\circ g) =  \mathrm{dom}(1_{\mathrm{cod}(g)}\circ g) = \mathrm{dom}(g). Ostatnia równość wynika z poprzedniego paragrafu. Podobnie, \mathrm{cod}(f\circ g) = (gf)\Box = ((g\Box)f)\Box =  \mathrm{cod}(f\circ 1_{\mathrm{cod}(g)}) = \mathrm{cod}(f\circ  1_{\mathrm{dom}(f)}) = \mathrm{cod}(f).

W końcu, f\circ (g\circ h) = (hg)f = h(gf)=(f\circ g)\circ h przy odpowiednich założeniach.


Przykłady kategorii

  • \mathbf{Set}: Obiektami są zbiory, morfizmami funkcje. Uwaga! W teorii mnogości funkcja jest zdefiniowana jako zbiór par uporządkowanych takich, że

((x,y)\in f\ \wedge \ (x,y')\in f)\ \implies \ y=y'.      (1)

Aby traktować funkcje jako morfizmy musimy precyzyjnie znać \mathrm{dom}(f) i \mathrm{cod}(f). Na przykład funkcje \sin\colon \mathbb{R}\to [-1,1] oraz \sin\colon \mathbb{R}\to  \mathbb{R}, które mają takie samo działanie na argumentach, będą traktowane jako dwa różne morfizmy. Formalnie, w języku teorii mnogości morfizmem będzie trójka (X,f,Y) taka, że f\subseteq  X\times Y spełnia powyższe równanie (1) wraz z poniższym:

x\in X \implies  (\exists y\in Y\ (x,y)\in f).      (2)

Wtedy \mathrm{dom} jest projekcją na pierwszą współrzędną (X,f,Y)\mapsto X, a \mathrm{cod} projekcją na trzecią współrzędną.

  • Kategoria zbiorów skończonych i funkcji \mathbf{Set}_{fin}, jak również wiele innych kategorii, w których obiektami i morfizmami są ograniczone klasy zbiorów i funkcji, np. kategoria wszystkich zbiorów skończonych i injekcji.
  • Kategorie, w których obiektami są zbiory z pewną dodatkową strukturą algebraiczną, zaś morfizmami te funkcje, które tę strukturę zachowują.
    • \mathbf{Vect}: Przestrzenie wektorowe i odwzorowania liniowe
    • \mathbf{Grp}: Grupy i homomorfizmy grup
    • \mathbf{Ab}: Grupy abelowe i homomorfizmy grup
    • \mathbf{Mon}: Monoidy i homomorfizmy monoidów
    • \mathbf{Pos}: Częściowe porządki i funkcje monotoniczne
    • \mathbf{Top}: Przestrzenie topologiczne i funkcje ciągłe
    • \mathbf{Graph}: Grafy i homomorfizmy grafów
    • liczby naturalne nat i wszystkie funkcje obliczalne
  • Mając dowolny częściowy porządek (poset) (P,\leq) definiujemy kategorię o tej samej nazwie P jak następuje: jako obiekty bierzemy elementy P, zaś dla dwóch obiektów x,y\in P przyjmujemy, że istnieje morfizm z x do y wtedy i tylko wtedy, gdy x\leq y. Zauważmy, że wystarczy tu, by P był preporządkiem, tzn. aby relacja \leq była zaledwie zwrotna i przechodnia.
  • \mathbf{Rel}: Obiektami tej kategorii są zbiory, zaś morfizmami relacje binarne, tzn. f\colon A\to B wtedy i tylko wtedy, gdy f\subseteq A\times B. Wówczas rolę identyczności spełniają relacje identycznościowe: 1_A = \{ (a,a)\mid a\in A \}, zaś złożeniem morfizmów jest po prostu złożenie relacji znane z kursu teorii mnogości: mając dane R\subseteq A\times B oraz S \subseteq B\times C przyjmujemy:
(a,c)\in S\circ R \Leftrightarrow \exists b\in B\ ((a,b)\in  R\wedge (b,c)\in S).
  • Kategorie skończone (skończoność dotyczy ilości istniejących morfizmów, choć nazwy tych kategorii odnoszą się do ilości obiektów:
    • \mathbf{1}:Ta kategoria ma jeden obiekt i jedną strzałkę: identyczność.
      Grafika:tk-1.9.png
    • \mathbf{0}: Ta kategoria nie ma obiektów i nie ma strzałek.
    • \mathbf{2}: Kategoria ta ma dwa obiekty i jedną strzałkę pomiędzy nimi (a także oczywiście dwie wymagane identyczności).
      Grafika:tk-1.10.png
    • \mathbf{3}: Kategoria ma trzy obiekty, trzy identyczności, dokładnie jedną strzałkę z obiektu pierwszego do drugiego, dokładnie jedną strzałkę z obiektu drugiego do trzeciego i dokładnie jedną strzałkę z obiektu pierwszego do trzeciego (co oznacza, że ta ostatnia musi być złożeniem dwóch pozostałych nieidentycznościowych strzałek!)
      Grafika:tk-1.11.png
    • Inne kategorie skończone możemy tworzyć, biorąc skończoną ilość obiektów wraz z odpowiadającymi im identycznościami, a następnie dodając dowolną skończoną ilość morfizmów. W tym wypadku musimy jednak zadbać o to, aby - jeśli morfizmy będą tworzyły cykle - zadeklarować złożenia wszystkich morfizmów w cyklu jako równe odpowiednim identycznościom. W innym bowiem przypadku uzyskana kategoria nie musi już być skończona (może mieć nieskończenie wiele morfizmów odpowiadających wielokrotnościom cyklu).
  • Kategorie dyskretne są to takie kategorie, w których nie ma innych morfizmów niż identyczności. Łatwo uzmysłowić sobie, że kategorie dyskretne możemy utożsamiać ze zbiorami, bo przecież obiekty możemy interpretować jako elementy zbioru.
    Grafika:tk-1.12.png
  • Niech (M, *, e) będzie monoidem (e jest jego jedynką). Wówczas biorąc M jako jedyny obiekt, zaś elementy M jako morfizmy (z dziedziną i kodziedziną M), a działanie * jako złożenie morfizmów, otrzymujemy kategorię. Można łatwo pokazać również konstrukcję odwrotną, tj. przekonać się, że każda kategoria z jednym obiektem może być traktowana jako monoid. Mówiąc krótko: kategorie z jednym obiektem to monoidy. (Jak w takim razie traktować grupy? Odpowiedź znajdziemy jeszcze przed końcem wykładu...)
    Grafika:tk-1.13.png
  • Dla danego rachunku logicznego możemy stworzyć kategorię w ten sposób, że obiektami są formuły: \phi, \psi, ... zaś morfizmem z \phi do \psi jest każda dedukcja (dowód) \psi z założenia \phi. Złożeniem morfizmów jest wtedy połączenie dowodów, które jest oczywiście łączne. Identyczność 1_{\phi} to dowód pusty, bowiem z aksjomatów logicznych zawsze wynika \phi\vdash\phi.
  • Dla danego typowanego języka funkcyjnego L tworzymy kategorię w ten sposób, że obiektami są typy danych, zaś strzałkami są programy (procedury) języka L. Złożeniem dwóch programów f\colon X\to Y i g\colon Y\to Z jest program dany poprzez zaaplikowanie wyjścia programu f na wejściu programu g. Identycznością jest procedura, która nic nie robi.

Inne przykłady kategorii zamieścimy w Ćwiczeniach do tego wykładu.

==Izomorfizmy== Definicja izomorfizmu jest pierwszą definicją teorii kategorii, definicją abstrakcyjną, niezależną od specyficznych wymagań konkretnej teorii matematycznej, definicją wyrażoną tylko w języku strzałek (czyli w języku teorii kategorii).


Definicja 1.7 [Izomorfizm]

Niech \mathbf{C} będzie dowolną kategorią. Morfizm f\colon A\to B jest izomorfizmem, jeśli istnieje morfizm g\colon B\to A taki, że f\circ g = 1_B oraz g\circ f = 1_A. Morfizm g nazywa się morfizmem odwrotnym do f. Jeśli dla obiektów A,B kategorii \mathbf{C} istnieje izomorfizm f\colon A\to B, to obiekty A i B nazywamy izomorficznymi, co zapisujemy jako A\cong B.


Ponieważ dowolny morfizm f posiada dokładnie jeden morfizm odwrotny (dowód?), będziemy go oznaczać jako f^{-1}. Można łatwo pokazać (dowód?), że morfizm odwrotny do izomorfizmu jest izomorfizmem.


Fakt 1.1 wyraża zatem myśl, że izomorfizmami w \mathbf{Set} są dokładnie bijekcje. Ale uwaga: w kategoriach, których obiektami są zbiory z pewną strukturą, a morfizmami funkcje zachowujące tę strukturę (kategorie o takich własnościach nazywamy konkretnymi, patrz Definicja 5.9, bijekcje nie zawsze są izomorfizmami. Prosty kontrprzykład stanowi tutaj kategoria \mathbf{Pos} ( Zadanie 1.3).

==Podstawy teoriomnogościowe== Teoria mnogości uczy nas, że nie istnieje zbiór wszystkich zbiorów. Jeśli więc rozważamy kategorię \mathbf{Set}, której obiektami są zbiory, to widzimy, że kolekcja wszystkich obiektów \mathbf{Set} nie tworzy zbioru (jest zbyt duża!). Podobnie, kolekcja wszystkich morfizmów \mathbf{Set} jest zbyt wielka, aby być zbiorem (zauważmy, że samych identyczności jest już tyle, ile obiektów). Kategoria \mathbf{Set} nie jest taką jedyną. W związku z tym definiujemy:

Definicja 1.8

Kategorię \mathbf{C} nazywamy małą, jeśli kolekcja wszystkich obiektów \mathbf{C}_0 i morfizmów \mathbf{C}_1 kategorii \mathbf{C} są zbiorami. W przeciwnym wypadku \mathbf{C} jest duża.


A zatem Pos, Grp, Vec są duże, zaś kategorie skończone są małe. Kategorie duże wyglądają na pierwszy rzut oka nieprzyjaźnie, część z nich posiada jednak bardzo często następującą cechę:


Definicja 1.9

Kategorię \mathbf{C} nazywamy lokalnie małą, jeśli dla każdej pary obiektów A,B z \mathbf{C} kolekcja \mathrm{Hom}_{\mathbf{C}}(A,B) = \{ f\in \mathbf{C}_1\mid f\colon  A\to B \} jest zbiorem (o takim zbiorze mówimy w skrócie homset, podobnie jak o zbiorze częściowo uporządkowanym przyjęło się mówić: poset).


Większa część teorii kategorii, którą zaprezentujemy w dalszym toku wykładu dotyczy kategorii lokalnie małych (takich jak Pos, Grp, Vec itd. czy wszystkie kategorie małe). Po dalsze wiadomości dotyczące podstaw teoriomnogościowych teorii kategorii odsyłamy do dyskusji tego tematu w podręczniku Categories for the Working Mathematician, Springer, 1997, Saundersa Mac Lane’a. Bardzo ciekawą dyskusję roli teorii kategorii w badaniach nad podstawami matematyki zaproponował Steven Awodey w artykule: An answer to Hellman’s question: Does category theory provide a framework for mathematical structuralism?, Philosophia Mathematics (3) vol. 12 (2004), dostępnym również na stronie domowej autora pracy.