Teoria kategorii dla informatyków/Wykład 3: Zasada dualności i proste konstrukcje uniwersalne

From Studia Informatyczne

Kilkakrotnie podczas naszych wykładów pojawiła się dualność, która - jak wyjaśniliśmy w Definicji 2.3 - polega na tym, że dla dowolnej kategorii \mathbf{C} możemy zbudować kategorię \mathbf{C}^{op} poprzez odwrócenie kierunku strzałek i wszelkie własności \mathbf{C} mają swoje odbicie we własnościach \mathbf{C}^{op}. Ta intuicja jest bardzo pomocna, więc warto precyzyjnie i systematycznie zbadać pojęcie dualności w teorii kategorii, które - na pierwszy rzut oka - trywialne, ma daleko idące konsekwencje: każde udowodnione twierdzenie ma swój dualny odpowiednik, równie ciekawy jak oryginalny, którego dowód dostajemy za darmo, zgodnie z zasadą dualności.

Spis treści

Zasada dualności

Przypomnijmy formalną definicję kategorii: składa się ona z obiektów: A,B,..., morfizmów: f,g,..., czterech operacji \mathrm{dom},\mathrm{cod},\circ, 1, które podlegają siedmiu aksjomatom: \mathrm{dom}(1_A)=A, \mathrm{cod}(1_A)=A, f\circ 1_{\mathrm{dom}(f)}=f, 1_{\mathrm{cod}(f)}\circ f=f, \mathrm{dom}(g\circ f)=\mathrm{dom}(f), \mathrm{cod}(g\circ f)=\mathrm{cod}(g), h\circ(g\circ f)=(h\circ g)\circ f, przy czym g\circ f jest zdefiniowane tylko jeśli \mathrm{dom}(g)=\mathrm{cod}(f), więc w rzeczywistości trzy ostatnie aksjomaty powinny być zastąpione przez implikacje, np. \mathrm{dom}(g\circ f)=\mathrm{dom}(f) to w rzeczywistości \mathrm{dom}(g)=\mathrm{cod}(f) \Rightarrow \mathrm{dom}(g\circ f)=\mathrm{dom}(f). Niech CT będzie zdaniem, które oznacza koniunkcję wszystkich siedmiu aksjomatów w ich pełnej wersji.

Grafika:ilustracja4k.png

Powiemy, że zdanie \Sigma jest wyrażone w elementarnym języku teorii kategorii, jeśli w \Sigma jest poprawnie zbudowanym wyrażeniem mówiącym jedynie o obiektach, morfizmach i operacjach \mathrm{dom}, \mathrm{cod}, \circ, 1. Na przykład CT jest wyrażone w elementarnym języku teorii kategorii.

Dla dowolnego takiego zdania elementarnego \Sigma możemy utworzyć elementarne zdanie dualne \Sigma^*, dokonując następującej zamiany:

f\circ g\ \mathrm{na}\ g\circ f,
\mathrm{cod}\ \mathrm{na}\ \mathrm{dom},
\mathrm{dom}\ \mathrm{na}\ \mathrm{cod}.

Widzimy, że wówczas \Sigma^* jest poprawnie zbudowanym wyrażeniem. Przypuśćmy zatem, że ze zdania \Sigma wynika inne elementarne zdanie \Delta bez użycia aksjomatów teorii kategorii. Wtedy ze zdania \Sigma^* wynika \Delta^*. Ale aksjomaty teorii kategorii są samodualne: CT= CT{}^*. To znaczy, że następujące metastwierdzenie jest prawdziwe:


Fakt 3.1 [formalna zasada dualności]

Dla dowolnego zdania elementarnego \Sigma w języku teorii kategorii, które wynika z aksjomatów teorii kategorii, również \Sigma^* wynika z aksjomatów teorii kategorii.

To znaczy również, że każda interpretacja zdania \Sigma w kategorii \mathbf{C} daje interpretację zdania \Sigma^* w \mathbf{C}^{op}. Ponieważ jednak (\mathbf{C}^{op})^{op}= \mathbf{C}, dostajemy:


Fakt 3.2 [zasada dualności]

Jeśli zdanie \Sigma jest prawdziwe w każdej kategorii, to \Sigma^* również jest prawdziwe w dowolnej kategorii.

Dowód

Skoro \Sigma jest prawdziwe w każdej kategorii \mathbf{C}, to jest prawdziwe w każdej kategorii \mathbf{C}^{op}. Stąd wynika, że \Sigma^* jest prawdziwe w (\mathbf{C}^{op})^{op}, czyli w \mathbf{C}. image:End_of_proof.gif

