Teoria kategorii dla informatyków/Wykład 7: Lemat Yonedy i funktory reprezentowalne

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Lemat Yonedy

Niech 𝐂, 𝐃, 𝐄 będą kategoriami. Funktor typu 𝐂×𝐃𝐄 nazywamy bifunktorem.

Chyba najważniejszym przykładem jest tu - dla każdej kategorii lokalnie małej 𝐂 - bifunktor typu 𝐂op×𝐂𝐒𝐞𝐭 definiowany na obiektach A,B𝐂0 jako:

(A,B)Hom𝐂(A,B)

oraz na morfizmach f:AB,g:CD w 𝐂1 jako:

(f,g)Hom𝐂(f,g)

gdzie Hom𝐂(f,g):Hom𝐂(B,C)Hom𝐂(A,D) jest następującym morfizmem w 𝐄:

h:BC  ghf

Definicję dobrze ilustruje poniższy diagram:

Założenie, że 𝐂 jest lokalnie mała jest konieczne, gdyż w przeciwnym wypadku nie moglibyśmy twierdzić, że kodziedziną Hom𝐂 jest 𝐒𝐞𝐭.

Z bifunktorem Hom𝐂 jest ściśle związany pewien funktor, który zanurza dowolną lokalnie małą kategorię 𝐂 w kategorię funktorów [𝐂op,𝐒𝐞𝐭], która jest kartezjańsko zamknięta, zupełna i kozupełna, niezależnie od kształtu 𝐂.


Lemat 7.1 [funktor Yonedy]

Dla lokalnie małej kategorii 𝐂 operacja 𝒴:𝐂[𝐂op,𝐒𝐞𝐭], gdzie dla X𝐂0:
𝒴(X):=Hom𝐂(,X)

oraz dla f:XY𝐂1:

𝒴(f):Hom𝐂(,X)Hom𝐂(,Y)

jest transformacją naturalną daną przez komponenty:

(𝒴(f))Z:=f:Hom𝐂(Z,X)Hom𝐂(Z,Y)

jest funktorem, nazywanym funktorem Yonedy.

Dowód

Dowód jest elementarny, choć pewną trudność może sprawić fakt, że pracujemy z kategorią funktorów [𝐂op,𝐒𝐞𝐭].

Aby pokazać, że 𝒴 jest funktorem, musimy stwierdzić, że zachowuje on identyczności i złożenie. Niech X będzie obiektem w 𝐂. Wtedy 𝒴(1X) jest, zgodnie z definicją, transformacją naturalną typu

Hom𝐂(,X)Hom𝐂(,X)

Dla Z𝐂0, jej Z-ty komponent jest funkcją typu

Hom𝐂(Z,X)Hom𝐂(Z,X)

która dowolnemu morfizmowi g:ZX𝐂1 przypisuje morfizm (𝒴(1X))Z(g)=1Xg=g. Pokazaliśmy więc, że (𝒴(1X))Z jest identycznością na zbiorze Hom𝐂(Z,X), czyli

𝒴(1X)=1Hom𝐂(,X)=1𝒴(X)

Innymi słowy, funktor 𝒴 zachowuje identyczności.

Dla f:AB i g:BC oraz ZCC0, Z-ty komponent transformacji naturalnej (𝒴(gf))Z jest funkcją gf typu Hom𝐂(Z,A)Hom𝐂(Z,C). Dla h:ZA mamy (𝒴(gf))Z(h)=gfh=g(𝒴(f))Z(h)=((𝒴(g))Z(𝒴(f))Z)(h), co dowodzi, że 𝒴(gf)=𝒴(g)𝒴(f).

Z kategorią [𝐂op,𝐒𝐞𝐭] jest stowarzyszony pewnien funktor, tzw. (bi)funktor ewaluacji (zamiast w pełni rygorystycznie ev[𝐂op,𝐒𝐞𝐭],𝐂op będziemy w skrócie pisali ev𝐂op):

ev𝐂op:[𝐂op,𝐒𝐞𝐭]×𝐂op𝐒𝐞𝐭

definiowany dla F,G[𝐂op,𝐒𝐞𝐭]0, X,Y𝐂, f:XY𝐂1 oraz ϕ:FG jako:

ev𝐂op(F,X)=F(X)
ev𝐂op(ϕ,f)=F(Y)F(f)F(X)ϕXG(X)

