Logika dla informatyków/Pełność rachunku predykatów
Poniższy system dowodzenia dotyczy formuł pierwszego rzędu nad ustaloną sygnaturą , zbudowanych w oparciu o spójniki , oraz kwantyfikator. Przypomnijmy, że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \neg\var\varphi} oznacza formułęParser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\rightarrow\perp} .
Przez generalizację formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} będziemyrozumieć dowolną formułę postaci Parser nie mógł rozpoznać (nieznana funkcja „\ciut”): {\displaystyle \forall x_1\ldots\forall x_n\ciut\var\varphi} , gdzie są dowolnymi zmiennymi.
\vspace{.3cm}\noindentAksjomaty
Dowolne generalizacje formuł postaci:
(A1) Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\arr(\psi\arr\var\varphi)} ;\\(A2) </math>(\var\varphi\arr(\psi\arr\vartheta))\arr((\var\varphi\arr\psi)\arr(\var\varphi\arr\vartheta))</math>;\\(A3) Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \neg\neg\var\varphi\arr\var\varphi} ;\\(A4) </math>\forall x(\var\varphi\arr\psi)\arr(\forall x\var\varphi\arr\forall x\psi)</math>;\\(A5) Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\arr \forall x \var\varphi} , o ile Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle x\not\in FV(\var\varphi)} ;\\(A6) Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \forall x\var\varphi\arr \var\varphi(\sigma/x)} , o ile jestdopuszczalny dla w Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} ;\\(A7) ;\\(A8) </math> x_1=y_1\arr(x_2=y_2\arr\cdots\arr(x_n=y_n\arr f(x_1,\ldots,x_n)=f(y_1,\ldots, y_n))\cdots)</math>, dla ;\\(A9) </math> x_1=y_1\arr(x_2=y_2\arr\cdots\arr(x_n=y_n\arr(r(x_1,\ldots,x_n)\arr r(y_1,\ldots, y_n)))\cdots)</math>, dla .
\vspace{.3cm}\noindentReguły dowodzenia\\ Parser nie mógł rozpoznać (nieznana funkcja „\WTW”): {\displaystyle f^{\mathfrak A_\Gamma}([c_1]_\sim,[c_2]_\sim)=[d]_\sim \WTW \Gamma\vdash_H Pojęcie dowodu formalnego w powyższym systemie definiuje siędokładnie tak samo jak w przypadku rachunku zdań (por. Rozdział 2).Możliwośćudowodnienia formuły <math>\var\varphi} ze zbioru hipotez wpowyższym systemie będziemy oznaczać przez Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle e_H\var\varphi} .Sam system, podobnie jak w przypadku rachunku zdań, będziemyoznaczać przez . Nie powinno prowadzić to doniejednoznaczności. Zwróćmyuwagę, że system zależyod sygnatury . Tak więc mamy różne systemy dla różnychsygnatur. Pojęcie niesprzecznego zbioru formuł definiuje się tak samo jak w rachunku zdań.
Pokażemy główne kroki dowodu formuły Parser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle (x=y\arr y=x)} .
- </math>\forall x_1\forall x_2\forall y_1\forall y_2(x_1=y_1\arr(x_2=y_2\arr(x_1=x_2\arr y_1=y_2)))</math> \hspace{.5cm} (A9)
- Parser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle x=y\arr(x=x\arr(x=x\arr y=x))} \hspace{.5cm} na mocy (A6) oraz(MP)
- Parser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle x=x\arr(x=y\arr(x=x\arr y=x))} \hspace{.5cm} z (2), jest to instancja tautologii zdaniowej
- \hspace{.5cm} (A7)
- Parser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle x=y\arr(x=x\arr y=x)} \hspace{.5cm} (MP(4,3))
- Parser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle x=x\arr(x=y\arr y=x)} \hspace{.5cm} z (5), jest to instancja tautologii zdaniowej
- \hspace{.5cm} (A7)
- Parser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle x=y\arr y=x} \hspace{.5cm} (MP(7,6))
\end{przyklad}
Dla dowolnego zbioru formuł oraz dowolnych formuł Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi,\psi} ,jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta,\var\varphi\vdash_H\psi} , to Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle e_H\var\varphi\arr\psi} .\end{twierdzenie}
\begin{dowod}Dowód tego twierdzenia jest dokładnie taki sam jak analogicznegotwierdzenia dla rachunku zadań (por. Twierdzenie #tw-zad-1).\end{dowod}
Natępujące twierdzenie mówi, że wybór nazwy zmiennej związanejnie ma wpływu na dowodliwość formuły. Jest to tzw. własność{\em -konwersji}.
Jeśli oraz zmienna jest dopuszczalna dla w ,to .\end{twierdzenie}
\begin{dowod}Ponieważ , to na mocy (A5) mamy
e_H \forall x\,\psi \arr \forall y\forall x\,\psi.\end{equation}Z drugiej strony mamy następującą wersję aksjomatu (A6)
co łącznie z aksjomatem (A4) daje
e_H\forall y\forall x\,\psi\arr\forall y\,\psi(y/x).\end{equation}Tak więc, zakładając i stosując(MP) do (#eq-pier6), a następnie do (#eq-pier7) dostajemy
co kończy dowód.\end{dowod}
Podamy jeszcze jednoużyteczne twierdzenie. Mówi ono, żetzw. {\em reguła generalizacji} jest dopuszczalna w systemie
. Niech
Jeśli zachodzi Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle e_H\var\varphi} , to dla dowolnej zmiennej , takiej że , mamy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle e_H\forall x\,\var\varphi} .\end{twierdzenie}
\begin{dowod}Dowodzimy twierdzenie przez indukcję ze względu na liczbę kroków w dowodzie formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} ze zbioru hipotez . JeśliParser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest jednym z aksjomatów (A1--9), to dowolna generalizacja tejformuły jest też aksjomatem, więc teza zachodzi. Aby pokazać Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle e_H\forall x\,\var\varphi} , dla formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\in\Delta} używamy aksjomatu (A5) i reguły (MP).
Jeśli ostatnim krokiem w dowodzie było zastosowanie (MP), to dla pewnej formuły mamy\mbox{Parser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle e_H\psi\arr\var\varphi} } oraz w mniejszejliczbie kroków. Z założenia indukcyjnego otrzymujemyParser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle e_H\forall x\,(\psi\arr\var\varphi)} oraz . Zatem stosując (MP) do Parser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle \forall x\,(\psi\arr\var\varphi)} oraz do instancji Parser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle \forall x(\psi\arr\var\varphi)\arr(\forall x\psi\arr\forall x\var\varphi)} aksjomatu (A4) otrzymujemy Parser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle \forall x\psi\arr\forall x\var\varphi} . Ponowne zastosowanie (MP) do tej formuły oraz do daje nam Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \forall x\,\var\varphi} .\end{dowod}
Powiemy, że formuła Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest {\em konsekwencją semantyczną}zbioru formuł (i napiszemy \mbox{Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta\models\var\varphi} }), gdydla każdej struktury i dla każdego wartościowania w spełniającego wszystkie formuły ze zbioru , mamyParser nie mógł rozpoznać (nieznana funkcja „\sat”): {\displaystyle \sat\mathfrak A\varrho\var\varphi} . Zwróćmyuwagę, że jeśli jestzbiorem zdań, to powyższa definicja jest równoważna następującejwłasności: każdy model dla jest modelem dla Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} . W ogólnym przypadku, gdy formuły z mogą zawierać zmiennewolne, powyższe dwie definicje nie są równoważne. Na przykład, jeśli jest symbolem operacji jednoargumentowej, to , ale każdy model dla (czyli jednoelementowy) jest modelem dla .
Dla dowolnego zbioru formuł i formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} , jeśli\mbox{Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle e_H\var\varphi} }, to Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta\models\var\varphi} .\end{twierdzenie}
\begin{dowod}Dowód przeprowadzamy przez indukcję ze względu na liczbę kroków w dowodzie formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} ze zbioru hipotez . Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\in\Delta} , to oczywiście mamyParser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta\models\var\varphi} . Sprawdzamy, że jeśliParser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest dowolną generalizacją jednego z aksjomatów (A1--9), tozachodzi Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \models\var\varphi} . Oczywiście reguła (MP) zachowujerelację semantycznej konsekwencji, tzn. jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta\models\var\varphi} i Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta\models\var\varphi\arr\psi} , to . \end{dowod}
Twierdzenie o poprawności może byćużyte do pokazania, że pewnewynikania nie dają się wyprowadzić w systemie. Przykładowo, zobaczmy, że . Istotnie, biorąc dwuelementową strukturę orazwartościowanie, które ,,skleja wartości zmiennych oraz , dostajemy. Zatem z twierdzenia o poprawnościwnioskujemy, że . Jest torównież przykład na to, że system nie jest zamknięty \zwn dowolne generalizacje, tzn. założenie wtwierdzeniu o generalizacji jest istotne.
Zachodzi również odwrotne twierdzenie doTwierdzenia #tw-pier-1. Dowód tego twierdzenia jest celem niniejszego rozdziału.
System formalny dla formuł zawierających pozostałe spójniki: i kwantyfikatoregzystencjalny otrzymuje się z przez dodanie aksjomatów charakteryzujących te symbole:
\noindent(B1) Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\wedge \psi\arr\neg(\var\varphi\arr\neg\psi)} \\(B2) Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \neg(\var\varphi\arr\neg\psi)\arr\var\varphi\wedge \psi} \\(B3) Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\vee\psi\arr(\neg\var\varphi\arr\psi)} \\(B4) Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle (\neg\var\varphi\arr\psi)\arr\var\varphi\vee\psi} \\(B5) Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \exists x\,\var\varphi\arr \neg\forall x\,\neg\var\varphi} \\(B6) Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \neg\forall x\,\neg\var\varphi\arr \exists x\,\var\varphi} \\
Głównym narzędziem w dowodzie ,,silnego twierdzenia o pełności będzie tzw. {\em twierdzenie o istnieniu modelu}. Metoda dowodu tego twierdzenia polega na budowaniu modelu ze stałych. Zaproponował ją L. Henkin.
Najpierw wprowadzimy następującą definicję. Niech będziezbiorem zdań pierwszego rzędu nad sygnaturą oraz niech będzie pewnym zbiorem stałych. Powiemy, że jest zbiorem {\em -nasyconym}, gdy jest zbioremniesprzecznym oraz dla dowolnej formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi(x)} o co najwyżej jednej zmiennejwolnej , jeśliParser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma\not\vdash_H\forall x\,\var\varphi(x)} , to istnieje stała ,taka że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma\vdash_H\neg\var\varphi(c/x)} .
Niech będzie -nasycony. Zauważmy, że jeśliParser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma\vdash_H\neg\forall x\,\var\varphi(x)} oraz jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jestpostaci </math>\neg\psiParser nie mógł rozpoznać (błąd składni): {\displaystyle , to wówczas } \Gamma\vdash_H\neg\forall x\\var\varphi(x)Parser nie mógł rozpoznać (błąd składni): {\displaystyle jest równoważne } \Gamma\vdash_H\exists x\\psi(x)</math>. Ponadto z warunku -nasycenia wynikaistnienie stałej takiej, żeParser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma\vdash_H\neg\var\varphi(c/x)} . \Rightarrow ostatnie jest równoważne (na mocyprawa podwójnego przeczenia) temu, że . Tak więc wtym przypadku jest ,,świadkiem zachodzenia własności </math>\Gamma\vdash_H\existsx\ \psi(x)</math>.
Mocą sygnatury\/ nazwiemy moc zbioru. Moc sygnatury będziemy oznaczać przez .
Dopuścimy możliwość rozszerzenia sygnatury o stałe. Dla dowolnego zbioru rozłącznego z sygnaturą , przez będziemy oznaczać sygnaturę powstałą z przez dodanie symboli stałych ze zbioru .
Niech będzie nieskończonym zbiorem, rozłącznym z sygnaturą oraz takim, że . Niech będzieniesprzecznym zbiorem zdań nad . Istnieje zbiór zdań nadsygnaturą taki, że Parser nie mógł rozpoznać (nieznana funkcja „\Deltasbseteq”): {\displaystyle \Deltasbseteq\Gamma} oraz jest-nasycony. \end{lemat}
\begin{dowod}Bez zmniejszenia ogólności możemy przyjąć, że istnieje zmienna nie występująca wolno w żadnej formule ze zbioru (w przeciwnym przypadku możemy tak przenumerować zmienne, aby ten warunek był spełniony).Przedstawimy dowód dla przypadku kiedy i sązbiorami przeliczalnymi. Dowód ogólnego przypadku pozostawimyCzytelnikowi jako ćwiczenie (należy zastosować indukcję pozaskończoną). Ustawmy zbiór wszystkich formuł nad o jednej zmiennej wolnej w ciąg</math>\var\varphi_0,\var\varphi_1,\ldotsParser nie mógł rozpoznać (błąd składni): {\displaystyle Zdefiniujemy ciąg zbiorów } \{\Gamma_n\ |\n\in \NN\}</math> oraz ciąg stałych Parser nie mógł rozpoznać (nieznana funkcja „\NN”): {\displaystyle \{c_n\ |\ n\in \NN\}sbseteq C} o następującychwłasnościach:
- zawiera skończenie wiele stałych z .
- Parser nie mógł rozpoznać (nieznana funkcja „\Deltasbseteq”): {\displaystyle \Deltasbseteq\Gamma_n} jest niesprzecznym zbiorem zdań nad.
- Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma_n\not\vdash_H\forall x\,\var\varphi_n(x)} , toParser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma_{n+1}=\Gamma_n\cup\{\neg\var\varphi_n(c_n/x)\}} .
Ustalmy dowolną stałą .Przyjmujemy . Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma_n\vdash_H\forall x\,\var\varphi_n(x)}
,to definiujemy oraz . Jeśli natomiastParser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma_n\not\vdash_H\forall x\,\var\varphi_n(x)}
to niech będziestałą nie występującą w ani w Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi_n}
. Musimypokazać, że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma_{n+1}=\Gamma_n\cup\{\neg\var\varphi_n(c_n/x)\}}
jestzbiorem niesprzecznym. Załóżmy przeciwnie, że
Zatem Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma_n\vdash_H\neg\neg\var\varphi_n(c_n/x)} i z (A3) dostajemyParser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma_n\vdash_H\var\varphi_n(c_n/x)} . Ponieważ nie występuje w ani w Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi_n} to możemy w dowodzie powyższego sekwentuzamienić wszystkie wystąpienia przez nową zmienną ,która się w tym dowodzie nie pojawiła oraz nie występuje wolno w formułach z . Tak więc otrzymujemyParser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma_n\vdash_H\var\varphi_n(z/x)} oraz . Na mocyTwierdzenia #tw-gen o generalizacji dostajemyParser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma_n\vdash_H \forall z\ \var\varphi_n(z/x)} . Ponieważ jest dopuszczalna dla w Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi_n(z/x)} oraz Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi_n(z/x)(x/z)=\var\varphi_n(x)} , to stosując-konwersję (Twierdzenie #tw-alfa) dostajemyParser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma_n\vdash_H\forall x\,\var\varphi_n(x)} , wbrew założeniu. W ten sposóbudowodniliśmy niesprzeczność zbioru . \Rightarrow kończy konstrukcję zbiorów oraz stałych .
Niech
Pokażemy, że jest zbiorem -nasyconym.Oczywiście jako suma łańcucha zbiorów niesprzecznych jestrównież zbiorem niesprzecznym. Niech Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi(x)} będzie dowolnąformułą nad o jednej zmiennej wolnej i załóżmy, żeParser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma\not\vdash_H \forall x\,\var\varphi(x)} . Niech Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi(x)=\var\varphi_n(x)} , dla pewnego </math>nParser nie mógł rozpoznać (błąd składni): {\displaystyle . Oczywiście mamy } \Gamma_n\not\vdash_H\forall x\,\var\varphi_n(x)</math> i z konstrukcji zbiorów wynika,że </math>\Gamma_{n+1}\vdash_H \neg\var\varphi_n(c_n/x)</math>. Zatem Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma\vdash_H \neg\var\varphi_n(c_n/x)} , codowodzi -nasycenia zbioru .\end{dowod}
Niech będzie dowolnym zbiorem stałych i niech będzie dowolnym -nasyconym zbiorem zdań nad .W zbiorze definiujemy relację równoważności :
Zdefiniujemy strukturę . Nośnikiem tej struktury jest zbiór ilorazowy . Musimyokreślić interpretację symboli operacji i relacji z . Dlaprzykładu załóżmy, że jest symbolem operacjidwuargumentowej. Funkcję Parser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle f^{\mathfrak A_\Gamma}:(C/\!\!\sim)^2\arr C/\!\!\sim} definiujemy warunkiem
</math>Dla pokazania, że jest dobrze określoną funkcjąmusimy sprawdzić, że: Własność (#eq-zwart-1) wynika z faktu, że zbiór jest</math>CParser nie mógł rozpoznać (błąd składni): {\displaystyle -nasycony. Zauważmy najpierw, że } \Gamma\vdash_H\neg\forall x\,\negf(c_1,c_2)=xParser nie mógł rozpoznać (błąd składni): {\displaystyle . Istotnie, załóżmy } \forall x\,\negf(c_1,c_2)=xParser nie mógł rozpoznać (błąd składni): {\displaystyle . Wówczas z aksjomatu (A6) dostajemy } \negf(c_1,c_2)=f(c_1,c_2)</math>. Z drugiej strony, z aksjomatu (A7) i (A6)dostajemy . Tak więc otrzymujemy , a więc. Zatem z-nasycenia wynika istnienie stałej takiej, że. Korzystając teraz z (A3)dostajemy .
Własność (#eq-zwart-2) wynika natychmiast z następującej postaciaksjomatu (A8) (postać tę otrzymujemy z (A8) z pomocą aksjomatu (A6)) Parser nie mógł rozpoznać (nieznana funkcja „\WTW”): {\displaystyle ([c_1]_\sim,[c_2]_\sim)\in r^{\mathfrak A_\Gamma}\WTW \Gamma\vdash_H <!--%-->Interpretacja symboli relacji w <math>\mathfrak A_\Gamma} wygląda podobnie. Dlaprzykładu zdefiniujemy relację </math>r^{\mathfrak A_\Gamma}r\in\Sigma_2^R</math>.
</math>W tym przypadku również musimy dowieść poprawności definicji(tzn. niezależności od wyboru reprezentantów). Czyli musimypokazać, że jeśli oraz , to