Produkt i koprodukt

Naszym zadaniem jest teraz zaproponowanie takiej definicji produktu obiektów kategorii, aby wszystkie znane pojęcia: produktu zbiorów, produktu grup, produktu przestrzeni wektorowych, produktu częściowych porządków, i tak dalej, stały się szczególnym przypadkiem naszej propozycji. Czy to możliwe? Okazuje się, że tak! Ta możliwość jest odbiciem bardzo ważnej własności pojęcia produktu: własności uniwersalnej. Własność ta jest wyrażona w języku strzałek i mówi, że produkt jest zdefiniowany z dokładnością do izomorfizmu, tzn. jest to taki obiekt, który jest izomorficzny z każdym możliwym dobrym kandydatem na produkt. Rozważmy najpierw produkt w \mathbf{Set}, którego obserwacja wskaże nam sposób, w jaki najlepiej sformułować własność uniwersalną produktu i podać definicję kategoryjną, niezależną od specyfiki kategorii zbiorów \mathbf{Set}. Często będziemy pracować w ten właśnie sposób: podglądamy jak dana konstrukcja uniwersalna wygląda dla zbiorów (bo tam mamy najlepsze intuicje), potem wyciągamy wnioski ogólne, a na końcu testujemy nasze kategoryjne definicje na dalszych przykładach.

Niech A, B będą zbiorami. Teoria mnogości definiuje ich produkt jako następujący zbiór par uporządkowanych:

A\times B := \{(a,b)\mid a\in A\wedge b\in B\}.

Produkt zbiorów możemy zdekonstruować za pomocą projekcji:

A\stackrel{\pi_A}{\longleftarrow}A\times B\stackrel{\pi_B}{\longrightarrow}B,

gdzie \pi_A((a,b)):=a i \pi_B((a,b)):=b. Użyliśmy słowa dekonstrukcja nieprzypadkowo: informatykowi, który przecież zna podstawy programowania obiektowego, wygodnie będzie myśleć o produkcie A\times B jako o obiekcie wyposażonym w destruktory \pi_A,\pi_B, pozwalające z informacji zawartych w produkcie wydobyć informację o jego składowych. Ta dekonstrukcja przebiega w sposób bardzo porządny, odwracalny, ponieważ dla każdego c\in A\times B mamy c = (\pi_A(c), \pi_B(c)). To równanie jest niezwykle ważne, gdyż wskazuje na własność uniwersalną produktu: poniższy diagram komutuje:

Grafika:tk-3.1.png

gdzie \mathbf{1} oznacza obiekt końcowy w \mathbf{Set}. Ten diagram czytamy oczywiście tak: dla dowolnych elementów a\colon \mathbf{1}\to A, b\colon \mathbf{1}\to B istnieje dokładnie jeden element (a,b)\colon \mathbf{1}\to A\times B taki, że \pi_A\circ (a,b) = a i \pi_B\circ (a,b) =b. Jeśli teraz zastąpimy elementy przez elementy uogólnione (patrz ten podrozdział), dostajemy:


Definicja 3.3 [produkt]

Niech \mathbf{C} będzie dowolną kategorią, zaś A,B\in\mathbf{C}_0 jej obiektami. Produktem obiektów A i B nazywamy obiekt A\times B\in \mathbf{C}_0 wraz ze strzałkami p_A\colon A\times B\to A\in \mathbf{C}_1 i p_B\colon A\times B\to B\in\mathbf{C}_1:

A\stackrel{p_A}{\longleftarrow}A\times B\stackrel{p_B}{\longrightarrow}B,

który posiada następującą własność uniwersalną:

Dla dowolnego diagramu:

A\stackrel{f}{\longleftarrow}X\stackrel{g}{\longrightarrow}B,

w kategorii \mathbf{C}, istnieje dokładnie jedna strzałka h\colon X\to A taka, że f = p_A\circ h i g = p_B\circ h (czyli taka, że poniższy diagram komutuje).

Grafika:tk-3.2.png

Taką strzałkę h oznaczamy zwyczajowo (f,g).


Fakt 3.4

Produkt jest jedyny z dokładnością do izomorfizmu.

Dowód

Niech
A\stackrel{p_A}{\longleftarrow}P\stackrel{p_B}{\longrightarrow}B,
A\stackrel{q_A}{\longleftarrow}Q\stackrel{q_B}{\longrightarrow}B