Zauważmy, że naturalność transformacji ϕ:

pozwala nam zdefiniować działanie ev𝐂op na strzałkach następująco:

ev𝐂op(ϕ,f)=F(Y)ϕYG(Y)G(f)G(X)

Teraz jesteśmy przygotowani na to, aby wypowiedzieć centralny wynik tego wykładu, zaskakujący i posiadający zaskakująco wiele zastosowań w teorii kategorii.


Twierdzenie 7.2 [Lemat Yonedy]

Niech 𝐂 będzie lokalnie małą kategorią, X𝐂0,F:𝐂op𝐒𝐞𝐭. Wówczas w 𝐒𝐞𝐭 istnieje bijekcja:

b:[𝐂op,𝐒𝐞𝐭](𝒴(X),F)F(X)

która jest naturalna ze względu na F i na X.


Uwaga
Zapis [𝐂op,𝐒𝐞𝐭](𝒴(X),F) oznacza kolekcję morfizmów w kategorii [𝐂op,𝐒𝐞𝐭], czyli kolekcję transformacji naturalnych między funktorami 𝒴(X)=Hom(,X) i F. Lemat Yonedy mówi zatem po pierwsze, że ta kolekcja jest zbiorem (bo istnieje bijekcja ze zbiorem F(X)), a co za tym idzie operacja
F,X[𝐂op,𝐒𝐞𝐭](𝒴(X),F)

jest obiektową częścią funktora typu [𝐂op,𝐒𝐞𝐭]×𝐂op𝐒𝐞𝐭. Druga część lematu wyjaśnia, że ten bifunktor jest naturalnie izomorficzny z bifunktorem ewaluacji.

Dowód

X-tym komponentem transformacji naturalnej ϕ:𝒴(X)F jest funkcja ϕX:Hom(X,X)F(X). Identyczność 1X jest elementem Hom(X,X), a zatem ϕX(1X)F(X). To rozumowanie pozwala nam zgadnąć definicję bijekcji b jako:
b(ϕ):=ϕX(1X)

Z drugiej strony, dla dowolnego elementux zbioru F(X), musimy zdefiniować transformację naturalną - nazwijmy ją x, której Y-ty komponent xY będzie typu Hom𝐂(Y,X)F(Y). Połóżmy więc:

xY(f):=F(f)(x)

Rzeczywiście, tak zdefiniowana operacja jest transformacją naturalną, gdyż dla dowolnej strzałki g:YY w 𝐂1 diagram:

komutuje.

Pokażemy teraz, że funkcje b i są do siebie odwrotne (tzn. tworzą bijekcję). Mamy b(x)=(x)X(1X)=F(1X)(x)=1F(X)(x)=x (wykorzystaliśmy fakt, że funktory zachowują identyczności). Po drugie, (b(ϕ))Y(f)=F(f)(b(ϕ))=F(f)(ϕ)X(1X))=ϕY(1Xf)=ϕY(f), gdzie w kluczowym momencie (w przedostatniej równości) wykorzystaliśmy naturalność transformacji ϕ. A to oznacza, że b(ϕ)=ϕ, co dowodzi, że b jest bijekcją z odwrotnością . Część pierwsza lematu jest więc wykazana i pozostaje nam jeszcze przekonać się o naturalności bijekcji b, tzn. niezależności od wyboru F i X.

Niech f:XX𝐂1 oraz ϕ:FF. Wówczas diagram:

komutuje, co sprawdzamy następująco (pierwsza równość wynika z naturalności ψ):

Parser nie mógł rozpoznać (błąd składni): {\displaystyle \phi_{X'}(F(f)(\psi_X(1_X))) &=& \phi_{X'}(\psi_{X'}(1_X\circ f))=\phi_{X'}(\psi ){X'}(f\circ 1_{X'})) = \phi_{X'}(\psi_{X'}(\mathcal{Y}(f)_{X'}(1_{X'}))) = (\phi\circ\psi\circ \mathcal{Y}(f))_{X'}(1_{X'})}


Najważniejszym wnioskiem z lematu jest niewątpliwie stwierdzenie, że:


Wniosek 7.3

Funktor Yonedy jest pełny i wierny.

Dowód

