TKI Moduł 13: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Pqw (dyskusja | edycje)
wykład 13.1
m Zastępowanie tekstu – „<math> ” na „<math>”
 
(Nie pokazano 13 wersji utworzonych przez 2 użytkowników)
Linia 1: Linia 1:
== Twierdzenie o istnieniu granic w '''Dcpo''' ==
Udowodnijmy teraz podstawowe twierdzenie na temat diagramów w kategorii '''Dcpo'''.
Udowodnijmy teraz podstawowe twierdzenie na temat diagramów w kategorii '''Dcpo'''.


Linia 5: Linia 7:
Dowód: Dowód przeprowadzimy dla szczególnego diagramu:
Dowód: Dowód przeprowadzimy dla szczególnego diagramu:


[DIAGRAM]
[[Grafika:Diag13.0.png]]


(Dowód ogólny jest analogiczny lecz wymaga bardziej ''technicznego'' zapisu, wiec go pominiemy.) Pokażemy, że granica powyższego diagramu jest dana jako
(Dowód ogólny jest analogiczny lecz wymaga bardziej ''technicznego'' zapisu, wiec go pominiemy.) Pokażemy, że granica powyższego diagramu jest dana jako


<math> D = \{(x_0, x_1, ... )\mid (\forall n\in \omega)(f_n(x_{n+1}) = x_n)\}.</math>
<math>D = \{(x_0, x_1, ... )\mid (\forall n\in \omega)(f_n(x_{n+1}) = x_n)\}</math>.


