Logika dla informatyków/Zdaniowa logika dynamiczna: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Dorota (dyskusja | edycje)
mNie podano opisu zmian
m Zastępowanie tekstu – „.↵</math>” na „</math>”
 
(Nie pokazano 12 wersji utworzonych przez 2 użytkowników)
Linia 6: Linia 6:
pozwalającym badać rozumowania dotyczące programów
pozwalającym badać rozumowania dotyczące programów
iteracyjnych. Formalizm ten rozszerza logikę modalną poprzez
iteracyjnych. Formalizm ten rozszerza logikę modalną poprzez
wprowadzenie modalności dla każdego programu z osobna. W części tej
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
pokażemy jedynie dwie podstawowe własności PDL: własność małego modelu
oraz przedstawimy aksjomatyzację i udowodnimy jej pełność. Z własności
oraz pełność aksjomatyzacji. Z własności
małego modelu natychmiast wynika rozstrzygalność problemu
małego modelu natychmiast wynika rozstrzygalność problemu
spełnialności dla PDL. System o podobnym charakterze, o nazwie
spełnialności dla PDL. System o podobnym charakterze, o nazwie
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>\displaystyle \varphi,\psi,\ldots</math> oraz
''zdania'' (lub formuły) <math>\varphi,\psi,\ldots</math> oraz
''programy'' <math>\displaystyle \alpha,\beta,\gamma,\ldots</math>. Zakładamy, że mamy do
''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>\displaystyle a,b,c,\ldots</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>\displaystyle \Pi_0</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>\displaystyle (;)</math>, ''niedeterministycznego wyboru''
''złożenia'' <math>(;)</math>, ''niedeterministycznego wyboru''
<math>\displaystyle (\cup)</math> oraz ''iteracji'' <math>\displaystyle (^*)</math>. Intuicyjnie wykonanie
<math>(\cup)</math> oraz ''iteracji'' <math>(^*)</math>. Intuicyjnie wykonanie
programu <math>\displaystyle \alpha;\beta</math> oznacza wykonanie <math>\displaystyle \alpha</math>, a następnie
programu <math>\alpha;\beta</math> oznacza wykonanie <math>\alpha</math>, a następnie
wykonanie na danych wyprodukowanych przez <math>\displaystyle \alpha</math> programu
wykonanie na danych wyprodukowanych przez <math>\alpha</math> programu
<math>\displaystyle \beta</math>. Wykonanie programu <math>\displaystyle \alpha\cup\beta</math> oznacza
<math>\beta</math>. Wykonanie programu <math>\alpha\cup\beta</math> oznacza
niedeterministyczny wybór wykonania <math>\displaystyle \alpha</math> lub <math>\displaystyle \beta</math>. Natomiast
niedeterministyczny wybór wykonania <math>\alpha</math> lub <math>\beta</math>. Natomiast
wykonanie programu <math>\displaystyle \alpha^*</math> oznacza wykonanie <math>\displaystyle \alpha</math> pewną
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>\displaystyle \varphi</math> nowy program <math>\displaystyle \varphi?</math>. Wykonanie
tworzącą z każdej formuły <math>\varphi</math> nowy program <math>\varphi?</math>. Wykonanie
programu <math>\displaystyle \varphi?</math> jest możliwe tylko wtedy, gdy warunek <math>\displaystyle \varphi</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>\displaystyle \alpha</math> poprzez  
programu <math>\alpha</math> poprzez  
''modalność konieczności'' <math>\displaystyle [\alpha]</math>:
''modalność konieczności'' <math>[\alpha]</math>:
dla dowolnego zdania <math>\displaystyle \varphi</math>, napis
dla dowolnego zdania <math>\varphi</math>, napis


<center><math>\displaystyle [\alpha]\varphi
<center><math>[\alpha]\varphi
</math></center>
</math></center>


czytamy "po (każdym) wykonaniu programu <math>\displaystyle \alpha</math> koniecznie musi
czytamy "po (każdym) wykonaniu programu <math>\alpha</math> koniecznie musi
zajść <math>\displaystyle \varphi</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>\displaystyle \Pi</math> oraz zbiór formuł <math>\displaystyle \Phi</math> jako najmniejsze zbiory
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>\displaystyle ZZ\subseteq\Phi</math>  
* <math>ZZ\subseteq\Phi</math>  
* <math>\displaystyle \Pi_0\subseteq\Pi</math>
* <math>\Pi_0\subseteq\Pi</math>
* jeśli <math>\displaystyle \varphi,\psi\in\Phi</math>, to <math>\displaystyle \varphi\to\psi\in\Phi</math> oraz <math>\displaystyle \bot\in\Phi</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>\displaystyle \alpha,\beta\in \Pi</math>, to <math>\displaystyle (\alpha;\beta)</math>,<math>\displaystyle (\alpha\cup\beta)</math>, oraz <math>\displaystyle \alpha^*\in\Pi</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>\displaystyle \alpha\in\Pi</math> oraz <math>\displaystyle \varphi\in\Phi</math>, to <math>\displaystyle [\alpha]\varphi\in\Phi</math>
* jeśli <math>\alpha\in\Pi</math> oraz <math>\varphi\in\Phi</math>, to <math>[\alpha]\varphi\in\Phi</math>
* jeśli <math>\displaystyle \varphi\in\Phi</math>, to <math>\displaystyle \varphi?\in\Pi.</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>\displaystyle [\alpha]</math> ) wiążą silniej niż dwuargumentowe.
* Jednoargumentowe operatory (wliczając <math>[\alpha]</math> ) wiążą silniej niż dwuargumentowe.
* Operator <math>\displaystyle ;</math> wiąże silniej niż <math>\displaystyle \cup</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>\displaystyle [\alpha;\beta^* \cup \gamma^*]\varphi\vee\psi
<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>\displaystyle ([(\alpha;\beta^*)\cup\gamma^*]\varphi)\vee\psi.
<center><math>([(\alpha;\beta^*)\cup\gamma^*]\varphi)\vee\psi</math></center>
</math></center>