Musimy pokazać, że dla dowolnych obiektów X,Y𝐂0 mamy bijekcję pomiędzy funkcjami typu XY a funkcjami typu 𝒴(X)𝒴(Y). Ale przecież, zgodnie z lematem Yonedy, funkcje f:CY są w bijekcji z transformacjami naturalnymi f typu 𝒴(X)𝒴(Y). Zbadajmy komponenty:
(f)Z(g:ZX)=𝒴(Y)(g)(f)=(g)(f)=f=(f)(g)=(𝒴(f))Z(g)

Wyciągamy więc wniosek, że =𝒴, czyli, że funkcje f:XY są w bijekcji z funkcjami typu 𝒴(X)𝒴(Y).


Lemat Yonedy ma często następujące zastosowanie: aby pokazać, że obiekty A,B𝐂0 lokalnie małej kategorii 𝐂 są izomorficzne, wystarczy pokazać, że dla każdego obiektu X𝐂0 mamy bijekcję αX:Hom(X,A)Hom(X,B), która spełnia warunek naturalności: dla każdej g:XZ diagram:

komutuje. Dlaczego? Odpowiedź znajduje się w Zadaniu 7.2.

Jak już wspomnieliśmy, funktor Yonedy pełni rolę zanurzenia kategorii 𝐂 w inną kategorię [𝐂op,𝐒𝐞𝐭], która posiada wiele przyjemnych własności (jest m.in. kartezjańsko zamknięta). Pełność funktora Yonedy dodatkowo implikuje, że każdy funktor typu 𝐂op𝐒𝐞𝐭 da się w pewnym sensie zbudować z funktorów postaci 𝒴(X) dla X𝐂0, mniej więcej w taki sposób jak liczby naturalne powstają z liczb pierwszych. Uściślenie tej intuicji jest poza zasięgiem wykładu, ale spróbujmy przyjrzeć się chociaż pewnej szczególnej klasie funktorów z [𝐂op,𝐒𝐞𝐭], tak zwanym funktorom reprezentowalnym.

Reprezentowalność funktorów

Zdarza się, że funktor F:𝐂op𝐒𝐞𝐭 jest nie tyle równy, ile izomorficzny z funktorem 𝒴(X) dla pewnego X𝐂0. Taka sytuacja jest arcyciekawa i zasługuje na osobną definicję:


Definicja 7.4 [funktor reprezentowalny]

Funktor F:𝐂op𝐒𝐞𝐭 izomorficzny z 𝒴(X) dla pewnego X𝐂0 nz. funktorem reprezentowalnym.


Lemat Yonedy jest tym narzędziem, które pozwala nam zrozumieć funktory reprezentowalne. Zobaczmy bowiem, że naturalny izomorfizm ϕ:𝒴(X)F jest elementem zbioru [𝐂op,𝐒𝐞𝐭](𝒴(X),F), który - w myśl lematu Yonedy - jest izomorficzny ze zbiorem F(X). To znaczy, że transformacji ϕ odpowiada jednoznacznie element eF(X) definiowany jako e:=b(ϕ). Element e nazywamy elementem uniwersalnym dla funktora F, zaś para (X,e) nazywa się reprezentacją funktora F.

Reprezentacje funktorów są scharakteryzowane w sposób następujący:

Lemat 7.5

Następujące warunki są równoważne:
  • 𝒴(X)F;
  • Dla każdego yF(Y) istnieje dokładnie jeden morfizm f:YX𝐂0 taki, że F(f)(e)=y.

Dowód

Zauważmy, że 𝒴(X)F oznacza, że dla każdego obiektu Y𝐂0 mamy bijekcję Hom𝐂(Y,X)=𝒴(X)(Y)F(Y) (przy oznaczeniach z lematu Yonedy ta bijekcja nazywa się (ϕ)Y), co w takim razie możemy przeczytać tak, że dla dowolnego elementu yF(Y) istnieje dokładnie jeden element (funkcja) fHom𝐂(Y,X) taki, że y=(ϕ)Y(f)=(b(ϕ))Y(f)=(e)Y(f)=F(f)(e), co należało wykazać.

Łatwo pokazać, że każde dwie reprezentacje tego samego funktora są ze sobą izomorficzne, patrz Zadanie 7.5.

Okazuje się, że każda konstrukcja uniwersalna (np. produkt, eksponent, pulbak, itd.) da się opisać jako reprezentacja odpowiedniego funktora, co świadczy o fundamentalnym charakterze pojęcia reprezentowalności w teorii kategorii. Oto przykład:


Przykład 7.6 [Produkt]

Niech 𝐂 będzie lokalnie małą kategorią, X,Y𝐂0. Definiujemy funktor ΠX,Y:𝐂op𝐒𝐞𝐭 następująco:
ZHom𝐂(Z,X)×Hom𝐂(Z,Y)
f:ZZ  Hom𝐂(Z,X)×Hom𝐂(Z,Y)(f)×(f)Hom𝐂(Z,X)×Hom𝐂(Z,Y)

Sprawdzimy, że produkt wraz z projekcjami (X×Y,(πX,πY)) jest reprezentacją funktora ΠX,Y.

Niech hΠX,Y(Z)=Hom𝐂(Z,X)×Hom𝐂(Z,Y). Produkt jest reprezentacją ΠX,Y(Z) wtedy i tylko wtedy, gdy istnieje dokładnie jedna taka para morfizmów (f,g)Hom𝐂(Z,X)×Hom𝐂(Z,Y) taka, że:


ΠX,Y((f,g))(πX,πY)=h


Ta ostatnia równość jest równoważna kolejno:


(((f,g))×((f,g)))(πX,πY)=h


wtedy i tylko wtedy, gdy:


(πX(f,g),πY(f,g))=h


wtedy i tylko wtedy, gdy:


(f,g)=h


ale ta równość jest prawdziwa, bo, z definicji produktu, para (f,g) jest wyznaczona jednoznacznie (i jest równa (ϕXh,πYh)).


Przykład 7.7

Funktor zapominania U:𝐆𝐫𝐩𝐒𝐞𝐭 jest reprezentowany przez parę ((,+),1).

Dowód

W myśl Lematu 7.5 wystarczy przekonać się, że dla dowolnej grupy (G,,e) i jej elementu gG istnieje dokładnie jeden homomorfizm grup f:G taki, że U(f)(1)=g, to znaczy f(1)=g. Rzeczywiście, wystarczy położyć f(n+m):=f(n)f(m), f(n1):=f(n)1. Przy tej definicji f jest homomorfizmem i jako jedyny spełnia f(1)=g. Rzeczywiście, f jest homomorfizmem z definicji (w szczególności f(0)=f(nn)=f(n)f(n)1=e), a jeśli h jest dowolnym innym homomorfizmem, który ma własność h(1)=g, to f(n)=gn=h(n) dla dowolnego n, czyli f=h.

Powyższy przykład pokazuje, że U(G)Hom𝐆𝐫𝐩(,G)

Kategorię 𝐂 nazywamy kartezjańską, jeśli posiada obiekt końcowy, produkty i ekwalizatory. Jeśli 𝐂 jest kartezjańska i ma eksponenty, to jest kartezjańsko zamknięta. Pokażemy, że, podobnie jak w przypadku produktu, posiadanie przez kategorię eksponentów jest równoważne reprezentowalności pewnego funktora.


Fakt 7.8

Lokalnie mała i kartezjańska kategoria 𝐂 jest kartezjańsko zamknięta wtedy i tylko wtedy, gdy dla każdej pary obiektów X,Y𝐂0 funktor G:𝐂op×X𝐂op𝒴(Y)𝐒𝐞𝐭 jest reprezentowalny.

Dowód

Pokażemy, że reprezentacją tego funktora jest para składająca się z eksponentu ([X,Y],evX,Y) (porównaj Definicję 4.1).

Zauważmy po pierwsze, że evX,YG([X,Y])=𝒴(Y)([X,Y]×X)=Hom𝐂([X,Y]×X,Y), czyli evX,Y ma rzeczywiście typ [X,Y]×XY. Dalej, zgodnie z definicją evX,Y jest elementem uniwersalnym G jeśli dla każdego morfizmu f:Z×XY istnieje dokładnie jeden morfizm (oznaczmy go jak zwykle curry(f)) curry(f):Z[X,Y] taki, że G(curry(f))(evX,Y)=f. Musimy teraz już tylko rozszyfrować znaczenie ostatniego równania:

G(curry(f))(evX,Y)=𝒴(Y)(curry(f)×1X)(evX,Y)=evX,Y(curry(f)×1X)

a zatem ostatnie powyższe równanie to:

evX,Y(curry(f)×1X)=f

co przekłada się dokładnie na komutowanie znanego już diagramu:

To kończy nasz dowód.