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>”
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 92: Linia 92:


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

Wersja z 11:12, 5 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].