Test Arka: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Arek (dyskusja | edycje)
Nie podano opisu zmian
 
Arek (dyskusja | edycje)
Nie podano opisu zmian
Linia 1: Linia 1:
\newtheorem{definition}[subsection]{Definicja}
==Moduł: Teoria kategorii jako abstrakcyjna teoria funkcji==
\newtheorem{theorem}[subsection]{Twierdzenie}
\newtheorem{lemma}[subsection]{Lemat}
\newtheorem{corollary}[subsection]{Wniosek}
\newtheorem{remark}[subsection]{Uwaga}
\newtheorem{question}[subsection]{Pytanie}
\newtheorem{problem}[subsection]{Problem}
\newtheorem{proposition}[subsection]{Stwierdzenie}
\newtheorem{example}[subsection]{Przykład}
\newtheorem{fact}[subsection]{Fakt}
\newtheorem{zadanie}[subsection]{Zadanie}
\newtheorem{obserwacja}[subsection]{Obserwacja}
\newtheorem{counterexample}[subsection]{Kontrprzykład}


\begin_document
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), pp. 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.


==Moduł: Teoria kategorii jako abstrakcyjna teoria funkcji==
===Przekształcenia i ich algebra===


Teoria
Zacznijmy od niegroźnego przeformułowania dwóch znanych pojęć z teorii
kategorii jako ogólny dział algebry wyrosła z prac Samuela
mnogości.
Eilenberga i Saundersa MacLane'a: pionierską pracą jest tu {\it
General theory of natural equivalences}, Transactions of the
American Mathematical Society 58 (1945), pp. 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===
Jak pamiętamy, funkcja <math>f\colon A\to B</math> jest '''bijekcją'''
jeśli jest różnowartościową surjekcją, tj.  <math>\forall x,y\in A\
f(x)=f(y)\Rightarrow x=y</math> oraz <math>\forall z\in B\ \exists x\in
A\ f(x)=z.</math>