będą dwoma produktami A i B. Wówczas poniższy diagram komutuje:

Grafika:tk-3.3.png

ponieważ wszystkie trzy jego części komutują (a przyczyną tego jest dokładnie po trzykroć definicja produktu):

Grafika:tk-3.4.png

To znaczy, że k\circ h = 1_P. Zamieniając miejscami na diagramach role P i Q, otrzymamy również zależność h\circ k=1_Q, co świadczy o tym, że P i Q są izomorficzne: P\cong Q.

image:End_of_proof.gif

Przykłady:

  • W zbiorach z dodatkową strukturą, jak np. grupy czy monoidy, produkt konstruuje się, biorąc produkt zbiorów podkładowych wraz z operacjami po współrzędnych; np. produktem dwóch grup (G,\cdot, e_G), (H,\cdot,e_H) jest zbiór G\times H wraz z działaniami:
(g,h)\cdot(g',h') := (g\circ g', h\circ h')

i elementem neutralnym e:=(e_G,e_H). Projekcje to homomorfizmy (g,h)\mapsto g i (g,h)\mapsto h.

  • Kategoria \mathbf{Cat} posiada produkty, to znaczy: dla dowolnych dwóch małych kategorii \mathbf{C}, \mathbf{D} istnieje ich produkt \mathbf{C}\times \mathbf{D}. Obiektami są uporządkowane pary obiektów z \mathbf{C} i \mathbf{D}, morfizmami - uporządkowane pary morfizmów z \mathbf{C} i \mathbf{D} projekcjami funktory P_{\mathbf{C}}\colon \mathbf{C}\times \mathbf{D}\to \mathbf{C} oraz P_{\mathbf{D}}\colon \mathbf{C}\times \mathbf{D}\to \mathbf{D} dane jako:
P_{\mathbf{C}}((C,D)) := C
P_{\mathbf{C}}((f,g)) := f
P_{\mathbf{D}}((C,D)) := D
P_{\mathbf{D}}((f,g)) := g

dla C\in \mathbf{C}_0, D\in \mathbf{D}_0, f\in \mathbf{C}_1, g\in \mathbf{D}_1. Sprawdzenie, że taka definicja daje nam produkt jest bardzo łatwe - wszystko dzieje się tak, jak w \mathbf{Set}.

  • W Zadaniu 1.11 zdefiniowaliśmy kategorię typów \mathbf{C}(\lambda) dla \lambda-rachunku. Ta kategoria posiada produkty, to znaczy: każde dwa obiekty tej kategorii posiadają produkt. Przekonajmy się o tym. Rzeczywiście, mając dane typy A i B, definiujemy:
p_A := \lambda z.\pi_1(z),
p_B := \lambda z.\pi_2(z).

Mając dane a i b jak na diagramie:

Grafika:tk-3.5.png

definiujemy

(a,b) := \lambda x.\langle ax, bx\rangle.

Sprawdźmy, że diagram rzeczywiście komutuje:

p_A\circ (a,b) = \lambda x. p_A((\lambda y.\langle ay,by\rangle)x) = \lambda x.p_A \langle ax,bx\rangle = \lambda x.ax = a

i podobnie p_B\circ (a,b) = b. Jeśli teraz c\colon X\to A\times B również spełnia p_A\circ c=a i p_B\circ c = b, to wtedy:

(a,b) = \lambda x.\langle ax,bx\rangle = \lambda x.\langle (p_A\circ c)x,(p_B\circ c)x\rangle=\lambda x.\langle \lambda y.(p_A(cy))x,\lambda y.(p_B(cy))x\rangle=\lambda x.\langle \lambda y.((\lambda z.\pi_1(z))(cy))x,\lambda y.((\lambda z.\pi_2(z))(cy))x\rangle=\lambda x.\langle \lambda y.(\pi_1(cy))x,\lambda y.(\pi_2(cy))x\rangle=\lambda x.\langle \pi_1(cx),\pi_2(cx)\rangle= \lambda x.cx=c.

Wykazaliśmy więc, że kategoria \mathbf{C}(\lambda) ma produkty.

Jeszcze jeden przykład znajduje się w Zadaniu 3.1.

Dzięki zasadzie dualności, definicję i własności obiektu dualnego do produktu, tzw. koproduktu dostajemy za darmo (porównaj bardzo dokładnie(!) z Definicją 3.3):


Definicja 3.5 [koprodukt]