Zauważmy, że zbiór <math>D </math> jest posetem, w którym elementy są uporządkowane ''po współrzędnych'' (to znaczy, że porządek jest ''dziedziczony'' z produktu <math>\Pi_{n\in \omega} D_n</math>. Jeśli <math>G\subseteq D</math> jest zbiorem skierowanym, to dla każdego <math>n\in \omega </math>zbiór <math>\pi_n[G]= \{x_n\mid x\in G\}</math>jest skierowanym podzbiorem <math>D_n </math>. Niech <math>y_n = \bigvee \{x_n\mid x\in G\} </math>. Z ciągłości funkcji tworzących diagram mamy: <math>f_n(y_{n+1}) = \bigvee f_n(\{x_{n+1}\mid x\in G\})=  \bigvee \{x_{n}\mid x\in G\} = y_n</math>. To znaczy, że <math>(y_0, y_1, ...)\in D </math> i, jak łatwo zauważyć, element ten jest supremum skierowanym zbioru <math>G</math>. Pokazaliśmy więc, że <math>D\in</math> '''Dcpo'''.
Zauważmy, że zbiór <math>D</math> jest posetem, w którym elementy są uporządkowane ''po współrzędnych'' (to znaczy, że porządek jest ''dziedziczony'' z produktu <math>\Pi_{n\in \omega} D_n</math>. Jeśli <math>G\subseteq D</math> jest zbiorem skierowanym, to dla każdego <math>n\in \omega</math>zbiór <math>\pi_n[G]= \{x_n\mid x\in G\}</math>jest skierowanym podzbiorem <math>D_n</math>. Niech <math>y_n = \bigvee \{x_n\mid x\in G\}</math>. Z ciągłości funkcji tworzących diagram mamy: <math>f_n(y_{n+1}) = \bigvee f_n(\{x_{n+1}\mid x\in G\})=  \bigvee \{x_{n}\mid x\in G\} = y_n</math>. To znaczy, że <math>(y_0, y_1, ...)\in D</math> i, jak łatwo zauważyć, element ten jest supremum skierowanym zbioru <math>G</math>. Pokazaliśmy więc, że <math>D\in</math> '''Dcpo'''.


Udowodnimy teraz, że <math>D</math> wraz z projekcjami <math>\{\pi_n\colon D\to D_n\mid n\in \omega\}</math> jest granicą. Po pierwsze, dla <math>G\subseteq D</math> mamy
Udowodnimy teraz, że <math>D</math> wraz z projekcjami <math>\{\pi_n\colon D\to D_n\mid n\in \omega\}</math> jest granicą. Po pierwsze, dla <math>G\subseteq D</math> mamy


<math>\pi_n(\bigvee G) = y_n = \bigvee \{x_{n}\mid x\in G\} = \bigvee \pi_n[G],</math>
<math>\pi_n(\bigvee G) = y_n = \bigvee \{x_{n}\mid x\in G\} = \bigvee \pi_n[G]</math>


a więc projekcje są ciągłe. Po drugie, jeśli <math>\{g_k\colon E\to D_k\mid k\in \omega\}</math> jest dowolną inną granicą, to zdefiniujmy <math>h\colon E\to D </math> jako <math>h(x) = (g_0(x), g_1(x), ...)</math>. Z definicji powyższej wynika, że dla każdego <math>k\in \omega</math> mamy $\pi_k \circ h = g_k</math>.  Zauważmy, że to świadczy o jednoznaczności
a więc projekcje są ciągłe. Po drugie, jeśli <math>\{g_k\colon E\to D_k\mid k\in \omega\}</math> jest dowolną inną granicą, to zdefiniujmy <math>h\colon E\to D</math> jako <math>h(x) = (g_0(x), g_1(x), ...)</math>. Z definicji powyższej wynika, że dla każdego <math>k\in \omega</math> mamy $\pi_k \circ h = g_k</math>.  Zauważmy, że to świadczy o jednoznaczności
wyboru <math>h</math>.  A zatem <math>D</math> jest granicą omawianego diagramu. Co więcej, z jednoznaczności granicy wnioskujemy, że <math>D\cong E </math>. QED
wyboru <math>h</math>.  A zatem <math>D</math> jest granicą omawianego diagramu. Co więcej, z jednoznaczności granicy wnioskujemy, że <math>D\cong E</math>. QED


Uwaga! Powyższe twierdzenie nie zachodzi dla klas dziedzin ciągłych i algebraicznych w ogólności. Aby granica była również posetem odpowiedniej klasy, musimy nałożyć poewne restrykcje zarówno na kształ diagramów, jak i na własności funkcji tworzących diagram.
Uwaga! Powyższe twierdzenie nie zachodzi dla klas dziedzin ciągłych i algebraicznych w ogólności. Aby granica była również posetem odpowiedniej klasy, musimy nałożyć poewne restrykcje zarówno na kształ diagramów, jak i na własności funkcji tworzących diagram.
Linia 31: Linia 33:
'''Twierdzenie'''. Rozważmy diagram <math>F</math>  w kategorii '''Dcpo''' taki, że:
'''Twierdzenie'''. Rozważmy diagram <math>F</math>  w kategorii '''Dcpo''' taki, że:


1. Wierzchołkami <math>F</math> są posety <math>D_0, D_1, D_2, ...</math>;  
1. Wierzchołkami <math>F</math> są posety <math>D_0, D_1, D_2, ..</math>.;  


2. Dla <math>n\leq m</math>  istnieją funkcje <math>e_{mn}\colon D_n\to D_m</math> i  <math>p_{nm}\colon D_m\to D_n</math>  tworzące parę e-p;
2. Dla <math>n\leq m</math>  istnieją funkcje <math>e_{mn}\colon D_n\to D_m</math> i  <math>p_{nm}\colon D_m\to D_n</math>  tworzące parę e-p;
Linia 40: Linia 42:
Zdefiniujmy:  
Zdefiniujmy:  


<math>D = \{ (x_0, x_1, ...)\mid (\forall n\leq m)(x_n=p_{nm}(x_m)) \},</math>
<math>D = \{ (x_0, x_1, ...)\mid (\forall n\leq m)(x_n=p_{nm}(x_m)) \}</math>


<math>p_m\colon D\to D_m,\ \ (x_0, x_1, ...)\mapsto x_m, \ m\in \omega</math>
<math>p_m\colon D\to D_m,\ \ (x_0, x_1, ...)\mapsto x_m, \ m\in \omega</math>


<math>e_m\colon D_m\to D, \ x\mapsto (\bigvee_{k\geq n,m} p_{nk}\circ e_{km}(x)\mid n\in \omega).</math>
<math>e_m\colon D_m\to D, \ x\mapsto (\bigvee_{k\geq n,m} p_{nk}\circ e_{km}(x)\mid n\in \omega)</math>.


Wtedy:
Wtedy:
Linia 53: Linia 55:


7.<math>\{e_n\colon D_n\to D\}</math>  jest granicą odwrotną diagramu <math>F</math>. Jeśli <math>\{f_n\colon E\to D_n\}</math>  jest dowolną inną granicą, to izmorfizm <math>f\colon D\to E</math>  jest dany jako <math>f(x_n\mid n\in \omega) = \bigvee_n f_n(x_n)</math>  lub <math>f = \bigvee_n f_n\circ p_n</math>.
7.<math>\{e_n\colon D_n\to D\}</math>  jest granicą odwrotną diagramu <math>F</math>. Jeśli <math>\{f_n\colon E\to D_n\}</math>  jest dowolną inną granicą, to izmorfizm <math>f\colon D\to E</math>  jest dany jako <math>f(x_n\mid n\in \omega) = \bigvee_n f_n(x_n)</math>  lub <math>f = \bigvee_n f_n\circ p_n</math>.
Dowód: W Twierdzeniu ??? pokazaliśmy już, że granicą diagramu jest <math>\{p_n\colon D\to D_n\}</math>  i że izomorfizm <math>h\colon C\to D</math>  ma (pierwszą z) postulowanych postaci. Pokażmy teraz, że funkcje <math>e_m</math>  są dobrze zdefiniowane, tj. że <math>y = e_m(x)</math> należy do <math>D</math> dla dowolnego <math>m\in \omega</math>. Niech <math>m</math>
będzie dowolne i załóżmy, że <math>n\leq n'</math>. Mamy:
<math>p_{nn'}(y_{n'})  =  p_{nn'}(\bigvee_{k\geq n',m} p_{n'k}\circ e_{km}(x)) =  \bigvee_{k\geq n',m} p_{nn'}\circ p_{n'k}\circ e_{km}(x) = \bigvee_{k\geq n',m} p_{nk}\circ e_{km}(x)=  y_n</math>.
W dowodzie korzystaliśmy kolejno z: definicji <math>y_{n'}</math>, ciągłości <math>p_{nn'}</math>  i definicji <math>y_n</math>. A zatem <math>y = (y_0, y_1, ...)\in D</math>. Co więcej, funkcje <math>e_m</math>  są ciągłe, gdyż tylko funkcje ciągłe zostały użyte w ich definicji.
Przejdźmy do dowodu (5). Niech <math>m\in \omega</math>. Mamy:
<math>e_m\circ p_m (x_n\mid n\in \omega) = e_m(x_m) = (\bigvee_{k\geq n,m} p_{nk}\circ e_{km}(x_m)\mid n\in\omega)  = (\bigvee_{k\geq n,m} p_{nk}\circ e_{km} \circ p_{mk} (x_k)\mid n\in\omega) \subseteq (\bigvee_{k\geq n,m} p_{nk} (x_k)\mid n\in\omega) = (\bigvee_{k\geq n} p_{nk} (x_k)\mid n\in\omega) = (x_n\mid n\in\omega)</math>.
Ponadto, <math>p_m\circ e_m (x) = p_m (\bigvee_{k\geq n,m} p_{nk}\circ e_{km}(x)\mid n\in\omega ) =  \bigvee_{k\geq m} p_{mk}\circ e_{km}(x) = x</math>.
Bliższa analiza pokazuje, że <math>e_m\circ p_m</math>  pozostawi niezmienione
te elementy ciągu <math>(x_n\mid n\in\omega)</math> gdzie <math>n\leq m</math>:
<math>p_n(e_m\circ p_m (x_n\mid n\in \omega)) = ... = p_n(\bigvee_{k\geq n,m} p_{nk}\circ e_{km} \circ p_{mk} (x_k)\mid n\in\omega)  = p_n(\bigvee_{k\geq n,m} p_{nm}\circ p_{mk} \circ e_{km} \circ p_{mk} (x_k)\mid n\in\omega)  = p_n(\bigvee_{k\geq n,m} p_{nm}\circ  p_{mk} (x_k)\mid n\in\omega)  = p_n(\bigvee_{k\geq n} p_{nk} (x_k)\mid n\in\omega) = p_n(\bigvee_{k\geq n} x_n\mid n\in\omega) = p_n(x_n\mid n\in\omega) = x_n</math>.
To dowodzi, że <math>\bigvee_n e_n\circ p_n = 1_{D}</math>, czyli (5).
Korzystając z powyższego mamy też natychmiast:
<math>h = 1_D\circ h = \bigvee_n E_n\circ p_n\circ h = \bigvee e_m \circ g_n</math>
co kończy dowód (6).
Do pokazania pozostała nam (7), czyli fakt, że <math>\{e_n\colon D_n\to D\}</math>  jest granicą odwrotną diagramu <math>F</math>  Jeśli <math>\{f_n\colon E\to D_n\}</math>  jest dowolną inną granicą, to sprawdźmy najpierw czy funkcja <math>f = \bigvee_n f_n\circ p_n</math>  jest dobrze zdefiniowana, tj. czy supremum jest nad zbiorem skierowanym. Ale tak jest, ponieważ dla <math>n\leq m</math>:
<math>f_n \circ p_n = f_m \circ e_{mn}\circ p_{nm}\circ p_m\sqsubseteq f_m\circ p_m</math>.
Co więcej,
<math>f\circ e_m = \bigvee_{n\leq m} f_n\circ p_n\circ e_m = \bigvee_{n\leq m} f_n\circ p_n\circ e_n\circ e_{nm} = \bigvee_{n\leq m} f_n\circ e_{nm} = \bigvee_{n\leq m} f_m  = f_m.</math>
W końcu pokażemy, że funkcja <math>f</math>  o podanych własnościach jest
tylko jedna. Jeśli dla <math>f'\colon D\to E</math> zachodzi <math>f'\circ e_m = f_m</math>, to <math>f'\circ e_m \circ p_m = f_m\circ p_m</math>, a zatem <math>\bigvee_m f'\circ e_m \circ p_m = \bigvee_m f_m\circ p_m</math> czyli z ciągłości <math>f'</math>: <math>f'(\bigvee_m \circ e_m \circ p_m) = \bigvee_m f_m\circ p_m</math>. Ale <math>\bigvee_m \circ e_m \circ p_m = 1_D</math>  oraz <math>\bigvee_m f_m\circ p_m = f</math>  co daje <math>f'\circ 1_D = f</math>  czyli <math>f'=f</math>. QED.
== Kategoria <math>\mathrm{Dcpo}^{EP}_{\bot}</math> ==
W tej kategorii obiektami są posety zupełne  posiadające element najmniejszy, zaś morfizmami są
pary e-p, o których była mowa na początku wykładu ???. Złożenie morfizmów
[[Grafika:Diag13.1.png]]
definiujemy w naturalny sposób jako morfizm
[[Grafika:Diag13.2.png]]
Czy <math>(e_2\circ e_1, p_1\circ p_2)</math>  jest parą e-p? Tak, ponieważ: <math>e_2\circ e_1\circ p_1\circ p_2 \sqsubseteq e_2\circ 1_E\circ p_2 = e_2\circ p_2\sqsubseteq 1_F</math> oraz <math>p_1\circ p_2\circ e_2\circ e_1 = p_1\circ 1_E\circ e_1 = p_1\circ e_1 = 1_D</math>. A zatem złożenie par e-p jest dobrze zdefiniowane, a co za tym idzie, i co łatwo już teraz pokazać, <math>Dcpo^{EP}_{\bot}</math>  jest kategorią.
'''Definicja'''. Nazwijmy '''<math>\omega</math>-kategorią''' każdą kategorię, w której diagram postaci
[[Grafika:Diag13.3.png]]
posiada granicę odwrotną.
Zauważmy, że twierdzenie o zgodności granicy prostej i odwrotnej (Twierdzenie ???) mówi, że <math>Dcpo^{EP}_{\bot}</math>  jest <math>\omega</math>-kategorią!
'''Definicja'''. Funktor <math>F</math>  między <math>\omega</math>-kategoriami nazywamy '''ciągłym''', jeśli zachowuje granice odwrotne, t.j. jeśli <math>D_{\infty}</math>  jest granicą diagramu ???, to <math>F(D_{\infty})</math> jest granicą diagramu
[[Grafika:Diag13.4.png]]
'''Lemat'''. Niech <math>\mathbf{A}</math>  będzie <math>\omega</math>-kategorią, <math>F\colon \mathbf{A}\to \mathbf{A}</math>  funktorem ciągłym, <math>f\colon A\to F(A)</math>  morfizmem w <math>\mathbf{A}</math>  oraz niech diagram
[[Grafika:Diag13.5.png]]
posiada granicę odwrotną <math>D_{\infty}</math>. Wówczas <math>D_{\infty}\cong F(D_{\infty})</math>.
Dowód: Skoro <math>D_{\infty}</math>  jest granicą odwrotną diagramu
???, to
[[Grafika:Diag13.6.png]]
komutuje. W szczególności
[[Grafika:Diag13.7.png]]
komutuje i jak łatwo zauważyć <math>D_{\infty}</math>  jest jego granicą. Ale
z ciągłości <math>F</math> mamy, że diagram
[[Grafika:Diag13.8.png]]
komutuje i <math>F(D_{\infty})</math> jest jego granicą. A zatem <math>D_{\infty}
\cong F(D_{\infty})</math> wynika z Lematu ???. QED.
'''Przykład'''. Przekątna <math>\Delta\colon \mathbf{Dcpo}\to \mathbf{Dcpo}\times \mathbf{Dcpo}</math>, <math>a\mapsto (a,a)</math>; <math>f\mapsto (f,f)</math>  dla <math>a\in \mathbf{Dcpo}_0</math>  <math>f\in \mathbf{Dcpo}_1</math> jest ciągłym funktorem.
== Lokalna ciągłość funktorów ==
Ciągłość funktora jest często niełatwa do sprawdzenia. Na szczęście istnieje własność ''mocniejsza'', która jest łatwiej weryfikowalna: lokalna ciągłość.
'''Definicja'''. Funktor <math>F\colon \mathcal{D}\to \mathcal{E}</math> pomiędzy kategoriami posetów <math>\mathcal{D}, \mathcal{E}</math>  jest \mathit{ lokalnie ciągły} jeśli przekształcenia <math>f\mapsto F(f)</math>  typu <math>\mathrm{Hom}(D,D')\to \mathrm{Hom}(F(D),F(D'))</math>  są ciągłe w sensie Scotta dla każdej pary obiektów <math>D,D'\in \mathcal{D}_0</math>.
Dla przykładu przeczytajmy tę definicję dla bifunktora <math>F\colon \mathbf{Dcpo}^{op}\times \mathbf{Dcpo}\to \mathbf{Dcpo}</math>: funktor <math>F</math>  jest lokalnie ciągły, jeśli dla dowolnych zbiorów skierowanych <math>A\subseteq [D_2\to D_1]</math> i <math>B\subseteq [D_3\to D_4]</math>, gdzie <math>D_1, ..., D_4\in \mathbf{Dcpo}_0</math> mamy <math>F(\bigvee A, \bigvee B) = \bigvee_{f\in A, g\in G} F(f,g)</math>. Zauważmy, że supremum po prawej stronie istnieje w <math>[F(D_1,D_3)\to F(D_2, D_4)]</math>. 
'''Przykład'''. Eksponent <math>[\_\to \_]\colon\mathbf{Dcpo}^{op}\times \mathbf{Dcpo}\to \mathbf{Dcpo}</math> jest lokalnie ciągły, ponieważ <math>[f\to g] = curry(g\circ ev\circ (1\times f))</math>  jest złożeniem funkcji ciągłych w sensie Scotta.
'''Lemat'''. Niech funktor <math>F\colon \mathbf{Dcpo}^{op}_{\bot}\times \mathbf{Dcpo}_{\bot}\to
\mathbf{Dcpo}_{\bot}</math>  będzie lokalnie ciągły. Wtedy istnieje ciągły funktor <math>\widehat{F}\colon Dcpo^{EP}_{\bot}\times Dcpo^{EP}_{\bot}\to Dcpo^{EP}_{\bot}</math> 
którego działanie na obiekty jest takie samo, jak funktora <math>F</math>. 
Dowód: Połóżmy <math>\widehat{F}(a,b) = F(a,b)</math>, gdzie <math>a,b</math> są posetami ciągłymi z elementami najmniejszymi. Rozważmy pary e-p:
[[Grafika:Diag13.9.png]]
Możemy wówczas stworzyć diagram
[[Grafika:Diag13.10.png]]
i para morfizmów powyżej jest parą e-p. Rzeczywiście: <math>F(e,s)\circ F(p,j) = F(p\circ e, s\circ j) = F(1_a, 1_b) = 1_{F(a,b))}</math>. Wykorzystaliśmy kolejno: kontrawariantność <math>F</math> dla pierwszego argumentu, własności par e-p i definicję funktora. Ponadto,
<math>F(p,j)\circ F(e,s)  = F(e\circ p, j\circ s) \sqsubseteq F(1_{a'}, 1_{b'}) = 1_{F(a',b')}</math>.
Wykorzystaliśmy kolejno: definicję funktora, monotoniczność <math>F</math>, która wynika z lokalnej ciągłości i w końcu definicję <math>F</math> jeszcze raz.
Zdefiniujmy zatem <math>\widehat{F}((e,p),(j,s)) = (F(p,j),F(e,s))</math>. Oczywiście,\ <math>\widehat{F}</math>  jest funktorem. Aby pokazać ciągłość, załóżmy, że mamy w <math>Dcpo^{EP}_{\bot}\times Dcpo^{EP}_{\bot}</math>  diagram
<math>(A_1,B_1)\to  (A_2,B_2)\to (A_3,B_3)\to...</math>
który ma granicę odwrotną <math>(D,E)</math>. A to znaczy, że w <math>\mathbf{Dcpo}</math> mamy
dwa diagramy:
<math>A_1\to A_2\to A_3\to..</math>.
i
<math>B_1\to B_2\to B_3\to...</math>
których granicami są odpowienio <math>D</math> i <math>E</math>  Z twierdzenia o koincydencji granicy prostej i odwrotnej (Twierdzenie ???) wiemy, że zachodzi <math>1_D = \bigvee_n e_n\circ p_n</math>  oraz <math>1_E = \bigvee_n j_n\circ s_n</math>, a więc <math>1_{(D,e)} = \bigvee (e_n\circ p_n, j_n\circ s_n)</math>. Aplikując lokalną ciągłość <math>F</math>  do ostatniej równości mamy
<math>1_{\widehat{F}(D,E)} = \widehat{F}(1_{(D,e)}) = (F(1_D,1_E),F(1_D,1_E)) = \bigvee (F(e_n\circ p_n, j_n\circ s_n),F(e_n\circ p_n, j_n\circ s_n))</math>.
Ale Twierdzenie ??? mówi, że ostatnia równość charakteryzuje granicę odwrotną diagramu w <math>Dcpo^{EP}_{\bot}</math>:
<math>\widehat{F}(A_1,B_1)\to \widehat{F}(A_2,B_2)\to \widehat{F}(A_3,B_3)\to ..</math>.
a zatem <math>\widehat{F}(D,E)=F(D,E)</math> jest tą szukaną granicą odwrotną, co należało pokazać. QED.
== Twierdzenie Scotta ==
Zgodnie z poprzednim twierdzeniem możemy zdefiniować Eksponent <math>Exp\colon Dcpo^{EP}_{\bot}\times Dcpo^{EP}_{\bot} \to Dcpo^{EP}_{\bot}</math>  jako <math>\widehat{[\_\to\_ ]}</math>, który jest ciągły (ponieważ eksponent <math>[\_\to\_ ]</math>  jest lokalnie ciągły). Rozważmy złożenie:
[[Grafika:Diag13.11.png]]
Definiuje ono funktor ciągły <math>F</math> (jako złożenie dwóch funktorów ciągłych). Jak on działa? Rozważmy parę:
[[Grafika:Diag13.12.png]]
Mamy <math>F(P) = Exp\circ \Delta(P) = Exp(P,P) = [\_\to\_ ](P,P) = [P\to P]</math>  Podobnie <math>F(Q) = [Q\to Q]</math>  Działanie na morfizmach:
<math>F(e,p) = Exp((e,p),(e,p))  = ([\_\to\_ ](p,e), [\_\to\_ ](e,p)) = ([p\to e], [e\to p])</math>.
A zatem otrzymujemy:
[[Grafika:Diag13.13.png]]
Wiemy już, że para funkcji powyżej tworzy parę e-p! Przypomnijmy jeszcze raz jak działają funkcje <math>[p\to e]</math>  i <math>[e\to p]</math> na elementy z odpowiednio <math>[P\to P]</math>  i <math>[Q\to Q]</math>: przykładowo, dla <math>f\in [P\to P]</math>  mamy dla <math>q\in Q</math>
<math>[p\to e](f)(q) = curry(e\circ ev\circ (1\times p))(f)(q)  = (e\circ ev\circ (1\times p))(f,q) = e(ev((f,p(q)))) = e(f(p(q))) = e\circ f\circ p (q)</math>
to znaczy <math>[p\to e](f) = e\circ f\circ p</math>  Podobnie <math>[e\to p](g) = p\circ g\circ e</math>  dla <math>g\in [Q\to Q]</math>. 
Zauważmy w końcu, że dla dowolnego posetu zupełnego <math>P</math>, jeśli jako <math>e\colon P\to F(P)</math>  weźmiemy funkcję <math>y\mapsto \lambda x.y</math>, zaś jako <math>p\colon F(P)\to P</math>  weźmiemy funkcję <math>f\mapsto f(\bot)</math>, to para <math>(e,p)</math>  jest parą e-p typu <math>P\to F(P)</math>. 
A zatem otrzymujemy końcowy wniosek:
'''Twierdzenie (Dana Scott)'''. Niech <math>P</math> będzie posetem zupełnym z elementem najmniejszym <math>\bot</math>. Zdefiniujmy diagram w <math>\mathbf{Dcpo}</math>  jak następuje:
[[Grafika:Diag13.14.png]]
gdzie
1. <math>D_0 = P</math>; <math>D_{n+1} = [D_n \to D_n]</math> 
2. <math>e_0\colon P\to [P\to P]</math>  jest funkcją <math>\lambda y .\lambda x.y</math>;    <math>p_0\colon [P\to P]\to P</math>  jest funkcją <math>\lambda f
.f(\bot)</math>.
 
