|
|
Linia 1: |
Linia 1: |
| ==Wprowadzenie==
| | {theor}{TWIERDZENIE}[section] |
| | {rem}{UWAGA}[section] |
| | {corol}{WNIOSEK}[section] |
| | {fact}{FAKT}[section] |
| | {ex}{PRZYKŁAD}[section] |
| | {defin}{DEFINICJA}[section] |
| | {lem}{LEMAT}[section] |
|
| |
|
| Na początku rozdziału o logice zdaniowej rozważaliśmy zdanie
| | {prf}{DOWÓD} |
|
| |
|
| <center>Jeśli <math>\textnormal{n}</math> jest liczbą pierwszą to <math>\textnormal{n}</math> jest liczbą nieparzystą lub <math>\textnormal{n}</math> jest równe '''2'''.</center>
| | {Wyra{Z}enia regularne,<br> automat minimalny} |
|
| |
|
| Opisaliśmy je wtedy formułą
| | ; Wprowadzenie |
| | : W tym wykładzie określimy rodzinę języków regularnych wolnego monoidu <math>A^{*} </math> |
| | oraz pewien formalny opis tych języków zwany wyrażeniami regularnymi.<br> |
| | Dla języka rozpoznawalnego <math>L</math> wprowadzimy pojęcie automatu minimalnego |
| | rozpoznającego <math>L</math> i prawej |
| | kongruencji syntaktycznej, która odgrywa istotną rolę w problemach zwiazanych |
| | z automatem minimalnym. |
|
| |
|
| <center><math>
| | ; Słowa kluczowe |
| | : wyrażenie regularne, prawa kongruencja syntaktyczna, kongruencja |
| | syntaktyczna, monoid syntaktyczny, automat minimalny. |
|
| |
|
| p \Rightarrow (q \vee r).
| | ==Wyrażenia regularne== |
| </math></center>
| |
| | |
| w której <math>p,q,r</math> odpowiadały odpowiednio zdaniom
| |
| | |
| :1. <math>\textnormal{n}</math> jest liczbą pierwszą,<br/>
| |
| :2. <math>\textnormal{n}</math> jest liczbą nieparzystą,<br/>
| |
| :3. <math>\textnormal{n}</math> jest równe '''2'''.<br/>
| |
| | |
| Podstawiając zamiast zdania <math>\textnormal{n}</math> ''jest liczbą pierwszą'' zmienną zdaniową <math>\textnormal{p}</math> ukrywamy jednak część informacji. Zdanie to mówi przecież o pewnej liczbie <math>\textnormal{n}</math>, co więcej zdania <math>{p,q}</math> i <math>\textnormal{r}</math> dotyczą tej samej liczby <math>\textnormal{n}</math>. Zapiszmy więc <math>p(n)</math> zamiast <math>\textnormal{p}</math> aby podkreślić fakt że prawdziwość <math>\textnormal{p}</math> zależy od tego jaką konkretną wartość przypiszemy zmiennej <math>\textnormal{n}</math>. Zdanie <math>p(n)</math> będzie prawdziwe jeśli za <math>\textnormal{n}</math> podstawimy jakąś liczbę pierwszą i fałszywe w przeciwnym przypadku. Zgodnie z tą konwencją nasze zdanie przyjmie postać
| |
| | |
| <center><math>
| |
| | |
| p(n) \Rightarrow (q(n) \vee r(n)).
| |
| </math></center>
| |
| | |
| | |
| Zwróćmy uwagę jednak, że trudno ocenić prawdziwość zdania <math>\textnormal{p}</math> dopóki
| |
| nie podstawimy w miejsce <math>\textnormal{n}</math> jakiejś konkretnej liczby. Z drugiej
| |
| strony jednak zdanie jakąkolwiek liczbę nie postawimy w miejsce <math>\textnormal{n}</math>
| |
| zdanie będzie prawdziwe. Możemy więc przeformułować je jako
| |
| | |
| Dla każdej liczby naturalnej <math>\textnormal{n}</math>, jeśli <math>\textnormal{n}</math> jest liczbą pierwszą to <math>\textnormal{n}</math> jest liczbą nieparzystą lub <math>\textnormal{n}</math> jest równe '''2'''.
| |
| | |
| Aby móc formalnie zapisywać zdania takie jak powyższe wprowadzimy
| |
| kwantyfikator <math>\forall</math> który będzie oznaczał ,,dla każdego" oraz
| |
| <math>\exists</math> który będzie oznaczał ,,istnieje". Każde wystąpienie
| |
| kwantyfikatora będzie dotyczyło pewnej zmiennej. W naszym
| |
| przykładzie napiszemy
| |
| | |
| <center><math>
| |
| | |
| \forall_n p(n) \Rightarrow (q(n) \vee r(n)).
| |
| </math></center>
| |
| | |
| Możemy teraz powiedzieć, że powyższa formuła jest prawdziwa w
| |
| zbiorze liczb naturalnych, gdzie <math>p(n),q(n),r(n)</math> będą oznaczać
| |
| odpowiednio <math>\textnormal{n}</math> jest liczbą pierwszą, <math>\textnormal{n}</math> jest liczbą nieparzystą, <math>\textnormal{n}</math> jest równe '''2'''.
| |
| | |
| Przy tej samej interpretacji <math>p(n),q(n)</math> moglibyśmy wyrazić zdanie
| |
| | |
| <center>Istnieje parzysta liczba pierwsza.</center>
| |
| | |
| jako
| |
| | |
| <center><math>
| |
| | |
| \exists_n p(n) \wedge \neg q(n)
| |
| </math></center>
| |
| | |
| ==Język rachunku predykatów== | |
| | |
| Podobnie jak dla rachunku zdań zaczniemy od zdefiniowania języka rachunku predykatów.
| |
| | |
| {{definicja|2.1||
| |
| Alfabet języka rachunku predykatów składa się z:
| |
| | |
| :1. symboli stałych (a,b,c,)
| |
| | |
| :2. symboli zmiennych (x,y,z,)
| |
| | |
| :3. symboli funkcji <math>(f^1, f^2, f^3, \dots ,g^1,g^2,g^3, \dots ,h^1, h^2, h^3,
| |
| \dots)</math>
| |
| | |
| :4. symboli predykatów <math>(p^1, p^2, p^3, \dots ,q^1,q^2,q^3, \dots ,r^1, r^2, r^3,
| |
| \dots)</math>
| |
| | |
| :5. spójników logicznych: <math>\Rightarrow,\neg</math>
| |
| | |
| :6. kwantyfikatorów: <math>\forall,\exists</math>
| |
| | |
| :7. nawiasów i przecinków (niekonieczne)
| |
| | |
| Przyjmujemy, że cztery pierwsze alfabety są nieskończone, w tym sensie że nigdy nam nie braknie ich symboli. Z każdym symbolem funkcyjnym oraz predykatywnym jest związana liczba (którą zapisujemy w indeksie górnym) która będzie oznaczała liczbę jego argumetów.
| |
| }}
| |
| | |
| Zwykle będą nam wystarczały symbole wymienione w nawiasach. Zanim przystąpimy do konstrukcji formuł zdefiniujemy tzw. termy.
| |
| | |
| {{definicja|2.2 [Termy]||
| |
| | |
| :1. każdy symbol stałej jest termem
| |
| | |
| :2. każdy symbol zmiennej jest termem
| |
| | |
| :3. jeśli <math>t_1,..,t_n</math> są termami, a <math>\alpha^n</math> jest symbolem funkcyjnym, to <math>\alpha^n(t_1,..,t_n)</math> jest termem
| |
| | |
| :4. nic innego nie jest termem
| |
| }}
| |
| {{przyklad|2.3||
| |
|
| |
| Jeśli rozważymy język, w którym '''1''','''2''','''3''' są symbolami stałych, <math>{x,y}</math> są symbolami zmiennych a <math>+^2,\times^2,-^1,s^1</math> są symbolami funkcji to poniższe napisy będą termami
| |
| | |
| :1. <math>+^2(1,x)</math>
| |
| | |
| :2. <math>-^1(3)</math>
| |
| | |
| :3. <math>s^1(-^1(3))</math>
| |
| | |
| :4. <math>\times^2(y,+^2(x,-^1(2)))</math>
| |
| | |
| Dla uproszczenia zapisu będziemy często pomijać liczby opisujące ilość argumentów symbolu. Symbole binarne będziemy czasem zapisywać w notacji infiksowej. Zgodnie z tą konwencją powyższe termy możemy zapisać jako
| |
| | |
| :1. <math>1+x</math>
| |
| | |
| :2. <math>-3</math>
| |
| | |
| :3. <math>s(-3)</math>
| |
| | |
| :4. <math>y\times(x+(-3))</math>
| |
| | |
| }}
| |
| | |
| Kiedy będziemy mówić o modelach zobaczymy, że termy będą interpretowane jako elementy rozważanej dziedziny, np. jeśli tą dziedziną będą liczby naturalne to termy będą interpretowane jako liczby naturalne.
| |
| Formuły rachunku predykatów zdefiniujemy w dwóch krokach. Zaczniemy od formuł atomowych.
| |
| | |
| {{definicja|2.4 [Formuły atomowe]||
| |
| | |
| Jeśli <math>t_1,..,t_n</math> są termami, a <math>\beta^n</math> jest symbolem predykatu, to <math>\beta^n(t_1,..,t_n)</math> jest formułą atomową.
| |
| }}
| |
| {{przyklad|2.5||
| |
| | |
| Kontynuując przykład dotyczący termów przyjmijmy dodatkowo, że w rozważanym języku <math>p^3, q^1, =^2</math> są symbolami predykatów wtedy formułami atomowymi będą
| |
| | |
| :1. <math>p^3(1+x,-3,y\times(x+(-3)))</math>
| |
| | |
| :2. <math>q^1(1)</math>
| |
| | |
| :3. <math>=^2(y\times(x+(-3)),2)</math>
| |
| | |
| Stosując analogiczną konwencję jak dla termów powyższe formuły atomowe zapiszemy jako
| |
| | |
| :1. <math>p(1+x,-3,y\times(x+(-3)))</math>
| |
| | |
| :2. <math>q(1)</math>
| |
| | |
| :3. <math>y\times(x+(-3))=2</math>
| |
| | |
| }}
| |
| | |
| Symbole predykatywne będą odpowiadały funkcjom, które elementom rozważanej dziedziny (lub parom, trójkom itd. elementów) przypisują wartość prawdy lub fałszu. Takie funkcje nazywamy predykatami. W przypadku liczb naturalnych możemy na przykład mówić o predykacie
| |
| pierwszości <math>p(n)</math>, który przyjmuje wartość prawdy jeśli <math>n</math> jest liczbą pierwszą i fałszu w przeciwnym przypadku. Podobnie możemy mówić o binarnym predykacie równości (zwyczajowo oznaczanym przez <math>=</math>). Dla argumentów <math>{x,y}</math> przyjmuje on wartość prawdy wtedy kiedy <math>\textnormal{x}</math> jest tą samą liczbą co <math>\textnormal{y}</math> i fałszu w przeciwnym przypadku. Formuły atomowe będą opisywały proste zdania typu <math>\textnormal{x}</math> jest liczbą pierwszą, <math>\textnormal{x}</math> dzieli <math>\textnormal{y}</math>, <math>\textnormal{x}</math> jest równe <math>\textnormal{y}</math>. Innymi słowy sprowadzają sie do stwierdzania czy dany zestaw argumentów ma pewną własność opisywaną predykatem.
| |
| | |
| '''Uwaga 2.6''' W oznaczeniach z poprzednich przykładów, napis <math>y\times(x+(-3))=q(1)</math> nie jest formułą atomową ani
| |
| termem. Gdyby predykat <math>\textnormal{q}</math> oznaczał np. bycie liczbą nieparzystą to
| |
| powyższy napis powinniśmy przeczytać jako
| |
| | |
| <center><math>y\times(x+(-3))</math> jest równe temu, że '''1''' jest liczbą
| |
| nieparzystą.</center>
| |
| | |
| Nie wolno porównywać elementów dziedziny (opisywanych przez termy) z
| |
| wartościami prawdy i fałszu.
| |
| | |
| Z formuł atomowych będziemy budować bardziej złożone formuły zgodnie
| |
| z poniższą definicją
| |
| | |
| {{definicja|2.7 [Formuły rachunku predykatów]||
| |
| | |
| :1. Formuły atomowe są formułami.
| |
| | |
| :2. Jeśli <math>\textnormal{A}</math> i <math>B</math> są formułami, to <math>(A \Rightarrow B)</math> oraz <math>\neg A</math> są formułami.
| |
| | |
| :3. Jeśli <math>\textnormal{A}</math> jest formułą i <math>\textnormal{x}</math> jest zmienną, to <math>\forall_x A</math> jest formułą.
| |
| | |
| :4. Nic innego nie jest formułą.
| |
| }}
| |
| Przyjmujemy analogiczną konwencję dotyczącą nawiasowania jak dla rachunku zdań.
| |
| | |
| {{przyklad|2.8||
| |
| | |
| W oznaczeniach z poprzednich przykładów poniższe napisy nie są formułami rachunku predykatów
| |
| | |
| :* <math>x+1</math>
| |
| | |
| :* <math>(x=1) \Rightarrow 2</math>
| |
| | |
| :* <math>\forall_x (x+y)</math>
| |
| | |
| :* <math>\forall_x (\neg x)</math>
| |
| | |
| Poniższe napisy są formułami rachunku predykatów
| |
| | |
| :* <math>x=1</math>
| |
| | |
| :* <math>x=1 \Rightarrow x=2</math>
| |
| | |
| :* <math>\forall_x q(x+y)</math>
| |
| | |
| :* <math>\forall_x \neg (x=0)</math>
| |
| | |
| :* <math>\forall_x \forall_z \neg (x=0)</math>
| |
| | |
| :* <math>\forall_x \forall_y \neg (x=y)</math>
| |
| | |
| }}
| |
| | |
| {{cwiczenie|2.1||
| |
| | |
| Z poniższych formuł wypisz wszytkie termy i formuły atomowe
| |
| | |
| :1. <math>\forall_x \forall_y (s(x)=s(y) \Rightarrow x=y)</math>
| |
| | |
| :2. <math>\forall_x \neg s(x)=0 </math>
| |
| | |
| :3. <math>\forall_x (\neg (x=0) \Rightarrow (\exists_y s(y)=x))</math>
| |
| | |
| :4. <math>\forall_x x+0=x</math>
| |
| | |
| :5. <math>\forall_x \forall_y x+s(y)=s(x+y)</math>
| |
| | |
| <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none">
| |
| | |
| :1.
| |
| ::* termy: <math>x,y,s(x),s(y)</math>
| |
| | |
| ::* formuły atomowe: <math>s(x)=s(y),x=y</math>
| |
| | |
| :2.
| |
| | |
| ::* termy: <math>x,s(x),0</math>
| |
| | |
| ::* formuły atomowe: <math>s(x)=0</math>
| |
| | |
| :3.
| |
| | |
| ::* termy: <math>x,0,y,s(y)</math>
| |
| | |
| ::* formuły atomowe: <math>x=0, s(y)=x</math>
| |
| | |
| :4.
| |
| | |
| ::* termy: <math>x,0,x+0</math>
| |
| | |
| ::* formuły atomowe: <math>x+0=x</math>
| |
| | |
| :5
| |
| | |
| ::* termy: <math>x,y,s(y),x+y,s(x+y)</math>
| |
| | |
| ::* formuły atomowe: <math>x+s(y)=s(x+y)</math>
| |
| </div></div>
| |
| }}
| |
| | |
| | |
| Często będziemy używać dodatkowych spójników <math>\wedge, \vee, \Leftrightarrow</math>.
| |
| Ponieważ wszystkie dadzą się zdefiniować przy pomocy <math>\Rightarrow</math> i
| |
| <math>\neg</math> nie włączamy ich do języka, a napisy w których występują
| |
| będziemy traktować jako skróty. Ustalmy poniższe definicje
| |
| | |
| :1. <math>\phi \vee \psi \stackrel{\textrm{def}}{\equiv} \phi \Rightarrow (\phi \Rightarrow \psi)</math> (może jakoś inaczej?)
| |
| | |
| :2. <math>\phi \wedge \psi \stackrel{\textrm{def}}{\equiv} \neg ( \phi \Rightarrow \neg \psi)</math>
| |
| | |
| :3. <math>\phi \Leftrightarrow \psi \stackrel{\textrm{def}}{\equiv} (\phi \Rightarrow \psi) \wedge (\psi \Rightarrow \phi)</math>
| |
| | |
| ===Kwantyfikator egzystencjaly===
| |
| | |
| Wprowadzimy jeszcze jeden bardzo ważny skrót - kwantyfikator
| |
| egzystencjalny, oznaczamy go przez <math>\exists</math> i definiujemy w
| |
| następujący sposób
| |
| | |
| <center><math>
| |
| | |
| \exists_x \phi \stackrel{\textrm{def}}{\equiv} \neg (\forall_x \neg \phi)
| |
| </math></center>
| |
| | |
| | |
| Nieformalnie kwantyfikator egzystencjalny mówi o tym, że istnieje jakiś obiekt, który podstawiony w miejsce <math>\textnormal{x}</math> uczyni formułę <math>{\phi}</math>
| |
| prawdziwą. Zdefiniowaliśmy go poprzez równoważne stwierdzenie które mówi że nieprawdą jest, że każdy obiekt podstawiony w miejsce <math>\textnormal{x}</math> falsyfikuje <math>{\phi}</math>. Zgodnie z powyższą konwencją formułę ze wstępu
| |
| | |
| <center><math>
| |
| | |
| \exists_n [p(n) \wedge \neg q(n)]
| |
| </math></center>
| |
| | |
| powinniśmy rozumieć jako
| |
| | |
| <center><math>
| |
| | |
| \neg \forall_n \neg (p(n) \wedge \neg q(n)).
| |
| </math></center>
| |
| | |
| ===Kwantyfikatory ograniczone===
| |
| | |
| Kwantyfikatory ograniczone są skrótami które definujemy następująco
| |
| | |
| :1. <math>\forall_{x:\phi} \psi \stackrel{\textrm{def}}{\equiv} \forall_x \phi \Rightarrow \psi</math>
| |
| | |
| :2. <math>\exists_{x:\phi} \psi \stackrel{\textrm{def}}{\equiv} \exists_x \phi \wedge \psi</math>
| |
| | |
| i czytamy
| |
| | |
| :1. dla każdego <math>\textnormal{x}</math> które spełnia <math>{\phi}</math> spełnione jest <math>{\psi}</math>
| |
| | |
| :2. istnieje <math>\textnormal{x}</math> spełniające <math>{\phi}</math> które spełnia <math>{\psi}</math>
| |
| | |
| Zgodnie z tą konwencją formułę 1.1 możemy zapisać następująco
| |
| | |
| | |
| <center><math>
| |
| | |
| \forall_{n:p(n)} q(n) \vee r(n).
| |
| </math></center>
| |
| | |
| | |
| Podobnie formułę '''??''' zapiszemy jako
| |
| | |
| <center><math>
| |
| | |
| \exists_{n:p(n)}\neg q(n)
| |
| </math></center>
| |
| | |
| | |
| {{cwiczenie|2.2||
| |
| | |
| Wyeliminuj wszystkie skróty z napisu
| |
|
| |
|
| <center><math> | | Niech <math>A</math> będzie skończonym alfabetem. Rodzina <math>\mathcal{REG}(A^{*}) </math> '''języków regularnych''' |
| | nad alfabetem <math>A</math> to najmniejsza, w sensie inkluzji, rodzina <math>\mathcal{R} </math> języków |
| | zawartych w <math>A^*</math> taka, że: |
|
| |
|
| \exists_{x:\phi} \psi | | # <math>\emptyset \in\mathcal{R} </math>, <math>\forall a \in A \;\;\; \{ a \} \in\mathcal{R} </math> |
| </math></center> | |
|
| |
|
| <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Podpowiedź 1 </span><div class="mw-collapsible-content" style="display:none"> | | # jeśli <math>X, Y \in\mathcal{R} </math>, to <math>X \cup Y, \;\; X \cdot Y \;\; \in\mathcal{R} </math> |
|
| |
|
| : eliminacja kwantyfikatora ograniczonego:
| | # jeśli <math> X \in\mathcal{R} </math>, to <math>X^* = \bigcup_{n=0} ^\infty X^n \in\mathcal{R} </math> |
|
| |
|
| <center><math> | | Wprost z definicji wynika, że <math>\left\{ 1\right\} =\emptyset ^{*}\in \mathcal{R} </math> oraz |
| | że dla dowolnego języka regularnego zachodzi równość |
| | <math>X\in \mathcal{R} </math> jest |
|
| |
|
| \exists_{x:\phi} \psi \stackrel{\textrm{def}}{\equiv}
| | <center><math>X^{+}=\bigcup ^{\infty }_{n=1}X^{n}=X\cdot X^{*}\in \mathcal{R}.</math></center> |
| \exists_x \phi \wedge \psi | |
| </math></center> | |
| </div></div>
| |
|
| |
|
| <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Podpowiedź 2 </span><div class="mw-collapsible-content" style="display:none"> | | Wprowadzona w ten sposób definicja rodziny języków regularnych wymaga |
| | uzasadnienia faktu, iż definiowany obiekt, definiowana rodzina, istnieje. Zauważmy więc, |
| | że warunki 1-3 definicji [[##defin:zbreg|Uzupelnic defin:zbreg|]] spełnia na przykład |
| | rodzina <math>\mathcal{P}(A^{*}) </math> wszystkich podzbiorów <math>A^*</math>, a zatem klasa takich |
| | rodzin nie jest pusta. Ponadto |
| | łatwo możemy stwierdzić, że jeśli rodziny <math>\mathcal{R}_{1},\: \mathcal{R}_{2} </math> spełniają warunki 1-3 powyższej definicji, |
| | to rodzina <math>\mathcal{R}_{1}\cap \mathcal{R}_{2} </math> również spełnia te warunki. Stąd możemy |
| | wyprowadzić wniosek, że najmniejsza rodzina |
| | spełniającą te warunki, to przecięcie |
|
| |
|
| : eliminacja kwantyfikatora egzystencjalnego
| | <center><math>\mathcal{REG}(A^{*})=\bigcap \mathcal{R},</math></center> |
|
| |
|
| <center><math> | | po wszystkich rodzinach <math>\mathcal{R} </math> spełniających warunki 1-3 definicji [[##defin:zbreg|Uzupelnic defin:zbreg|]]. |
|
| |
|
| \exists_x \phi \wedge \psi \stackrel{\textrm{def}}{\equiv} | | Zauważmy, że w świetle powyższej definicji fakt, że <math>X \in\mathcal{REG}(A^{*}) </math> oznacza, że <math>X</math> można |
| \neg \forall_x \neg(\phi \wedge \psi)
| | uzyskać z liter alfabetu i zbioru pustego <math>\emptyset</math> |
| </math></center> | | poprzez zastosowanie wobec tych "elementarnych klocków" skończonej liczby działań: sumy , |
| </div></div> | | katenacji i gwiazdkowania. Na odwrót, każdy zbiór otrzymany w ten sposób jest |
| | elementem rodziny <math>\mathcal{REG}(A^{*}) </math>. Ta obserwacja prowadzi do pojęcia wyrażeń |
| | regularnych, formalnego zapisu języków regularnych. |
|
| |
|
| <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"> | | Niech <math>A</math> będzie alfabetem, a zbiór <math>\{+ , \star , \emptyset , (,)\}</math> |
| : Pozostało jedynie wyeliminować <math>\wedge</math>
| | alfabetem rozłącznym z <math>A</math>. |
| | Słowo <math>{\bf \alpha} \in {\bf (}A \cup \{ + , \star , \emptyset , (,)\}{\bf )}^*</math> |
| | jest '''wyrażeniem regularnym ''' nad alfabetem <math>A</math> wtedy i |
| | tylko wtedy, jeśli: |
|
| |
|
| <center><math> | | # <math>{\bf \alpha} = \emptyset</math> |
| | # <math>{\bf \alpha} = a \in A \;\; ({\bf \alpha}</math> jest literą) |
|
| |
|
| \neg \forall_x \neg(\phi \wedge \psi) \stackrel{\textrm{def}}{\equiv} | | # <math>{\bf \alpha}</math> jest w postaci <math> ({\bf \beta} + {\bf \gamma}), ({\bf \beta} {\bf \gamma} ), {\bf \gamma} ^* </math>, gdzie <math> {\bf \beta}, {\bf \gamma} </math>są wyrażeniami regularnymi nad alfabetem <math>A</math>. |
| \neg \forall_x \neg(\neg(\phi \Rightarrow \neg \psi)) | |
| </math></center> | |
| </div></div> | |
| }}
| |
|
| |
|
| ===Zmienne wolne i związane===
| | Przyjmujemy oznaczenia: |
|
| |
|
| Jeśli <math>\textnormal{x}</math> jest zmienną, a <math>{\phi}</math> jest formułą to każda pozycję w napisie <math>{\phi}</math> na której występuje symbol <math>\textnormal{x}</math> i nie jest poprzedzony bezpośrednio kwantyfikatorem, nazywamy wystąpieniem zmiennej <math>\textnormal{x}</math>. Wystąpienia dzielimy na ''wolne'' i ''związanie''. Wystąpienie jest związane jeśli znajduje się ,,pod działaniem" jakiegoś kwantyfikatora.
| | <center><math>\emptyset ^{*}=1 \;\;\text{ oraz }\; \alpha ^{*}\alpha =\alpha ^{+}. </math></center> |
|
| |
|
| {{definicja|2.9|| | | Rodzinę wyrażeń regularnych nad alfabetem <math>A</math> oznaczamy symbolem <math>\mathcal{WR} </math>. |
| Rodzaj wystąpienia zmiennej w formule określamy zgodnie z poniższymi regułami:
| | Łatwo zauważyć związek pomiędzy wyrażeniami regularnymi oraz wprowadzoną wcześniej |
| | rodziną <math>\mathcal{REG}(A^{*}) </math>, regularnych języków wolnego monoidu |
| | <math>A^{*} </math>. Związek ten ustala poniższa definicja. |
|
| |
|
| :1. Jeśli <math>{\gamma}</math> jest formułą atomową to wszystkie wystąpienia zmiennych w napisie <math>{\gamma}</math> są '''wolne'''.
| | '''Wartościowaniem wyrażenia regularnego''' nazywamy |
| | odwzorowanie |
|
| |
|
| :2. Jeśli formuła jest postaci <math>\phi \Rightarrow \psi</math> lub <math>\neg \phi</math> to wystąpienia zmiennych pozostają takie same jak wystąpienia w w <math>{\phi}</math> oraz <math>{\psi}</math>.
| | <center><math>|\: \: |:\mathcal{WR}\longrightarrow \mathcal{P}(A^{*})</math></center> |
|
| |
|
| :3. Jeśli formuła jest postaci <math>\forall_x \phi</math> to wszystkie wystąpienia zmiennej <math>\textnormal{x}</math> w <math>\forall_x \phi</math> są '''związane'''. | | określone następująco: |
| }}
| |
| | |
| {{przyklad|2.10||
| |
| Rozważamy język z przykładu 2.5
| |
|
| |
|
| :1. w formule <math>y\times(x+(-3))=x</math> wszystkie wystąpienia zmiennych są wolne. Zmienna <math>\textnormal{x}</math> ma dwa wystąpienia a zmienna <math>\textnormal{y}</math> jedno.
| | # <math> \mid \emptyset \mid = \emptyset </math> |
|
| |
|
| :2. w formule <math>\forall_x y\times(x+(-3))=x</math> wszystkie wystąpienia zmiennej <math>\textnormal{y}</math> są wolne, i wszystkie wystąpienia zmiennej <math>\textnormal{x}</math> są związane (nadal są tylko dwa wystąpienia <math>\textnormal{x}</math> ponieważ zgodnie z definicją nie liczymy symbolu <math>\textnormal{x}</math> w <math>\forall_x</math>)
| | # <math>\mid a \mid = \{ a \} </math> |
|
| |
|
| :3. w formule <math>\forall_x \exists_y y\times(x+(-3))=x</math> wszystkie wystąpienia zmiennych <math>\textnormal{x}</math> oraz <math>\textnormal{y}</math> są związane
| | # <math>\mid ({\bf \alpha} + {\bf \beta})\mid = \mid {\bf \alpha} \mid \cup \mid {\bf \beta} \mid</math> <br> <math> \mid ({\bf \alpha} {\bf \beta}) \mid = \mid {\bf \alpha} \mid \cdot \mid {\bf \beta} \mid </math><br> <math>\mid {\bf \alpha}^* \mid = \mid {\bf \alpha} \mid ^*</math> |
|
| |
|
| :4. w formule <math>x=2 \Rightarrow \exists_x x=2</math> zmienna <math>\textnormal{x}</math> ma jedno wystąpienie wolne (pierwsze) i jedno związane (drugie).
| | Odwzorowanie określające wartość wyrażenia regularnego nie jest, jak można zauważyć, |
| | iniekcją. Oznacza to, że różne wyrażenia regularne mogą mieć tę samą wartość, |
| | czyli określać ten sam język regularny. Prostym przykładem tego faktu są wyrażenia regularne |
| | <math>a^*</math> oraz <math>(a^*)^*</math>. Zwróćmy uwagę na wartość wyrażenia regularnego oznaczonego symbolem <math>1</math>. |
| | Jest mianowicie |
| | <center><math> \mid 1 \mid = \mid \emptyset^* \mid = \mid \emptyset \mid^* = \emptyset^* = \{1\} </math></center> |
| | Wprowadza się następującą relację równoważności |
| | w rodzinie wyrażeń regularnych. |
|
| |
|
| :5. w formule <math>\forall_x (x=2 \Rightarrow \exists_x x=2)</math> obydwa wystąpienia zmiennej <math>\textnormal{x}</math> są związane.
| | Wyrażenia regularne <math> {\bf \alpha} , {\bf \beta} </math> nazywamy '''równoważnymi''' i |
| }}
| | oznaczamy <math>{\bf \alpha} = {\bf \beta} </math>, jeśli <math> \mid {\bf \alpha} \mid = \mid {\bf \beta} \mid </math>. |
|
| |
|
| {{cwiczenie|2.3||
| | Problem równoważności wyrażeń regularnych jest rozstrzygalny i jest PSPACE-zupełny. |
| | Wrócimy do tego problemu w kolejnych wykładach. |
|
| |
|
| W podanych poniżej formułach podkreśl wszystkie wolne wystąpienia zmiennych.
| | Oto przykłady równoważnych wyrażeń regularnych |
|
| |
|
| :1. <math>p(z) \Rightarrow \exists_z p(z)</math>
| | <center><math>\aligned\alpha_1 + \alpha_2 & = & \alpha_2+ \alpha_1\\ (\alpha_1 + \alpha_2) +\alpha_3 & = & \alpha_1+ (\alpha_2 + \alpha_3) \\ |
| | (\alpha_1 \alpha_2) \alpha_3 & = & \alpha_1 (\alpha_2 \alpha_3) \\ (\alpha_1 + \alpha_2) \alpha_3 & = & \alpha_1\alpha_3 + \alpha_2 \alpha_3 \\ |
| | \alpha_1 ( \alpha_2 +\alpha_3) & = & \alpha_1 \alpha_2 + \alpha_1 \alpha_3 \\ |
| | (\alpha^*)^* & = & \alpha^*\\ (\alpha^*_1 \alpha^*_2)^* & = & (\alpha_1 + \alpha_2)^*\\ |
| | (\alpha^+ + 1) & = & \alpha^* \endaligned</math></center> |
|
| |
|
| :2. <math>\forall_y ((\exists_z q(y,z)) \Rightarrow q(y,z))</math>
| | gdzie <math>\alpha ,\alpha _{1},\alpha _{2},\alpha _{3}\in \mathcal{WR} </math>. |
|
| |
|
| :3. <math>q(x,y) \Rightarrow \forall_x (q(x,y)\Rightarrow (\forall_y q(x,y)))</math> | | { Wprost z definicji wyrażenia regularnego wynika następujaca równoważność:} |
|
| |
|
| :4. <math>\forall_x \exists_y q(x,y) \Rightarrow \exists_x \forall_y q(x,y)</math>
| | {{fakt|[Uzupelnij]|| |
| | <math>L\in \mathcal{REG}(A^{*}) \Longleftrightarrow L = \mid {\bf \alpha} \mid </math> dla pewnego <math>{\bf \alpha} \in\mathcal{WR} </math>. |
|
| |
|
| :5. <math>(\exists_z p(z)) \Rightarrow (\forall_z q(z,z) \vee \exists_x q(z,x))</math>
| |
| }} | | }} |
|
| |
|
| <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"> | | Wyrażenia regularne dają bardzo wygodne narzędzie zapisu języków należących do |
| | | rodziny <math>\mathcal{REG}(A^{*})</math>. |
| :1. <math>p(z) \Rightarrow \exists_z p(\underline{z})</math>
| | Np. język nad alfabetem |
| | <math>\{ a,b\}</math> złożony ze wszystkich słów zaczynających się lub kończących na literę <math>a</math> |
| | zapisujemy jako <math>a(a+b)^* +(a+b)^*a</math>.<br> |
| | Z kolei wyrażenie regularne <math>a^+ b^+</math> oznacza język <math>L=\{a^nb^m : n,m\geq 1\}</math>. |
|
| |
|
| :2. <math>\forall_y ((\exists_z q(y,z)) \Rightarrow q(y,\underline{z}))</math>
| | Dla dalszego uproszczenia zapisu przyjmiemy w naszym wykładzie następującą umowę. Jeśli |
| | język <math>L</math> jest wartością wyrażenia regularnego <math>\alpha</math>, czyli <math>L= \mid \alpha \mid</math>, to |
| | będziemy zapisywać ten fakt jako <math>L= \alpha</math>. Będziemy zatem mówić w dalszym ciągu |
| | wykładu o ''języku <math>\alpha</math>.'' Z tych samych powodów, dla dowolnego alfabetu |
| | <math>A=\{a_1,.....,a_n\}</math> będziemy używać zapisu <math>A</math> w miejsce <math>a_1 +.....+a_n</math>. |
|
| |
|
| :3. <math>q(\underline{x},\underline{y}) \Rightarrow \forall_x (q(x,\underline{y})\Rightarrow (\forall_y q(x,y)))</math>
| | Zauważmy na koniec rozważań o wyrażeniach regularnych, że dość prosty w zapisie język |
| | <math>L=\{a^nb^n : n\geq 1\}</math> nie należy do rodziny <math>\mathcal{REG}(A^{*})</math> i nie |
| | można go zapisać przy pomocy wyrażeń regularnych. |
|
| |
|
| :4. <math>\forall_x \exists_y q(x,y) \Rightarrow \exists_x \forall_y q(x,y)</math>
| | ---- dla dociekliwych - start ---- |
|
| |
|
| :5. <math>(\exists_z p(z)) \Rightarrow (\forall_z q(z,z) \vee \exists_x q(\underline{z},x))</math>
| | Kończąc ten fragment wykładu poświęcony wyrażeniom regularnym warto wspomnieć o problemie |
| </div></div> | | "star height", czyli głębokości zagnieżdżenia gwiazdki w wyrażeniu regularnym. |
| | Mając wyrażenia regularne <math>\alpha ,\alpha _{1},\alpha _{2}\in \mathcal{WR} </math> |
| | głębokość zagnieżdżenia gwiazdki definiuje się jako liczbę <math>sh(\alpha ) </math> |
| | równą <math>0 </math>, gdy <math>\alpha </math> jest literą z alfabetu lub zbiorem pustym, |
| | równą <math>max\{i,j\}, </math> gdy <math>\alpha =\alpha _{1}\cup \alpha _{2} </math> lub <math>\alpha =\alpha _{1}\cdot \alpha _{2} </math> |
| | i <math>sh(\alpha _{1})=i </math>, <math>sh(\alpha _{2})=j </math> oraz równą <math>i+1 </math> dla |
| | <math>\alpha =(\alpha _{1})^{*} </math>. Głębokość zagnieżdżenia gwiazdki |
| | dla języka regularnego <math>L </math> określa się jako najmniejszą liczbę <math>sh(L)=sh(\alpha ) </math>, |
| | gdzie <math>\alpha </math> jest wyrażeniem regularnym reprezentującym język <math>L </math>. |
| | Głębokość zagnieżdżenia gwiazdki jest więc jakby miarą złożoności pętli występujących |
| | w automacie rozpoznającym język <math>L </math>. Ustalono, że dla alfabetu złożonego |
| | z jednej litery głębokość zagnieżdżenia gwiazdki jest równa co najwyżej <math>1 </math> |
| | oraz że dla alfabetu o co najmniej dwóch literach dla dowolnej liczby <math>k\in \Bbb N </math> |
| | można wskazać język regularny <math>L </math> taki, że <math>sh(L)=k </math>. Problemem otwartym |
| | pozostaje określenie algorytmu określającego głębokość |
| | zagnieżdżenia gwiazdki dla dowolnego języka w klasie języków regularnych. |
|
| |
|
| {{definicja|2.11||
| | ---- dla dociekliwych - end ---- |
| Formułę <math>{\phi}</math> nazywamy domkniętą jeśli żadna zmienna nie ma
| |
| wolnych wystąpień w <math>{\phi}</math>.
| |
| }}
| |
| {{cwiczenie|2.4||
| |
|
| |
|
| Które z formuł z ćwiczenia 2.3 są domknięte?
| | ==Prawa kongruencja syntaktyczna i kongruencja syntaktyczna== |
| }}
| |
| '''Hint 1.'''
| |
|
| |
|
| <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none">
| | Opis języka regularnego za pomocą wyrażeń regularnych jest bardzo wygodny, |
| : Jedynie formuła <math>\forall_x \exists_y q(x,y) \Rightarrow \exists_x \forall_y q(x,y)</math> jest formułą domkniętą.
| | ale nie jedyny. W kolejnych wykładach będziemy wprowadzać inne reprezentacje |
| </div></div>
| | języków regularnych, takie jak automaty czy gramatyki. Pojęcia, które wprowadzimy |
| | teraz są również narzędziami dla opisu i badań własności języków regularnych. W |
| | szczególności służą do konstrukcji możliwie najprostszego automatu rozpoznającego |
| | dany język regularny, zwanego automatem minimalnym. |
|
| |
|
| ===Podstawienia===
| | Niech <math>\; L \subset A^* \;</math> będzie dowolnym językiem. W monoidzie <math>\; A^* \;</math> wprowadzamy następujące |
| | dwie relacje: |
|
| |
|
| ==Aksjomatyka Rachunku Predykatów==
| | # '''prawą kongruencję syntaktyczną''' <math>\; P_L^r , \;</math> przyjmując<br> |
| | dla dowolnych słów <math>u, v \in A^* </math> {}<br> |
| | <math>u \; P_L^r \; v \;\; \mbox{ wtedy i tylko wtedy, gdy |
| | spełniony jest warunek}</math> <center><math> \forall w \in A^* \;\; uw \in L \; \Leftrightarrow \; vw \in L, </math></center> |
|
| |
|
| Rachunek predykatów podobnie jak klasyczny rachunek zdań może być
| | # '''kongruencję syntaktyczną''' <math>\; P_L , \;</math> przyjmując <br> |
| wprowadzony aksjomatycznie. Pierwsza grupa aksjomatów to aksjomaty
| | dla dowolnych <math>u, v \in A^* </math>{}<br> |
| klasycznego rachunku zdań. Druga dotyczy kwantyfikatora <math>\forall</math>
| | <math>u \; P_L \; v \;\; \mbox{ wtedy i tylko wtedy, gdy spełniony jest warunek} </math> <center><math> \forall w_1, w_2 \in A^* \;\; w_1uw_2 \in L \; \Leftrightarrow \; w_1vw_2 \in L. </math></center> |
| oraz jego interakcji z implikacją. Przypomnijmy, że kwantyfikator
| |
| <math>\exists</math> traktujemy jako pewien skrót zapisu. | |
|
| |
|
| {{definicja|3.1||
| | Łatwo stwierdzić, że nazwy wprowadzonych relacji pokrywają się z ich własnościami, to |
| | znaczy relacja <math>\; P_L^r , \;</math> |
| | jest rzeczywiście prawą kongruencją, a <math>\; P_L , \;</math> kongruencją. |
|
| |
|
| Schematy aksjomatów rachunku predykatów
| | {{cwiczenie|[Uzupelnij]|| |
|
| |
|
| :1. (Aksjomaty logiki zdaniowej) Każda formuła pasująca do któregokolwiek z poniższych schematów jest tautologią
| | Niech <math>A=\{ a,b\}</math> będzie alfabetem. |
|
| |
|
| ::(a) <math>(\phi \Rightarrow (\psi \Rightarrow \phi))</math>
| | # Dla języka <math>L=a^+b^+ </math> relacja |
|
| |
|
| ::(b) <math>(\phi \Rightarrow (\nu \Rightarrow \psi) \Rightarrow \left((\phi \Rightarrow \nu) \Rightarrow (\phi \Rightarrow \nu) \right)</math> | | ## <math>P_L^r</math> ma <math>4</math> klasy równoważności: |
| | <math>\;\;L, \;\;A^*baA^*+b^+,\;\; a^+, \;\;1</math> |
|
| |
|
| ::(c) <math>(\neg \phi \Rightarrow \psi) \Rightarrow (\neg \phi \Rightarrow \neg \psi) \Rightarrow \phi</math> | | ## <math>P_L</math> ma <math>5</math> klas równoważności: |
| | <math>L, \;\;A^*baA^*,\;\;b^+,\;\; a^+, 1</math> |
|
| |
|
| :2. (Aksjomaty dotyczące kwantyfikatora) | | # Dla języka <math>L=\{a^nb^n : n\geq 1\}</math> obie relacje mają nieskończony indeks |
|
| |
|
| ::(a) Dla dowolnej formuły <math>{\phi}</math> oraz termu <math>\textnormal{t}</math> następująca formuła jest aksjomatem <math>\forall_x \phi \Rightarrow (\phi [x \leftarrow t])</math> (uwaga na podstawienie)
| | ## dla <math>P_L^r</math> klasami równoważności są zbiory <br> |
| | <math>L_i =\{a^nb^{n-i} : n\geq i,n \geq 1\}</math> dla <math>i \in \mathbb{N}_0</math>, <math>A^* \setminus\bigcup_{i=0}^\infty L_i</math> |
|
| |
|
| ::(b) Dla dowolnej formuły <math>{\phi}</math> oraz zmiennej <math>\textnormal{x}</math>, która nie ma wolnych wystąpień w <math>{\phi}</math> następująca formuła jest aksjomatem <math>\phi \Rightarrow \forall_x \phi</math>
| | ## dla <math>P_L</math> klasami równoważności są zbiory <br> |
| | <math>L_i =\{a^nb^{n-i} : n\geq i,n \geq 1\}</math> dla <math>i \in \mathbb{N}_0</math>,<br> |
| | <math>L'_i =\{a^{n-i}b^n : n\geq i,n \geq 1\}</math> dla <math>i \in \mathbb{N}</math> <br> |
| | <math>A^* \setminus[\bigcup_{i=1}^\infty (L_i\cup L'_i )\cup L_0 ]</math> |
|
| |
|
| ::(c) Dla dowolnych formuł <math>{\phi}</math> i <math>{\psi}</math> aksjomatem jest formuła <math>\forall_x(\phi \Rightarrow \psi) \Rightarrow ((\forall_x \phi)\Rightarrow(\forall_x \psi))</math>
| |
| }} | | }} |
| Podobnie jak w rachunku zdań dowodem formuły <math>{\phi}</math> nazwiemy ciąg formuł <math>\phi_0, \dots, \phi_n</math> taki, że <math>\phi_n</math> jest tym samym napisem co <math>{\phi}</math> a każda formuła <math>\phi_i</math> dla <math>i<n</math> jest aksjomatem rachunku predykatów lub powstaje z dwóch formuł występujących wcześniej w dowodzie poprzez zastosowanie reguły Modus Ponens <u>'''Modus Ponens (Wykład2)'''</u>.
| |
|
| |
|
| {{definicja|3.2||
| | Udowodnimy następujące własności relacji <math>\; P_L^r \;</math> oraz <math>\; P_L \;</math>. |
| Twierdzeniem rachunku predykatów nazywamy dowolną formułę którą da się dowieść z aksjomatów rachunku predykatów.
| |
| }}
| |
| {{przyklad|3.3||
| |
|
| |
| np. <math>p(t) \Rightarrow \exists_x p(x)</math>.
| |
| }}
| |
|
| |
|
| ==Modele== | | Prawa kongruencja syntaktyczna <math>\; P_L^r \;</math> jest największą w sensie inkluzji spośród wszystkich |
| | prawych kongruencji <math>\rho </math> takich, że <center><math>L = \bigcup_{w\in L}[w]_\rho </math></center> |
| | Kongruencja syntaktyczna <math>\; P_L \;</math> jest największą w sensie inkluzji spośród wszystkich |
| | kongruencji <math>\rho </math> takich, że <center><math>L = \bigcup_{w\in L}[w]_\rho </math></center> |
|
| |
|
| Dotychczas wprowadziliśmy rachunek predykatów aksjomatycznie. Zaletą
| | Dowód przeprowadzimy dla prawej kongruencji syntaktycznej. Uzasadnienie tezy dla |
| takiego definiowania jest niewielka ilość potrzebnych pojęć. Z
| | kongruencji <math>\; P_L \;</math> przebiega podobnie. |
| drugiej strony jednak dowody z aksjomatów są żmudne i nie sprzyjają
| | Niech <math>\;\rho \;</math> będzie dowolną prawą kongruencją spełniającą założenia i |
| budowaniu intuicji. W przypadku rachunku zdań widzieliśmy, że ten
| | niech <math>u\rho v </math>. Zatem dla każdego <math>w\in A^{*} </math> jest |
| sam zbiór formuł można równoważnie zdefiniować za pomocą matrycy
| |
| Boolowskiej <u>'''matryca boolowska(Wykład2)'''</u>. Niestety w przypadku rachunku
| |
| predykatów nie istnieje taka skończona struktura, która pozwalałaby
| |
| nam stwierdzać czy formuła jest twierdzeniem. Zobaczymy jednak, że
| |
| pewne struktury warto rozważać. Mówiąc o modelach będziemy musieli
| |
| użyć naiwnej teorii zbiorów opisanej w pierwszym rozdziale.
| |
| Decydujemy się na to nadużycie w celu zdobycia dobrych intuicji i
| |
| sprawności w posługiwaniu się kwantyfikatorami.
| |
|
| |
|
| {{przyklad|4.1||
| | <center><math>uw\rho vw \Rightarrow (uw\in L\Leftrightarrow vw\in L) \Leftrightarrow u\; P_L^r \; v. </math></center> |
|
| |
|
| Rozważmy następujące zdanie
| | W konsekwencji <math>\rho \subseteq P_L^r.</math> W |
| | szczególności więc dla dowolnego <math> u \in A^*</math> ma miejsce inkluzja <math>[u]_\rho \; \subseteq \; [u]_{P_L^r}.</math> Zatem <math>L\subset \bigcup _{w\in L}[w]_{P^{r}_{L}} </math>. |
| | Aby udowodnić inkluzję w stronę przeciwną ustalmy dowolne <math>\; u \in L \;</math> i niech <math>v \in [u]_{P_L^r}.</math> |
| | Przyjmując <math>\; w =1 \;</math> w definicji [[##d1|Uzupelnic d1|]] relacji <math>\; {P_L^r} \;</math> otrzymamy równoważność |
| | <math>\; u \in L \; \Leftrightarrow \; v \in L \;.</math> A więc <math>\; v \in L \;.</math><br> |
|
| |
|
| <center><math> | | <math>\diamondsuit</math> |
|
| |
|
| \forall_x \exists_y x \prec y | | Jeśli język <math>L </math> jest regularny, to relacja <math>\; P_L^r \;</math> jest największą |
| </math></center> | | w sensie inkluzji spośród wszystkich |
| | prawych kongruencji takich, że język <math>L</math> jest sumą jej pewnych klas równoważnosci |
| | a relacja <math>\; P_L \;</math> jest |
| | największą w sensie inkluzji |
| | spośród wszystkich kongruencji spełniających analogiczny warunek. |
| | Obie relacje mają skończony indeks, czyli dzielą wolny monoid <math>A^*</math> na |
| | skończoną liczbę klas równoważności. |
|
| |
|
| | ---- dla dociekliwych - start ---- |
|
| |
|
| '''Sytuacja 1.'''
| | Pojęcie, które wprowadzimy teraz - monoid syntaktyczny języka - wiąże teorię |
| :Przypuśćmy, że to zdanie mówi o liczbach naturalnych, a <math>x \prec y</math> jest prawdą wtedy i tylko wtedy gdy liczba <math>\textnormal{x}</math> jest silnie mniejsza od liczby <math>\textnormal{y}</math>. Wtedy zdanie to powinniśmy uznać za nieprawdziwe, gdyż dla liczby '''0''' nie istnieje silnie mniejsza liczba naturalna.
| | języków formalnych, a |
| | w szczególności teorię języków rozpoznawalnych, z teorią półgrup. Związek ten |
| | stanowi podstawę dla bardziej zaawansowanych |
| | problemów teorii języków i automatów wykraczających poza ramy tego wykładu. |
|
| |
|
| '''Sytuacja 2.'''
| | Niech <math>\; L \subset A^* \;</math> będzie dowolnym językiem. '''Monoidem syntaktycznym''' |
| :Przypuśćmy, że to zdanie mówi o liczbach całkowitych, a <math>x \prec y</math> jest prawdą wtedy i tylko wtedy gdy liczba <math>\textnormal{x}</math> jest silnie mniejsza od liczby <math>\textnormal{y}</math>. Wtedy zdanie to powinniśmy uznać prawdziwe. Istotnie, dla każdej liczby całkowitej <math>\textnormal{x}</math> możemy dobrać liczbę <math>\textnormal{y}</math> (na przykład równą <math>x-1</math>) która jest od niej silnie mniejsza.
| | języka <math>\; L \;</math> nazywamy strukturę ilorazową |
|
| |
|
| '''Sytuacja 3.'''
| | <center><math>M(L) = A^*/P_L .</math></center> |
| :Przypuśćmy, że to zdanie mówi o liczbach naturalnych, a <math>x \prec y</math> jest prawdą wtedy i tylko wtedy gdy liczba <math>\textnormal{x}</math> jest równa liczbie <math>\textnormal{y}</math>. Wtedy zdanie to powinniśmy uznać prawdziwe (do każdej liczby <math>\textnormal{x}</math> możemy dobrać liczbę <math>\textnormal{y}</math> tak aby była równa <math>\textnormal{x}</math>).
| |
|
| |
|
| }}
| | Dualnie, tworząc iloraz <math>S(L) = A^+/P_L</math> wprowadza się pojęcie półgrupy syntaktycznej |
| | | języka <math>\; L \;</math>. Oba wprowadzone tu pojęcia zilustrowane bedą w trakcie dalszych |
| Powyższe przykłady pokazują różne interpretacje tej samej formuły.
| | rozważań. |
| Wydaje się również że prawdziwość zdania zmienia się w zależności od
| |
| interpretacji. Aby mówić o interpretacji danej formuły powinniśmy
| |
| powiedzieć w jakim zbiorze będziemy interpretować zmienne i stałe (w
| |
| naszym przykładzie były to kolejno zbiory <math>N, Z, N</math>)
| |
| oraz jak interpretujemy symbole funkcyjne i predykatywne (w naszym
| |
| przykładzie występował jedynie symbol predykatywny <math>\prec</math> który był
| |
| interpretowany kolejno jako silna mniejszość, silna mniejszość,
| |
| równość). Poniżej definiujemy formalnie pojęcie modelu.
| |
| | |
| {{definicja|4.2 [Model]||
| |
|
| |
|
| Modelem języka rachunku predykatów nazywamy <math>M=(D,I)</math>, gdzie:
| | ---- dla dociekliwych - end ---- |
|
| |
|
| :1. <math>D</math> - jest niepustym zbiorem (dziedziną).
| | ==AUTOMAT MINIMALNY== |
|
| |
|
| :2. <math>\textnormal{I}</math> - jest interpretacją symboli języka taką, że:
| | Określenie języka rozpoznawalnego postuluje istnienie automatu o skończonej |
| | liczbie stanów działającego w odpowiedni sposób. Należałoby zatem wskazać algorytm |
| | budowy takiego automatu dla języka rozpoznawalnego. Oczywiście interesuje nas algorytm |
| | prowadzący do automatu o możliwie najprostszej postaci. Najprostsza postać, w tym kontekście, |
| | oznacza najmniejszą liczbę stanów. |
|
| |
|
| ::(a) dla symboli stałych: <math>I(c)\in D</math> (symbole stałych są interpretowane jako elementy dziedziny)
| | Automat <math>\mathcal{A} </math></center><nowiki>=</nowiki> (S,A,f,s_0,T) <math> rozpoznający język </math>L<math> |
| | na\-zy\-wa\-my \textbf{automatem minimalnym}\index{automat minimalny}, |
| | jeśli posiada najmniejszą licz\-bę stanów spośród wszystkich automatów |
| | rozpoznają\-cych język </math> L. <math> |
| | \enddefin |
|
| |
|
| ::(b) dla symboli funkcyjnych: <math>I(f):D^k\rightarrow D</math>, gdzie <math>\textnormal{k}</math> jest ilością argumentów <math>\textnormal{f}</math> (symbole funkcyjne są interpretowane jako funkcje z potęgi dziedziny w dziedzinę)
| | Kwestią istnienia takiego automatu minimalnego zajmujemy się teraz. W kolejnym |
| | wykładzie przedstawimy algorytmy konstrukcji automatu minimalnego. |
|
| |
|
| ::(c) dla symboli predykatów: <math>I(p):D^k\rightarrow {0,1}</math>, gdzie <math>k</math> jest ilością argumentów <math>\textnormal{p}</math> (symbole predykatywne są interpretowane jako funkcje przekształcające ciągi elementów z dziedziny w prawdę lub fałsz)
| | W poniższym twierdzeniu występuje automat ilorazowy </math>{A}_{P^{r}_{L}} <math> |
| }}
| | określony przez |
| {{definicja|4.3||
| | prawą kongruencję </math>P_L^r<math>. |
|
| |
|
| Mówimy, że model <math>M</math> jest ''odpowiedni'' dla formuły <math>{\phi}</math> jeśli są
| | \begintheor |
| w nim zdefiniowane interpretacje wszystkich symboli stałych funkcji oraz predykatów występujących w formule <math>{\phi}</math>.
| |
| }}
| |
| Zanim ustalimy co to znaczy że formuła jest prawdziwa w modelu zdefiniujemy tzw. wartościowanie zmiennych
| |
|
| |
|
| {{definicja|4.4|| | | Dla dowolnego automatu </math>{A} <center><math>= (S,A,f,s_0,T) \;</math> rozpoznającego |
| | język <math>\; L \subset A^* \;</math> istnieje jedyny |
| | epimorfizm <math>\varphi :\mathcal{A}\longrightarrow \mathcal{A}_{P^{r}_{L}} </math> |
| | taki, że <math>\varphi (s_{0})=[1]_{P^{r}_{L}}. </math> |
|
| |
|
| Wartościowanie zmiennych modelu <math>M=(D,I)</math> to funkcja która zmiennym przypisuje wartości dziedziny.
| | Prawa kongruencja automatowa <math>\sim _{\mathcal{A}} </math> ma |
| }} | | skończony indeks |
| Jeśli ustalimy już ocenę zmiennych w modelu to możemy też mówić o wartościach przyjmowanych przez termy.
| | i <math>L=\bigcup _{u\in L}[u]_{\sim _{\mathcal{A}}} </math>. |
| | Zatem z twierdzenia [[##trr2|Uzupelnic trr2|]] wynika, że |
|
| |
|
| {{definicja|4.5 [Wartościowanie termów]|| | | <center><math>\sim _{\mathcal{A}}\subseteq P^{r}_{L}=\sim _{\mathcal{A}_{P^{r}_{L}}}.</math></center> |
|
| |
|
| Przy ustalonym modelu <math>M=(D,I)</math> wartościowanie zmiennych <math>\sigma</math>
| | Istnienie epimorfizmu <math>\; \varphi \;</math> wynika z twierdzenia 1.1, wykład 3. |
| możemy rozszerzyć na wszytekie termy. Oznaczymy je przez <math>\hat{\sigma}</math>. Rozszerzenie definiujemy w następujący sposób
| | Epimorfizm ten określony jest dla dowolnego stanu <math>s\in S </math> |
| | równością <math> \varphi(s) = f^*([1]_{P_L^r},w) = [w]_{P_L^r},</math> gdzie <math>w </math> jest |
| | słowem takim, że <math>f(s_0,w)=s</math>. |
|
| |
|
| :1. jeśli term <math>\textnormal{t}</math> jest zmienną, <math>\hat{\sigma}(t) = \sigma(t)</math>
| | Jest to jedyny epimorfizm spełniający warunki tezy dowodzonego |
| | twierdzenia. Dla każdego epimorfizmu <math>\; \psi \;</math> takiego, |
| | że <math>\psi :\mathcal{A}\longrightarrow \mathcal{A}_{P^{r}_{L}} </math> |
| | i <math>\psi (s_{0})=[1]_{P^{r}_{L}} </math> |
| | mamy<br> <math>\;\forall s \in S</math> <center><math>\psi(s) = \psi(f(s_o,w)) = f^* (\psi(s_0),w) = f^* ([1]_{P_L^r},w) = [w]_{P_L^r},</math></center> |
| | gdzie <math> f(s_0,w) = s .</math> |
| | Tak więc <math>\; \psi = \varphi .\;\diamondsuit</math> |
|
| |
|
| :2. jeśli term <math>\textnormal{t}</math> jest stałą, to <math>\hat{\sigma}(t)=I(t)</math> (stałe wartościujemy zgodnie z interpretacją w modelu)
| | Zatem udowodnione twierdzenie zapewnia nas o istnieniu automatu minimalnego, co |
| | formułujemy w następującym wniosku. |
|
| |
|
| :3. jeśli term <math>\textnormal{t}</math> jest postaci <math>f(t_0,..,t_n)</math>, to
| | Niech <math>\; L \subset A^* \;</math> będzie dowolnym językiem. Automat |
|
| |
|
| <center><math> | | <center><math>\mathcal{A}_{P^{r}_{L}}=\left( A^{*}/_{P^{r}_{L}},A,f^{*},[1]_{P^{r}_{L}},T\right), </math></center> |
|
| |
|
| \hat{\sigma}(f(t_0,..,t_n))= I(f)(\hat{\sigma}(t_0),..,\hat{\sigma}(t_n)) | | gdzie <math>\; T = \{ [w]_{P_L^r} \; : \; w \in L \}, \;</math> jest automatem |
| </math></center> | | minimalnym rozpoznającym język <math>\; L \;</math>. Oznaczać go |
| | będziemy symbolem <math>\mathcal{A}_{L} </math>. |
|
| |
|
| | ---- dla dociekliwych - start ---- |
|
| |
|
| ::czyli aby poznać wartość termu najpierw obliczamy wartości poddtermów a potem obliczamy wartość funkcji odpowiadającej w modelu <math>M</math> symbolowi <math>\textnormal{f}</math> na wartościach poddtermów. Funkcję wartościującą termy będziemy często oznaczali tym samym
| | Następne twierdzenie charakteryzuje monoid przejść automatu minimalnego i |
| symbolem co wartościowanie zmiennych.
| | podaje kolejny warunek równoważny na to, |
| }}
| | żeby język <math>L</math> był rozpoznawany przez automat. |
|
| |
|
| {{przyklad|4.6|| | | Niech <math>L\subset A^{*} </math> będzie dowolnym językiem.{}{} |
|
| |
|
| Przypuśćmy, że w rozważanym języku symbol <math>o</math> jest symbolem stałej, symbole <math>s,+,\times</math> są symbolami funkcji, symbole <math><,=</math> są symbolami predykatów, <math>{x,y,z}</math> są zmiennymi. Ustalmy model w którym dziedziną jest zbiór liczb naturalnych, a symbole są interpretowane zgodnie z ich zwyczajowym znaczeniem (<math>\textnormal{s}</math> będziemy interpretować jako jednoargumentową funkcję która każdej liczbie przypisuje
| | 1. Dla dowolnego języka <math>L\in \mathcal{REC}(A^{*}) </math> monoid przejść automatu minimalnego <math>\mathcal{A}_{L} </math> jest |
| liczbę większą o jeden, <math>o</math> interpretujemy jako '''0'''). Jeśli ustalimy ocenę zmiennych tak, że <math>\sigma(x)=2, \sigma(y)=3, \sigma(z)=5</math> to
| | izomorficzny z monoidem syntaktycznym <math> M(L) </math> języka <math>L</math>, czyli |
|
| |
|
| :1. term <math>{x+y}</math> będzie wartościowany na '''5'''
| | <center><math>M(\mathcal{A}_{L})\sim M(L). </math></center> |
|
| |
|
| :2. term <math>s(x)</math> będzie wartościowany na '''3'''
| | {}{} |
|
| |
|
| :3. term <math>o</math> będzie wartościowany na '''0''' (zgodnie z interpretacją stałych)
| | 2. (tw. J.Myhill'a) Język <math>\; L \subset A^* \;</math> jest rozpoznawalny wtedy i tylko wtedy, |
| | gdy <math>\; M(L) \;</math> jest monoidem skończonym. |
|
| |
|
| :4 term <math>s(o) \times s(z)</math> będzie wartościowany na '''6'''
| | Dla dowodu punktu 1, wykażemy, że |
| }}
| |
|
| |
| {{definicja|4.7 [Waluacja formuł]||
| |
|
| |
|
| Zdefiniujemy teraz prawdziwość formuł w ustalonym modelu <math>M=(D,I)</math> przy ustalonym wartościowaniu zmiennych <math>{\sigma}</math>.
| | <center><math>P_{L}=Ker_{\tau _{\mathcal{A}_{L}}}, </math></center> |
|
| |
|
| :1. Jeśli formuła jest postaci <math>p(t_0,..,t_n)</math> (czyli jest formułą atomową), to jest ona prawdziwa wtedy i tylko wtedy jeśli wartością predykatu odpowiadającego w modelu <math>M</math> symbolowi <math>\textnormal{p}</math> (czyli <math>I(p)</math>) na elementach dziedziny odpowiadających termom <math>t_0, \dots, t_n</math> jest prawdą.
| | gdzie zgodnie z definicją dla dowolnych <math>w,u\in A^{*} </math> |
|
| |
|
| :2. Jeśli formuła jest postaci <math>A\Rightarrow B</math>, to jest ona prawdziwa wtedy i tylko wtedy, gdy formuła <math>\textnormal{A}</math> jest wartościowana na fałsz lub formuła <math>B</math> jest wartościowana na prawdę (zgodnie z tabelą dla implikacji '''??''')
| | <center><math>\tau _{\mathcal{A}_{L}}(w)([u]_{P^{r}_{L}})=f^{*}([u]_{P^{r}_{L}},w)=[uw]_{P^{r}_{L}}.</math></center> |
|
| |
|
| :3. Jeśli formuła jest postaci <math>\neg A</math> to jest ona prawdziwa wtedy i tylko wtedy gdy formuła <math>\textnormal{A}</math> jest wartościowana na fałsz (zgodnie z tabelą dla negacji '''??''')
| | <center><math>\begin{array} {c} |
| | (u,w)\in Ker_{\tau _{\mathcal{A}_{L}}}\Leftrightarrow \forall v\in A^*\;\; |
| | \tau _{\mathcal{A}_{L}}(u)([v]_{P^{r}_{L}})=\tau _{\mathcal{A}_{L}}(w)([v]_{P^{r}_{L}})\Leftrightarrow |
| | [vu]_{P^{r}_{L}}=[vw]_{P^{r}_{L}}\Leftrightarrow\\ |
| | \Leftrightarrow \forall v,z \in A^*\;\;vuz\in L\Leftrightarrow vwz\in L \Leftrightarrow[u]_{P_{L}}=[w]_{P_{L}} |
| | \Leftrightarrow (u,v) \in P_L\\ |
|
| |
|
| :4. Jeśli formuła jest postaci <math>\forall_x \; A</math>, to jest ona prawdziwa jeśli prawdziwe jest <math>\textnormal{A}</math> i dla każdego wartościowania zmiennych różniącego się od <math>{\sigma}</math> co najwyżej interpretacją symbolu <math>\textnormal{x}</math> prawdziwe jest <math>\textnormal{A}</math>.
| | \end{array} </math></center> |
|
| |
|
| :5. Jeśli formuła jest postaci <math>\exists_x \; A</math>, to jest ona prawdziwa jeśli istnieje ocena zmiennych różniąca się od <math>{\sigma}</math> co najwyżej interpretacją symbolu <math>\textnormal{x}</math> taka, że przy tej ocenie prawdziwe jest <math>\textnormal{A}</math>.
| | Korzystamy teraz z twierdzenia o rozkładzie epimorfizmu, które w tym przypadku |
| }}
| | ma postać: <br> |
| Interpretacje kwantyfikatorów, jest w gruncie rzeczy bardzo intuicyjna. Formuła <math>\forall_x A</math> jest prawdziwa wtedy i tylko wtedy gdy dla każdego elementu dziedziny ,,podstawionego" w miejsce <math>\textnormal{x}</math> w formule <math>\textnormal{A}</math> prawdziwa jest formuła <math>\textnormal{A}</math> (uwaga! podstawiamy jedynie w miejsca wolnych wystąpień <math>\textnormal{x}</math>). Analogicznie formuła <math>\exists_x A</math> jest prawdziwa wtedy i tylko wtedy gdy istnieje taki element dziedziny, który ,,podstawiony" w miejsce <math>\textnormal{x}</math> w formule <math>\textnormal{A}</math> uczyni ją prawdziwa. Dotąd rozważaliśmy kwantyfikator <math>\exists</math> jako skrót pewnego napisu, jednak ze względu na jego naturalną interpretacje zdecydowaliśmy się dodać go do definicji waluacji formuł. W ćwiczeniu '''4''' pokażemy, że zdefiniowana powyżej waluacja formuł z kwantyfikatorem egzystencjalnym jest zgodna z waluacją zdefiniowanego wcześniej skrótu.
| |
|
| |
|
| {{przyklad|4.8||
| | RYSUNEK ja-lekcja4-w-rys1.pdf<br> |
|
| |
|
| Możemy teraz powiedzieć, że formuła
| | czyli <math>M(\mathcal{A}_{L})\sim M(L) </math>. <br> |
| | Dla dowodu punktu 2 załóżmy, że język <math>\; L \;</math> jest rozpoznawalny. |
| | Zatem |
| | <center><math>L = \bigcup_{w \in L} [w]_\rho ,</math></center> gdzie <math>\; \rho \;</math> jest kongruencją o skończonym indeksie. |
| | Z twierdzenia [[##trr2|Uzupelnic trr2|]] wnioskujemy, że <math>\rho \subseteq P_L .</math> Oznacza to, że indeks relacji <math>\; P_L \;</math> jest |
| | niewiększy od indeksu <math>\; \rho, \;</math> a co za tym idzie, <math>\; M(L) = A^*/P_L \;</math> jest monoidem skończonym. |
|
| |
|
| <center><math> | | Dla dowodu implikacji w stronę przeciwną rozważmy epimorfizm kanoniczny <center><math>k : A^* \longrightarrow A^*/P_L = M(L).</math></center> |
| | Pokażemy, że spełnia on warunki z punktu 4 twierdzenia 1.2 z wykładu 3. <math>M(L) \;</math> jest skończony, więc pozostaje do wykazania |
| | równość |
| | <center><math>\; L = k^{-1}(k(L)). \;</math></center> W tym celu wystarczy oczywiście udowodnić inkluzję |
| | <math>\; k^{-1}(k(L)) \subseteq L</math>. <br> |
|
| |
|
| \forall_y (x<y \vee x=y) | | <center><math>\begin{array} {c} |
| | v \in k^{-1}(k(L))\Rightarrow k(v) \in k(L)\Rightarrow\exists u \in L:k(v) = k(u) \in k(L)\Leftrightarrow\\ |
| | \Leftrightarrow \exists u \in L:[v]_{P_L} = [u]_{P_L}\Leftrightarrow\exists u \in L:v \in L\Leftrightarrow u\in L.\\ |
| | \end{array} |
| </math></center> | | </math></center> |
|
| |
|
| jest prawdziwa w modelu z przykładu 4.6 przy ocenie zmiennych <math>\sigma_1</math> takiej, że <math>\sigma_1(x)=0</math>, oraz że jest fałszywa w tym samym modelu dla przy ocenie zmiennej <math>\sigma_2</math> takiej, że <math>\sigma_2(x)=7</math> (bo na przykład wartościując <math>\textnormal{y}</math> na '''3''' formuła <math>x<y \vee x=y</math> nie będzie prawdziwa).
| | Czyli <math>v\in L</math> i <math>\; L = k^{-1}(k(L))</math>. |
| }}
| | <math>\diamondsuit</math> |
| | |
| Istnieją jednak formuły które są prawdziwe w modelu z przykładu 4.6 niezależnie od oceny zmiennych. Przykładem może być
| |
| | |
| <center><math>
| |
| | |
| \forall_y (x<y+x \vee y=o).
| |
| </math></center>
| |
| | |
| {{definicja|4.9||
| |
| | |
| Formuła <math>{\phi}</math> jest prawdziwa w modelu <math>M</math> jeśli jest prawdziwa w tym modelu przy każdej ocenie zmiennych. Mówimy wtedy, że model <math>M</math> jest '''modelem formuły''' <math>{\phi}</math>.
| |
| }}
| |
| Ciekawe, że istnieją również formuły które są prawdziwe we wszystkich modelach. Rozważmy formułę
| |
| | |
| <center><math>
| |
| | |
| (\forall_x p(x)) \Rightarrow (\exists_x p(x)).
| |
| </math></center>
| |
| | |
| Rozważmy dowolny model <math>M</math> odpowiedni dla powyższej formuły (odpowiedni to znaczy taki który ustala interpretację symbolu predykatywnego <math>\textnormal{p}</math>). Jeśli w tym modelu nie jest prawdziwa formuła <math>(\forall_x p(x))</math> to cała implikacja 4.1 jest
| |
| prawdziwa a więc wszystkie te modele są modelami formuły 4.1. Pozostają więc do rozważenia te modele w których prawdziwe jest <math>(\forall_x p(x))</math>. Weźmy dowolny taki model i oznaczmy go przez <math>M</math>. Aby pokazać, że <math>(\exists_x p(x))</math> jest prawdziwe w <math>M</math> wystarczy wskazać że istnieje w dziedzinie taka wartość, że podstawiona w miejsce <math>\textnormal{x}</math> uczyni predykat oznaczony przez <math>\textnormal{p}</math> prawdziwym. Formuła <math>(\forall_x p(x))</math> jest prawdziwa w <math>M</math> więc każda wartość podstawiona pod <math>\textnormal{x}</math> czyni predykat odpowiadający <math>\textnormal{p}</math> prawdziwym. Ponieważ dziedzina modelu <math>M</math> zgodnie z definicją 4.2 nie może być pusta więc istnieje przynajmniej jeden element dziedziny. Ponieważ w dziedzinie istnieje przynajmiej jeden element, oraz że formuła <math>{p(x)}</math> jest prawdziwy niezależnie od tego co podstawimy w miejsce <math>\textnormal{x}</math>, to rzeczywiście istnieje taki element dziedziny, który podstawiony w miejsce <math>\textnormal{x}</math> uczyni formułę <math>{p(x)}</math> prawdziwą. A więc formuła <math>\exists_x p(x)</math> również jest prawdziwa. Wobec tego cała implikacja 4.1 jest prawdziwa w <math>M</math>. Pokazaliśmy więc, że formuła 4.1 jest prawdziwa w każdym modelu.
| |
| | |
| {{definicja|4.10||
| |
| | |
| Formułę rachunku predykatów nazywamy ''tautologią'' rachunku predykatów jeśli jest prawdziwa w każdym odpowiednim dla niej modelu .
| |
| }}
| |
| Podobnie jak klasycznym rachunku zdań, w rachunku predykatów również tautologie okazują się tym samym co twierdzenia. Mówi o tym następujące klasyczne twierdzenie udowodnione przez <u>'''Kurt Godel'''</u>.
| |
| | |
| {{twierdzenie|4.11 [Kurt Godel]||
| |
| | |
| Formuła rachunku predykatów jest tautologią rachunku predykatów wtedy i tylko wtedy gdy jest twierdzeniem rachunku predykatów.
| |
| }}
| |
| | |
| Dowód powyższego twierdzenia jest przedstawiony na wykładzie <u>'''Logika dla informatyków.'''</u>
| |
| Zauważmy, że zgodnie z powyższym twierdzeniem aby udowodnić, że formuła nie jest twierdzeniem rachunku predykatów wystarczy wskazać model w którym nie jest prawdziwa.
| |
| | |
| {{cwiczenie|4.1||
| |
| | |
| Rozważmy model <math>M</math>, którego dziedziną będą liczby naturalne, oraz w którym jest jeden predykat binarny oznaczony symbolem <math>\textnormal{p}</math>, który przyjmuje wartość prawdy jeśli pierwszy z jego argumentów dzieli drugi. Napisz formuły które w modelu <math>M</math> są równowążne następującym zdaniom (w kolejnych formułach można wykorzystywać skróty dla formuł zdefiniowanych wcześniej)
| |
| | |
| :1. <math>\textnormal{x}</math> jest równe <math>\textnormal{y}</math>
| |
| | |
| :2. <math>\textnormal{x}</math> jest zerem
| |
| | |
| :3. <math>\textnormal{x}</math> jest jedynką
| |
| | |
| :4. <math>\textnormal{x}</math> jest liczbą pierwszą
| |
| | |
| :5. <math>\textnormal{x}</math> jest kwadratem pewnej liczby pierwszej
| |
| | |
| :6. <math>\textnormal{x}</math> jest iloczynem dwóch różnych liczb pierwszych
| |
| | |
| :7. <math>\textnormal{x}</math> jest iloczynem dwóch liczb pierwszych
| |
| | |
| :8. <math>\textnormal{x}</math> jest potęgą liczby pierwszej
| |
| | |
| :9. dla każdych dwóch liczb istnieje ich największy wspólny dzielnik
| |
| | |
| :10. dla każdych dwóch liczb istnieje ich najmniejsza wspólna wielokrotność
| |
| | |
| :11 liczby <math>\textnormal{x}</math> i <math>\textnormal{y}</math> są względnie pierwsze
| |
| }}
| |
| | |
| <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Podpowiedź </span><div class="mw-collapsible-content" style="display:none">
| |
|
| |
| :1. wstarczy aby się dzieliły nawzajem
| |
| | |
| :2. każda liczba dzieli zero
| |
| | |
| :3. jedynka dzieli wszystkie liczby
| |
| | |
| :4. jest podzielna tylko przez siebie i przez jeden (uwaga, '''1''' nie jest pierwsza)
| |
| | |
| :5. ma dokładnie '''3''' różne dzielniki
| |
| | |
| :6. ma dokładnie '''4''' różne dzielniki
| |
| | |
| :7. jest kwadratem lub iloczynem dwóch różnych liczb pierwszych
| |
| | |
| :8. każde dwa dzielniki różne od '''1''' mają wspólny dzielnik różny od '''1'''
| |
| | |
| :9. każda liczba która dzieli obie liczby dzieli też ich największy wspólny dzielnik
| |
| | |
| :10. każda liczba która jest podzielna przez obie liczby jest też podzielna przez ich najmniejszą wspólną wielokrotność
| |
| | |
| :11. ich największym wspólnym dzielnikiem jest '''1'''
| |
| </div></div>
| |
| | |
| <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none">
| |
| | |
| : Dla każdej z poniższych formuł w nawiasie zapisujemy skórty których będziemy używać dla tych formuł.
| |
| | |
| :1. <math>\forall_z (p(z,x) \Leftrightarrow p(z,y)</math> (skrót <math>x=y</math>)
| |
| | |
| :2. <math>\forall_z p(z,x)</math> (skrót <math>x=1</math>)
| |
| | |
| :3. <math>\forall_z p(x,z)</math> (skrót <math>x=0</math>)
| |
| | |
| :4. <math>(\neg x=1) \wedge \forall_z [p(z,x) \Rightarrow (z=1 \vee z=x)]</math> (skrót <math>Prim(x)</math>).
| |
| | |
| :5. <math>\forall_z \forall_y (p(z,x) \wedge p(y,x) \wedge (\neg z=1) \wedge (\neg z=x) \wedge (\neg y=1) \wedge (\neg z=x)) \Rightarrow (z=y)</math> (skrót <math>pKw(x)</math>).
| |
| | |
| :6. <math>\textnormal{x}</math> jest iloczynem dwóch różnych liczb pierwszych (skrót <math>pq(x)</math>.
| |
| | |
| :7. <math>pKq(x) \vee pq(x)</math>
| |
| | |
| :8. <math>\forall_{y:\neg(y=1)} \forall_{z:\neg(z=1)} (p(y,x) \wedge p(z,x)) \Rightarrow (\exists_{v:\neg(z=1)} (p(v,y) \wedge p(v,z))</math>
| |
| | |
| :9. <math>\forall_x \forall_y \exists_z (p(z,x) \wedge p(z,y) \wedge(\forall_v (p(v,x) \wedge p v,y) \Rightarrow p(v,z)) ))</math>
| |
| | |
| :10 <math>\forall_x \forall_y \exists_z (p(x,z) \wedge p(y,z) \wedge(\forall_v (p(x,v) \wedge p y,v) \Rightarrow p(z,v)) ))</math>
| |
| | |
| :11. <math>\forall_z ((p(z,x) \wedge p(z,y))\Rightarrow (z=1))</math>
| |
| </div></div>
| |
| | |
| {{cwiczenie|4.2||
| |
| | |
| Rozważmy model <math>M</math>, którego dziedziną będą wszytkie punkty, odcinki i okręgi płaszyczny, oraz w którym jest jeden predykat binarny oznaczony symbolem <math>\textnormal{p}</math>, który przyjmuje wartość prawdy jeśli jego argumenty mają przynajmniej jeden punkt wspólny. Napisz formuły które w modelu <math>M</math> są równowążne następującym zdaniom (w kolejnych formułach można wykorzystywać skróty dla formuł zdefiniowanych wcześniej)
| |
| | |
| :1. <math>\textnormal{x}</math> jest równe <math>\textnormal{y}</math>
| |
| | |
| :2. <math>\textnormal{x}</math> jest nadzbiorem <math>\textnormal{y}</math>
| |
| | |
| :3. <math>\textnormal{x}</math> jest punktem
| |
| | |
| :4. <math>\textnormal{x}</math> jest odcinkiem
| |
| | |
| :5. <math>\textnormal{x}</math> jest okręgiem
| |
| | |
| :6. <math>\textnormal{x}</math> jest równoległe do <math>\textnormal{y}</math>
| |
| | |
| :7. <math>\textnormal{x}</math> i <math>\textnormal{y}</math> mają dokładenie jeden punkt wspólny
| |
|
| |
|
| :8. okręgi <math>\textnormal{x}</math> i <math>\textnormal{y}</math> są do siebie styczne
| | ---- dla dociekliwych - end ---- |
|
| |
|
| :9. okręgi <math>\textnormal{x}</math> i <math>\textnormal{y}</math> są do siebie wewnętrznie styczne i okrąg <math>\textnormal{x}</math> jest okręgiem wewnętrznym
| | Z twierdzenia [[##3.1|Uzupelnic 3.1|]] wynika, że określenie klas abstrakcji prawej kongruencji syntaktycznej |
| | <math>P^r_L</math> prowadzi do określenia minimalnego automatu rozpoznającego język <math>L</math>. |
| | Prezentowane poniżej twierdzenia wskazują sposób konstrukcji prawej kongruencji syntaktycznej |
| | dla języka <math>L </math>. |
|
| |
|
| :10. okręgi <math>\textnormal{x}</math> i <math>\textnormal{y}</math> są do siebie zewnętrzenie styczne
| | Niech <math>\; L \subset A^* \;</math> będzie dowolnym językiem, <br> a <math>\; \Theta_L \subset A^* \times A^* \;</math> relacją |
| | równoważności o dwóch klasach równoważności <math>L</math> i <math> A^* \setminus L</math>. |
| | Przez <math>\; \rho_i \;</math> dla <math>\; i \in {\Bbb N} </math> oznaczmy zstępujący ciąg relacji określony następująco: |
|
| |
|
| :11. punkt <math>\textnormal{x}</math> jest końcem odcinka <math>\textnormal{y}</math>
| | <math>\rho_1 = \Theta_L ,\;\;</math> a dla <math>\; i = 2,... </math> przyjmijmy |
|
| |
|
| :12. odcinek <math>\textnormal{x}</math> jest styczny do okręgu <math>\textnormal{y}</math>
| | <math>\rho_i = \{ (u,w) \in \; A^* \times A^* \; : \; (ua,wa) \in \; \rho_{i-1} \;\;\; \forall a \in A \cup \{1\}\}.</math> |
|
| |
|
| :13. okręgi <math>\textnormal{x}</math> i <math>\textnormal{y}</math> mają taką samą średnicę
| | { Wtedy <math>\;\; \bigcap \rho_i = P_L^r \;\;</math>. } |
|
| |
|
| :14. okrąg <math>\textnormal{x}</math> ma średnicę mniejszą niż okrąg <math>\textnormal{y}</math>
| | Na początku uzasadnimy, że <math>\; \bigcap \rho_i \;</math> jest prawą kongruencją na <math>\; A^*</math>. |
| | Załóżmy więc, że słowa <math>\; x , y \in A^* \;</math> są w relacji <math>x \; \bigcap \rho_i \;y \;</math>. |
| | Wybierzmy |
| | dowolne słowo <math>z\in A^{*} </math> |
| | i niech <math>k </math> oznacza długość tego słowa. Z założenia |
| | wynika, iż <math>x\, \rho _{i+k}\, y </math>, co w świetle definicji ciągu |
| | relacji <math>\rho _{i} </math> implikuje, że <math>xz\: \rho _{i}\: yz. </math> Ponieważ |
| | <math>i </math> jest dowolne wnioskujemy ostatecznie, że <math>xz \; \bigcap \rho_i \; yz \;,</math> |
| | co kończy dowód faktu, że <math>\; \bigcap \rho_i \;</math> jest prawą kongruencją. |
|
| |
|
| :15. odcinek <math>\textnormal{x}</math> jest krótszy od odcinka <math>\textnormal{y}</math>
| | Dowiedziemy teraz równości <center><math>\bigcap \rho_i \; = \; P_L^r .</math></center> |
|
| |
|
| :16. odcinek <math>\textnormal{x}</math> jest średnicą okręgu <math>\textnormal{y}</math>
| | Dla uzasadnienia inkluzji <math>\bigcap \rho_i \;\subseteq\; P_L^r</math> zauważmy, że |
| | jeśli <math>x \; \bigcap \rho_i \; y ,</math> to dla dowolnego <math>z\in A^{*} </math> mamy |
| | <math>xz \; \bigcap \rho_i \; yz</math>, a w szczególności <math>xz \; \rho_1 \; yz.</math> |
| | Z definicji relacji <math>\rho _{1} </math> dla dowolnego <math>z\in A^{*} </math> prawdziwa |
| | jest równoważność <center><math>xz \in L \;\; \Leftrightarrow \;\; yz \in L.</math></center> |
| | A więc <math>x \;\; P_L^r \;\; y </math>. Inkluzję w stronę przeciwną pokażemy, dowodząc indukcyjnie |
| | ze względu na <math>i=1,2,... </math> , że dla dowolnych <math>\;x , y \in A^* \;</math> prawdziwa |
| | jest następująca implikacja |
|
| |
|
| :17. <math>\textnormal{x}</math> jest prostopadłe do <math>\textnormal{y}</math>
| | <center><math>x \;\; P_L^r \;\; y \;\;\; \Longrightarrow \;\;\; x \; \rho_i \; y \;\;.</math></center> |
| | Załóżmy zatem, że <math>x \;\; P_L^r \;\; y. </math> |
| | Z definicji <math>\; P_L^r \;</math> wynika, że dla dowolnego <math>z \in A^* </math> prawdziwa jest równoważność |
|
| |
|
| :18. odcinki <math>{x,y,z,w}</math> tworzą kwadrat
| | <center><math> xz \in L \;\; \Leftrightarrow \;\; yz \in L.</math></center> Przyjmując <math>\; z=1 \;</math> otrzymujemy |
| }} | | żądaną własność dla <math>\rho _{1}. </math> Załóżmy teraz, że |
| | prawdziwa jest implikacja |
| | <center><math>x \;\; P_L^r \;\; y \;\;\; \Longrightarrow \;\; x \; \rho_i \; y.</math></center> |
| | dla <math>i = 1,...,n-1</math> oraz dla dowolnych <math>x , y \in A^*.</math> |
| | Stąd, |
| | że <math>P_L^r</math> jest prawą kongruencją, wnioskujemy, że dla dowolnego <math>\; a \in A \cup \{1\} \;</math> |
| | spełniona jest relacja <math>xa \;\; P_L^r \;\; ya .</math> |
| | Korzystając z założenia indukcyjnego mamy |
| | <math>xa \;\; \rho_{n-1} \;\; ya</math> dla dowolnego <math>\; a \in A \cup \{1\} \;</math>. |
| | A to oznacza z definicji <math>\; \rho_i \;</math>, że <math>x \;\; \rho_n \;\;y </math> i kończy dowód. |
|
| |
|
| <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Podpowiedź </span><div class="mw-collapsible-content" style="display:none"> | | <math>\diamondsuit</math> |
|
| |
|
| :1. jeśli <math>\textnormal{x}</math> jest różne od <math>\textnormal{y}</math> to istnieje punkt który należy do jednego obiektu i nie należy do drugiego
| | Kolejne twierdzenie charakteryzuje relację <math>P^r_L</math> dla języka rozpoznawalnego i orzeka, iż |
| | w przypadku języka rozpoznawalnego ciąg relacji <math>\rho_i</math>, aproksymujacych <math>P^r_L</math>, jest |
| | skończony. Równoważność dwóch pierwszych warunków poniższego twierdzenia nazywana bywa często |
| | w literaturze twierdzeniem A.Nerode. |
|
| |
|
| :2. każdy punkt wspólny jakiegoś obiektu z podzbiorem jest też punktem wspólnym z nadzbiorem | | Następujące warunki są równoważne: |
|
| |
|
| :3. punkt ma z każdym obiektem co najwyżej jeden punkt wspólny (okrąg i odcinek może mieć więcej)
| | # Język <math>L</math> jest rozpoznawalny |
|
| |
|
| :4. tylko punkt i odcinek mogą mieć istotne nadzbiory, punkty możemy wykluczyć korzystając z formuły w poprzednim punkcie
| | # Relacja <math>P^r_L</math> ma skończony indeks |
|
| |
|
| :5. jeśli coś nie jest punktem ani odcinkiem to jest okręgiem
| | # Ciąg relacji <math>\rho_i</math> stabilizuje się, co oznacza, że istnieje <math>i\in {\Bbb N} </math> takie, że <center><math>\rho_i = \rho_{i+1}=....</math></center>Dla najmniejszego takiego <math>i</math> prawdziwa jest równość <math>\rho_i = P^r_L.</math> |
|
| |
|
| :6. odcinki są równoległe jeśli dowolne ich przedłużenia nie przecinają się | | Dowód poprowadzimy według następujacego schematu: |
|
| |
|
| :7. każde dwa ich wspólne punkty muszą być równe
| | { [[##u1|Uzupelnic u1|]] <math>\Longleftrightarrow </math> [[##u2|Uzupelnic u2|]]<math>\Longleftrightarrow </math>[[##u3|Uzupelnic u3|]] } |
|
| |
|
| :8. okręgi są styczne jeśli mają dokładnie jeden punkt wspólny
| | [[##u1|Uzupelnic u1|]] <math>\Longrightarrow </math> [[##u2|Uzupelnic u2|]] |
|
| |
|
| :9. jeśli okrąg <math>\textnormal{x}</math> jest wewnętrzny to każdy odcinek, który ma przynajmniej jeden punkt wspólny z <math>\textnormal{x}</math> da się przedłużyć tak, aby przecinał (miał punkt wspólny) z <math>\textnormal{y}</math>
| | { <math>P^r_L</math> jest największą w sensie inkluzji relacją spełniająca |
| | warunki punktu 2 z twierdzenia 1.2, wykład 3. Z tego samego twierdzenia wynika |
| | skończoność indeksu. } |
|
| |
|
| :10. okręgi muszą być styczne i żaden z nich nie może być wewnętrzny
| | [[##u1|Uzupelnic u1|]]<math>\Longleftarrow </math> [[##u2|Uzupelnic u2|]] |
|
| |
|
| :11. istnieje okrąg przechodzący przez <math>\textnormal{x}</math> taki że każdy okrąg styczny do niego w <math>\textnormal{x}</math> jeśli jest zewnętrzny to ma dokładnie jeden punkt wspólny z <math>\textnormal{y}</math> a jeśli jest wewnętrzny to dwa
| | Relacja <math>P^r_L</math> jest prawą kongruencją, ma skończony indeks oraz |
| | <center><math>L = \bigcup_{w \in L}[w]_{P^r_L}.</math></center> Z twierdzenia z twierdzenia 1.2, wykład 3 wynika więc, że język <math>L</math> jest rozpoznawalny. |
|
| |
|
| :12. każde przedłużenie odcinka <math>\textnormal{x}</math> dokładnie jeden punkt wpólny z <math>\textnormal{y}</math>
| | [[##u2|Uzupelnic u2|]]<math>\Longrightarrow </math> [[##u3|Uzupelnic u3|]] |
|
| |
|
| :13. istnieją dwa równoległe odcinki styczne do obu okręgów które nie mają punktów wspólnych
| | Dowód poprowadzimy nie wprost. Załóżmy więc, że dla każdego <math>i\in {\Bbb N} </math> |
| | jest <math>\rho_i \neq \rho_{i+1}.</math> Oznacza to, że dla każdego <math>i\in {\Bbb N} </math> |
| | indeksy relacji <math>\rho _{i} </math> tworzą ciąg silnie rosnący, to znaczy |
| | spełniają zależność <math>ind\rho_i < ind\rho_{i+1}.</math> Ponieważ <math>ind\rho_1 = 2,</math> to dla każdego <math>i\in {\Bbb N} </math> |
| | prawdziwa jest nierówność <math>ind\rho_i > i.</math> A to prowadzi do wniosku, że dla dowolnego <math>i\in {\Bbb N} </math> |
|
| |
|
| :14. istnieję dwa równoległe odcinki które nie mają punktów wspólnych z których pierwszy jest styczny do obu okręgów a drugi jest styczny do <math>\textnormal{x}</math> i przecina okrąg <math>\textnormal{y}</math> w dwóch różnych punktach
| | <center><math>indP^r_L = ind\bigcap\rho_i >i .</math></center> Zatem indeks relacji <math>P^r_L</math> jest nieskończony, co jest sprzeczne z założeniem. |
|
| |
|
| :15. najmniejszy okrąg którego cięciwą jest <math>\textnormal{x}</math> ma mniejszą średnicę niż najmniejszy okrąg którego cięciwą jest <math>\textnormal{y}</math>
| | [[##u2|Uzupelnic u2|]] <math>\Longleftarrow </math> [[##u3|Uzupelnic u3|]] |
|
| |
|
| :16. najmniejszy okrąg którego cięciwą jest <math>\textnormal{x}</math> ma taką samą średnicę jak <math>\textnormal{y}</math> i <math>\textnormal{x}</math> jest cięciwą <math>\textnormal{y}</math>
| | Udowodnimy indukcyjnie ze względu na <math>j</math>, że każda z relacji <math>\rho_j</math> dla <math>j=1,...,i</math> |
| | ma skończony indeks. Oczywiście <math>ind\rho_1 = 2.</math> Załóżmy teraz, że relacja <math>\rho_j</math> |
| | ma skończony indeks. Z definicji relacji <math>\rho_{j+1}</math> wynika, |
| | że jej klasy równoważności powstają przez podział |
| | klas równoważności <math>[w]_{\rho_j}</math> na skończoną liczbę klas relacji <math>\rho_{j+1}</math> |
| | (skończona jest |
| | liczba możliwych do spełnienia warunków prowadzących do podziału). Oznacza to, że |
| | indeks relacji <math>\rho_{j+1}</math> jest również skończony, a więc |
| | relacja <math>P^r_L</math> ma również skończony indeks. |
|
| |
|
| :17. istnieje okrąg, który jest styczny do pewnego przedłużenia <math>\textnormal{y}</math> taki, że <math>\textnormal{x}</math> jest równoległy do średnicy okręgu której jeden z końców znajduje się w punkcie styczności z <math>\textnormal{y}</math>
| | <math>\diamondsuit</math> |
|
| |
|
| :18. odcinki mają być równej długości, prostopadłe, różne i mają się odpowiednio stykać końcami (uwaga na kolejność)
| | Wykorzystamy powyżej udowodnione własności do konstrukcji automatu minimalnego rozpoznającego |
| </div></div> | | język <math>L</math>. Warto zauważyc, iż punktem wyjścia dla tej konstrukcji jest język <math>L</math> zadany, na |
| | przykład, poprzez wyrażenie regularne. |
|
| |
|
| {{cwiczenie|4.3|| | | {{cwiczenie|[Uzupelnij]|| |
|
| |
|
| Napisz formuły które mówią:
| | Niech do języka <math>L</math> należą wszystkie słowa nad alfabetem <math>A=\{a,b\}^* </math> zaczynające się lub kończące literą <math>a</math>. |
| | Skonstruujemy minimalny automat akceptujący język <math>L</math>. |
|
| |
|
| :* każdy odcinek ma dokładnie dwa końce | | ; <math>\rho _{1}</math> |
| | : <math>L=aA^* +A^* a,\;\; A^{*}\setminus L =bA^*b +b+1</math> |
|
| |
|
| :* dla każdego okręgu wszystkie jego średnice przecinają się w dokładnie jednym punkcie | | ; <math>\rho _{2}</math> |
| | : <math>aA^*a+a,\;\; bA^*a, \;\; bA^*b +b+1,</math> |
|
| |
|
| :* dla dowolnego odcinka istnieje dłuższy odcinek, który go zawiera | | ; <math>\rho _{3}</math> |
| | : <math>aA^*a+a,\;\; bA^*a, \;\; bA^*b +b, \;\;1,</math> |
|
| |
|
| :* dla dowolnych trzech punktów niewspółliniowych istnieje okrąg który przechodzi przez wszystkie trzy punkty | | Ponieważ <math>\rho _{3}=\rho _{4}</math>, to <math>P^r_L=\rho _{3}</math> i automat minimalny ma <math>4</math> stany.<br> |
| | Przyjmujemy <math>s_0 =[1]</math>, <math>s_1=bA^*a </math>, <math>s_2=aA^*a+a </math>, <math>s_3=bA^*b +b</math> |
| | oraz <math>T=\{s_1,s_2\} </math>, a automat minimalny <math>\mathcal{A}_{L}=\left( A^{*}/_{\rho _{3}},f^{*},s_{0},T\right) </math> |
| | przedstawiony jest przy pomocy grafu: |
|
| |
|
| :* istnieją dwa okręgi, które przecinają się w dokładnie '''5''' punktach.
| | RYSUNEK ja-lekcja4-w-rys2.JPG |
|
| |
|
| ; Solution.
| |
| }} | | }} |
|
| |
|
| {{cwiczenie|4.4|| | | {{cwiczenie|[Uzupelnij]|| |
|
| |
|
| Dla każdej z poniższych formuł znajdź model w którym jest prawdziwa oraz model w którym jest fałszywa | | Dla języka <math>L=\left\{ w \in \{ a,b\}^* :\#_a w =2k, \#_b w =2l+1 |
| | ,\; k,l\geq 0 \right\} </math> określimy ciąg relacji <math>{\rho}_i</math>, a |
| | następnie relację <math>P^{r}_{L} </math>. Umożliwi nam to, w świetle |
| | powyższych rozważań, zbudowanie automatu minimalnego rozpoznającego |
| | ten język. Poniżej wypisane są klasy równoważności relacji <math>\rho _{1} </math> oraz <math>\rho _{2} </math>, <math>\rho _{3}=\rho _{2} </math>, co |
| | kończy proces obliczania relacji <math>\rho _{i} </math> i daje równość <math>\rho _{2}=P^{r}_{L} </math>.<br> |
|
| |
|
| :1. <math>\forall_x \forall_y p(x,y) \Rightarrow p(y,x)</math> | | ; <math>\rho _{1}</math> |
| | : <math>L, A^{*}\setminus L</math> |
|
| |
|
| :2. <math>(\forall_x \exists_y p(x,y)) \Rightarrow \exists_y \forall_x p(x,y)</math> | | ; <math>\rho _{2}</math> |
| | : <math>L, L_1, L_2, L_3</math>, gdzie<br> |
| | <math>L_1=\left\{ w \in \{ a,b\}^* :\#_a w =2k, \#_b w= 2l, \; k,l\geq 0 \right\},</math><br> |
| | <math>L_2\left\{ w \in \{ a,b\}^* :\#_a w =2k+1, \#_b w= 2l+1, \; k,l\geq 0 \right\},</math><br> |
| | <math>L_3=\left\{ w \in \{ a,b\}^* :\#_a w =2k+1, \#_b w= 2l, \; k,l\geq 0 \right\},</math> |
|
| |
|
| :3. <math>(\forall_x (p(x)\vee q(x))) \Rightarrow (\forall_x(p(x)) \vee \forall_x q(x))</math>
| | Przyjmując <math>s_0 =L_1=[1]</math>, <math>s_1=L_3</math>, <math>s_2=L_2</math>, <math>s_3=L</math> oraz <math>T=\{s_3\} </math> |
| | automat minimalny <math>\mathcal{A}_{L}=\left( A^{*}/_{\rho _{2}},f^{*},s_{0},T\right) </math> |
| | przedstawiony jest przy pomocy grafu: |
|
| |
|
| :4. <math>\forall_y [(\forall_x (p(x) \Rightarrow q(x)) \wedge q(y)) \Rightarrow p(z)]</math>
| | RYSUNEK ja-lekcja4-w-rys3.JPG<br> |
|
| |
|
| :5. <math>\forall_x \forall_y(p(x,y) \Rightarrow \exists_z (p(x,z)\wedge p(z,y))</math>
| |
|
| |
| :6. ...
| |
| }} | | }} |
|
| |
|
| <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none">
| | ---- dla dociekliwych - start ---- |
|
| |
|
| Poniższe przykłady to tylko jedne z wielu możliwych rozwiązań.
| | Powyższe twierdzenia podają również sposób konstrukcji |
| | | monoidu syntaktycznego języka <math>L</math>. |
| :1.
| |
| | |
| ::(a) Formuła jest prawdziwa w zbiorze trójkątów, jeśli <math>\textnormal{p}</math> jest interpretowany jako podobieństwo trójkątów.
| |
| | |
| ::(b) Formuła jest fałszywa w zbiorze odcinków, jeśli <math>p(x,y)</math> jest prawdziwy wtedy i tylko wtedy gdy odcinek oznaczony przez <math>\textnormal{x}</math> jest krótszy od odcinka oznaczonego przez <math>\textnormal{y}</math>.
| |
| | |
| :2.
| |
| | |
| ::(a) Formuła jest prawdziwa w liczbach naturalnych, jeśli <math>\textnormal{p}</math> jest interpretowane jako słaba mniejszość (czyli <math>p(x,y)</math> jest prawdą jeśli <math>\textnormal{x}</math> jest mniejsze lub równe <math>\textnormal{y}</math>). Wtedy rzeczywiście dla każdej liczby istnieje liczba słabo mniejsza (poprzednik implikacji jest prawdziwy) oraz istnieje liczba (zero) która jest słabo mniejsza od wszyskich innych (następnik prawdziwy). Cała implikacja jest więc prawdziwa.
| |
| | |
| ::(b) Formuła jest fałszywa w liczbach całkowitych, jeśli <math>\textnormal{p}</math> jest interpretowane jako słaba mniejszość. Wtedy rzeczywiście dla każdej liczby istnieje liczba słabo mniejsza (poprzednik implikacji jest prawdziwy) ale nie istnieje najmniejsza liczba całkowita (następnik implikacji jest fałszywy). Cała implikacja jest więc fałszywa. <math>(\forall_x \exists_y p(x,y)) \Rightarrow \exists_y \forall_x p(x,y)</math>
| |
| | |
| :3.
| |
| | |
| ::(a) Formuła jest prawdziwa w zbiorze liczb naturalnych przy następującej interpretacji symboli predykatywncych jeśli <math>{p(x)}</math> jest prawdziwe gdy <math>\textnormal{x}</math> jest liczbą złożoną, a <math>{q(x)}</math> jest prawdziwe gdy <math>\textnormal{x}</math> jest liczbą nieparzystą. Ponieważ istnieje liczba parzysta która jest liczbą pierwszą to poprzednik implikacji jest fałszywy więc cała implikacja jest prawdziwa.
| |
| | |
| ::(b) Formuła jest prawdziwa w zbiorze liczb naturalnych przy następującej interpretacji symboli predykatywncych jeśli <math>{p(x)}</math> jest prawdziwe gdy <math>\textnormal{x}</math> jest liczbą parzystą, a <math>{q(x)}</math> jest prawdziwe gdy <math>\textnormal{x}</math> jest liczbą nieparzystą. Każda liczba naturalna jest parzysta lub nieparzysta (poprzednik jest prawdziwe), ale nie prawda, że każda jest parzysta ani nie prawda że każda jest nieparzysta (następnik fałszywy). Cała implikacja jest więc fałszywa.
| |
| | |
| :4.
| |
| ::<math>(\forall_y [\forall_x (p(x) \Rightarrow q(x)) \wedge q(y)) \Rightarrow p(y)]</math>
| |
| | |
| ::(a) Formuła jest prawdziwa a dowolnym modelu w którym <math>p(y)</math> jest zawsze prawdą. Na przykład w zbiorze liczb naturalnych podzielnych przez '''10''', gdzie <math>{q(x)}</math> prawdziwa, gdy <math>\textnormal{x}</math> jest mniejsze od '''1000''', a <math>p(y)</math> jest prawdziwe gdy <math>\textnormal{y}</math> jest parzyste.
| |
| | |
| ::(b) Formuła jest fałszywa w zbiorze czworokątów, gdzie <math>{p(x)}</math> jest prawdą jeśli <math>\textnormal{x}</math> jest kwadratem, a <math>{q(x)}</math> jest prawdą gdy <math>\textnormal{x}</math> jest prostokątem. Wtedy, prawdziwa jest formuła <math>\forall_x (p(x) \Rightarrow q(x))</math> (każdy kwadrat jest prostokątem). Jeśli więc w roli <math>\textnormal{y}</math> w formule <math>(\forall_x (p(x) \Rightarrow q(x)) \wedge q(y)) \Rightarrow p(y)]</math> wystąpi prostokąt to poprzednik implikacji będzie prawdziwy, a następnik nie. Nie jest więc prawdą, ze formuła <math>\forall_x (p(x) \Rightarrow q(x)) \wedge q(y)) \Rightarrow p(y)</math> jest prawdziwa dla każdego <math>\textnormal{y}</math>.
| |
| | |
| :5.
| |
| | |
| ::(a) Formuła jest prawdziwa w liczbach wymiernych gdzie <math>p(x,y)</math> jest prawdziwe wtedy i tylko wtedy gdy <math>\textnormal{x}</math> jest silnie mniejsze od <math>\textnormal{y}</math>. Wtedy rzeczywiście dla dowolnych dwóch liczb wymiernych <math>{x,y}</math> takich, że <math>{x<y}</math> istnieje trzecia liczba która znajduje się pomiędzy nimi (np. <math>\frac{x+y}{2}</math>).
| |
| | |
| ::(b) Formuła jest fałszywa w zbiorze liczb naturalnych w którym <math>p(x,y)</math> interpretujemy jako silną mniejszość. Na przykład dla jeśli <math>\textnormal{x}</math> będziemy wartościować na '''0''', a <math>\textnormal{y}</math> na '''1''' to prawdą będzie <math>p(x,y)</math> (poprzednik implikacji) ale nie będzie prawdą <math>\exists_z (p(x,z)\wedge
| |
| p(z,y))</math> bo pomiędzy liczbami '''0''' a '''1''' nie ma żadnej liczby naturalnej.
| |
| | |
| </div></div>
| |
| | |
| {{cwiczenie|4.5||
| |
| | |
| Udowodnij, że w dowolnym ustalonym modelu <math>M</math> prawdziwe są następujące formuły
| |
| | |
| :1. <math>\forall_x p(x) \Rightarrow (p(c))</math>
| |
| | |
| :2. <math>p(c) \Rightarrow \forall_x p(c)</math>
| |
| | |
| :3. <math>\forall_x(p(x) \Rightarrow q(x)) \Rightarrow ((\forall_x p(x))\Rightarrow(\forall_x q x)))</math>
| |
| | |
| :4. <math>\exists_x p(x) \Leftrightarrow \neg \forall_x \neg p(x)</math>
| |
| | |
| :5. <math>\neg \forall_x p(x) \Leftrightarrow \exists_x \neg p(x)</math>
| |
| | |
| :6. <math>\forall_x r(x, f(x)) \Rightarrow \forall_x \exists_y r(x,y)</math>
| |
| | |
| ; Solution.
| |
| }}
| |
| | |
| {{cwiczenie|4.6||
| |
| | |
| Rozważmy formułę
| |
| | |
| <center><math>
| |
| | |
| \forall_x (\neg g(x,x) \Leftrightarrow g(b,x))
| |
| </math></center>
| |
| | |
| (golibroda <math>\textnormal{b}</math> goli wszystkich tych i tylko tych, którzy nie golą się sami).
| |
| Udowodnij, że nie istnieje model dla powyższej formuły.
| |
| }}
| |
| <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none">
| |
| | |
| :(Idea dowodu: kto w goli golibrodę?) Dla dowodu nie wprost przypuśćmy, że istnieje model <math>M</math> w którym ta formuła jest prawdziwa. Skoro tak to dla dowolnego wartościowania zmiennej <math>\textnormal{x}</math> prawdziwa jest formuła
| |
| | |
| <center><math>
| |
| | |
| (\neg g(x,x) \Leftrightarrow g(b,x)).
| |
| </math></center>
| |
| | |
| :W szczególności dla wartościowania które <math>\textnormal{x}</math> przypisuje ten sam obiekt co stałej <math>\textnormal{b}</math> powyższa formuła ma tę samą wartość co
| |
| | |
| <center><math>
| |
| | |
| (\neg g(b,b) \Leftrightarrow g(b,b)).
| |
| </math></center>
| |
|
| |
|
| :a taka formuła nigdy nie jest spełniona. Wobec tego formuła z zadania jest nieprawdziwa w <math>M</math>.
| | ---- dla dociekliwych - end ---- |
| </div></div>
| |
{theor}{TWIERDZENIE}[section]
{rem}{UWAGA}[section]
{corol}{WNIOSEK}[section]
{fact}{FAKT}[section]
{ex}{PRZYKŁAD}[section]
{defin}{DEFINICJA}[section]
{lem}{LEMAT}[section]
{prf}{DOWÓD}
{Wyra{Z}enia regularne,
automat minimalny}
- Wprowadzenie
- W tym wykładzie określimy rodzinę języków regularnych wolnego monoidu
oraz pewien formalny opis tych języków zwany wyrażeniami regularnymi.
Dla języka rozpoznawalnego wprowadzimy pojęcie automatu minimalnego
rozpoznającego i prawej
kongruencji syntaktycznej, która odgrywa istotną rolę w problemach zwiazanych
z automatem minimalnym.
- Słowa kluczowe
- wyrażenie regularne, prawa kongruencja syntaktyczna, kongruencja
syntaktyczna, monoid syntaktyczny, automat minimalny.
Wyrażenia regularne
Niech będzie skończonym alfabetem. Rodzina języków regularnych
nad alfabetem to najmniejsza, w sensie inkluzji, rodzina języków
zawartych w taka, że:
- ,
- jeśli , to
- jeśli , to
Wprost z definicji wynika, że oraz
że dla dowolnego języka regularnego zachodzi równość
jest
Wprowadzona w ten sposób definicja rodziny języków regularnych wymaga
uzasadnienia faktu, iż definiowany obiekt, definiowana rodzina, istnieje. Zauważmy więc,
że warunki 1-3 definicji Uzupelnic defin:zbreg| spełnia na przykład
rodzina wszystkich podzbiorów , a zatem klasa takich
rodzin nie jest pusta. Ponadto
łatwo możemy stwierdzić, że jeśli rodziny Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mathcal{R}_{1},\: \mathcal{R}_{2} }
spełniają warunki 1-3 powyższej definicji,
to rodzina również spełnia te warunki. Stąd możemy
wyprowadzić wniosek, że najmniejsza rodzina
spełniającą te warunki, to przecięcie
po wszystkich rodzinach spełniających warunki 1-3 definicji Uzupelnic defin:zbreg|.
Zauważmy, że w świetle powyższej definicji fakt, że oznacza, że można
uzyskać z liter alfabetu i zbioru pustego
poprzez zastosowanie wobec tych "elementarnych klocków" skończonej liczby działań: sumy ,
katenacji i gwiazdkowania. Na odwrót, każdy zbiór otrzymany w ten sposób jest
elementem rodziny . Ta obserwacja prowadzi do pojęcia wyrażeń
regularnych, formalnego zapisu języków regularnych.
Niech będzie alfabetem, a zbiór
alfabetem rozłącznym z .
Słowo
jest wyrażeniem regularnym nad alfabetem wtedy i
tylko wtedy, jeśli:
- jest literą)
- jest w postaci , gdzie są wyrażeniami regularnymi nad alfabetem .
Przyjmujemy oznaczenia:
Rodzinę wyrażeń regularnych nad alfabetem oznaczamy symbolem .
Łatwo zauważyć związek pomiędzy wyrażeniami regularnymi oraz wprowadzoną wcześniej
rodziną , regularnych języków wolnego monoidu
. Związek ten ustala poniższa definicja.
Wartościowaniem wyrażenia regularnego nazywamy
odwzorowanie
Parser nie mógł rozpoznać (błąd składni): {\displaystyle |\: \: |:\mathcal{WR}\longrightarrow \mathcal{P}(A^{*})}
określone następująco:
-
Odwzorowanie określające wartość wyrażenia regularnego nie jest, jak można zauważyć,
iniekcją. Oznacza to, że różne wyrażenia regularne mogą mieć tę samą wartość,
czyli określać ten sam język regularny. Prostym przykładem tego faktu są wyrażenia regularne
oraz . Zwróćmy uwagę na wartość wyrażenia regularnego oznaczonego symbolem .
Jest mianowicie
Wprowadza się następującą relację równoważności
w rodzinie wyrażeń regularnych.
Wyrażenia regularne nazywamy równoważnymi i
oznaczamy , jeśli .
Problem równoważności wyrażeń regularnych jest rozstrzygalny i jest PSPACE-zupełny.
Wrócimy do tego problemu w kolejnych wykładach.
Oto przykłady równoważnych wyrażeń regularnych
Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \aligned\alpha_1 + \alpha_2 & = & \alpha_2+ \alpha_1\\ (\alpha_1 + \alpha_2) +\alpha_3 & = & \alpha_1+ (\alpha_2 + \alpha_3) \\ (\alpha_1 \alpha_2) \alpha_3 & = & \alpha_1 (\alpha_2 \alpha_3) \\ (\alpha_1 + \alpha_2) \alpha_3 & = & \alpha_1\alpha_3 + \alpha_2 \alpha_3 \\ \alpha_1 ( \alpha_2 +\alpha_3) & = & \alpha_1 \alpha_2 + \alpha_1 \alpha_3 \\ (\alpha^*)^* & = & \alpha^*\\ (\alpha^*_1 \alpha^*_2)^* & = & (\alpha_1 + \alpha_2)^*\\ (\alpha^+ + 1) & = & \alpha^* \endaligned}
gdzie .
{ Wprost z definicji wyrażenia regularnego wynika następujaca równoważność:}
Fakt [Uzupelnij]
dla pewnego .
Wyrażenia regularne dają bardzo wygodne narzędzie zapisu języków należących do
rodziny .
Np. język nad alfabetem
złożony ze wszystkich słów zaczynających się lub kończących na literę
zapisujemy jako .
Z kolei wyrażenie regularne oznacza język .
Dla dalszego uproszczenia zapisu przyjmiemy w naszym wykładzie następującą umowę. Jeśli
język jest wartością wyrażenia regularnego , czyli , to
będziemy zapisywać ten fakt jako . Będziemy zatem mówić w dalszym ciągu
wykładu o języku . Z tych samych powodów, dla dowolnego alfabetu
będziemy używać zapisu w miejsce .
Zauważmy na koniec rozważań o wyrażeniach regularnych, że dość prosty w zapisie język
nie należy do rodziny i nie
można go zapisać przy pomocy wyrażeń regularnych.
dla dociekliwych - start ----
Kończąc ten fragment wykładu poświęcony wyrażeniom regularnym warto wspomnieć o problemie
"star height", czyli głębokości zagnieżdżenia gwiazdki w wyrażeniu regularnym.
Mając wyrażenia regularne
głębokość zagnieżdżenia gwiazdki definiuje się jako liczbę
równą , gdy jest literą z alfabetu lub zbiorem pustym,
równą gdy lub
i , oraz równą dla
. Głębokość zagnieżdżenia gwiazdki
dla języka regularnego określa się jako najmniejszą liczbę ,
gdzie jest wyrażeniem regularnym reprezentującym język .
Głębokość zagnieżdżenia gwiazdki jest więc jakby miarą złożoności pętli występujących
w automacie rozpoznającym język . Ustalono, że dla alfabetu złożonego
z jednej litery głębokość zagnieżdżenia gwiazdki jest równa co najwyżej
oraz że dla alfabetu o co najmniej dwóch literach dla dowolnej liczby
można wskazać język regularny taki, że . Problemem otwartym
pozostaje określenie algorytmu określającego głębokość
zagnieżdżenia gwiazdki dla dowolnego języka w klasie języków regularnych.
dla dociekliwych - end ----
Prawa kongruencja syntaktyczna i kongruencja syntaktyczna
Opis języka regularnego za pomocą wyrażeń regularnych jest bardzo wygodny,
ale nie jedyny. W kolejnych wykładach będziemy wprowadzać inne reprezentacje
języków regularnych, takie jak automaty czy gramatyki. Pojęcia, które wprowadzimy
teraz są również narzędziami dla opisu i badań własności języków regularnych. W
szczególności służą do konstrukcji możliwie najprostszego automatu rozpoznającego
dany język regularny, zwanego automatem minimalnym.
Niech będzie dowolnym językiem. W monoidzie wprowadzamy następujące
dwie relacje:
- prawą kongruencję syntaktyczną przyjmując
dla dowolnych słów {}
Parser nie mógł rozpoznać (błąd składni): {\displaystyle u \; P_L^r \; v \;\; \mbox{ wtedy i tylko wtedy, gdy spełniony jest warunek}}
- kongruencję syntaktyczną przyjmując
dla dowolnych {}
Łatwo stwierdzić, że nazwy wprowadzonych relacji pokrywają się z ich własnościami, to
znaczy relacja
jest rzeczywiście prawą kongruencją, a kongruencją.
Ćwiczenie [Uzupelnij]
Niech będzie alfabetem.
- Dla języka relacja
- ma klasy równoważności:
- ma klas równoważności:
- Dla języka obie relacje mają nieskończony indeks
- dla klasami równoważności są zbiory
dla ,
- dla klasami równoważności są zbiory
dla ,
dla
Udowodnimy następujące własności relacji oraz .
Prawa kongruencja syntaktyczna jest największą w sensie inkluzji spośród wszystkich
prawych kongruencji
takich, że
Kongruencja syntaktyczna jest największą w sensie inkluzji spośród wszystkich
kongruencji
takich, że
Dowód przeprowadzimy dla prawej kongruencji syntaktycznej. Uzasadnienie tezy dla
kongruencji przebiega podobnie.
Niech będzie dowolną prawą kongruencją spełniającą założenia i
niech . Zatem dla każdego jest
W konsekwencji W
szczególności więc dla dowolnego ma miejsce inkluzja Zatem .
Aby udowodnić inkluzję w stronę przeciwną ustalmy dowolne i niech
Przyjmując w definicji Uzupelnic d1| relacji otrzymamy równoważność
A więc
Jeśli język jest regularny, to relacja jest największą
w sensie inkluzji spośród wszystkich
prawych kongruencji takich, że język jest sumą jej pewnych klas równoważnosci
a relacja jest
największą w sensie inkluzji
spośród wszystkich kongruencji spełniających analogiczny warunek.
Obie relacje mają skończony indeks, czyli dzielą wolny monoid na
skończoną liczbę klas równoważności.
dla dociekliwych - start ----
Pojęcie, które wprowadzimy teraz - monoid syntaktyczny języka - wiąże teorię
języków formalnych, a
w szczególności teorię języków rozpoznawalnych, z teorią półgrup. Związek ten
stanowi podstawę dla bardziej zaawansowanych
problemów teorii języków i automatów wykraczających poza ramy tego wykładu.
Niech będzie dowolnym językiem. Monoidem syntaktycznym
języka nazywamy strukturę ilorazową
Dualnie, tworząc iloraz wprowadza się pojęcie półgrupy syntaktycznej
języka . Oba wprowadzone tu pojęcia zilustrowane bedą w trakcie dalszych
rozważań.
dla dociekliwych - end ----
AUTOMAT MINIMALNY
Określenie języka rozpoznawalnego postuluje istnienie automatu o skończonej
liczbie stanów działającego w odpowiedni sposób. Należałoby zatem wskazać algorytm
budowy takiego automatu dla języka rozpoznawalnego. Oczywiście interesuje nas algorytm
prowadzący do automatu o możliwie najprostszej postaci. Najprostsza postać, w tym kontekście,
oznacza najmniejszą liczbę stanów.
Automat
= (S,A,f,s_0,T) Parser nie mógł rozpoznać (błąd składni): {\displaystyle rozpoznający język }
LParser nie mógł rozpoznać (błąd składni): {\displaystyle na\-zy\-wa\-my \textbf{automatem minimalnym}\index{automat minimalny}, jeśli posiada najmniejszą licz\-bę stanów spośród wszystkich automatów rozpoznają\-cych język }
L. Parser nie mógł rozpoznać (nieznana funkcja „\enddefin”): {\displaystyle \enddefin Kwestią istnienia takiego automatu minimalnego zajmujemy się teraz. W kolejnym wykładzie przedstawimy algorytmy konstrukcji automatu minimalnego. W poniższym twierdzeniu występuje automat ilorazowy }
{A}_{P^{r}_{L}} Parser nie mógł rozpoznać (błąd składni): {\displaystyle określony przez prawą kongruencję }
P_L^rParser nie mógł rozpoznać (nieznana funkcja „\begintheor”): {\displaystyle . \begintheor Dla dowolnego automatu }
{A}
rozpoznającego
język istnieje jedyny
epimorfizm
taki, że
Prawa kongruencja automatowa ma
skończony indeks
i .
Zatem z twierdzenia Uzupelnic trr2| wynika, że
Istnienie epimorfizmu wynika z twierdzenia 1.1, wykład 3.
Epimorfizm ten określony jest dla dowolnego stanu
równością gdzie jest
słowem takim, że .
Jest to jedyny epimorfizm spełniający warunki tezy dowodzonego
twierdzenia. Dla każdego epimorfizmu takiego,
że
i
mamy
gdzie
Tak więc
Zatem udowodnione twierdzenie zapewnia nas o istnieniu automatu minimalnego, co
formułujemy w następującym wniosku.
Niech będzie dowolnym językiem. Automat
gdzie jest automatem
minimalnym rozpoznającym język . Oznaczać go
będziemy symbolem .
dla dociekliwych - start ----
Następne twierdzenie charakteryzuje monoid przejść automatu minimalnego i
podaje kolejny warunek równoważny na to,
żeby język był rozpoznawany przez automat.
Niech będzie dowolnym językiem.{}{}
1. Dla dowolnego języka monoid przejść automatu minimalnego jest
izomorficzny z monoidem syntaktycznym języka , czyli
{}{}
2. (tw. J.Myhill'a) Język jest rozpoznawalny wtedy i tylko wtedy,
gdy jest monoidem skończonym.
Dla dowodu punktu 1, wykażemy, że
gdzie zgodnie z definicją dla dowolnych
Korzystamy teraz z twierdzenia o rozkładzie epimorfizmu, które w tym przypadku
ma postać:
RYSUNEK ja-lekcja4-w-rys1.pdf
czyli .
Dla dowodu punktu 2 załóżmy, że język jest rozpoznawalny.
Zatem
gdzie jest kongruencją o skończonym indeksie.
Z twierdzenia Uzupelnic trr2| wnioskujemy, że Oznacza to, że indeks relacji jest
niewiększy od indeksu a co za tym idzie, jest monoidem skończonym.
Dla dowodu implikacji w stronę przeciwną rozważmy epimorfizm kanoniczny
Pokażemy, że spełnia on warunki z punktu 4 twierdzenia 1.2 z wykładu 3. jest skończony, więc pozostaje do wykazania
równość
W tym celu wystarczy oczywiście udowodnić inkluzję
.
Czyli i .
dla dociekliwych - end ----
Z twierdzenia Uzupelnic 3.1| wynika, że określenie klas abstrakcji prawej kongruencji syntaktycznej
prowadzi do określenia minimalnego automatu rozpoznającego język .
Prezentowane poniżej twierdzenia wskazują sposób konstrukcji prawej kongruencji syntaktycznej
dla języka .
Niech będzie dowolnym językiem,
a relacją
równoważności o dwóch klasach równoważności i .
Przez dla oznaczmy zstępujący ciąg relacji określony następująco:
a dla przyjmijmy
{ Wtedy . }
Na początku uzasadnimy, że jest prawą kongruencją na .
Załóżmy więc, że słowa są w relacji .
Wybierzmy
dowolne słowo
i niech oznacza długość tego słowa. Z założenia
wynika, iż , co w świetle definicji ciągu
relacji implikuje, że Parser nie mógł rozpoznać (błąd składni): {\displaystyle xz\: \rho _{i}\: yz. }
Ponieważ
jest dowolne wnioskujemy ostatecznie, że
co kończy dowód faktu, że jest prawą kongruencją.
Dowiedziemy teraz równości
Dla uzasadnienia inkluzji zauważmy, że
jeśli to dla dowolnego mamy
, a w szczególności
Z definicji relacji dla dowolnego prawdziwa
jest równoważność
A więc . Inkluzję w stronę przeciwną pokażemy, dowodząc indukcyjnie
ze względu na , że dla dowolnych prawdziwa
jest następująca implikacja
Załóżmy zatem, że
Z definicji wynika, że dla dowolnego prawdziwa jest równoważność
Przyjmując otrzymujemy
żądaną własność dla Załóżmy teraz, że
prawdziwa jest implikacja
dla oraz dla dowolnych
Stąd,
że jest prawą kongruencją, wnioskujemy, że dla dowolnego
spełniona jest relacja
Korzystając z założenia indukcyjnego mamy
dla dowolnego .
A to oznacza z definicji , że i kończy dowód.
Kolejne twierdzenie charakteryzuje relację dla języka rozpoznawalnego i orzeka, iż
w przypadku języka rozpoznawalnego ciąg relacji , aproksymujacych , jest
skończony. Równoważność dwóch pierwszych warunków poniższego twierdzenia nazywana bywa często
w literaturze twierdzeniem A.Nerode.
Następujące warunki są równoważne:
- Język jest rozpoznawalny
- Relacja ma skończony indeks
- Ciąg relacji stabilizuje się, co oznacza, że istnieje takie, że Dla najmniejszego takiego prawdziwa jest równość
Dowód poprowadzimy według następujacego schematu:
{ Uzupelnic u1| Uzupelnic u2|Uzupelnic u3| }
Uzupelnic u1| Uzupelnic u2|
{ jest największą w sensie inkluzji relacją spełniająca
warunki punktu 2 z twierdzenia 1.2, wykład 3. Z tego samego twierdzenia wynika
skończoność indeksu. }
Uzupelnic u1| Uzupelnic u2|
Relacja jest prawą kongruencją, ma skończony indeks oraz
Z twierdzenia z twierdzenia 1.2, wykład 3 wynika więc, że język jest rozpoznawalny.
Uzupelnic u2| Uzupelnic u3|
Dowód poprowadzimy nie wprost. Załóżmy więc, że dla każdego
jest Oznacza to, że dla każdego
indeksy relacji tworzą ciąg silnie rosnący, to znaczy
spełniają zależność Ponieważ to dla każdego
prawdziwa jest nierówność A to prowadzi do wniosku, że dla dowolnego
Zatem indeks relacji jest nieskończony, co jest sprzeczne z założeniem.
Uzupelnic u2| Uzupelnic u3|
Udowodnimy indukcyjnie ze względu na , że każda z relacji dla
ma skończony indeks. Oczywiście Załóżmy teraz, że relacja
ma skończony indeks. Z definicji relacji wynika,
że jej klasy równoważności powstają przez podział
klas równoważności na skończoną liczbę klas relacji
(skończona jest
liczba możliwych do spełnienia warunków prowadzących do podziału). Oznacza to, że
indeks relacji jest również skończony, a więc
relacja ma również skończony indeks.
Wykorzystamy powyżej udowodnione własności do konstrukcji automatu minimalnego rozpoznającego
język . Warto zauważyc, iż punktem wyjścia dla tej konstrukcji jest język zadany, na
przykład, poprzez wyrażenie regularne.
Ćwiczenie [Uzupelnij]
Niech do języka należą wszystkie słowa nad alfabetem zaczynające się lub kończące literą .
Skonstruujemy minimalny automat akceptujący język .
Ponieważ , to i automat minimalny ma stany.
Przyjmujemy , , ,
oraz , a automat minimalny
przedstawiony jest przy pomocy grafu:
RYSUNEK ja-lekcja4-w-rys2.JPG
Ćwiczenie [Uzupelnij]
Dla języka określimy ciąg relacji , a
następnie relację . Umożliwi nam to, w świetle
powyższych rozważań, zbudowanie automatu minimalnego rozpoznającego
ten język. Poniżej wypisane są klasy równoważności relacji oraz , , co
kończy proces obliczania relacji i daje równość .
- , gdzie
Przyjmując , , , oraz
automat minimalny
przedstawiony jest przy pomocy grafu:
RYSUNEK ja-lekcja4-w-rys3.JPG
dla dociekliwych - start ----
Powyższe twierdzenia podają również sposób konstrukcji
monoidu syntaktycznego języka .
dla dociekliwych - end ----