Test Arka

Z Studia Informatyczne
Wersja z dnia 13:40, 20 lip 2006 autorstwa Arek (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

\newtheorem{definition}[subsection]{Definicja} \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

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 {\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

Zacznijmy od niegroźnego przeformułowania dwóch znanych pojęć z teorii mnogości.

Jak pamiętamy, funkcja f:AB jest {\bf bijekcją} jeśli jest różnowartościową surjekcją, tj. x,yA f(x)=f(y)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 \ref{mod1:zad1}) jesteśmy w stanie bez trudu pokazać, że:

\begin_fact \label{mod1:fact:bij} Funkcja f:AB jest bijekcją wtedy i tylko wtedy, gdy istnieje funkcja g:BA taka, że fg=1B oraz gf=1A. \end_fact

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

\begin_fact\label{mod1:fact:naturalne} Zbiór liczb naturalnych 𝐧𝐚𝐭 jest to zbiór zawierający liczbę zero oraz wyposażony w funkcję succ:𝐧𝐚𝐭𝐧𝐚𝐭 taką, że: dla dowolnego zbioru X i elementu eX oraz funkcji g:XX istnieje dokładnie jedna funkcja f:𝐧𝐚𝐭X spełniająca dwa warunki: f(0)=e oraz fsucc=gf. \end_fact

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: {\it 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ż {\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 f działa na pewien jedyny obiekt, nazwijmy go {\bf dziedziną} f i oznaczmy dom(f), i przekształca go w inny jedyny obiekt nazywany {\bf 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 {\bf złożenia} przekształceń: zakładamy, że dwóm morfizmom f,g takim, że cod(g)=dom(f) (strzałki takie nazywamy {\bf 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 {\bf 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

\label{mod1:def:kategria1} Kategoria 𝐂 składa się z następujących danych: \begin_enumerate \item[(D1)] {\bf obiektów}: A,B,C,..., \item[(D2)] {\bf morfizmów}: f,g,h,..., \item[(D3)] dwóch operacji dom,cod przypisującej każdemu morfizmowi f obiekty dom(f)i cod(f), \item[(D4)] operacji 1 przypisującej każdemu obiektowi A morfizm 1A nazywany identycznością, \item[(D5)] operacji przypisującej każdej parze morfizmów f,g takich, że cod(g)=dom(f) morfizm fg nazywany złożeniem, \end_enumerate spełniających następujące aksjomaty: \begin_enumerate \item[(A1)] dom(1A)=A=cod(1A); dom(fg)=dom(g); cod(fg)=cod(f), \item[(A2)] f1A=f=1Bf, gdzie A=dom(f) oraz B=cod(f), \item[(A3)]jeśli f,g są składalne oraz g,h są składalne, to (fg)h=f(gh). \end_enumerate

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

{\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.}

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

\label{mod1:def:kategoria2} 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 {\bf 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 \ref{mod1:def:kategria1}.

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

Definicja

\label{mod1:def:kategoria3} Kategoria 𝐂 składa się z dwóch operacji unarnych i jednej częściowej operacji binarnej. Zmienne, na które działają te operacje nazywamy {\bf morfizmami} ({\bf 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: \begin_enumerate \item[(b1)] xy jest zdefiniowane wtw, gdy x=y, \item[(b2)] (x)=x oraz (x)=x, \item[(b3)] (x)x=x oraz x(x)=x, \item[(b4)] (xy)=(x(y)) oraz (xy)=((x)y) \item[(b5)] x(yz)=(xy)z. \end_enumerate

W tym wypadku równoważność definicji z dwiema pozostałymi (Definicje \ref{mod1:def:kategria1} i \ref{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.

\begin_lemma\label{mod1:lemma:freyd1} 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). \end_lemma

Morfizm e spełniający dowolny z powyższych warunków nazywamy {\bf 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 \ref{mod1:def:kategoria3} wystarczą do zrekonstruowania Definicji \ref{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 \ref{mod1:def:kategria1} pokrywa się z kolekcją morfizmów identycznościowych Definicji \ref{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

\begin_itemize \item 𝐒𝐞𝐭: Obiektami są zbiory, morfizmami funkcje. Uwaga! W teorii mnogości funkcja jest zdefiniowana jako zbiór par uporządkowanych takich, że \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ć 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 (\ref{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ą. \item 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. \item Kategorie, w których obiektami są zbiory z pewną dodatkową stukturą algebraiczną, zaś morfizmami te funkcje, które tę strukturę zachowują. \begin_itemize \item 𝐕𝐞𝐜𝐭: Przestrzenie wektorowe i odwzorowania liniowe \item 𝐆𝐫𝐩: Grupy i homomorfizmy grup \item 𝐀𝐛: Grupy abelowe i homomorfizmy grup \item 𝐌𝐨𝐧: Monoidy i homomorfizmy monoidów \item 𝐏𝐨𝐬: Częściowe porządki i funkcje monotoniczne \item 𝐓𝐨𝐩: Przestrzenie topologiczne i funkcje ciągłe \item 𝐆𝐫𝐚𝐩𝐡: Grafy i homomorfizmy grafów \item liczby naturalne 𝐧𝐚𝐭 i wszystkie funkcje obliczalne \end_itemize \item 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. \item 𝐑𝐞𝐥: 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) \item {\bf Kategorie skończone} (skończoność dotyczy ilości istniejących {\it morfizmów}, choć nazwy tych kategorii odnoszą się do ilości {\it obiektów}): \begin_itemize \item 𝟏: Ta kategoria ma jeden obiekt i jedną strzałkę: identyczność.

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

\item 𝟎: Ta kategoria nie ma obiektów i nie ma strzałek. \item 𝟐: 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

\item 𝟑: 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

\item 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). \end_itemize \item {\bf Kategorie dyskretne} są to takie kategorie, w których nie ma innych morfizmów niż identyczności. Łatwo uzmysłowić sobie, że kategorie dyskretne możemy utożsamiać ze zbiorami, bo przecież obiekty możemy interpretować jako elementy zbioru.

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

\item 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

\item 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 ϕϕ. \item 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 {\it nic nie robi}. \end_itemize

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

\label{mod1:def:iso} Niech 𝐂 będzie dowolną kategorią. Morfizm f:AB jest {\bf izomorfizmem} jeśli istnieje morfizm g:BA taki, że fg=1B oraz gf=1A. Morfizm g nazywa się {\bf 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 \ref{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 \ref{mod5:def:konkret}, bijekcje {\it nie zawsze} są izomorfizmami. Prosty kontrprzykład stanowi tutaj kategoria 𝐏𝐨𝐬 (Zadanie \ref{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

\label{mod1:def:size} Kategorię 𝐂 nazywamy {\bf małą}, jeśli kolekcja wszystkich obiektów 𝐂0 i morfizmów 𝐂1 kategorii 𝐂 są zbiorami. W przeciwnym wypadku 𝐂 jest {\bf 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

\label{mod1:def:localsize} Kategorię 𝐂 nazywamy {\bf 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 {\bf 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 {\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.

Ćwiczenia do Modułu 1

\begin_zadanie \label{mod1:zad1} Udowodnij, że dla dwóch funkcji f:AB oraz g:BA jeśli fg=1B oraz gf=1A, to funkcja f jest bijekcją.

\proof[Rozwiązanie:] Pokażemy najpierw, że f jest funkcją różnowartościową. Przypuśćmy, że f(x)=f(y) dla pewnych elementów x,yA. Wówczas x=1A(x)=(gf)(x)=g(f(x))=g(f(y))=(gf)(y)=1A(y)=y. Ponadto, dla dowolnego zB element g(z) jest jedynym takim elementem, że f(g(z))=z, co w szczególności oznacza, że f jest surjekcją. Wnioskujemy więc, że f jest różnowartościową surjekcją, czyli bijekcją. \end_zadanie

\begin_zadanie \label{mod1:zad2} Udowodnij Fakt \ref{mod1:fact:naturalne}.

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

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

To wiemy z założenia.

\item nN s(n)N

To wiemy z założenia.

\item nN s(n)0

Przypuśćmy przeciwnie, że dla pewnego nN mamy s(n)=0. Wtedy kładąc X={e,a} oraz g(e)=g(a)=a, z założenia istnieje funkcja f:NX taka, że f(0)=e oraz f(s(n))=g(f(n)). A zatem f(s(n))=f(0)=ea=g(f(n)), sprzeczność.

\item s jest injekcją.

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

\item AN ((0A(aAs(a)A))A=N)

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

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

Pokazaliśmy zatem, że aksjomaty Peano są spełnione dla zbioru N, a zatem teoria mnogości uczy nas, że N jest zbiorem liczb naturalnych 𝐧𝐚𝐭.

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

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

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

\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 ...f:NX jest jedyną funkcją taką, że...} odzwierciedla się graficznie jako:

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

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

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

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

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

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

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

jak również komutuje diagram:

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

to z warunku jednoznaczności istnienia funkcji dostajemy if=1N. To jednak implikuje, że f jest injekcją, czyli NA, co należało pokazać.

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

\end_zadanie

\begin_zadanie \label{mod1:zad3} Znajdź przykład na to, że w kategorii 𝐏𝐨𝐬 bijekcje nie zawsze są izomorfizmami.

\proof[Wskazówka:] Wystarczy rozważyć częściowe porządki dwuelementowe.

\proof[Rozwiązanie:] Rozważmy dwa posety dwuelementowe P={x,y}, Q={z,w} i funkcję g:QP, g(z)=x,g(w)=y, jak na rysunku:

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

Funkcja g jest oczywiście bijekcją, ale funkcja do niej odwrotna nie jest monotoniczna, a zatem nie jest morfizmem w 𝐏𝐨𝐬. To oznacza, że g nie może być izomorfizmem. \end_zadanie

\begin_zadanie \label{mod1:zad4} Pokaż, że każda grupa może być traktowana jako kategoria, w której każdy morfizm jest izomorfizmem.

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

\begin_zadanie \label{mod1:zad5} Dla dowolnej kategorii 𝐂 zaproponuj konstrukcję nowej kategorii, w której -- żądamy -- obiektami są morfizmy z 𝐂.

\proof[Wskazówka:] Niech 𝐂 będzie dowolną kategorią; dla dwóch jej dowolnych morfizmów f:AB oraz g:CD, musimy zaproponować taką operację, dla której f jest dziedziną i g 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} (a:AC,b:BD) z kategorii 𝐂 taka, że poniższy diagram komutuje:

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

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

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

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

składają się tak:

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

albo formalnie: (a,b)(c,d)=(ac,bd). Oczywiście dom((ac,bd))=h oraz cod((ac,bd))=g. W końcu, identycznościami w nowej kategorii, która często oznacza się jako 𝐂 są pary identyczności z kategorii 𝐂. Wszelkie pozostałe czynności, które musimy wykonać, by sprawdzić, że 𝐂 jest kategorią, są trywialne. \end_zadanie

\begin_zadanie \label{mod1:zad6} Niech 𝐂 będzie kategorią, zaś Parser nie mógł rozpoznać (nieznana funkcja „\CC”): {\displaystyle A\in \CC_0} jej ustalonym obiektem. Zaproponuj konstrukcję nowej kategorii, której obiektami są wszystkie morfizmy z 𝐂 o kodziedzinie A.

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

\proof[Rozwiązanie:] Tak jak w Zadaniu \ref{mod1:zad5} morfizmami nowej kategorii, oznaczanej często 𝐂/A i nazywanej A-warstwą 𝐂 są komutujące diagramy: ponieważ wszystkie obiekty 𝐂/A jako morfizmy 𝐂 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

albo formalnie: jeśli f:BA oraz g:CA są obiektami 𝐂/A, to morfizmem o dziedzinie f i kodziedzinie g jest morfizm h:BC z 𝐂 taki, że powyższy diagram komutuje. Sprawdzenie, że 𝐂/A jest kategorią jest już trywialne. \end_zadanie

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

\proof[Rozwiązanie:] Pokażmy najpierw, że złożenie izomorfizmów jest izomorfizmem. Załóżmy, że f:AB oraz g:BC są izmorfizmami. Wówczas ich złożenie gf:AC posiada morfizm odwrotny f1g1. Rzeczywiście, (gf)(f1g1)=g)ff1)g1=g1Bg1=gg1=1C i podobnie pokazujemy drugie z równań dla izomorfizmu.

Rozwiążemy to samo zadanie graficznie: zauważmy, że fakt, że f jest izomorfizmem z odwrotnością f1 jest wyrażony przez fakt, że poniższy diagram komutuje:

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

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

Podobnie, diagram:

\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:

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

To zaś kończy dowód faktu, że f1g1 jest odwrotnością gf.

Po drugie, pokażmy, że morfizm odwrotny do izmorfizmu jest tylko jeden: załóżmy przeciwnie, że dla pewnego izomorfizmu f:AB istnieją dwie odwrotności g,h:BA. Wówczas g=g1B=g(fh)=(gf)h=1Ah=h, co należało pokazać.

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

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

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

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

\begin_zadanie \label{mod1:zad9} Pokaż, że w kategorii 𝐌𝐨𝐧 izomorfizmy to dokładnie bijektywne homomorfizmy monoidów.

\proof[Wskazówka:] Jedna z implikacji jest bardzo łatwa: jeśli f jest izomorfizmem w 𝐌𝐨𝐧, to w szczególności jest morfizmem, czyli homomorfizmem monoidów. Równania dla f jako izomorfizmu implikują, że f 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 f:MN jest bijektywnym homomorfizmem z odwrotnością g:NM. Wystarczy pokazać, że g jest homomorfizmem, tzn., że g(eN)=eM oraz g(n1Nn2)=g(n1)Mg(n2) dla dowolnych n1,n2N. Wykorzystując fakt, że f -- jako homomorfizm -- zachowuje jedynkę, mamy: eM=g(f(eM))=g(eN), czyli pierwszą z szukanych równości. Znów opierając się na własnościach f mamy: g(n1)Mg(n2)=g(f(g(n1)Mg(n2)))=g(f(g(n1))Nf(g(n2)))=g(n1Nn2), co należało pokazać. \end_zadanie

\begin_zadanie \label{mod1:zad10} Przekonaj się, że kategorie i funktory tworzą kategorię, którą oznaczamy 𝐂𝐚𝐭. \proof[Wskazówka:] Przeczytaj najpierw Definicję \ref{mod5:def:funktor}, w której mówimy czym są funktory. \proof[Rozwiązanie:] Najpierw definiujemy identyczności: dla dowolnej kategorii 𝐂 proponujemy przekształcenie 1𝐂 jako 1𝐂(A):=A 1𝐂(f:AB):=f dla dowolnych Parser nie mógł rozpoznać (nieznana funkcja „\CC”): {\displaystyle A\in \CC_0, f\in \CC_1} . Wtedy oczywiście 1𝐂 jest funktorem. Złożenie funktorów definiujemy w sposób naturalny, tak jak złożenie funkcji w 𝐒𝐞𝐭. Niech F:𝐂𝐃, G:𝐃𝐀, H:𝐀𝐁 będą funktorami. (1𝐃F)(A)=1𝐃(F(A))=F(A)=F(1𝐂)(A)=(F1𝐂)(A) dla Parser nie mógł rozpoznać (nieznana funkcja „\CC”): {\displaystyle A\in \CC_0} i taki sam dowód działa dla morfizmów. Wnioskujemy więc, że 1𝐃F=F=F1𝐂. Ponadto: H(GF)()=H((GF)())=H(G(F()))=(HG)(F())=((HG)F)(), gdzie () oznacza miejsce, w które można wstawić obiekt lub morfizm z 𝐂 -- 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 \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 λ-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 \item {\bf Automaty:} Niech M=(M,*,e) będzie monoidem. Definiujemy {\bf M-automat} jako parę (S,δ) składającą się ze zbioru stanów S i funkcji przejścia δ:M×SS tak, że: δ(x*y,s):=δ(x,δ(y,s)), δ(e,s)=s, dla dowolnych x,yM, sS. Morfizmem M-automatów (S,δ), (Z,η) jest funkcja f:SZ taka, że f(δ(x,s))=η(x,f(s)). Sprawdzenie, że taka struktura jest kategorią jest oczywiste, nieprawdaż? \item {\bf Rachunek lambda:} rozważamy prosty rachunek λ z typami. (λ-rachunek jest formalizmem pozwalającym na wygodną manipulację funkcjami. Umożliwia opis funkcji bez podawania jej nazwy, np: funkcja xx2 jest w rachunku lambda zapisywana jako λx.x2, zaś funkcja, której wartością jest również funkcja: y(xx2+2y) zapisuje się jako λy.λx.x2+2y.) Formalnie, λ-rachunek składa się z: \begin_enumerate \item typów: A,B,A×B,AB,... \item termów, w skład których wchodzą: \begin_enumerate \item dla każdego typu A zmienne tego typu: x:A,y:A,z:A,..., \item stałe różnych typów: a:A,b:B,..., \item dla dowolnych a:A,b:B, para: a,b:A×B, \item dla dowolnego c:A×,B, projekcja π1(c):A, \item dla dowolnego c:A×B, projekcja π2(c):B, \item dla dowolnych c:A×B,a:A, aplikacja ca:B, \item dla dowolnych x:A,b:B, abstrakcja λx.b:AB. \end_enumerate \item równań: \begin_enumerate \item π1(a,b)=a, \item π2(a,b)=b, \item π1(c),π2(c)=c, \item (λx.b)a=b[a/x], \item λx.cx=c, o ile x nie występuje w c. \end_enumerate \end_enumerate Definiujemy też relację ab na termach (nazywaną zwyczajowo βη-równoważnością), jako relację równoważności generowaną przez równania i zamianę nazwy zmiennych związanych: o ile y nie występuje w b, to λx.b=λy.b[y/x].

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

\end_document