3.<math>e_{n+1}\colon [D_n\to D_n] = D_{n+1} \to [D_{n+1}\to D_{n+1}]</math> jest funkcją <math>\lambda f.e_n\circ f\circ p_n</math>; <math>p_{n+1}\colon [D_{n+1}\to D_{n+1}]\to [D_n\to D_n]</math> jest funkcją <math>\lambda g.p_n \circ g\circ e_n</math>.
Niech <math>D_{\infty}</math> będzie granicą diagramu
[[Grafika:Diag13.15a.png]]
w <math>\mathbf{Dcpo}</math>. Wówczas <math>D_{\infty}\cong [D_{\infty}\to D_{\infty}]</math>.

Aktualna wersja na dzień 22:18, 11 wrz 2023

Twierdzenie o istnieniu granic w Dcpo

Udowodnijmy teraz podstawowe twierdzenie na temat diagramów w kategorii Dcpo.

Twierdzenie. W Dcpo istnieją granice dowolnych diagramów.

Dowód: Dowód przeprowadzimy dla szczególnego diagramu:

(Dowód ogólny jest analogiczny lecz wymaga bardziej technicznego zapisu, wiec go pominiemy.) Pokażemy, że granica powyższego diagramu jest dana jako

D={(x0,x1,...)(nω)(fn(xn+1)=xn)}.