Zacznijmy od niegroźnego przeformułowania dwóch znanych pojęć z
Zauważmy, że drugi warunek pozwala nam każdemu elementowi <math>z</math>
teorii mnogości.
zbioru <math>B</math> przyporządkować element <math>x</math> zbioru
<math>A</math>, zaś warunek pierwszy mówi, że to przekształcenie
(nazwijmy je <math>g</math>) jest funkcją (śmiało napiszmy więc
<math>g\colon B\to A</math>). W tym świetle z warunku drugiego wynika,
że złożenie <math>f\circ g</math> jest funkcją identycznościową na
zbiorze <math>B</math>, a stąd wynika <math>f\circ g\circ f = f</math>,
co w połączeniu z pierwszym warunkiem oznacza, że <math>g\circ f</math>
jest identycznością na zbiorze <math>A</math>. Idąc dalej tym tropem
(patrz Zadanie [[#mod1:zad1|Uzupelnic mod1:zad1|]]) jesteśmy w stanie
bez trudu pokazać, że:


Jak pamiętamy, funkcja <math>f\colon A\to B</math> jest {\bf bijekcją} jeśli
{{ Fakt||uzupelnic|
jest różnowartościową surjekcją, tj.
<math>\forall x,y\in A\ f(x)=f(y)\Rightarrow x=y</math> oraz
<math>\forall z\in B\ \exists x\in A\ f(x)=z.</math>


Zauważmy, że drugi warunek pozwala nam każdemu elementowi <math>z</math>
{{kotwica|mod1:fact:bij|}} Funkcja <math>f\colon A\to B</math> jest
zbioru <math>B</math> przyporządkować element <math>x</math> zbioru <math>A</math>, zaś warunek
bijekcją wtedy i tylko wtedy,  gdy  istnieje funkcja <math>g\colon B\to
pierwszy mówi, że to przekształcenie (nazwijmy je <math>g</math>) jest
A</math> taka, że <math>f\circ g = 1_B</math> oraz <math>g\circ f =
funkcją (śmiało napiszmy więc <math>g\colon B\to A</math>). W tym świetle z
1_A</math>. }}
warunku drugiego wynika, że złożenie <math>f\circ g</math> jest funkcją
identycznościową na zbiorze <math>B</math>, a stąd wynika <math>f\circ g\circ f =
f</math>, co w połączeniu z pierwszym warunkiem oznacza, że <math>g\circ f</math>
jest identycznością na zbiorze <math>A</math>. Idąc dalej tym tropem (patrz
Zadanie \ref{mod1:zad1}) jesteśmy w stanie bez trudu pokazać, że:


\begin_fact
Sam wynik nie wygląda, być może, ekscytująco, ale w koniunkcji z kolejnymi
\label{mod1:fact:bij} Funkcja <math>f\colon A\to B</math> jest bijekcją wtedy
przykładami pozwoli nam wyciągnąć ekscytujące wnioski.
i tylko wtedy, gdy  istnieje funkcja <math>g\colon B\to A</math> taka, że
<math>f\circ g = 1_B</math> oraz <math>g\circ f = 1_A</math>.
\end_fact


Sam wynik nie wygląda, być może, ekscytująco, ale w koniunkcji z
Rozważmy zatem zbiór liczb naturalnych
kolejnymi przykładami pozwoli nam wyciągnąć ekscytujące wnioski.
<math>\mathrm'''nat'''</math>. Teoria mnogości definiuje
<math>\mathrm'''nat'''</math> jako najmniejszy zbiór zawierający
liczbę zero <math>0</math> i spełniający: <math>n\in \mathrm'''nat'''
\Rightarrow \mathrm{succ}(n)\in \mathrm'''nat'''</math>, gdzie
<math>\mathrm{succ}\colon \mathrm'''nat'''\to \mathrm'''nat'''</math>
jest funkcją następnika (która jest injektywna i posiada tę
właściwość, że <math>\mathrm{succ}(n)\neq 0</math> dla dowolnego
<math>n\in \mathrm'''nat'''</math>). Okazuje się, że zbiór liczb
naturalnych można wyróżnić spośród innych zbiorów w ten sposób (Zadanie
[[#mod1:zad2|Uzupelnic mod1:zad2|]]):


Rozważmy zatem zbiór liczb naturalnych <math>\mathrm{\bf nat}</math>. Teoria mnogości
{{ Fakt||uzupelnic| {{kotwica|mod1:fact:naturalne|}} Zbiór liczb
definiuje <math>\mathrm{\bf nat}</math> jako najmniejszy zbiór zawierający liczbę zero
naturalnych <math>\mathrm'''nat'''</math> jest to zbiór zawierający
<math>0</math> i spełniający: <math>n\in \mathrm{\bf nat} \Rightarrow \mathrm{succ}(n)\in \mathrm{\bf nat}</math>, gdzie
liczbę zero oraz wyposażony w funkcję <math>\mathrm{succ}\colon
<math>\mathrm{succ}\colon \mathrm{\bf nat}\to \mathrm{\bf nat}</math> jest funkcją następnika (która jest
\mathrm'''nat'''\to \mathrm'''nat'''</math> taką, że: dla dowolnego
injektywna i posiada tę właściwość, że <math>\mathrm{succ}(n)\neq 0</math> dla
zbioru <math>X</math> i elementu <math>e\in X</math> oraz funkcji
dowolnego <math>n\in \mathrm{\bf nat}</math>). Okazuje się, że zbiór liczb naturalnych
<math>g\colon X\to X</math> istnieje dokładnie jedna funkcja <math>f\colon
można wyróżnić spośród innych zbiorów w ten sposób (Zadanie
\mathrm'''nat'''\to X</math> spełniająca dwa warunki: <math>f(0)= e</math>
\ref{mod1:zad2}):
oraz <math>f\circ \mathrm{succ} = g\circ f</math>. }}


\begin_fact\label{mod1:fact:naturalne} Zbiór liczb naturalnych <math>\mathrm{\bf nat}</math> jest to zbiór
Dwa powyższe przykłady wskazują na to, że definicje teorii mnogości można
zawierający liczbę zero oraz wyposażony w funkcję <math>\mathrm{succ}\colon \mathrm{\bf nat}\to \mathrm{\bf nat}</math> taką, że:
wyrażać operując jedynie pojęciem funkcji i złożenia funkcji (zauważmy,
dla dowolnego zbioru <math>X</math> i elementu <math>e\in X</math>
że elementy zbiorów można traktować jako funkcje, których dziedziną
oraz funkcji <math>g\colon X\to X</math>
jest singleton). Postawmy więc śmiałe pytanie: czy można prezentować
istnieje dokładnie jedna funkcja <math>f\colon \mathrm{\bf nat}\to X</math>
różnorodne teorie matematyczne badając jedynie własności przekształceń
spełniająca dwa warunki: <math>f(0)= e</math> oraz <math>f\circ \mathrm{succ} = g\circ f</math>.
obiektów matematycznych będących przedmiotem zainteresowania danej teorii?
\end_fact
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ą?


Dwa powyższe przykłady wskazują na to, że definicje teorii
Odpowiedź brzmi: ''tak'' -- i ta właśnie twierdząca odpowiedź powołuje do
mnogości można wyrażać operując jedynie pojęciem funkcji i
życia teorię kategorii. Teoria kategorii składa się bowiem z twierdzeń
złożenia funkcji (zauważmy, że elementy zbiorów można traktować
dotyczących uniwersalnych własności przekształceń, niezależnych od cech
jako funkcje, których dziedziną jest singleton). Postawmy więc
szczególnych danych teorii matematycznych. Tak więc, teoria kategorii
śmiałe pytanie: czy można prezentować różnorodne teorie
bada wspólne, uniwersalne własnościami zbiorów, grup, przestrzeni
matematyczne badając jedynie własności przekształceń obiektów
topologicznych, przestrzeni wektorowych, częściowych porządków, i tak
matematycznych będących przedmiotem zainteresowania danej teorii?
dalej, wszystko w języku przekształceń danej struktury.
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: {\it tak} -- i ta właśnie twierdząca odpowiedź
Czy da się krótko, nieformalnie zebrać najważniejsze cechy przekształceń
powołuje do życia teorię kategorii. Teoria kategorii składa się
-- cechy niezależne od konkretnej teorii matematycznej? Spróbujmy!
bowiem z twierdzeń dotyczących uniwersalnych własności
Zaczynamy od nazwy: przekształcenie nazywać będziemy również
przekształceń, niezależnych od cech szczególnych danych teorii
'''morfizmem''' (bo w przeróżnych teoriach matematycznych natykamy
matematycznych. Tak więc, teoria kategorii bada wspólne,
się na homomorfizmy, homeomorfizmy, endomorfizmy, itd.) lub po
uniwersalne własnościami zbiorów, grup, przestrzeni
prostu '''strzałką''' (bo tak zwykle graficznie przedstawia się
topologicznych, przestrzeni wektorowych, częściowych porządków, i
przekształcenia). Przekształcenie działa pomiędzy '''obiektami''',
tak dalej, wszystko w języku przekształceń danej struktury.
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 <math>f</math> działa na pewien jedyny obiekt, nazwijmy go
'''dziedziną'''  <math>f</math> i oznaczmy <math>\mathrm''dom''(f)</math>,
i przekształca go w inny jedyny obiekt nazywany '''przeciwdziedziną'''
<math>f</math> i oznaczany jako <math>\mathrm''cod''(f)</math>. Fakt,
że morfizm <math>f</math> ma dziedzinę <math>A</math> i przeciwdziedzinę
<math>B</math> zapisujemy


Czy da się krótko, nieformalnie zebrać najważniejsze cechy przekształceń -- cechy niezależne od konkretnej teorii matematycznej? Spróbujmy!
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.1}\end_quote
Zaczynamy od nazwy: przekształcenie nazywać będziemy również {\bf morfizmem} (bo w przeróżnych teoriach matematycznych natykamy się na homomorfizmy, homeomorfizmy, endomorfizmy, itd.) lub po prostu {\bf strzałką} (bo tak zwykle graficznie przedstawia się przekształcenia). Przekształcenie działa pomiędzy {\bf 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 <math>f</math> działa na pewien jedyny obiekt, nazwijmy go {\bf dziedziną}  <math>f</math> i
oznaczmy <math>\mathrm{\it dom}(f)</math>, i przekształca go w inny jedyny obiekt
nazywany {\bf przeciwdziedziną} <math>f</math> i oznaczany jako <math>\mathrm{\it cod}(f)</math>.
Fakt, że morfizm <math>f</math> ma dziedzinę <math>A</math> i przeciwdziedzinę <math>B</math>
zapisujemy


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


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


morfizm:
morfizm:


\begin_quote{\tt Tu wstawić brakujący rysunek o numerze 1.3}\end_quote
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.3}\end_quote


może powstać albo z:
może powstać albo z:


\begin_quote{\tt Tu wstawić brakujący rysunek o numerze 1.4}\end_quote
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.4}\end_quote


albo, równoważnie, z:
albo, równoważnie, z:


\begin_quote{\tt Tu wstawić brakujący rysunek o numerze 1.5}\end_quote
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.5}\end_quote


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


\begin_quote{\tt Tu wstawić brakujący rysunek o numerze 1.6}\end_quote
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.6}\end_quote


To kończy nieformalny opis języka, w którym główną rolę grają
To kończy nieformalny opis języka, w którym główną rolę grają
Linia 143: Linia 142:
===Definicja kategorii===
===Definicja kategorii===


{{
{{ Definicja||uzupelnic|
definicja||uzupelnic|
 
{{kotwica|mod1:def:kategria1|}} Kategoria <math>\mathbf{C}</math> składa
się z następujących danych:
 
* (D1):  '''obiektów''': <math>A,B,C,...</math>, * (D2):  '''morfizmów''':
<math>f,g,h,...</math>, * (D3):  dwóch operacji <math>\mathrm{dom},
\mathrm{cod}</math> przypisującej każdemu morfizmowi <math>f</math>
obiekty <math>\mathrm{dom}(f)</math>i <math>\mathrm{cod}(f)</math>,
* (D4):  operacji <math>1</math> przypisującej każdemu obiektowi
<math>A</math> morfizm <math>1_A</math> nazywany identycznością, *
(D5):  operacji <math>\circ</math> przypisującej każdej parze morfizmów
<math>f,g</math> takich, że <math>\mathrm{cod}(g) = \mathrm{dom}(f)</math>
morfizm <math>f\circ g</math> nazywany złożeniem,


\label{mod1:def:kategria1} Kategoria <math>\mathbf{C}</math> składa się z
następujących danych:
\begin_enumerate
\item[(D1)] {\bf obiektów}: <math>A,B,C,...</math>,
\item[(D2)] {\bf morfizmów}: <math>f,g,h,...</math>,
\item[(D3)] dwóch operacji <math>\mathrm{dom}, \mathrm{cod}</math> przypisującej
każdemu morfizmowi <math>f</math> obiekty <math>\mathrm{dom}(f)</math>i
<math>\mathrm{cod}(f)</math>,
\item[(D4)] operacji <math>1</math> przypisującej każdemu
obiektowi <math>A</math> morfizm <math>1_A</math> nazywany identycznością,
\item[(D5)] operacji <math>\circ</math> przypisującej każdej parze morfizmów <math>f,g</math>
takich, że <math>\mathrm{cod}(g) = \mathrm{dom}(f)</math> morfizm <math>f\circ g</math>
nazywany złożeniem,
\end_enumerate
spełniających następujące aksjomaty:
spełniających następujące aksjomaty:
\begin_enumerate
 
\item[(A1)] <math>\mathrm{dom}(1_A) = A = \mathrm{cod}(1_A)</math>;
* (A1)<math>\mathrm{dom}(1_A) = A = \mathrm{cod}(1_A)</math>;
<math>\mathrm{dom}(f\circ g) = \mathrm{dom}(g)</math>; <math>\mathrm{cod}(f\circ
<math>\mathrm{dom}(f\circ g) = \mathrm{dom}(g)</math>;
g)=\mathrm{cod}(f)</math>,
<math>\mathrm{cod}(f\circ g)=\mathrm{cod}(f)</math>, * (A2)<math>f\circ
\item[(A2)] <math>f\circ 1_A = f = 1_B \circ f</math>,
1_A = f = 1_B \circ f</math>, gdzie <math>A=\mathrm{dom}(f)</math>
gdzie <math>A=\mathrm{dom}(f)</math> oraz <math>B=\mathrm{cod}(f)</math>,
oraz <math>B=\mathrm{cod}(f)</math>, * (A3): jeśli <math>f,g</math>
\item[(A3)]jeśli <math>f,g</math> są składalne oraz <math>g,h</math> są składalne, to
są składalne oraz <math>g,h</math> są składalne, to <math>(f\circ g)
<math>(f\circ g) \circ h = f\circ(g\circ h)</math>.
\circ h = f\circ(g\circ h)</math>.
\end_enumerate
 
}}
}}
Kolekcję obiektów kategorii <math>\mathbf{C}</math> będziemy w dalszym ciągu
oznaczać jako <math>\mathbf{C}_0</math>, zaś kolekcję jej morfizmów jako
<math>\mathbf{C}_1</math>.


{\tiny Tylko dla dociekliwych: Wiemy więc z czego {\it składa się} kategoria. Nie znamy jednak odpowiedzi na -- być może -- równie ważne pytanie: czym {\it jest} kategoria? W naszym wykładzie przyjmiemy po prostu, że kategorią będzie każda interpretacja aksjomatów przedstawionych w Definicji \ref{mod1:def:kategria1} na gruncie teorii mnogości.}  
Kolekcję obiektów kategorii <math>\mathbf{C}</math> będziemy w dalszym
ciągu oznaczać jako <math>\mathbf{C}_0</math>, zaś kolekcję jej morfizmów
jako <math>\mathbf{C}_1</math>.
 
{{ uwaga||uwaga_uzupelnic| Tylko 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 [[#mod1:def:kategria1|Uzupelnic
mod1:def:kategria1|]] na gruncie teorii mnogości. }}


Pokażmy, że o kategorii można też myśleć jako o specjalnym grafie
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:
skierowanym. Oto druga, równie dobra dla naszych potrzeb, definicja
kategorii:


{{
{{ Definicja||uzupelnic|
definicja||uzupelnic|


\label{mod1:def:kategoria2} Grafem skierowanym nazywamy kolekcję
{{kotwica|mod1:def:kategoria2|}} Grafem skierowanym nazywamy kolekcję
obiektów (wierzchołków) <math>O</math>, kolekcję strzałek (krawędzi) <math>A</math> i
obiektów (wierzchołków) <math>O</math>, kolekcję strzałek (krawędzi)
dwie funkcje
<math>A</math> i dwie funkcje


\begin_quote{\tt Tu wstawić brakujący rysunek o numerze 1.7}\end_quote
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.7}\end_quote


W grafie, kolekcja składalnych par strzałek to zbiór
W grafie, kolekcja składalnych par strzałek to zbiór <math>A\times_O A =\{
<math>A\times_O A =\{ (g,f)\mid g,f\in A \wedge \mathrm{dom}(g) =
(g,f)\mid g,f\in A \wedge \mathrm{dom}(g) = \mathrm{cod}(f)\}</math>
\mathrm{cod}(f)\}</math> nazywany {\bf produktem nad <math>O</math>}. O kategorii
nazywany '''produktem nad <math>O</math>'''. O kategorii można myśleć
można myśleć jako o grafie skierowanym <math>\mathbf{C}</math>, który posiada
jako o grafie skierowanym <math>\mathbf{C}</math>, który posiada dwie
dwie dodatkowe funkcje <math>1\colon O\to A</math>, <math>C\mapsto 1_C</math> oraz
dodatkowe funkcje <math>1\colon O\to A</math>, <math>C\mapsto 1_C</math>
<math>\circ\colon A\times_O A\to A</math>, <math>(g,f)\mapsto g\circ f</math> takie, że
oraz <math>\circ\colon A\times_O A\to A</math>, <math>(g,f)\mapsto
spełnione są warunki (A1)--(A3) Definicji
g\circ f</math> takie, że spełnione są warunki (A1)--(A3) Definicji
\ref{mod1:def:kategria1}.
[[#mod1:def:kategria1|Uzupelnic mod1:def:kategria1|]]. }}
}}


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


{{
{{ Definicja||uzupelnic|
definicja||uzupelnic|


\label{mod1:def:kategoria3}  Kategoria <math>\mathbf{C}</math> składa się z
{{kotwica|mod1:def:kategoria3|}}  Kategoria <math>\mathbf{C}</math> składa
dwóch operacji unarnych i jednej częściowej operacji binarnej.
się z dwóch operacji unarnych i jednej częściowej operacji binarnej.
Zmienne, na które działają te operacje nazywamy {\bf morfizmami}
Zmienne, na które działają te operacje nazywamy '''morfizmami'''
({\bf strzałkami}). Wartości tych operacji są zapisywane i czytane
('''strzałkami'''). Wartości tych operacji są zapisywane i czytane jako:
jako:


\begin_quote{\tt Tu wstawić brakujący rysunek o numerze 1.8}\end_quote
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.8}\end_quote


Operacje podlegają następującym aksjomatom:
Operacje podlegają następującym aksjomatom:
\begin_enumerate
 
\item[(b1)] <math>xy</math> jest zdefiniowane wtw, gdy <math>x\Box = \Box y</math>,
* (b1)<math>xy</math> jest zdefiniowane wtw, gdy <math>x\Box =
\item[(b2)] <math>(\Box x )\Box = \Box x</math> oraz <math>\Box (x\Box) = x\Box</math>,
\Box y</math>, * (b2)<math>(\Box x )\Box = \Box x</math> oraz
\item[(b3)] <math>(\Box x)x = x</math> oraz <math>x(x\Box)=x</math>,
<math>\Box (x\Box) = x\Box</math>, * (b3)<math>(\Box x)x = x</math>
\item[(b4)] <math>\Box(xy) = \Box(x(\Box y))</math> oraz <math>(xy)\Box = ((x\Box)y)\Box</math>
oraz <math>x(x\Box)=x</math>, * (b4)<math>\Box(xy) = \Box(x(\Box
\item[(b5)] <math>x(yz)=(xy)z</math>.
y))</math> oraz <math>(xy)\Box = ((x\Box)y)\Box</math> * (b5):
\end_enumerate
<math>x(yz)=(xy)z</math>.
 
}}
}}


W tym wypadku równoważność definicji z dwiema pozostałymi
W tym wypadku równoważność definicji z dwiema pozostałymi
(Definicje \ref{mod1:def:kategria1} i \ref{mod1:def:kategoria2})
(Definicje [[#mod1:def:kategria1|Uzupelnic mod1:def:kategria1|]] i
nie jest oczywista. Aby ją wykazać, rozpocznijmy od lematu, który
[[#mod1:def:kategoria2|Uzupelnic mod1:def:kategoria2|]]) nie jest
rzuci trochę światła na strukturę algebraiczną, którą przed chwilą
oczywista. Aby ją wykazać, rozpocznijmy od lematu, który rzuci trochę
opisaliśmy.
światła na strukturę algebraiczną, którą przed chwilą opisaliśmy.


\begin_lemma\label{mod1:lemma:freyd1}  Dla morfizmu <math>e</math> następujące warunki są
{{ Lemat||uzupelnic| {{kotwica|mod1:lemma:freyd1|}}  Dla morfizmu
równoważne: istnieje <math>x</math> taki, że <math>e=\Box x</math>; istnieje <math>y</math> taki,
<math>e</math> następujące warunki są równoważne: istnieje <math>x</math>
że <math>e=y\Box</math>; <math>e=\Box e</math>; <math>e=e\Box</math>; dla każdego <math>x</math>, <math>ex\approx
taki, że <math>e=\Box x</math>; istnieje <math>y</math> taki, że
x</math> (co oznacza, że jeśli złożenie <math>ex</math> jest zdefiniowane, to jest
<math>e=y\Box</math>; <math>e=\Box e</math>; <math>e=e\Box</math>; dla
równe <math>x</math>), dla każdego <math>x</math>, <math>xe\approx x</math>.
każdego <math>x</math>, <math>ex\approx x</math> (co oznacza, że jeśli
złożenie <math>ex</math> jest zdefiniowane, to jest równe <math>x</math>),
dla każdego <math>x</math>, <math>xe\approx x</math>.


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


Morfizm <math>e</math> spełniający dowolny z powyższych warunków nazywamy
Morfizm <math>e</math> spełniający dowolny z powyższych warunków nazywamy
{\bf identycznością}.
'''identycznością'''.


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


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


Załóżmy teraz, że <math>\mathrm{dom}(f)=\mathrm{cod}(g)</math>. Wówczas
Załóżmy teraz, że <math>\mathrm{dom}(f)=\mathrm{cod}(g)</math>. Wówczas
<math>\mathrm{dom}(f\circ g) = \Box(gf) = \Box(g\Box f) =
<math>\mathrm{dom}(f\circ g) = \Box(gf) = \Box(g\Box
\mathrm{dom}(1_{\mathrm{dom}(f)}\circ g) =
f) = \mathrm{dom}(1_{\mathrm{dom}(f)}\circ g) =
\mathrm{dom}(1_{\mathrm{cod}(g)}\circ g) = \mathrm{dom}(g)</math>.
\mathrm{dom}(1_{\mathrm{cod}(g)}\circ g) = \mathrm{dom}(g)</math>.
Ostatnia równość wynika z poprzedniego paragrafu. Podobnie,
Ostatnia równość wynika z poprzedniego paragrafu. Podobnie,
Linia 285: Linia 296:
===Przykłady kategorii===
===Przykłady kategorii===


\begin_itemize
* <math>\mathbf{Set}</math>: Obiektami są zbiory, morfizmami funkcje.
\item <math>\mathbf{Set}</math>: Obiektami są zbiory, morfizmami funkcje.
Uwaga! W teorii mnogości funkcja jest zdefiniowana jako zbiór par
Uwaga! W teorii mnogości funkcja jest zdefiniowana jako zbiór
uporządkowanych takich, że \begin_equation {{kotwica|eq:funkcja|}}
par uporządkowanych takich, że  
((x,y)\in f\ \wedge \ (x,y')\in f)\ \Rightarrow \ y=y'. \end_equation
\begin_equation
\label{eq:funkcja}
((x,y)\in f\ \wedge \ (x,y')\in f)\ \Rightarrow \ y=y'.
\end_equation


Aby traktować funkcje jako morfizmy musimy precyzyjnie znać
Aby traktować funkcje jako morfizmy musimy precyzyjnie znać
<math>\mathrm{dom}(f)</math> i <math>\mathrm{cod}(f)</math>. Na przykład funkcje
<math>\mathrm{dom}(f)</math> i <math>\mathrm{cod}(f)</math>. Na przykład
<math>\sin\colon \mathbb{R}\to [-1,1]</math> oraz <math>\sin\colon \mathbb{R}\to
funkcje <math>\sin\colon \mathbb{R}\to [-1,1]</math> oraz <math>\sin\colon
\mathbb{R},</math>, które mają takie samo działanie na argumentach, będą
\mathbb{R}\to \mathbb{R},</math>, które mają takie samo działanie
traktowane jako dwa różne morfizmy. Formalnie, w języku teorii
na argumentach, będą traktowane jako dwa różne morfizmy. Formalnie,
mnogości morfizmem będzie trójka <math>(X,f,Y)</math> taka, że <math>f\subseteq
w języku teorii mnogości morfizmem będzie trójka <math>(X,f,Y)</math>
X\times Y</math> spełnia powyższe równanie (\ref{eq:funkcja}) wraz z poniższym:
taka, że <math>f\subseteq X\times Y</math> spełnia powyższe równanie
\begin_equation
([[#eq:funkcja|Uzupelnic eq:funkcja|]]) wraz z poniższym: \begin_equation
x\in X \Rightarrow  (\exists y\in Y\ (x,y)\in f).
x\in X \Rightarrow  (\exists y\in Y\ (x,y)\in f). \end_equation Wtedy
\end_equation
<math>\mathrm{dom}</math> jest projekcją na pierwszą współrzędną
Wtedy <math>\mathrm{dom}</math> jest projekcją na pierwszą współrzędną
<math>(X,f,Y)\mapsto X</math>, a <math>\mathrm{cod}</math> projekcją
<math>(X,f,Y)\mapsto X</math>, a <math>\mathrm{cod}</math> projekcją na trzecią
na trzecią współrzędną. * Kategoria zbiorów skończonych i funkcji
współrzędną.
<math> \mathbf{Set}_{fin} </math>, jak również wiele innych kategorii,
\item Kategoria zbiorów skończonych i funkcji <math> \mathbf{Set}_{fin}
w których obiektami i morfizmami są ograniczone klasy zbiorów i funkcji,
</math>, jak również wiele innych kategorii, w których obiektami i
np. kategoria wszystkich zbiorów skończonych i injekcji. * Kategorie,
morfizmami są ograniczone klasy zbiorów i funkcji, np. kategoria
w których obiektami są zbiory z pewną dodatkową stukturą algebraiczną,
wszystkich zbiorów skończonych i injekcji.
zaś morfizmami te funkcje, które tę strukturę zachowują.
\item Kategorie, w których obiektami są zbiory z pewną dodatkową
 
stukturą algebraiczną, zaś morfizmami te funkcje, które tę
* <math>\mathbf{Vect}</math>: Przestrzenie wektorowe i odwzorowania
strukturę zachowują.
liniowe * <math>\mathbf{Grp}</math>: Grupy i homomorfizmy grup *
\begin_itemize
<math>\mathbf{Ab}</math>: Grupy abelowe i homomorfizmy grup *
\item <math>\mathbf{Vect}</math>: Przestrzenie wektorowe i odwzorowania liniowe
<math>\mathbf{Mon}</math>: Monoidy i homomorfizmy monoidów *
\item <math>\mathbf{Grp}</math>: Grupy i homomorfizmy grup
<math>\mathbf{Pos}</math>: Częściowe porządki i funkcje monotoniczne *
\item <math>\mathbf{Ab}</math>: Grupy abelowe i homomorfizmy grup
<math>\mathbf{Top}</math>: Przestrzenie topologiczne i funkcje ciągłe
\item <math>\mathbf{Mon}</math>: Monoidy i homomorfizmy monoidów
* <math>\mathbf{Graph}</math>: Grafy i homomorfizmy grafów * liczby
\item <math>\mathbf{Pos}</math>: Częściowe porządki i funkcje monotoniczne
naturalne <math>\mathrm'''nat'''</math> i wszystkie funkcje obliczalne
\item <math>\mathbf{Top}</math>: Przestrzenie topologiczne i funkcje ciągłe
 
\item <math>\mathbf{Graph}</math>: Grafy i homomorfizmy grafów
* Mając dowolny częściowy porządek (poset) <math>(P,\leq)</math>
\item liczby naturalne <math>\mathrm{\bf nat}</math> i wszystkie funkcje obliczalne
definiujemy kategorię o tej samej nazwie <math>P</math> jak następuje:
\end_itemize
jako obiekty bierzemy elementy <math> P</math>, zaś dla dwóch
\item Mając dowolny częściowy porządek (poset) <math>(P,\leq)</math>
obiektów <math> x,y\in P</math> przyjmujemy, że istnieje morfizm z
definiujemy kategorię o tej samej nazwie <math>P</math> jak następuje: jako
<math>x</math> do <math>y</math> wtedy i tylko wtedy, gdy <math>x\leq
obiekty bierzemy elementy <math> P</math>, zaś dla dwóch obiektów <math> x,y\in P</math>
y</math>. Zauważmy, że wystarczy tu, by <math>P</math> był preporządkiem,
przyjmujemy, że istnieje morfizm z <math>x</math> do <math>y</math> wtedy i tylko wtedy,
tzn. aby relacja <math>\leq</math> była zaledwie zwrotna i przechodnia.
gdy <math>x\leq y</math>. Zauważmy, że wystarczy tu, by <math>P</math> był preporządkiem, tzn. aby relacja <math>\leq</math> była zaledwie zwrotna i przechodnia.  
* <math>\mathbf{Rel}</math>: Obiektami tej kategorii są zbiory, zaś
\item <math>\mathbf{Rel}</math>: Obiektami tej kategorii są
morfizmami relacje binarne, tzn. <math> f\colon A\to B</math> wtedy
zbiory, zaś morfizmami relacje binarne, tzn. <math> f\colon A\to B</math>
i tylko wtedy, gdy <math> f\subseteq A\times B</math>. Wówczas rolę
wtedy i tylko wtedy, gdy <math> f\subseteq A\times B</math>. Wówczas rolę
identyczności spełniają relacje identycznościowe: <math> 1_A = \{
identyczności spełniają relacje identycznościowe: <math> 1_A = \{
(a,a)\mid a\in A \}</math>, zaś złożeniem morfizmów jest po prostu
(a,a)\mid a\in A \}</math>, zaś złożeniem morfizmów jest po prostu
złożenie relacji znane z kursu teorii mnogości: mając dane <math>
złożenie relacji znane z kursu teorii mnogości: mając dane <math>
R\subseteq A\times B</math> oraz <math> S \subseteq B\times C</math> przyjmujemy:
R\subseteq A\times B</math> oraz <math> S \subseteq B\times C</math>
<math> (a,c)\in S\circ R \Leftrightarrow \exists b\in B\ ((a,b)\in
przyjmujemy: <math> (a,c)\in S\circ R \Leftrightarrow \exists b\in
R\wedge (b,c)\in S)</math>
B\ ((a,b)\in R\wedge (b,c)\in S)</math> * \bfKategorie skończone:
\item {\bf Kategorie skończone(skończoność
(skończoność dotyczy ilości istniejących ''morfizmów'', choć nazwy tych
dotyczy ilości istniejących {\it morfizmów}, choć nazwy tych
kategorii odnoszą się do ilości ''obiektów''):
kategorii odnoszą się do ilości {\it obiektów}):
 
\begin_itemize
* <math>\mathbf{1}</math>: Ta kategoria ma jeden obiekt i jedną strzałkę:
\item <math>\mathbf{1}</math>: Ta kategoria ma jeden obiekt i jedną strzałkę:
identyczność.
identyczność.


\begin_quote{\tt Tu wstawić brakujący rysunek o numerze 1.9}\end_quote
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.9}\end_quote
 
* <math>\mathbf{0}</math>: Ta kategoria nie ma obiektów i nie ma strzałek.
* <math>\mathbf{2}</math>: Kategoria ta ma dwa obiekty i jedną strzałkę
pomiędzy nimi (a także oczywiście dwie wymagane identyczności).


\item <math>\mathbf{0}</math>: Ta kategoria nie ma obiektów i
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.10}\end_quote
nie ma strzałek.
\item <math>\mathbf{2}</math>: Kategoria ta ma dwa obiekty i
jedną strzałkę pomiędzy nimi (a także oczywiście dwie wymagane
identyczności).


\begin_quote{\tt Tu wstawić brakujący rysunek o numerze 1.10}\end_quote
* <math>\mathbf{3}</math>: 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!)


\item <math>\mathbf{3}</math>: Kategoria ma trzy obiekty, trzy
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.11}\end_quote
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!)


\begin_quote{\tt Tu wstawić brakujący rysunek o numerze 1.11}\end_quote
* 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).


\item Inne kategorie skończone
* \bfKategorie dyskretnesą to takie kategorie, w których nie ma
możemy tworzyć biorąc skończoną ilość obiektów wraz z
innych morfizmów niż identyczności. Łatwo uzmysłowić sobie, że kategorie
odpowiadającymi im identycznościami, a następnie dodając dowolną
dyskretne możemy utożsamiać ze zbiorami, bo przecież obiekty możemy
skończoną ilość morfizmów. W tym wypadku musimy jednak zadbać o
interpretować jako elementy zbioru.
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).
\end_itemize
\item {\bf Kategorie dyskretnesą 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.


\begin_quote{\tt Tu wstawić brakujący rysunek o numerze 1.12}\end_quote
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.12}\end_quote


\item Niech <math>(M, *, e)</math> będzie monoidem (<math>e</math> jest jego jedynką). Wówczas
* Niech <math>(M, *, e)</math> będzie monoidem (<math>e</math> jest
biorąc <math>M</math> jako jedyny obiekt, zaś elementy <math>M</math> jako morfizmy (z
jego jedynką). Wówczas biorąc <math>M</math> jako jedyny obiekt,
dziedziną i kodziedziną <math>M</math>), a działanie <math>*</math> jako złożenie
zaś elementy <math>M</math> jako morfizmy (z dziedziną i kodziedziną
morfizmów, otrzymujemy kategorię. Można łatwo pokazać również
<math>M</math>), a działanie <math>*</math> jako złożenie morfizmów,
konstrukcję odwrotną, tj. przekonać się, że każda kategoria z
otrzymujemy kategorię. Można łatwo pokazać również konstrukcję odwrotną,
jednym obiektem może być traktowana jako monoid. Mówiąc krótko:
tj. przekonać się, że każda kategoria z jednym obiektem może być
kategorie z jednym obiektem to monoidy. (Jak w takim razie
traktowana jako monoid. Mówiąc krótko: kategorie z jednym obiektem to
traktować grupy? Odpowiedź znajdziemy jeszcze przed końcem
monoidy. (Jak w takim razie traktować grupy? Odpowiedź znajdziemy jeszcze
wykładu...)
przed końcem wykładu...)


\begin_quote{\tt Tu wstawić brakujący rysunek o numerze 1.13}\end_quote
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.13}\end_quote


\item Dla danego rachunku logicznego możemy stworzyć kategorię w ten sposób, że obiektami są formuły: <math>\phi, \psi, ...</math> zaś morfizmem z <math>\phi</math> do <math>\psi</math> jest każda dedukcja (dowód) <math>\psi</math> z założenia <math>\phi</math>. Złożeniem morfizmów jest wtedy połączenie dowodów, które jest oczywiście łączne. Identyczność <math>1_{\phi}</math> to dowód pusty, bowiem z aksjomatów logicznych zawsze wynika <math>\phi\vdash\phi</math>.
* Dla danego rachunku logicznego możemy stworzyć kategorię w ten
\item Dla danego typowanego języka funkcyjnego <math>L</math> tworzymy kategorię w ten sposób, że obiektami są typy danych, zaś strzałkami są programy (procedury) języka <math>L</math>. Złożenie dwóch programów <math>X\stackrel{f}{\to}Y\stackrel{g}{\to}Z</math> jest program dany poprzez zaaplikowanie wyjścia programu <math>f</math> na wejściu programu <math>g</math>. Identycznością jest procedura, która {\it nic nie robi}.
sposób, że obiektami są formuły: <math>\phi, \psi, ...</math> zaś
\end_itemize
morfizmem z <math>\phi</math> do <math>\psi</math> jest każda dedukcja
(dowód) <math>\psi</math> z założenia <math>\phi</math>. Złożeniem
morfizmów jest wtedy połączenie dowodów, które jest oczywiście
łączne. Identyczność <math>1_\phi{}</math> to dowód pusty, bowiem
z aksjomatów logicznych zawsze wynika <math>\phi\vdash\phi</math>.
* Dla danego typowanego języka funkcyjnego <math>L</math> tworzymy
kategorię w ten sposób, że obiektami są typy danych, zaś strzałkami są
programy (procedury) języka <math>L</math>. Złożenie dwóch programów
<math>X\stackrel{f}\to{}Y\stackrel{g}\to{}Z</math> jest program dany
poprzez zaaplikowanie wyjścia programu <math>f</math> na wejściu programu
<math>g</math>. Identycznością jest procedura, która ''nic nie robi''.


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


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


{{
{{ Definicja||uzupelnic| {{kotwica|mod1:def:iso|}}  Niech
definicja||uzupelnic|
<math>\mathbf{C}</math> będzie dowolną kategorią. Morfizm <math>
\label{mod1:def:iso}  Niech <math>\mathbf{C}</math> będzie dowolną
f\colon A\to B</math> jest '''izomorfizmem''' jeśli istnieje morfizm
kategorią. Morfizm <math> f\colon A\to B</math> jest {\bf izomorfizmem} jeśli
<math> g\colon B\to A</math> taki, że <math> f\circ g = 1_B </math>
istnieje morfizm <math> g\colon B\to A</math> taki, że <math> f\circ g = 1_B </math>
oraz <math> g\circ f = 1_A</math>. Morfizm <math> g</math> nazywa się
oraz <math> g\circ f = 1_A</math>. Morfizm <math> g</math> nazywa się {\bf morfizmem
'''morfizmem odwrotnym do <math> f</math>''' . Jeśli dla obiektów <math>
odwrotnym do <math> f</math>} . Jeśli dla obiektów <math> A,B</math> kategorii <math>
A,B</math> kategorii <math> \mathbf{C}</math> istnieje izomorfizm <math>
\mathbf{C}</math> istnieje izomorfizm <math> f\colon A\to B</math>, to obiekty <math> A</math>
f\colon A\to B</math>, to obiekty <math> A</math> i <math> B</math>
i <math> B</math> nazywamy izomorficznymi, co zapisujemy jako <math>A\cong B</math>.
nazywamy izomorficznymi, co zapisujemy jako <math>A\cong B</math>. }}
}}


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


Fakt \ref{mod1:fact:bij} wyraża zatem myśl, że izomorfizmami w
Fakt [[#mod1:fact:bij|Uzupelnic mod1:fact:bij|]] wyraża zatem
<math>\mathbf{Set}</math> są dokładnie bijekcje. Ale uwaga: w kategoriach,
myśl, że izomorfizmami w <math>\mathbf{Set}</math> są dokładnie
których obiektami są zbiory z pewną strukturą, a morfizmami
bijekcje. Ale uwaga: w kategoriach, których obiektami są zbiory
funkcje zachowujące tę strukturę (kategorie o takich własnościach
z pewną strukturą, a morfizmami funkcje zachowujące tę strukturę
nazywamy konkretnymi, patrz Definicja \ref{mod5:def:konkret}, bijekcje {\it nie zawsze} są izomorfizmami. Prosty kontrprzykład stanowi tutaj
(kategorie o takich własnościach nazywamy konkretnymi, patrz Definicja
kategoria <math> \mathbf{Pos}</math> (Zadanie \ref{mod1:zad3}).
[[#mod5:def:konkret|Uzupelnic mod5:def:konkret|]], bijekcje ''nie zawsze''
są izomorfizmami. Prosty kontrprzykład stanowi tutaj kategoria <math>
\mathbf{Pos}</math> (Zadanie [[#mod1:zad3|Uzupelnic mod1:zad3|]]).


===Podstawy teoriomnogościowe===
===Podstawy teoriomnogościowe===


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


{{
{{ Definicja||uzupelnic| {{kotwica|mod1:def:size|}}  Kategorię
definicja||uzupelnic|
<math>\mathbf{C}</math> nazywamy '''małą''', jeśli kolekcja wszystkich
\label{mod1:def:size}  Kategorię <math>\mathbf{C}</math> nazywamy {\bf małą}, jeśli
obiektów <math> \mathbf{C}_0 </math> i morfizmów <math> \mathbf{C}_1
kolekcja wszystkich obiektów <math> \mathbf{C}_0 </math> i morfizmów <math>
</math> kategorii <math>\mathbf{C}</math> są zbiorami. W przeciwnym
\mathbf{C}_1 </math> kategorii <math>\mathbf{C}</math> są zbiorami. W przeciwnym
wypadku <math>\mathbf{C}</math> jest '''duża'''. }}
wypadku <math>\mathbf{C}</math> jest {\bf duża}.
}}


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


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


Większa część teorii kategorii, którą zaprezentujemy w dalszym
Większa część teorii kategorii, którą zaprezentujemy
toku wykładu dotyczy kategorii lokalnie małych (takich jak
w dalszym toku wykładu dotyczy kategorii lokalnie małych
<math>\mathbf{Pos}</math>, <math>\mathbf{Grp}</math>, <math>\mathbf{Vec}</math> itd. czy wszystkie
(takich jak <math>\mathbf{Pos}</math>, <math>\mathbf{Grp}</math>,
kategorie małe). Po dalsze wiadomości dotyczące podstaw
<math>\mathbf{Vec}</math> itd. czy wszystkie kategorie małe). Po dalsze
teoriomnogościowych teorii kategorii odsyłamy do dyskusji tego
wiadomości dotyczące podstaw teoriomnogościowych teorii kategorii
tematu w podręczniku {\it 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: {\it 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.
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.


===Ćwiczenia do Modułu 1===
===Ćwiczenia do Modułu 1===


\begin_zadanie
{{ Zadanie||uzupelnic|
\label{mod1:zad1} Udowodnij, że dla dwóch funkcji <math>f\colon A\to B</math>
 
oraz <math>g\colon B\to A</math> jeśli <math>f\circ g = 1_B</math> oraz <math>g\circ f =
{{kotwica|mod1:zad1|}} Udowodnij, że dla dwóch funkcji <math>f\colon
1_A</math>, to funkcja <math>f</math> jest bijekcją.
A\to B</math> oraz <math>g\colon B\to A</math> jeśli <math>f\circ g =
1_B</math> oraz <math>g\circ f = 1_A</math>, to funkcja <math>f</math>
jest bijekcją.


\proof[Rozwiązanie:] Pokażemy najpierw, że <math>f</math> jest funkcją
\proof[Rozwiązanie:] Pokażemy najpierw, że <math>f</math> jest funkcją
różnowartościową. Przypuśćmy, że <math>f(x)= f(y)</math> dla pewnych
różnowartościową. Przypuśćmy, że <math>f(x)= f(y)</math> dla pewnych
elementów <math>x,y\in A</math>. Wówczas <math>x = 1_A(x) = (g\circ f)(x) =
elementów <math>x,y\in A</math>. Wówczas <math>x = 1_A(x) = (g\circ
g(f(x)) = g(f(y)) = (g\circ f)(y) = 1_A(y) = y</math>. Ponadto, dla
f)(x) = g(f(x)) = g(f(y)) = (g\circ f)(y) = 1_A(y) = y</math>. Ponadto,
dowolnego <math>z\in B</math> element <math>g(z)</math> jest jedynym takim elementem, że
dla dowolnego <math>z\in B</math> element <math>g(z)</math> jest jedynym
<math>f(g(z)) = z</math>, co w szczególności oznacza, że <math>f</math> jest surjekcją.
takim elementem, że <math>f(g(z)) = z</math>, co w szczególności oznacza,
Wnioskujemy więc, że <math>f</math> jest różnowartościową surjekcją, czyli
że <math>f</math> jest surjekcją. Wnioskujemy więc, że <math>f</math>
bijekcją.
jest różnowartościową surjekcją, czyli bijekcją. }}
\end_zadanie
 
{{ Zadanie||uzupelnic|


\begin_zadanie
{{kotwica|mod1:zad2|}} Udowodnij Fakt [[#mod1:fact:naturalne|Uzupelnic
\label{mod1:zad2} Udowodnij Fakt \ref{mod1:fact:naturalne}.
mod1:fact:naturalne|]].


\proof[Wskazówka:] Fakt, że liczby naturalne posiadają wspomnianą
\proof[Wskazówka:] Fakt, że liczby naturalne posiadają wspomnianą w
w Fakcie \ref{mod1:fact:naturalne} jest dokładnie twierdzeniem o
Fakcie [[#mod1:fact:naturalne|Uzupelnic mod1:fact:naturalne|]] jest
rekursji. Pozostaje nam zatem udowodnienie implikacji przeciwnej.
dokładnie twierdzeniem o rekursji. Pozostaje nam zatem udowodnienie
implikacji przeciwnej.


\proof[Rozwiązanie:] Załóżmy zatem, że <math>N</math> jest pewnym zbiorem, który
\proof[Rozwiązanie:] Załóżmy zatem, że <math>N</math> jest pewnym
posiada wyróżniony element <math>0\in N</math> i funkcję <math>s\colon N\to N</math>
zbiorem, który posiada wyróżniony element <math>0\in N</math> i funkcję
spełniającą warunki zadania. Udowodnimy po kolei następujące
<math>s\colon N\to N</math> spełniającą warunki zadania. Udowodnimy
zdania (znane jako aksjomaty Peano), które -- zgodnie z wykładnią
po kolei następujące zdania (znane jako aksjomaty Peano), które --
teorii mnogości -- w sposób jednoznaczny determinują liczby
zgodnie z wykładnią teorii mnogości -- w sposób jednoznaczny determinują
naturalne spośród innych zbiorów, a co za tym idzie, potwierdzą,
liczby naturalne spośród innych zbiorów, a co za tym idzie, potwierdzą,
że zbiór <math>N</math> jest zbiorem liczb naturalnych:
że zbiór <math>N</math> jest zbiorem liczb naturalnych:
\begin_itemize
 
\item <math>\exists 0\in N</math>
* <math>\exists 0\in N</math>


To wiemy z założenia.
To wiemy z założenia.


\item <math>\forall n\in N \ s(n)\in N</math>
* <math>\forall n\in N \ s(n)\in N</math>


To wiemy z założenia.
To wiemy z założenia.


\item <math>\forall n\in N \ s(n)\neq 0</math>
* <math>\forall n\in N \ s(n)\neq 0</math>


Przypuśćmy przeciwnie, że dla pewnego <math>n\in N</math> mamy <math>s(n)=0</math>.
Przypuśćmy przeciwnie, że dla pewnego <math>n\in N</math> mamy
Wtedy kładąc <math>X=\{e, a\}</math> oraz <math>g(e)=g(a)=a</math>, z założenia
<math>s(n)=0</math>. Wtedy kładąc <math>X=\{e, a\}</math> oraz
istnieje funkcja <math>f\colon N\to X</math> taka, że <math>f(0)=e</math> oraz
<math>g(e)=g(a)=a</math>, z założenia istnieje funkcja <math>f\colon N\to
<math>f(s(n))=g(f(n))</math>. A zatem <math>f(s(n))=f(0)=e\neq a = g(f(n))</math>,
X</math> taka, że <math>f(0)=e</math> oraz <math>f(s(n))=g(f(n))</math>. A
sprzeczność.
zatem <math>f(s(n))=f(0)=e\neq a = g(f(n))</math>, sprzeczność.


\item <math>s</math> jest injekcją.
* <math>s</math> jest injekcją.


Przypuśćmy, że <math>s(n) = s(m)</math> dla pewnych <math>n,m\in N</math>. Kładąc <math>X :=
Przypuśćmy, że <math>s(n) = s(m)</math> dla pewnych <math>n,m\in
\{0,s(0),s(s(0)), ...\}</math> (jest to podzbiór <math>N</math>) oraz <math>e:=0</math>,
N</math>. Kładąc <math>X := \{0,s(0),s(s(0)), ...\}</math> (jest to
wiemy, że istnieje funkcja <math>f\colon N\to X</math> taka, że <math>f(0)=0</math> oraz
podzbiór <math>N</math>) oraz <math>e:=0</math>, wiemy, że istnieje
funkcja <math>f\colon N\to X</math> taka, że <math>f(0)=0</math> oraz
<math>f(s(n))=s(f(n))</math>. Taka funkcja jest tylko jedna, więc jej
<math>f(s(n))=s(f(n))</math>. Taka funkcja jest tylko jedna, więc jej
zawężenie do <math>X</math> musi być równe funkcji <math>h\colon X\to X</math>, która
zawężenie do <math>X</math> musi być równe funkcji <math>h\colon
spełnia warunki <math>h(0)=0</math> oraz <math>h(s(n))=n</math> dla <math>n\neq 0</math>. Dlatego
X\to X</math>, która spełnia warunki <math>h(0)=0</math> oraz
założenie <math>s(n)=s(m)</math> implikuje <math>n=h(s(n))=h(s(m))=m</math>, co należało
<math>h(s(n))=n</math> dla <math>n\neq 0</math>. Dlatego założenie
pokazać.
<math>s(n)=s(m)</math> implikuje <math>n=h(s(n))=h(s(m))=m</math>,
co należało pokazać.


\item <math>\forall A\subseteq N\ ((0\in A\wedge (a\in A\Rightarrow s(a)\in
* <math>\forall A\subseteq N\ ((0\in A\wedge (a\in A\Rightarrow s(a)\in
A))\Rightarrow A=N)</math>
A))\Rightarrow A=N)</math>


W tym punkcie przedstawimy najpierw rozumowanie teoriomnogościowe,
W tym punkcie przedstawimy najpierw rozumowanie teoriomnogościowe, a potem
a potem skorzystamy z okazji, aby ten sam dowód pokazać bardziej w
skorzystamy z okazji, aby ten sam dowód pokazać bardziej w duchu teorii
duchu teorii kategorii (stopniowo ten drugi rodzaj dowodów będzie
kategorii (stopniowo ten drugi rodzaj dowodów będzie zastępował pierwszy).
zastępował pierwszy).


Rozważmy zatem funkcję <math>s'\colon A\to A</math>, która -- będąc obcięciem
Rozważmy zatem funkcję <math>s'\colon A\to A</math>, która -- będąc
<math>s</math> do <math>A</math> -- spełnia warunek <math>s\circ i = i\circ s'</math>, gdzie
obcięciem <math>s</math> do <math>A</math> -- spełnia warunek <math>s\circ
<math>i\colon A\to N</math> jest inkluzją <math>A</math> w <math>N</math>. Zgodnie z założeniem
i = i\circ s'</math>, gdzie <math>i\colon A\to N</math> jest inkluzją
zadania, dla funkcji <math>s'</math> istnieje dokładnie jedna funkcja
<math>A</math> w <math>N</math>. Zgodnie z założeniem zadania, dla
<math>f\colon N\to A</math> taka, że <math>f(0)=0</math> oraz <math>s'\circ f = f\circ s</math>.
funkcji <math>s'</math> istnieje dokładnie jedna funkcja <math>f\colon
Łącząc tą równość z poprzednią, dostajemy <math>s\circ i\circ f =
N\to A</math> taka, że <math>f(0)=0</math> oraz <math>s'\circ
i\circ f\circ s</math>. Zwróćmy teraz uwagę na funkcję <math>i\circ f\colon
f = f\circ s</math>. Łącząc tą równość z poprzednią, dostajemy
N\to N</math>. Oczywiste spostrzeżenie, że <math>i\circ f(0)=0</math> pozwala nam
<math>s\circ i\circ f = i\circ f\circ s</math>. Zwróćmy teraz uwagę na
stwierdzić, że <math>i\circ f</math> jest {\it jedyną} funkcją typu <math>N\to
funkcję <math>i\circ f\colon N\to N</math>. Oczywiste spostrzeżenie,
N</math>, która spełnia ostatnią z równości. Skoro tak, to musi być
że <math>i\circ f(0)=0</math> pozwala nam stwierdzić, że <math>i\circ
równa identyczności na <math>N</math>. Pokazaliśmy więc, że <math>i\circ f =
f</math> jest ''jedyną'' funkcją typu <math>N\to N</math>, która spełnia
1_N</math>, a stąd -- jak łatwo pokazać wynika, że <math>f\colon N\to A</math> jest
ostatnią z równości. Skoro tak, to musi być równa identyczności na
injekcją. A zatem <math>N\subseteq A</math>, co należało wykazać.
<math>N</math>. Pokazaliśmy więc, że <math>i\circ f = 1_N</math>,
a stąd -- jak łatwo pokazać wynika, że <math>f\colon N\to A</math>
jest injekcją. A zatem <math>N\subseteq A</math>, co należało wykazać.


Pokazaliśmy zatem, że aksjomaty Peano są spełnione dla zbioru <math>N</math>,
Pokazaliśmy zatem, że aksjomaty Peano są spełnione dla zbioru
a zatem teoria mnogości uczy nas, że <math>N</math> jest zbiorem liczb
<math>N</math>, a zatem teoria mnogości uczy nas, że <math>N</math>
naturalnych <math>\mathrm{\bf nat}</math>.
jest zbiorem liczb naturalnych <math>\mathrm'''nat'''</math>.


Dowód ostatniego z aksjomatów Peano prowadzony w duchu teorii
Dowód ostatniego z aksjomatów Peano prowadzony w duchu teorii kategorii,
kategorii, czyli teorii przekształceń, korzysta z dobrodziejstwa,
czyli teorii przekształceń, korzysta z dobrodziejstwa, jakim jest
jakim jest możliwość przedstawiania funkcji i ich złożeń na
możliwość przedstawiania funkcji i ich złożeń na diagramach.
diagramach.


Po pierwsze, spróbujmy przedstawić graficznie (na diagramach)
Po pierwsze, spróbujmy przedstawić graficznie (na diagramach) założenia,
założenia, które mamy, tzn. zdanie: {\it <math>N</math> jest zbiorem, który
które mamy, tzn. zdanie: ''<math>N</math> jest zbiorem, który posiada
posiada wyróżniony element <math>0</math> oraz funkcję <math>s\colon N\to N</math>
wyróżniony element <math>0</math> oraz funkcję <math>s\colon N\to
takie, że dla dowolnego innego zbioru <math>X</math> i elementu <math>e\in X</math> oraz
N</math> takie, że dla dowolnego innego zbioru <math>X</math> i elementu
funkcji <math>g\colon X\to X</math> istnieje dokładnie jedna funkcja <math>f\colon
<math>e\in X</math> oraz funkcji <math>g\colon X\to X</math> istnieje
N\to X</math> spełniająca warunki <math>f(0)=e</math> oraz <math>f\circ s = g\circ f</math>.}
dokładnie jedna funkcja <math>f\colon N\to X</math> spełniająca warunki
<math>f(0)=e</math> oraz <math>f\circ s = g\circ f</math>.''


Zauważmy więc, że element <math>0\in N</math> może być zawsze traktowany jako
Zauważmy więc, że element <math>0\in N</math> może być zawsze traktowany
funkcja <math>0\colon \top \to N</math>, gdzie <math>\top</math> jest dowolnym zbiorem
jako funkcja <math>0\colon \top \to N</math>, gdzie <math>\top</math> jest
jednoelementowym (zwróćmy uwagę, że w tej interpretacji aplikacja
dowolnym zbiorem jednoelementowym (zwróćmy uwagę, że w tej interpretacji
funkcji staje się złożeniem, np. <math>f(0)</math> staje się złożeniem
aplikacja funkcji staje się złożeniem, np. <math>f(0)</math> staje się
<math>f\circ 0</math>). Podobnie dla <math>e\in X</math>. Po drugie, wszelkie równości
złożeniem <math>f\circ 0</math>). Podobnie dla <math>e\in X</math>. Po
pomiędzy funkcjami przedstawiamy jako komutowanie odpowiedniego
drugie, wszelkie równości pomiędzy funkcjami przedstawiamy jako
diagramu, np. równość <math>f\circ s = g\circ f</math> zachodzi wtedy i tylko
komutowanie odpowiedniego diagramu, np. równość <math>f\circ s = g\circ
wtedy, gdy poniższy diagram komutuje:
f</math> zachodzi wtedy i tylko wtedy, gdy poniższy diagram komutuje:


\begin_quote{\tt Tu wstawić brakujący rysunek o numerze 1.14}\end_quote
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.14}\end_quote


Następnie umawiamy się, że jeśli funkcja w diagramie jest jedyną, która może znajdować się pomiędzy dwoma danymi obiektami, to zaznaczamy ją przerywaną linią, np. zdanie {\it ...<math>f\colon
Następnie umawiamy się, że jeśli funkcja w diagramie jest jedyną,
N\to X</math> jest jedyną funkcją taką, że...} odzwierciedla się
która może znajdować się pomiędzy dwoma danymi obiektami, to zaznaczamy
graficznie jako:
ją przerywaną linią, np. zdanie ''...<math>f\colon N\to X</math> jest
jedyną funkcją taką, że...'' odzwierciedla się graficznie jako:


\begin_quote{\tt Tu wstawić brakujący rysunek o numerze 1.15}\end_quote
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.15}\end_quote


Jeśli diagram jest
Jeśli diagram jest bardziej skomplikowany, to umawiamy się, że odczytujemy
bardziej skomplikowany, to umawiamy się, że odczytujemy {\bf
'''wszystkie''' możliwe równania, przy czym umawiamy się, że nie musimy
wszystkie} możliwe równania, przy czym umawiamy się, że nie musimy
rysować identyczności. A zatem diagram:
rysować identyczności. A zatem diagram:


\begin_quote{\tt Tu wstawić brakujący rysunek o numerze 1.16}\end_quote
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.16}\end_quote


komutuje wtedy i
komutuje wtedy i tylko wtedy, gdy <math>0\in N</math>, <math>e\in
tylko wtedy, gdy <math>0\in N</math>, <math>e\in X</math>, <math>f(0)=e</math>, <math>f\circ s = g\circ
X</math>, <math>f(0)=e</math>, <math>f\circ s = g\circ f</math>,
f</math>, <math>(f\circ s)(0) = g(e)</math> (ten wniosek wynika z czterech
<math>(f\circ s)(0) = g(e)</math> (ten wniosek wynika z czterech
pozostałych!) i <math>f</math> jest jedyną taką funkcją, która spełnia
pozostałych!) i <math>f</math> jest jedyną taką funkcją, która spełnia
wszystkie wymienione zależności. Tak więc powyższy diagram zawiera
wszystkie wymienione zależności. Tak więc powyższy diagram zawiera całą
całą informację dostępną w założeniach zadania.
informację dostępną w założeniach zadania.


Przystąpmy więc do kategoryjnego dowodu ostatniego aksjomatu Peano. Oto on: skoro diagram
Przystąpmy więc do kategoryjnego dowodu ostatniego aksjomatu Peano. Oto
on: skoro diagram


\begin_quote{\tt Tu wstawić brakujący rysunek o numerze 1.17}\end_quote
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.17}\end_quote


komutuje, co możemy
komutuje, co możemy przedstawić również w skrócie jako:
przedstawić również w skrócie jako:


\begin_quote{\tt Tu wstawić brakujący rysunek o numerze 1.18}\end_quote
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.18}\end_quote


jak również
jak również komutuje diagram:
komutuje diagram:


\begin_quote{\tt Tu wstawić brakujący rysunek o numerze 1.19}\end_quote
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.19}\end_quote


to z warunku
to z warunku jednoznaczności istnienia funkcji dostajemy <math>i\circ
jednoznaczności istnienia funkcji dostajemy <math>i\circ f = 1_N</math>. To
f = 1_N</math>. To jednak implikuje, że <math>f</math> jest injekcją,
jednak implikuje, że <math>f</math> jest injekcją, czyli <math>N\subseteq A</math>, co
czyli <math>N\subseteq A</math>, co należało pokazać.
należało pokazać.


Jak zobaczymy w toku wykładu, dowody poprzez pokazanie
Jak zobaczymy w toku wykładu, dowody poprzez pokazanie komutujących
komutujących diagramów (czyli de facto wyeksplikowanie pewnych
diagramów (czyli de facto wyeksplikowanie pewnych równości między
równości między funkcjami -- czy też ogólniej: morfizmami) są
funkcjami -- czy też ogólniej: morfizmami) są bardzo często spotykane
bardzo często spotykane w teorii kategorii, a nawet zastępują
w teorii kategorii, a nawet zastępują wszelkie inne dowody.
wszelkie inne dowody.
\end_itemize


\end_zadanie
}}


\begin_zadanie
{{ Zadanie||uzupelnic|
\label{mod1:zad3} Znajdź przykład na to, że w kategorii <math>\mathrm{\bf Pos}</math>
bijekcje nie zawsze są izomorfizmami.


\proof[Wskazówka:] Wystarczy rozważyć częściowe porządki
{{kotwica|mod1:zad3|}} Znajdź przykład na to, że w kategorii
dwuelementowe.
<math>\mathrm'''Pos'''</math> bijekcje nie zawsze są izomorfizmami.


\proof[Rozwiązanie:] Rozważmy dwa posety dwuelementowe <math>P=\{x,y\}</math>,
\proof[Wskazówka:] Wystarczy rozważyć częściowe porządki dwuelementowe.
<math>Q=\{z,w\}</math> i funkcję <math>g\colon Q\to P</math>, <math>g(z)=x, g(w)=y</math>, jak na
rysunku:


\begin_quote{\tt Tu wstawić brakujący rysunek o numerze 1.20}\end_quote
\proof[Rozwiązanie:] Rozważmy dwa posety dwuelementowe
<math>P=\{x,y\}</math>, <math>Q=\{z,w\}</math> i funkcję <math>g\colon
Q\to P</math>, <math>g(z)=x, g(w)=y</math>, jak na rysunku:


Funkcja <math>g</math> jest oczywiście bijekcją, ale funkcja do niej odwrotna
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.20}\end_quote
nie jest monotoniczna, a zatem nie jest morfizmem w <math>\mathrm{\bf Pos}</math>. To
oznacza, że <math>g</math> nie może być izomorfizmem.
\end_zadanie


\begin_zadanie
Funkcja <math>g</math> jest oczywiście bijekcją, ale funkcja do
\label{mod1:zad4} Pokaż, że każda grupa może być traktowana jako
niej odwrotna nie jest monotoniczna, a zatem nie jest morfizmem w
<math>\mathrm'''Pos'''</math>. To oznacza, że <math>g</math> nie może
być izomorfizmem.  }}
 
{{ Zadanie||uzupelnic|
 
{{kotwica|mod1:zad4|}} Pokaż, że każda grupa może być traktowana jako
kategoria, w której każdy morfizm jest izomorfizmem.
kategoria, w której każdy morfizm jest izomorfizmem.


\proof[Rozwiązanie:] Niech <math>(G,\circ, e)</math> będzie grupą. Podobnie jak w
\proof[Rozwiązanie:] Niech <math>(G,\circ, e)</math> będzie
przypadku monoidów, deklarujemy <math>G</math> jako jedyny obiekt pewnej
grupą. Podobnie jak w przypadku monoidów, deklarujemy <math>G</math>
kategorii, zaś elementy zbioru <math>G</math> jako morfizmy tejże kategorii,
jako jedyny obiekt pewnej kategorii, zaś elementy zbioru <math>G</math>
działanie <math>\circ</math> jako złożenie morfizmów, element <math>e</math> traktując
jako morfizmy tejże kategorii, działanie <math>\circ</math> jako złożenie
jako identyczność na obiekcie <math>G</math>. Zauważmy, że każdy element
morfizmów, element <math>e</math> traktując jako identyczność na obiekcie
posiada element odwrotny, czyli dla każdego <math>g\in G</math> istnieje
<math>G</math>. Zauważmy, że każdy element posiada element odwrotny,
<math>g^{-1}\in G</math> tak, że <math>g\circ g^{-1} = e = g^{-1}\circ g</math>. Te
czyli dla każdego <math>g\in G</math> istnieje <math>g^{-1}\in G</math>
równania interpretowane w naszej kategorii czynią tenże dowolnie
tak, że <math>g\circ g^{-1} = e = g^{-1}\circ g</math>. Te równania
wybrany element <math>g</math> izomorfizmem.
interpretowane w naszej kategorii czynią tenże dowolnie wybrany element
\end_zadanie
<math>g</math> izomorfizmem. }}
 
{{ Zadanie||uzupelnic|


\begin_zadanie
{{kotwica|mod1:zad5|}} Dla dowolnej kategorii <math>\mathbf{C}</math>
\label{mod1:zad5} Dla dowolnej kategorii <math>\mathbf{C}</math> zaproponuj
zaproponuj konstrukcję nowej kategorii, w której -- żądamy -- obiektami
konstrukcję nowej kategorii, w której -- żądamy -- obiektami są
są morfizmy z <math>\mathbf{C}</math>.
morfizmy z <math>\mathbf{C}</math>.


\proof[Wskazówka:] Niech <math>\mathbf{C}</math> będzie dowolną kategorią; dla dwóch jej dowolnych morfizmów <math>f\colon A\to B</math> oraz <math>g\colon C\to D</math>, musimy zaproponować taką operację, dla której <math>f</math> jest dziedziną i <math>g</math> jest kodziedziną. Gdyby przedstawić to graficznie, w postaci diagramu, łatwo przyjdzie nam na myśl definicja takiej operacji: będzie to {\it para morfizmów} <math>(a\colon A\to C, b\colon B\to D)</math> z kategorii <math>\mathbf{C}</math> taka, że poniższy diagram komutuje:
\proof[Wskazówka:] Niech <math>\mathbf{C}</math> będzie dowolną
kategorią; dla dwóch jej dowolnych morfizmów <math>f\colon A\to
B</math> oraz <math>g\colon C\to D</math>, musimy zaproponować taką
operację, dla której <math>f</math> jest dziedziną i <math>g</math>
jest kodziedziną. Gdyby przedstawić to graficznie, w postaci diagramu,
łatwo przyjdzie nam na myśl definicja takiej operacji: będzie to ''para
morfizmów'' <math>(a\colon A\to C, b\colon B\to D)</math> z kategorii
<math>\mathbf{C}</math> taka, że poniższy diagram komutuje:


\begin_quote{\tt Tu wstawić brakujący rysunek o numerze 1.21}\end_quote
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.21}\end_quote


Teraz już łatwo dopowiedzieć szczegóły konstrukcji.
Teraz już łatwo dopowiedzieć szczegóły konstrukcji.


\proof[Rozwiązanie:] Zaproponujemy najpierw złożenie: dwa morfizmy <math>(a,b)</math> oraz <math>(c,d)</math> jak poniżej:
\proof[Rozwiązanie:] Zaproponujemy najpierw złożenie: dwa morfizmy
<math>(a,b)</math> oraz <math>(c,d)</math> jak poniżej:


\begin_quote{\tt Tu wstawić brakujący rysunek o numerze 1.22}\end_quote
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.22}\end_quote


składają się tak:
składają się tak:


\begin_quote{\tt Tu wstawić brakujący rysunek o numerze 1.23}\end_quote
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.23}\end_quote
 
albo formalnie: <math>(a,b)\circ (c,d) = (a\circ c, b\circ
d)</math>. Oczywiście <math>\mathrm''dom''((a\circ c, b\circ d)) =
h</math> oraz <math>\mathrm''cod''((a\circ c, b\circ d)) = g</math>.
W końcu, identycznościami w nowej kategorii, która często oznacza się
jako <math>\mathbf{C}^\to{}</math> są pary identyczności z kategorii
<math>\mathbf{C}</math>. Wszelkie pozostałe czynności, które musimy
wykonać, by sprawdzić, że <math>\mathbf{C}</math> jest kategorią,
są trywialne.  }}


albo formalnie: <math>(a,b)\circ (c,d) = (a\circ c, b\circ d)</math>. Oczywiście <math>\mathrm{\it dom}((a\circ c, b\circ d)) = h</math> oraz <math>\mathrm{\it cod}((a\circ c, b\circ d)) = g</math>.
{{ Zadanie||uzupelnic|
W końcu, identycznościami w nowej kategorii, która często oznacza się jako <math>\mathbf{C}^{\to}</math> są pary identyczności z kategorii <math>\mathbf{C}</math>. Wszelkie pozostałe czynności, które musimy wykonać, by sprawdzić, że <math>\mathbf{C}</math> jest kategorią, są trywialne.
\end_zadanie


\begin_zadanie
{{kotwica|mod1:zad6|}} Niech <math>\mathbf{C}</math> będzie kategorią,
\label{mod1:zad6} Niech <math>\mathbf{C}</math> będzie kategorią, zaś <math>A\in \CC_0</math>
zaś <math>A\in \CC_0</math> jej ustalonym obiektem. Zaproponuj
jej ustalonym obiektem. Zaproponuj konstrukcję nowej kategorii,
konstrukcję nowej kategorii, której obiektami są wszystkie morfizmy z
której obiektami są wszystkie morfizmy z <math>\mathbf{C}</math> o kodziedzinie <math>A</math>.
<math>\mathbf{C}</math> o kodziedzinie <math>A</math>.


\proof[Wskazówka:] Wykorzystaj Zadanie \ref{mod1:zad5}.
\proof[Wskazówka:] Wykorzystaj Zadanie [[#mod1:zad5|Uzupelnic
mod1:zad5|]].


\proof[Rozwiązanie:] Tak jak w Zadaniu \ref{mod1:zad5} morfizmami nowej kategorii, oznaczanej często <math>\mathbf{C} / A</math> i nazywanej <math>A</math>-warstwą <math>\mathbf{C}</math> są komutujące diagramy: ponieważ wszystkie obiekty <math>\mathbf{C} / A</math> jako morfizmy <math>\mathbf{C}</math> mają wspólną kodziedzinę, więc możemy przyjąć, że morfizmami są komutujące trójkąty:
\proof[Rozwiązanie:] Tak jak w Zadaniu [[#mod1:zad5|Uzupelnic mod1:zad5|]]
morfizmami nowej kategorii, oznaczanej często <math>\mathbf{C} /
A</math> i nazywanej <math>A</math>-warstwą <math>\mathbf{C}</math>
są komutujące diagramy: ponieważ wszystkie obiekty <math>\mathbf{C} /
A</math> jako morfizmy <math>\mathbf{C}</math> mają wspólną kodziedzinę,
więc możemy przyjąć, że morfizmami są komutujące trójkąty:


\begin_quote{\tt Tu wstawić brakujący rysunek o numerze 1.24}\end_quote
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.24}\end_quote


albo formalnie: jeśli <math>f\colon B\to A</math> oraz <math>g\colon C\to A</math> są obiektami <math>\mathbf{C} / A</math>, to morfizmem o dziedzinie <math>f</math> i kodziedzinie <math>g</math> jest morfizm <math>h\colon B\to C</math> z <math>\mathbf{C}</math> taki, że powyższy diagram komutuje. Sprawdzenie, że <math>\mathbf{C} / A</math> jest kategorią jest już trywialne.  
albo formalnie: jeśli <math>f\colon B\to A</math> oraz <math>g\colon
\end_zadanie
C\to A</math> są obiektami <math>\mathbf{C} / A</math>, to morfizmem
o dziedzinie <math>f</math> i kodziedzinie <math>g</math> jest morfizm
<math>h\colon B\to C</math> z <math>\mathbf{C}</math> taki, że powyższy
diagram komutuje. Sprawdzenie, że <math>\mathbf{C} / A</math> jest
kategorią jest już trywialne. }}


\begin_zadanie
{{ Zadanie||uzupelnic|
\label{mod1:zad7} Udowodnij, że złożenie izomorfizmów jest
 
{{kotwica|mod1:zad7|}} Udowodnij, że złożenie izomorfizmów jest
izomorfizmem, że morfizm odwrotny do izomorfizmu jest tylko jeden,
izomorfizmem, że morfizm odwrotny do izomorfizmu jest tylko jeden,
a także, że identyczności w dowolnej kategorii są izomorfizmami.
a także, że identyczności w dowolnej kategorii są izomorfizmami.


\proof[Rozwiązanie:] Pokażmy najpierw, że złożenie izomorfizmów jest
\proof[Rozwiązanie:] Pokażmy najpierw, że złożenie izomorfizmów jest
izomorfizmem. Załóżmy, że <math>f\colon A\to B</math> oraz <math>g\colon B\to C</math>
izomorfizmem. Załóżmy, że <math>f\colon A\to B</math> oraz <math>g\colon
są izmorfizmami. Wówczas ich złożenie <math>g\circ f\colon A\to C</math>
B\to C</math> są izmorfizmami. Wówczas ich złożenie <math>g\circ
posiada morfizm odwrotny <math>f^{-1}\circ g^{-1}</math>. Rzeczywiście,
f\colon A\to C</math> posiada morfizm odwrotny <math>f^{-1}\circ
<math>(g\circ f)\circ (f^{-1}\circ g^{-1}) = g\circ )f\circ
g^{-1}</math>. Rzeczywiście, <math>(g\circ f)\circ (f^{-1}\circ g^{-1})
f^{-1})\circ g^{-1} = g\circ 1_B \circ g^{-1} = g\circ g^{-1} =
= g\circ )f\circ f^{-1})\circ g^{-1} = g\circ 1_B \circ g^{-1} = g\circ
1_C</math> i podobnie pokazujemy drugie z równań dla izomorfizmu.
g^{-1} = 1_C</math> i podobnie pokazujemy drugie z równań dla izomorfizmu.


Rozwiążemy to samo zadanie graficznie: zauważmy, że fakt, że <math>f</math>
Rozwiążemy to samo zadanie graficznie: zauważmy, że fakt, że
jest izomorfizmem z odwrotnością <math>f^{-1}</math> jest wyrażony przez
<math>f</math> jest izomorfizmem z odwrotnością <math>f^{-1}</math>
fakt, że poniższy diagram komutuje:
jest wyrażony przez fakt, że poniższy diagram komutuje:


\begin_quote{\tt Tu wstawić brakujący rysunek o numerze 1.25}\end_quote
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.25}\end_quote


(Przypomnijmy sobie umowę z Zadania \ref{mod1:zad2}, że nie
(Przypomnijmy sobie umowę z Zadania [[#mod1:zad2|Uzupelnic mod1:zad2|]],
rysujemy identyczności.)
że nie rysujemy identyczności.)


Podobnie, diagram:
Podobnie, diagram:


\begin_quote{\tt Tu wstawić brakujący rysunek o numerze 1.26}\end_quote
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.26}\end_quote


komutuje, a co za tym idzie, złożenie tych dwóch diagramów
komutuje, a co za tym idzie, złożenie tych dwóch diagramów komutuje:
komutuje:


\begin_quote{\tt Tu wstawić brakujący rysunek o numerze 1.27}\end_quote
\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.27}\end_quote


To zaś kończy dowód faktu, że <math>f^{-1}\circ g^{-1}</math> jest
To zaś kończy dowód faktu, że <math>f^{-1}\circ g^{-1}</math> jest
odwrotnością <math>g\circ f</math>.
odwrotnością <math>g\circ f</math>.


Po drugie, pokażmy, że morfizm odwrotny do izmorfizmu jest tylko
Po drugie, pokażmy, że morfizm odwrotny do izmorfizmu jest tylko jeden:
jeden: załóżmy przeciwnie, że dla pewnego izomorfizmu <math>f\colon
załóżmy przeciwnie, że dla pewnego izomorfizmu <math>f\colon A\to B</math>
A\to B</math> istnieją dwie odwrotności <math>g,h\colon B\to A</math>. Wówczas <math>g =
istnieją dwie odwrotności <math>g,h\colon B\to A</math>. Wówczas <math>g
g\circ 1_B = g \circ (f\circ h) = (g\circ f)\circ h = 1_A\circ h =
= g\circ 1_B = g \circ (f\circ h) = (g\circ f)\circ h = 1_A\circ h =
h</math>, co należało pokazać.
h</math>, co należało pokazać.


Po trzecie, niech <math>A</math> będzie dowolnym obiektem dowolnej kategorii.
Po trzecie, niech <math>A</math> będzie dowolnym obiektem dowolnej
Identyczność <math>1_A</math> spełnia oczywiście (z definicji kategorii)
kategorii. Identyczność <math>1_A</math> spełnia oczywiście (z definicji
równanie <math>1_A = 1_A\circ 1_A</math>, co świadczy o tym, że jest
kategorii) równanie <math>1_A = 1_A\circ 1_A</math>, co świadczy o tym,
izomorfizmem.  
że jest izomorfizmem. }}
\end_zadanie


\begin_zadanie
{{ Zadanie||uzupelnic|
\label{mod1:zad8} Znajdź kategorię, która ma tę własność, że jeśli
 
{{kotwica|mod1:zad8|}} Znajdź kategorię, która ma tę własność, że jeśli
dwa obiekty są izomorficzne, to muszą być sobie równe.
dwa obiekty są izomorficzne, to muszą być sobie równe.


\proof[Wskazówka:] Można wziąć pod uwagę te szczególne kategorie,
\proof[Wskazówka:] Można wziąć pod uwagę te szczególne kategorie, w
w których istnieje co najwyżej jedna strzałka pomiędzy dowolnymi
których istnieje co najwyżej jedna strzałka pomiędzy dowolnymi dwoma
dwoma obiektami.
obiektami.


\proof[Rozwiązanie:] Niech <math>(P,\sqsubseteq)</math> będzie częściowym porządkiem.
\proof[Rozwiązanie:] Niech <math>(P,\sqsubseteq)</math> będzie
Traktowany jako kategoria, posiada tę własność, że pomiędzy dwoma
częściowym porządkiem. Traktowany jako kategoria, posiada tę własność,
jego obiektami (elementami) istnieje co najwyżej jeden morfizm (w
że pomiędzy dwoma jego obiektami (elementami) istnieje co najwyżej jeden
przypadku, gdy elementy te są w częściowym porządku). Niech <math>p,q</math>
morfizm (w przypadku, gdy elementy te są w częściowym porządku). Niech
będą obiektami izomorficznymi.  W języku częściowych porządków
<math>p,q</math> będą obiektami izomorficznymi.  W języku częściowych
oznacza to, że <math>p\sqsubseteq q</math> i <math>q\sqsubseteq p</math>. Antysymetria relacji
porządków oznacza to, że <math>p\sqsubseteq q</math> i <math>q\sqsubseteq
porządkującej daje nam <math>p=q</math>, co należało pokazać.
p</math>. Antysymetria relacji porządkującej daje nam <math>p=q</math>,
\end_zadanie
co należało pokazać. }}


\begin_zadanie
{{ Zadanie||uzupelnic|
\label{mod1:zad9} Pokaż, że w kategorii <math>\mathrm{\bf Mon}</math> izomorfizmy to
dokładnie bijektywne homomorfizmy monoidów.


\proof[Wskazówka:] Jedna z implikacji jest bardzo łatwa: jeśli <math>f</math>
{{kotwica|mod1:zad9|}} Pokaż, że w kategorii <math>\mathrm'''Mon'''</math>
jest izomorfizmem w <math>\mathrm{\bf Mon}</math>, to w szczególności jest morfizmem,
izomorfizmy to dokładnie bijektywne homomorfizmy monoidów.
czyli homomorfizmem monoidów. Równania dla <math>f</math> jako izomorfizmu
implikują, że <math>f</math> jest też bijekcją, w dokładnie ten sam sposób, w
jaki pokazaliśmy dla funkcji między zbiorami (patrz dyskusja po
Fakcie \ref{mod1:fact:bij}). Wystarczy więc udowodnić implikację
odwrotną.


\proof[Rozwiązanie:] Załóżmy, że <math>f\colon M\to N</math> jest bijektywnym
\proof[Wskazówka:] Jedna z implikacji jest bardzo łatwa: jeśli
homomorfizmem z odwrotnością <math>g\colon N\to M</math>. Wystarczy pokazać,
<math>f</math> jest izomorfizmem w <math>\mathrm'''Mon'''</math>, to w
że <math>g</math> jest homomorfizmem, tzn., że <math>g(e_N)=e_M</math> oraz
szczególności jest morfizmem, czyli homomorfizmem monoidów. Równania dla
<math>g(n_1\circ_N n_2) = g(n_1)\circ_M g(n_2)</math> dla dowolnych <math>n_1,
<math>f</math> jako izomorfizmu implikują, że <math>f</math> jest też
n_2\in N</math>. Wykorzystując fakt, że <math>f</math> -- jako homomorfizm --
bijekcją, w dokładnie ten sam sposób, w jaki pokazaliśmy dla funkcji
zachowuje jedynkę, mamy: <math>e_M = g(f(e_M)) = g(e_N)</math>, czyli
między zbiorami (patrz dyskusja po Fakcie [[#mod1:fact:bij|Uzupelnic
pierwszą z szukanych równości. Znów opierając się na własnościach
mod1:fact:bij|]]). Wystarczy więc udowodnić implikację odwrotną.
<math>f</math> mamy: <math>g(n_1)\circ_M g(n_2) = g(f(g(n_1)\circ_M g(n_2))) =
 
\proof[Rozwiązanie:] Załóżmy, że <math>f\colon M\to N</math>
jest bijektywnym homomorfizmem z odwrotnością <math>g\colon N\to
M</math>. Wystarczy pokazać, że <math>g</math> jest homomorfizmem, tzn.,
że <math>g(e_N)=e_M</math> oraz <math>g(n_1\circ_N n_2) = g(n_1)\circ_M
g(n_2)</math> dla dowolnych <math>n_1, n_2\in N</math>. Wykorzystując
fakt, że <math>f</math> -- jako homomorfizm -- zachowuje jedynkę,
mamy: <math>e_M = g(f(e_M)) = g(e_N)</math>, czyli pierwszą z
szukanych równości. Znów opierając się na własnościach <math>f</math>
mamy: <math>g(n_1)\circ_M g(n_2) = g(f(g(n_1)\circ_M g(n_2))) =
g(f(g(n_1))\circ_N f(g(n_2))) = g(n_1\circ_N n_2)</math>, co należało
g(f(g(n_1))\circ_N f(g(n_2))) = g(n_1\circ_N n_2)</math>, co należało
pokazać.
pokazać. }}
\end_zadanie
 
{{ Zadanie||uzupelnic|
 
{{kotwica|mod1:zad10|}} Przekonaj się, że kategorie i funktory
tworzą kategorię, którą oznaczamy <math>\mathrm'''Cat'''</math>.
\proof[Wskazówka:] Przeczytaj najpierw Definicję
[[#mod5:def:funktor|Uzupelnic mod5:def:funktor|]], w której mówimy czym
są funktory.  \proof[Rozwiązanie:] Najpierw definiujemy identyczności:
dla dowolnej kategorii <math>\mathbf{C}</math> proponujemy przekształcenie
<math>1_\mathbf{C}{}</math> jako <math>1_\mathbf{C}{}(A) := A</math>
<math>1_\mathbf{C}{}(f\colon A\to B) := f</math> dla dowolnych <math>A\in
\CC_0, f\in \CC_1</math>.  Wtedy oczywiście <math>1_\mathbf{C}{}</math>
jest funktorem.  Złożenie funktorów definiujemy w sposób naturalny,
tak jak złożenie funkcji w <math>\mathrm'''Set'''</math>.  Niech
<math>F\colon \mathbf{C}\to \mathbf{D}</math>, <math>G\colon \mathbf{D}\to
\mathbf{A}</math>, <math>H\colon \mathbf{A}\to\mathbf{B}</math> będą
funktorami.  <math>(1_\mathbf{D}{}\circ F)(A) = 1_\mathbf{D}{}(F(A))=F(A)=
F(1_\mathbf{C}{})(A)=(F\circ 1_\mathbf{C}{})(A)</math> dla <math>A\in
\CC_0</math> i taki sam dowód działa dla morfizmów.  Wnioskujemy więc,
że <math>1_\mathbf{D}{}\circ F = F= F\circ 1_\mathbf{C}{}.</math> Ponadto:
<math>H\circ (G\circ F)(-) = H((G\circ F)(-))=H(G(F(-)))=(H\circ G)(F(-))
= ((H\circ G)\circ F)(-),</math> gdzie <math>(-)</math> oznacza miejsce,
w które można wstawić obiekt lub morfizm z <math>\mathbf{C}</math> --
taka konwencja notacyjna będzie często używana w przyszłości.  A zatem
wnioskujemy, że złożenie funktorów jest łączne.  }}
 
{{ Zadanie||uzupelnic|
 
{{kotwica|mod1:zad11|}} Podaj dwa dalsze przykłady kategorii.
\proof[Wskazówka:] Najprościej zdefiniować nowe kategorie poprzez
modyfikację istniejących przykładów (np. kategorię tworzą zbiory i funkcje
częściowe). Nasz drugi przykład jest tego typu: jako język funkcyjny
bierzemy <math>\lambda</math>-rachunek i tworzymy dla niego kategorię,
tak jak opisaliśmy to w jednym z ostatnich przykładów podanych podczas
wykładu.
 
\proof[Rozwiązanie:]
 
* \bfAutomaty::  Niech <math>M=(M,*, e)</math> będzie
monoidem. Definiujemy '''<math>M</math>-automat''' jako parę
<math>(S,\delta)</math> składającą się ze zbioru stanów <math>S</math>
i funkcji przejścia <math>\delta\colon M\times S\to S</math>
tak, że: <math>\delta(x*y,s) := \delta(x,\delta(y,s)),</math>
<math>\delta(e,s)=s,</math> dla dowolnych <math>x,y\in M</math>,
<math>s\in S</math>.  Morfizmem <math>M</math>-automatów
<math>(S,\delta)</math>, <math>(Z,\eta)</math> jest funkcja
<math>f\colon S\to Z</math> taka, że <math>f(\delta(x,s)) =
\eta(x,f(s))</math>. Sprawdzenie, że taka struktura jest kategorią jest
oczywiste, nieprawdaż?  * \bfRachunek lambda::  rozważamy prosty rachunek
<math>\lambda</math> z typami. (<math>\lambda</math>-rachunek jest
formalizmem pozwalającym na  wygodną manipulację funkcjami. Umożliwia opis
funkcji bez podawania jej nazwy, np: funkcja <math>x\mapsto x^2</math>
jest w rachunku lambda zapisywana jako <math>\lambda x.x^2</math>,
zaś funkcja, której wartością jest również funkcja: <math>y\mapsto
(x\mapsto x^2+2y)</math> zapisuje się jako <math>\lambda y.\lambda
x.x^2+2y</math>.) Formalnie, <math>\lambda</math>-rachunek składa się z:
 
* typów: <math>A,B, A\times B,A\to B, ...</math> * termów, w skład
których wchodzą:


\begin_zadanie
* dla każdego typu <math>A</math> zmienne tego typu:
\label{mod1:zad10} Przekonaj się, że kategorie i funktory tworzą kategorię, którą oznaczamy <math>\mathrm{\bf Cat}</math>.
<math>x:A,y:A,z:A,...</math>, * stałe różnych typów:
\proof[Wskazówka:] Przeczytaj najpierw Definicję \ref{mod5:def:funktor}, w której mówimy czym są funktory.
<math>a:A,b:B,...</math>, * dla dowolnych <math>a:A, b:B</math>,
\proof[Rozwiązanie:] Najpierw definiujemy identyczności: dla dowolnej kategorii <math>\mathbf{C}</math> proponujemy przekształcenie <math>1_{\mathbf{C}}</math> jako
para: <math>\langle a,b\rangle:A\times B</math>, * dla dowolnego
<math>1_{\mathbf{C}}(A) := A</math>
<math>c:A\times, B</math>, projekcja <math>\pi_1(c):A</math>, * dla
<math>1_{\mathbf{C}}(f\colon A\to B) := f</math>
dowolnego <math>c:A\times B</math>, projekcja <math>\pi_2(c):B</math>, *
dla dowolnych <math>A\in \CC_0, f\in \CC_1</math>.
dla dowolnych <math>c:A\times B, a:A</math>, aplikacja <math>ca:B</math>,
Wtedy oczywiście <math>1_{\mathbf{C}}</math> jest funktorem.
* dla dowolnych <math>x:A, b:B</math>, abstrakcja <math>\lambda x.b:A\to
Złożenie funktorów definiujemy w sposób naturalny, tak jak złożenie funkcji w <math>\mathrm{\bf Set}</math>.
B</math>.
Niech <math>F\colon \mathbf{C}\to \mathbf{D}</math>, <math>G\colon \mathbf{D}\to \mathbf{A}</math>, <math>H\colon \mathbf{A}\to\mathbf{B}</math> będą funktorami.
<math>(1_{\mathbf{D}}\circ F)(A) = 1_{\mathbf{D}}(F(A))=F(A)= F(1_{\mathbf{C}})(A)=(F\circ 1_{\mathbf{C}})(A)</math>
dla <math>A\in \CC_0</math> i taki sam dowód działa dla morfizmów.
Wnioskujemy więc, że
<math>1_{\mathbf{D}}\circ F = F= F\circ 1_{\mathbf{C}}.</math>
Ponadto:
<math>H\circ (G\circ F)(-) = H((G\circ F)(-))=H(G(F(-)))=(H\circ G)(F(-)) = ((H\circ G)\circ F)(-),</math>
gdzie <math>(-)</math> oznacza miejsce, w które można wstawić obiekt lub morfizm z <math>\mathbf{C}</math> -- taka konwencja notacyjna będzie często używana w przyszłości.
A zatem wnioskujemy, że złożenie funktorów jest łączne.
\end_zadanie


\begin_zadanie
* równań:
\label{mod1:zad11} Podaj dwa dalsze przykłady kategorii.
\proof[Wskazówka:] Najprościej zdefiniować nowe kategorie poprzez modyfikację istniejących przykładów (np. kategorię tworzą zbiory i funkcje częściowe). Nasz drugi przykład jest tego typu: jako język funkcyjny bierzemy <math>\lambda</math>-rachunek i tworzymy dla niego kategorię, tak jak opisaliśmy to w jednym z ostatnich przykładów podanych podczas wykładu.


\proof[Rozwiązanie:]\begin_enumerate
* <math>\pi_1(\langle a,b\rangle)=a</math>, * <math>\pi_2(\langle
\item {\bf Automaty:} Niech <math>M=(M,*, e)</math> będzie monoidem. Definiujemy {\bf <math>M</math>-automat} jako parę <math>(S,\delta)</math> składającą się ze zbioru stanów <math>S</math> i funkcji przejścia <math>\delta\colon M\times S\to S</math> tak, że:
a,b\rangle)=b</math>, * <math>\langle\pi_1(c),\pi_2(c)\rangle=c</math>,
<math>\delta(x*y,s) := \delta(x,\delta(y,s)),</math>
* <math>(\lambda x.b)a = b[a/x]</math>, * <math>\lambda x.cx = c</math>,
<math>\delta(e,s)=s,</math>
o ile <math>x</math> nie występuje w <math>c</math>.
dla dowolnych <math>x,y\in M</math>, <math>s\in S</math>.
 
Morfizmem <math>M</math>-automatów <math>(S,\delta)</math>, <math>(Z,\eta)</math> jest funkcja <math>f\colon S\to Z</math> taka, że <math>f(\delta(x,s)) = \eta(x,f(s))</math>. Sprawdzenie, że taka struktura jest kategorią jest oczywiste, nieprawdaż?
Definiujemy też relację <math>a\approx b</math> na termach (nazywaną
\item {\bf Rachunek lambda:} rozważamy prosty rachunek <math>\lambda</math> z typami. (<math>\lambda</math>-rachunek jest formalizmem pozwalającym na  wygodną manipulację funkcjami. Umożliwia opis funkcji bez podawania jej nazwy, np: funkcja <math>x\mapsto x^2</math> jest w rachunku lambda zapisywana jako <math>\lambda x.x^2</math>, zaś funkcja, której wartością jest również funkcja: <math>y\mapsto (x\mapsto x^2+2y)</math> zapisuje się jako <math>\lambda y.\lambda x.x^2+2y</math>.) Formalnie, <math>\lambda</math>-rachunek składa się z:
zwyczajowo <math>\beta\eta</math>-równoważnością), jako relację
\begin_enumerate
równoważności generowaną przez równania i zamianę nazwy zmiennych
\item typów: <math>A,B, A\times B,A\to B, ...</math>
związanych: o ile <math>y</math> nie występuje w <math>b</math>, to
\item termów, w skład których wchodzą:
\begin_enumerate
\item dla każdego typu <math>A</math> zmienne tego typu: <math>x:A,y:A,z:A,...</math>,
\item stałe różnych typów: <math>a:A,b:B,...</math>,
\item dla dowolnych <math>a:A, b:B</math>, para: <math>\langle a,b\rangle:A\times B</math>,
\item dla dowolnego <math>c:A\times, B</math>, projekcja <math>\pi_1(c):A</math>,
\item dla dowolnego <math>c:A\times B</math>, projekcja <math>\pi_2(c):B</math>,
\item dla dowolnych <math>c:A\times B, a:A</math>, aplikacja <math>ca:B</math>,
\item dla dowolnych <math>x:A, b:B</math>, abstrakcja <math>\lambda x.b:A\to B</math>.
\end_enumerate
\item równań:
\begin_enumerate
\item <math>\pi_1(\langle a,b\rangle)=a</math>,
\item <math>\pi_2(\langle a,b\rangle)=b</math>,
\item <math>\langle\pi_1(c),\pi_2(c)\rangle=c</math>,
\item <math>(\lambda x.b)a = b[a/x]</math>,
\item <math>\lambda x.cx = c</math>, o ile <math>x</math> nie występuje w <math>c</math>.  
\end_enumerate
\end_enumerate
Definiujemy też relację <math>a\approx b</math> na termach (nazywaną zwyczajowo <math>\beta\eta</math>-równoważnością), jako relację równoważności generowaną przez równania i zamianę nazwy zmiennych związanych: o ile <math>y</math> nie występuje w <math>b</math>, to
<math>\lambda x.b = \lambda y.b[y/x].</math>
<math>\lambda x.b = \lambda y.b[y/x].</math>


Kategorię <math>\mathbf{C}(\lambda)</math> definiujemy teraz jak następuje:
Kategorię <math>\mathbf{C}(\lambda)</math> definiujemy teraz jak
\begin_itemize
następuje:
\item obiekty: typy <math>\lambda</math>-rachunku,
 
\item morfizm z <math>A</math> do <math>B</math> to termy domknięte <math>c\colon A\to B</math> (identyfikowane ze sobą, jeśli <math>c\approx c'</math>),
* obiekty: typy <math>\lambda</math>-rachunku, * morfizm z <math>A</math>
\item identyczności: <math>1_A = \lambda x.x</math> dla każdego <math>x:A</math>,
do <math>B</math> to termy domknięte <math>c\colon A\to B</math>
\item złożenie: <math>c\circ b = \lambda x.c(bx)</math>.
(identyfikowane ze sobą, jeśli <math>c\approx c'</math>), * identyczności:
\end_itemize
<math>1_A = \lambda x.x</math> dla każdego <math>x:A</math>, * złożenie:
<math>c\circ b = \lambda x.c(bx)</math>.
 
Sprawdźmy, że <math>\mathbf{C}(\lambda)</math> jest kategorią:
Sprawdźmy, że <math>\mathbf{C}(\lambda)</math> jest kategorią:
<math>c\circ 1_B = \lambda x.c((\lambda y.y)x)=\lambda x.c(y[x/y])=\lambda x.cx=c,</math>
<math>c\circ 1_B = \lambda x.c((\lambda y.y)x)=\lambda x.c(y[x/y])=\lambda
<math>1_C \circ c= \lambda x.(\lambda y.y)(cx) = \lambda x.y[cx/y]=\lambda x.cx = c,</math>
x.cx=c,</math> <math>1_C \circ c= \lambda x.(\lambda y.y)(cx) = \lambda
\begin_eqnarray*
x.y[cx/y]=\lambda x.cx = c,</math> \begin_eqnarray* c\circ (b\circ a) &
c\circ (b\circ a) & = & \lambda x.c((b\circ a)x)\\
= & \lambda x.c((b\circ a)x)\\ & = & \lambda x.c((\lambda y.b(ay))x)\\
& = & \lambda x.c((\lambda y.b(ay))x)\\
& = & \lambda x.c(b(ax))\\ & = & \lambda x.\lambda y.c((by)(ax))\\ & =
& = & \lambda x.c(b(ax))\\
& \lambda x.(c\circ b)(ax)\\ & = & (c\circ b)\circ a. \end_eqnarray*
& = & \lambda x.\lambda y.c((by)(ax))\\
Kategorii <math>\mathbf{C}(\lambda)</math> przyjrzymy się jeszcze
& = & \lambda x.(c\circ b)(ax)\\
uważniej w wykładach [[#wyklad3|Uzupelnic wyklad3|]], [[#wyklad4|Uzupelnic
& = & (c\circ b)\circ a.
wyklad4|]].
\end_eqnarray*
Kategorii <math>\mathbf{C}(\lambda)</math> przyjrzymy się jeszcze uważniej w wykładach \ref{wyklad3}, \ref{wyklad4}.
\end_enumerate
\end_zadanie


\end_document
}}

Wersja z 15:05, 20 lip 2006

==Moduł: 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), pp. 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:AB jest bijekcją jeśli jest różnowartościową surjekcją, tj. Parser nie mógł rozpoznać (błąd składni): {\displaystyle \forall x,y\in A\ f(x)=f(y)\Rightarrow x=y} oraz zB xA 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:BA). W tym świetle z warunku drugiego wynika, że złożenie fg jest funkcją identycznościową na zbiorze B, a stąd wynika fgf=f, co w połączeniu z pierwszym warunkiem oznacza, że gf jest identycznością na zbiorze A. Idąc dalej tym tropem (patrz Zadanie Uzupelnic mod1:zad1|) jesteśmy w stanie bez trudu pokazać, że:

Fakt

Funkcja f:AB jest

bijekcją wtedy i tylko wtedy, gdy istnieje funkcja g:BA taka, że fg=1B oraz gf=1A.

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 'nat. Teoria mnogości definiuje 'nat jako najmniejszy zbiór zawierający liczbę zero 0 i spełniający: n'natsucc(n)'nat, gdzie succ:'nat'nat jest funkcją następnika (która jest injektywna i posiada tę właściwość, że succ(n)0 dla dowolnego n'nat). Okazuje się, że zbiór liczb naturalnych można wyróżnić spośród innych zbiorów w ten sposób (Zadanie Uzupelnic mod1:zad2|):

Fakt

Zbiór liczb

naturalnych 'nat jest to zbiór zawierający liczbę zero oraz wyposażony w funkcję succ:'nat'nat taką, że: dla dowolnego zbioru X i elementu eX oraz funkcji g:XX istnieje dokładnie jedna funkcja f:'natX spełniająca dwa warunki: f(0)=e

oraz fsucc=gf.

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.

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 natykamy się na 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 'dom(f), i przekształca go w inny jedyny obiekt nazywany przeciwdziedziną f i oznaczany jako 'cod(f). Fakt, że morfizm f ma dziedzinę A i przeciwdziedzinę B zapisujemy

\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.1}\end_quote

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

\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.2}\end_quote

morfizm:

\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.3}\end_quote

może powstać albo z:

\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.4}\end_quote

albo, równoważnie, z:

\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.5}\end_quote

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:

\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.6}\end_quote

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

Definicja kategorii

Definicja

Kategoria 𝐂 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 1A nazywany identycznością, * (D5): operacji przypisującej każdej parze morfizmów f,g takich, że cod(g)=dom(f) morfizm fg nazywany złożeniem,

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

  • (A1): dom(1A)=A=cod(1A);

dom(fg)=dom(g); cod(fg)=cod(f), * (A2): f1A=f=1Bf, gdzie A=dom(f) oraz B=cod(f), * (A3): jeśli f,g są składalne oraz g,h są składalne, to (fg)h=f(gh).

Kolekcję obiektów kategorii 𝐂 będziemy w dalszym ciągu oznaczać jako 𝐂0, zaś kolekcję jej morfizmów jako 𝐂1.

Uwaga
Tylko 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 Uzupelnic

mod1:def:kategria1| 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

Grafem skierowanym nazywamy kolekcję obiektów (wierzchołków) O, kolekcję strzałek (krawędzi) A i dwie funkcje

\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.7}\end_quote

W grafie, kolekcja składalnych par strzałek to zbiór A×OA={(g,f)g,fAdom(g)=cod(f)} nazywany produktem nad O. O kategorii można myśleć jako o grafie skierowanym 𝐂, który posiada dwie dodatkowe funkcje 1:OA, C1C oraz :A×OAA, (g,f)gf takie, że spełnione są warunki (A1)--(A3) Definicji

Uzupelnic mod1:def:kategria1|.

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

Kategoria 𝐂 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:

\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.8}\end_quote

Operacje podlegają następującym aksjomatom:

  • (b1): xy jest zdefiniowane wtw, gdy x=y, * (b2): (x)=x oraz

(x)=x, * (b3): (x)x=x oraz x(x)=x, * (b4): (xy)=(x(y)) oraz (xy)=((x)y) * (b5): x(yz)=(xy)z.

W tym wypadku równoważność definicji z dwiema pozostałymi (Definicje Uzupelnic mod1:def:kategria1| i Uzupelnic mod1:def:kategoria2|) 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

Dla morfizmu

e następujące warunki są równoważne: istnieje x taki, że e=x; istnieje y taki, że e=y; e=e; e=e; dla każdego x, exx (co oznacza, że jeśli złożenie ex jest zdefiniowane, to jest równe x), dla każdego x, xex.

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

(6) z (3) jest podobny do równoważności (5) z (4).

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 Uzupelnic mod1:def:kategoria3| wystarczą do zrekonstruowania Definicji Uzupelnic mod1:def:kategria1|: Identyczność 1x to zmienna x taka, że x=x=x. Dziedziną x jest x, przeciwdziedziną x. Złożenie xy to yx. Kolekcja obiektów Definicji Uzupelnic mod1:def:kategria1| pokrywa się z kolekcją morfizmów identycznościowych Definicji Uzupelnic mod1:def:kategoria3|. Zauważmy, że dla dowolnego x, zarówno x, jak i x są obiektami (identycznościami), bo (x)=x, (x)=x, (x)=((x))=(x)=x, (x)=x.

Sprawdźmy aksjomaty: dom(1x)=x=x=x=cod(1x). Aby pokazać, że f jest morfizmem, załóżmy, że x=dom(f)(czyli 1x=f) oraz y=cod(f) (czyli 1y=f)). Wówczas f1x=1xf=(f)f=f, 1yf=f1y=f(f)=f.

Załóżmy teraz, że dom(f)=cod(g). Wówczas dom(fg)=(gf)=(gf)=dom(1dom(f)g)=dom(1cod(g)g)=dom(g). Ostatnia równość wynika z poprzedniego paragrafu. Podobnie, cod(fg)=(gf)=((g)f)=cod(f1cod(g))=cod(f1dom(f))=cod(f).

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

Przykłady kategorii

  • 𝐒𝐞𝐭: Obiektami są zbiory, morfizmami funkcje.

Uwaga! W teorii mnogości funkcja jest zdefiniowana jako zbiór par uporządkowanych takich, że \begin_equation ((x,y)\in f\ \wedge \ (x,y')\in f)\ \Rightarrow \ y=y'. \end_equation

Aby traktować funkcje jako morfizmy musimy precyzyjnie znać dom(f) i cod(f). Na przykład funkcje sin:[1,1] oraz sin:,, 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 fX×Y spełnia powyższe równanie (Uzupelnic eq:funkcja|) wraz z poniższym: \begin_equation x\in X \Rightarrow (\exists y\in Y\ (x,y)\in f). \end_equation Wtedy dom jest projekcją na pierwszą współrzędną (X,f,Y)X, a cod projekcją na trzecią współrzędną. * Kategoria zbiorów skończonych i funkcji 𝐒𝐞𝐭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ą stukturą algebraiczną, zaś morfizmami te funkcje, które tę strukturę zachowują.

  • 𝐕𝐞𝐜𝐭: Przestrzenie wektorowe i odwzorowania

liniowe * 𝐆𝐫𝐩: Grupy i homomorfizmy grup * 𝐀𝐛: Grupy abelowe i homomorfizmy grup * 𝐌𝐨𝐧: Monoidy i homomorfizmy monoidów * 𝐏𝐨𝐬: Częściowe porządki i funkcje monotoniczne * 𝐓𝐨𝐩: Przestrzenie topologiczne i funkcje ciągłe

  • 𝐆𝐫𝐚𝐩𝐡: Grafy i homomorfizmy grafów * liczby

naturalne 'nat i wszystkie funkcje obliczalne

  • Mając dowolny częściowy porządek (poset) (P,)

definiujemy kategorię o tej samej nazwie P jak następuje: jako obiekty bierzemy elementy P, zaś dla dwóch obiektów x,yP przyjmujemy, że istnieje morfizm z x do y wtedy i tylko wtedy, gdy xy. Zauważmy, że wystarczy tu, by P był preporządkiem, tzn. aby relacja była zaledwie zwrotna i przechodnia.

  • 𝐑𝐞𝐥: Obiektami tej kategorii są zbiory, zaś

morfizmami relacje binarne, tzn. f:AB wtedy i tylko wtedy, gdy fA×B. Wówczas rolę identyczności spełniają relacje identycznościowe: 1A={(a,a)aA}, zaś złożeniem morfizmów jest po prostu złożenie relacji znane z kursu teorii mnogości: mając dane RA×B oraz SB×C przyjmujemy: (a,c)SRbB ((a,b)R(b,c)S) * \bfKategorie skończone: (skończoność dotyczy ilości istniejących morfizmów, choć nazwy tych kategorii odnoszą się do ilości obiektów):

  • 𝟏: Ta kategoria ma jeden obiekt i jedną strzałkę:

identyczność.

\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.9}\end_quote

  • 𝟎: Ta kategoria nie ma obiektów i nie ma strzałek.
  • 𝟐: Kategoria ta ma dwa obiekty i jedną strzałkę

pomiędzy nimi (a także oczywiście dwie wymagane identyczności).

\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.10}\end_quote

  • 𝟑: 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!)

\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.11}\end_quote

  • 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).

  • \bfKategorie 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.

\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.12}\end_quote

  • 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...)