Niech \mathbf{C} będzie dowolną kategorią, zaś A,B\in\mathbf{C}_0 jej obiektami. Koproduktem obiektów A i B nazywamy obiekt A+B\in \mathbf{C}_0 wraz ze strzałkami i_A\colon A\to A+B\in \mathbf{C}_1 i i_B\colon B\to A+B\in\mathbf{C}_1:

A\stackrel{i_A}{\longrightarrow}A+ B\stackrel{i_B}{\longleftarrow}B,

który posiada następującą własność uniwersalną:

Dla dowolnego diagramu:

A\stackrel{f}{\longrightarrow}X\stackrel{g}{\longleftarrow}B,

w kategorii \mathbf{C}, istnieje dokładnie jedna strzałka h\colon A+B\to X taka, że f = h\circ i_A i g = h\circ i_B (czyli taka, że poniższy diagram komutuje). Strzałkę h oznaczmy zwyczajowo jako [f,g].

Grafika:tk-3.6.png

Stwierdzenie dualne do Faktu 3.4 mówi nam, że koprodukt jest jedyny z dokładnością do izomorfizmu! Omówienie koproduktu w \mathbf{Set} jest przedmiotem Zadania 3.2.

Ekwalizator i koekwalizator

Definicja 3.6 [ekwalizator]

Dla dwóch równoległych strzałek f,g\colon A\to B w kategorii \mathbf{C}, ich ekwalizatorem nazywamy obiekt E wraz ze strzałką e\colon E\to A, która:

  • ekwalizuje f i g, tzn. f\circ e = g\circ e oraz
  • jest uniwersalna, tzn. dla dowolnej strzałki z\colon Z\to A, takiej że f\circ z= g\circ z, istnieje dokładnie jedna strzałka u\colon Z\to E taka, że e\circ z=u, tzn. taka, że poniższy diagram komutuje:
Grafika:tk-3.7.png


W \mathbf{Set} ekwalizatorem dwóch funkcji f,g\colon A\to B musi być zbiór, na którym funkcje się zgadzają, więc zgadujemy, że E := \{x\in A\mid f(x)=g(x)\}. Z takim zbiorem w oczywisty sposób jest związana inkluzja e\colon E\to A, e(x) := x dla x\in E. Pokażmy, że (E,e) jest ekwalizatorem.

Grafika:ilustracja6.png