Zauważmy, że zbiór D jest posetem, w którym elementy są uporządkowane po współrzędnych (to znaczy, że porządek jest dziedziczony z produktu ΠnωDn. Jeśli GD jest zbiorem skierowanym, to dla każdego nωzbiór πn[G]={xnxG}jest skierowanym podzbiorem Dn. Niech yn={xnxG}. Z ciągłości funkcji tworzących diagram mamy: fn(yn+1)=fn({xn+1xG})={xnxG}=yn. To znaczy, że (y0,y1,...)D i, jak łatwo zauważyć, element ten jest supremum skierowanym zbioru G. Pokazaliśmy więc, że D Dcpo.

Udowodnimy teraz, że D wraz z projekcjami {πn:DDnnω} jest granicą. Po pierwsze, dla GD mamy

πn(G)=yn={xnxG}=πn[G]

a więc projekcje są ciągłe. Po drugie, jeśli {gk:EDkkω} jest dowolną inną granicą, to zdefiniujmy h:ED jako h(x)=(g0(x),g1(x),...). Z definicji powyższej wynika, że dla każdego kω mamy $\pi_k \circ h = g_k</math>. Zauważmy, że to świadczy o jednoznaczności wyboru h. A zatem D jest granicą omawianego diagramu. Co więcej, z jednoznaczności granicy wnioskujemy, że DE. QED

Uwaga! Powyższe twierdzenie nie zachodzi dla klas dziedzin ciągłych i algebraicznych w ogólności. Aby granica była również posetem odpowiedniej klasy, musimy nałożyć poewne restrykcje zarówno na kształ diagramów, jak i na własności funkcji tworzących diagram.

Twierdzenie o zgodności granicy prostej i odwrotnej

Przedstawimy teraz twierdzenie o zgodności granicy prostej i odwrotnej pewnych szczególnych diagramów w kategorii posetów zupełnych. Wynik ten jest znany w literaturze angielskojęzycznej jako limit-colimt coincidence i jest jednym z kamieni milowych w teorii dziedzin. Twierdzenie to wykorzystuje się przede wszystkim przy rozwiązywaniu tak zwanych rekursywnych równań dziedzinowych (ang. recursive domain equations). Przykładem takiego równania jest D[DD]. Okazuje się, że jego nietrywialne rozwiązania istnieja! Tak więc istnieją posety, które są izomorficzne z przestrzenią swoich ciągłych endofunkcji! Jeden z takich częściowych porządków skonstruujemy poniżej, pod koniec wykładu.

Twierdzenie. Rozważmy diagram F w kategorii Dcpo taki, że:

1. Wierzchołkami F są posety D0,D1,D2,...;

2. Dla nm istnieją funkcje emn:DnDm i pnm:DmDn tworzące parę e-p; 3. Dla każdego nω mamy enn=1Dn;

4. Dla nmk mamy ekn=ekmemn oraz pnk=pnmpmk.

Zdefiniujmy:

D={(x0,x1,...)(nm)(xn=pnm(xm))}

pm:DDm,  (x0,x1,...)xm, mω

em:DmD, x(kn,mpnkekm(x)nω).

Wtedy:

5. Para (em,pm) jest parą e-p i zachodzi nωenpn=1D,

6.{pn:DDn} jest granicą diagramu F. Jeśli {gn:CDn} jest dowolną inną granicą, to izmorfizm h:CD jest dany jako h(x)=(gn(x)nω) lub h=nengn;

7.{en:DnD} jest granicą odwrotną diagramu F. Jeśli {fn:EDn} jest dowolną inną granicą, to izmorfizm f:DE jest dany jako f(xnnω)=nfn(xn) lub f=nfnpn.

Dowód: W Twierdzeniu ??? pokazaliśmy już, że granicą diagramu jest {pn:DDn} i że izomorfizm h:CD ma (pierwszą z) postulowanych postaci. Pokażmy teraz, że funkcje em są dobrze zdefiniowane, tj. że y=em(x) należy do D dla dowolnego mω. Niech m będzie dowolne i załóżmy, że nn. Mamy:

pnn(yn)=pnn(kn,mpnkekm(x))=kn,mpnnpnkekm(x)=kn,mpnkekm(x)=yn.

W dowodzie korzystaliśmy kolejno z: definicji yn, ciągłości pnn i definicji yn. A zatem y=(y0,y1,...)D. Co więcej, funkcje em są ciągłe, gdyż tylko funkcje ciągłe zostały użyte w ich definicji.

Przejdźmy do dowodu (5). Niech mω. Mamy:


empm(xnnω)=em(xm)=(kn,mpnkekm(xm)nω)=(kn,mpnkekmpmk(xk)nω)(kn,mpnk(xk)nω)=(knpnk(xk)nω)=(xnnω).

Ponadto, pmem(x)=pm(kn,mpnkekm(x)nω)=kmpmkekm(x)=x.

Bliższa analiza pokazuje, że empm pozostawi niezmienione te elementy ciągu (xnnω) gdzie nm:

pn(empm(xnnω))=...=pn(kn,mpnkekmpmk(xk)nω)=pn(kn,mpnmpmkekmpmk(xk)nω)=pn(kn,mpnmpmk(xk)nω)=pn(knpnk(xk)nω)=pn(knxnnω)=pn(xnnω)=xn.

To dowodzi, że nenpn=1D, czyli (5).

Korzystając z powyższego mamy też natychmiast:

h=1Dh=nEnpnh=emgn

co kończy dowód (6).

Do pokazania pozostała nam (7), czyli fakt, że {en:DnD} jest granicą odwrotną diagramu F Jeśli {fn:EDn} jest dowolną inną granicą, to sprawdźmy najpierw czy funkcja f=nfnpn jest dobrze zdefiniowana, tj. czy supremum jest nad zbiorem skierowanym. Ale tak jest, ponieważ dla nm:

fnpn=fmemnpnmpmfmpm.

Co więcej,

fem=nmfnpnem=nmfnpnenenm=nmfnenm=nmfm=fm.

W końcu pokażemy, że funkcja f o podanych własnościach jest tylko jedna. Jeśli dla f:DE zachodzi fem=fm, to fempm=fmpm, a zatem mfempm=mfmpm czyli z ciągłości f: f(mempm)=mfmpm. Ale mempm=1D oraz mfmpm=f co daje f1D=f czyli f=f. QED.

Kategoria DcpoEP

W tej kategorii obiektami są posety zupełne posiadające element najmniejszy, zaś morfizmami są pary e-p, o których była mowa na początku wykładu ???. Złożenie morfizmów

definiujemy w naturalny sposób jako morfizm

Czy (e2e1,p1p2) jest parą e-p? Tak, ponieważ: e2e1p1p2e21Ep2=e2p21F oraz p1p2e2e1=p11Ee1=p1e1=1D. A zatem złożenie par e-p jest dobrze zdefiniowane, a co za tym idzie, i co łatwo już teraz pokazać, DcpoEP jest kategorią.

Definicja. Nazwijmy ω-kategorią każdą kategorię, w której diagram postaci

posiada granicę odwrotną.


Zauważmy, że twierdzenie o zgodności granicy prostej i odwrotnej (Twierdzenie ???) mówi, że DcpoEP jest ω-kategorią!

Definicja. Funktor F między ω-kategoriami nazywamy ciągłym, jeśli zachowuje granice odwrotne, t.j. jeśli D jest granicą diagramu ???, to F(D) jest granicą diagramu

Lemat. Niech 𝐀 będzie ω-kategorią, F:𝐀𝐀 funktorem ciągłym, f:AF(A) morfizmem w 𝐀 oraz niech diagram


posiada granicę odwrotną D. Wówczas DF(D).


Dowód: Skoro D jest granicą odwrotną diagramu ???, to

komutuje. W szczególności

komutuje i jak łatwo zauważyć D jest jego granicą. Ale z ciągłości F mamy, że diagram

komutuje i F(D) jest jego granicą. A zatem DF(D) wynika z Lematu ???. QED.

Przykład. Przekątna Δ:𝐃𝐜𝐩𝐨𝐃𝐜𝐩𝐨×𝐃𝐜𝐩𝐨, a(a,a); f(f,f) dla a𝐃𝐜𝐩𝐨0 f𝐃𝐜𝐩𝐨1 jest ciągłym funktorem.

Lokalna ciągłość funktorów

Ciągłość funktora jest często niełatwa do sprawdzenia. Na szczęście istnieje własność mocniejsza, która jest łatwiej weryfikowalna: lokalna ciągłość.

Definicja. Funktor F:𝒟 pomiędzy kategoriami posetów 𝒟, jest \mathit{ lokalnie ciągły} jeśli przekształcenia fF(f) typu Hom(D,D)Hom(F(D),F(D)) są ciągłe w sensie Scotta dla każdej pary obiektów D,D𝒟0.

Dla przykładu przeczytajmy tę definicję dla bifunktora F:𝐃𝐜𝐩𝐨op×𝐃𝐜𝐩𝐨𝐃𝐜𝐩𝐨: funktor F jest lokalnie ciągły, jeśli dla dowolnych zbiorów skierowanych A[D2D1] i B[D3D4], gdzie D1,...,D4𝐃𝐜𝐩𝐨0 mamy F(A,B)=fA,gGF(f,g). Zauważmy, że supremum po prawej stronie istnieje w [F(D1,D3)F(D2,D4)].

Przykład. Eksponent [__]:𝐃𝐜𝐩𝐨op×𝐃𝐜𝐩𝐨𝐃𝐜𝐩𝐨 jest lokalnie ciągły, ponieważ [fg]=curry(gev(1×f)) jest złożeniem funkcji ciągłych w sensie Scotta.

Lemat. Niech funktor F:𝐃𝐜𝐩𝐨op×𝐃𝐜𝐩𝐨𝐃𝐜𝐩𝐨 będzie lokalnie ciągły. Wtedy istnieje ciągły funktor F^:DcpoEP×DcpoEPDcpoEP którego działanie na obiekty jest takie samo, jak funktora F.

Dowód: Połóżmy F^(a,b)=F(a,b), gdzie a,b są posetami ciągłymi z elementami najmniejszymi. Rozważmy pary e-p:

Możemy wówczas stworzyć diagram

i para morfizmów powyżej jest parą e-p. Rzeczywiście: F(e,s)F(p,j)=F(pe,sj)=F(1a,1b)=1F(a,b)). Wykorzystaliśmy kolejno: kontrawariantność F dla pierwszego argumentu, własności par e-p i definicję funktora. Ponadto, F(p,j)F(e,s)=F(ep,js)F(1a,1b)=1F(a,b). Wykorzystaliśmy kolejno: definicję funktora, monotoniczność F, która wynika z lokalnej ciągłości i w końcu definicję F jeszcze raz.

