Logika dla informatyków/Pełność rachunku predykatów: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Aneczka (dyskusja | edycje)
m Zastępowanie tekstu – „<math> ” na „<math>”
 
(Nie pokazano 49 wersji utworzonych przez 4 użytkowników)
Linia 1: Linia 1:
Poniższy system dowodzenia dotyczy formuł pierwszego rzędu nad ustaloną sygnaturą <math>\Sigma</math>, zbudowanych w oparciu o spójniki <math>\rightarrow</math>, <math>\perp</math> oraz kwantyfikator <math>\forall</math>. Przypomnijmy, że <math>\neg\var\varphi</math> oznacza formułę<math>\var\varphi\rightarrow\perp</math>.
==Hilbertowski system dowodzenia==
Poniższy system dowodzenia dotyczy formuł pierwszego rzędu nad ustaloną sygnaturą <math>\Sigma</math>, zbudowanych w oparciu o spójniki <math>\rightarrow</math>, <math>\perp</math> oraz kwantyfikator <math>\forall</math>. Przypomnijmy, że <math>\neg\var\varphi</math> oznacza formułę <math>\var\varphi\rightarrow\perp</math>.


Przez ''generalizację'' formuły <math>\var\varphi</math> będziemy rozumieć dowolną formułę postaci <math>\forall x_1\ldots\forall x_n\ciut\var\varphi</math>, gdzie <math>x_1,\ldots x_n</math> są dowolnymi zmiennymi.
Przez ''generalizację'' formuły <math>\var\varphi</math> będziemy rozumieć dowolną formułę postaci <math>\forall x_1\ldots\forall x_n\ciut\var\varphi</math>, gdzie <math>x_1,\ldots x_n</math> są dowolnymi zmiennymi.


==Aksjomaty==  
===Aksjomaty===


Dowolne generalizacje formuł postaci:   
Dowolne generalizacje formuł postaci:   


(A1) <math>\var\varphi\rightarrow(\psi\rightarrow\var\varphi)</math>;<br>
(A1)&nbsp;&nbsp; <math>\var\varphi\rightarrow(\psi\rightarrow\var\varphi)</math>;<br>
(A2) <math>(\var\varphi\rightarrow(\psi\rightarrow\vartheta))\rightarrow((\var\varphi\rightarrow\psi)\rightarrow(\var\varphi\rightarrow\vartheta))</math>;<br>
(A2)&nbsp;&nbsp; <math>(\var\varphi\rightarrow(\psi\rightarrow\vartheta))\rightarrow((\var\varphi\rightarrow\psi)\rightarrow(\var\varphi\rightarrow\vartheta))</math>;<br>
(A3) <math>\neg\neg\var\varphi\rightarrow\var\varphi</math>;<br>
(A3)&nbsp;&nbsp; <math>\neg\neg\var\varphi\rightarrow\var\varphi</math>;<br>
(A4) <math>\forall x(\var\varphi\rightarrow\psi)\rightarrow(\forall x\var\varphi\rightarrow\forall x\psi)</math>;<br>
(A4)&nbsp;&nbsp; <math>\forall x(\var\varphi\rightarrow\psi)\rightarrow(\forall x\var\varphi\rightarrow\forall x\psi)</math>;<br>
(A5) <math>\var\varphi\rightarrow \forall x \var\varphi</math>, o ile <math>x\not\in FV(\var\varphi)</math>;<br>
(A5)&nbsp;&nbsp; <math>\var\varphi\rightarrow \forall x \var\varphi</math>, o ile <math>x\not\in FV(\var\varphi)</math>;<br>
(A6) <math>\forall x\var\varphi\rightarrow \var\varphi(\sigma/x)</math>, o ile <math>\sigma</math> jestdopuszczalny dla <math>x</math> w <math>\var\varphi</math>;<br>
(A6)&nbsp;&nbsp; <math>\forall x\var\varphi\rightarrow \var\varphi(\sigma/x)</math>, o ile <math>\sigma</math> jestdopuszczalny dla <math>x</math> w <math>\var\varphi</math>;<br>
(A7) <math> x=x</math>;<br>
(A7)&nbsp;&nbsp; <math>x=x</math>;<br>
(A8) <math>x_1=y_1\rightarrow(x_2=y_2\rightarrow\cdots\rightarrow(x_n=y_n\rightarrow f(x_1,\ldots,x_n)=f(y_1,\ldots, y_n))\cdots)</math>, dla <math>f\in\Sigma_n^F,\ n\geq 0</math>;<br>
(A8)&nbsp;&nbsp; <math>x_1=y_1\rightarrow(x_2=y_2\rightarrow\cdots\rightarrow(x_n=y_n\rightarrow f(x_1,\ldots,x_n)=f(y_1,\ldots, y_n))\cdots)</math>, dla<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<math>f\in\Sigma_n^F,\ n\geq 0</math>;<br>
(A9) <math>x_1=y_1\rightarrow(x_2=y_2\rightarrow\cdots\rightarrow(x_n=y_n\rightarrow(r(x_1,\ldots,x_n)\rightarrow r(y_1,\ldots, y_n)))\cdots)</math>, dla <math>r\in\Sigma_n^R,\ n\geq 1</math>.
(A9)&nbsp;&nbsp; <math>x_1=y_1\rightarrow(x_2=y_2\rightarrow\cdots\rightarrow(x_n=y_n\rightarrow(r(x_1,\ldots,x_n)\rightarrow r(y_1,\ldots, y_n)))\cdots)</math>, dla<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <math>r\in\Sigma_n^R,\ n\geq 1</math>.


==Reguły dowodzenia==
===Reguły dowodzenia===
<span id="lem-nasyc"/>
<span id="lem-nasyc"/>


<math> f^{\mathfrak A_\Gamma}([c_1]_\sim,[c_2]_\sim)=[d]_\sim \WTW \Gamma\vdash_H</math>
(MP)&nbsp;&nbsp;&nbsp;&nbsp;<math>\frac{\varphi\hspace{1cm}\varaphi\rightarrow\psi}{\psi}</math>


Pojęcie dowodu formalnego w powyższym systemie definiuje siędokładnie tak samo jak w&nbsp;przypadku rachunku zdań (por. Rozdział&nbsp;2).Możliwość udowodnienia formuły <math>\var\varphi</math> ze zbioru hipotez <math>\Delta</math> wpowyższym systemie będziemy oznaczać przez <math>\Delta\vdash_H\varphi</math>.Sam system, podobnie jak w przypadku rachunku zdań, będziemyoznaczać przez <math>\vdash_H</math>. Nie powinno prowadzić to doniejednoznaczności. Zwróćmyuwagę, że system <math>\vdash_H</math> zależyod sygnatury <math>\Sigma</math>. Tak więc mamy różne systemy dla różnychsygnatur. Pojęcie niesprzecznego zbioru formuł definiuje się tak samo jak w rachunku zdań.
Pojęcie dowodu formalnego w powyższym systemie definiuje się dokładnie tak samo jak w&nbsp;przypadku rachunku zdań (por. Rozdział&nbsp;5). Piszemy też <math>\Delta\vdash_H\varphi</math>,
gdy istnieje dowód formuły <math>\var\varphi</math> ze zbioru hipotez <math>\Delta</math>. Sam system, podobnie jak w przypadku rachunku zdań, będziemy oznaczać przez <math>\vdash_H</math>. Nie powinno prowadzić to do niejednoznaczności. Zwróćmy uwagę, że system <math>\vdash_H</math> zależy od sygnatury <math>\Sigma</math>. Tak więc mamy różne systemy dla różnych sygnatur. Pojęcie niesprzecznego zbioru formuł definiuje się tak samo jak w rachunku zdań.




Linia 28: Linia 30:
Pokażemy główne kroki dowodu formuły <math>(x=y\rightarrow y=x)</math>.
Pokażemy główne kroki dowodu formuły <math>(x=y\rightarrow y=x)</math>.
#<math>\forall x_1\forall x_2\forall y_1\forall y_2(x_1=y_1\rightarrow(x_2=y_2\rightarrow(x_1=x_2\rightarrow y_1=y_2)))</math>&nbsp;&nbsp;&nbsp;(A9)
#<math>\forall x_1\forall x_2\forall y_1\forall y_2(x_1=y_1\rightarrow(x_2=y_2\rightarrow(x_1=x_2\rightarrow y_1=y_2)))</math>&nbsp;&nbsp;&nbsp;(A9)
#<math> x=y\rightarrow(x=x\rightarrow(x=x\rightarrow y=x))</math> &nbsp;&nbsp;&nbsp; na mocy (A6) oraz(MP)
#<math>x=y\rightarrow(x=x\rightarrow(x=x\rightarrow y=x))</math> &nbsp;&nbsp;&nbsp; na mocy (A6) oraz(MP)
#<math>x=x\rightarrow(x=y\rightarrow(x=x\rightarrow y=x))</math>&nbsp;&nbsp;&nbsp; z (2), jest to instancja tautologii zdaniowej  
#<math>x=x\rightarrow(x=y\rightarrow(x=x\rightarrow y=x))</math>&nbsp;&nbsp;&nbsp; z (2), jest to instancja tautologii zdaniowej  
#<math>x=x</math> &nbsp;&nbsp;&nbsp;(A7)
#<math>x=x</math> &nbsp;&nbsp;&nbsp;(A7)
Linia 34: Linia 36:
#<math>x=x\rightarrow(x=y\rightarrow y=x)</math> &nbsp;&nbsp;&nbsp; z (5), jest to instancja tautologii zdaniowej  
#<math>x=x\rightarrow(x=y\rightarrow y=x)</math> &nbsp;&nbsp;&nbsp; z (5), jest to instancja tautologii zdaniowej  
#<math>x=x</math>&nbsp;&nbsp;&nbsp;(A7)
#<math>x=x</math>&nbsp;&nbsp;&nbsp;(A7)
#<math> x=y\rightarrow y=x</math>&nbsp;&nbsp;&nbsp;(MP(7,6))
#<math>x=y\rightarrow y=x</math>&nbsp;&nbsp;&nbsp;(MP(7,6))
}}
}}


Linia 43: Linia 45:


{{dowod|||
{{dowod|||
Dowód tego twierdzenia jest dokładnie taki sam jak analogicznegotwierdzenia dla rachunku zadań (por. Twierdzenie [[#tw-zad-1|5.2]]).}}
Dowód tego twierdzenia jest dokładnie taki sam, jak analogicznego twierdzenia dla rachunku zdań
(por. Twierdzenie [[#tw-zad-1|5.2]]).}}


Natępujące twierdzenie mówi, że wybór nazwy zmiennej związanej nie ma wpływu na dowodliwość formuły. Jest to tzw. własność ''<math>\alpha</math>-konwersji''.
Natępujące twierdzenie mówi, że wybór nazwy zmiennej związanej nie ma wpływu na dowodliwość formuły. Jest to tzw. własność ''<math>\alpha</math>-konwersji''.


{{twierdzenie|7.3 (o <math>\alpha</math>-konwersji)||
{{twierdzenie|7.3 (o <math>\alpha</math>-konwersji)||
Jeśli <math>\Delta\vdash_H\forall x\,\psi</math> oraz zmienna <math>y\not\in FV(\forall x\,\psi)</math> jest dopuszczalna dla <math>x</math> w <math>\psi</math>,to <math>\Delta\vdash_H\forall y\,\psi(y/x)</math>.}}
Jeśli <math>\Delta\vdash_H\forall x\,\psi</math> oraz zmienna <math>y\not\in FV(\forall x\,\psi)</math> jest dopuszczalna dla <math>x</math> w <math>\psi</math>, to <math>\Delta\vdash_H\forall y\,\psi(y/x)</math>.}}


{{dowod|||
{{dowod|||
Ponieważ <math>y\not\in FV(\forall x\,\psi)</math>, to na mocy (A5) mamy <math>\Delta\vdash_H \forall x\,\psi \rightarrow \forall y\forall x\,\psi.</math>Z drugiej strony mamy następującą wersję aksjomatu (A6) co łącznie z aksjomatem (A4) daje <math>\Delta\vdash_H\forall y\forall x\,\psi\rightarrow\forall y\,\psi(y/x).</math>Tak więc, zakładając <math>\Delta\vdash_H\forall x\,\psi</math> i stosując(MP) do ([[#eq-pier6|7]]), a następnie do ([[#eq-pier7|8]]) dostajemy co kończy dowód.}}
Ponieważ <math>y\not\in FV(\forall x\,\psi)</math>, to na mocy (A5) mamy <math>\Delta\vdash_H \forall x\,\psi \rightarrow \forall y\forall x\,\psi</math>. Z drugiej strony mamy następującą wersję aksjomatu (A6), co łącznie z aksjomatem (A4) daje <math>\Delta\vdash_H\forall y\forall x\,\psi\rightarrow\forall y\,\psi(y/x)</math>. Tak więc zakładając <math>\Delta\vdash_H\forall x\,\psi</math> i stosując(MP) do ([[#eq-pier6|7]]), a następnie do ([[#eq-pier7|8]]), dostajemy co kończy dowód.}}




Podamy jeszcze jednoużyteczne twierdzenie. Mówi ono, że tzw. ''reguła generalizacji'' jest dopuszczalna w systemie <math>\vdash_H</math>. Niech  
Podamy jeszcze jedno użyteczne twierdzenie. Mówi ono, że tzw. ''reguła generalizacji'' jest dopuszczalna w systemie <math>\vdash_H</math>. Niech  


<center><math>FV(\Delta)=\bigcup\{FV(\var\varphi)\ |\ \var\varphi\in\Delta\}.</math></center>
<center><math>FV(\Delta)=\bigcup\{FV(\var\varphi)\ |\ \var\varphi\in\Delta\}</math>.</center>


{{twierdzenie|7.4 (o generalizacji)||
{{twierdzenie|7.4 (o generalizacji)||
Jeśli zachodzi <math>\Delta\vdash_H\var\varphi</math>, to dla dowolnej zmiennej <math>x</math>, takiej że <math>x\not\in FV(\Delta)</math>, mamy <math>Delta\vdash_H\forall x\,\var\varphi</math>.}}
Jeśli zachodzi <math>\Delta\vdash_H\var\varphi</math>, to dla dowolnej zmiennej <math>x</math>, takiej że <math>x\not\in FV(\Delta)</math>, mamy <math>\Delta\vdash_H\forall x\,\var\varphi</math>.}}


{{dowod|||
{{dowod|||
Dowodzimy twierdzenie przez indukcję ze względu na liczbę kroków w dowodzie formuły <math>\var\varphi</math> ze zbioru hipotez <math>\Delta</math>. Jeśli<math>\var\varphi</math> jest jednym z aksjomatów (A1--9), to dowolna generalizacja tej formuły jest też aksjomatem, więc teza zachodzi. Aby pokazać <math>\Delta\vdash_H\forall x\,\var\varphi</math>, dla formuły <math>\var\varphi\in\Delta</math>używamy aksjomatu (A5) i reguły (MP).
Dowodzimy twierdzenie przez indukcję ze względu na liczbę kroków w dowodzie formuły <math>\var\varphi</math> ze zbioru hipotez <math>\Delta</math>. Jeśli <math>\var\varphi</math> jest jednym z aksjomatów (A1--9), to dowolna generalizacja tej formuły jest też aksjomatem, więc teza zachodzi. Aby pokazać <math>\Delta\vdash_H\forall x\,\var\varphi</math>, dla formuły <math>\var\varphi\in\Delta</math>używamy aksjomatu (A5) i reguły (MP).


Jeśli ostatnim krokiem w dowodzie było zastosowanie (MP), to dla pewnej formuły <math>\psi</math> mamy <math>\Delta\vdash_H\psi\rightarrow\var\varphi</math> oraz <math>\Delta\vdash_H\psi</math> w mniejszejliczbie kroków. Z założenia indukcyjnego otrzymujemy<math>\Delta\vdash_H\forall x\,(\psi\rightarrow\var\varphi)</math> oraz <math>\Delta\vdash_H\forall x\,\psi</math>. Zatem stosując (MP) do <math>\forall x\,(\psi\rightarrow\var\varphi)</math> oraz do instancji <math>\forall x(\psi\rightarrow\var\varphi)\rightarrow(\forall x\psi\rightarrow\forall x\var\varphi)</math>aksjomatu (A4) otrzymujemy <math>\forall x\psi\rightarrow\forall x\var\varphi</math>. Ponowne zastosowanie (MP) do tej formuły oraz do <math>\forall x\,\psi</math> daje nam <math>\forall x\,\var\varphi</math>.}}
Jeśli ostatnim krokiem w dowodzie było zastosowanie (MP), to dla pewnej formuły <math>\psi</math> mamy <math>\Delta\vdash_H\psi\rightarrow\var\varphi</math> oraz <math>\Delta\vdash_H\psi</math> w mniejszej liczbie kroków. Z założenia indukcyjnego otrzymujemy <math>\Delta\vdash_H\forall x\,(\psi\rightarrow\var\varphi)</math> oraz <math>\Delta\vdash_H\forall x\,\psi</math>. Zatem stosując (MP) do <math>\forall x\,(\psi\rightarrow\var\varphi)</math> oraz do instancji <math>\forall x(\psi\rightarrow\var\varphi)\rightarrow(\forall x\psi\rightarrow\forall x\var\varphi)</math>aksjomatu (A4) otrzymujemy <math>\forall x\psi\rightarrow\forall x\var\varphi</math>. Ponowne zastosowanie (MP) do tej formuły oraz do <math>\forall x\,\psi</math> daje nam <math>\forall x\,\var\varphi</math>.}}


Powiemy, że formuła <math>\var\varphi</math> jest ''konsekwencją semantyczną'' zbioru formuł <math>\Delta</math> (i napiszemy <math>\Delta\models\var\varphi</math>), gdy dla każdej struktury <math>\mathfrak A</math> i dla każdego wartościowania <math>\varrho</math> w <math>\mathfrak A</math> spełniającego wszystkie formuły ze zbioru <math>\Delta</math>, mamy<math>\sat\mathfrak A\varrho\var\varphi</math>. Zwróćmy uwagę, że jeśli <math>\Delta</math> jestzbiorem zdań, to powyższa definicja jest równoważna następującej własności: każdy model dla <math>\Delta</math> jest modelem dla <math>\var\varphi</math>. W ogólnym przypadku, gdy formuły z <math>\Delta</math> mogą zawierać zmiennewolne, powyższe dwie definicje nie są równoważne. Na przykład, jeśli<math>f</math> jest symbolem operacji jednoargumentowej, to <math>x=y\not\models f(z)=z</math>, ale każdy model dla <math>x=y</math>(czyli jednoelementowy) jest modelem dla <math>f(z)=z</math>.  
Powiemy, że formuła <math>\var\varphi</math> jest ''konsekwencją semantyczną'' zbioru formuł <math>\Delta</math> (i napiszemy <math>\Delta\models\var\varphi</math>), gdy dla każdej struktury <math>\mathfrak A</math> i dla każdego wartościowania <math>\varrho</math> w <math>\mathfrak A</math> spełniającego wszystkie formuły ze zbioru <math>\Delta</math>, mamy <math>\sat\mathfrak A\varrho\var\varphi</math>. Zwróćmy uwagę, że jeśli <math>\Delta</math> jest zbiorem zdań, to powyższa definicja jest równoważna następującej własności: każdy model dla <math>\Delta</math> jest modelem dla <math>\var\varphi</math>. W ogólnym przypadku, gdy formuły z <math>\Delta</math> mogą zawierać zmiennewolne, powyższe dwie definicje nie są równoważne. Na przykład, jeśli<math>f</math> jest symbolem operacji jednoargumentowej, to <math>x=y\not\models f(z)=z</math>, ale każdy model dla <math>x=y</math>(czyli jednoelementowy) jest modelem dla <math>f(z)=z</math>.  


{{twierdzenie|7.5 (o poprawności)||
{{twierdzenie|7.5 (o poprawności)||
Linia 72: Linia 75:


{{dowod|||
{{dowod|||
Dowód przeprowadzamy przez indukcję ze względu na liczbę kroków w dowodzie formuły <math>\var\varphi</math> ze zbioru hipotez <math>\Delta</math>. Jeśli <math>\var\varphi\in\Delta</math>, to oczywiście mamy<math>\Delta\models\var\varphi</math>. Sprawdzamy, że jeśli <math>\var\varphi</math> jest dowolną generalizacją jednego z aksjomatów (A1--9), tozachodzi <math>\models\var\varphi</math>. Oczywiście reguła (MP) zachowujerelację semantycznej konsekwencji, tzn. jeśli <math>\Delta\models\var\varphi</math> i <math>\Delta\models\var\varphi\rightarrow\psi</math>, to <math>\Delta\models\psi</math>. }}
Dowód przeprowadzamy przez indukcję ze względu na liczbę kroków w dowodzie formuły <math>\var\varphi</math> ze zbioru hipotez <math>\Delta</math>. Jeśli <math>\var\varphi\in\Delta</math>, to oczywiście mamy <math>\Delta\models\var\varphi</math>. Sprawdzamy, że jeśli <math>\var\varphi</math> jest dowolną generalizacją jednego z aksjomatów (A1--9), to zachodzi <math>\models\var\varphi</math>. Oczywiście reguła (MP) zachowuje relację semantycznej konsekwencji, tzn. jeśli <math>\Delta\models\var\varphi</math> i <math>\Delta\models\var\varphi\rightarrow\psi</math>, to <math>\Delta\models\psi</math>. }}


Twierdzenie o poprawności może być użyte do pokazania, że pewnew ynikania nie dają się wyprowadzić w systemie <math>\vdash_H</math>. Przykładowo, zobaczmy, że <math>x=y\not\vdash_H\forall x\,(x=y)</math>. Istotnie, biorąc dwuelementową strukturę <math>\mathfrak A</math> orazwartościowanie, które "skleja" wartości zmiennych <math>x</math> oraz <math>y</math>, dostajemy <math>x=y\not\models\forall x\,(x=y)</math>. Zatem z twierdzenia o poprawności wnioskujemy, że <math>x=y\not\vdash_H\forall x\,(x=y)</math>. Jest to również przykład na to, że system <math>\vdash_H</math> nie jest zamknięty ze względu na dowolne generalizacje, tzn. założenie <math>x\not\in FV(\Delta)</math> w twierdzeniu o generalizacji jest istotne.
Twierdzenie o poprawności może być użyte do pokazania, że pewne wynikania nie dają się wyprowadzić w systemie <math>\vdash_H</math>. Przykładowo, zobaczmy, że <math>x=y\not\vdash_H\forall x\,(x=y)</math>. Istotnie, biorąc dwuelementową strukturę <math>\mathfrak A</math> oraz wartościowanie, które "skleja" wartości zmiennych <math>x</math> oraz <math>y</math>, dostajemy <math>x=y\not\models\forall x\,(x=y)</math>. Zatem z twierdzenia o poprawności wnioskujemy, że <math>x=y\not\vdash_H\forall x\,(x=y)</math>. Jest to również przykład na to, że system <math>\vdash_H</math> nie jest zamknięty ze względu na dowolne generalizacje, tzn. założenie <math>x\not\in FV(\Delta)</math> w twierdzeniu o generalizacji jest istotne.


Zachodzi również odwrotne twierdzenie doTwierdzenia&nbsp;[[#tw-pier-1|7.5]]. Dowód tego twierdzenia jest celem niniejszego rozdziału.
Zachodzi również odwrotne twierdzenie do Twierdzenia&nbsp;[[#tw-pier-1|7.5]]. Dowód tego twierdzenia jest celem niniejszego rozdziału.


System formalny dla formuł zawierających pozostałe spójniki:<math>\wedge,\ \vee</math> i kwantyfikator egzystencjalny otrzymuje się z <math>\vdash_H</math> przez dodanie aksjomatów charakteryzujących te symbole:
System formalny dla formuł zawierających pozostałe spójniki:<math>\wedge,\ \vee</math> i kwantyfikator egzystencjalny otrzymuje się z <math>\vdash_H</math> przez dodanie aksjomatów charakteryzujących te symbole:


(B1)&nbsp; <math> \var\varphi\wedge \psi\rightarrow\neg(\var\varphi\rightarrow\neg\psi)</math><br>
(B1)&nbsp; <math>\var\varphi\wedge \psi\rightarrow\neg(\var\varphi\rightarrow\neg\psi)</math><br>
(B2)&nbsp; <math>\neg(\var\varphi\rightarrow\neg\psi)\rightarrow\var\varphi\wedge \psi</math><br>
(B2)&nbsp; <math>\neg(\var\varphi\rightarrow\neg\psi)\rightarrow\var\varphi\wedge \psi</math><br>
(B3)&nbsp; <math>\var\varphi\vee\psi\rightarrow(\neg\var\varphi\rightarrow\psi)</math><br>
(B3)&nbsp; <math>\var\varphi\vee\psi\rightarrow(\neg\var\varphi\rightarrow\psi)</math><br>
(B4)&nbsp; <math>(\neg\var\varphi\rightarrow\psi)\rightarrow\var\varphi\vee\psi</math><br>
(B4)&nbsp; <math>(\neg\var\varphi\rightarrow\psi)\rightarrow\var\varphi\vee\psi</math><br>
(B5)&nbsp; <math> \exists x\,\var\varphi\rightarrow \neg\forall x\,\neg\var\varphi</math><br>
(B5)&nbsp; <math>\exists x\,\var\varphi\rightarrow \neg\forall x\,\neg\var\varphi</math><br>
(B6)&nbsp; <math> \neg\forall x\,\neg\var\varphi\rightarrow \exists x\,\var\varphi</math>
(B6)&nbsp; <math>\neg\forall x\,\neg\var\varphi\rightarrow \exists x\,\var\varphi</math>




Głównym narzędziem w dowodzie "silnego" twierdzenia o pełności będzie tzw. ''twierdzenie o istnieniu modelu''. Metoda dowodu tego twierdzenia polega na budowaniu modelu ze stałych. Zaproponował ją L. Henkin.
Głównym narzędziem w dowodzie "silnego" twierdzenia o pełności będzie tzw. ''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 <math>\Gamma</math> będzie zbiorem zdań pierwszego rzędu nad sygnaturą <math>\Sigma</math> oraz niech<math>C\subseteq\Sigma_0</math> będzie pewnym zbiorem stałych. Powiemy, że <math>\Gamma</math>jest zbiorem ''<math>C</math>-nasyconym'', gdy <math>\Gamma</math> jest zbiorem niesprzecznym oraz dla dowolnej formuły <math>\var\varphi(x)</math> o co najwyżej jednej zmiennej wolnej <math>x</math>, jeśli <math>\Gamma\not\vdash_H\forall x\,\var\varphi(x)</math>, to istnieje stała <math>c\in C</math>,taka że <math>\Gamma\vdash_H\neg\var\varphi(c/x)</math>.  
Najpierw wprowadzimy następującą definicję. Niech <math>\Gamma</math> będzie zbiorem zdań pierwszego rzędu nad sygnaturą <math>\Sigma</math> oraz niech <math>C\subseteq\Sigma_0</math> będzie pewnym zbiorem stałych. Powiemy, że <math>\Gamma</math>jest zbiorem ''<math>C</math>-nasyconym'', gdy <math>\Gamma</math> jest zbiorem niesprzecznym oraz dla dowolnej formuły <math>\var\varphi(x)</math> o co najwyżej jednej zmiennej wolnej <math>x</math>, jeśli <math>\Gamma\not\vdash_H\forall x\,\var\varphi(x)</math>, to istnieje stała <math>c\in C</math>,taka że <math>\Gamma\vdash_H\neg\var\varphi(c/x)</math>.  


Niech <math>\Gamma</math> będzie <math>C</math>-nasycony.  Zauważmy, że jeśli <math>\Gamma\vdash_H\neg\forall x\,\var\varphi(x)</math> oraz jeśli <math>\var\varphi</math> jest postaci <math>\neg\psi</math>, to wówczas <math>\Gamma\vdash_H\neg\forall x\var\varphi(x)</math> jest równoważne <math>\Gamma\vdash_H\exists x\psi(x)</math>. Ponadto z warunku <math>C</math>-nasycenia <math>\Gamma</math> wynika istnienie stałej <math>c\in C</math> takiej, że<math>\Gamma\vdash_H\neg\var\varphi(c/x). \Rightarrow </math> ostatnie jest równoważne (na mocy prawa podwójnego przeczenia) temu, że <math>\Gamma\vdash_H\psi(c/x)</math>. Tak więc w tym przypadku <math>c</math> jest "świadkiem" zachodzenia własności <math>\Gamma\vdash_H\existsx\ \psi(x)</math>.
Niech <math>\Gamma</math> będzie <math>C</math>-nasycony.  Zauważmy, że jeśli <math>\Gamma\vdash_H\neg\forall x\,\var\varphi(x)</math> oraz jeśli <math>\var\varphi</math> jest postaci <math>\neg\psi</math>, to wówczas <math>\Gamma\vdash_H\neg\forall x\var\varphi(x)</math> jest równoważne <math>\Gamma\vdash_H\exists x\psi(x)</math>. Ponadto z warunku <math>C</math>-nasycenia <math>\Gamma</math> wynika istnienie stałej <math>c\in C</math> takiej, że <math>\Gamma\vdash_H\neg\var\varphi(c/x). \Rightarrow</math> ostatnie jest równoważne (na mocy prawa podwójnego przeczenia) temu, że <math>\Gamma\vdash_H\psi(c/x)</math>. Tak więc w tym przypadku <math>c</math> jest "świadkiem" zachodzenia własności <math>\Gamma\vdash_H\existsx\ \psi(x)</math>.


''Mocą sygnatury'' <math>\Sigma</math> nazwiemy moc zbioru <math>(\bigcup_{n=0}^{\infty}\Sigma^F_n)\cup(\bigcup_{n=1}^{\infty}\Sigma^R_n)</math>. Moc sygnatury <math>\Sigma</math> będziemy oznaczać przez <math>|\Sigma|</math>.  
''Mocą sygnatury'' <math>\Sigma</math> nazwiemy moc zbioru <math>(\bigcup_{n=0}^{\infty}\Sigma^F_n)\cup(\bigcup_{n=1}^{\infty}\Sigma^R_n)</math>. Moc sygnatury <math>\Sigma</math> będziemy oznaczać przez <math>|\Sigma|</math>.  
Linia 99: Linia 102:


{{lemat|7.6 (o nasyceniu)||
{{lemat|7.6 (o nasyceniu)||
Niech <math>C</math> będzie nieskończonym zbiorem, rozłącznym z sygnaturą <math>\Sigma</math> oraz takim, że <math>|\Sigma|\leq |C|</math>. Niech <math>\Delta</math> będzienie sprzecznym zbiorem zdań nad <math>\Sigma</math>. Istnieje zbiór zdań <math>\Gamma</math> nad sygnaturą <math>\Sigma(C)</math> taki, że <math>\Delta\subseteq\Gamma</math> oraz <math>\Gamma</math> jest<math>C</math>-nasycony. }}
Niech <math>C</math> będzie nieskończonym zbiorem, rozłącznym z sygnaturą <math>\Sigma</math> oraz takim, że <math>|\Sigma|\leq |C|</math>. Niech <math>\Delta</math> będzie niesprzecznym zbiorem zdań nad <math>\Sigma</math>. Istnieje zbiór zdań <math>\Gamma</math> nad sygnaturą <math>\Sigma(C)</math> taki, że <math>\Delta\subseteq\Gamma</math> oraz <math>\Gamma</math> jest<math>C</math>-nasycony. }}


{{dowod|||
{{dowod|||
Bez zmniejszenia ogólności możemy przyjąć, że istnieje zmienna <math>z</math> nie występująca  wolno w żadnej formule ze zbioru <math>\Delta</math> (w przeciwnym przypadku możemy tak przenumerować zmienne, aby ten warunek był spełniony).Przedstawimy dowód dla przypadku kiedy <math>\Sigma</math> i <math>C</math> są zbiorami przeliczalnymi. Dowód ogólnego przypadku pozostawimy Czytelnikowi jako ćwiczenie (należy zastosować indukcję pozaskończoną). Ustawmy zbiór wszystkich formuł nad <math>\Sigma(C)</math> o jednej zmiennej wolnej <math>x</math> w ciąg <math>\var\varphi_0,\var\varphi_1,\ldots</math> Zdefiniujemy ciąg zbiorów <math>\{\Gamma_n\ |\n\in \NN\}</math> oraz ciąg stałych <math>\{c_n\ |\ n\in \NN\}\subseteq C</math> o następujących własnościach:
Bez zmniejszenia ogólności możemy przyjąć, że istnieje zmienna <math>z</math> nie występująca  wolno w żadnej formule ze zbioru <math>\Delta</math> (w przeciwnym przypadku możemy tak przenumerować zmienne, aby ten warunek był spełniony). Przedstawimy dowód dla przypadku, kiedy <math>\Sigma</math> i <math>C</math> są zbiorami przeliczalnymi. Dowód ogólnego przypadku pozostawimy Czytelnikowi jako ćwiczenie (należy zastosować indukcję pozaskończoną). Ustawmy zbiór wszystkich formuł nad <math>\Sigma(C)</math> o jednej zmiennej wolnej <math>x</math> w ciąg <math>\var\varphi_0,\var\varphi_1,\ldots</math> Zdefiniujemy ciąg zbiorów <math>\{\Gamma_n\ |\n\in \NN\}</math> oraz ciąg stałych <math>\{c_n\ |\ n\in \NN\}\subseteq C</math> o następujących własnościach:
*<math>\Gamma_n</math> zawiera skończenie wiele stałych z <math>C</math>.
*<math>\Gamma_n</math> zawiera skończenie wiele stałych z <math>C</math>.
*<math>\Delta\subseteq\Gamma_n</math> jest niesprzecznym zbiorem zdań nad<math>\Sigma(C)</math>.
*<math>\Delta\subseteq\Gamma_n</math> jest niesprzecznym zbiorem zdań nad <math>\Sigma(C)</math>.
*Jeśli <math>\Gamma_n\not\vdash_H\forall x\,\var\varphi_n(x)</math>, to <math>\Gamma_{n+1}=\Gamma_n\cup\{\neg\var\varphi_n(c_n/x)\}</math>.
*Jeśli <math>\Gamma_n\not\vdash_H\forall x\,\var\varphi_n(x)</math>, to <math>\Gamma_{n+1}=\Gamma_n\cup\{\neg\var\varphi_n(c_n/x)\}</math>.




Ustalmy dowolną stałą <math>c_*\in C</math>.Przyjmujemy <math>\Gamma_0=\Delta</math>. Jeśli <math>\Gamma_n\vdash_H\forall x\,\var\varphi_n(x)</math>,to definiujemy <math>\Gamma_{n+1}=\Gamma_n</math> oraz <math>c_n=c_*</math>. Jeśli natomiast<math>\Gamma_n\not\vdash_H\forall x\,\var\varphi_n(x)</math> to niech <math>c_n\in C</math> będziestałą nie występującą w <math>\Gamma_n</math> ani w <math>\var\varphi_n</math>. Musimypokazać, że <math>\Gamma_{n+1}=\Gamma_n\cup\{\neg\var\varphi_n(c_n/x)\}</math> jestzbiorem niesprzecznym.  Załóżmy przeciwnie, że
Ustalmy dowolną stałą <math>c_*\in C</math>. Przyjmujemy <math>\Gamma_0=\Delta</math>. Jeśli <math>\Gamma_n\vdash_H\forall x\,\var\varphi_n(x)</math>, to definiujemy <math>\Gamma_{n+1}=\Gamma_n</math> oraz <math>c_n=c_*</math>. Jeśli natomiast <math>\Gamma_n\not\vdash_H\forall x\,\var\varphi_n(x)</math>, to niech <math>c_n\in C</math> będzie stałą nie występującą w <math>\Gamma_n</math> ani w <math>\var\varphi_n</math>. Musimy pokazać, że <math>\Gamma_{n+1}=\Gamma_n\cup\{\neg\var\varphi_n(c_n/x)\}</math> jest zbiorem niesprzecznym.  Załóżmy przeciwnie, że


Zatem <math>\Gamma_n\vdash_H\neg\neg\var\varphi_n(c_n/x)</math> i z (A3) dostajemy<math>\Gamma_n\vdash_H\var\varphi_n(c_n/x)</math>. Ponieważ <math>c_n</math> nie występuje w&nbsp;<math>\Gamma_n</math> ani w <math>\var\varphi_n</math> to możemy w dowodzie powyższego sekwentuzamienić wszystkie wystąpienia&nbsp;<math>c_n</math> przez nową zmienną <math>z</math>,która się w tym dowodzie nie pojawiła oraz nie występuje wolno w formułach z <math>\Gamma_n</math>. Tak więc otrzymujemy<math>\Gamma_n\vdash_H\var\varphi_n(z/x)</math> oraz <math>z\not\in FV(\Gamma_n)</math>. Na mocyTwierdzenia&nbsp;[[#tw-gen]] o generalizacji dostajemy<math>\Gamma_n\vdash_H \forall z\ \var\varphi_n(z/x)</math>. Ponieważ <math>x</math> jest dopuszczalna dla <math>z</math> w <math>\var\varphi_n(z/x)</math> oraz <math>\var\varphi_n(z/x)(x/z)=\var\varphi_n(x)</math>, to stosując<math>\alpha</math>-konwersję (Twierdzenie&nbsp;[[#tw-alfa]]) dostajemy<math>\Gamma_n\vdash_H\forall x\,\var\varphi_n(x)</math>, wbrew założeniu. W ten sposóbudowodniliśmy niesprzeczność zbioru <math>\Gamma_{n+1}</math>. \Rightarrow kończy konstrukcję zbiorów <math>\Gamma_n</math> oraz stałych <math>c_n</math>.
<math>\Gamma_n+1\vdash_H\bot</math>
 
Zatem <math>\Gamma_n\vdash_H\neg\neg\var\varphi_n(c_n/x)</math> i z (A3) dostajemy <math>\Gamma_n\vdash_H\var\varphi_n(c_n/x)</math>. Ponieważ <math>c_n</math> nie występuje w <math>\Gamma_n</math> ani w <math>\var\varphi_n</math>, to możemy w dowodzie powyższego sekwentu zamienić wszystkie wystąpienia <math>c_n</math> przez nową zmienną <math>z</math>, która się w tym dowodzie nie pojawiła oraz nie występuje wolno w formułach z <math>\Gamma_n</math>. Tak więc otrzymujemy <math>\Gamma_n\vdash_H\var\varphi_n(z/x)</math> oraz <math>z\not\in FV(\Gamma_n)</math>. Na mocy Twierdzenia&nbsp;[[#tw-gen|7.4]] o generalizacji dostajemy <math>\Gamma_n\vdash_H \forall z\ \var\varphi_n(z/x)</math>. Ponieważ <math>x</math> jest dopuszczalna dla <math>z</math> w <math>\var\varphi_n(z/x)</math> oraz <math>\var\varphi_n(z/x)(x/z)=\var\varphi_n(x)</math>, to stosując <math>\alpha</math>-konwersję (Twierdzenie [[#tw-alfa|7.3]]) dostajemy <math>\Gamma_n\vdash_H\forall x\,\var\varphi_n(x)</math>, wbrew założeniu. W ten sposób udowodniliśmy niesprzeczność zbioru <math>\Gamma_{n+1}. \Rightarrow</math> kończy konstrukcję zbiorów <math>\Gamma_n</math> oraz stałych <math>c_n</math>.


Niech
Niech


<math>\Gamma=\bigcup_{n\in N} \Gamma_n</math>
Pokażemy, że <math>\Gamma</math> jest zbiorem <math>C</math>-nasyconym. Oczywiście <math>\Gamma</math> jako suma łańcucha zbiorów niesprzecznych jest również zbiorem niesprzecznym. Niech <math>\var\varphi(x)</math> będzie dowolną formułą nad <math>\Sigma(C)</math> o jednej zmiennej wolnej i załóżmy, że <math>\Gamma\not\vdash_H \forall x\,\var\varphi(x)</math>. Niech <math>\var\varphi(x)=\var\varphi_n(x)</math> dla pewnego <math>n</math>. Oczywiście mamy <math>\Gamma_n\not\vdash_H\forall x\,\var\varphi_n(x)</math> i z konstrukcji zbiorów <math>\Gamma_n</math> wynika, że <math>\Gamma_{n+1}\vdash_H \neg\var\varphi_n(c_n/x)</math>. Zatem <math>\Gamma\vdash_H \neg\var\varphi_n(c_n/x)</math>, co dowodzi <math>C</math>-nasycenia zbioru <math>\Gamma</math>.}}
===Konstrukcja modelu ze stałych===
Niech <math>C\subseteq\Sigma_0</math> będzie dowolnym zbiorem stałych i niech 
<math>\Gamma</math> będzie dowolnym <math>C</math>-nasyconym zbiorem zdań nad <math>\Sigma</math>.
W zbiorze <math>C</math> definiujemy relację równoważności <math>\sim</math>:
<math>c_1\sim c_2</math>&nbsp;&nbsp;&nbsp;wtedy i tylko wtedy, gdy <math>\Gamma\vdash_H c_1=c_2</math>
Zdefiniujemy strukturę <math>\mathfrak A_\Gamma</math>. Nośnikiem tej struktury 
jest zbiór ilorazowy <math>C/\sim</math>. Musimy określić interpretację symboli operacji i relacji z <math>\Sigma</math>. Dla przykładu załóżmy, że <math>f\in\Sigma^F_2</math> jest symbolem operacji dwuargumentowej. Funkcję <math>f^{\mathfrak A_\Gamma}:(C/\sim)^2\arr C/\sim</math> definiujemy warunkiem
<math>f^{\mathfrak A_\Gamma}([c_1]_\sim,[c_2]_\sim)=[d]_\sim</math>&nbsp;wtedy i tylko wtedy, gdy&nbsp;<math>\Gamma\vdash_H f(c_1,c_2)=d</math>
Dla pokazania, że <math>f^{\mathfrak A_\Gamma}</math> jest dobrze określoną funkcją musimy sprawdzić, że: 
<span id="eq-zwart-1"/>'''Dla dowolnych'''&nbsp;<math>c_1,c_2\in C</math>&nbsp;&nbsp;'''istnieje'''&nbsp;&nbsp;<math>d\in C</math>&nbsp;&nbsp;'''takie, że'''&nbsp;&nbsp;<math>\Gamma\vdash_H f(c_1,c_2)=d</math>&nbsp;&nbsp;&nbsp;&nbsp;(9)
<span id="eq-zwart-2"/>
'''Jeśli'''&nbsp;&nbsp;<math>c_1\sim c_1',\ c_2\sim c_2'</math>&nbsp;&nbsp;'''oraz'''&nbsp;&nbsp;<math>\Gamma\vdash_H
f(c_1,c_2)=d</math>&nbsp;&nbsp;'''i'''&nbsp;&nbsp;<math>\Gamma\vdash_H f(c_1',c_2')=d'</math>&nbsp;&nbsp;'''to'''&nbsp;&nbsp;<math>d\sim d'</math>.&nbsp;&nbsp;&nbsp;&nbsp;(10)
Własność ([[#eq-zwart-1|9]]) wynika z faktu, że zbiór <math>\Gamma</math> jest
<math>C</math>-nasycony. Zauważmy najpierw, że <math>\Gamma\vdash_H\neg\forall x\,\neg f(c_1,c_2)=x</math>. Istotnie, załóżmy <math>\forall x\,\neg
f(c_1,c_2)=x</math>. Wówczas z aksjomatu (A6) dostajemy <math>\neg
f(c_1,c_2)=f(c_1,c_2)</math>. Z drugiej strony, z aksjomatu (A7) i (A6)
dostajemy <math>f(c_1,c_2)=f(c_1,c_2)</math>. Tak więc otrzymujemy <math>\bot</math>, a więc <math>\Gamma\vdash_H\neg\forall x\,\neg f(c_1,c_2)=x</math>. Zatem z <math>C</math>-nasycenia <math>\Gamma</math> wynika istnienie stałej <math>d\in C</math> takiej, że <math>\Gamma\vdash_H\neg\neg f(c_1,c_2)=d</math>. Korzystając teraz z (A3) dostajemy <math>\Gamma\vdash_H f(c_1,c_2)=d</math>.


Własność ([[#eq-zwart-2|10]]) wynika natychmiast z następującej postaci aksjomatu (A8) (postać tę otrzymujemy z (A8) z pomocą aksjomatu (A6))


Pokażemy, że <math>\Gamma</math> jest zbiorem <math>C</math>-nasyconym.Oczywiście <math>\Gamma</math> jako suma łańcucha zbiorów niesprzecznych jestrównież zbiorem niesprzecznym. Niech <math>\var\varphi(x)</math> będzie dowolnąformułą nad <math>\Sigma(C)</math> o jednej zmiennej wolnej i załóżmy, że<math>\Gamma\not\vdash_H \forall x\,\var\varphi(x)</math>. Niech <math>\var\varphi(x)=\var\varphi_n(x)</math>, dla pewnego&nbsp;</math>n<math>. Oczywiście mamy </math>\Gamma_n\not\vdash_H\forall x\,\var\varphi_n(x)</math> i z konstrukcji zbiorów <math>\Gamma_n</math> wynika,że </math>\Gamma_{n+1}\vdash_H \neg\var\varphi_n(c_n/x)</math>. Zatem <math>\Gamma\vdash_H \neg\var\varphi_n(c_n/x)</math>, codowodzi <math>C</math>-nasycenia zbioru <math>\Gamma</math>.\end{dowod}
<math>c_1=c'_1\rightarrow(c_2=c'_2\rightarrow f(c_1,c_2)=f(c'_1,c'_2))</math>.


Niech <math>Csbseteq\Sigma_0</math> będzie dowolnym zbiorem stałych i niech <math>\Gamma</math> będzie dowolnym <math>C</math>-nasyconym zbiorem zdań nad <math>\Sigma</math>.W zbiorze <math>C</math> definiujemy relację równoważności <math>\sim</math>:
Interpretacja symboli relacji w <math>\mathfrak A_\Gamma</math> wygląda podobnie. Dla przykładu zdefiniujemy relację <math>r^{\mathfrak A_\Gamma}</math> dla symbolu <math>r\in \Sigma_2^R</math>.  


Zdefiniujemy strukturę <math>\mathfrak A_\Gamma</math>. Nośnikiem tej struktury  jest zbiór ilorazowy <math>C/\!\!\sim</math>. Musimyokreślić interpretację symboli operacji i relacji z <math>\Sigma</math>. Dlaprzykładu załóżmy, że <math>f\in\Sigma^F_2</math> jest symbolem operacjidwuargumentowej. Funkcję <math>f^{\mathfrak A_\Gamma}:(C/\!\!\sim)^2\rightarrow C/\!\!\sim</math> definiujemy warunkiem
<span id=""/> <math>([c_1]_\sim,[c_2]_\sim)\in r^{\mathfrak A_\Gamma}</math>&nbsp;wtedy i tylko wtedy, gdy&nbsp;<math>\Gamma\vdash_H</math>
W tym przypadku również musimy dowieść poprawności definicji (tzn. niezależności od wyboru reprezentantów). Czyli musimy pokazać, że jeśli <math>c_1\sim c_1'</math> oraz <math>c_2\sim c_2'</math>, to 


</math>Dla pokazania, że <math>f^{\mathfrak A_\Gamma}</math> jest dobrze określoną funkcjąmusimy sprawdzić, że: <span id="eq-zwart-1"/> <math>
<math>\Gamma\vdash_H r(c_1,c_2)</math>&nbsp;wtedy i tylko wtedy, gdy&nbsp;<math>\Gamma\vdash_H r(c'_1,c'_2)</math>


Wynika to natychmiast z aksjomatów (A9) i (A6).




\mbox{Dla dowolnych } c_1,c_2\in C \mbox{ istnieje } d\in C \mbox{takie, że } \Gamma\vdash_H f(c_1,c_2)=d</math><span id="eq-zwart-2"/> <math>
Teraz możemy przejść do twierdzenia o istnieniu modelu.


{{twierdzenie|7.7 (o istnieniu modelu)|eq-zwart-3|
Każdy niesprzeczny zbiór zdań nad dowolną sygnaturą <math>\Sigma</math>
ma model, którego moc nie przekracza <math>\max\{\aleph_0,|\Sigma|\}</math>.
Dokładniej, dla struktury <math>\mathfrak A_\Gamma</math> zbudowanej 
powyżej oraz dowolnej formuły <math>\var\varphi</math> takiej, że
<math>FV(\var\varphi)\subseteq\{x_1,\ldots,x_n\}</math> i dla dowolnego wartościowania <math>\varrho</math> takiego, że <math>\varrho(x_i)=[c_i]_\sim</math> dla <math>i=1,\ldots,n</math> mamy
<math>\sat{\mathfrak A_\Gamma}\varrho\var\varphi\WTW\Gamma\vdash_H
\var\varphi(c_1/x_1,\ldots,c_n/x_n)</math>.
}}


{{dowod||eq-zwart-4|
Załóżmy, że <math>\Delta</math> jest niesprzecznym zbiorem zdań. Niech <math>C</math> będzie dowolnym nieskończonym zbiorem rozłącznym z <math>\Sigma</math> i takim, że <math>|C|\geq|\Sigma|</math>. Z Lematu [[#lem-nasyc|7.6]] o nasyceniu wiemy, że istnieje zbiór zdań <math>\Gammasbseteq\Delta</math> nad sygnaturą <math>\Sigma(C)</math>, który jest <math>C</math>-nasycony. Stosując lemat Kuratowskiego-Zorna dowodzimy, że istnieje maksymalny zbiór <math>\Gamma</math> o powyższych własnościach. Niech <math>\Gamma</math> będzie takim zbiorem. Dalsza część dowodu będzie przebiegała w odniesieniu do ustalonego zbioru <math>\Gamma</math>. 


\mbox{Jeśli } c_1\sim c_1',\ c_2\sim c_2'\mbox{ oraz } \Gamma\vdash_Hf(c_1,c_2)=d\mbox{ i } \Gamma\vdash_H f(c_1',c_2')=d', \mbox{ to } d\sim d'.</math>Własność ([[#eq-zwart-1]]) wynika z faktu, że zbiór <math>\Gamma</math> jest</math>C<math>-nasycony. Zauważmy najpierw, że </math>\Gamma\vdash_H\neg\forall x\,\negf(c_1,c_2)=x<math>. Istotnie, załóżmy </math>\forall x\,\negf(c_1,c_2)=x<math>. Wówczas z aksjomatu (A6) dostajemy </math>\negf(c_1,c_2)=f(c_1,c_2)</math>. Z drugiej strony, z aksjomatu (A7) i (A6)dostajemy <math>f(c_1,c_2)=f(c_1,c_2)</math>. Tak więc otrzymujemy <math>\bot</math>, a więc<math>\Gamma\vdash_H\neg\forall x\,\neg f(c_1,c_2)=x</math>. Zatem z<math>C</math>-nasycenia <math>\Gamma</math> wynika istnienie stałej <math>d\in C</math> takiej, że<math>\Gamma\vdash_H\neg\neg f(c_1,c_2)=d</math>. Korzystając teraz z (A3)dostajemy <math>\Gamma\vdash_H f(c_1,c_2)=d</math>.
Najpierw zanotujmy następującą ważną własność zbioru <math>\Gamma</math>.  


Własność ([[#eq-zwart-2]]) wynika natychmiast z następującej postaciaksjomatu (A8) (postać tę otrzymujemy z (A8) z pomocą aksjomatu&nbsp;(A6))<span id=""/> <math> ([c_1]_\sim,[c_2]_\sim)\in r^{\mathfrak A_\Gamma}\WTW \Gamma\vdash_H
Dla dowolnego zdania&nbsp;<math>\var\varphi</math>,&nbsp;jeśli <math>\Gamma\not\vdash_H\var\varphi</math>,&nbsp;to&nbsp; <math>\Gamma\cup\{\var\varphi\}</math>&nbsp;jest zbiorem sprzecznym.&nbsp;(12)


Dla dowodu ([[#eq-zwar-0|12]]) zauważmy, że jeśli <math>\Gamma\cup\{\var\varphi\]]</math> jest zbiorem niesprzecznym, to jest on <math>C</math>-nasycony. Istotnie, jeśli <math>\Gamma\cup\{\var\varphi\}\not\vdash_H \forall x\,\psi(x)</math>, dla pewnej formuły <math>\psi</math> o jednej zmiennej wolnej, to mamy również
<math>\Gamma\not\vdash_H \forall x\,\psi(x)</math>. Zatem dla pewnej stałej <math>c\in C</math> zachodzi <math>\Gamma\vdash_H\neg\psi(c/x)</math>, więc oczywiście również <math>\Gamma\cup\{\var\varphi\}\vdash_H\neg\psi(c/x)</math>.
Tak więc z maksymalności zbioru <math>\Gamma</math> wynika, że <math>\Gamma\cup\{\var\varphi\}</math> musi być zbiorem sprzecznym. To dowodzi ([[#eq-zwar-0|12]]).


Zauważmy, że z własności ([[#eq-zwart-3|11]]) wynika pierwsza część twierdzenia,
bowiem mamy wówczas <math>\mathfrak A_\Gamma\models\Gamma</math>.
Własność ([[#eq-zwart-3|11]]) dowodzimy przez indukcję ze względu na budowę formuły <math>\var\varphi</math>. Dla formuł atomowych musimy dowieść
następującą pomocniczą własność. Dla dowolnego termu <math>t</math> i stałej <math>d\in C</math> mamy <math>\wart\prooftree t \justifies \mathfrak A_\Gamma \using \text{(W)}\endprooftree\varrho=[d]_\sim\WTW \Gamma\vdash_H
{t}(c_1/x_1,\ldots,c_n/x_n)=d</math>


<!--%-->Interpretacja symboli relacji w <math>\mathfrak A_\Gamma</math> wygląda podobnie. Dlaprzykładu zdefiniujemy relację </math>r^{\mathfrak A_\Gamma}<math> dla symbolu </math>r\in\Sigma_2^R</math>.
gdzie <math>FV({t})sbseteq\{x_1,\ldots,x_n\}</math> oraz <math>v(x_i)=[c_i]_\sim</math>, dla <math>i=1,\ldots,n</math>. Dowód ([[#eq-zwart-4|13]]) przeprowadzamy przez rutynową indukcję ze względu na budowę termu <math>{t}</math>. Szczegóły pozostawiamy Czytelnikowi. 


</math>W tym przypadku również musimy dowieść poprawności definicji(tzn.&nbsp;niezależności od wyboru reprezentantów). Czyli musimypokazać, że jeśli <math>c_1\sim c_1'</math> oraz <math>c_2\sim c_2'</math>, to
Powracamy do dowodu ([[#eq-zwart-3|11]]). Jeśli <math>\var\varphi</math> jest formułą <math>{t}_1={t}_2</math>, to <math>\wart\prooftree {t}_1 \justifies \mathfrak A_\Gamma \using \text{(W)}\endprooftree\varrho=
\wart\prooftree {t}_2 \justifies \mathfrak A_\Gamma \using \text{(W)}\endprooftree\varrho</math>
wtedy i tylko wtedy, gdy dla pewnego <math>d\in C</math> zachodzi
<math>\wart\prooftree {t}_1 \justifies \mathfrak A_\Gamma \using \text{(W)}\endprooftree\varrho=[d]_\sim</math> oraz
<math>\wart\prooftree {t}_2 \justifies \mathfrak A_\Gamma \using \text{(W)}\endprooftree\varrho=[d]_\sim</math>. 
Na mocy ([[#eq-zwart-4|13]]) jest to równoważne temu, że dla pewnego <math>d\in C</math> zachodzi <math>\Gamma\vdash_H{t}_1(c_1/x_1,\ldots,c_n/x_n)=d</math> oraz <math>\Gamma\vdash_H{t}_2(c_1/x_1,\ldots,c_n/x_n)=d</math>. Ostatnia własność jest równoważna (na mocy <math>C</math>-nasycenia zbioru <math>\Gamma</math>) własności <math>\Gamma\vdash_H
{t}_1(c_1/x_1,\ldots,c_n/x_n)={t}_2(c_1/x_1,\ldots,c_n/x_n)</math>. 
 
Załóżmy teraz, że <math>\var\varphi</math> jest formułą postaci <math>\psi\arr\vartheta</math>. Niech <math>\psi^*</math> oznacza formułę
<math>\psi(c_1/x_1,\ldots,c_n/x_n)</math> oraz niech <math>\vartheta^*</math> oznacza formułę <math>\vartheta(c_1/x_1,\ldots,c_n/x_n)</math>. Załóżmy, że 
<math>\sat{\mathfrak A_\Gamma}\varrho\var\varphi</math> i rozważmy dwa przypadki. Jeśli <math>\Gamma\vdash_H\psi^*</math>, to na mocy założenia indukcyjnego mamy <math>\sat{\mathfrak A_\Gamma}\varrho\psi</math>. Zatem <math>\sat{\mathfrak A_\Gamma}\varrho\vartheta</math> i korzystając ponownie z założenia indukcyjnego otrzymujemy <math>\Gamma\vdash_H\vartheta^*</math>. Dalej na mocy aksjomatu (A1) i reguły (MP) otrzymujemy <math>\Gamma\vdash_H\psi^*\arr\vartheta^*</math>. Jeśli natomiast
<math>\Gamma\not\vdash_H\psi^*</math>, to jak wynika z ([[#eq-zwar-0|12]]) zbiór
<math>\Gamma\cup\{\psi^*\}</math> jest sprzeczny. Stąd <math>\Gamma\cup\{\psi^*\}\vdash_H\vartheta^*</math> i z twierdzenia o dedukcji
(Twierdzenie [[#tw-ded-pier|7.2]]) dostajemy ponownie
<math>\Gamma\vdash_H\psi^*\arr\vartheta^*</math>. Dowód implikacji odwrotnej, tzn. że <math>\Gamma\vdash_H\psi^*\arr\vartheta^*</math> pociąga
<math>\sat{\mathfrak A_\Gamma}\varrho\var\varphi</math> pozostawiamy Czytelnikowi do uzupełnienia. 
 
Na koniec rozważmy przypadek, gdy <math>\var\varphi</math> jest postaci <math>\forall y\psi(y)</math>. Załóżmy, że <math>\sat{\mathfrak A_\Gamma}\varrho\var\varphi</math>. Niech <math>\psi^*</math>
oznacza formułę <math>\psi(c_1/x_1,\ldots,c_n/x_n)</math>. Formuła <math>\psi^*</math> ma co najwyżej jedną zmienną wolną <math>y</math>. Jeśli
<math>\Gamma\not\vdash_H\forall y\ \psi^*</math>, to z <math>C</math>-nasycenia <math>\Gamma</math> istnieje taka stała <math>d\in C</math>, że
<math>\Gamma\vdash_H\neg\psi^*(d/y)</math>. Zatem na mocy założenia indukcyjnego
otrzymujemy <math>(\mathfrak A_\Gamma,\varrho^{[d]_\sim}_y)\not\models\psi</math>, co daje sprzeczność z naszym założeniem <math>\sat{\mathfrak A_\Gamma}\varrho\var\varphi</math>. Tak
więc musi być <math>\Gamma\vdash_H\forall y\ \psi^*</math>. Na odwrót,
załóżmy, że <math>\Gamma\vdash_H\forall y\ \psi^*</math> i niech <math>d\in C</math> będzie dowolną stałą. Z aksjomatu (A6) dostajemy
<math>\Gamma\vdash_H\psi^*(d/y)</math> i na mocy założenia indukcyjnego
dostajemy <math>\sa\prooftree \mathfrak A_\Gamma \justifies \varrho^{[d]_\sim}_y \using \text{(W)}\endprooftree\psi</math>. Ponieważ <math>d</math> jest
dowolne, to powyższe spełnianie dowodzi <math>\sat{\mathfrak A_\Gamma}\varrho\var\varphi</math>. Tym samym dowód twierdzenia jest zakończony.
 
}}
 
Na zakończenie udowodnimy zapowiedziane wcześniej "silne" twierdzenie o pełności dla systemu <math>\vdash_H</math>. Jest ono prostym wnioskiem z twierdzenia 
o istnieniu modelu.
 
{{twierdzenie|7.8 ("Silne" twierdzenie o pełności)|tw-pier-3|
Dla dowolnego zbioru formuł <math>\Delta</math> i dla dowolnej formuły
<math>\var\varphi</math>, jeśli <math>\Delta\models\var\varphi</math> , to
<math>\Delta\vdash_H\var\varphi</math>. W szczególności, jeśli <math>\var\varphi</math> jest tautologią języka pierwszego rzędu, to <math>\vdash_H\var\varphi</math>.
}}
 
{{dowod|||
Załóżmy, że <math>\Delta\not\vdash\var\varphi</math>. Niech <math>C=\{c_0,c_1,\ldots\}</math> będzie nieskończonym przeliczalnym zbiorem stałych, rozłącznym z sygnaturą <math>\Sigma</math>. Ustawmy zmienne indywiduowe w ciąg <math>x_0,x_1,\ldots</math>. Dla dowolnej formuły <math>\psi</math> nad sygnaturą <math>\Sigma</math> niech <math>\psi^*</math> oznacza zdanie nad sygnaturą <math>\Sigma(C)</math> otrzymane z <math>\psi</math> przez zastąpienie każdej zmiennej <math>x_n</math> wolno występującej w <math>\psi</math> stałą <math>c_n</math>. Niech <math>\Delta^*=\{\psi^*\ | \psi\in\Delta\}</math>. 
 
Twierdzimy, że zbiór zdań <math>\Delta^*\cup\{\neg\var\varphi^*\}</math> jest zbiorem niesprzecznym. Załóżmy przeciwnie, że
<math>\Delta^*\cup\{\neg\var\varphi^*\}\vdash\bot</math>.
 
Wówczas dla pewnego skończonego podzbioru <math>\Delta_0sbseteq \Delta</math> mamy <math>\Delta_0^*\cup\{\neg\var\varphi^*\}\vdash\bot</math>. Z twierdzenia o dedukcji dostajemy <math>\Delta_0^*\vdash\neg\neg\var\varphi^*</math> i na mocy aksjomatu (A3) mamy <math>\Delta_0^*\vdash\var\varphi^*</math>
Przyjmijmy, że <math>\Delta_0=\{\psi_1,\ldots,\psi_n\}</math>. Stosując <math>n</math> razy twierdzenie o dedukcji, dostajemy
 
<math>\vdash\psi_1^*\arr(\cdots\arr(\psi_n^*\arr\var\varphi^*)\cdots)</math>.
 
Zastępując w powyższym dowodzie stałe <math>c_i</math> nowymi, nigdzie w tym 
dowodzie nie pojawiającymi się zmiennymi <math>z_i</math>, następnie generalizując (por. Twierdzenie [[#tw-gen|7.4]]) i podstawiając na miejsce zmiennych związanych <math>z_i</math> (por. aksjomat (A6)) zmienne <math>x_i</math> dostajemy <math>z_i</math> w stosownej formule.
<math>\vdash\psi_1\arr(\cdots\arr(\psi_n\arr\var\varphi)\cdots)</math>,
 
czyli <math>\Delta_0\vdash\var\varphi</math>, a co za tym idzie również
<math>e\var\varphi</math>, wbrew założeniu. Tak więc zbiór <math>\Delta^*\cup\{\neg\var\varphi^*\}</math> jest niesprzeczny.
 
Z twierdzenia o istnieniu modelu wynika, że <math>\Delta^*\cup\{\neg\var\varphi^*\}</math> ma model. Istnieje więc <math>\Sigma(C)</math>-struk\-tu\-ra <math>\mathfrak A</math> taka, że
<math>\mathfrak A\models\Delta^*</math> oraz <math>\mathfrak A\not\models\var\varphi^*</math>. Niech <math>\varrho:X\arr A</math>
będzie wartościowaniem, które każdej zmiennej <math>x_i</math> przypisuje
wartość <math>c_i^\mathfrak A</math>. Na mocy Twierdzenia [[#tw-pier-4|7.7]]
mamy wówczas <math>\sat\mathfrak A\varrho\psi</math>, dla każdej formuły <math>\psi\in \Delta</math> oraz <math>(\mathfrak A,\varrho)\not\models\var\varphi</math>. Dowodzi to <math>\Delta\not\models\var\varphi</math>.
}}

Aktualna wersja na dzień 22:14, 11 wrz 2023

Hilbertowski system dowodzenia

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ędziemy rozumieć dowolną formułę postaci Parser nie mógł rozpoznać (nieznana funkcja „\ciut”): {\displaystyle \forall x_1\ldots\forall x_n\ciut\var\varphi} , gdzie x1,xn są dowolnymi zmiennymi.

Aksjomaty

Dowolne generalizacje formuł postaci:

(A1)   Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\rightarrow(\psi\rightarrow\var\varphi)} ;
(A2)   Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle (\var\varphi\rightarrow(\psi\rightarrow\vartheta))\rightarrow((\var\varphi\rightarrow\psi)\rightarrow(\var\varphi\rightarrow\vartheta))} ;
(A3)   Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \neg\neg\var\varphi\rightarrow\var\varphi} ;
(A4)   Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \forall x(\var\varphi\rightarrow\psi)\rightarrow(\forall x\var\varphi\rightarrow\forall x\psi)} ;
(A5)   Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\rightarrow \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\rightarrow \var\varphi(\sigma/x)} , o ile σ jestdopuszczalny dla x w Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} ;
(A7)   x=x;
(A8)   x1=y1(x2=y2(xn=ynf(x1,,xn)=f(y1,,yn))), dla
        fΣnF, n0;
(A9)   x1=y1(x2=y2(xn=yn(r(x1,,xn)r(y1,,yn)))), dla
         rΣnR, n1.

Reguły dowodzenia

(MP)    Parser nie mógł rozpoznać (błąd składni): {\displaystyle \frac{\varphi\hspace{1cm}\varaphi\rightarrow\psi}{\psi}}

Pojęcie dowodu formalnego w powyższym systemie definiuje się dokładnie tak samo jak w przypadku rachunku zdań (por. Rozdział 5). Piszemy też ΔHφ, gdy istnieje dowód formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} ze zbioru hipotez Δ. Sam system, podobnie jak w przypadku rachunku zdań, będziemy oznaczać przez H. Nie powinno prowadzić to do niejednoznaczności. Zwróćmy uwagę, że system H zależy od sygnatury Σ. Tak więc mamy różne systemy dla różnych sygnatur. Pojęcie niesprzecznego zbioru formuł definiuje się tak samo jak w rachunku zdań.


Przykład 7.1

Pokażemy główne kroki dowodu formuły (x=yy=x).

  1. x1x2y1y2(x1=y1(x2=y2(x1=x2y1=y2)))   (A9)
  2. x=y(x=x(x=xy=x))     na mocy (A6) oraz(MP)
  3. x=x(x=y(x=xy=x))    z (2), jest to instancja tautologii zdaniowej
  4. x=x    (A7)
  5. x=y(x=xy=x)    (MP(4,3))
  6. x=x(x=yy=x)     z (5), jest to instancja tautologii zdaniowej
  7. x=x   (A7)
  8. x=yy=x   (MP(7,6))


Twierdzenie 7.2 (o dedukcji)

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 \Delta\vdash_H\var\varphi\rightarrow\psi} .

Dowód

Dowód tego twierdzenia jest dokładnie taki sam, jak analogicznego twierdzenia dla rachunku zdań

(por. Twierdzenie 5.2).

Natępujące twierdzenie mówi, że wybór nazwy zmiennej związanej nie ma wpływu na dowodliwość formuły. Jest to tzw. własność α-konwersji.

Twierdzenie 7.3 (o α-konwersji)

Jeśli ΔHxψ oraz zmienna y∉FV(xψ) jest dopuszczalna dla x w ψ, to ΔHyψ(y/x).

Dowód

Ponieważ y∉FV(xψ), to na mocy (A5) mamy ΔHxψyxψ. Z drugiej strony mamy następującą wersję aksjomatu (A6), co łącznie z aksjomatem (A4) daje ΔHyxψyψ(y/x). Tak więc zakładając ΔHxψ i stosując(MP) do (7), a następnie do (8), dostajemy co kończy dowód.


Podamy jeszcze jedno użyteczne twierdzenie. Mówi ono, że tzw. reguła generalizacji jest dopuszczalna w systemie H. Niech

Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle FV(\Delta)=\bigcup\{FV(\var\varphi)\ |\ \var\varphi\in\Delta\}} .

Twierdzenie 7.4 (o generalizacji)

Jeśli zachodzi Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta\vdash_H\var\varphi} , to dla dowolnej zmiennej x, takiej że x∉FV(Δ), mamy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta\vdash_H\forall x\,\var\varphi} .

Dowód

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śli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest jednym z aksjomatów (A1--9), to dowolna generalizacja tej formuły jest też aksjomatem, więc teza zachodzi. Aby pokazać Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta\vdash_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 Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta\vdash_H\psi\rightarrow\var\varphi} oraz ΔHψ w mniejszej liczbie kroków. Z założenia indukcyjnego otrzymujemy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta\vdash_H\forall x\,(\psi\rightarrow\var\varphi)} oraz ΔHxψ. Zatem stosując (MP) do Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \forall x\,(\psi\rightarrow\var\varphi)} oraz do instancji Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \forall x(\psi\rightarrow\var\varphi)\rightarrow(\forall x\psi\rightarrow\forall x\var\varphi)} aksjomatu (A4) otrzymujemy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \forall x\psi\rightarrow\forall x\var\varphi} . Ponowne zastosowanie (MP) do tej formuły oraz do xψ daje nam Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \forall x\,\var\varphi} .

Powiemy, że formuła Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest konsekwencją semantyczną zbioru formuł Δ (i napiszemy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta\models\var\varphi} ), gdy dla każdej struktury 𝔄 i dla każdego wartościowania ϱ w 𝔄 spełniającego wszystkie formuły ze zbioru Δ, mamy Parser nie mógł rozpoznać (nieznana funkcja „\sat”): {\displaystyle \sat\mathfrak A\varrho\var\varphi} . Zwróćmy uwagę, że jeśli Δ jest zbiorem zdań, to powyższa definicja jest równoważna następującej wł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ślif jest symbolem operacji jednoargumentowej, to x=y⊭f(z)=z, ale każdy model dla x=y(czyli jednoelementowy) jest modelem dla f(z)=z.

Twierdzenie 7.5 (o poprawności)

Dla dowolnego zbioru formuł Δ i formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} , jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta\vdash_H\var\varphi} , to Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta\models\var\varphi} .

Dowód

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 mamy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta\models\var\varphi} . Sprawdzamy, że jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest dowolną generalizacją jednego z aksjomatów (A1--9), to zachodzi Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \models\var\varphi} . Oczywiście reguła (MP) zachowuje relację 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\rightarrow\psi} , to Δψ.

Twierdzenie o poprawności może być użyte do pokazania, że pewne wynikania nie dają się wyprowadzić w systemie H. Przykładowo, zobaczmy, że x=yHx(x=y). Istotnie, biorąc dwuelementową strukturę 𝔄 oraz wartościowanie, które "skleja" wartości zmiennych x oraz y, dostajemy x=y⊭x(x=y). Zatem z twierdzenia o poprawności wnioskujemy, że x=yHx(x=y). Jest to również przykład na to, że system H nie jest zamknięty ze względu na dowolne generalizacje, tzn. założenie x∉FV(Δ) w twierdzeniu o generalizacji jest istotne.

Zachodzi również odwrotne twierdzenie do Twierdzenia 7.5. Dowód tego twierdzenia jest celem niniejszego rozdziału.

System formalny dla formuł zawierających pozostałe spójniki:,  i kwantyfikator egzystencjalny otrzymuje się z H przez dodanie aksjomatów charakteryzujących te symbole:

(B1)  Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\wedge \psi\rightarrow\neg(\var\varphi\rightarrow\neg\psi)}
(B2)  Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \neg(\var\varphi\rightarrow\neg\psi)\rightarrow\var\varphi\wedge \psi}
(B3)  Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\vee\psi\rightarrow(\neg\var\varphi\rightarrow\psi)}
(B4)  Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle (\neg\var\varphi\rightarrow\psi)\rightarrow\var\varphi\vee\psi}
(B5)  Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \exists x\,\var\varphi\rightarrow \neg\forall x\,\neg\var\varphi}
(B6)  Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \neg\forall x\,\neg\var\varphi\rightarrow \exists x\,\var\varphi}


Głównym narzędziem w dowodzie "silnego" twierdzenia o pełności będzie tzw. 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ędzie zbiorem zdań pierwszego rzędu nad sygnaturą Σ oraz niech CΣ0 będzie pewnym zbiorem stałych. Powiemy, że Γjest zbiorem C-nasyconym, gdy Γ jest zbiorem niesprzecznym oraz dla dowolnej formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi(x)} o co najwyżej jednej zmiennej wolnej x, jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma\not\vdash_H\forall x\,\var\varphi(x)} , to istnieje stała cC,taka że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma\vdash_H\neg\var\varphi(c/x)} .

Niech Γ będzie C-nasycony. Zauważmy, że jeśli Parser 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} jest postaci ¬ψ, to wówczas Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma\vdash_H\neg\forall x\var\varphi(x)} jest równoważne ΓHxψ(x). Ponadto z warunku C-nasycenia Γ wynika istnienie stałej cC takiej, że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma\vdash_H\neg\var\varphi(c/x). \Rightarrow} ostatnie jest równoważne (na mocy prawa podwójnego przeczenia) temu, że ΓHψ(c/x). Tak więc w tym przypadku c jest "świadkiem" zachodzenia własności Parser nie mógł rozpoznać (nieznana funkcja „\existsx”): {\displaystyle \Gamma\vdash_H\existsx\ \psi(x)} .

Mocą sygnatury Σ nazwiemy moc zbioru (n=0ΣnF)(n=1ΣnR). Moc sygnatury Σ będziemy oznaczać przez |Σ|.

Dopuścimy możliwość rozszerzenia sygnatury o stałe. Dla dowolnego zbioru C rozłącznego z sygnaturą Σ, przez Σ(C) będziemy oznaczać sygnaturę powstałą z Σ przez dodanie symboli stałych ze zbioru C.

Lemat 7.6 (o nasyceniu)

Niech C będzie nieskończonym zbiorem, rozłącznym z sygnaturą Σ oraz takim, że |Σ||C|. Niech Δ będzie niesprzecznym zbiorem zdań nad Σ. Istnieje zbiór zdań Γ nad sygnaturą Σ(C) taki, że ΔΓ oraz Γ jestC-nasycony.

Dowód

Bez zmniejszenia ogólności możemy przyjąć, że istnieje zmienna z 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 C są zbiorami przeliczalnymi. Dowód ogólnego przypadku pozostawimy Czytelnikowi jako ćwiczenie (należy zastosować indukcję pozaskończoną). Ustawmy zbiór wszystkich formuł nad Σ(C) o jednej zmiennej wolnej x w ciąg Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi_0,\var\varphi_1,\ldots} Zdefiniujemy ciąg zbiorów Parser nie mógł rozpoznać (nieznana funkcja „\n”): {\displaystyle \{\Gamma_n\ |\n\in \NN\}} oraz ciąg stałych Parser nie mógł rozpoznać (nieznana funkcja „\NN”): {\displaystyle \{c_n\ |\ n\in \NN\}\subseteq C} o następujących własnościach:

  • Γn zawiera skończenie wiele stałych z C.
  • ΔΓn jest niesprzecznym zbiorem zdań nad Σ(C).
  • Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma_n\not\vdash_H\forall x\,\var\varphi_n(x)} , to Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma_{n+1}=\Gamma_n\cup\{\neg\var\varphi_n(c_n/x)\}} .


Ustalmy dowolną stałą c*C. Przyjmujemy Γ0=Δ. Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma_n\vdash_H\forall x\,\var\varphi_n(x)} , to definiujemy Γn+1=Γn oraz cn=c*. Jeśli natomiast Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma_n\not\vdash_H\forall x\,\var\varphi_n(x)} , to niech cnC będzie stałą nie występującą w Γn ani w Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi_n} . Musimy pokazać, że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma_{n+1}=\Gamma_n\cup\{\neg\var\varphi_n(c_n/x)\}} jest zbiorem niesprzecznym. Załóżmy przeciwnie, że

Γn+1H

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) dostajemy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma_n\vdash_H\var\varphi_n(c_n/x)} . Ponieważ cn nie występuje w Γn ani w Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi_n} , to możemy w dowodzie powyższego sekwentu zamienić wszystkie wystąpienia cn przez nową zmienną z, która się w tym dowodzie nie pojawiła oraz nie występuje wolno w formułach z Γn. Tak więc otrzymujemy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma_n\vdash_H\var\varphi_n(z/x)} oraz z∉FV(Γn). Na mocy Twierdzenia 7.4 o generalizacji dostajemy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma_n\vdash_H \forall z\ \var\varphi_n(z/x)} . Ponieważ x jest dopuszczalna dla z 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 7.3) dostajemy Parser 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ób udowodniliśmy niesprzeczność zbioru Γn+1. kończy konstrukcję zbiorów Γn oraz stałych cn.

Niech

Γ=nNΓn

Pokażemy, że Γ jest zbiorem C-nasyconym. Oczywiście Γ jako suma łańcucha zbiorów niesprzecznych jest również zbiorem niesprzecznym. Niech Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi(x)} będzie dowolną formułą nad Σ(C) o jednej zmiennej wolnej i załóżmy, że Parser 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 n. Oczywiście mamy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma_n\not\vdash_H\forall x\,\var\varphi_n(x)} i z konstrukcji zbiorów Γn wynika, że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma_{n+1}\vdash_H \neg\var\varphi_n(c_n/x)} . Zatem Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma\vdash_H \neg\var\varphi_n(c_n/x)} , co dowodzi C-nasycenia zbioru Γ.

Konstrukcja modelu ze stałych

Niech CΣ0 będzie dowolnym zbiorem stałych i niech Γ będzie dowolnym C-nasyconym zbiorem zdań nad Σ. W zbiorze C definiujemy relację równoważności :

c1c2   wtedy i tylko wtedy, gdy ΓHc1=c2

Zdefiniujemy strukturę 𝔄Γ. Nośnikiem tej struktury jest zbiór ilorazowy C/. Musimy określić interpretację symboli operacji i relacji z Σ. Dla przykładu załóżmy, że fΣ2F jest symbolem operacji dwuargumentowej. Funkcję Parser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle f^{\mathfrak A_\Gamma}:(C/\sim)^2\arr C/\sim} definiujemy warunkiem

f𝔄Γ([c1],[c2])=[d] wtedy i tylko wtedy, gdy ΓHf(c1,c2)=d

Dla pokazania, że f𝔄Γ jest dobrze określoną funkcją musimy sprawdzić, że:

Dla dowolnych c1,c2C  istnieje  dC  takie, że  ΓHf(c1,c2)=d    (9)

Jeśli  c1c1, c2c2  oraz  ΓHf(c1,c2)=d  i  ΓHf(c1,c2)=d  to  dd.    (10)

Własność (9) wynika z faktu, że zbiór Γ jest C-nasycony. Zauważmy najpierw, że ΓH¬x¬f(c1,c2)=x. Istotnie, załóżmy x¬f(c1,c2)=x. Wówczas z aksjomatu (A6) dostajemy ¬f(c1,c2)=f(c1,c2). Z drugiej strony, z aksjomatu (A7) i (A6) dostajemy f(c1,c2)=f(c1,c2). Tak więc otrzymujemy , a więc ΓH¬x¬f(c1,c2)=x. Zatem z C-nasycenia Γ wynika istnienie stałej dC takiej, że ΓH¬¬f(c1,c2)=d. Korzystając teraz z (A3) dostajemy ΓHf(c1,c2)=d.

Własność (10) wynika natychmiast z następującej postaci aksjomatu (A8) (postać tę otrzymujemy z (A8) z pomocą aksjomatu (A6))

c1=c'1(c2=c'2f(c1,c2)=f(c'1,c'2)).

Interpretacja symboli relacji w 𝔄Γ wygląda podobnie. Dla przykładu zdefiniujemy relację r𝔄Γ dla symbolu rΣ2R.

([c1],[c2])r𝔄Γ wtedy i tylko wtedy, gdy ΓH

W tym przypadku również musimy dowieść poprawności definicji (tzn. niezależności od wyboru reprezentantów). Czyli musimy pokazać, że jeśli c1c1 oraz c2c2, to

ΓHr(c1,c2) wtedy i tylko wtedy, gdy ΓHr(c'1,c'2)

Wynika to natychmiast z aksjomatów (A9) i (A6).


Teraz możemy przejść do twierdzenia o istnieniu modelu.

Twierdzenie 7.7 (o istnieniu modelu)

Każdy niesprzeczny zbiór zdań nad dowolną sygnaturą Σ ma model, którego moc nie przekracza max{0,|Σ|}. Dokładniej, dla struktury 𝔄Γ zbudowanej powyżej oraz dowolnej formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} takiej, że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle FV(\var\varphi)\subseteq\{x_1,\ldots,x_n\}} i dla dowolnego wartościowania ϱ takiego, że ϱ(xi)=[ci] dla i=1,,n mamy Parser nie mógł rozpoznać (nieznana funkcja „\sat”): {\displaystyle \sat{\mathfrak A_\Gamma}\varrho\var\varphi\WTW\Gamma\vdash_H \var\varphi(c_1/x_1,\ldots,c_n/x_n)} .

Dowód

Załóżmy, że Δ jest niesprzecznym zbiorem zdań. Niech C będzie dowolnym nieskończonym zbiorem rozłącznym z Σ i takim, że |C||Σ|. Z Lematu 7.6 o nasyceniu wiemy, że istnieje zbiór zdań Parser nie mógł rozpoznać (nieznana funkcja „\Gammasbseteq”): {\displaystyle \Gammasbseteq\Delta} nad sygnaturą Σ(C), który jest C-nasycony. Stosując lemat Kuratowskiego-Zorna dowodzimy, że istnieje maksymalny zbiór Γ o powyższych własnościach. Niech Γ będzie takim zbiorem. Dalsza część dowodu będzie przebiegała w odniesieniu do ustalonego zbioru Γ.

Najpierw zanotujmy następującą ważną własność zbioru Γ.

Dla dowolnego zdania Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} , jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma\not\vdash_H\var\varphi} , to  Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma\cup\{\var\varphi\}}  jest zbiorem sprzecznym. (12)

Dla dowodu (12) zauważmy, że jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma\cup\{\var\varphi\]]} jest zbiorem niesprzecznym, to jest on C-nasycony. Istotnie, jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma\cup\{\var\varphi\}\not\vdash_H \forall x\,\psi(x)} , dla pewnej formuły ψ o jednej zmiennej wolnej, to mamy również ΓHxψ(x). Zatem dla pewnej stałej cC zachodzi ΓH¬ψ(c/x), więc oczywiście również Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma\cup\{\var\varphi\}\vdash_H\neg\psi(c/x)} . Tak więc z maksymalności zbioru Γ wynika, że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma\cup\{\var\varphi\}} musi być zbiorem sprzecznym. To dowodzi (12).

Zauważmy, że z własności (11) wynika pierwsza część twierdzenia, bowiem mamy wówczas 𝔄ΓΓ. Własność (11) dowodzimy przez indukcję ze względu na budowę formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} . Dla formuł atomowych musimy dowieść następującą pomocniczą własność. Dla dowolnego termu t i stałej dC mamy Parser nie mógł rozpoznać (nieznana funkcja „\wart”): {\displaystyle \wart\prooftree t \justifies \mathfrak A_\Gamma \using \text{(W)}\endprooftree\varrho=[d]_\sim\WTW \Gamma\vdash_H {t}(c_1/x_1,\ldots,c_n/x_n)=d}

gdzie FV(t)sbseteq{x1,,xn} oraz v(xi)=[ci], dla i=1,,n. Dowód (13) przeprowadzamy przez rutynową indukcję ze względu na budowę termu t. Szczegóły pozostawiamy Czytelnikowi.

Powracamy do dowodu (11). Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest formułą t1=t2, to Parser nie mógł rozpoznać (nieznana funkcja „\wart”): {\displaystyle \wart\prooftree {t}_1 \justifies \mathfrak A_\Gamma \using \text{(W)}\endprooftree\varrho= \wart\prooftree {t}_2 \justifies \mathfrak A_\Gamma \using \text{(W)}\endprooftree\varrho} wtedy i tylko wtedy, gdy dla pewnego dC zachodzi Parser nie mógł rozpoznać (nieznana funkcja „\wart”): {\displaystyle \wart\prooftree {t}_1 \justifies \mathfrak A_\Gamma \using \text{(W)}\endprooftree\varrho=[d]_\sim} oraz Parser nie mógł rozpoznać (nieznana funkcja „\wart”): {\displaystyle \wart\prooftree {t}_2 \justifies \mathfrak A_\Gamma \using \text{(W)}\endprooftree\varrho=[d]_\sim} . Na mocy (13) jest to równoważne temu, że dla pewnego dC zachodzi ΓHt1(c1/x1,,cn/xn)=d oraz ΓHt2(c1/x1,,cn/xn)=d. Ostatnia własność jest równoważna (na mocy C-nasycenia zbioru Γ) własności ΓHt1(c1/x1,,cn/xn)=t2(c1/x1,,cn/xn).

Załóżmy teraz, że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest formułą postaci Parser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle \psi\arr\vartheta} . Niech ψ* oznacza formułę ψ(c1/x1,,cn/xn) oraz niech ϑ* oznacza formułę ϑ(c1/x1,,cn/xn). Załóżmy, że Parser nie mógł rozpoznać (nieznana funkcja „\sat”): {\displaystyle \sat{\mathfrak A_\Gamma}\varrho\var\varphi} i rozważmy dwa przypadki. Jeśli ΓHψ*, to na mocy założenia indukcyjnego mamy Parser nie mógł rozpoznać (nieznana funkcja „\sat”): {\displaystyle \sat{\mathfrak A_\Gamma}\varrho\psi} . Zatem Parser nie mógł rozpoznać (nieznana funkcja „\sat”): {\displaystyle \sat{\mathfrak A_\Gamma}\varrho\vartheta} i korzystając ponownie z założenia indukcyjnego otrzymujemy ΓHϑ*. Dalej na mocy aksjomatu (A1) i reguły (MP) otrzymujemy Parser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle \Gamma\vdash_H\psi^*\arr\vartheta^*} . Jeśli natomiast ΓHψ*, to jak wynika z (12) zbiór Γ{ψ*} jest sprzeczny. Stąd Γ{ψ*}Hϑ* i z twierdzenia o dedukcji (Twierdzenie 7.2) dostajemy ponownie Parser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle \Gamma\vdash_H\psi^*\arr\vartheta^*} . Dowód implikacji odwrotnej, tzn. że Parser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle \Gamma\vdash_H\psi^*\arr\vartheta^*} pociąga Parser nie mógł rozpoznać (nieznana funkcja „\sat”): {\displaystyle \sat{\mathfrak A_\Gamma}\varrho\var\varphi} pozostawiamy Czytelnikowi do uzupełnienia.

Na koniec rozważmy przypadek, gdy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest postaci yψ(y). Załóżmy, że Parser nie mógł rozpoznać (nieznana funkcja „\sat”): {\displaystyle \sat{\mathfrak A_\Gamma}\varrho\var\varphi} . Niech ψ* oznacza formułę ψ(c1/x1,,cn/xn). Formuła ψ* ma co najwyżej jedną zmienną wolną y. Jeśli ΓHy ψ*, to z C-nasycenia Γ istnieje taka stała dC, że ΓH¬ψ*(d/y). Zatem na mocy założenia indukcyjnego otrzymujemy (𝔄Γ,ϱy[d])⊭ψ, co daje sprzeczność z naszym założeniem Parser nie mógł rozpoznać (nieznana funkcja „\sat”): {\displaystyle \sat{\mathfrak A_\Gamma}\varrho\var\varphi} . Tak więc musi być ΓHy ψ*. Na odwrót, załóżmy, że ΓHy ψ* i niech dC będzie dowolną stałą. Z aksjomatu (A6) dostajemy ΓHψ*(d/y) i na mocy założenia indukcyjnego dostajemy Parser nie mógł rozpoznać (nieznana funkcja „\sa”): {\displaystyle \sa\prooftree \mathfrak A_\Gamma \justifies \varrho^{[d]_\sim}_y \using \text{(W)}\endprooftree\psi} . Ponieważ d jest dowolne, to powyższe spełnianie dowodzi Parser nie mógł rozpoznać (nieznana funkcja „\sat”): {\displaystyle \sat{\mathfrak A_\Gamma}\varrho\var\varphi} . Tym samym dowód twierdzenia jest zakończony.

Na zakończenie udowodnimy zapowiedziane wcześniej "silne" twierdzenie o pełności dla systemu H. Jest ono prostym wnioskiem z twierdzenia o istnieniu modelu.

Twierdzenie 7.8 ("Silne" twierdzenie o pełności)

Dla dowolnego zbioru formuł Δ i dla dowolnej formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} , jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta\models\var\varphi} , to Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta\vdash_H\var\varphi} . W szczególności, jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest tautologią języka pierwszego rzędu, to Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \vdash_H\var\varphi} .

Dowód

Załóżmy, że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta\not\vdash\var\varphi} . Niech C={c0,c1,} będzie nieskończonym przeliczalnym zbiorem stałych, rozłącznym z sygnaturą Σ. Ustawmy zmienne indywiduowe w ciąg x0,x1,. Dla dowolnej formuły ψ nad sygnaturą Σ niech ψ* oznacza zdanie nad sygnaturą Σ(C) otrzymane z ψ przez zastąpienie każdej zmiennej xn wolno występującej w ψ stałą cn. Niech Δ*={ψ* |ψΔ}.

Twierdzimy, że zbiór zdań Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta^*\cup\{\neg\var\varphi^*\}} jest zbiorem niesprzecznym. Załóżmy przeciwnie, że

Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta^*\cup\{\neg\var\varphi^*\}\vdash\bot} .

Wówczas dla pewnego skończonego podzbioru Δ0sbseteqΔ mamy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta_0^*\cup\{\neg\var\varphi^*\}\vdash\bot} . Z twierdzenia o dedukcji dostajemy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta_0^*\vdash\neg\neg\var\varphi^*} i na mocy aksjomatu (A3) mamy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta_0^*\vdash\var\varphi^*} Przyjmijmy, że Δ0={ψ1,,ψn}. Stosując n razy twierdzenie o dedukcji, dostajemy

Parser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle \vdash\psi_1^*\arr(\cdots\arr(\psi_n^*\arr\var\varphi^*)\cdots)} .

Zastępując w powyższym dowodzie stałe ci nowymi, nigdzie w tym dowodzie nie pojawiającymi się zmiennymi zi, następnie generalizując (por. Twierdzenie 7.4) i podstawiając na miejsce zmiennych związanych zi (por. aksjomat (A6)) zmienne xi dostajemy zi w stosownej formule.

Parser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle \vdash\psi_1\arr(\cdots\arr(\psi_n\arr\var\varphi)\cdots)} ,

czyli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta_0\vdash\var\varphi} , a co za tym idzie również Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle e\var\varphi} , wbrew założeniu. Tak więc zbiór Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta^*\cup\{\neg\var\varphi^*\}} jest niesprzeczny.

Z twierdzenia o istnieniu modelu wynika, że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta^*\cup\{\neg\var\varphi^*\}} ma model. Istnieje więc Σ(C)-struk\-tu\-ra 𝔄 taka, że 𝔄Δ* oraz Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \mathfrak A\not\models\var\varphi^*} . Niech Parser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle \varrho:X\arr A} będzie wartościowaniem, które każdej zmiennej xi przypisuje wartość ci𝔄. Na mocy Twierdzenia 7.7 mamy wówczas Parser nie mógł rozpoznać (nieznana funkcja „\sat”): {\displaystyle \sat\mathfrak A\varrho\psi} , dla każdej formuły ψΔ oraz Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle (\mathfrak A,\varrho)\not\models\var\varphi} . Dowodzi to Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta\not\models\var\varphi} .