Logika dla informatyków/Zdaniowa logika dynamiczna: Różnice pomiędzy wersjami
mNie podano opisu zmian |
m Zastępowanie tekstu – „.↵</math>” na „</math>” |
||
(Nie pokazano 9 wersji utworzonych przez 2 użytkowników) | |||
Linia 19: | Linia 19: | ||
logiki zdaniowej, logiki modalnej oraz algebry wyrażeń | logiki zdaniowej, logiki modalnej oraz algebry wyrażeń | ||
regularnych. Język PDL zawiera wyrażenia dwóch rodzajów: | regularnych. Język PDL zawiera wyrażenia dwóch rodzajów: | ||
''zdania'' (lub formuły) <math> | ''zdania'' (lub formuły) <math>\varphi,\psi,\ldots</math> oraz | ||
''programy'' <math> | ''programy'' <math>\alpha,\beta,\gamma,\ldots</math>. Zakładamy, że mamy do | ||
dyspozycji przeliczalnie wiele atomowych symboli każdego | dyspozycji przeliczalnie wiele atomowych symboli każdego | ||
rodzaju. ''Programy atomowe'' są oznaczane przez <math> | rodzaju. ''Programy atomowe'' są oznaczane przez <math>a,b,c,\ldots</math>, | ||
a zbiór wszystkich atomowych programów oznaczamy przez | a zbiór wszystkich atomowych programów oznaczamy przez | ||
<math> | <math>\Pi_0</math>. | ||
Programy są budowane z programów atomowych przy użyciu operacji | Programy są budowane z programów atomowych przy użyciu operacji | ||
''złożenia'' <math> | ''złożenia'' <math>(;)</math>, ''niedeterministycznego wyboru'' | ||
<math> | <math>(\cup)</math> oraz ''iteracji'' <math>(^*)</math>. Intuicyjnie wykonanie | ||
programu <math> | programu <math>\alpha;\beta</math> oznacza wykonanie <math>\alpha</math>, a następnie | ||
wykonanie na danych wyprodukowanych przez <math> | wykonanie na danych wyprodukowanych przez <math>\alpha</math> programu | ||
<math> | <math>\beta</math>. Wykonanie programu <math>\alpha\cup\beta</math> oznacza | ||
niedeterministyczny wybór wykonania <math> | niedeterministyczny wybór wykonania <math>\alpha</math> lub <math>\beta</math>. Natomiast | ||
wykonanie programu <math> | wykonanie programu <math>\alpha^*</math> oznacza wykonanie <math>\alpha</math> pewną | ||
liczbę razy, być może zero. Ponadto mamy operację ''testowania'' | liczbę razy, być może zero. Ponadto mamy operację ''testowania'' | ||
tworzącą z każdej formuły <math> | tworzącą z każdej formuły <math>\varphi</math> nowy program <math>\varphi?</math>. Wykonanie | ||
programu <math> | programu <math>\varphi?</math> jest możliwe tylko wtedy, gdy warunek <math>\varphi</math> | ||
zachodzi. Z drugiej strony, formuły mogą odwoływać się do dowolnego | zachodzi. Z drugiej strony, formuły mogą odwoływać się do dowolnego | ||
programu <math> | programu <math>\alpha</math> poprzez | ||
''modalność konieczności'' <math> | ''modalność konieczności'' <math>[\alpha]</math>: | ||
dla dowolnego zdania <math> | dla dowolnego zdania <math>\varphi</math>, napis | ||
<center><math> | <center><math>[\alpha]\varphi | ||
</math></center> | </math></center> | ||
czytamy "po (każdym) wykonaniu programu <math> | czytamy "po (każdym) wykonaniu programu <math>\alpha</math> koniecznie musi | ||
zajść <math> | zajść <math>\varphi</math>". | ||
{{definicja|10.1|| | {{definicja|10.1|| | ||
Definicja formuł i programów jest wzajemnie rekurencyjna. Definiujemy | Definicja formuł i programów jest wzajemnie rekurencyjna. Definiujemy | ||
zbiór programów <math> | zbiór programów <math>\Pi</math> oraz zbiór formuł <math>\Phi</math> jako najmniejsze zbiory | ||
spełniające następujące warunki | spełniające następujące warunki | ||
* <math> | * <math>ZZ\subseteq\Phi</math> | ||
* <math> | * <math>\Pi_0\subseteq\Pi</math> | ||
* jeśli <math> | * jeśli <math>\varphi,\psi\in\Phi</math>, to <math>\varphi\to\psi\in\Phi</math> oraz <math>\bot\in\Phi</math> | ||
* jeśli <math> | * jeśli <math>\alpha,\beta\in \Pi</math>, to <math>(\alpha;\beta)</math>,<math>(\alpha\cup\beta)</math>, oraz <math>\alpha^*\in\Pi</math> | ||
* jeśli <math> | * jeśli <math>\alpha\in\Pi</math> oraz <math>\varphi\in\Phi</math>, to <math>[\alpha]\varphi\in\Phi</math> | ||
* jeśli <math> | * jeśli <math>\varphi\in\Phi</math>, to <math>\varphi?\in\Pi</math>. | ||
}} | }} | ||
Aby uniknąć pisania zbyt wielu nawiasów, stosujemy następujące | Aby uniknąć pisania zbyt wielu nawiasów, stosujemy następujące | ||
priorytety: | priorytety: | ||
* Jednoargumentowe operatory (wliczając <math> | * Jednoargumentowe operatory (wliczając <math>[\alpha]</math> ) wiążą silniej niż dwuargumentowe. | ||
* Operator <math> | * Operator <math>;</math> wiąże silniej niż <math>\cup</math>. | ||
* Spójniki logiczne mają takie same priorytety jak zdefiniowano wcześniej. | * Spójniki logiczne mają takie same priorytety jak zdefiniowano wcześniej. | ||
Tak więc wyrażenie | Tak więc wyrażenie | ||
<center><math> | <center><math>[\alpha;\beta^* \cup \gamma^*]\varphi\vee\psi | ||
</math></center> | </math></center> | ||
odpowiada następującemu wyrażeniu z nawiasami | odpowiada następującemu wyrażeniu z nawiasami | ||
<center><math> | <center><math>([(\alpha;\beta^*)\cup\gamma^*]\varphi)\vee\psi</math></center> | ||
</math></center> | |||
Ponieważ operatory <math> | Ponieważ operatory <math>;</math> oraz <math>\cup</math> okażą się być łączne, więc zwyczajowo będziemy opuszczać nawiasy w wyrażeniach typu <math>\alpha;\beta;\gamma</math> | ||
lub <math> | lub <math>\alpha\cup\beta\cup\gamma</math>. | ||
Przypomnijmy, że negacja <math> | Przypomnijmy, że negacja <math>\neg\varphi</math> jest skrótem formuły | ||
<math> | <math>\varphi\to\bot</math>. Dualnie do [ ] definiujemy ''modalność możliwości'' | ||
<center><math> | <center><math>\langle\alpha\rangle\varphi := \neg[\alpha]\neg\varphi</math></center> | ||
Zdanie <math> | Zdanie <math>\langle\alpha\rangle\varphi</math> czytamy "istnieje obliczenie programu <math>\alpha</math>, które zatrzymuje się w stanie spełniającym formułę <math>\varphi</math>". Istotną różnicą pomiędzy modalnościami [ ] i <math>\langle \rangle</math> jest to, że <math>\langle\alpha\rangle\varphi</math> implikuje iż program <math>\alpha</math> się zatrzymuje, podczas gdy <math>\left [\alpha\right ]\varphi</math> nie gwarantuje zatrzymania się programu <math>\alpha</math>. W szczególności formuła <math>[\alpha]\bot</math> wyraża własność mówiącą, że żadne obliczenie programu <math>\alpha</math> nie zatrzymuje się. Natomiast | ||
formuła <math> | formuła <math>\langle\alpha\rangle\bot</math> jest zawsze fałszywa. | ||
Przejdziemy teraz do zdefiniowania semantyki. Podstawową strukturą semantyczną dla PDL jest tzw. struktura Kripkego. | Przejdziemy teraz do zdefiniowania semantyki. Podstawową strukturą semantyczną dla PDL jest tzw. struktura Kripkego. | ||
Linia 90: | Linia 89: | ||
{{definicja|10.2|def10.2| | {{definicja|10.2|def10.2| | ||
''Struktura Kripkego'' jest uporządkowaną parą <math> | ''Struktura Kripkego'' jest uporządkowaną parą <math>\mathfrak{K} = \langle K,\mathrm{m}_{\mathfrak{K}\rangle</math>, gdzie <math>K</math> jest zbiorem elementów <math>u,v,w,\ldots</math> zwanych ''stanami'', a <math>\mathrm{m}_{\mathfrak{K}</math> jest funkcją przyporządkowującą każdemu atomowemu zdaniu <math>p\in ZZ</math>, podzbiór <math>{\mathrm{m}_{\mathfrak{K}}(p)\subseteq K</math> oraz każdemu atomowemu programowi <math>a\in\Pi_0</math> relację binarną <math>{\mathrm{m}_{\mathfrak{K}}(a)\subseteq K\times K</math>. | ||
}} | }} | ||
Poniżej funkcję <math> | Poniżej funkcję <math>\mathrm{m}_{\mathfrak{K}</math> rozszerzymy do dowolnych formuł i dowolnych programów. Intuicyjnie dla formuły <math>\varphi</math>, zbiór stanów <math>{\mathrm{m}_{\mathfrak{K}}(\vrphi)</math> | ||
jest zbiorem wszystkich stanów struktury <math> | jest zbiorem wszystkich stanów struktury <math>\mathfrak{K}</math>, w których <math>\varphi</math> jest spełniona. Natomiast dla programu <math>\alpha</math>, relacja <math>{\mathrm{m}_{\mathfrak{K}}(\alpha)</math> jest | ||
tzw. relacją wejścia-wyjścia programu <math> | tzw. relacją wejścia-wyjścia programu <math>\alpha</math> w strukturze <math>\mathfrak{K}</math>. | ||
{{definicja|10.3|def10.3| | {{definicja|10.3|def10.3| | ||
Linia 105: | Linia 104: | ||
|<math>:= (K-{\mathrm{m}_\mathfrak{K}}(\varphi)\cup{\mathrm{m}_\mathfrak{K}}(\psi)</math> | |<math>:= (K-{\mathrm{m}_\mathfrak{K}}(\varphi)\cup{\mathrm{m}_\mathfrak{K}}(\psi)</math> | ||
|- | |- | ||
|<math>{\mathrm{m}_\mathfrak{K}}(\bot) </math> | |<math>{\mathrm{m}_\mathfrak{K}}(\bot)</math> | ||
|<math>\ := \emptyset</math> | |<math>\ := \emptyset</math> | ||
|- | |- | ||
|<math>{\mathrm{m}_\mathfrak{K}}([\alpha]\varphi) </math> | |<math>{\mathrm{m}_\mathfrak{K}}([\alpha]\varphi)</math> | ||
|<math>\ := \left\{u| \forall v\in K(\langle u,v\rangle\in {\mathrm{m}_\mathfrak{K}}(\alpha) \Rightarrow v\in{\mathrm{m}_\mathfrak{K}}(\varphi))\right\}</math> | |<math>\ := \left\{u| \forall v\in K(\langle u,v\rangle\in {\mathrm{m}_\mathfrak{K}}(\alpha) \Rightarrow v\in{\mathrm{m}_\mathfrak{K}}(\varphi))\right\}</math> | ||
|- | |- | ||
|<math>{\mathrm{m}_\mathfrak{K}}(\alpha;\beta) </math> | |<math>{\mathrm{m}_\mathfrak{K}}(\alpha;\beta)</math> | ||
|<math>:= \left\{\langle u,v\rangle | \exists w\in K(\langle u,v\rangle\in {\mathrm{m}_\mathfrak{K}}(\alpha) \wedge \langle w,v\rangle\in {\mathrm{m}_\mathfrak{K}}(\beta))\right\}</math> | |<math>:= \left\{\langle u,v\rangle | \exists w\in K(\langle u,v\rangle\in {\mathrm{m}_\mathfrak{K}}(\alpha) \wedge \langle w,v\rangle\in {\mathrm{m}_\mathfrak{K}}(\beta))\right\}</math> | ||
|- | |- | ||
|<math>{\mathrm{m}_\mathfrak{K}}(\alpha\cup\beta) </math> | |<math>{\mathrm{m}_\mathfrak{K}}(\alpha\cup\beta)</math> | ||
|<math>:= {\mathrm{m}_\mathfrak{K}}(\alpha)\cup{\mathrm{m}_\mathfrak{K}}(\beta)</math> | |<math>:= {\mathrm{m}_\mathfrak{K}}(\alpha)\cup{\mathrm{m}_\mathfrak{K}}(\beta)</math> | ||
|- | |- | ||
|<math>{\mathrm{m}_\mathfrak{K}}(\alpha^*) </math> | |<math>{\mathrm{m}_\mathfrak{K}}(\alpha^*)</math> | ||
|<math>:=\bigcup_{n \geq 0}{\mathrm{m}_\mathfrak{K}}(\alpha)^n</math> | |<math>:=\bigcup_{n \geq 0}{\mathrm{m}_\mathfrak{K}}(\alpha)^n</math> | ||
|- | |- | ||
|<math>{\mathrm{m}_\mathfrak{K}}(\varphi?) </math> | |<math>{\mathrm{m}_\mathfrak{K}}(\varphi?)</math> | ||
|<math>:= \left\{\langle u,v\rangle | u \in {\mathrm{m}_\mathfrak{K}}(\varphi)\right} | |<math>:= \left\{\langle u,v\rangle | u \in {\mathrm{m}_\mathfrak{K}}(\varphi)\right}</math>. | ||
|} | |} | ||
</center> | </center> | ||
Linia 127: | Linia 126: | ||
{{definicja|10.4|| | {{definicja|10.4|| | ||
Powiemy, że formuła <math> | Powiemy, że formuła <math>\varphi</math> jest ''spełniona'' w stanie <math>u</math> struktury <math>\mathfrak{K}</math>, gdy <math>u \in {\mathrm{m}_\mathfrak{K}}(\varphi)</math>. Podobnie jak w logice | ||
pierwszego rzędu spełnianie zapisujemy następująco <math> | pierwszego rzędu spełnianie zapisujemy następująco <math>(\mathfrak{K},u) \vDash | ||
\varphi</math>. Gdy z kontekstu wynika o jaką strukturę chodzi, to możemy po | \varphi</math>. Gdy z kontekstu wynika o jaką strukturę chodzi, to możemy po | ||
prostu pisać <math> | prostu pisać <math>u\vDash\varphi</math>. | ||
Powiemy, że formuła <math> | Powiemy, że formuła <math>\varphi</math> jest ''prawdziwa'' w strukturze | ||
<math> | <math>\mathfrak{K}</math>, gdy jest spełniona w każdym stanie tej struktury. Zapisujemy | ||
to <math> | to <math>\mathfrak{K}\vDash\varphi</math>. Formuła <math>\varphi</math> jest ''tautologią'' PDL, gdy jest ona prawdziwa w każdej strukturze Kripkego. Wreszcie powiemy, że | ||
formuła <math> | formuła <math>\varphi</math> jest ''spełnialna'', gdy istnieje struktura | ||
Kripkego <math> | Kripkego <math>\mathfrak{K}</math>, taka że <math>\varphi</math> jest spełniona w przynajmniej jednym stanie <math>\mathfrak{K}</math>. | ||
}} | }} | ||
{{przyklad|10.5|| | {{przyklad|10.5|| | ||
}} | }} | ||
Niech <math> | Niech <math>p</math> będzie zmienną zdaniową oraz niech <math>a</math> będzie atomowym programem. Niech <math>\mathfrak{K} = (K,\mathrm{m}_\mathfrak{K})</math> będzie taką strukturą Kripkego, że | ||
<center> | <center> | ||
{| border="0" cellpadding="0" cellspacing="5" | {| border="0" cellpadding="0" cellspacing="5" | ||
Linia 156: | Linia 155: | ||
</center> | </center> | ||
Nastepujący diagram ilustruje <math> | Nastepujący diagram ilustruje <math>\mathfrak{K}</math>. | ||
[[Image:Przykład105.PNG|250px|center]] | [[Image:Przykład105.PNG|250px|center]] | ||
W tej strukturze mamy <math> | W tej strukturze mamy <math>u\vDash\langle a\rangle\neg p\wedge\langle a \rangle p</math>, ale <math>v\vDash[a]\neg p</math> oraz <math>w\vDash[a]p</math>. Ponadto każdy stan struktury <math>\mathfrak{K}</math> spełnia następującą formułę | ||
<center><math> | <center><math>\langle a^* \rangle[(aa)^*]p \wedge \langle a^* \rangle[(aa)^*]\neg p</math></center>. | ||
{{przyklad|10.6|| | {{przyklad|10.6|| | ||
}} | }} | ||
Niech <math> | Niech <math>p,q</math> będą zmiennymi zdaniowymi i niech <math>a,b</math> będą atomowymi programami. Ponadto niech <math>\mathfrak{K} = (K,\mathrm{m}_\mathfrak{K})</math> będzie strukturą Kripkego | ||
zdefiniowaną następująco | zdefiniowaną następująco | ||
<center> | <center> | ||
Linia 186: | Linia 185: | ||
</center> | </center> | ||
Następujący rysunek ilustruje <math> | Następujący rysunek ilustruje <math>\mathfrak{K}</math>. | ||
[[Image:przykład106.PNG|250px|center]] | [[Image:przykład106.PNG|250px|center]] | ||
Następujące formuły są prawdziwe w <math> | Następujące formuły są prawdziwe w <math>\mathfrak{K}</math>. | ||
<center><math> | <center><math> | ||
Linia 194: | Linia 193: | ||
</math></center> | </math></center> | ||
<center><math> | <center><math> | ||
q \leftrightarrow [(ba^*b)^*]q | q \leftrightarrow [(ba^*b)^*]q</math></center> | ||
</math></center> | Ponadto niech <math>\alpha</math> będzie programem | ||
Ponadto niech <math> | |||
{{kotwica|war14|}} | {{kotwica|war14|}} | ||
<center><math> | <center><math>\alpha = (aa\cup bb\cup(ab\cup ba)(aa\cup bb)^*(ab\cup | ||
ba))^*.\qquad\qquad\qquad (14) | ba))^*.\qquad\qquad\qquad (14) | ||
</math></center> | </math></center> | ||
Program <math> | Program <math>\alpha</math> traktowany jako wyrażenie regularne, | ||
generuje wszystkie słowa nad alfabetem <math> | generuje wszystkie słowa nad alfabetem <math>\{a,b\}</math> o parzystej liczbie | ||
wystąpień <math> | wystąpień <math>a</math> oraz <math>b</math>. Można pokazać, że dla dowolnego zdania <math>\varphi</math>, formuła <math>\varphi\leftrightarrow[\alpha]\varphi</math> jest prawdziwa w <math>\mathfrak{K}</math>. | ||
Zauważmy, że operator <math>^*</math> jest z natury infinitarny. Z definicji | Zauważmy, że operator <math>^*</math> jest z natury infinitarny. Z definicji | ||
domknięcie zwrotne i przechodnie relacji jest nieskończoną sumą. Z | domknięcie zwrotne i przechodnie relacji jest nieskończoną sumą. Z | ||
Linia 210: | Linia 208: | ||
zbiór | zbiór | ||
<center><math> \{\langle\alpha^*\rangle\varphi\} \cup \{\neg\varphi, \neg\langle\alpha\rangle\varphi, | <center><math>\{\langle\alpha^*\rangle\varphi\} \cup \{\neg\varphi, \neg\langle\alpha\rangle\varphi, | ||
\neg\langle\alpha^2\rangle\varphi, \ldots\} | \neg\langle\alpha^2\rangle\varphi, \ldots\} | ||
</math></center> | </math></center> | ||
Linia 237: | Linia 235: | ||
\neg\langle\alpha\rangle\neg\varphi</math>. | \neg\langle\alpha\rangle\neg\varphi</math>. | ||
}} | }} | ||
Implikacje odwrotne w [[#twier10.7|Twierdzeniu 10.7]] <math>(iii) - (v)</math> nie zachodzą. Przykładowo implikacja odwrotna do <math>(iv)</math> nie jest spełniona w stanie <math> | Implikacje odwrotne w [[#twier10.7|Twierdzeniu 10.7]] <math>(iii) - (v)</math> nie zachodzą. Przykładowo implikacja odwrotna do <math>(iv)</math> nie jest spełniona w stanie <math>u</math> następującej struktury Kripkego. | ||
[[Image:Przykład107.PNG|250px|center]] | [[Image:Przykład107.PNG|250px|center]] | ||
Następna grupa tautologii, specyficzna dla PDL, dotyczy spójników | Następna grupa tautologii, specyficzna dla PDL, dotyczy spójników | ||
programotwórczych <math> | programotwórczych <math>;</math> i <math>\cup</math> oraz testu <math>?</math>. | ||
{{twierdzenie|10.8|| | {{twierdzenie|10.8|| | ||
Linia 283: | Linia 281: | ||
}} | }} | ||
Własność <math>(ii)</math> mówi, że <math> | Własność <math>(ii)</math> mówi, że <math>\alpha^*</math> jest | ||
semantycznie relacją zwrotną. Przechodniość relacji <math> | semantycznie relacją zwrotną. Przechodniość relacji <math>\alpha^*</math> jest | ||
wyrażona w <math>(vi)</math>. Natomiast fakt, że <math> | wyrażona w <math>(vi)</math>. Natomiast fakt, że <math>\alpha^*</math> zawiera relację <math>\alpha</math>, jest wyrażony w <math>(iv)</math>. Implikacja <math>\leftarrow</math> w <math>(xi)</math> wyraża zasadę indukcji. | ||
Bazą jest założenie, że własność <math> | Bazą jest założenie, że własność <math>\varphi</math> jest spełniona w pewnym stanie <math>u</math>. Warunek indukcyjny mówi, że w każdym stanie osiągalnym z <math>u</math> poprzez skończoną liczbę iteracji programu | ||
<math> | <math>\alpha</math>, kolejne wykonanie <math>\alpha</math> zachowuje własność <math>\varphi</math>. | ||
Teza stwierdza, że wówczas <math> | Teza stwierdza, że wówczas <math>\varphi</math> jest | ||
spełnione we wszystkich stanach osiągalnych w skończonej liczbie | spełnione we wszystkich stanach osiągalnych w skończonej liczbie | ||
iteracji <math> | iteracji <math>\alpha</math>. | ||
===Własność małego modelu=== | ===Własność małego modelu=== | ||
W tej części udowodnimy własność małego modelu dla PDL. Własność ta | W tej części udowodnimy własność małego modelu dla PDL. Własność ta | ||
mówi, że jeśli <math> | mówi, że jeśli <math>\varphi</math> jest spełnialna, to jest spełniona w pewnej | ||
skończonej strukturze Kripkego. Co więcej, jak będzie wynikało z | skończonej strukturze Kripkego. Co więcej, jak będzie wynikało z | ||
dowodu, struktura ta ma co najwyżej <math> | dowodu, struktura ta ma co najwyżej <math>2^{|\varphi|}</math> stanów, gdzie | ||
<math> | <math>|\varphi|</math> oznacza rozmiar formuły <math>\varphi</math>. Wynika stąd natychmiast rozstrzygalność problemu spełnialności dla PDL. Technika zastosowana w | ||
dowodzie twierdzenia o małym modelu nosi nazwę ''filtracji'' i jest | dowodzie twierdzenia o małym modelu nosi nazwę ''filtracji'' i jest | ||
od dawna stosowana w logikach modalnych. W przypadku PDL sytuację | od dawna stosowana w logikach modalnych. W przypadku PDL sytuację | ||
Linia 319: | Linia 317: | ||
przez wzajemną indukcję | przez wzajemną indukcję | ||
:<math>(a)\; FL(p)\; :=\; \{p\}</math>, gdy <math> | :<math>(a)\; FL(p)\; :=\; \{p\}</math>, gdy <math>p</math> jest zmienną zdaniową | ||
:<math>(b)\; FL(\varphi\rightarrow\psi)\; :=\; \{\varphi\rightarrow\psi\}\cup FL(\varphi)\cup FL(\psi)</math> | :<math>(b)\; FL(\varphi\rightarrow\psi)\; :=\; \{\varphi\rightarrow\psi\}\cup FL(\varphi)\cup FL(\psi)</math> | ||
:<math>(c)\; FL(\bot)\; :=\; \{\bot\}</math> | :<math>(c)\; FL(\bot)\; :=\; \{\bot\}</math> | ||
:<math>(d)\; FL([\alpha]\varphi)\; := FL^{\Box}([\alpha]\varphi)\cup FL(\varphi)</math> | :<math>(d)\; FL([\alpha]\varphi)\; := FL^{\Box}([\alpha]\varphi)\cup FL(\varphi)</math> | ||
:<math>(e)\; FL^{\Box}([a]\varphi)\; :=\; \{[a]\varphi\}</math>, gdy <math> | :<math>(e)\; FL^{\Box}([a]\varphi)\; :=\; \{[a]\varphi\}</math>, gdy <math>a</math> jest atomowym programem | ||
:<math>(f)\; FL^{\Box}([\alpha\cup\beta]\varphi)\; :=\; \{[\alpha\cup\beta]\varphi\}\cup FL^{\Box}([\alpha]\varphi)\cup FL^{\Box}([\beta]\varphi)</math> | :<math>(f)\; FL^{\Box}([\alpha\cup\beta]\varphi)\; :=\; \{[\alpha\cup\beta]\varphi\}\cup FL^{\Box}([\alpha]\varphi)\cup FL^{\Box}([\beta]\varphi)</math> | ||
:<math>(g)\; FL^{\Box}([\alpha;\beta]\varphi)\; :=\; \{[\alpha;\beta]\varphi\}\cup FL^{\Box}([\alpha][\beta]\varphi)\cup FL^{\Box}([\beta]\varphi)</math> | :<math>(g)\; FL^{\Box}([\alpha;\beta]\varphi)\; :=\; \{[\alpha;\beta]\varphi\}\cup FL^{\Box}([\alpha][\beta]\varphi)\cup FL^{\Box}([\beta]\varphi)</math> | ||
Linia 329: | Linia 327: | ||
:<math>(i)\; FL^{\Box}([\psi?]\varphi)\; :=\; \{[\psi?]\varphi\}\cup FL(\psi)</math> | :<math>(i)\; FL^{\Box}([\psi?]\varphi)\; :=\; \{[\psi?]\varphi\}\cup FL(\psi)</math> | ||
Zbiór <math> | Zbiór <math>FL(\varphi)</math> jest nazywany ''domknięciem Fischera-Ladnera''. Zauważmy, że definicja <math>FL(\varphi)</math> jest indukcyjna ze | ||
względu na budowę formuły <math> | względu na budowę formuły <math>\varphi</math>, natomiast pomocnicza funkcja <math>FL^{\Box}</math> jest określona jedynie na formułach postaci <math>[\alpha]\varphi</math> i jej definicja jest indukcyjna ze względu na budowę programu <math>\alpha</math>. Tak więc chociaż w warunku <math>(h)</math> formuła po prawej stronie definicji jest dłuższa niż po lewej, to program <math>\alpha</math> w zewnętrznej modalności jest prostszy niż <math>\alpha^*</math> i dlatego definicja ta jest dobrze ufundowana. | ||
Niech <math> | Niech <math>|\alpha|</math> oraz <math>|\varphi|</math> oznaczają | ||
długość programu <math> | długość programu <math>\alpha</math> i formuły <math>\varphi</math> rozumianą jako liczbę wystąpień symboli nie licząc nawiasów. | ||
<!--Dla dowolnego zbioru <math> | <!--Dla dowolnego zbioru <math>X</math>, przez <math>|X|</math> oznaczamy moc zbioru <math>X</math>. --> | ||
Następujący lemat podaje ograniczenie górne na moc domknięcia Fischera-Ladnera. | Następujący lemat podaje ograniczenie górne na moc domknięcia Fischera-Ladnera. | ||
{{lemat|10.10|lem10.10| | {{lemat|10.10|lem10.10| | ||
:<math>(i)\;\;</math> ''Dla dowolnej formuły'' <math> | :<math>(i)\;\;</math> ''Dla dowolnej formuły'' <math>\varphi</math> ''mamy'' <math>|FL(\varphi)| \leq |\varphi|</math>. | ||
:<math>(ii)\;</math> ''Dla dowolnej formuły'' <math> | :<math>(ii)\;</math> ''Dla dowolnej formuły'' <math>[\alpha]\varphi</math> ''mamy'' <math>|FL^{\Box}([\alpha]\varphi}| \leq |\alpha|</math>. | ||
}} | }} | ||
Linia 345: | Linia 343: | ||
{{dowod||| | {{dowod||| | ||
Dowód jest przez jednoczesną indukcję ze względu na schemat definiujący | Dowód jest przez jednoczesną indukcję ze względu na schemat definiujący | ||
<math> | <math>FL</math> oraz <math>FL^{\Box}</math>. Pozostawimy go Czytelnikowi jako ćwiczenie. | ||
}} | }} | ||
Linia 352: | Linia 350: | ||
{{lemat|10.11|lem10.11| | {{lemat|10.11|lem10.11| | ||
:<math>(i)</math> Jeśli <math> | :<math>(i)</math> Jeśli <math>\sigma\in FL(\varphi)</math>, to <math>FL(\sigma)\subseteq FL(\varphi)</math>. | ||
:<math>(ii)</math> Jeśli <math> | :<math>(ii)</math> Jeśli <math>\sigma\in FL^{\Box}([\alpha]\varphi)</math>, to | ||
<math> | <math>FL(\sigma)\subseteq FL^{\Box}([\alpha]\varphi)\cup FL(\varphi)</math>. | ||
}} | }} | ||
Linia 363: | Linia 361: | ||
}} | }} | ||
Następujące własości <math> | Następujące własości <math>FL</math> są bezpośrednią konsekwencją | ||
[[#lem10.11|Lematu 10.11]]. | [[#lem10.11|Lematu 10.11]]. | ||
{{lemat|10.12|| | {{lemat|10.12|| | ||
}} | }} | ||
:<math>(i)</math> Jeśli <math> | :<math>(i)</math> Jeśli <math>[\alpha]\psi\in FL(\varphi)</math>, to <math>\psi\in FL(\varphi)</math>. | ||
:<math>(ii)</math> Jeśli <math> | :<math>(ii)</math> Jeśli <math>[\rho?]\psi\in FL(\varphi)</math>, to <math>\rho\in FL(\varphi)</math>. | ||
:<math>(iii)</math> Jeśli <math> | :<math>(iii)</math> Jeśli <math>[\alpha\cup\beta]\psi\in FL(\varphi)</math>, to <math>[\alpha]\psi\in FL(\varphi)</math> oraz <math>[\beta]\psi\in FL(\varphi)</math>. | ||
:<math>(iv)</math> Jeśli <math> | :<math>(iv)</math> Jeśli <math>[\alpha;\beta]\psi\in FL(\varphi)</math>, to <math>[\alpha][\beta]\psi\in FL(\varphi)</math> oraz <math>[\beta]\psi\in FL(\varphi)</math>. | ||
:<math>(v)</math> Jeśli <math> | :<math>(v)</math> Jeśli <math>[\alpha^*]\psi\in FL(\varphi)</math>, to <math>[\alpha][\alpha^*]\psi\in FL(\varphi)</math>. | ||
Dla danej formuły <math> | Dla danej formuły <math>\varphi</math> oraz struktury Kripkego <math>\mathfrak{K} = (K,\mathrm{m}_{\mathfrak{K}})</math> | ||
definiujemy nową strukturę <math> | definiujemy nową strukturę <math>\mathfrak{K}/FL(\varphi) = | ||
\langle K/FL(\varphi), \mathrm{m}_{\mathfrak{K}/FL(\varphi)} \rangle</math>, zwaną ''filtracją struktury'' <math>\mathfrak{K}</math> ''przez'' <math>FL(\varphi)</math>. Najpierw definiujemy binarną relację <math> | \langle K/FL(\varphi), \mathrm{m}_{\mathfrak{K}/FL(\varphi)} \rangle</math>, zwaną ''filtracją struktury'' <math>\mathfrak{K}</math> ''przez'' <math>FL(\varphi)</math>. Najpierw definiujemy binarną relację <math>\equiv</math> | ||
w zbiorze stanów <math> | w zbiorze stanów <math>\mathfrak{K}</math>. | ||
<center> | <center> | ||
<math> | <math>u \equiv v</math> wtedy i tylko wtedy, gdy <math>\forall\psi\in FL(\varphi) (u\in \mathrm{m}_{\mathfrak{K}}(\psi) \iff v\in \mathrm{m}_{\mathfrak{K}}(\psi))</math>. | ||
</center> | </center> | ||
Innymi słowy, utożsamiamy stany <math> | Innymi słowy, utożsamiamy stany <math>u</math> oraz <math>v</math> jeśli są one nierozróżnialne przez żadną formułę ze zbioru <math>FL(\phi)</math>. Filtracja | ||
struktury jest zwykłą konstrukcją ilorazową. Niech | struktury jest zwykłą konstrukcją ilorazową. Niech | ||
<center> | <center> | ||
{| border="0" cellpadding="0" cellspacing="5" | {| border="0" cellpadding="0" cellspacing="5" | ||
|- | |- | ||
|<math> | |<math>[u]</math> | ||
|<math>:= \{v\;|\; v \equiv u\}</math> | |<math>:= \{v\;|\; v \equiv u\}</math> | ||
|- | |- | ||
Linia 405: | Linia 403: | ||
zwykły sposób na wszystkie formuły i programy. | zwykły sposób na wszystkie formuły i programy. | ||
Następujący lemat pokazuje związek pomiędzy strukturami <math> | Następujący lemat pokazuje związek pomiędzy strukturami <math>\mathfrak{K}</math> oraz | ||
<math> | <math>\mathfrak{K}/FL(\varphi)</math>. Główna trudność techniczna polega tu na sformułowaniu poprawnego założenia indukcyjnego. Sam dowód (jednoczesna indukcja) | ||
jest zupełnie rutynowy i dlatego pozostawimy go Czytelnikowi jako | jest zupełnie rutynowy i dlatego pozostawimy go Czytelnikowi jako | ||
ćwiczenie. | ćwiczenie. | ||
Linia 412: | Linia 410: | ||
{{lemat|10.13 (o filtracji)|lem10.13| | {{lemat|10.13 (o filtracji)|lem10.13| | ||
Niech <math> | Niech <math>u,v</math> będą stanami w strukturze Kripkego <math>\mathfrak{K}</math>. | ||
:<math>(i)</math> Dla dowolnej formuły <math> | :<math>(i)</math> Dla dowolnej formuły <math>\psi\in FL(\varphi)</math>, mamy <math>u\in\mathrm{m}_{\mathfrak{K}}(\psi) \iff \ [u]\in\mathrm{m}_{\mathfrak{K}/FL(\varphi)}(\psi)</math>. | ||
:<math>(ii)</math> Dla dowolnej formuły <math> | :<math>(ii)</math> Dla dowolnej formuły <math>[\alpha]\psi\in FL(\varphi)</math> zachodzi | ||
::<math>(a)</math> jeśli <math> | ::<math>(a)</math> jeśli <math>\langle u,v\rangle\in \mathrm{m}_{\mathfrak{K}}(\alpha)</math>, to <math>\langle [u],[v]\rangle\in \mathrm{m}_{\mathfrak{K}/FL(\varphi)}(\alpha)</math>; | ||
::<math>(a)</math> jeśli <math> | ::<math>(a)</math> jeśli <math>\langle [u],[v]\rangle\in \mathrm{m}_{\mathfrak{K}/FL(\varphi)}(\alpha)</math> oraz <math>u\in\mathrm{m}_{\mathfrak{K}([\alpha]\psi)</math>, to <math>v\in\mathrm{m}_{\mathfrak{K}(\psi)</math>. | ||
}} | }} | ||
Linia 425: | Linia 423: | ||
{{twierdzenie|10.14 (Własność małego modelu)|| | {{twierdzenie|10.14 (Własność małego modelu)|| | ||
Niech <math> | Niech <math>\varphi</math> będzie spełnialną formułą PDL. Wówczas <math>\varphi</math> jest spełniona w strukturze Kripkego mającej co najwyżej <math>2^{|\varphi|}</math> stanów. | ||
}} | }} | ||
{{dowod||| | {{dowod||| | ||
Jeśli <math> | Jeśli <math>\varphi</math> jest spełnialna, to istnieje struktura Kripkego <math>\mathfrak{K}</math> oraz stan <math>u\in\mathfrak{K}</math>, taki że <math>u\in\mathrm{m}_{\mathfrak{K}}(\varphi)</math>. Niech <math>FL(\varphi)</math> będzie domknięciem Fischera-Ladnera formuły <math>\varphi</math>. Na mocy [[#lem10.13|Lematu 10.13]] o filtracji mamy <math>[u]\in\mathrm{m}_{\mathfrak{K}/FL(\varphi)}(\varphi)</math>. Ponadto <math>\mathfrak{K}/FL(\varphi)</math> ma nie więcej stanów niż liczba wartościowań przypisujących wartości logiczne formułom z <math>FL(\varphi)</math>. Tych ostatnich jest, na mocy | ||
[[#lem10.10|Lematu 10.10]] <math>(i)</math>, co najwyżej <math> | [[#lem10.10|Lematu 10.10]] <math>(i)</math>, co najwyżej <math>2^{|\varphi|}</math>. | ||
}} | }} | ||
Linia 436: | Linia 434: | ||
spełnialności dla formuł PDL. Naiwny algorytm polegający na | spełnialności dla formuł PDL. Naiwny algorytm polegający na | ||
przeszukiwaniu wszystkich struktur Kripkego o co najwyżej | przeszukiwaniu wszystkich struktur Kripkego o co najwyżej | ||
<math> | <math>2^{|\phi|}</math> stanach ma złożoność podwójnie wykładniczą względem | ||
długości formuły. Używając nieco sprytniejszej metody można | długości formuły. Używając nieco sprytniejszej metody można | ||
rozstrzygnąć problem spełnialności w czasie pojedynczo | rozstrzygnąć problem spełnialności w czasie pojedynczo | ||
Linia 450: | Linia 448: | ||
'''Aksjomaty''' | '''Aksjomaty''' | ||
<math>(P0) </math> Aksjomaty logiki zdaniowej | <math>(P0)</math> Aksjomaty logiki zdaniowej | ||
<math>(P1) \ \ [\alpha](\varphi\to\psi)\ \ \to\ \ | <math>(P1) \ \ [\alpha](\varphi\to\psi)\ \ \to\ \ | ||
Linia 481: | Linia 479: | ||
<math>(GEN) \ \ \frac{\varphi}{[\alpha]\varphi}</math> | <math>(GEN) \ \ \frac{\varphi}{[\alpha]\varphi}</math> | ||
Reguła (GEN) nazywana jest regułą ''modalnej generalizacji''. Jeśli <math> | Reguła (GEN) nazywana jest regułą ''modalnej generalizacji''. Jeśli <math>\varphi</math> daje się wyprowadzić w powyższym systemie poszerzonym o dodanie nowych aksjomatów ze zbioru <math>\Sigma</math>, to będziemy to zapisywać przez <math>\Sigma\vdash\varphi</math>. | ||
Jak zwykle | Jak zwykle | ||
piszemy <math> | piszemy <math>\vdash\phi</math>, gdy <math>\Sigma</math> jest zbiorem pustym. | ||
Fakt, że wszystkie aksjomaty są tautologiami PDL, wynika z [[#10.2|Sekcji: Przykłady tautologii PDL]]. Pozostawimy Czytelnikowi sprawdzenie, że powyższe reguły zachowują własność bycia tautologią. Tak więc każde twierdzenie powyższego systemu jest tautologią. Naszkicujemy dowód | Fakt, że wszystkie aksjomaty są tautologiami PDL, wynika z [[#10.2|Sekcji: Przykłady tautologii PDL]]. Pozostawimy Czytelnikowi sprawdzenie, że powyższe reguły zachowują własność bycia tautologią. Tak więc każde twierdzenie powyższego systemu jest tautologią. Naszkicujemy dowód | ||
twierdzenia odwrotnego, czyli tzw. twierdzenia o pełności dla PDL. | twierdzenia odwrotnego, czyli tzw. twierdzenia o pełności dla PDL. | ||
Przypomnijmy, że zbiór formuł <math> | Przypomnijmy, że zbiór formuł <math>\Sigma</math> jest ''sprzeczny'', | ||
gdy <math> | gdy <math>\Sigma\vdash\bot</math>. W przeciwnym przypadku mówimy, że <math>\Sigma</math> jest niesprzeczny. W poniższym lemacie zebrane są podstawowe własności zbiorów niesprzecznych potrzebne do dowodu twierdzenia o pełności. | ||
{{lemat|10.15|lem10.15| | {{lemat|10.15|lem10.15| | ||
Niech <math> | Niech <math>\Sigma</math> będzie zbiorem formuł PDL. Wówczas | ||
<math>(i)\ \ \ \ \Sigma</math> jest niesprzeczny wtedy i tylko wtedy, gdy <math> | <math>(i)\ \ \ \ \Sigma</math> jest niesprzeczny wtedy i tylko wtedy, gdy <math>\Sigma\cup\{\varphi\}</math> jest niesprzeczny lub <math>\Sigma\cup\{\neg\varphi\}</math> jest niesprzeczny; | ||
<math>(ii)</math> jeśli <math> | <math>(ii)</math> jeśli <math>\Sigma</math> jest niesprzeczny, to | ||
<math> | <math>\Sigma</math> jest zawarty w maksymalnym niesprzecznym zbiorze formuł. | ||
Ponadto, jeśli <math> | Ponadto, jeśli <math>\Sigma</math> jest maksymalnym niesprzecznym zbiorem formuł, | ||
to | to | ||
<math>(iii)\ \ \Sigma</math> zawiera wszystkie twierdzenia PDL; | <math>(iii)\ \ \Sigma</math> zawiera wszystkie twierdzenia PDL; | ||
<math>(iv)\ \ </math> jeśli <math> | <math>(iv)\ \ </math> jeśli <math>\varphi\in\Sigma</math> oraz | ||
<math> | <math>\varphi\to\psi\in\Sigma</math>, to <math>\psi\in\Sigma</math>; | ||
<math>(v)\ \ \ \ \varphi\vee\psi\in\Sigma</math> wtedy i tylko wtedy, gdy | <math>(v)\ \ \ \ \varphi\vee\psi\in\Sigma</math> wtedy i tylko wtedy, gdy | ||
<math> | <math>\varphi\in\Sigma</math> lub <math>\psi\in\Sigma</math>; | ||
<math>(vi)\ \ \ \varphi\wedge\psi\in\Sigma</math> wtedy i tylko wtedy, gdy | <math>(vi)\ \ \ \varphi\wedge\psi\in\Sigma</math> wtedy i tylko wtedy, gdy | ||
<math> | <math>\varphi\in\Sigma</math> oraz <math>\psi\in\Sigma</math>; | ||
<math>(vii)\ \ \varphi\in\Sigma</math> wtedy i tylko wtedy, gdy | <math>(vii)\ \ \varphi\in\Sigma</math> wtedy i tylko wtedy, gdy | ||
<math> | <math>\neg\varphi\not\in\Sigma</math>; | ||
<math>(viii)\ \bot\not\in\Sigma</math>. | <math>(viii)\ \bot\not\in\Sigma</math>. | ||
Linia 525: | Linia 523: | ||
{{lemat|10.16|lem10.16| | {{lemat|10.16|lem10.16| | ||
Niech <math> | Niech <math>\Sigma</math> oraz <math>\Gamma</math> będą maksymalnymi niesprzecznymi zbiorami formuł oraz niech <math>\alpha</math> będzie dowolnym programem. Następujące dwa warunki są równoważne: | ||
:<math>(a)</math> Dla dowolnej formuły <math> | :<math>(a)</math> Dla dowolnej formuły <math>\psi</math>, jeśli <math>\psi\in\Gamma</math>, to <math>\langle\alpha\rangle\psi\in\Sigma</math>. | ||
:<math>(b)</math> Dla dowolnej formuły <math> | :<math>(b)</math> Dla dowolnej formuły <math>\psi</math>, jeśli <math>[\alpha]\psi\in\Sigma</math>, to <math>\psi\in\Gamma</math>. | ||
}} | }} | ||
Linia 534: | Linia 532: | ||
Struktura, którą za chwilę zbudujemy przy użyciu maksymalnych | Struktura, którą za chwilę zbudujemy przy użyciu maksymalnych | ||
niesprzecznych zbiorów formuł nie będzie strukturą Kripkego z tego | niesprzecznych zbiorów formuł nie będzie strukturą Kripkego z tego | ||
względu, że znaczeniem programu <math> | względu, że znaczeniem programu <math>\alpha^*</math> nie będzie musiało być | ||
domknięcie przechodnie i zwrotne relacji wyznaczonej przez | domknięcie przechodnie i zwrotne relacji wyznaczonej przez | ||
<math> | <math>\alpha</math>. Spełnione będą nieco słabsze własności, wystarczające jednak | ||
do przeprowadzenia dowodu twierdzenia o pełności. | do przeprowadzenia dowodu twierdzenia o pełności. | ||
Linia 543: | Linia 541: | ||
''Niestandardową strukturą Kripkego'' nazwiemy każdą strukturę | ''Niestandardową strukturą Kripkego'' nazwiemy każdą strukturę | ||
<math> | <math>\mathfrak{N} = (N,\mathrm{m}_{\mathfrak{N}})</math> spełniającą wszystkie warunki struktury Kripkego podane w definicjach [[#def10.2|10.2]] oraz [[#def10.3|10.3]] za | ||
wyjątkiem warunku [[#war14|(14)]]. Zamiast tego warunku żądamy, | wyjątkiem warunku [[#war14|(14)]]. Zamiast tego warunku żądamy, | ||
aby <math>\mathrm{m}_{\mathfrak{N}}(\alpha^*)</math> było relacją zwrotną i przechodnią, zawierało relację <math> | aby <math>\mathrm{m}_{\mathfrak{N}}(\alpha^*)</math> było relacją zwrotną i przechodnią, zawierało relację <math>\mathrm{m}_{\mathfrak{N}}(\alpha)</math> oraz spełniało aksjomaty <math>(P6)</math> i <math>(P7)</math>. Tzn. zamiast warunku | ||
<center><math> | <center><math>\mathrm{m}_{\mathfrak{N}}(\alpha^*) := \bigcup_{n\geq 0}\mathrm{m}_{\mathfrak{N}}(\alpha)^n,\qquad\qquad\qquad\quad\quad\quad\qquad (15) | ||
</math></center> | </math></center> | ||
żądamy, aby dla każdego programu <math> | żądamy, aby dla każdego programu <math>\alpha</math>, relacja <math>\mathrm{m}_{\mathfrak{N}}(\alpha^*)</math> była zwrotna, przechodnia, zawierała <math>\mathrm{m}_{\mathfrak{N}}(\alpha)</math> oraz spełniała następujące dwa warunki dla dowolnej formuły <math>\varphi</math> | ||
<center><math> | <center><math> | ||
Linia 557: | Linia 555: | ||
<center><math> | <center><math> | ||
\mathrm{m}_{\mathfrak{N}}([\alpha^*]\varphi) = \mathrm{m}_{\mathfrak{N}}(\varphi\wedge[\alpha^*](\varphi\to[\alpha]\varphi)).\qquad\qquad\qquad (17) | \mathrm{m}_{\mathfrak{N}}([\alpha^*]\varphi) = \mathrm{m}_{\mathfrak{N}}(\varphi\wedge[\alpha^*](\varphi\to[\alpha]\varphi)).\qquad\qquad\qquad (17) | ||
</math></center> | </math></center> | ||
Linia 565: | Linia 563: | ||
Wracamy teraz do konstrukcji struktury z maksymalnych niesprzecznych | Wracamy teraz do konstrukcji struktury z maksymalnych niesprzecznych | ||
zbiorów formuł. Zdefiniujemy niestandardową strukturę Kripkego <math> | zbiorów formuł. Zdefiniujemy niestandardową strukturę Kripkego <math>\mathfrak{N} =(N,\mathrm{m}_{\mathfrak{N}})</math> następująco: Elementami zbioru $N$ są maksymalne niesprzeczne | ||
zbiory formuł PDL. Dalej: | |||
<center> | <!--<center> | ||
{| border="0" cellpadding="5" cellspacing="5" | {| border="0" cellpadding="5" cellspacing="5" | ||
|- | |- | ||
|<math>N</math> | |<math>N</math> | ||
|<math>:= \{</math> maksymalnie niesprzeczne zbiory formuł PDL <math>\}</math> | |<math>:= \{</math> maksymalnie niesprzeczne zbiory formuł PDL <math>\}</math> | ||
|- --> | |||
<center> | |||
{| border="0" cellpadding="5" cellspacing="5" | |||
|- | |- | ||
|<math>\mathrm{m}_{\mathfrak{N}}(\varphi)</math> | |<math>\mathrm{m}_{\mathfrak{N}}(\varphi)</math> | ||
Linia 577: | Linia 580: | ||
|- | |- | ||
|<math>\mathrm{m}_{\mathfrak{N}}(\alpha)</math> | |<math>\mathrm{m}_{\mathfrak{N}}(\alpha)</math> | ||
|<math>:= \{\langle s,t\rangle\;|\; </math> dla wszystkich <math>\varphi</math>, jeśli <math>\varphi\in t</math>, to <math>\langle\alpha\rangle\varphi\in s\}</math> | |<math>:= \{\langle s,t\rangle\;|\;</math> dla wszystkich <math>\varphi</math>, jeśli <math>\varphi\in t</math>, to <math>\langle\alpha\rangle\varphi\in s\}</math> | ||
|- | |- | ||
| | | | ||
|<math>:= \{\langle s,t\rangle\;|\; </math> dla wszystkich <math>\varphi</math>, jeśli <math>[\alpha]\varphi\in s</math>, to <math>\varphi\in t\}</math> | |<math>:= \{\langle s,t\rangle\;|\;</math> dla wszystkich <math>\varphi</math>, jeśli <math>[\alpha]\varphi\in s</math>, to <math>\varphi\in t\}</math> | ||
|} | |} | ||
</center> | </center> | ||
Z Lematu [[#lem10.16|Lematu 10.16]] wynika, że obydwie definicje <math> \mathrm{m}_{\mathfrak{N}}(\alpha)</math> | Z Lematu [[#lem10.16|Lematu 10.16]] wynika, że obydwie definicje <math>\mathrm{m}_{\mathfrak{N}}(\alpha)</math> | ||
są równoważne. Dowód nastepującego twierdzenia pozostawimy Czytelnikowi. | są równoważne. Dowód nastepującego twierdzenia pozostawimy Czytelnikowi. | ||
{{twierdzenie|10.18|| | {{twierdzenie|10.18|| | ||
Struktura <math> | Struktura <math>\mathfrak{N}</math> jest niestandardową strukturą Kripkego. | ||
}} | }} | ||
{{dowod||| | {{dowod||| | ||
Fakt, że <math> | Fakt, że <math>\mathfrak{N}</math> spełnia własności [[#war16_17|(16)]] oraz [[#war16_17|(17)]] wynika natychmiast z [[#lem10.15|Lematu 10.15]] <math>(iii)</math> oraz z | ||
aksjomatów (P6) i (P7). Sprawdzenie pozostałych warunków pozostawimy Czytelnikowi jako ćwiczenie. | aksjomatów (P6) i (P7). Sprawdzenie pozostałych warunków pozostawimy Czytelnikowi jako ćwiczenie. | ||
}} | }} | ||
Linia 603: | Linia 606: | ||
{{lemat|10.19 (o filtracji dla niestandardowych struktur Kripkego)|lem10.19| | {{lemat|10.19 (o filtracji dla niestandardowych struktur Kripkego)|lem10.19| | ||
Niech <math> | Niech <math>\mathfrak{N}</math> będzie niestandardową strukturą Kripkego i niech <math>u,v</math> będą stanami w <math>\mathfrak{N}</math>. | ||
:<math>(i)</math> Dla dowolnej formuły <math> | :<math>(i)</math> Dla dowolnej formuły <math>\psi\in FL(\varphi)</math>, mamy <math>u\in \mathrm{m}_{\mathfrak{N}}(\psi) \ | ||
\iff \ [u]\in \mathrm{m}_{\mathfrak{N}/FL(\varphi)}(\psi)</math>. | \iff \ [u]\in \mathrm{m}_{\mathfrak{N}/FL(\varphi)}(\psi)</math>. | ||
:<math>(ii)</math> Dla dowolnej formuły <math> [\alpha]\psi\in FL(\varphi)</math> zachodzi | :<math>(ii)</math> Dla dowolnej formuły <math>[\alpha]\psi\in FL(\varphi)</math> zachodzi | ||
:: <math>(a)</math> jeśli <math> \langle u,v\rangle \in \mathrm{m}_{\mathfrak{N}}(\alpha)</math>, to <math> \langle [u],[v]\rangle \in \mathrm{m}_{\mathfrak{N}/FL(\varphi)}(\alpha);</math> | :: <math>(a)</math> jeśli <math>\langle u,v\rangle \in \mathrm{m}_{\mathfrak{N}}(\alpha)</math>, to <math>\langle [u],[v]\rangle \in \mathrm{m}_{\mathfrak{N}/FL(\varphi)}(\alpha);</math> | ||
:: <math>(b)</math> jeśli <math>\langle [u],[v]\rangle \in \mathrm{m}_{\mathfrak{N}/FL(\varphi)}(\alpha)</math> oraz <math> u\in \mathrm{m}_{\mathfrak{N}}([\alpha]\psi)</math> to <math> v\in \mathrm{m}_{\mathfrak{N}}(\psi)</math>. | :: <math>(b)</math> jeśli <math>\langle [u],[v]\rangle \in \mathrm{m}_{\mathfrak{N}/FL(\varphi)}(\alpha)</math> oraz <math>u\in \mathrm{m}_{\mathfrak{N}}([\alpha]\psi)</math> to <math>v\in \mathrm{m}_{\mathfrak{N}}(\psi)</math>. | ||
}} | }} | ||
Linia 619: | Linia 622: | ||
Czytelnika do spróbowania własnych sił. Różnica w dowodzie tego lematu | Czytelnika do spróbowania własnych sił. Różnica w dowodzie tego lematu | ||
w stosunku do dowodu [[#lem10.13|Lematu 10.13]] polega na tym, że w | w stosunku do dowodu [[#lem10.13|Lematu 10.13]] polega na tym, że w | ||
dowodze kroku indukcyjnego dla części <math>(ii)</math> dla przypadku, gdy <math> | dowodze kroku indukcyjnego dla części <math>(ii)</math> dla przypadku, gdy <math>\alpha</math> jest programem postaci <math>\beta^*</math> wykorzystujemy jedynie własności [[#war16_17|(16)]] oraz [[#war16_17|(17)]], zamiast [[#war16_17|(15)]]. | ||
}} | }} | ||
Linia 625: | Linia 628: | ||
{{twierdzenie|10.20 (Pełność dla PDL)|| | {{twierdzenie|10.20 (Pełność dla PDL)|| | ||
Każda tautologia PDL jest twierdzeniem systemu: dla dowolnej formuły <math> | Każda tautologia PDL jest twierdzeniem systemu: dla dowolnej formuły <math>\varphi</math>, jeśli <math>\vDash\varphi</math>, to | ||
<math> | <math>\vdash\varphi</math>. | ||
}} | }} | ||
{{dowod||| | {{dowod||| | ||
Rozumujemy przez sprzeczność. Jeśli <math> | Rozumujemy przez sprzeczność. Jeśli <math>\not\vdash\varphi</math>, to | ||
<math> | <math>\{\neg\varphi\}</math> jest zbiorem niesprzecznym. Zatem na mocy | ||
[[#lem10.15|Lematu 10.15]] <math>(ii)</math> istnieje maksymalny niesprzeczny zbiór <math> | [[#lem10.15|Lematu 10.15]] <math>(ii)</math> istnieje maksymalny niesprzeczny zbiór <math>u</math> formuł PDL zawierający <math>\neg\varphi</math>. Na | ||
mocy lematu o filtracji dla niestandardowych struktur Kripkego | mocy lematu o filtracji dla niestandardowych struktur Kripkego | ||
[[#lem10.19|(Lemat 10.19)]] stwierdzamy, że <math> | [[#lem10.19|(Lemat 10.19)]] stwierdzamy, że <math>\neg\varphi</math> jest spełniona w | ||
stanie <math> | stanie <math>[u]</math> skończonej struktury <math>\mathfrak{N}/FL(\varphi)</math>. Łatwo jest zauważyć, że skończona niestandardowa struktura Kripkego jest zwykłą strukturą Kripkego (tzn. taką, w której zachodzi [[#war16_17|(15)]]). Tak | ||
więc <math> | więc <math>\varphi</math> nie jest tautologią. To kończy dowód twierdzenia o | ||
pełności. | pełności. | ||
}} | }} |
Aktualna wersja na dzień 21:39, 11 wrz 2023
Zdaniowa logika dynamiczna
Zdaniowa logika dynamiczna (PDL, od angielskiej nazwy Propositional Dynamic Logic) została zaproponowana przez V. Pratta w 1976r. Jest ona eleganckim i zwięzłym formalizmem pozwalającym badać rozumowania dotyczące programów iteracyjnych. Formalizm ten rozszerza logikę modalną poprzez wprowadzenie modalności dla każdego programu z osobna. W tej części pokażemy jedynie dwie podstawowe własności PDL: własność małego modelu oraz pełność aksjomatyzacji. Z własności małego modelu natychmiast wynika rozstrzygalność problemu spełnialności dla PDL. System o podobnym charakterze, o nazwie Logika Algorytmiczna, został zaproponowany w roku 1970 przez A. Salwickiego.
Składnia i semantyka PDL
Syntaktycznie PDL jest mieszaniną trzech klasycznych składników: logiki zdaniowej, logiki modalnej oraz algebry wyrażeń regularnych. Język PDL zawiera wyrażenia dwóch rodzajów: zdania (lub formuły) oraz programy . Zakładamy, że mamy do dyspozycji przeliczalnie wiele atomowych symboli każdego rodzaju. Programy atomowe są oznaczane przez , a zbiór wszystkich atomowych programów oznaczamy przez .
Programy są budowane z programów atomowych przy użyciu operacji złożenia , niedeterministycznego wyboru oraz iteracji . Intuicyjnie wykonanie programu oznacza wykonanie , a następnie wykonanie na danych wyprodukowanych przez programu . Wykonanie programu oznacza niedeterministyczny wybór wykonania lub . Natomiast wykonanie programu oznacza wykonanie pewną liczbę razy, być może zero. Ponadto mamy operację testowania tworzącą z każdej formuły nowy program . Wykonanie programu jest możliwe tylko wtedy, gdy warunek zachodzi. Z drugiej strony, formuły mogą odwoływać się do dowolnego programu poprzez modalność konieczności : dla dowolnego zdania , napis
czytamy "po (każdym) wykonaniu programu koniecznie musi zajść ".
Definicja 10.1
Definicja formuł i programów jest wzajemnie rekurencyjna. Definiujemy zbiór programów oraz zbiór formuł jako najmniejsze zbiory spełniające następujące warunki
- jeśli , to oraz
- jeśli , to ,, oraz
- jeśli oraz , to
- jeśli , to .
Aby uniknąć pisania zbyt wielu nawiasów, stosujemy następujące priorytety:
- Jednoargumentowe operatory (wliczając ) wiążą silniej niż dwuargumentowe.
- Operator wiąże silniej niż .
- Spójniki logiczne mają takie same priorytety jak zdefiniowano wcześniej.
Tak więc wyrażenie
odpowiada następującemu wyrażeniu z nawiasami
Ponieważ operatory oraz okażą się być łączne, więc zwyczajowo będziemy opuszczać nawiasy w wyrażeniach typu lub .
Przypomnijmy, że negacja jest skrótem formuły . Dualnie do [ ] definiujemy modalność możliwości
Zdanie czytamy "istnieje obliczenie programu , które zatrzymuje się w stanie spełniającym formułę ". Istotną różnicą pomiędzy modalnościami [ ] i jest to, że implikuje iż program się zatrzymuje, podczas gdy nie gwarantuje zatrzymania się programu . W szczególności formuła wyraża własność mówiącą, że żadne obliczenie programu nie zatrzymuje się. Natomiast formuła jest zawsze fałszywa.
Przejdziemy teraz do zdefiniowania semantyki. Podstawową strukturą semantyczną dla PDL jest tzw. struktura Kripkego.
Definicja 10.2
Struktura Kripkego jest uporządkowaną parą Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mathfrak{K} = \langle K,\mathrm{m}_{\mathfrak{K}\rangle} , gdzie jest zbiorem elementów zwanych stanami, a Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mathrm{m}_{\mathfrak{K}} jest funkcją przyporządkowującą każdemu atomowemu zdaniu , podzbiór Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\mathrm{m}_{\mathfrak{K}}(p)\subseteq K} oraz każdemu atomowemu programowi relację binarną Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\mathrm{m}_{\mathfrak{K}}(a)\subseteq K\times K} .
Poniżej funkcję Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mathrm{m}_{\mathfrak{K}} rozszerzymy do dowolnych formuł i dowolnych programów. Intuicyjnie dla formuły , zbiór stanów Parser nie mógł rozpoznać (nieznana funkcja „\vrphi”): {\displaystyle {\mathrm{m}_{\mathfrak{K}}(\vrphi)} jest zbiorem wszystkich stanów struktury , w których jest spełniona. Natomiast dla programu , relacja Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\mathrm{m}_{\mathfrak{K}}(\alpha)} jest tzw. relacją wejścia-wyjścia programu w strukturze .
Definicja 10.3
Parser nie mógł rozpoznać (błąd składni): {\displaystyle := \left\{\langle u,v\rangle | u \in {\mathrm{m}_\mathfrak{K}}(\varphi)\right}} . |
Definicja 10.4
Powiemy, że formuła jest spełniona w stanie struktury , gdy . Podobnie jak w logice pierwszego rzędu spełnianie zapisujemy następująco . Gdy z kontekstu wynika o jaką strukturę chodzi, to możemy po prostu pisać .
Powiemy, że formuła jest prawdziwa w strukturze , gdy jest spełniona w każdym stanie tej struktury. Zapisujemy to . Formuła jest tautologią PDL, gdy jest ona prawdziwa w każdej strukturze Kripkego. Wreszcie powiemy, że formuła jest spełnialna, gdy istnieje struktura Kripkego , taka że jest spełniona w przynajmniej jednym stanie .
Przykład 10.5
Niech będzie zmienną zdaniową oraz niech będzie atomowym programem. Niech będzie taką strukturą Kripkego, że
. |
Nastepujący diagram ilustruje .
W tej strukturze mamy , ale oraz . Ponadto każdy stan struktury spełnia następującą formułę
.
Przykład 10.6
Niech będą zmiennymi zdaniowymi i niech będą atomowymi programami. Ponadto niech będzie strukturą Kripkego zdefiniowaną następująco
Następujący rysunek ilustruje .
Następujące formuły są prawdziwe w .
Ponadto niech będzie programem
Program traktowany jako wyrażenie regularne, generuje wszystkie słowa nad alfabetem o parzystej liczbie wystąpień oraz . Można pokazać, że dla dowolnego zdania , formuła jest prawdziwa w . Zauważmy, że operator jest z natury infinitarny. Z definicji domknięcie zwrotne i przechodnie relacji jest nieskończoną sumą. Z tego względu twierdzenie o zwartości nie zachodzi dla PDL. Istotnie, zbiór
jest skończenie spełnialny (tzn. każdy skończony podzbiór jest spełnialny), ale cały zbiór nie jest spełnialny.
Przykłady tautologii PDL
W tej części przedstawimy przykłady tautologii PDL. Wszystkie dowody, jako łatwe pozostawimy Czytelnikowi. Pierwsza grupa tautologii to schematy znane z logiki modalnej.
Twierdzenie 10.7
Następujące formuły są tautologiami PDL.
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle (iii)\ \ \ [\alpha](\varphi\rightarrow\psi) \ \ \rightarrow\ \ ([\alpha]\varphi\rightarrow[\alpha]\psi)}
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle (vii)\ \ \ [\alpha]\varphi \ \ \leftrightarrow\ \ \ \neg\langle\alpha\rangle\neg\varphi} .
Implikacje odwrotne w Twierdzeniu 10.7 nie zachodzą. Przykładowo implikacja odwrotna do nie jest spełniona w stanie następującej struktury Kripkego.
Następna grupa tautologii, specyficzna dla PDL, dotyczy spójników programotwórczych i oraz testu .
Twierdzenie 10.8
Następujące formuły są tautologiami PDL.
- .
Ostatnia grupa tautologii dotyczy operatora iteracji .
Twierdzenie 10.9
Nastepujące formuły są tautologiami PDL.
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle (iii)\ \ [\alpha^*]\varphi\ \ \rightarrow\ \ [\alpha]\varphi}
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle (iv)\ \ \ \langle\alpha\rangle\varphi\ \ \rightarrow\ \ \langle\alpha^*\rangle\varphi}
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle (v)\ \ \ \ [\alpha^*]\varphi\ \ \leftrightarrow\ \ [\alpha^*\alpha^*]\varphi}
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle (vi)\ \ \langle\alpha^*\rangle\varphi\ \ \leftrightarrow\ \ \langle\alpha^*\alpha^*\rangle\varphi}
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle (vii)\ \ [\alpha^*]\varphi\ \ \leftrightarrow\ \ [\alpha^{**}]\varphi}
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle (viii)\ \langle\alpha^*\rangle\varphi\ \leftrightarrow\ \ \langle\alpha^{**}\rangle\varphi}
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle (ix)\ \ \ [\alpha^*]\varphi\ \ \leftrightarrow\ \ \varphi\wedge[\alpha][\alpha^*]\varphi}
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle (x)\ \ \ \ \langle\alpha^*\rangle\varphi\ \ \leftrightarrow\ \ \varphi\vee\langle\alpha\rangle\langle\alpha^*\rangle\varphi}
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle (xi)\ \ \ [\alpha^*]\varphi\ \ \leftrightarrow\ \ \varphi\wedge[\alpha^*](\varphi\rightarrow[\alpha]\varphi)}
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle (xii)\ \ \langle\alpha^*\rangle\varphi\ \ \leftrightarrow\ \ \varphi\vee\langle\alpha^*\rangle(\neg\varphi\wedge\langle\alpha\rangle\varphi)} .
Własność mówi, że jest semantycznie relacją zwrotną. Przechodniość relacji jest wyrażona w . Natomiast fakt, że zawiera relację , jest wyrażony w . Implikacja w wyraża zasadę indukcji. Bazą jest założenie, że własność jest spełniona w pewnym stanie . Warunek indukcyjny mówi, że w każdym stanie osiągalnym z poprzez skończoną liczbę iteracji programu , kolejne wykonanie zachowuje własność . Teza stwierdza, że wówczas jest spełnione we wszystkich stanach osiągalnych w skończonej liczbie iteracji .
Własność małego modelu
W tej części udowodnimy własność małego modelu dla PDL. Własność ta mówi, że jeśli jest spełnialna, to jest spełniona w pewnej skończonej strukturze Kripkego. Co więcej, jak będzie wynikało z dowodu, struktura ta ma co najwyżej stanów, gdzie oznacza rozmiar formuły . Wynika stąd natychmiast rozstrzygalność problemu spełnialności dla PDL. Technika zastosowana w dowodzie twierdzenia o małym modelu nosi nazwę filtracji i jest od dawna stosowana w logikach modalnych. W przypadku PDL sytuację komplikuje fakt, że definicja formuł i programów jest wzajemnie rekurencyjna, co powoduje że indukcyjne rozumowania są nieco bardziej delikatne. Własność małego modelu dla PDL została udowodniona w 1977r. przez M. Fischera i R. Ladnera. Zaczniemy od definicji domknięcia Fischera-Ladnera. Zdefiniujemy dwie funkcje
przez wzajemną indukcję
- , gdy jest zmienną zdaniową
- , gdy jest atomowym programem
Zbiór jest nazywany domknięciem Fischera-Ladnera. Zauważmy, że definicja jest indukcyjna ze względu na budowę formuły , natomiast pomocnicza funkcja jest określona jedynie na formułach postaci i jej definicja jest indukcyjna ze względu na budowę programu . Tak więc chociaż w warunku formuła po prawej stronie definicji jest dłuższa niż po lewej, to program w zewnętrznej modalności jest prostszy niż i dlatego definicja ta jest dobrze ufundowana.
Niech oraz oznaczają długość programu i formuły rozumianą jako liczbę wystąpień symboli nie licząc nawiasów. Następujący lemat podaje ograniczenie górne na moc domknięcia Fischera-Ladnera.
Lemat 10.10
- Dla dowolnej formuły mamy .
- Dla dowolnej formuły mamy Parser nie mógł rozpoznać (błąd składni): {\displaystyle |FL^{\Box}([\alpha]\varphi}| \leq |\alpha|} .
Dowód
Dowód jest przez jednoczesną indukcję ze względu na schemat definiujący oraz . Pozostawimy go Czytelnikowi jako ćwiczenie.

Następny lemat ma charakter techniczny. Będzie wykorzystany w dowodzie lematu o filtracji.
Lemat 10.11
- Jeśli , to .
- Jeśli , to
.
Dowód
Dowodzimy (i) oraz (ii) przez jednoczesną indukcję. Szczegóły pozostawiamy Czytelnikowi jako ćwiczenie.

Następujące własości są bezpośrednią konsekwencją Lematu 10.11.
Lemat 10.12
- Jeśli , to .
- Jeśli , to .
- Jeśli , to oraz .
- Jeśli , to oraz .
- Jeśli , to .
Dla danej formuły oraz struktury Kripkego
definiujemy nową strukturę , zwaną filtracją struktury przez . Najpierw definiujemy binarną relację
w zbiorze stanów .
wtedy i tylko wtedy, gdy .
Innymi słowy, utożsamiamy stany oraz jeśli są one nierozróżnialne przez żadną formułę ze zbioru . Filtracja struktury jest zwykłą konstrukcją ilorazową. Niech
, gdy jest zmienną losową | |
, gdy jest atomowym programem. |
Przekształcenie rozszerza się w zwykły sposób na wszystkie formuły i programy.
Następujący lemat pokazuje związek pomiędzy strukturami oraz . Główna trudność techniczna polega tu na sformułowaniu poprawnego założenia indukcyjnego. Sam dowód (jednoczesna indukcja) jest zupełnie rutynowy i dlatego pozostawimy go Czytelnikowi jako ćwiczenie.
Lemat 10.13 (o filtracji)
Niech będą stanami w strukturze Kripkego .
- Dla dowolnej formuły , mamy .
- Dla dowolnej formuły zachodzi
- jeśli , to ;
- jeśli oraz Parser nie mógł rozpoznać (błąd składni): {\displaystyle u\in\mathrm{m}_{\mathfrak{K}([\alpha]\psi)} , to Parser nie mógł rozpoznać (błąd składni): {\displaystyle v\in\mathrm{m}_{\mathfrak{K}(\psi)} .
Z lematu o filtracji natychmiast dostajemy twierdzenie o małym modelu.
Twierdzenie 10.14 (Własność małego modelu)
Niech będzie spełnialną formułą PDL. Wówczas jest spełniona w strukturze Kripkego mającej co najwyżej stanów.
Dowód
Jeśli jest spełnialna, to istnieje struktura Kripkego oraz stan , taki że . Niech będzie domknięciem Fischera-Ladnera formuły . Na mocy Lematu 10.13 o filtracji mamy . Ponadto ma nie więcej stanów niż liczba wartościowań przypisujących wartości logiczne formułom z . Tych ostatnich jest, na mocy Lematu 10.10 , co najwyżej .

Z powyższego twierdzenia natychmiast wynika rozstrzygalność problemu spełnialności dla formuł PDL. Naiwny algorytm polegający na przeszukiwaniu wszystkich struktur Kripkego o co najwyżej stanach ma złożoność podwójnie wykładniczą względem długości formuły. Używając nieco sprytniejszej metody można rozstrzygnąć problem spełnialności w czasie pojedynczo wykładniczym. Złożoność ta jest najlepsza możliwa, można bowiem pokazać, że problem spełnialności dla PDL jest zupełny w deterministycznym czasie wykładniczym.
Aksjomatyzacja PDL
Podamy teraz system formalny dla PDL i naszkicujemy dowód jego pełności. Jest to system w stylu Hilberta.
Aksjomaty
Aksjomaty logiki zdaniowej
Parser nie mógł rozpoznać (błąd składni): {\displaystyle (P1) \ \ [\alpha](\varphi\to\psi)\ \ \to\ \ ([\alpha]\varphi\to[\alpha]\psi)}
Parser nie mógł rozpoznać (błąd składni): {\displaystyle (P2) \ \ [\alpha](\varphi\wedge\psi)\ \ \leftrightarrow\ \ ([\alpha]\varphi\wedge[\alpha]\psi)}
Parser nie mógł rozpoznać (błąd składni): {\displaystyle (P3) \ \ [\alpha\cup\beta]\varphi\ \ \leftrightarrow\ \ ([\alpha]\varphi\wedge[\beta]\varphi)}
Parser nie mógł rozpoznać (błąd składni): {\displaystyle (P4) \ \ [\alpha;\beta]\varphi\ \ \leftrightarrow\ \ ([\alpha][\beta]\varphi}
Parser nie mógł rozpoznać (błąd składni): {\displaystyle (P5) \ \ [\psi?]\varphi\ \ \leftrightarrow\ \ (\psi\to\varphi)}
Parser nie mógł rozpoznać (błąd składni): {\displaystyle (P6) \ \ \varphi\wedge[\alpha][\alpha^*]\varphi\ \ \leftrightarrow\ \ [\alpha^*]\varphi}
Parser nie mógł rozpoznać (błąd składni): {\displaystyle (P7) \ \ \varphi\wedge[\alpha^*](\varphi\to[\alpha]\varphi)\ \ \to\ \ [\alpha^*]\varphi \ \ \ } (aksjomat indukcji)
Reguły dowodzenia
Reguła (GEN) nazywana jest regułą modalnej generalizacji. Jeśli daje się wyprowadzić w powyższym systemie poszerzonym o dodanie nowych aksjomatów ze zbioru , to będziemy to zapisywać przez . Jak zwykle piszemy , gdy jest zbiorem pustym.
Fakt, że wszystkie aksjomaty są tautologiami PDL, wynika z Sekcji: Przykłady tautologii PDL. Pozostawimy Czytelnikowi sprawdzenie, że powyższe reguły zachowują własność bycia tautologią. Tak więc każde twierdzenie powyższego systemu jest tautologią. Naszkicujemy dowód twierdzenia odwrotnego, czyli tzw. twierdzenia o pełności dla PDL. Przypomnijmy, że zbiór formuł jest sprzeczny, gdy . W przeciwnym przypadku mówimy, że jest niesprzeczny. W poniższym lemacie zebrane są podstawowe własności zbiorów niesprzecznych potrzebne do dowodu twierdzenia o pełności.
Lemat 10.15
Niech będzie zbiorem formuł PDL. Wówczas
jest niesprzeczny wtedy i tylko wtedy, gdy jest niesprzeczny lub jest niesprzeczny;
jeśli jest niesprzeczny, to jest zawarty w maksymalnym niesprzecznym zbiorze formuł.
Ponadto, jeśli jest maksymalnym niesprzecznym zbiorem formuł,
to
zawiera wszystkie twierdzenia PDL;
jeśli oraz , to ;
wtedy i tylko wtedy, gdy lub ;
wtedy i tylko wtedy, gdy oraz ;
wtedy i tylko wtedy, gdy ;
.
Z powyższego lematu natychmiast dostajemy następującą własność.
Lemat 10.16
Niech oraz będą maksymalnymi niesprzecznymi zbiorami formuł oraz niech będzie dowolnym programem. Następujące dwa warunki są równoważne:
- Dla dowolnej formuły , jeśli , to .
- Dla dowolnej formuły , jeśli , to .
Struktura, którą za chwilę zbudujemy przy użyciu maksymalnych niesprzecznych zbiorów formuł nie będzie strukturą Kripkego z tego względu, że znaczeniem programu nie będzie musiało być domknięcie przechodnie i zwrotne relacji wyznaczonej przez . Spełnione będą nieco słabsze własności, wystarczające jednak do przeprowadzenia dowodu twierdzenia o pełności.
Definicja 10.17
Niestandardową strukturą Kripkego nazwiemy każdą strukturę spełniającą wszystkie warunki struktury Kripkego podane w definicjach 10.2 oraz 10.3 za wyjątkiem warunku (14). Zamiast tego warunku żądamy, aby było relacją zwrotną i przechodnią, zawierało relację oraz spełniało aksjomaty i . Tzn. zamiast warunku
żądamy, aby dla każdego programu , relacja była zwrotna, przechodnia, zawierała oraz spełniała następujące dwa warunki dla dowolnej formuły
Wracamy teraz do konstrukcji struktury z maksymalnych niesprzecznych
zbiorów formuł. Zdefiniujemy niestandardową strukturę Kripkego następująco: Elementami zbioru $N$ są maksymalne niesprzeczne
zbiory formuł PDL. Dalej:
dla wszystkich , jeśli , to | |
dla wszystkich , jeśli , to |
Z Lematu Lematu 10.16 wynika, że obydwie definicje
są równoważne. Dowód nastepującego twierdzenia pozostawimy Czytelnikowi.
Twierdzenie 10.18
Struktura jest niestandardową strukturą Kripkego.
Dowód
Fakt, że spełnia własności (16) oraz (17) wynika natychmiast z Lematu 10.15 oraz z aksjomatów (P6) i (P7). Sprawdzenie pozostałych warunków pozostawimy Czytelnikowi jako ćwiczenie.

Istotną cechą niestandardowych struktur Kripkego jest to, że daje się przenieść na nie lemat o filtracji (Lemat 10.13).
Lemat 10.19 (o filtracji dla niestandardowych struktur Kripkego)
Niech będzie niestandardową strukturą Kripkego i niech będą stanami w .
- Dla dowolnej formuły , mamy Parser nie mógł rozpoznać (błąd składni): {\displaystyle u\in \mathrm{m}_{\mathfrak{N}}(\psi) \ \iff \ [u]\in \mathrm{m}_{\mathfrak{N}/FL(\varphi)}(\psi)} .
- Dla dowolnej formuły zachodzi
- jeśli , to
- jeśli oraz to .
Dowód
Szczegóły dowodu tego lematu pomijamy, zachęcając jednocześnie Czytelnika do spróbowania własnych sił. Różnica w dowodzie tego lematu w stosunku do dowodu Lematu 10.13 polega na tym, że w dowodze kroku indukcyjnego dla części dla przypadku, gdy jest programem postaci wykorzystujemy jedynie własności (16) oraz (17), zamiast (15).

Możemy już teraz zakończyć dowód twierdzenia o pełności.
Twierdzenie 10.20 (Pełność dla PDL)
Każda tautologia PDL jest twierdzeniem systemu: dla dowolnej formuły , jeśli , to .
Dowód
Rozumujemy przez sprzeczność. Jeśli , to jest zbiorem niesprzecznym. Zatem na mocy Lematu 10.15 istnieje maksymalny niesprzeczny zbiór formuł PDL zawierający . Na mocy lematu o filtracji dla niestandardowych struktur Kripkego (Lemat 10.19) stwierdzamy, że jest spełniona w stanie skończonej struktury . Łatwo jest zauważyć, że skończona niestandardowa struktura Kripkego jest zwykłą strukturą Kripkego (tzn. taką, w której zachodzi (15)). Tak więc nie jest tautologią. To kończy dowód twierdzenia o pełności.