Niech Z będzie dowolnym zbiorem z funkcją z\colon Z\to A tak, że f\circ z = g\circ z. Wtedy z(w)\in E dla każdego w\in Z. Ale to oznacza, że z faktoryzuje się przez E. Ta faktoryzacja jest jednoznaczna, bo e jest mono (jeśli e\circ u = z i e\circ u' = z, to e\circ u=e\circ u', stąd mono implikuje u=u').

To nie przypadek, że e jest monomorfizmem:


Fakt 3.7

Każdy ekwalizator jest monomorfizmem.

Dowód

Rozważmy diagram:
Grafika:tk-3.8.png

gdzie zakładamy, że e ekwalizuje f,g oraz e\circ x = e\circ y. Ponieważ e\circ x jest typu Z\to A oraz f\circ (e\circ x) = (f\circ e)\circ x = (g\circ e)\circ x = g\circ (e\circ x), więc z własności uniwersalnej e wynika, że istnieje dokładnie jedna strzałka u\colon Z\to E taka, że e\circ u = e\circ x. Jako u da się podstawić zarówno x jak i y i ostatnie równanie pozostanie prawdziwe, więc musi być x=y. To kończy dowód, że e jest mono.

image:End_of_proof.gif

W innych kategoriach, jak \mathbf{Top}, \mathbf{Pos}, \mathbf{Mon} ekwalizatorem jest zbiór strzałek f,g\colon A\to B jest podzbiór E = \{x\in A\mid f(x)=g(x)\} zbioru A wraz ze strukturą dziedziczoną z A, zawężoną do E (np. w \mathbf{Top}, zbiór E dostaje topologię podprzestrzeni).

Pojęciem dualnym do ekwalizatora jest koekwalizator. Co ciekawe - koekwalizatory są uogólnieniem pojęcia przestrzeni ilorazowej i odwzorowania ilorazowego przypisującego elementowi jego klasę abstrakcji.


Definicja 3.8

Koekwalizatorem pary strzałek f,g\colon A\to B nazywamy taki obiekt Q wraz ze strzałką q\colon B\to A, która:
  • koekwalizuje f,g, tzn. q\circ f = q \circ g oraz
  • jest uniwersalna, tzn. dla dowolnej strzałki z\colon B\to Z, która koekwalizuje: z\circ f = z\circ g, istnieje dokładnie jednak strzałka u\colon Q\to Z taka, że u\circ q = z.
Grafika:tk-3.9.png

Dualność wraz z Faktem 3.7 implikują, że koekwalizator jest zawsze epimorfizmem. Sztandarowym przykładem koekwalizatora w \mathbf{Set} jest koekwalizator typu

Grafika:tk-3.10.png

gdzie R\subseteq X\times X jest relacją równoważności na X, zaś p_1, p_2 są projekcjami. Koekwalizatorem jest wtedy zbiór ilorazowy X/R wraz z kanonicznym przekształceniem ilorazowym q\colon X\to X/R danym jako q(x) := [x]_R, gdzie [x]_R jest klasą równoważności elementu x\in X przy relacji R.

Oczywiście w \mathbf{Set} istnieją wszystkie koekwalizatory, tzn. dla każdej pary f,g\colon A\to B znajdziemy koekwalizator. Jest nim zbiór B podzielony przez relację równoważności R\subseteq B\times B daną jako przecięcie wszystkich relacji równoważności S takich, że b_1,b_2\in S wtedy i tylko wtedy, gdy f(b_1)=g(b_2). Szczegóły techniczne nie są ciekawe, więc je pomijamy.

Pulbak i pushout

Przed nami terra incognita, gdzie znane z \mathbf{Set} intuicje odszukujemy w coraz bardziej złożonych formach, trudniejszych niż w przypadku poprzednio omówionych granic. Pulbak (produkt włóknisty), który pojawia się bardzo często w matematyce, w logice w szczególności, w \mathbf{Set} stanowi uogólnienie zarówno operacji przecięcia zbiorów, jak i przeciwobrazu funkcji. Jego dualnym odpowiednikiem jest pushout. (Pozwalamy sobie pozostać przy angielskich nazwach, ustępując pola lingwistom, którzy chcieliby znaleźć, choćby dla pushoutu, wygodniejszą nazwę niż koprodukt włóknisty.)


Definicja 3.9 [pulbak]

Pulbakiem strzałek f, g takich, że \mathrm{cod}(f)=\mathrm{cod}(g) w kategorii \mathbf{C}

Grafika:tk-3.11.png

nazywamy obiekt P wraz ze strzałkami

Grafika:tk-3.12.png

taki, że:

  • poniższy kwadrat pulbakowy komutuje, tzn. f\circ p = g\circ q oraz
  • uniwersalny, tzn. dla dowolnego innego kandydata na pulbak
A\stackrel{r}{\longrightarrow}Q\stackrel{s}{\longleftarrow}B

istnieje dokładnie jedna strzałka u\colon Q\to P taka, że: r = p\circ u i s = q\circ u, tzn. taka, że poniższy diagram komutuje:

Grafika:tk-3.13.png


Uwaga
O takiej sytuacji będziemy mówili, że p jest pulbakiem g wzdłuż f lub że q jest pulbakiem f wzdłuż g (stąd nazwa pulbak - od angielskiego pulling back).

Pulbak nazywa się często w literaturze produktem włóknistym i jest ku temu dobra przyczyna: w dowolnej kategorii \mathbf{C} z produktami (tzn. w takiej kategorii \mathbf{C}, w której istnieje produkt dowolnych dwóch obiektów) i ekwalizatorami, dla diagramu

A\stackrel{f}{\longrightarrow}Z\stackrel{g}{\longleftarrow}B

rozważmy inny diagram:

Grafika:tk-3.14.png

gdzie p_A,p_B są projekcjami produktu A\times B. Niech

Grafika:tk-3.15.png

będzie ekwalizatorem. Wtedy

Grafika:tk-3.16.png

jest pulbakiem strzałek A\stackrel{f}{\longrightarrow}Z\stackrel{g}{\longleftarrow}B.

Oto dowód (pomijamy dla prostoty symbol złożenia \circ): oczywiście f(p_Ae) = (fp_A)e = (gp_B)e=g(p_Be), więc pierwszy punkt definicji pulbaku jest spełniony. Po drugie, jeśli

Grafika:tk-3.17.png

komutuje, to dla strzałki

Q\stackrel{(r,s)}{\longrightarrow}A\times B

z własności uniwersalnej ekwalizatora istnieje dokładnie jedna strzałka u\colon Q\to P taka, że

Grafika:tk-3.18.png

komutuje. Oczywiście komutuje też

Grafika:tk-3.19.png

co kończy dowód faktu, że (P, p_Ae, p_Be) jest pulbakiem. q.e.d.

A zatem można sobie wyobrażać, że pulbak powstaje jako ekwalizator produktu, co w szczególności dla \mathbf{Set} implikuje, że pulbak funkcji

A\stackrel{f}{\longrightarrow}Z\stackrel{g}{\longleftarrow}B

jest zbiorem

A\times_Z B = \{(a,b)\in A\times B\mid f(a)=g(b)\}

wraz z zanurzeniem A\times_Z B\to A\times B.

Podsumowując powyższą dyskusję, pokazaliśmy że:

Wniosek 3.10

W dowolnej kategorii \mathbf{C} z produktami i ekwalizatorami istnieją wszystkie pulbaki.

Prawdziwe jest również stwierdzenie odwrotne, które jest treścią Zadania 3.4. Wykład zakończymy podrozdziałem, który ilustruje własności pulbaków i do którego warto wrócić raz jeszcze po przeczytaniu Wykładu 5.

Własności pulbaków

Lemat 3.11 [Lemat Pulbakowy]

Załóżmy, że diagram
Grafika:tk-3.20.png

komutuje. Wówczas:

  • Jeśli prawy kwadrat i zewnętrzny prostokąt są kwadratami pulbakowymi, to lewy kwadrat też.
  • Jeśli dwa wewnętrzne kwadraty są pulbakami, to zewnętrzny prostokąt też jest pulbakiem.

Dowód powyższego lematu jest treścią Zadania 3.8. Konsekwencją Lematu Pulbakowego jest natychmiast:

Wniosek 3.12

Pulbak komutującego trójkąta jest komutującym trójkątem. To znaczy: jeśli na poniższym diagramie w kształcie pryzmy
Grafika:tk-3.21.png

prawy trójkąt komutuje i dla h\colon C'\to C tworzymy pulbaki:

  • \alpha ' jako pulbak \alpha wzdłuż h,
  • \beta ' jako pulbak \beta wzdłuż h,

to istnieje dokładnie jedna strzałka \gamma '\colon A'\to B' taka, że lewy trójkąt komutuje i taka, że trzecia ze ścian pryzmy (górna) również jest pulbakiem.

Dowód

Wynika natychmiast z Lematu Pulbakowego, jeśli przyjmiemy jako \gamma ' strzałkę uniwersalną pulbaku \beta wzdłuż h i przerysujemy wygodnie pryzmę jako:
Grafika:tk-3.22K.png

(wtedy z faktu, że najbardziej zewnętrzny prostokąt i prawy kwadrat są pulbakami wynika, teza: lewy kwadrat jest pulbakiem).

image:End_of_proof.gif

Stwierdzenie 3.13

Pulbak jest funktorem tzn. w kategorii \mathbf{C} z pulbakami, dla każdej strzałki h\colon C'\to C\in \mathbf{C}_1 istnieje funktor Pb_h\colon \mathbf{C}/C\to \mathbf{C}/C' definiowany na obiekcie \alpha\colon A\to C\in (\mathbf{C}/C)_0 jako:
Pb_h(A\stackrel{\alpha}{\to}C) := (C'\times_C A\stackrel{\alpha ' }{\to} C')

i na strzałce \gamma\colon \alpha \to \beta \in (\mathbf{C}/C)_1 jak w powyższym wniosku (tzn: \gamma \mapsto \gamma ': porównaj diagram-pryzmę).

Dowód

Musimy pokazać, że
Pb_h(1_A) = 1_{Pb_h(A)}

i

Pb_h(\gamma\circ \eta) = Pb_h(\gamma)\circ Pb_h(\eta).

Obie własności łatwo sprawdzić, stosując Lemat Pulbakowy. My pokażemy tylko pierwszą, pozostawiając drugą dla zainteresowanego czytelnika. Rozważmy zatem diagram:

Grafika:tk-3.23K1.png

Jeśli dolny kwadrat jest pulbakiem, to oczywiście zewnętrzny prostokąt też. Z Lematu Pulbakowego wynika, że górny kwadrat komutuje. A zatem Pb_h(1_{\alpha}) = Pb_h(1_A) = 1_{A'} = 1_{\alpha '} = 1_{Pb_h(\alpha)}.

image:End_of_proof.gif