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

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
m Zastępowanie tekstu – „ </math>” na „</math>”
m Zastępowanie tekstu – „<math> ” na „<math>”
 
(Nie pokazano 1 pośredniej wersji utworzonej przez tego samego użytkownika)
Linia 11: Linia 11:
(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'''.
Linia 17: Linia 17:
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
Linia 42: 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>
Linia 79: Linia 79:
Korzystając z powyższego mamy też natychmiast:
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>
<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).
co kończy dowód (6).
Linia 89: Linia 89:
Co więcej,  
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>
<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
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.
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> ==
== Kategoria <math>\mathrm{Dcpo}^{EP}_{\bot}</math> ==
Linia 176: Linia 176:
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
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>
<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
który ma granicę odwrotną <math>(D,E)</math>. A to znaczy, że w <math>\mathbf{Dcpo}</math> mamy
Linia 185: Linia 185:
i
i


<math>B_1\to B_2\to B_3\to...,</math>
<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
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
Linia 217: Linia 217:
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>
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>
<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>.   
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>.   

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].