Ponieważ operatory <math>\displaystyle ;</math> oraz <math>\displaystyle \cup</math> okażą się być łączne, więc zwyczajowo będziemy opuszczać nawiasy w wyrażeniach typu <math>\displaystyle \alpha;\beta;\gamma</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>\displaystyle \alpha\cup\beta\cup\gamma</math>.
lub <math>\alpha\cup\beta\cup\gamma</math>.


Przypomnijmy, że negacja <math>\displaystyle \neg\varphi</math> jest skrótem formuły
Przypomnijmy, że negacja <math>\neg\varphi</math> jest skrótem formuły
<math>\displaystyle \varphi\to\bot</math>. Dualnie do [ ] definiujemy ''modalność możliwości''  
<math>\varphi\to\bot</math>. Dualnie do [ ] definiujemy ''modalność możliwości''  
<center><math>\displaystyle \langle\alpha\rangle\varphi := \neg[\alpha]\neg\varphi</math></center>
<center><math>\langle\alpha\rangle\varphi := \neg[\alpha]\neg\varphi</math></center>
Zdanie <math>\displaystyle \langle\alpha\rangle\varphi</math> czytamy "istnieje obliczenie programu <math>\displaystyle \alpha</math>, które zatrzymuje się w stanie spełniającym formułę <math>\displaystyle \varphi</math>". Istotną różnicą pomiędzy modalnościami [ ] i <math>\displaystyle \langle \rangle</math> jest to, że <math>\displaystyle \langle\alpha\rangle\varphi</math> implikuje iż program <math>\displaystyle \alpha</math> się zatrzymuje, podczas gdy <math>\displaystyle \left [\alpha\right ]\varphi</math> nie gwarantuje zatrzymania się programu <math>\displaystyle \alpha</math>. W szczególności formuła <math>\displaystyle [\alpha]\bot</math> wyraża własność mówiącą, że żadne obliczenie programu <math>\displaystyle \alpha</math> nie zatrzymuje się. Natomiast
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>\displaystyle \langle\alpha\rangle\bot</math> jest zawsze fałszywa.
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>\displaystyle \mathfrak{K} = \langle K,\mathrm{m}_{\mathfrak{K}\rangle</math>, gdzie <math>\displaystyle K</math> jest zbiorem elementów <math>\displaystyle u,v,w,\ldots</math> zwanych ''stanami'', a <math>\displaystyle \mathrm{m}_{\mathfrak{K}</math> jest funkcją przyporządkowującą każdemu atomowemu zdaniu <math>\displaystyle p\in ZZ</math>, podzbiór <math>\displaystyle {\mathrm{m}_{\mathfrak{K}}(p)\subseteq K</math> oraz każdemu atomowemu programowi <math>\displaystyle a\in\Pi_0</math> relację binarną <math>\displaystyle {\mathrm{m}_{\mathfrak{K}}(a)\subseteq K\times K</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>\displaystyle \mathrm{m}_{\mathfrak{K}</math> rozszerzymy do dowolnych formuł i dowolnych programów. Intuicyjnie dla formuły <math>\displaystyle \varphi</math>, zbiór stanów <math>\displaystyle {\mathrm{m}_{\mathfrak{K}}(\vrphi)</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>\displaystyle \mathfrak{K}</math>, w których <math>\displaystyle \varphi</math> jest spełniona. Natomiast dla programu <math>\displaystyle \alpha</math>, relacja <math>\displaystyle {\mathrm{m}_{\mathfrak{K}}(\alpha)</math> jest
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&nbsp;<math>\displaystyle \alpha</math> w strukturze <math>\displaystyle \mathfrak{K}</math>.
tzw. relacją wejścia-wyjścia programu&nbsp;<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>
|<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>\displaystyle \varphi</math> jest ''spełniona'' w stanie <math>\displaystyle u</math> struktury <math>\displaystyle \mathfrak{K}</math>, gdy <math>u \in {\mathrm{m}_\mathfrak{K}}(\varphi)</math>. Podobnie jak w logice
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>\displaystyle (\mathfrak{K},u) \vDash
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>\displaystyle u\vDash\varphi</math>.
prostu pisać <math>u\vDash\varphi</math>.


Powiemy, że formuła <math>\displaystyle \varphi</math> jest ''prawdziwa'' w strukturze
Powiemy, że formuła <math>\varphi</math> jest ''prawdziwa'' w strukturze
<math>\displaystyle \mathfrak{K}</math>, gdy jest spełniona w każdym stanie tej struktury. Zapisujemy
<math>\mathfrak{K}</math>, gdy jest spełniona w każdym stanie tej struktury. Zapisujemy
to <math>\displaystyle \mathfrak{K}\vDash\varphi</math>. Formuła <math>\displaystyle \varphi</math> jest ''tautologią'' PDL, gdy jest ona prawdziwa w każdej strukturze Kripkego. Wreszcie powiemy, że
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>\displaystyle \varphi</math> jest ''spełnialna'', gdy istnieje struktura
formuła <math>\varphi</math> jest ''spełnialna'', gdy istnieje struktura
Kripkego <math>\displaystyle \mathfrak{K}</math>, taka że <math>\displaystyle \varphi</math> jest spełniona w przynajmniej jednym stanie <math>\displaystyle \mathfrak{K}</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>\displaystyle p</math> będzie zmienną zdaniową oraz niech <math>\displaystyle a</math> będzie atomowym programem. Niech <math>\displaystyle \mathfrak{K} = (K,\mathrm{m}_\mathfrak{K})</math> będzie taką strukturą Kripkego, że  
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>\displaystyle \mathfrak{K}</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>\displaystyle u\vDash\langle a\rangle\neg p\wedge\langle a \rangle p</math>, ale <math>\displaystyle v\vDash[a]\neg p</math> oraz <math>\displaystyle w\vDash[a]p </math>. Ponadto każdy stan struktury <math>\displaystyle \mathfrak{K}</math> spełnia następującą formułę
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>\displaystyle \langle a^* \rangle[(aa)^*]p \wedge \langle a^* \rangle[(aa)^*]\neg p</math></center>.  
<center><math>\langle a^* \rangle[(aa)^*]p \wedge \langle a^* \rangle[(aa)^*]\neg p</math></center>.  
{{przyklad|10.6||
{{przyklad|10.6||
}}
}}
Niech <math>\displaystyle p,q</math> będą zmiennymi zdaniowymi i niech <math>\displaystyle a,b</math> będą atomowymi programami. Ponadto niech <math>\displaystyle \mathfrak{K} = (K,\mathrm{m}_\mathfrak{K})</math> będzie strukturą Kripkego
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>\displaystyle \mathfrak{K}</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>\displaystyle \mathfrak{K}</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>\displaystyle \alpha</math> będzie programem
{{kotwica|war14|}}
{{kotwica|war14|}}
<center><math>\displaystyle \alpha = (aa\cup bb\cup(ab\cup ba)(aa\cup bb)^*(ab\cup
<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>\displaystyle \alpha</math> traktowany jako wyrażenie regularne,  
Program <math>\alpha</math> traktowany jako wyrażenie regularne,  
generuje wszystkie słowa nad alfabetem <math>\displaystyle \{a,b\}</math> o parzystej liczbie
generuje wszystkie słowa nad alfabetem <math>\{a,b\}</math> o parzystej liczbie
wystąpień <math>\displaystyle a</math> oraz <math>\displaystyle b</math>. Można pokazać, że dla dowolnego zdania <math>\displaystyle \varphi</math>, formuła <math>\displaystyle \varphi\leftrightarrow[\alpha]\varphi</math> jest prawdziwa w <math>\displaystyle \mathfrak{K}</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>\displaystyle u</math> następującej struktury Kripkego.
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>\displaystyle ;</math> i <math>\displaystyle \cup</math> oraz testu <math>\displaystyle ?</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>\displaystyle \alpha^*</math> jest
Własność <math>(ii)</math> mówi, że <math>\alpha^*</math> jest
semantycznie relacją zwrotną. Przechodniość relacji <math>\displaystyle \alpha^*</math> jest
semantycznie relacją zwrotną. Przechodniość relacji <math>\alpha^*</math> jest
wyrażona w <math>(vi)</math>. Natomiast fakt, że <math>\displaystyle \alpha^*</math> zawiera relację <math>\displaystyle \alpha</math>, jest wyrażony w <math>(iv)</math>. Implikacja <math>\displaystyle \leftarrow</math> w <math>(xi)</math> wyraża zasadę indukcji.  
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>\displaystyle \varphi</math> jest spełniona w pewnym stanie <math>\displaystyle u</math>. Warunek indukcyjny mówi, że w każdym stanie osiągalnym z <math>\displaystyle u</math> poprzez skończoną liczbę iteracji programu
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>\displaystyle \alpha</math>, kolejne wykonanie <math>\displaystyle \alpha</math> zachowuje własność <math>\displaystyle \varphi</math>.
<math>\alpha</math>, kolejne wykonanie <math>\alpha</math> zachowuje własność <math>\varphi</math>.
Teza stwierdza, że wówczas <math>\displaystyle \varphi</math> jest
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>\displaystyle \alpha</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>\displaystyle \varphi</math> jest spełnialna, to jest spełniona w pewnej
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>\displaystyle 2^{|\varphi|}</math> stanów, gdzie
dowodu, struktura ta ma co najwyżej <math>2^{|\varphi|}</math> stanów, gdzie
<math>\displaystyle |\varphi|</math> oznacza rozmiar formuły <math>\displaystyle \varphi</math>. Wynika stąd natychmiast rozstrzygalność problemu spełnialności dla PDL. Technika zastosowana w
<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>\displaystyle p</math> jest zmienną zdaniową
:<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>\displaystyle a</math> jest atomowym programem
:<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>\displaystyle FL(\varphi)</math> jest nazywany ''domknięciem Fischera-Ladnera''. Zauważmy, że definicja <math>\displaystyle FL(\varphi)</math> jest indukcyjna ze
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>\displaystyle \varphi</math>, natomiast pomocnicza funkcja <math>FL^{\Box}</math> jest określona jedynie na formułach postaci <math>\displaystyle [\alpha]\varphi</math> i jej definicja jest indukcyjna ze względu na budowę programu <math>\displaystyle \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>\displaystyle \alpha</math> w zewnętrznej modalności jest prostszy niż <math>\displaystyle \alpha^*</math> i dlatego definicja ta jest dobrze ufundowana.
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>\displaystyle |\alpha|</math> oraz <math>\displaystyle |\varphi|</math> oznaczają  
Niech <math>|\alpha|</math> oraz <math>|\varphi|</math> oznaczają  
długość programu <math>\displaystyle \alpha</math> i formuły <math>\displaystyle \varphi</math> rozumianą jako liczbę wystąpień symboli nie licząc nawiasów. Dla dowolnego zbioru <math>\displaystyle X</math>, przez <math>\displaystyle |X|</math> oznaczamy moc zbioru <math>\displaystyle X</math>. Następujący lemat podaje ograniczenie górne na moc domknięcia Fischera-Ladnera.
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>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.


{{lemat|10.10|lem10.10|
{{lemat|10.10|lem10.10|
:<math>(i)\;\;</math> ''Dla dowolnej formuły'' <math>\displaystyle \varphi</math> ''mamy'' <math>\displaystyle |FL(\varphi)| \leq |\varphi|</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>\displaystyle [\alpha]\varphi</math> ''mamy'' <math>\displaystyle |FL^{\Box}([\alpha]\varphi}| \leq |\alpha|</math>.
:<math>(ii)\;</math> ''Dla dowolnej formuły'' <math>[\alpha]\varphi</math> ''mamy'' <math>|FL^{\Box}([\alpha]\varphi}| \leq |\alpha|</math>.
   
   
}}
}}
Linia 343: 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>\displaystyle FL</math> oraz <math>\displaystyle FL^{\Box}</math>. Pozostawimy go Czytelnikowi jako ćwiczenie.
<math>FL</math> oraz <math>FL^{\Box}</math>. Pozostawimy go Czytelnikowi jako ćwiczenie.
}}
}}


Linia 350: Linia 350:
   
   
{{lemat|10.11|lem10.11|
{{lemat|10.11|lem10.11|
:<math>(i)</math> Jeśli <math>\displaystyle \sigma\in FL(\varphi)</math>, to <math>\displaystyle FL(\sigma)\subseteq FL(\varphi)</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>\displaystyle \sigma\in FL^{\Box}([\alpha]\varphi)</math>, to
:<math>(ii)</math> Jeśli <math>\sigma\in FL^{\Box}([\alpha]\varphi)</math>, to
<math>\displaystyle FL(\sigma)\subseteq FL^{\Box}([\alpha]\varphi)\cup FL(\varphi)</math>.
<math>FL(\sigma)\subseteq FL^{\Box}([\alpha]\varphi)\cup FL(\varphi)</math>.
   
   
}}
}}
Linia 361: Linia 361:
}}
}}


Następujące własości <math>\displaystyle FL</math> są bezpośrednią konsekwencją
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>\displaystyle [\alpha]\psi\in FL(\varphi)</math>, to <math>\displaystyle \psi\in FL(\varphi)</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>\displaystyle [\rho?]\psi\in FL(\varphi)</math>, to <math>\displaystyle \rho\in FL(\varphi)</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>\displaystyle [\alpha\cup\beta]\psi\in FL(\varphi)</math>, to <math> [\alpha]\psi\in FL(\varphi)</math> oraz <math>\displaystyle [\beta]\psi\in FL(\varphi)</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>\displaystyle [\alpha;\beta]\psi\in FL(\varphi)</math>, to <math>\displaystyle [\alpha][\beta]\psi\in FL(\varphi)</math> oraz <math>\displaystyle [\beta]\psi\in FL(\varphi)</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>\displaystyle [\alpha^*]\psi\in FL(\varphi)</math>, to <math> [\alpha][\alpha^*]\psi\in FL(\varphi)</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>\displaystyle \varphi</math> oraz struktury Kripkego <math>\displaystyle \mathfrak{K} = (K,\mathrm{m}_{\mathfrak{K}})</math>
Dla danej formuły <math>\varphi</math> oraz struktury Kripkego <math>\mathfrak{K} = (K,\mathrm{m}_{\mathfrak{K}})</math>
definiujemy nową strukturę <math>\displaystyle \mathfrak{K}/FL(\varphi) =
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>\displaystyle \equiv</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>\displaystyle \mathfrak{K}</math>.
w zbiorze stanów <math>\mathfrak{K}</math>.
<center>
<center>
<math>\displaystyle 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>
<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>\displaystyle u</math> oraz <math>\displaystyle v</math> jeśli są one nierozróżnialne przez żadną formułę ze zbioru <math>\displaystyle FL(\phi)</math>. Filtracja
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>\displaystyle [u] </math>
|<math>[u]</math>
|<math>:= \{v\;|\; v \equiv u\}</math>
|<math>:= \{v\;|\; v \equiv u\}</math>
|-
|-
Linia 403: 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>\displaystyle \mathfrak{K}</math> oraz
Następujący lemat pokazuje związek pomiędzy strukturami <math>\mathfrak{K}</math> oraz
<math>\displaystyle \mathfrak{K}/FL(\varphi)</math>. Główna trudność techniczna polega tu na sformułowaniu poprawnego założenia indukcyjnego. Sam dowód (jednoczesna indukcja)
<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 410: Linia 410:
{{lemat|10.13 (o filtracji)|lem10.13|
{{lemat|10.13 (o filtracji)|lem10.13|


Niech <math>\displaystyle u,v</math> będą stanami w strukturze Kripkego <math>\displaystyle \mathfrak{K}</math>.
Niech <math>u,v</math> będą stanami w strukturze Kripkego <math>\mathfrak{K}</math>.
:<math>(i)</math> Dla dowolnej formuły <math>\displaystyle \psi\in FL(\varphi)</math>, mamy <math>\displaystyle u\in\mathrm{m}_{\mathfrak{K}}(\psi) \iff \ [u]\in\mathrm{m}_{\mathfrak{K}/FL(\varphi)}(\psi)</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>\displaystyle [\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>\displaystyle \langle u,v\rangle\in \mathrm{m}_{\mathfrak{K}}(\alpha)</math>, to <math>\displaystyle \langle [u],[v]\rangle\in \mathrm{m}_{\mathfrak{K}/FL(\varphi)}(\alpha)</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>\displaystyle \langle [u],[v]\rangle\in \mathrm{m}_{\mathfrak{K}/FL(\varphi)}(\alpha)</math> oraz <math>\displaystyle u\in\mathrm{m}_{\mathfrak{K}([\alpha]\psi)</math>, to <math>\displaystyle v\in\mathrm{m}_{\mathfrak{K}(\psi)</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 423: Linia 423:
{{twierdzenie|10.14 (Własność małego modelu)||
{{twierdzenie|10.14 (Własność małego modelu)||


Niech <math>\displaystyle \varphi</math> będzie spełnialną formułą PDL. Wówczas <math>\displaystyle \varphi</math> jest spełniona w strukturze Kripkego mającej co najwyżej <math>\displaystyle 2^{|\varphi|}</math> stanów.
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>\displaystyle \varphi</math> jest spełnialna, to istnieje struktura Kripkego <math>\displaystyle \mathfrak{K}</math> oraz stan <math>\displaystyle u\in\mathfrak{K}</math>, taki że <math>\displaystyle u\in\mathrm{m}_{\mathfrak{K}}(\varphi)</math>.  Niech <math>\displaystyle FL(\varphi)</math> będzie domknięciem Fischera-Ladnera formuły <math>\displaystyle \varphi</math>.  Na mocy [[#lem10.13|Lematu 10.13]] o filtracji  mamy <math>\displaystyle [u]\in\mathrm{m}_{\mathfrak{K}/FL(\varphi)}(\varphi)</math>.  Ponadto <math>\displaystyle \mathfrak{K}/FL(\varphi)</math> ma nie więcej stanów niż liczba wartościowań przypisujących wartości logiczne formułom z <math>\displaystyle FL(\varphi)</math>. Tych ostatnich jest, na mocy
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>\displaystyle 2^{|\varphi|}</math>.
[[#lem10.10|Lematu 10.10]] <math>(i)</math>, co najwyżej <math>2^{|\varphi|}</math>.
}}
}}


Z powyższego twierdzenia natychmiast wynika rozstrzygalość problemu
Z powyższego twierdzenia natychmiast wynika rozstrzygalność problemu
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&nbsp;co najwyżej
przeszukiwaniu wszystkich struktur Kripkego o&nbsp;co najwyżej
<math>\displaystyle 2^{|\phi|}</math> stanach ma złożoność podwójnie wykładniczą względem
<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 448: 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 479: 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>\displaystyle \varphi</math> daje się wyprowadzić w&nbsp;powyższym systemie poszerzonym o dodanie nowych aksjomatów ze zbioru <math>\displaystyle \Sigma</math>, to będziemy to zapisywać przez <math>\displaystyle \Sigma\vdash\varphi</math>.  
Reguła (GEN) nazywana jest regułą ''modalnej generalizacji''. Jeśli <math>\varphi</math> daje się wyprowadzić w&nbsp;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>\displaystyle \vdash\phi</math>, gdy <math>\displaystyle \Sigma</math> jest zbiorem pustym.
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&nbsp;PDL.  
twierdzenia odwrotnego, czyli tzw. twierdzenia o pełności dla&nbsp;PDL.  
Przypomnijmy, że zbiór formuł <math>\displaystyle \Sigma</math> jest ''sprzeczny'',
Przypomnijmy, że zbiór formuł <math>\Sigma</math> jest ''sprzeczny'',
gdy <math>\displaystyle \Sigma\vdash\bot</math>. W&nbsp;przeciwnym przypadku mówimy, że <math>\displaystyle \Sigma</math> jest niesprzeczny. W&nbsp;poniższym lemacie zebrane są podstawowe własności zbiorów niesprzecznych potrzebne do dowodu twierdzenia o pełności.
gdy <math>\Sigma\vdash\bot</math>. W&nbsp;przeciwnym przypadku mówimy, że <math>\Sigma</math> jest niesprzeczny. W&nbsp;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>\displaystyle \Sigma</math> będzie zbiorem formuł PDL. Wówczas
Niech <math>\Sigma</math> będzie zbiorem formuł PDL. Wówczas


<math>(i)\ \ \ \ \Sigma</math> jest niesprzeczny wtedy i tylko wtedy, gdy <math>\displaystyle \Sigma\cup\{\varphi\}</math> jest niesprzeczny lub <math>\displaystyle \Sigma\cup\{\neg\varphi\}</math> jest niesprzeczny;
<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>\displaystyle \Sigma</math> jest niesprzeczny, to
<math>(ii)</math> jeśli <math>\Sigma</math> jest niesprzeczny, to
<math>\displaystyle \Sigma</math> jest zawarty w maksymalnym niesprzecznym zbiorze formuł.
<math>\Sigma</math> jest zawarty w maksymalnym niesprzecznym zbiorze formuł.
   
   


Ponadto, jeśli <math>\displaystyle \Sigma</math> jest maksymalnym niesprzecznym zbiorem formuł,
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>\displaystyle \varphi\in\Sigma</math> oraz
<math>(iv)\ \ </math> jeśli <math>\varphi\in\Sigma</math> oraz
<math>\displaystyle \varphi\to\psi\in\Sigma</math>, to <math>\displaystyle \psi\in\Sigma</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>\displaystyle \varphi\in\Sigma</math> lub <math>\displaystyle \psi\in\Sigma</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>\displaystyle \varphi\in\Sigma</math> oraz <math>\displaystyle \psi\in\Sigma</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>\displaystyle \neg\varphi\not\in\Sigma</math>;
<math>\neg\varphi\not\in\Sigma</math>;


<math>(viii)\ \bot\not\in\Sigma</math>.
<math>(viii)\ \bot\not\in\Sigma</math>.
Linia 523: Linia 523:
{{lemat|10.16|lem10.16|
{{lemat|10.16|lem10.16|


Niech <math>\displaystyle \Sigma</math> oraz <math>\displaystyle \Gamma</math> będą maksymalnymi niesprzecznymi zbiorami formuł oraz niech <math>\displaystyle \alpha</math> będzie dowolnym programem.  Następujące dwa warunki są równoważne:
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>\displaystyle \psi</math>, jeśli <math>\displaystyle \psi\in\Gamma</math>, to <math>\displaystyle \langle\alpha\rangle\psi\in\Sigma</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>\displaystyle \psi</math>, jeśli <math>\displaystyle [\alpha]\psi\in\Sigma</math>, to <math>\displaystyle \psi\in\Gamma</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 532: 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>\displaystyle \alpha^*</math> nie będzie musiało być
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>\displaystyle \alpha</math>. Spełnione będą nieco słabsze własności, wystarczające jednak
<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 541: Linia 541:


''Niestandardową strukturą Kripkego'' nazwiemy każdą strukturę
''Niestandardową strukturą Kripkego'' nazwiemy każdą strukturę
<math>\displaystyle \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
<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&nbsp;przechodnią, zawierało relację <math>\displaystyle \mathrm{m}_{\mathfrak{N}}(\alpha)</math> oraz spełniało aksjomaty <math>(P6)</math> i&nbsp;<math>(P7)</math>. Tzn. zamiast warunku  
aby <math>\mathrm{m}_{\mathfrak{N}}(\alpha^*)</math> było relacją zwrotną i&nbsp;przechodnią, zawierało relację <math>\mathrm{m}_{\mathfrak{N}}(\alpha)</math> oraz spełniało aksjomaty <math>(P6)</math> i&nbsp;<math>(P7)</math>. Tzn. zamiast warunku  


<center><math>\displaystyle \mathrm{m}_{\mathfrak{N}}(\alpha^*) := \bigcup_{n\geq 0}\mathrm{m}_{\mathfrak{N}}(\alpha)^n,\qquad\qquad\qquad\quad\quad\quad\qquad (15)
<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>\displaystyle \alpha</math>, relacja <math>\displaystyle \mathrm{m}_{\mathfrak{N}}(\alpha^*)</math> była zwrotna, przechodnia, zawierała <math>\displaystyle \mathrm{m}_{\mathfrak{N}}(\alpha)</math> oraz spełniała następujące dwa warunki dla dowolnej formuły <math>\displaystyle \varphi</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 555: 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 563: 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>\displaystyle \mathfrak{N} =(N,\mathrm{m}_{\mathfrak{N}})</math> następująco
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 575: 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>\displaystyle \mathfrak{N} </math> jest niestandardową strukturą Kripkego.
Struktura <math>\mathfrak{N}</math> jest niestandardową strukturą Kripkego.
}}
}}


{{dowod|||
{{dowod|||
Fakt, że <math>\displaystyle \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
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 601: 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>\displaystyle \mathfrak{N}</math> będzie niestandardową strukturą Kripkego i niech <math>\displaystyle u,v</math> będą stanami w <math>\displaystyle \mathfrak{N}</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>\displaystyle \psi\in FL(\varphi)</math>, mamy <math>\displaystyle u\in \mathrm{m}_{\mathfrak{N}}(\psi) \
:<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 617: 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>\displaystyle \alpha</math> jest programem postaci <math>\displaystyle \beta^*</math> wykorzystujemy jedynie własności [[#war16_17|(16)]] oraz [[#war16_17|(17)]], zamiast [[#war16_17|(15)]].
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 623: Linia 628:


{{twierdzenie|10.20 (Pełność dla PDL)||
{{twierdzenie|10.20 (Pełność dla PDL)||
Każda tautologia PDL jest twierdzeniem systemu:&nbsp;dla dowolnej formuły <math>\displaystyle \varphi</math>, jeśli <math>\displaystyle \vDash\varphi</math>, to
Każda tautologia PDL jest twierdzeniem systemu:&nbsp;dla dowolnej formuły <math>\varphi</math>, jeśli <math>\vDash\varphi</math>, to
<math>\displaystyle \vdash\varphi</math>.
<math>\vdash\varphi</math>.
}}
}}


{{dowod|||
{{dowod|||
Rozumujemy przez sprzeczność. Jeśli <math>\displaystyle \not\vdash\varphi</math>, to
Rozumujemy przez sprzeczność. Jeśli <math>\not\vdash\varphi</math>, to
<math>\displaystyle \{\neg\varphi\}</math> jest zbiorem niesprzecznym. Zatem na mocy
<math>\{\neg\varphi\}</math> jest zbiorem niesprzecznym. Zatem na mocy
[[#lem10.15|Lematu 10.15]] <math>(ii)</math> istnieje maksymalny niesprzeczny zbiór <math>\displaystyle u</math> formuł PDL zawierający <math>\displaystyle \neg\varphi</math>. Na
[[#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>\displaystyle \neg\varphi</math> jest spełniona w
[[#lem10.19|(Lemat 10.19)]] stwierdzamy, że <math>\neg\varphi</math> jest spełniona w
stanie <math>\displaystyle [u]</math> skończonej struktury <math>\displaystyle \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
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>\displaystyle \varphi</math> nie jest tautologią. To kończy dowód twierdzenia o
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,b,c,, a zbiór wszystkich atomowych programów oznaczamy przez Π0.

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

  • ZZΦ
  • Π0Π
  • 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 K jest zbiorem elementów u,v,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 pZZ, podzbiór Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\mathrm{m}_{\mathfrak{K}}(p)\subseteq K} oraz każdemu atomowemu programowi aΠ0 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

m𝔎(φψ) :=(Km𝔎(φ)m𝔎(ψ)
m𝔎()  :=
m𝔎([α]φ)  :={u|vK(u,vm𝔎(α)vm𝔎(φ))}
m𝔎(α;β) :={u,v|wK(u,vm𝔎(α)w,vm𝔎(β))}
m𝔎(αβ) :=m𝔎(α)m𝔎(β)
m𝔎(α*) :=n0m𝔎(α)n
m𝔎(φ?) 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 u struktury 𝔎, gdy um𝔎(φ). Podobnie jak w logice pierwszego rzędu spełnianie zapisujemy następująco (𝔎,u)φ. Gdy z kontekstu wynika o jaką strukturę chodzi, to możemy po prostu pisać uφ.

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 p będzie zmienną zdaniową oraz niech a będzie atomowym programem. Niech 𝔎=(K,m𝔎) będzie taką strukturą Kripkego, że

K ={u,v,w}
m𝔎(p) ={u,v}
m𝔎(a) ={u,v,u,w,v,w,w,v}.

Nastepujący diagram ilustruje 𝔎.

W tej strukturze mamy ua¬pap, ale v[a]¬p oraz w[a]p. Ponadto każdy stan struktury 𝔎 spełnia następującą formułę

a*[(aa)*]pa*[(aa)*]¬p

.

Przykład 10.6

Niech p,q będą zmiennymi zdaniowymi i niech a,b będą atomowymi programami. Ponadto niech 𝔎=(K,m𝔎) będzie strukturą Kripkego zdefiniowaną następująco

K ={s,t,u,v}
m𝔎(p) ={u,v}
m𝔎(q) ={t,v}
m𝔎(a) ={t,v,v,t,s,u,u,s}
m𝔎(b) ={u,v,v,u,s,t,t,s}

Następujący rysunek ilustruje 𝔎.

Następujące formuły są prawdziwe w 𝔎.

p[(ab*a)*]p
q[(ba*b)*]q

Ponadto niech α będzie programem

α=(aabb(abba)(aabb)*(abba))*.(14)

Program α traktowany jako wyrażenie regularne, generuje wszystkie słowa nad alfabetem {a,b} o parzystej liczbie wystąpień a oraz b. 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

{α*φ}{¬φ,¬αφ,¬α2φ,}

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.

(i)     α(φψ)    αφαψ
(ii)    [α](φψ)    [α]φ[α]ψ
Parser nie mógł rozpoznać (błąd składni): {\displaystyle (iii)\ \ \ [\alpha](\varphi\rightarrow\psi) \ \ \rightarrow\ \ ([\alpha]\varphi\rightarrow[\alpha]\psi)}
(iv)   α(φψ)    αφαψ
(v)    [α]φ[α]ψ    [α](φψ)
(vi)   α     
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 (iii)(v) nie zachodzą. Przykładowo implikacja odwrotna do (iv) nie jest spełniona w stanie u 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.

(i)    αβφ    αφβφ
(ii)   [αβ]φ     [α]φ[β]φ
(iii)  α;βφ      αβφ
(iv)   [α;β]φ      [α][β]φ
(v)    φ?ψ    (φψ)
(vi)   [φ?]ψ    (φψ).

Ostatnia grupa tautologii dotyczy operatora iteracji *.

Twierdzenie 10.9

Nastepujące formuły są tautologiami PDL.

(i)    [α*]φ    φ
(ii)   φ    α*φ
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ść (ii) mówi, że α* jest semantycznie relacją zwrotną. Przechodniość relacji α* jest wyrażona w (vi). Natomiast fakt, że α* zawiera relację α, jest wyrażony w (iv). Implikacja w (xi) wyraża zasadę indukcji. Bazą jest założenie, że własność φ jest spełniona w pewnym stanie u. Warunek indukcyjny mówi, że w każdym stanie osiągalnym z u 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 2|φ| 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

FL :Φ    2Φ
FL :{[α]φ|αΨ,φΦ}2Φ


przez wzajemną indukcję

(a)FL(p):={p}, gdy p jest zmienną zdaniową
(b)FL(φψ):={φψ}FL(φ)FL(ψ)
(c)FL():={}
(d)FL([α]φ):=FL([α]φ)FL(φ)
(e)FL([a]φ):={[a]φ}, gdy a jest atomowym programem
(f)FL([αβ]φ):={[αβ]φ}FL([α]φ)FL([β]φ)
(g)FL([α;β]φ):={[α;β]φ}FL([α][β]φ)FL([β]φ)
(h)FL([α*]φ):={[α*]φ}FL([α][α*]φ)
(i)FL([ψ?]φ):={[ψ?]φ}FL(ψ)

Zbiór FL(φ) jest nazywany domknięciem Fischera-Ladnera. Zauważmy, że definicja FL(φ) jest indukcyjna ze względu na budowę formuły φ, natomiast pomocnicza funkcja FL 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 (h) 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

(i) Dla dowolnej formuły φ mamy |FL(φ)||φ|.
(ii) 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 FL oraz FL. Pozostawimy go Czytelnikowi jako ćwiczenie.

Następny lemat ma charakter techniczny. Będzie wykorzystany w dowodzie lematu o filtracji.

Lemat 10.11

(i) Jeśli σFL(φ), to FL(σ)FL(φ).
(ii) Jeśli σFL([α]φ), to

FL(σ)FL([α]φ)FL(φ).

Dowód

Dowodzimy (i) oraz (ii) przez jednoczesną indukcję. Szczegóły pozostawiamy Czytelnikowi jako ćwiczenie.

Następujące własości FL są bezpośrednią konsekwencją Lematu 10.11.

Lemat 10.12

(i) Jeśli [α]ψFL(φ), to ψFL(φ).
(ii) Jeśli [ρ?]ψFL(φ), to ρFL(φ).
(iii) Jeśli [αβ]ψFL(φ), to [α]ψFL(φ) oraz [β]ψFL(φ).
(iv) Jeśli [α;β]ψFL(φ), to [α][β]ψFL(φ) oraz [β]ψFL(φ).
(v) Jeśli [α*]ψFL(φ), to [α][α*]ψFL(φ).


Dla danej formuły φ oraz struktury Kripkego 𝔎=(K,m𝔎) definiujemy nową strukturę 𝔎/FL(φ)=K/FL(φ),m𝔎/FL(φ), zwaną filtracją struktury 𝔎 przez FL(φ). Najpierw definiujemy binarną relację w zbiorze stanów 𝔎.

uv wtedy i tylko wtedy, gdy ψFL(φ)(um𝔎(ψ)vm𝔎(ψ)).

Innymi słowy, utożsamiamy stany u oraz v jeśli są one nierozróżnialne przez żadną formułę ze zbioru FL(ϕ). Filtracja struktury jest zwykłą konstrukcją ilorazową. Niech

[u] :={v|vu}
K/FL(φ) :={[u]|uK}
m𝔎/FL(φ)(p) :={[u]|um𝔎(p)}, gdy p jest zmienną losową
m𝔎/FL(φ)(a) :={[u],[v]|u,vm𝔎(a)}, gdy a jest atomowym programem.

Przekształcenie m𝔎/FL(φ) rozszerza się w zwykły sposób na wszystkie formuły i programy.

Następujący lemat pokazuje związek pomiędzy strukturami 𝔎 oraz 𝔎/FL(φ). 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 u,v będą stanami w strukturze Kripkego 𝔎.

(i) Dla dowolnej formuły ψFL(φ), mamy um𝔎(ψ) [u]m𝔎/FL(φ)(ψ).
(ii) Dla dowolnej formuły [α]ψFL(φ) zachodzi
(a) jeśli u,vm𝔎(α), to [u],[v]m𝔎/FL(φ)(α);
(a) jeśli [u],[v]m𝔎/FL(φ)(α) 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 2|φ| stanów.

Dowód

Jeśli φ jest spełnialna, to istnieje struktura Kripkego 𝔎 oraz stan u𝔎, taki że um𝔎(φ). Niech FL(φ) będzie domknięciem Fischera-Ladnera formuły φ. Na mocy Lematu 10.13 o filtracji mamy [u]m𝔎/FL(φ)(φ). Ponadto 𝔎/FL(φ) ma nie więcej stanów niż liczba wartościowań przypisujących wartości logiczne formułom z FL(φ). Tych ostatnich jest, na mocy Lematu 10.10 (i), co najwyżej 2|φ|.

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 2|ϕ| 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

(P0) 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

(MP)  φφψψ


(GEN)  φ[α]φ

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

(i)    Σ jest niesprzeczny wtedy i tylko wtedy, gdy Σ{φ} jest niesprzeczny lub Σ{¬φ} jest niesprzeczny;

(ii) jeśli Σ jest niesprzeczny, to Σ jest zawarty w maksymalnym niesprzecznym zbiorze formuł.


Ponadto, jeśli Σ jest maksymalnym niesprzecznym zbiorem formuł, to

(iii)  Σ zawiera wszystkie twierdzenia PDL;

(iv)   jeśli φΣ oraz φψΣ, to ψΣ;

(v)    φψΣ wtedy i tylko wtedy, gdy φΣ lub ψΣ;

(vi)   φψΣ wtedy i tylko wtedy, gdy φΣ oraz ψΣ;

(vii)  φΣ wtedy i tylko wtedy, gdy ¬φ∉Σ;

(viii) ∉Σ.

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:

(a) Dla dowolnej formuły ψ, jeśli ψΓ, to αψΣ.
(b) 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ę 𝔑=(N,m𝔑) 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 m𝔑(α*) było relacją zwrotną i przechodnią, zawierało relację m𝔑(α) oraz spełniało aksjomaty (P6)(P7). Tzn. zamiast warunku

m𝔑(α*):=n0m𝔑(α)n,(15)

żądamy, aby dla każdego programu α, relacja m𝔑(α*) była zwrotna, przechodnia, zawierała m𝔑(α) oraz spełniała następujące dwa warunki dla dowolnej formuły φ

m𝔑([α*]φ)=m𝔑(φ[α;α*]φ)(16)


m𝔑([α*]φ)=m𝔑(φ[α*](φ[α]φ)).(17)


Wracamy teraz do konstrukcji struktury z maksymalnych niesprzecznych zbiorów formuł. Zdefiniujemy niestandardową strukturę Kripkego 𝔑=(N,m𝔑) następująco: Elementami zbioru $N$ są maksymalne niesprzeczne zbiory formuł PDL. Dalej:


m𝔑(φ) :={s|φs}
m𝔑(α) :={s,t| dla wszystkich φ, jeśli φt, to αφs}
:={s,t| dla wszystkich φ, jeśli [α]φs, to φt}


Z Lematu Lematu 10.16 wynika, że obydwie definicje m𝔑(α) 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 (iii) 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 u,v będą stanami w 𝔑.

(i) Dla dowolnej formuły ψFL(φ), 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)} .
(ii) Dla dowolnej formuły [α]ψFL(φ) zachodzi
(a) jeśli u,vm𝔑(α), to [u],[v]m𝔑/FL(φ)(α);
(b) jeśli [u],[v]m𝔑/FL(φ)(α) oraz um𝔑([α]ψ) to vm𝔑(ψ).

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 (ii) 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 (ii) istnieje maksymalny niesprzeczny zbiór u formuł PDL zawierający ¬φ. Na mocy lematu o filtracji dla niestandardowych struktur Kripkego (Lemat 10.19) stwierdzamy, że ¬φ jest spełniona w stanie [u] skończonej struktury 𝔑/FL(φ). Ł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.