Zdefiniujmy zatem F^((e,p),(j,s))=(F(p,j),F(e,s)). Oczywiście,\ F^ jest funktorem. Aby pokazać ciągłość, załóżmy, że mamy w DcpoEP×DcpoEP diagram

(A1,B1)(A2,B2)(A3,B3)...

który ma granicę odwrotną (D,E). A to znaczy, że w 𝐃𝐜𝐩𝐨 mamy dwa diagramy:

A1A2A3...

i

B1B2B3...

których granicami są odpowienio D i E Z twierdzenia o koincydencji granicy prostej i odwrotnej (Twierdzenie ???) wiemy, że zachodzi 1D=nenpn oraz 1E=njnsn, a więc 1(D,e)=(enpn,jnsn). Aplikując lokalną ciągłość F do ostatniej równości mamy

1F^(D,E)=F^(1(D,e))=(F(1D,1E),F(1D,1E))=(F(enpn,jnsn),F(enpn,jnsn)).

Ale Twierdzenie ??? mówi, że ostatnia równość charakteryzuje granicę odwrotną diagramu w DcpoEP:

F^(A1,B1)F^(A2,B2)F^(A3,B3)...

a zatem F^(D,E)=F(D,E) jest tą szukaną granicą odwrotną, co należało pokazać. QED.