\begin_quote\tt{Tu wstawić brakujący rysunek o numerze 1.13}\end_quote

  • Dla danego rachunku logicznego możemy stworzyć kategorię w ten

sposób, że obiektami są formuły: ϕ,ψ,... zaś morfizmem z ϕ do ψ jest każda dedukcja (dowód) ψ z założenia ϕ. Złożeniem morfizmów jest wtedy połączenie dowodów, które jest oczywiście łączne. Identyczność 1ϕ to dowód pusty, bowiem z aksjomatów logicznych zawsze wynika ϕϕ.

  • 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żenie dwóch programów XfYgZ 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

Niech

𝐂 będzie dowolną kategorią. Morfizm f:AB jest izomorfizmem jeśli istnieje morfizm g:BA taki, że fg=1B oraz gf=1A. Morfizm g nazywa się morfizmem odwrotnym do f . Jeśli dla obiektów A,B kategorii 𝐂 istnieje izomorfizm f:AB, to obiekty A i B

nazywamy izomorficznymi, co zapisujemy jako AB.

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

Fakt Uzupelnic mod1:fact:bij| wyraża zatem myśl, że izomorfizmami w 𝐒𝐞𝐭 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 Uzupelnic mod5:def:konkret|, bijekcje nie zawsze są izomorfizmami. Prosty kontrprzykład stanowi tutaj kategoria 𝐏𝐨𝐬 (Zadanie Uzupelnic mod1:zad3|).