Twierdzenie Scotta

Zgodnie z poprzednim twierdzeniem możemy zdefiniować Eksponent Exp:DcpoEP×DcpoEPDcpoEP jako [__]^, który jest ciągły (ponieważ eksponent [__] jest lokalnie ciągły). Rozważmy złożenie:

Definiuje ono funktor ciągły F (jako złożenie dwóch funktorów ciągłych). Jak on działa? Rozważmy parę:

Mamy F(P)=ExpΔ(P)=Exp(P,P)=[__](P,P)=[PP] Podobnie F(Q)=[QQ] Działanie na morfizmach:

F(e,p)=Exp((e,p),(e,p))=([__](p,e),[__](e,p))=([pe],[ep]).

A zatem otrzymujemy:

Wiemy już, że para funkcji powyżej tworzy parę e-p! Przypomnijmy jeszcze raz jak działają funkcje [pe] i [ep] na elementy z odpowiednio [PP] i [QQ]: przykładowo, dla f[PP] mamy dla qQ

[pe](f)(q)=curry(eev(1×p))(f)(q)=(eev(1×p))(f,q)=e(ev((f,p(q))))=e(f(p(q)))=efp(q)

to znaczy [pe](f)=efp Podobnie [ep](g)=pge dla g[QQ].

Zauważmy w końcu, że dla dowolnego posetu zupełnego P, jeśli jako e:PF(P) weźmiemy funkcję yλx.y, zaś jako p:F(P)P weźmiemy funkcję ff(), to para (e,p) jest parą e-p typu PF(P).

A zatem otrzymujemy końcowy wniosek:

Twierdzenie (Dana Scott). Niech P będzie posetem zupełnym z elementem najmniejszym . Zdefiniujmy diagram w 𝐃𝐜𝐩𝐨 jak następuje:

gdzie

1. D0=P; Dn+1=[DnDn]

2. e0:P[PP] jest funkcją λy.λx.y; p0:[PP]P jest funkcją λf.f().

3.en+1:[DnDn]=Dn+1[Dn+1Dn+1] jest funkcją λf.enfpn; pn+1:[Dn+1Dn+1][DnDn] jest funkcją λg.pngen.


Niech D będzie granicą diagramu

w 𝐃𝐜𝐩𝐨. Wówczas D[DD].