Podstawy teoriomnogościowe

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

Definicja

Kategorię

𝐂 nazywamy małą, jeśli kolekcja wszystkich obiektów 𝐂0 i morfizmów 𝐂1 kategorii 𝐂 są zbiorami. W przeciwnym

wypadku 𝐂 jest duża.

A zatem 𝐏𝐨𝐬, 𝐆𝐫𝐩, 𝐕𝐞𝐜 są duże, zaś kategorie skończone są małe. Kategorie duże wyglądają na pierwszy rzut oka bardzo nieprzyjaźnie, część z nich posiada jednak bardzo często następującą cechę:

Definicja

Kategorię 𝐂 nazywamy lokalnie małą jeśli dla każdej pary

obiektów A,B z 𝐂 kolekcja Hom𝐂(A,B)={f𝐂1f:AB} 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 𝐏𝐨𝐬, 𝐆𝐫𝐩, 𝐕𝐞𝐜 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.

Ćwiczenia do Modułu 1

Zadanie

uzupelnic

Rozwiązanie

Zadanie

uzupelnic

Rozwiązanie

Zadanie

uzupelnic

Rozwiązanie

Zadanie

uzupelnic

Rozwiązanie

Zadanie

uzupelnic

Rozwiązanie

Zadanie

uzupelnic

Rozwiązanie

Zadanie

uzupelnic

Rozwiązanie

Zadanie

uzupelnic

Rozwiązanie

Zadanie

uzupelnic

Rozwiązanie

Zadanie

uzupelnic

Rozwiązanie

Zadanie

uzupelnic

Rozwiązanie