Logika dla informatyków/Język logiki pierwszego rzędu: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Tprybick (dyskusja | edycje)
Tprybick (dyskusja | edycje)
Nie podano opisu zmian
Linia 10: Linia 10:
pozwalaj±ce formułować stwierdzenia o zależno¶ciach pomiędzy obiektami   
pozwalaj±ce formułować stwierdzenia o zależno¶ciach pomiędzy obiektami   
indywiduowymi \begin{eqnarray*}np. relacjach i funkcjach\end{eqnarray*}.   
indywiduowymi \begin{eqnarray*}np. relacjach i funkcjach\end{eqnarray*}.   
Dzięki zastosowaniu {\em kwantyfikatorów\/}, odwołuj±cych się   
Dzięki zastosowaniu {\em kwantyfikatorów\/}, odwołujących się   
do całej zbiorowo¶ci rozważanych obiektów,  
do całej zbiorowości rozważanych obiektów,  
można w logice pierwszego rzędu  
można w logice pierwszego rzędu  
wyrażać własno¶ci struktur relacyjnych oraz modelować  
wyrażać własności struktur relacyjnych oraz modelować  
rozumowania dotycz±ce takich struktur.  
rozumowania dotyczące takich struktur.  
Do zestawu symboli rachunku zdań dodajemy następuj±ce
Do zestawu symboli rachunku zdań dodajemy następujące
nowe składniki syntaktyczne:   
nowe składniki syntaktyczne:   
*{\em Symbole operacji i relacji\/} \begin{eqnarray*}w tym symbol równo¶ci <math>=</math>\end{eqnarray*};  
*{\em Symbole operacji i relacji\/} \begin{eqnarray*}w tym symbol równości <math>=</math>\end{eqnarray*};  
*{\em Zmienne indywiduowe\/}, których warto¶ci maj± przebiegać rozważane   
*{\em Zmienne indywiduowe\/}, których wartości mają przebiegać rozważane   
dziedziny;   
dziedziny;   
*{\em Kwantyfikatory\/}, wi±ż±ce zmienne indywiduowe w formułach.  
*{\em Kwantyfikatory\/}, wiążące zmienne indywiduowe w formułach.  




===Składnia===
===Składnia===
Symbole operacji i relacji podstawowymi składnikami do budowy najprostszych  
Symbole operacji i relacji podstawowymi składnikami do budowy najprostszych  
formuł, tzw. \textit{formuł atomowych}. Z tego względu w języku pierwszego   
formuł, tzw. \textit{formuł atomowych}. Z tego względu w języku pierwszego   
rzędu rezygnuje się ze zmiennych zdaniowych.   
rzędu rezygnuje się ze zmiennych zdaniowych.   
Linia 36: Linia 36:
<math>n</math>-ar\-gu\-men\-to\-wych}, a\Delta\vdashlementy <math>\Sigma^R_n</math> będziemy nazywać {\em  
<math>n</math>-ar\-gu\-men\-to\-wych}, a\Delta\vdashlementy <math>\Sigma^R_n</math> będziemy nazywać {\em  
symbolami relacji <math>n</math>-argumentowych}. Przyjmujemy, że wszystkie te  
symbolami relacji <math>n</math>-argumentowych}. Przyjmujemy, że wszystkie te  
zbiory parami rozł±czne.  
zbiory parami rozłączne.  
Umawiamy się też, że znak równo¶ci <math>=</math> nie należy do&nbsp;<math>\Sigma</math>. Symbol ten   
Umawiamy się też, że znak równości <math>=</math> nie należy do&nbsp;<math>\Sigma</math>. Symbol ten   
nie jest zwykłym symbolem relacyjnym, ale jest traktowany na  
nie jest zwykłym symbolem relacyjnym, ale jest traktowany na  
specjalnych prawach.   
specjalnych prawach.   
W praktyce, sygnatura zwykle jest skończona  
W praktyce, sygnatura zwykle jest skończona  
i&nbsp;zapisuje się jako ci±g symboli. Np.&nbsp;ci±g złożony ze znaków  
i&nbsp;zapisuje się jako ciąg symboli. Np.&nbsp;ciąg złożony ze znaków  
<math>+,\cdot,0,1</math> \begin{eqnarray*}o znanej każdemu  
<math>+,\cdot,0,1</math> \begin{eqnarray*}o znanej każdemu  
liczbie argumentów\end{eqnarray*} tworzy sygnaturę języka teorii ciał.  
liczbie argumentów\end{eqnarray*} tworzy sygnaturę języka teorii ciał.  
Linia 50: Linia 50:
Ustalamy pewien nieskończony przeliczalny zbiór <math>\ZI</math> symboli, które będziemy  
Ustalamy pewien nieskończony przeliczalny zbiór <math>\ZI</math> symboli, które będziemy  
nazywać \textit{zmiennymi indywiduowymi} i zwykle oznaczać symbolami <math>x, y, z</math>.  
nazywać \textit{zmiennymi indywiduowymi} i zwykle oznaczać symbolami <math>x, y, z</math>.  
Zbiór \textit{termów} <math>\termy</math> nad sygnatur± <math>\Sigma</math> i zbiorem zmiennych <math>\ZI</math>  
Zbiór \textit{termów} <math>\termy</math> nad sygnaturą <math>\Sigma</math> i zbiorem zmiennych <math>\ZI</math>  
definiujemy indukcyjnie:  
definiujemy indukcyjnie:  
*Zmienne indywiduowe termami.  
*Zmienne indywiduowe termami.  
*Dla każdego <math>n\geq 0</math> i każdego symbolu operacji <math>f\in\Sigma^F_n</math>, je¶li
*Dla każdego <math>n\geq 0</math> i każdego symbolu operacji <math>f\in\Sigma^F_n</math>, jeśli
<math>t_1,\ldots,t_n</math> termami, to <math>f\begin{eqnarray*}t_1,\ldots,t_n\end{eqnarray*}</math> jest też termem.  
<math>t_1,\ldots,t_n</math> termami, to <math>f\begin{eqnarray*}t_1,\ldots,t_n\end{eqnarray*}</math> jest też termem.  


}}  
}}  
Zauważmy, że z powyższej definicji wynika iż stałe sygnatury <math>\Sigma</math> \begin{eqnarray*}czyli  
Zauważmy, że z powyższej definicji wynika iż stałe sygnatury <math>\Sigma</math> \begin{eqnarray*}czyli  
symbole operacji zeroargumentowych\end{eqnarray*} termami.  
symbole operacji zeroargumentowych\end{eqnarray*} termami.  


{{definicja|||  
{{definicja|||  


Dla każdego termu <math>t\in\termy</math> definiujemy zbiór <math>\fv t</math> zmiennych   
Dla każdego termu <math>t\in\termy</math> definiujemy zbiór <math>\fv t</math> zmiennych   
''występuj±cych\/''  
''występujących\/''  
w <math>t</math>. Definicja jest indukcyjna:  
w <math>t</math>. Definicja jest indukcyjna:  
*<math>\fv x=\{x\}</math>.  
*<math>\fv x=\{x\}</math>.  
Linia 74: Linia 74:


Następnie zdefiniujemy \textit{formuły atomowe} języka pierwszego rzędu.  
Następnie zdefiniujemy \textit{formuły atomowe} języka pierwszego rzędu.  
*Symbol fałszu <math>\bot</math> jest formuł± atomow±.  
*Symbol fałszu <math>\bot</math> jest formułą atomową.  
<!--%%  oraz <math>\fv\bot=\emptyset</math>. -->  
<!--%%  oraz <math>\fv\bot=\emptyset</math>. -->  
*Dla każdego <math>n\geq 1</math>, każdego symbolu <math>r\in\Sigma^R_n</math> relacji  
*Dla każdego <math>n\geq 1</math>, każdego symbolu <math>r\in\Sigma^R_n</math> relacji  
<math>n</math>-argumentowej, oraz dla dowolnych termów <math>t_1,\ldots,t_n\in\termy</math>, napis  
<math>n</math>-argumentowej, oraz dla dowolnych termów <math>t_1,\ldots,t_n\in\termy</math>, napis  
<math>r\begin{eqnarray*}t_1,\ldots,t_n\end{eqnarray*}</math> jest formuł± atomow±.  
<math>r\begin{eqnarray*}t_1,\ldots,t_n\end{eqnarray*}</math> jest formułą atomową.  
*Dla dowolnych termów <math>t_1, t_2</math>, napis <math>\begin{eqnarray*}t_1=t_2\end{eqnarray*}</math> jest formuł± atomow±.  
*Dla dowolnych termów <math>t_1, t_2</math>, napis <math>\begin{eqnarray*}t_1=t_2\end{eqnarray*}</math> jest formułą atomową.  


}}  
}}  


'''Konwencja:''' Niektóre dwuargumentowe symbole relacyjne \begin{eqnarray*}np.&nbsp;<math>\leq</math>\end{eqnarray*}  
'''Konwencja:''' Niektóre dwuargumentowe symbole relacyjne \begin{eqnarray*}np.&nbsp;<math>\leq</math>\end{eqnarray*}  
i funkcyjne \begin{eqnarray*}np.&nbsp;<math>+,\cdot</math>\end{eqnarray*} zwyczajowo pisane pomiędzy argumentami.   
i funkcyjne \begin{eqnarray*}np.&nbsp;<math>+,\cdot</math>\end{eqnarray*} zwyczajowo pisane pomiędzy argumentami.   
Na przykład formułę atomow± <math>{\leq}\begin{eqnarray*}x,y\end{eqnarray*}</math> zwykle piszemy jako ,,<math>x\leq y</math>''.  
Na przykład formułę atomową <math>{\leq}\begin{eqnarray*}x,y\end{eqnarray*}</math> zwykle piszemy jako ,,<math>x\leq y</math>''.  


{{definicja||def-form|  
{{definicja||def-form|  


\textit{Formuły} nad sygnatur± <math>\Sigma</math> i zbiorem zmiennych indywiduowych  
\textit{Formuły} nad sygnaturą <math>\Sigma</math> i zbiorem zmiennych indywiduowych  
<math>\ZI</math> definiujemy indukcyjnie.   
<math>\ZI</math> definiujemy indukcyjnie.   
*Każda formuła atomowa jest formuł±.   
*Każda formuła atomowa jest formułą.   
*Je¶li <math>\var\varphi,\psi</math> formułami, to <math>\begin{eqnarray*}\var\varphi\to\psi\end{eqnarray*}</math>   
*Jeśli <math>\var\varphi,\psi</math> formułami, to <math>\begin{eqnarray*}\var\varphi\to\psi\end{eqnarray*}</math>   
jest też formuł±.  
jest też formułą.  
*Je¶li <math>\var\varphi</math> jest formuł± a <math>x\in\ZI</math> jest zmienn± indywiduow±, to  
*Jeśli <math>\var\varphi</math> jest formułą a <math>x\in\ZI</math> jest zmienną indywiduową, to  
<math>\forall x\var\varphi</math> jest też formuł±.  
<math>\forall x\var\varphi</math> jest też formułą.  


Ponadto, dla każdej formuły <math>\var\varphi</math>  
Ponadto, dla każdej formuły <math>\var\varphi</math>  
definiujemy zbiór \textit{zmiennych wolnych} <math>\fv\var\varphi</math>   
definiujemy zbiór \textit{zmiennych wolnych} <math>\fv\var\varphi</math>   
występuj±cych w tej formule:  
występujących w tej formule:  
*<math>\fv\bot=\emptyset</math>;  
*<math>\fv\bot=\emptyset</math>;  
*<math>\fv{r\begin{eqnarray*}t_1,\ldots,t_n\end{eqnarray*}} =\bigcup_{i=1}^n \fv{t_i}</math>;  
*<math>\fv{r\begin{eqnarray*}t_1,\ldots,t_n\end{eqnarray*}} =\bigcup_{i=1}^n \fv{t_i}</math>;  
Linia 106: Linia 106:
*<math>\fv{\forall x\var\varphi}=\fv\var\varphi-\{x\}</math>.  
*<math>\fv{\forall x\var\varphi}=\fv\var\varphi-\{x\}</math>.  


Formułę bez kwantyfikatorów nazywamy ''formuł± otwart±\/''.  
Formułę bez kwantyfikatorów nazywamy ''formułą otwartą\/''.  
Natomiast formuła bez zmiennych wolnych nazywa się \textit{zdaniem},   
Natomiast formuła bez zmiennych wolnych nazywa się \textit{zdaniem},   
lub ''formuł± zamknięt±\/''.  
lub ''formułą zamkniętą\/''.  
}}  
}}  


Negację, koniunkcję, alternatywę, symbol prawdy i równoważno¶ć formuł  
Negację, koniunkcję, alternatywę, symbol prawdy i równoważność formuł  
definiujemy podobnie jak w przypadku rachunku zdań.   
definiujemy podobnie jak w przypadku rachunku zdań.   
Kwantyfikator\Delta\vdashgzystencjalny  
Kwantyfikator\Delta\vdashgzystencjalny  
Linia 122: Linia 122:
</math>  
</math>  


\text\\seml Zmienne wolne a zmienne zwi±zane. \semr   
\text\\seml Zmienne wolne a zmienne związane. \semr   
W&nbsp;Definicji&nbsp;[[#def-form]] nie zakładamy, że <math>x\in\fv\var\varphi</math>.   
W&nbsp;Definicji&nbsp;[[#def-form]] nie zakładamy, że <math>x\in\fv\var\varphi</math>.   
Zauważmy też,  
Zauważmy też,  
że zmienna <math>x</math> może występować w formule <math>\var\varphi</math> podczas gdy  
że zmienna <math>x</math> może występować w formule <math>\var\varphi</math> podczas gdy  
<math>x\not\in\fv\var\varphi</math>. Przez \textit{wyst±pienie} zmiennej indywiduowej <math>x</math>  
<math>x\not\in\fv\var\varphi</math>. Przez \textit{wystąpienie} zmiennej indywiduowej <math>x</math>  
rozumiemy tu zwykłe pojawienie się&nbsp;<math>x</math> w jakimkolwiek termie w <math>\var\varphi</math>. I tak  
rozumiemy tu zwykłe pojawienie się&nbsp;<math>x</math> w jakimkolwiek termie w <math>\var\varphi</math>. I tak  
na przykład w formule\footnote{Zakładamy tu, że <math>s</math> oraz <math>r</math> symbolami  
na przykład w formule\footnote{Zakładamy tu, że <math>s</math> oraz <math>r</math> symbolami  
relacji.} <math>\exists x\forall\boldsymbol{s}}\def\blank{\hbox{\sf B\begin{eqnarray*}r\begin{eqnarray*}x,y\end{eqnarray*}\to \forall y\exists x\,s\begin{eqnarray*}x,y,z\end{eqnarray*}\end{eqnarray*}</math> zmienna  
relacji.} <math>\exists x\forall\boldsymbol{s}}\def\blank{\hbox{\sf B\begin{eqnarray*}r\begin{eqnarray*}x,y\end{eqnarray*}\to \forall y\exists x\,s\begin{eqnarray*}x,y,z\end{eqnarray*}\end{eqnarray*}</math> zmienna  
<math>u</math> nie występuje, podczas gdy <math>x</math> i <math>y</math> wystepuj± po dwa razy, a <math>z</math> występuje  
<math>u</math> nie występuje, podczas gdy <math>x</math> i <math>y</math> wystepują po dwa razy, a <math>z</math> występuje  
jeden raz.   
jeden raz.   
Bardzo ważn± rzecz± jest rozróżnienie wyst±pień zmiennych \textit{wolnych} i  
Bardzo ważną rzeczą jest rozróżnienie wystąpień zmiennych \textit{wolnych} i  
\textit{zwi±zanych} w&nbsp;formułach. Wszystkie wyst±pienia zmiennych   
\textit{związanych} w&nbsp;formułach. Wszystkie wystąpienia zmiennych   
w&nbsp;formułach   
w&nbsp;formułach   
atomowych wolne. Wolne \begin{eqnarray*}zwi±zane\end{eqnarray*} wyst±pienia w&nbsp;formułach   
atomowych wolne. Wolne \begin{eqnarray*}związane\end{eqnarray*} wystąpienia w&nbsp;formułach   
\mbox{<math>\var\varphi</math> i&nbsp;<math>\psi</math>}  
\mbox{<math>\var\varphi</math> i&nbsp;<math>\psi</math>}  
pozostaj± wolne \begin{eqnarray*}zwi±zane\end{eqnarray*} w formule <math>\var\varphi\to\psi</math>. Wszystkie wolne  
pozostają wolne \begin{eqnarray*}związane\end{eqnarray*} w formule <math>\var\varphi\to\psi</math>. Wszystkie wolne  
wyst±pienia <math>x</math> w <math>\var\varphi</math> staj± się zwi±zanymi wyst±pieniami w formule  
wystąpienia <math>x</math> w <math>\var\varphi</math> stają się związanymi wystąpieniami w formule  
<math>\exists x\var\varphi</math> \begin{eqnarray*}zwi±zanymi przez dopisanie kwantyfikatora&nbsp;<math>\exists</math>\end{eqnarray*}, a  
<math>\exists x\var\varphi</math> \begin{eqnarray*}związanymi przez dopisanie kwantyfikatora&nbsp;<math>\exists</math>\end{eqnarray*}, a  
charakter pozostałych wyst±pień jest taki sam w </math>\var\varphi<math> i w </math>\exists  
charakter pozostałych wystąpień jest taki sam w </math>\var\varphi<math> i w </math>\exists  
x\var\varphi</math>.  
x\var\varphi</math>.  
Przykładowo w formule </math>\exists x\forall\boldsymbol{s}}\def\blank{\hbox{\sf B\begin{eqnarray*}r\begin{eqnarray*}x,\underline{y}\end{eqnarray*}\to  
Przykładowo w formule </math>\exists x\forall\boldsymbol{s}}\def\blank{\hbox{\sf B\begin{eqnarray*}r\begin{eqnarray*}x,\underline{y}\end{eqnarray*}\to  
\forall y\exists x\,s\begin{eqnarray*}x,y,z\end{eqnarray*}\end{eqnarray*}</math> podkre¶lone wyst±pienie <math>y</math> jest wolne, a nie  
\forall y\exists x\,s\begin{eqnarray*}x,y,z\end{eqnarray*}\end{eqnarray*}</math> podkreślone wystąpienie <math>y</math> jest wolne, a nie  
podkre¶lone jest zwi±zane. Obydwa wyst±pienia <math>x</math> zwiazane, ale przez różne  
podkreślone jest związane. Obydwa wystąpienia <math>x</math> zwiazane, ale przez różne  
kwantyfikatory.   
kwantyfikatory.   


Na koniec\boldsymbol{s}}\def\blank{\hbox{\sf Bwaga o nazwach zmiennych zwi±zanych. Rozróżnienie pomiędzy zmiennymi  
Na koniec\boldsymbol{s}}\def\blank{\hbox{\sf Bwaga o nazwach zmiennych związanych. Rozróżnienie pomiędzy zmiennymi  
wolnymi a zwi±zanymi jest analogiczne do rozróżnenia pomiedzy identyfikatorami  
wolnymi a związanymi jest analogiczne do rozróżnenia pomiedzy identyfikatorami  
lokalnymi a globalnymi w językach programowania. Globalne identyfikatory,  
lokalnymi a globalnymi w językach programowania. Globalne identyfikatory,  
widoczne na zewn±trz, odpowiadaj± zmiennym wolnym, podczas gdy lokalne  
widoczne na zewnątrz, odpowiadają zmiennym wolnym, podczas gdy lokalne  
identyfikatory \begin{eqnarray*}zwi±zane np. deklaracj± w bloku\end{eqnarray*} nie widoczne na zewn±trz
identyfikatory \begin{eqnarray*}związane np. deklaracją w bloku\end{eqnarray*} nie widoczne na zewnątrz
zakresu ich deklaracji.   
zakresu ich deklaracji.   
Intuicyjnie naturalne jest oczekiwanie,  
Intuicyjnie naturalne jest oczekiwanie,  
że zmiana zmiennej  
że zmiana zmiennej  
zwi±zanej na inn± zmienn± \begin{eqnarray*}tak aby nie wprowadzić konfliktu wynikaj±cego ze  
związanej na inną zmienną \begin{eqnarray*}tak aby nie wprowadzić konfliktu wynikającego ze  
zmiany struktury wi±zań\end{eqnarray*} nie powinna zmieniać znaczenia formuły.\footnote{Taka  
zmiany struktury wiązań\end{eqnarray*} nie powinna zmieniać znaczenia formuły.\footnote{Taka  
zamiana zmiennych bywa nazywana <math>\alpha</math>-\textit{konwersj±}.} Tak w&nbsp;istocie  
zamiana zmiennych bywa nazywana <math>\alpha</math>-\textit{konwersją}.} Tak w&nbsp;istocie  
będzie, jak się przekonamy poniżej \begin{eqnarray*}Fakt&nbsp;[[#alfa-konw]]\end{eqnarray*}.  
będzie, jak się przekonamy poniżej \begin{eqnarray*}Fakt&nbsp;[[#alfa-konw]]\end{eqnarray*}.  


===Semantyka formuł===
===Semantyka formuł===


Niech <math>\Sigma</math> będzie sygnatur±. {\em Struktura} <math>\strA</math> nad  
Niech <math>\Sigma</math> będzie sygnaturą. {\em Struktura} <math>\strA</math> nad  
sygnatur± <math>\Sigma</math> \begin{eqnarray*}lub po prostu <math>\Sigma</math>-struktura\end{eqnarray*} to  
sygnaturą <math>\Sigma</math> \begin{eqnarray*}lub po prostu <math>\Sigma</math>-struktura\end{eqnarray*} to  
niepusty zbiór <math>A</math>, zwany {\em no¶nikiem}, wraz z  
niepusty zbiór <math>A</math>, zwany {\em nośnikiem}, wraz z  
interpretacj± każdego symbolu operacji <math>f\in\Sigma^F_n</math> jako  
interpretacją każdego symbolu operacji <math>f\in\Sigma^F_n</math> jako  
funkcji <math>n</math> argumentowej <math>f^{\strA}:A^n\to A</math> oraz każdego symbolu  
funkcji <math>n</math> argumentowej <math>f^{\strA}:A^n\to A</math> oraz każdego symbolu  
relacji <math>r\in\Sigma^R_n</math>   
relacji <math>r\in\Sigma^R_n</math>   
jako relacji <math>n</math>-argumentowej <math>r^{\strA}\subseteq A^n</math>.   
jako relacji <math>n</math>-argumentowej <math>r^{\strA}\subseteq A^n</math>.   
\begin{eqnarray*}Na przykład, je¶li <math>\Sigma</math> składa się z jednego symbolu relacji   
\begin{eqnarray*}Na przykład, jeśli <math>\Sigma</math> składa się z jednego symbolu relacji   
dwuargumentowej, to każdy graf zorientowany jest <math>\Sigma</math>-struktur±.\end{eqnarray*}  
dwuargumentowej, to każdy graf zorientowany jest <math>\Sigma</math>-strukturą.\end{eqnarray*}  
W praktyce, strukturę relacyjn± przedstawia się jako  
W praktyce, strukturę relacyjną przedstawia się jako  
krotkę postaci   
krotkę postaci   
<math>\strA = \<A, f_1^\strA,\ldots,f_n^\strA,r_1^\strA,\ldots, r_m^\strA\></math>, gdzie   
<math>\strA = \<A, f_1^\strA,\ldots,f_n^\strA,r_1^\strA,\ldots, r_m^\strA\></math>, gdzie   
<math>f_1,\ldots,f_n,r_1,\ldots, r_m</math> wszystkimi symbolami danej sygnatury.  
<math>f_1,\ldots,f_n,r_1,\ldots, r_m</math> wszystkimi symbolami danej sygnatury.  
Często,   
Często,   
gdy będzie jasne z&nbsp;kontekstu z jak± struktur± mamy do czynienia, będziemy  
gdy będzie jasne z&nbsp;kontekstu z jaką strukturą mamy do czynienia, będziemy  
opuszczać nazwę struktury i pisać po prostu <math>r, f,\dots</math> zamiast  
opuszczać nazwę struktury i pisać po prostu <math>r, f,\dots</math> zamiast  
<math>r^\strA, f^\strA,\dots</math>  
<math>r^\strA, f^\strA,\dots</math>  




{\em Warto¶ciowaniem} w <math>\Sigma</math>-strukturze <math>\strA</math> nazwiemy  
{\em Wartościowaniem} w <math>\Sigma</math>-strukturze <math>\strA</math> nazwiemy  
dowoln± funkcję <math>\varrho:X\to A</math>. Dla warto¶ciowania <math>\varrho</math>, zmiennej  
dowolną funkcję <math>\varrho:X\to A</math>. Dla wartościowania <math>\varrho</math>, zmiennej  
<math>x\in\ZI</math> oraz\Delta\vdashlementu <math>a\in A</math> definiujemy nowe warto¶ciowanie
<math>x\in\ZI</math> oraz\Delta\vdashlementu <math>a\in A</math> definiujemy nowe wartościowanie
<math>\varrho_x^a:X\to A</math>, będ±ce modyfikacj± warto¶ciowania <math>\varrho</math> na  
<math>\varrho_x^a:X\to A</math>, będące modyfikacją wartościowania <math>\varrho</math> na  
argumencie <math>x</math>, w następuj±cy sposób,  
argumencie <math>x</math>, w następujący sposób,  


<span id=""/> <math>   
<span id=""/> <math>   
Linia 192: Linia 192:
</math>  
</math>  


Najpierw zdefiniujemy znaczenie termów. Warto¶ć termu <math>t\in\termy</math> w  
Najpierw zdefiniujemy znaczenie termów. Wartość termu <math>t\in\termy</math> w  
<math>\Sigma</math>-strukturze <math>\strA</math> przy warto¶ciowaniu <math>\varrho</math> oznaczamy przez  
<math>\Sigma</math>-strukturze <math>\strA</math> przy wartościowaniu <math>\varrho</math> oznaczamy przez  
<math>\wartt t\strA\varrho</math>, lub <math>\wfz t\varrho</math>, gdy <math>\strA</math> jest znane.   
<math>\wartt t\strA\varrho</math>, lub <math>\wfz t\varrho</math>, gdy <math>\strA</math> jest znane.   
Definicja jest indukcyjna:  
Definicja jest indukcyjna:  
Linia 209: Linia 209:
czytamy: formuła <math>\var\varphi</math> jest ''spełniona\/''  
czytamy: formuła <math>\var\varphi</math> jest ''spełniona\/''  
w strukturze <math>\strA</math> przy  
w strukturze <math>\strA</math> przy  
warto¶ciowaniu <math>\varrho</math>. Zakładamy tu, że <math>\var\varphi</math> oraz <math>\strA</math> nad  
wartościowaniu <math>\varrho</math>. Zakładamy tu, że <math>\var\varphi</math> oraz <math>\strA</math> nad  
sam± sygnatur±. Spełnianie definiujemy przez indukcję ze względu na budowę   
samą sygnaturą. Spełnianie definiujemy przez indukcję ze względu na budowę   
formuły&nbsp;<math>\var\varphi</math>.  
formuły&nbsp;<math>\var\varphi</math>.  
*Nie zachodzi <math>\sat\strA\varrho\bot</math>.  
*Nie zachodzi <math>\sat\strA\varrho\bot</math>.  
Linia 227: Linia 227:




Nastepuj±ce twierdzenie pokazuje, że spełnianie formuły <math>\var\varphi</math> w dowolnej  
Nastepujące twierdzenie pokazuje, że spełnianie formuły <math>\var\varphi</math> w dowolnej  
strukturze zależy jedynie od warto¶ci zmiennych wolnych <math>\fv\var\varphi</math>.   
strukturze zależy jedynie od wartości zmiennych wolnych <math>\fv\var\varphi</math>.   
Uzasadnia ono następuj±c± konwencję notacyjn±:  
Uzasadnia ono następującą konwencję notacyjną:  
napiszemy na przykład <math>\sa\prooftree \strA}{x:a,y:b \justifies \var\varphi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math> zamiast   
napiszemy na przykład <math>\sa\prooftree \strA}{x:a,y:b \justifies \var\varphi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math> zamiast   
<math>\sa\prooftree \strA}{\varrho \justifies \var\varphi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>, gdy <math>\varrho\begin{eqnarray*}x\end{eqnarray*}=a</math> i&nbsp;<math>\varrho\begin{eqnarray*}y\end{eqnarray*}=b</math>,  
<math>\sa\prooftree \strA}{\varrho \justifies \var\varphi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>, gdy <math>\varrho\begin{eqnarray*}x\end{eqnarray*}=a</math> i&nbsp;<math>\varrho\begin{eqnarray*}y\end{eqnarray*}=b</math>,  
a przy tym wiadomo, że w formule <math>\var\varphi</math> występuj± wolno   
a przy tym wiadomo, że w formule <math>\var\varphi</math> występują wolno   
tylko zmienne <math>x</math> i&nbsp;<math>y</math>.  
tylko zmienne <math>x</math> i&nbsp;<math>y</math>.  
Je¶li&nbsp;<math>\var\varphi</math> jest zdaniem, to warto¶ciowanie można całkiem pomin±ć.  
Jeśli&nbsp;<math>\var\varphi</math> jest zdaniem, to wartościowanie można całkiem pominąć.  


{{fakt||zm-wolne|  
{{fakt||zm-wolne|  


Dla dowolnej <math>\Sigma</math>-struktury <math>\strA</math> i dowolnej formuły <math>\var\varphi</math> je¶li
Dla dowolnej <math>\Sigma</math>-struktury <math>\strA</math> i dowolnej formuły <math>\var\varphi</math> jeśli
warto¶ciowania <math>\varrho</math> i <math>\varrho'</math> przyjmuj± równe warto¶ci dla wszystkich  
wartościowania <math>\varrho</math> i <math>\varrho'</math> przyjmują równe wartości dla wszystkich  
zmiennych wolnych w <math>\var\varphi</math>, to  
zmiennych wolnych w <math>\var\varphi</math>, to  
\[  
\[  
Linia 250: Linia 250:
}}  
}}  


===Prawdziwo¶ć i spełnialno¶ć formuł===
===Prawdziwość i spełnialność formuł===
Powiemy, że formuła <math>\var\varphi </math> jest ''spełnialna w <math>\strA</math>\/'',   
Powiemy, że formuła <math>\var\varphi </math> jest ''spełnialna w <math>\strA</math>\/'',   
gdy istnieje  
gdy istnieje  
warto¶ciowanie <math>\varrho</math> w strukturze&nbsp;<math>\strA</math> takie, że zachodzi  
wartościowanie <math>\varrho</math> w strukturze&nbsp;<math>\strA</math> takie, że zachodzi  
<math>\sat\strA\varrho\var\varphi</math>. Formuła <math>\var\varphi</math> jest {\em  
<math>\sat\strA\varrho\var\varphi</math>. Formuła <math>\var\varphi</math> jest {\em  
spełnialna}, gdy istnieje struktura <math>\strA</math>, w której <math>\var\varphi</math> jest  
spełnialna}, gdy istnieje struktura <math>\strA</math>, w której <math>\var\varphi</math> jest  
Linia 259: Linia 259:


Formuła <math>\var\varphi</math> jest {\em prawdziwa} w <math>\strA</math>, gdy dla  
Formuła <math>\var\varphi</math> jest {\em prawdziwa} w <math>\strA</math>, gdy dla  
każdego warto¶ciowania <math>\varrho</math> w <math>\strA</math> zachodzi <math>\sat\strA\varrho\var\varphi</math>.   
każdego wartościowania <math>\varrho</math> w <math>\strA</math> zachodzi <math>\sat\strA\varrho\var\varphi</math>.   
W&nbsp;tym przypadku mówimy też, że <math>\strA</math> jest {\em modelem} dla formuły  
W&nbsp;tym przypadku mówimy też, że <math>\strA</math> jest {\em modelem} dla formuły  
<math>\var\varphi</math>  \begin{eqnarray*}oznaczamy to przez <math>\strA\models\var\varphi</math>\end{eqnarray*}. Dla zbioru formuł  
<math>\var\varphi</math>  \begin{eqnarray*}oznaczamy to przez <math>\strA\models\var\varphi</math>\end{eqnarray*}. Dla zbioru formuł  
Linia 266: Linia 266:
<math>\strA\models\Gamma</math>\end{eqnarray*},  gdy dla każdej  formuły <math>\var\varphi\in\Gamma</math>,  
<math>\strA\models\Gamma</math>\end{eqnarray*},  gdy dla każdej  formuły <math>\var\varphi\in\Gamma</math>,  
zachodzi <math>\strA\models\var\varphi</math>.  
zachodzi <math>\strA\models\var\varphi</math>.  
Formuła <math>\var\varphi</math> jest {\em tautologi±} \begin{eqnarray*}oznaczamy to przez  
Formuła <math>\var\varphi</math> jest {\em tautologią} \begin{eqnarray*}oznaczamy to przez  
<math>\models\var\varphi</math>\end{eqnarray*}, gdy  jest ona   
<math>\models\var\varphi</math>\end{eqnarray*}, gdy  jest ona   
prawdziwa  w&nbsp;każdej <math>\Sigma</math>-strukturze.   
prawdziwa  w&nbsp;każdej <math>\Sigma</math>-strukturze.   


Oczywi¶cie je¶li weĽmiemy dowoln± tautologię rachunku zdań to po  
Oczywiście jeśli weźmiemy dowolną tautologię rachunku zdań to po  
podstawieniu na miejsce zmiennych zdaniowych dowolnych formuł logiki  
podstawieniu na miejsce zmiennych zdaniowych dowolnych formuł logiki  
pierwszego rzędu dostaniemy tautologię logiki pierwszego  
pierwszego rzędu dostaniemy tautologię logiki pierwszego  
Linia 278: Linia 278:
{{fakt||taut5|  
{{fakt||taut5|  


Następuj±ce formuły tautologiami logiki pierwszego rzedu:  
Następujące formuły tautologiami logiki pierwszego rzedu:  
\forall x\psi\end{eqnarray*}</math>.  
\forall x\psi\end{eqnarray*}</math>.  
</math>x_1=y_1\to\begin{eqnarray*}x_2=y_2\to\cdots\to\begin{eqnarray*}x_n=y_n\to f\begin{eqnarray*}x_1,\ldots,x_n\end{eqnarray*}=  
</math>x_1=y_1\to\begin{eqnarray*}x_2=y_2\to\cdots\to\begin{eqnarray*}x_n=y_n\to f\begin{eqnarray*}x_1,\ldots,x_n\end{eqnarray*}=  
Linia 288: Linia 288:
{{dowod||  
{{dowod||  


Aby się przekonać, że formuła&nbsp;\begin{eqnarray*}[[#taut1]]\end{eqnarray*} jest tautologi±,  
Aby się przekonać, że formuła&nbsp;\begin{eqnarray*}[[#taut1]]\end{eqnarray*} jest tautologią,  
rozpatrzmy   
rozpatrzmy   
dowoln± strukturę <math>\strA</math> i jakie¶ warto¶ciowanie&nbsp;<math>\varrho</math>.   
dowolną strukturę <math>\strA</math> i jakieś wartościowanie&nbsp;<math>\varrho</math>.   
Załóżmy najpierw, że <math>\sa\prooftree \strA}{\varrho \justifies \forall x\begin{eqnarray*}\var\varphi\to\psi\end{eqnarray*} \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>   
Załóżmy najpierw, że <math>\sa\prooftree \strA}{\varrho \justifies \forall x\begin{eqnarray*}\var\varphi\to\psi\end{eqnarray*} \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>   
oraz <math>\sa\prooftree \strA}{\varrho \justifies \forall x\,\var\varphi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>. Oznacza to, że   
oraz <math>\sa\prooftree \strA}{\varrho \justifies \forall x\,\var\varphi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>. Oznacza to, że   
dla dowolnego <math>a\in A</math>  
dla dowolnego <math>a\in A</math>  
zachodzi <math>\sa\prooftree \strA}{\varrho_x^a \justifies \var\varphi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math> oraz   
zachodzi <math>\sa\prooftree \strA}{\varrho_x^a \justifies \var\varphi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math> oraz   
<math>\sa\prooftree \strA}{\varrho_x^a \justifies \var\varphi\to\psi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>. Musi więc zaj¶ć  
<math>\sa\prooftree \strA}{\varrho_x^a \justifies \var\varphi\to\psi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>. Musi więc zajść  
\mbox{<math>\sa\prooftree \strA}{\varrho_x^a \justifies \psi}</math> \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree. Z dowolno¶ci <math>a</math> mamy  
\mbox{<math>\sa\prooftree \strA}{\varrho_x^a \justifies \psi}</math> \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree. Z dowolności <math>a</math> mamy  
<math>\sa\prooftree \strA}{\varrho \justifies \forall x\,\psi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>, a st±d  
<math>\sa\prooftree \strA}{\varrho \justifies \forall x\,\psi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>, a stąd  
\mbox{</math>\sa\prooftree \strA \justifies \varrho \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree{\forall x\begin{eqnarray*}\var\varphi\to\psi\end{eqnarray*}\to\begin{eqnarray*}\forall x\var\varphi\to  
\mbox{</math>\sa\prooftree \strA \justifies \varrho \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree{\forall x\begin{eqnarray*}\var\varphi\to\psi\end{eqnarray*}\to\begin{eqnarray*}\forall x\var\varphi\to  
\forall x\psi\end{eqnarray*}}</math>}.  
\forall x\psi\end{eqnarray*}}</math>}.  


Je¶li <math>\niesa\prooftree \strA}{\varrho \justifies \forall x\begin{eqnarray*}\var\varphi\to\psi\end{eqnarray*} \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>   
Jeśli <math>\niesa\prooftree \strA}{\varrho \justifies \forall x\begin{eqnarray*}\var\varphi\to\psi\end{eqnarray*} \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>   
lub <math>\niesa\prooftree \strA}{\varrho \justifies \forall x\,\var\varphi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>,  
lub <math>\niesa\prooftree \strA}{\varrho \justifies \forall x\,\var\varphi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>,  
to nasza formuła jest spełniona przez <math>\varrho</math>   
to nasza formuła jest spełniona przez <math>\varrho</math>   
wprost z&nbsp;definicji. Uzasadnienie czę¶ci&nbsp;\begin{eqnarray*}[[#taut2a]]--[[#taut5]]\end{eqnarray*}  
wprost z&nbsp;definicji. Uzasadnienie części&nbsp;\begin{eqnarray*}[[#taut2a]]--[[#taut5]]\end{eqnarray*}  
pozostawiamy czytelnikowi.  
pozostawiamy czytelnikowi.  
}}  
}}  


Ponadto mamy następuj±cy
Ponadto mamy następujący
{{fakt||fakt-gen|  
{{fakt||fakt-gen|  


Dla dowolnej tautologii </math>\var\varphi<math> i dowolnej zmiennej </math>x<math>, formuła </math>\forall  
Dla dowolnej tautologii </math>\var\varphi<math> i dowolnej zmiennej </math>x<math>, formuła </math>\forall  
x\var\varphi</math> jest też tautologi±.  
x\var\varphi</math> jest też tautologią.  
}}  
}}  
{{dowod||  
{{dowod||  
Linia 319: Linia 319:
}}  
}}  


Uzasadnienie, że dana formuła jest tautologi± polega na analizie  
Uzasadnienie, że dana formuła jest tautologią polega na analizie  
jej spełniania w&nbsp;dowolnych modelach \begin{eqnarray*}por.&nbsp;Fakt&nbsp;[[#fakt-przyklad-taut]]\end{eqnarray*}.   
jej spełniania w&nbsp;dowolnych modelach \begin{eqnarray*}por.&nbsp;Fakt&nbsp;[[#fakt-przyklad-taut]]\end{eqnarray*}.   
Natomiast wykazanie, że tak nie  
Natomiast wykazanie, że tak nie  
Linia 326: Linia 326:
{{przyklad|||  
{{przyklad|||  


\forall x\begin{eqnarray*}p\begin{eqnarray*}x\end{eqnarray*}\to q\begin{eqnarray*}x\end{eqnarray*}\end{eqnarray*}</math> nie jest tautologi±. Rozpatrzmy bowiem  
\forall x\begin{eqnarray*}p\begin{eqnarray*}x\end{eqnarray*}\to q\begin{eqnarray*}x\end{eqnarray*}\end{eqnarray*}</math> nie jest tautologią. Rozpatrzmy bowiem  
model <math>\strA = \<\NN, p^\strA, q^\strA\></math>, w którym:  
model <math>\strA = \<\NN, p^\strA, q^\strA\></math>, w którym:  
*<math>n\in p^\strA</math>, \wtw, gdy <math>n</math> jest parzyste;  
*<math>n\in p^\strA</math>, \wtw, gdy <math>n</math> jest parzyste;  
Linia 333: Linia 333:


Ponieważ <math>p^\strA\neq\NN</math>, więc <math>\strA\not\models \forall x p\begin{eqnarray*}x\end{eqnarray*}</math>.   
Ponieważ <math>p^\strA\neq\NN</math>, więc <math>\strA\not\models \forall x p\begin{eqnarray*}x\end{eqnarray*}</math>.   
\begin{eqnarray*}Mamy tu do  czynienia ze zdaniem, więc warto¶ciowanie jest nieistotne   
\begin{eqnarray*}Mamy tu do  czynienia ze zdaniem, więc wartościowanie jest nieistotne   
i dlatego je pomijamy.\end{eqnarray*} St±d otrzymujemy   
i dlatego je pomijamy.\end{eqnarray*} Stąd otrzymujemy   
<math>\strA\models \forall x p\begin{eqnarray*}x\end{eqnarray*}\to\forall x q\begin{eqnarray*}x\end{eqnarray*}</math>.   
<math>\strA\models \forall x p\begin{eqnarray*}x\end{eqnarray*}\to\forall x q\begin{eqnarray*}x\end{eqnarray*}</math>.   
Z&nbsp;drugiej strony </math>\strA\not\models   
Z&nbsp;drugiej strony </math>\strA\not\models   
\forall x\begin{eqnarray*}p\begin{eqnarray*}x\end{eqnarray*}\to q\begin{eqnarray*}x\end{eqnarray*}\end{eqnarray*}</math>, ponieważ   
\forall x\begin{eqnarray*}p\begin{eqnarray*}x\end{eqnarray*}\to q\begin{eqnarray*}x\end{eqnarray*}\end{eqnarray*}</math>, ponieważ   
\mbox{<math>\niesa\prooftree \strA}{x:2 \justifies p\begin{eqnarray*}x\end{eqnarray*}\to q\begin{eqnarray*}x\end{eqnarray*}}</math>. \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree  
\mbox{<math>\niesa\prooftree \strA}{x:2 \justifies p\begin{eqnarray*}x\end{eqnarray*}\to q\begin{eqnarray*}x\end{eqnarray*}}</math>. \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree  
Rzeczywi¶cie, \mbox{<math>2\in p^\strA-q^\strA</math>}. %\hfil\qed  
Rzeczywiście, \mbox{<math>2\in p^\strA-q^\strA</math>}. %\hfil\qed  
}}  
}}  


Linia 345: Linia 345:
Dla formuły <math>\var\varphi</math>, termu <math>t</math> i zmiennej <math>x</math>, napis  
Dla formuły <math>\var\varphi</math>, termu <math>t</math> i zmiennej <math>x</math>, napis  
<math>\subst\var\varphi tx</math> oznacza wynik podstawienia <math>t</math> na wszystkie  
<math>\subst\var\varphi tx</math> oznacza wynik podstawienia <math>t</math> na wszystkie  
\textit{wolne} wyst±pienia <math>x</math> w <math>\var\varphi</math>. Wykonywanie takiego podstawienia  
\textit{wolne} wystąpienia <math>x</math> w <math>\var\varphi</math>. Wykonywanie takiego podstawienia  
bez dodatkowych zastrzeżeń może prowadzić do kłopotów.  
bez dodatkowych zastrzeżeń może prowadzić do kłopotów.  
Na przykład sens formuł <math>\forall y \begin{eqnarray*}y \leq x\end{eqnarray*}</math> oraz   
Na przykład sens formuł <math>\forall y \begin{eqnarray*}y \leq x\end{eqnarray*}</math> oraz   
Linia 351: Linia 351:
<math>y</math> w miejsce <math>x</math> w obu tych formułach daje w wyniku odpowiednio   
<math>y</math> w miejsce <math>x</math> w obu tych formułach daje w wyniku odpowiednio   
<math>\forall y \begin{eqnarray*}y \leq y\end{eqnarray*}</math> i <math>\forall z \begin{eqnarray*}z \leq y\end{eqnarray*}</math>, a te dwie formuły   
<math>\forall y \begin{eqnarray*}y \leq y\end{eqnarray*}</math> i <math>\forall z \begin{eqnarray*}z \leq y\end{eqnarray*}</math>, a te dwie formuły   
znacz± całkiem co innego. Przyczyn± jest to, że w pierwszym   
znaczą całkiem co innego. Przyczyną jest to, że w pierwszym   
przypadku zmienn±&nbsp;<math>y</math> wstawiono w&nbsp;zasięg kwantyfikatora&nbsp;<math>\forall y</math>.  
przypadku zmienną&nbsp;<math>y</math> wstawiono w&nbsp;zasięg kwantyfikatora&nbsp;<math>\forall y</math>.  


¬ródłem problemu w powyższym przykładzie było to, że po wykonaniu  
Źródłem problemu w powyższym przykładzie było to, że po wykonaniu  
podstawienia pojawiały się nowe wi±zania kwantyfikatorem. Sugeruje to  
podstawienia pojawiały się nowe wiązania kwantyfikatorem. Sugeruje to  
następuj±c± definicję. Powiemy, że term&nbsp;<math>t</math> jest {\em dopuszczalny} dla  
następującą definicję. Powiemy, że term&nbsp;<math>t</math> jest {\em dopuszczalny} dla  
zmiennej <math>x</math> w formule <math>\var\varphi</math> \begin{eqnarray*}lub, że podstawienie <math>\subst\var\varphi tx</math>  
zmiennej <math>x</math> w formule <math>\var\varphi</math> \begin{eqnarray*}lub, że podstawienie <math>\subst\var\varphi tx</math>  
jest {\em dopuszczalne}\end{eqnarray*} je¶li dla każdej zmiennej <math>y</math>  
jest {\em dopuszczalne}\end{eqnarray*} jeśli dla każdej zmiennej <math>y</math>  
występuj±cej&nbsp;w&nbsp;<math>t</math>, żadne wolne wyst±pienie <math>x</math> w <math>\var\varphi</math> nie jest zawarte   
występującej&nbsp;w&nbsp;<math>t</math>, żadne wolne wystąpienie <math>x</math> w <math>\var\varphi</math> nie jest zawarte   
w&nbsp;zasięgu kwantyfikatora <math>\forall y</math> lub <math>\exists y</math>.  Mamy więc następuj±c±  
w&nbsp;zasięgu kwantyfikatora <math>\forall y</math> lub <math>\exists y</math>.  Mamy więc następującą  
indukcyjn± definicję dopuszczalnego podstawienia,\footnote{Podstawianie   
indukcyjną definicję dopuszczalnego podstawienia,\footnote{Podstawianie   
termu <math>t</math> do termu <math>s</math> na miejsce zmiennej <math>x</math> oznaczamy podobnie:  
termu <math>t</math> do termu <math>s</math> na miejsce zmiennej <math>x</math> oznaczamy podobnie:  
<math>\subst stx</math>. Takie podstawienie jest zawsze wykonalne.} w której  
<math>\subst stx</math>. Takie podstawienie jest zawsze wykonalne.} w której  
Linia 378: Linia 378:




W&nbsp;dalszym ci±gu  
W&nbsp;dalszym ciągu  
będziemy rozważać jedynie podstawienia dopuszczalne.  
będziemy rozważać jedynie podstawienia dopuszczalne.  


\begin{lemat}[o podstawieniu] <span id="lem-pier-1" \>   
\begin{lemat}[o podstawieniu] <span id="lem-pier-1" \>   
Niech <math>\strA</math> będzie dowoln± struktur± oraz <math>\varrho:X\arr A</math> dowolnym  
Niech <math>\strA</math> będzie dowolną strukturą oraz <math>\varrho:X\arr A</math> dowolnym  
warto¶ciowaniem w <math>\strA</math>. Niech <math>t</math> będzie dowolnym termem.  
wartościowaniem w <math>\strA</math>. Niech <math>t</math> będzie dowolnym termem.  
#Dla dowolnego termu <math>s</math> i zmiennej <math>x</math> mamy  
#Dla dowolnego termu <math>s</math> i zmiennej <math>x</math> mamy  
<span id=""/> <math> \sat\strA\varrho{\subst\var\varphi tx}\hspace{1cm}\textrm{\wtw, gdy}\hspace{1cm}  
<span id=""/> <math> \sat\strA\varrho{\subst\var\varphi tx}\hspace{1cm}\textrm{\wtw, gdy}\hspace{1cm}  
Linia 389: Linia 389:
gdzie <math>a=\wartt t\strA\varrho</math>.  
gdzie <math>a=\wartt t\strA\varrho</math>.  


#Dla dowolnej formuły <math>\var\varphi</math>, je¶li term <math>t</math> jest  
#Dla dowolnej formuły <math>\var\varphi</math>, jeśli term <math>t</math> jest  
dopuszczalny dla <math>x</math> w  <math>\var\varphi</math>, to   
dopuszczalny dla <math>x</math> w  <math>\var\varphi</math>, to   
</math>  
</math>  
Linia 396: Linia 396:
\end{lemat}  
\end{lemat}  


\begin{dowodbezqed} Czę¶ć 1 dowodzimy przez indukcję ze względu na  
\begin{dowodbezqed} Część 1 dowodzimy przez indukcję ze względu na  
budowę termu <math>s</math>. Je¶li <math>s</math> jest zmienn± <math>x</math>, to obie strony  
budowę termu <math>s</math>. Jeśli <math>s</math> jest zmienną <math>x</math>, to obie strony  
równe <math>\wartt t\strA\varrho</math>. Je¶li <math>s</math> jest zmienn± <math>y</math> \begin{eqnarray*}różn± od <math>x</math>\end{eqnarray*},   
równe <math>\wartt t\strA\varrho</math>. Jeśli <math>s</math> jest zmienną <math>y</math> \begin{eqnarray*}różną od <math>x</math>\end{eqnarray*},   
to obie strony równe <math>\varrho\begin{eqnarray*}y\end{eqnarray*}</math>. Je¶li <math>s</math> jest   
to obie strony równe <math>\varrho\begin{eqnarray*}y\end{eqnarray*}</math>. Jeśli <math>s</math> jest   
postaci <math>f\begin{eqnarray*}s_1,\ldots,s_n\end{eqnarray*}</math>, to mamy następuj±ce równo¶ci.  
postaci <math>f\begin{eqnarray*}s_1,\ldots,s_n\end{eqnarray*}</math>, to mamy następujące równości.  
\begin{eqnarray*}  
\begin{eqnarray*}  
\wartt {\subst stx}\strA\varrho &=&  
\wartt {\subst stx}\strA\varrho &=&  
Linia 412: Linia 412:
\end{eqnarray*}  
\end{eqnarray*}  


Dowód czę¶ci 2 przeprowadzamy przez indukcję ze względu na budowę  
Dowód części 2 przeprowadzamy przez indukcję ze względu na budowę  
formuły <math>\var\varphi</math>. Je¶li <math>\var\varphi</math>&nbsp;jest  
formuły <math>\var\varphi</math>. Jeśli <math>\var\varphi</math>&nbsp;jest  
postaci <math>\bot</math> to teza jest  
postaci <math>\bot</math> to teza jest  
oczywista. Je¶li <math>\var\varphi</math> jest formuł± atomow±, to  
oczywista. Jeśli <math>\var\varphi</math> jest formułą atomową, to  
tezę natychmiast dostajemy z wyżej\boldsymbol{s}}\def\blank{\hbox{\sf Bdowodnionej czę¶ci 1. Na  
tezę natychmiast dostajemy z wyżej\boldsymbol{s}}\def\blank{\hbox{\sf Bdowodnionej części 1. Na  
przykład, je¶li <math>\var\varphi</math> jest postaci <math>s_1=s_2</math> to mamy:  
przykład, jeśli <math>\var\varphi</math> jest postaci <math>s_1=s_2</math> to mamy:  
\begin{eqnarray*}  
\begin{eqnarray*}  
\sat\strA\varrho{\subst\var\varphi tx} & \textrm{\wtw, gdy} &  
\sat\strA\varrho{\subst\var\varphi tx} & \textrm{\wtw, gdy} &  
Linia 425: Linia 425:
& \textrm{\wtw, gdy} & \sat\str\prooftree \varrho^a_x \justifies s_1=s_2 \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree.  
& \textrm{\wtw, gdy} & \sat\str\prooftree \varrho^a_x \justifies s_1=s_2 \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree.  
\end{eqnarray*}  
\end{eqnarray*}  
Druga z powyższych równoważno¶ci wynika z czę¶ci 1.   
Druga z powyższych równoważności wynika z części 1.   


Krok indukcyjny dla przypadku, gdy <math>\var\varphi</math> jest postaci   
Krok indukcyjny dla przypadku, gdy <math>\var\varphi</math> jest postaci   
<math>\psi\arr\vartheta</math> jest  
<math>\psi\arr\vartheta</math> jest  
oczywisty i pozostawimy go czytelnikowi. Rozważymy przypadek gdy  
oczywisty i pozostawimy go czytelnikowi. Rozważymy przypadek gdy  
<math>\var\varphi</math> jest postaci <math>\forall y\psi</math>. Je¶li zmienne <math>x</math> oraz <math>y</math>
<math>\var\varphi</math> jest postaci <math>\forall y\psi</math>. Jeśli zmienne <math>x</math> oraz <math>y</math>
równe, to <math>x</math> nie występuje wolno w <math>\var\varphi</math> i wówczas teza  
równe, to <math>x</math> nie występuje wolno w <math>\var\varphi</math> i wówczas teza  
wynika natychmiast z Faktu&nbsp;[[#zm-wolne]]. Tak więc  
wynika natychmiast z Faktu&nbsp;[[#zm-wolne]]. Tak więc  
przyjmijmy, że <math>x</math> oraz <math>y</math> różnymi zmiennymi.  
przyjmijmy, że <math>x</math> oraz <math>y</math> różnymi zmiennymi.  
Wówczas  z dopuszczalno¶ci <math>t</math> dla <math>x</math> w <math>\var\varphi</math>  
Wówczas  z dopuszczalności <math>t</math> dla <math>x</math> w <math>\var\varphi</math>  
wynika, że <math>y</math> nie występuje w <math>t</math>. Ponadto <math>\subst\var\varphi tx</math>  
wynika, że <math>y</math> nie występuje w <math>t</math>. Ponadto <math>\subst\var\varphi tx</math>  
jest identyczne z <math>\forall y\subst\psi tx</math>. Mamy następuj±ce
jest identyczne z <math>\forall y\subst\psi tx</math>. Mamy następujące
równoważno¶ci:   
równoważności:   
\begin{eqnarray*}  
\begin{eqnarray*}  
\sat\strA\varrho{\forall y\subst\psi tx} &\textrm{\wtw, gdy} & \mbox{dla  
\sat\strA\varrho{\forall y\subst\psi tx} &\textrm{\wtw, gdy} & \mbox{dla  
Linia 447: Linia 447:
gdzie <math>a'=\wartt t\strA{\varrho^d_y}</math>. Ponieważ <math>y</math> nie występuje w <math>t</math>,  
gdzie <math>a'=\wartt t\strA{\varrho^d_y}</math>. Ponieważ <math>y</math> nie występuje w <math>t</math>,  
więc <math>a'=\wartt t\strA{\varrho^d_y}=\wartt t\strA{\varrho}=a</math>.   
więc <math>a'=\wartt t\strA{\varrho^d_y}=\wartt t\strA{\varrho}=a</math>.   
Skoro zmienne <math>x</math> oraz <math>y</math> różne, to   
Skoro zmienne <math>x</math> oraz <math>y</math> różne, to   
<math>\varrho^{d\: a}_{y\: x}=\varrho^{a\: d}_{x\:y}</math>. Tak więc   
<math>\varrho^{d\: a}_{y\: x}=\varrho^{a\: d}_{x\:y}</math>. Tak więc   
warunek  <math>\sat\strA{\varrho^{d\: a'}_{y\: x}}\psi </math>  
warunek  <math>\sat\strA{\varrho^{d\: a'}_{y\: x}}\psi </math>  
Linia 457: Linia 457:


Natychmiastowym wnioskiem z Lematu&nbsp;[[#lem-pier-1]] jest  
Natychmiastowym wnioskiem z Lematu&nbsp;[[#lem-pier-1]] jest  
następuj±cy przykład tautologii.  
następujący przykład tautologii.  


{{fakt||fa-pier-1|  
{{fakt||fa-pier-1|  
Linia 464: Linia 464:
dopuszczalnego dla <math>x</math> w <math>\var\varphi</math>, formuła   
dopuszczalnego dla <math>x</math> w <math>\var\varphi</math>, formuła   
\[\forall x\var\varphi\arr\subst\var\varphi tx\]  
\[\forall x\var\varphi\arr\subst\var\varphi tx\]  
jest tautologi± logiki pierwszego rzędu.  
jest tautologią logiki pierwszego rzędu.  
}}  
}}  
{{dowod||  
{{dowod||  
Linia 473: Linia 473:
{{fakt||alfa-konw|  
{{fakt||alfa-konw|  


Je¶li zmienna <math>y</math> jest dopuszczalna dla <math>x</math> w <math>\var\varphi</math> oraz   
Jeśli zmienna <math>y</math> jest dopuszczalna dla <math>x</math> w <math>\var\varphi</math> oraz   
<math>y\not\in\fv\var\varphi</math>, to  
<math>y\not\in\fv\var\varphi</math>, to  
\[  
\[  
Linia 492: Linia 492:
Na mocy Przykładu&nbsp;[[#fakt-przyklad-taut]]\begin{eqnarray*}[[#taut2]]\end{eqnarray*} otrzymujemy  
Na mocy Przykładu&nbsp;[[#fakt-przyklad-taut]]\begin{eqnarray*}[[#taut2]]\end{eqnarray*} otrzymujemy  
\rightarrowlikację <math>\to</math>. Odwrotna \rightarrowlikacja wynika z już\boldsymbol{s}}\def\blank{\hbox{\sf Bdowodnionej  
\rightarrowlikację <math>\to</math>. Odwrotna \rightarrowlikacja wynika z już\boldsymbol{s}}\def\blank{\hbox{\sf Bdowodnionej  
\rightarrowlikacji oraz z następuj±cych prostych obserwacji:  
\rightarrowlikacji oraz z następujących prostych obserwacji:  
*Je¶li <math>y</math> jest dopuszczalna dla <math>x</math> w  
*Jeśli <math>y</math> jest dopuszczalna dla <math>x</math> w  
<math>\var\varphi</math>, to <math>x</math> jest dopuszczalna dla <math>y</math> w <math>\subst\var\varphi yx</math>.  
<math>\var\varphi</math>, to <math>x</math> jest dopuszczalna dla <math>y</math> w <math>\subst\var\varphi yx</math>.  
*Je¶li <math>y\not\in\fv\var\varphi</math>, to <math>x</math> nie występuje wolno w  
*Jeśli <math>y\not\in\fv\var\varphi</math>, to <math>x</math> nie występuje wolno w  
<math>\subst\var\varphi yx</math>.  
<math>\subst\var\varphi yx</math>.  
*Wynik podstawienia <math>\subst{\subst\var\varphi yx}xy</math> jest identyczny   
*Wynik podstawienia <math>\subst{\subst\var\varphi yx}xy</math> jest identyczny   
Linia 501: Linia 501:




Fakt&nbsp;[[#alfa-konw]] pozwala zamieniać zmienne zwi±zane dowolnie, tak długo jak  
Fakt&nbsp;[[#alfa-konw]] pozwala zamieniać zmienne związane dowolnie, tak długo jak  
spełnione założenia. W szczególno¶ci je¶li chcemy wykonać podstawienie termu  
spełnione założenia. W szczególności jeśli chcemy wykonać podstawienie termu  
do formuły w sytuacji, gdy ten term nie jest dopuszczalny to wystarczy zamienić  
do formuły w sytuacji, gdy ten term nie jest dopuszczalny to wystarczy zamienić  
nazwy pewnych zmiennych zwi±zanych, tak aby term stał się dopuszczalny.  
nazwy pewnych zmiennych związanych, tak aby term stał się dopuszczalny.  
Łatwo jest\boldsymbol{s}}\def\blank{\hbox{\sf Bogólnić Fakt&nbsp;[[#alfa-konw]]: znaczenie formuły nie\boldsymbol{s}}\def\blank{\hbox{\sf Blega zmianie  
Łatwo jest\boldsymbol{s}}\def\blank{\hbox{\sf Bogólnić Fakt&nbsp;[[#alfa-konw]]: znaczenie formuły nie\boldsymbol{s}}\def\blank{\hbox{\sf Blega zmianie  
także przy wymianie  
także przy wymianie  
zmiennych zwi±zanych kwantyfikatorami wystepuj±cymi
zmiennych związanych kwantyfikatorami wystepującymi
wewn±trz formuły.  
wewnątrz formuły.  


\subsection*{Ćwiczenia}\begin{small}  
\subsection*{Ćwiczenia}\begin{small}  
Linia 522: Linia 522:
##<math>\forall x p\begin{eqnarray*}x,y\end{eqnarray*} \to \exists x q\begin{eqnarray*}x,z\end{eqnarray*}</math>;  
##<math>\forall x p\begin{eqnarray*}x,y\end{eqnarray*} \to \exists x q\begin{eqnarray*}x,z\end{eqnarray*}</math>;  


spełnione przy warto¶ciowaniu <math>v\begin{eqnarray*}y\end{eqnarray*} = 7</math>, <math>v\begin{eqnarray*}z\end{eqnarray*} = 1</math>  
spełnione przy wartościowaniu <math>v\begin{eqnarray*}y\end{eqnarray*} = 7</math>, <math>v\begin{eqnarray*}z\end{eqnarray*} = 1</math>  
w strukturze <math>\strA</math>.  
w strukturze <math>\strA</math>.  


Linia 529: Linia 529:


\hfil <math>f^\strA\begin{eqnarray*}m,n\end{eqnarray*} = \min\begin{eqnarray*}m,n\end{eqnarray*}</math>, dla <math>m,n\in\ZZ</math>, a <math>r^\strA</math> jest   
\hfil <math>f^\strA\begin{eqnarray*}m,n\end{eqnarray*} = \min\begin{eqnarray*}m,n\end{eqnarray*}</math>, dla <math>m,n\in\ZZ</math>, a <math>r^\strA</math> jest   
relacj± <math>\geq</math>;  
relacją <math>\geq</math>;  


\hfil  <math>f^\strB\begin{eqnarray*}m,n\end{eqnarray*} = m^2+n^2</math>, dla <math>m,n\in\ZZ</math>, a <math>r^\strB</math> jest   
\hfil  <math>f^\strB\begin{eqnarray*}m,n\end{eqnarray*} = m^2+n^2</math>, dla <math>m,n\in\ZZ</math>, a <math>r^\strB</math> jest   
relacj± <math>\leq</math>.  
relacją <math>\leq</math>.  


Zbadać czy formuły  
Zbadać czy formuły  
Linia 538: Linia 538:
#<math>\forall y\begin{eqnarray*}\forall x\begin{eqnarray*}r\begin{eqnarray*}z,f\begin{eqnarray*}x,y\end{eqnarray*}\end{eqnarray*}\end{eqnarray*}\to r\begin{eqnarray*}z,y\end{eqnarray*}\end{eqnarray*}</math>,  
#<math>\forall y\begin{eqnarray*}\forall x\begin{eqnarray*}r\begin{eqnarray*}z,f\begin{eqnarray*}x,y\end{eqnarray*}\end{eqnarray*}\end{eqnarray*}\to r\begin{eqnarray*}z,y\end{eqnarray*}\end{eqnarray*}</math>,  


spełnione przy warto¶ciowaniu <math>v\begin{eqnarray*}z\end{eqnarray*} =5</math>, <math>v\begin{eqnarray*}y\end{eqnarray*}=7</math>  
spełnione przy wartościowaniu <math>v\begin{eqnarray*}z\end{eqnarray*} =5</math>, <math>v\begin{eqnarray*}y\end{eqnarray*}=7</math>  
w strukturach <math>\strA</math> i <math>\strB</math>.  
w strukturach <math>\strA</math> i <math>\strB</math>.  


\item Czy formuła <math>\forall x\begin{eqnarray*}\neg r\begin{eqnarray*}x,y\end{eqnarray*}\to\exists z\begin{eqnarray*}r\begin{eqnarray*}f\begin{eqnarray*}x,z\end{eqnarray*},g\begin{eqnarray*}y\end{eqnarray*}\end{eqnarray*}\end{eqnarray*}\end{eqnarray*}</math>  
\item Czy formuła <math>\forall x\begin{eqnarray*}\neg r\begin{eqnarray*}x,y\end{eqnarray*}\to\exists z\begin{eqnarray*}r\begin{eqnarray*}f\begin{eqnarray*}x,z\end{eqnarray*},g\begin{eqnarray*}y\end{eqnarray*}\end{eqnarray*}\end{eqnarray*}\end{eqnarray*}</math>  
jest spełniona przy warto¶ciowaniu <math>v\begin{eqnarray*}x\end{eqnarray*} =3</math>, <math>w\begin{eqnarray*}x\end{eqnarray*} = 6</math> i <math>u\begin{eqnarray*}x\end{eqnarray*} = 14</math>  
jest spełniona przy wartościowaniu <math>v\begin{eqnarray*}x\end{eqnarray*} =3</math>, <math>w\begin{eqnarray*}x\end{eqnarray*} = 6</math> i <math>u\begin{eqnarray*}x\end{eqnarray*} = 14</math>  
#w strukturze <math>\strA = \<\NN, r^\strA\></math>, gdzie <math>r^\strA</math> jest   
#w strukturze <math>\strA = \<\NN, r^\strA\></math>, gdzie <math>r^\strA</math> jest   
relacj± podzielno¶ci?  
relacją podzielności?  
#[\begin{eqnarray*}b\end{eqnarray*}] w strukturze <math>\B = \<\NN, r^\strB\></math>, gdzie <math>r^\strB</math> jest  
#[\begin{eqnarray*}b\end{eqnarray*}] w strukturze <math>\B = \<\NN, r^\strB\></math>, gdzie <math>r^\strB</math> jest  
relacj± przystawania modulo 7?  
relacją przystawania modulo 7?  




Linia 553: Linia 553:
otrzymana przez ,,naiwne'' podstawienie <math>y</math> na <math>x</math>?   
otrzymana przez ,,naiwne'' podstawienie <math>y</math> na <math>x</math>?   


\item Podaj przykład modelu i warto¶ciowania, przy którym formuła   
\item Podaj przykład modelu i wartościowania, przy którym formuła   


\hfil <math>p\begin{eqnarray*}x,f\begin{eqnarray*}x\end{eqnarray*}\end{eqnarray*} \to \forall x\exists y\, p\begin{eqnarray*}f\begin{eqnarray*}y\end{eqnarray*},x\end{eqnarray*}</math>  
\hfil <math>p\begin{eqnarray*}x,f\begin{eqnarray*}x\end{eqnarray*}\end{eqnarray*} \to \forall x\exists y\, p\begin{eqnarray*}f\begin{eqnarray*}y\end{eqnarray*},x\end{eqnarray*}</math>  
Linia 559: Linia 559:
jest:\quad a\end{eqnarray*} spełniona;\quad b\end{eqnarray*} nie spełniona.  
jest:\quad a\end{eqnarray*} spełniona;\quad b\end{eqnarray*} nie spełniona.  


\item Zbadać, czy następuj±ce formuły tautologiami   
\item Zbadać, czy następujące formuły tautologiami   
i czy spełnialne: %%Rozwiazanie: %84%97bc  
i czy spełnialne: %%Rozwiazanie: %84%97bc  
#
#
<math>\exists x\forall y\begin{eqnarray*}p\begin{eqnarray*}x\end{eqnarray*} \vee q\begin{eqnarray*}y\end{eqnarray*}\end{eqnarray*} \to \forall y\begin{eqnarray*}p\begin{eqnarray*}f\begin{eqnarray*}y\end{eqnarray*}\end{eqnarray*}\vee q\begin{eqnarray*}y\end{eqnarray*}\end{eqnarray*}</math>;  
<math>\exists x\forall y\begin{eqnarray*}p\begin{eqnarray*}x\end{eqnarray*} \vee q\begin{eqnarray*}y\end{eqnarray*}\end{eqnarray*} \to \forall y\begin{eqnarray*}p\begin{eqnarray*}f\begin{eqnarray*}y\end{eqnarray*}\end{eqnarray*}\vee q\begin{eqnarray*}y\end{eqnarray*}\end{eqnarray*}</math>;  
Linia 587: Linia 587:
<math>n</math>\Delta\vdashlementów.  
<math>n</math>\Delta\vdashlementów.  


\item Czy je¶li <math>\strA \models \exists x\,\var\varphi</math>, to także  
\item Czy jeśli <math>\strA \models \exists x\,\var\varphi</math>, to także  
<math>\strA \models \var\varphi[t/x]</math>, dla pewnego termu <math>t</math>?</ref>
<math>\strA \models \var\varphi[t/x]</math>, dla pewnego termu <math>t</math>?

Wersja z 12:11, 20 wrz 2006

Język logiki pierwszego rzędu.

Język logiki pierwszego rzędu <ref name="dwa">Logika pierwszego rzędu nazywana jest też rachunkiem predykatów lub rachunkiem kwantyfikatorów.</ref> można traktować jak rozszerzenie rachunku zdań, pozwalaj±ce formułować stwierdzenia o zależno¶ciach pomiędzy obiektami indywiduowymi \begin{eqnarray*}np. relacjach i funkcjach\end{eqnarray*}. Dzięki zastosowaniu {\em kwantyfikatorów\/}, odwołujących się do całej zbiorowości rozważanych obiektów, można w logice pierwszego rzędu wyrażać własności struktur relacyjnych oraz modelować rozumowania dotyczące takich struktur. Do zestawu symboli rachunku zdań dodajemy następujące nowe składniki syntaktyczne:

  • {\em Symbole operacji i relacji\/} \begin{eqnarray*}w tym symbol równości =\end{eqnarray*};
  • {\em Zmienne indywiduowe\/}, których wartości mają przebiegać rozważane

dziedziny;

  • {\em Kwantyfikatory\/}, wiążące zmienne indywiduowe w formułach.


Składnia

Symbole operacji i relacji są podstawowymi składnikami do budowy najprostszych formuł, tzw. \textit{formuł atomowych}. Z tego względu w języku pierwszego rzędu rezygnuje się ze zmiennych zdaniowych.

Definicja

Przez sygnaturę\/ Σ rozumieć będziemy rodzinę zbiorów ΣnF, dla n0 oraz rodzinę zbiorów ΣnR, dla n1. Elementy ΣnF będziemy nazywać {\em symbolami operacji n-ar\-gu\-men\-to\-wych}, a\Delta\vdashlementy ΣnR będziemy nazywać {\em symbolami relacji n-argumentowych}. Przyjmujemy, że wszystkie te zbiory są parami rozłączne. Umawiamy się też, że znak równości = nie należy do Σ. Symbol ten nie jest zwykłym symbolem relacyjnym, ale jest traktowany na specjalnych prawach. W praktyce, sygnatura zwykle jest skończona i zapisuje się ją jako ciąg symboli. Np. ciąg złożony ze znaków +,,0,1 \begin{eqnarray*}o znanej każdemu liczbie argumentów\end{eqnarray*} tworzy sygnaturę języka teorii ciał.

Definicja

Ustalamy pewien nieskończony przeliczalny zbiór Parser nie mógł rozpoznać (nieznana funkcja „\ZI”): {\displaystyle \ZI} symboli, które będziemy nazywać \textit{zmiennymi indywiduowymi} i zwykle oznaczać symbolami x,y,z. Zbiór \textit{termów} Parser nie mógł rozpoznać (nieznana funkcja „\termy”): {\displaystyle \termy} nad sygnaturą Σ i zbiorem zmiennych Parser nie mógł rozpoznać (nieznana funkcja „\ZI”): {\displaystyle \ZI} definiujemy indukcyjnie:

  • Zmienne indywiduowe są termami.
  • Dla każdego n0 i każdego symbolu operacji fΣnF, jeśli

t1,,tn są termami, to Parser nie mógł rozpoznać (błąd składni): {\displaystyle f\begin{eqnarray*}t_1,\ldots,t_n\end{eqnarray*}} jest też termem.

Zauważmy, że z powyższej definicji wynika iż stałe sygnatury Σ \begin{eqnarray*}czyli symbole operacji zeroargumentowych\end{eqnarray*} są termami.

Definicja

Dla każdego termu Parser nie mógł rozpoznać (nieznana funkcja „\termy”): {\displaystyle t\in\termy} definiujemy zbiór Parser nie mógł rozpoznać (nieznana funkcja „\fv”): {\displaystyle \fv t} zmiennych występujących\/ w t. Definicja jest indukcyjna:

  • Parser nie mógł rozpoznać (nieznana funkcja „\fv”): {\displaystyle \fv x=\{x\}} .
  • Parser nie mógł rozpoznać (nieznana funkcja „\fv”): {\displaystyle \fv {f\begin{eqnarray*}t_1,\ldots, t_n\end{eqnarray*}}=\bigcup_{i=1}^n \fv{t_i}} .


Definicja

Następnie zdefiniujemy \textit{formuły atomowe} języka pierwszego rzędu.

  • Symbol fałszu jest formułą atomową.
  • Dla każdego n1, każdego symbolu rΣnR relacji

n-argumentowej, oraz dla dowolnych termów Parser nie mógł rozpoznać (nieznana funkcja „\termy”): {\displaystyle t_1,\ldots,t_n\in\termy} , napis Parser nie mógł rozpoznać (błąd składni): {\displaystyle r\begin{eqnarray*}t_1,\ldots,t_n\end{eqnarray*}} jest formułą atomową.

  • Dla dowolnych termów t1,t2, napis Parser nie mógł rozpoznać (błąd składni): {\displaystyle \begin{eqnarray*}t_1=t_2\end{eqnarray*}} jest formułą atomową.

Konwencja: Niektóre dwuargumentowe symbole relacyjne \begin{eqnarray*}np. \end{eqnarray*} i funkcyjne \begin{eqnarray*}np. +,\end{eqnarray*} są zwyczajowo pisane pomiędzy argumentami. Na przykład formułę atomową Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\leq}\begin{eqnarray*}x,y\end{eqnarray*}} zwykle piszemy jako ,,xy.

Definicja

\textit{Formuły} nad sygnaturą Σ i zbiorem zmiennych indywiduowych Parser nie mógł rozpoznać (nieznana funkcja „\ZI”): {\displaystyle \ZI} definiujemy indukcyjnie.

  • Każda formuła atomowa jest formułą.
  • Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi,\psi} są formułami, to Parser nie mógł rozpoznać (błąd składni): {\displaystyle \begin{eqnarray*}\var\varphi\to\psi\end{eqnarray*}}

jest też formułą.

  • Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest formułą a Parser nie mógł rozpoznać (nieznana funkcja „\ZI”): {\displaystyle x\in\ZI} jest zmienną indywiduową, to

Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \forall x\var\varphi} jest też formułą.

Ponadto, dla każdej formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} definiujemy zbiór \textit{zmiennych wolnych} Parser nie mógł rozpoznać (nieznana funkcja „\fv”): {\displaystyle \fv\var\varphi} występujących w tej formule:

  • Parser nie mógł rozpoznać (nieznana funkcja „\fv”): {\displaystyle \fv\bot=\emptyset} ;
  • Parser nie mógł rozpoznać (nieznana funkcja „\fv”): {\displaystyle \fv{r\begin{eqnarray*}t_1,\ldots,t_n\end{eqnarray*}} =\bigcup_{i=1}^n \fv{t_i}} ;
  • Parser nie mógł rozpoznać (nieznana funkcja „\fv”): {\displaystyle \fv{t_1=t_2}=\fv{t_1}\cup\fv{t_2}} ;
  • Parser nie mógł rozpoznać (nieznana funkcja „\fv”): {\displaystyle \fv{\var\varphi\to\psi}=\fv\var\varphi\cup\fv\psi} ;
  • Parser nie mógł rozpoznać (nieznana funkcja „\fv”): {\displaystyle \fv{\forall x\var\varphi}=\fv\var\varphi-\{x\}} .

Formułę bez kwantyfikatorów nazywamy formułą otwartą\/. Natomiast formuła bez zmiennych wolnych nazywa się \textit{zdaniem}, lub formułą zamkniętą\/.

Negację, koniunkcję, alternatywę, symbol prawdy i równoważność formuł definiujemy podobnie jak w przypadku rachunku zdań. Kwantyfikator\Delta\vdashgzystencjalny zdefiniujemy jako skrót notacyjny przy pomocy \textit{uogólnionego prawa De Morgana}: Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \exists x\var\varphi \hspace{1cm} \textrm{oznacza} \hspace{1cm} \neg\forall x \neg\var\varphi. }

\text\\seml Zmienne wolne a zmienne związane. \semr W Definicji #def-form nie zakładamy, że Parser nie mógł rozpoznać (nieznana funkcja „\fv”): {\displaystyle x\in\fv\var\varphi} . Zauważmy też, że zmienna x może występować w formule Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} podczas gdy Parser nie mógł rozpoznać (nieznana funkcja „\fv”): {\displaystyle x\not\in\fv\var\varphi} . Przez \textit{wystąpienie} zmiennej indywiduowej x rozumiemy tu zwykłe pojawienie się x w jakimkolwiek termie w Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} . I tak na przykład w formule\footnote{Zakładamy tu, że s oraz r są symbolami relacji.} Parser nie mógł rozpoznać (nieznana funkcja „\def”): {\displaystyle \exists x\forall\boldsymbol{s}}\def\blank{\hbox{\sf B\begin{eqnarray*}r\begin{eqnarray*}x,y\end{eqnarray*}\to \forall y\exists x\,s\begin{eqnarray*}x,y,z\end{eqnarray*}\end{eqnarray*}} zmienna u nie występuje, podczas gdy x i y wystepują po dwa razy, a z występuje jeden raz. Bardzo ważną rzeczą jest rozróżnienie wystąpień zmiennych \textit{wolnych} i \textit{związanych} w formułach. Wszystkie wystąpienia zmiennych w formułach atomowych są wolne. Wolne \begin{eqnarray*}związane\end{eqnarray*} wystąpienia w formułach \mbox{Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi}ψ} pozostają wolne \begin{eqnarray*}związane\end{eqnarray*} w formule Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\to\psi} . Wszystkie wolne wystąpienia x w Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} stają się związanymi wystąpieniami w formule Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \exists x\var\varphi} \begin{eqnarray*}związanymi przez dopisanie kwantyfikatora \end{eqnarray*}, a charakter pozostałych wystąpień jest taki sam w </math>\var\varphiiw\exists x\var\varphi</math>. Przykładowo w formule </math>\exists x\forall\boldsymbol{s}}\def\blank{\hbox{\sf B\begin{eqnarray*}r\begin{eqnarray*}x,\underline{y}\end{eqnarray*}\to \forall y\exists x\,s\begin{eqnarray*}x,y,z\end{eqnarray*}\end{eqnarray*}</math> podkreślone wystąpienie y jest wolne, a nie podkreślone jest związane. Obydwa wystąpienia x są zwiazane, ale przez różne kwantyfikatory.

Na koniec\boldsymbol{s}}\def\blank{\hbox{\sf Bwaga o nazwach zmiennych związanych. Rozróżnienie pomiędzy zmiennymi wolnymi a związanymi jest analogiczne do rozróżnenia pomiedzy identyfikatorami lokalnymi a globalnymi w językach programowania. Globalne identyfikatory, widoczne na zewnątrz, odpowiadają zmiennym wolnym, podczas gdy lokalne identyfikatory \begin{eqnarray*}związane np. deklaracją w bloku\end{eqnarray*} nie są widoczne na zewnątrz zakresu ich deklaracji. Intuicyjnie naturalne jest oczekiwanie, że zmiana zmiennej związanej na inną zmienną \begin{eqnarray*}tak aby nie wprowadzić konfliktu wynikającego ze zmiany struktury wiązań\end{eqnarray*} nie powinna zmieniać znaczenia formuły.\footnote{Taka zamiana zmiennych bywa nazywana α-\textit{konwersją}.} Tak w istocie będzie, jak się przekonamy poniżej \begin{eqnarray*}Fakt #alfa-konw\end{eqnarray*}.

Semantyka formuł

Niech Σ będzie sygnaturą. {\em Struktura} Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA} nad sygnaturą Σ \begin{eqnarray*}lub po prostu Σ-struktura\end{eqnarray*} to niepusty zbiór A, zwany {\em nośnikiem}, wraz z interpretacją każdego symbolu operacji fΣnF jako funkcji n argumentowej Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle f^{\strA}:A^n\to A} oraz każdego symbolu relacji rΣnR jako relacji n-argumentowej Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle r^{\strA}\subseteq A^n} . \begin{eqnarray*}Na przykład, jeśli Σ składa się z jednego symbolu relacji dwuargumentowej, to każdy graf zorientowany jest Σ-strukturą.\end{eqnarray*} W praktyce, strukturę relacyjną przedstawia się jako krotkę postaci Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA = \<A, f_1^\strA,\ldots,f_n^\strA,r_1^\strA,\ldots, r_m^\strA\>} , gdzie f1,,fn,r1,,rm są wszystkimi symbolami danej sygnatury. Często, gdy będzie jasne z kontekstu z jaką strukturą mamy do czynienia, będziemy opuszczać nazwę struktury i pisać po prostu r,f, zamiast Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle r^\strA, f^\strA,\dots}


{\em Wartościowaniem} w Σ-strukturze Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA} nazwiemy dowolną funkcję ϱ:XA. Dla wartościowania ϱ, zmiennej Parser nie mógł rozpoznać (nieznana funkcja „\ZI”): {\displaystyle x\in\ZI} oraz\Delta\vdashlementu aA definiujemy nowe wartościowanie ϱxa:XA, będące modyfikacją wartościowania ϱ na argumencie x, w następujący sposób,

Parser nie mógł rozpoznać (błąd składni): {\displaystyle \varrho_x^a\begin{eqnarray*}y\end{eqnarray*}=\przypadk\prooftree \varrho\begin{eqnarray*}y\end{eqnarray*}}{<math>y\neq x} \justifies a \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree </math>

Najpierw zdefiniujemy znaczenie termów. Wartość termu Parser nie mógł rozpoznać (nieznana funkcja „\termy”): {\displaystyle t\in\termy} w Σ-strukturze Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA} przy wartościowaniu ϱ oznaczamy przez Parser nie mógł rozpoznać (nieznana funkcja „\wartt”): {\displaystyle \wartt t\strA\varrho} , lub Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz t\varrho} , gdy Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA} jest znane. Definicja jest indukcyjna:

  • Parser nie mógł rozpoznać (nieznana funkcja „\wartt”): {\displaystyle \wartt x\strA\varrho=\varrho\begin{eqnarray*}x\end{eqnarray*}} .
  • </math>\wartt {f\begin{eqnarray*}t_1,\ldots,t_n\end{eqnarray*}}\strA\varrho= f^\strA\begin{eqnarray*}\wartt

{t_1}\strA\varrho,\ldots,\wartt {t_1}\strA\varrho\end{eqnarray*}</math>.


Znaczenie formuł definiujemy poniżej. Napis Parser nie mógł rozpoznać (nieznana funkcja „\sat”): {\displaystyle \sat\strA\varrho\var\varphi. } czytamy: formuła Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest spełniona\/ w strukturze Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA} przy wartościowaniu ϱ. Zakładamy tu, że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} oraz Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA} są nad tą samą sygnaturą. Spełnianie definiujemy przez indukcję ze względu na budowę formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} .

  • Nie zachodzi Parser nie mógł rozpoznać (nieznana funkcja „\sat”): {\displaystyle \sat\strA\varrho\bot} .
  • Dla dowolnego n1, rΣnR oraz dla dowolnych termów

t1,,tn, przyjmujemy, że Parser nie mógł rozpoznać (nieznana funkcja „\sat”): {\displaystyle \sat\strA\varrho{r\begin{eqnarray*}t_1,\ldots,t_n\end{eqnarray*}}} \wtw, gdy </math>\<\\\seml t_1}^{\strA}_{\varrho \semr, \ldots\\\seml t_1}^{\strA}_{\varrho}\>\in r^{\strA \semr</math>.

  • </math>\sa\prooftree \strA}{\varrho \justifies t_1=t_2}Parser nie mógł rozpoznać (nieznana funkcja „\wtw”): {\displaystyle , \wtw, gdy } \\seml t_1 \using \textrm{\begin{eqnarray*}W\end{eqnarray*} \semr\endprooftree_\varrho^\strA=

\\seml t_2 \semr_\varrho^\strA</math>.

  • Parser nie mógł rozpoznać (nieznana funkcja „\sa”): {\displaystyle \sa\prooftree \strA}{\varrho \justifies \var\varphi\to\psi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree} , gdy nie zachodzi

Parser nie mógł rozpoznać (nieznana funkcja „\sa”): {\displaystyle \sa\prooftree \strA}{\varrho \justifies \var\varphi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree} lub zachodzi \mbox{Parser nie mógł rozpoznać (nieznana funkcja „\sa”): {\displaystyle \sa\prooftree \strA}{\varrho \justifies \psi}} \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree.

  • Parser nie mógł rozpoznać (nieznana funkcja „\sa”): {\displaystyle \sa\prooftree \strA}{\varrho \justifies \forall x\var\varphi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree} \wtw, gdy dla dowolnego aA

zachodzi Parser nie mógł rozpoznać (nieznana funkcja „\sa”): {\displaystyle \sa\prooftree \strA}{\varrho_x^a \justifies \var\varphi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree} .


Nastepujące twierdzenie pokazuje, że spełnianie formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} w dowolnej strukturze zależy jedynie od wartości zmiennych wolnych Parser nie mógł rozpoznać (nieznana funkcja „\fv”): {\displaystyle \fv\var\varphi} . Uzasadnia ono następującą konwencję notacyjną: napiszemy na przykład Parser nie mógł rozpoznać (nieznana funkcja „\sa”): {\displaystyle \sa\prooftree \strA}{x:a,y:b \justifies \var\varphi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree} zamiast Parser nie mógł rozpoznać (nieznana funkcja „\sa”): {\displaystyle \sa\prooftree \strA}{\varrho \justifies \var\varphi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree} , gdy Parser nie mógł rozpoznać (błąd składni): {\displaystyle \varrho\begin{eqnarray*}x\end{eqnarray*}=a}Parser nie mógł rozpoznać (błąd składni): {\displaystyle \varrho\begin{eqnarray*}y\end{eqnarray*}=b} , a przy tym wiadomo, że w formule Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} występują wolno tylko zmienne xy. Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest zdaniem, to wartościowanie można całkiem pominąć.

Fakt

Dla dowolnej Σ-struktury Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA} i dowolnej formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jeśli wartościowania ϱ i ϱ przyjmują równe wartości dla wszystkich zmiennych wolnych w Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} , to \[ \sat\strA\varrho\var\varphi \hspace{1cm} {\textrm \wtw, gdy}\hspace{1cm} \sat\strA{\varrho'}\var\varphi. \]

Dowód

{{{3}}}

Prawdziwość i spełnialność formuł

Powiemy, że formuła Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi } jest spełnialna w Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA} \/, gdy istnieje wartościowanie ϱ w strukturze Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA} takie, że zachodzi Parser nie mógł rozpoznać (nieznana funkcja „\sat”): {\displaystyle \sat\strA\varrho\var\varphi} . Formuła Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest {\em spełnialna}, gdy istnieje struktura Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA} , w której Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest spełnialna.

Formuła Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest {\em prawdziwa} w Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA} , gdy dla każdego wartościowania ϱ w Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA} zachodzi Parser nie mógł rozpoznać (nieznana funkcja „\sat”): {\displaystyle \sat\strA\varrho\var\varphi} . W tym przypadku mówimy też, że Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA} jest {\em modelem} dla formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} \begin{eqnarray*}oznaczamy to przez Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA\models\var\varphi} \end{eqnarray*}. Dla zbioru formuł Γ i Σ-struktury Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA} powiemy, że Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA} jest modelem dla Γ \begin{eqnarray*}oznaczamy Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA\models\Gamma} \end{eqnarray*}, gdy dla każdej formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\in\Gamma} , zachodzi Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA\models\var\varphi} . Formuła Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest {\em tautologią} \begin{eqnarray*}oznaczamy to przez Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \models\var\varphi} \end{eqnarray*}, gdy jest ona prawdziwa w każdej Σ-strukturze.

Oczywiście jeśli weźmiemy dowolną tautologię rachunku zdań to po podstawieniu na miejsce zmiennych zdaniowych dowolnych formuł logiki pierwszego rzędu dostaniemy tautologię logiki pierwszego rzędu. Poniżej podajemy przykłady tautologii logiki pierwszego rzedu, których nie da się w ten sposób otrzymać.

Fakt

{{{3}}}

Dowód

{{{3}}}

\endprooftree. Z dowolności

a

mamy

Parser nie mógł rozpoznać (nieznana funkcja „\sa”): {\displaystyle \sa\prooftree \strA}{\varrho \justifies \forall x\,\psi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree} , a stąd \mbox{</math>\sa\prooftree \strA \justifies \varrho \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree{\forall x\begin{eqnarray*}\var\varphi\to\psi\end{eqnarray*}\to\begin{eqnarray*}\forall x\var\varphi\to \forall x\psi\end{eqnarray*}}</math>}.

Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\niesa”): {\displaystyle \niesa\prooftree \strA}{\varrho \justifies \forall x\begin{eqnarray*}\var\varphi\to\psi\end{eqnarray*} \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree} lub Parser nie mógł rozpoznać (nieznana funkcja „\niesa”): {\displaystyle \niesa\prooftree \strA}{\varrho \justifies \forall x\,\var\varphi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree} , to nasza formuła jest spełniona przez ϱ wprost z definicji. Uzasadnienie części \begin{eqnarray*}#taut2a--#taut5\end{eqnarray*} pozostawiamy czytelnikowi. }}

Ponadto mamy następujący Fakt

Dla dowolnej tautologii </math>\var\varphiidowolnejzmiennejxParser nie mógł rozpoznać (błąd składni): {\displaystyle , formuła } \forall x\var\varphi</math> jest też tautologią.

Dowód

{{{3}}}

Uzasadnienie, że dana formuła jest tautologią polega na analizie jej spełniania w dowolnych modelach \begin{eqnarray*}por. Fakt #fakt-przyklad-taut\end{eqnarray*}. Natomiast wykazanie, że tak nie jest polega na podaniu odpowiedniego kontrprzykładu. Takiego jak ten:

Przykład

\forall x\begin{eqnarray*}p\begin{eqnarray*}x\end{eqnarray*}\to q\begin{eqnarray*}x\end{eqnarray*}\end{eqnarray*}</math> nie jest tautologią. Rozpatrzmy bowiem model Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA = \<\NN, p^\strA, q^\strA\>} , w którym:

  • Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle n\in p^\strA} , \wtw, gdy n jest parzyste;
  • Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle n\in q^\strA} , \wtw, gdy n jest nieparzyste;


Ponieważ Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle p^\strA\neq\NN} , więc Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA\not\models \forall x p\begin{eqnarray*}x\end{eqnarray*}} . \begin{eqnarray*}Mamy tu do czynienia ze zdaniem, więc wartościowanie jest nieistotne i dlatego je pomijamy.\end{eqnarray*} Stąd otrzymujemy Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA\models \forall x p\begin{eqnarray*}x\end{eqnarray*}\to\forall x q\begin{eqnarray*}x\end{eqnarray*}} . Z drugiej strony </math>\strA\not\models \forall x\begin{eqnarray*}p\begin{eqnarray*}x\end{eqnarray*}\to q\begin{eqnarray*}x\end{eqnarray*}\end{eqnarray*}</math>, ponieważ

\mbox{Parser nie mógł rozpoznać (nieznana funkcja „\niesa”): {\displaystyle \niesa\prooftree \strA}{x:2 \justifies p\begin{eqnarray*}x\end{eqnarray*}\to q\begin{eqnarray*}x\end{eqnarray*}}} . \using \textrm{\begin{eqnarray*}W\end{eqnarray*

\endprooftree

Rzeczywiście, \mbox{Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle 2\in p^\strA-q^\strA} }. %\hfil\qed }}

Podstawianie termów

Dla formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} , termu t i zmiennej x, napis Parser nie mógł rozpoznać (nieznana funkcja „\subst”): {\displaystyle \subst\var\varphi tx} oznacza wynik podstawienia t na wszystkie \textit{wolne} wystąpienia x w Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} . Wykonywanie takiego podstawienia bez dodatkowych zastrzeżeń może prowadzić do kłopotów. Na przykład sens formuł Parser nie mógł rozpoznać (błąd składni): {\displaystyle \forall y \begin{eqnarray*}y \leq x\end{eqnarray*}} oraz Parser nie mógł rozpoznać (błąd składni): {\displaystyle \forall z \begin{eqnarray*}z \leq x\end{eqnarray*}} jest taki sam. Tymczasem ,,naiwne podstawienie y w miejsce x w obu tych formułach daje w wyniku odpowiednio Parser nie mógł rozpoznać (błąd składni): {\displaystyle \forall y \begin{eqnarray*}y \leq y\end{eqnarray*}} i Parser nie mógł rozpoznać (błąd składni): {\displaystyle \forall z \begin{eqnarray*}z \leq y\end{eqnarray*}} , a te dwie formuły znaczą całkiem co innego. Przyczyną jest to, że w pierwszym przypadku zmienną y wstawiono w zasięg kwantyfikatora y.

Źródłem problemu w powyższym przykładzie było to, że po wykonaniu podstawienia pojawiały się nowe wiązania kwantyfikatorem. Sugeruje to następującą definicję. Powiemy, że term t jest {\em dopuszczalny} dla zmiennej x w formule Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} \begin{eqnarray*}lub, że podstawienie Parser nie mógł rozpoznać (nieznana funkcja „\subst”): {\displaystyle \subst\var\varphi tx} jest {\em dopuszczalne}\end{eqnarray*} jeśli dla każdej zmiennej y występującej w t, żadne wolne wystąpienie x w Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} nie jest zawarte w zasięgu kwantyfikatora y lub y. Mamy więc następującą indukcyjną definicję dopuszczalnego podstawienia,\footnote{Podstawianie termu t do termu s na miejsce zmiennej x oznaczamy podobnie: Parser nie mógł rozpoznać (nieznana funkcja „\subst”): {\displaystyle \subst stx} . Takie podstawienie jest zawsze wykonalne.} w której każda lewa strona jest dopuszczalna pod warunkiem, że prawa strona jest dopuszczalna.

  • Parser nie mógł rozpoznać (nieznana funkcja „\subst”): {\displaystyle \subst\bot tx = \bot} , gdy Parser nie mógł rozpoznać (błąd składni): {\displaystyle x\not\in FV\begin{eqnarray*}\var\varphi\end{eqnarray*}} ;
  • </math>\subst{r\begin{eqnarray*}t_1,\ldots,t_n\end{eqnarray*}}tx =

r\begin{eqnarray*}\subst{t_1}tx,\ldots,\subst{t_n}tx\end{eqnarray*}</math>;

  • </math>\subst{\begin{eqnarray*}t_1=t_2\end{eqnarray*}}tx =

\begin{eqnarray*}\subst{t_1}tx=\subst{t_2}tx\end{eqnarray*}</math>;

  • Parser nie mógł rozpoznać (nieznana funkcja „\subst”): {\displaystyle \subst{\begin{eqnarray*}\var\varphi\to\psi\end{eqnarray*}}tx = \subst\var\varphi tx\to\subst\psi tx} ;
  • Parser nie mógł rozpoznać (nieznana funkcja „\subst”): {\displaystyle \subst{\begin{eqnarray*}\forall x\,\var\varphi\end{eqnarray*}}tx = \forall x\,\var\varphi} ;
  • Parser nie mógł rozpoznać (nieznana funkcja „\subst”): {\displaystyle \subst{\begin{eqnarray*}\forall y\,\var\varphi\end{eqnarray*}}tx = \forall y\,\subst\var\varphi tx} ,

gdy y=x, oraz Parser nie mógł rozpoznać (błąd składni): {\displaystyle y\not\in FV\begin{eqnarray*}t\end{eqnarray*}} ;

  • W pozostałych przypadkach podstawienie jest niedopuszczalne.


W dalszym ciągu będziemy rozważać jedynie podstawienia dopuszczalne.

\begin{lemat}[o podstawieniu] Niech Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA} będzie dowolną strukturą oraz Parser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle \varrho:X\arr A} dowolnym wartościowaniem w Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA} . Niech t będzie dowolnym termem.

  1. Dla dowolnego termu s i zmiennej x mamy

Parser nie mógł rozpoznać (nieznana funkcja „\sat”): {\displaystyle \sat\strA\varrho{\subst\var\varphi tx}\hspace{1cm}\textrm{\wtw, gdy}\hspace{1cm} gdzie <math>a=\wartt t\strA\varrho} .

  1. Dla dowolnej formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} , jeśli term t jest

dopuszczalny dla x w Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} , to </math> gdzie Parser nie mógł rozpoznać (nieznana funkcja „\wartt”): {\displaystyle a=\wartt t\strA\varrho} .

\end{lemat}

\begin{dowodbezqed} Część 1 dowodzimy przez indukcję ze względu na budowę termu s. Jeśli s jest zmienną x, to obie strony są równe Parser nie mógł rozpoznać (nieznana funkcja „\wartt”): {\displaystyle \wartt t\strA\varrho} . Jeśli s jest zmienną y \begin{eqnarray*}różną od x\end{eqnarray*}, to obie strony są równe Parser nie mógł rozpoznać (błąd składni): {\displaystyle \varrho\begin{eqnarray*}y\end{eqnarray*}} . Jeśli s jest postaci Parser nie mógł rozpoznać (błąd składni): {\displaystyle f\begin{eqnarray*}s_1,\ldots,s_n\end{eqnarray*}} , to mamy następujące równości. \begin{eqnarray*} \wartt {\subst stx}\strA\varrho &=& \wartt {f\begin{eqnarray*}\subst {s_1}tx,\ldots, \subst {s_n}tx\end{eqnarray*}}\strA\varrho \\ &=& f^\strA\begin{eqnarray*}\wartt{\subst{s_1}tx}\strA\varrho,\ldots, \wartt{\subst{s_n}tx}\strA\varrho\end{eqnarray*} \\ & =& f^\strA\begin{eqnarray*}\wartt{s_1}\strA{\varrho^a_x},\ldots, \wartt{s_n}\strA{\varrho^a_x}\end{eqnarray*} \\ & = & \wartt{f\begin{eqnarray*}s_1,\ldots,s_n\end{eqnarray*}}\strA{\varrho^a_x}= \wartt s\strA {\varrho^a_x}. \end{eqnarray*}

Dowód części 2 przeprowadzamy przez indukcję ze względu na budowę formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} . Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi}  jest postaci to teza jest oczywista. Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest formułą atomową, to tezę natychmiast dostajemy z wyżej\boldsymbol{s}}\def\blank{\hbox{\sf Bdowodnionej części 1. Na przykład, jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest postaci s1=s2 to mamy: \begin{eqnarray*} \sat\strA\varrho{\subst\var\varphi tx} & \textrm{\wtw, gdy} & \wartt{\subst{s_1}tx}\strA\varrho= \wartt{\subst{s_1}tx}\strA\varrho\\ & \textrm{\wtw, gdy} & \wartt{s_1}\strA{\varrho^a_x}=\wartt{s_2}\strA{\varrho^a_x}\\ & \textrm{\wtw, gdy} & \sat\str\prooftree \varrho^a_x \justifies s_1=s_2 \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree. \end{eqnarray*} Druga z powyższych równoważności wynika z części 1.

Krok indukcyjny dla przypadku, gdy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest postaci Parser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle \psi\arr\vartheta} jest oczywisty i pozostawimy go czytelnikowi. Rozważymy przypadek gdy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest postaci yψ. Jeśli zmienne x oraz y są równe, to x nie występuje wolno w Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} i wówczas teza wynika natychmiast z Faktu #zm-wolne. Tak więc przyjmijmy, że x oraz y są różnymi zmiennymi. Wówczas z dopuszczalności t dla x w Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} wynika, że y nie występuje w t. Ponadto Parser nie mógł rozpoznać (nieznana funkcja „\subst”): {\displaystyle \subst\var\varphi tx} jest identyczne z Parser nie mógł rozpoznać (nieznana funkcja „\subst”): {\displaystyle \forall y\subst\psi tx} . Mamy następujące równoważności: \begin{eqnarray*} \sat\strA\varrho{\forall y\subst\psi tx} &\textrm{\wtw, gdy} & \mbox{dla każdego } d\in A,\ \sat\str\prooftree \varrho^d_y \justifies \subst\psi tx \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree \\ & \textrm{\wtw, gdy} & \mbox{dla każdego } d\in A, \ \sat\strA{\varrho^{d\: a'}_{y\: x}}\psi, \end{eqnarray*} gdzie Parser nie mógł rozpoznać (nieznana funkcja „\wartt”): {\displaystyle a'=\wartt t\strA{\varrho^d_y}} . Ponieważ y nie występuje w t, więc Parser nie mógł rozpoznać (nieznana funkcja „\wartt”): {\displaystyle a'=\wartt t\strA{\varrho^d_y}=\wartt t\strA{\varrho}=a} . Skoro zmienne x oraz y są różne, to Parser nie mógł rozpoznać (błąd składni): {\displaystyle \varrho^{d\: a}_{y\: x}=\varrho^{a\: d}_{x\:y}} . Tak więc warunek Parser nie mógł rozpoznać (nieznana funkcja „\sat”): {\displaystyle \sat\strA{\varrho^{d\: a'}_{y\: x}}\psi } jest równoważny warunkowi Parser nie mógł rozpoznać (nieznana funkcja „\sat”): {\displaystyle \sat\strA{\varrho^{a\: d}_{x\: y}}\psi} , dla każdego dA. Czyli

\hfil\hfil\hfil Parser nie mógł rozpoznać (nieznana funkcja „\sat”): {\displaystyle \sat\str\prooftree \varrho^a_x \justifies \forall y\psi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree} .\hfil\qed\hfil \end{dowodbezqed}

Natychmiastowym wnioskiem z Lematu #lem-pier-1 jest następujący przykład tautologii.

Fakt

Dla dowolnej formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} , zmiennej x i termu t dopuszczalnego dla x w Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} , formuła \[\forall x\var\varphi\arr\subst\var\varphi tx\] jest tautologią logiki pierwszego rzędu.

Dowód

{{{3}}}

Fakt

Jeśli zmienna y jest dopuszczalna dla x w Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} oraz Parser nie mógł rozpoznać (nieznana funkcja „\fv”): {\displaystyle y\not\in\fv\var\varphi} , to \[ \models\begin{eqnarray*}\forall x\var\varphi\end{eqnarray*}\\leftrightarrow \begin{eqnarray*}\forall y \subst\var\varphi yx\end{eqnarray*}. \]

\begin{dowodbezqed} Z Faktu #fa-pier-1 oraz Faktu #fakt-gen otrzymujemy Parser nie mógł rozpoznać (błąd składni): {\displaystyle \models\forall y\begin{eqnarray*}\forall x\var\varphi\to\subst\var\varphi yx\end{eqnarray*}. } Zatem na mocy Faktu #fakt-przyklad-taut\begin{eqnarray*}#taut1\end{eqnarray*} wnioskujemy, że Parser nie mógł rozpoznać (błąd składni): {\displaystyle \models\begin{eqnarray*}\forall y\forall x\var\varphi\end{eqnarray*}\to\begin{eqnarray*}\forall y\subst\var\varphi yx\end{eqnarray*}. } Na mocy Przykładu #fakt-przyklad-taut\begin{eqnarray*}#taut2\end{eqnarray*} otrzymujemy \rightarrowlikację . Odwrotna \rightarrowlikacja wynika z już\boldsymbol{s}}\def\blank{\hbox{\sf Bdowodnionej \rightarrowlikacji oraz z następujących prostych obserwacji:

  • Jeśli y jest dopuszczalna dla x w

Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} , to x jest dopuszczalna dla y w Parser nie mógł rozpoznać (nieznana funkcja „\subst”): {\displaystyle \subst\var\varphi yx} .

  • Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\fv”): {\displaystyle y\not\in\fv\var\varphi} , to x nie występuje wolno w

Parser nie mógł rozpoznać (nieznana funkcja „\subst”): {\displaystyle \subst\var\varphi yx} .

  • Wynik podstawienia Parser nie mógł rozpoznać (nieznana funkcja „\subst”): {\displaystyle \subst{\subst\var\varphi yx}xy} jest identyczny

Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} .\hfil\qed


Fakt #alfa-konw pozwala zamieniać zmienne związane dowolnie, tak długo jak są spełnione założenia. W szczególności jeśli chcemy wykonać podstawienie termu do formuły w sytuacji, gdy ten term nie jest dopuszczalny to wystarczy zamienić nazwy pewnych zmiennych związanych, tak aby term stał się dopuszczalny. Łatwo jest\boldsymbol{s}}\def\blank{\hbox{\sf Bogólnić Fakt #alfa-konw: znaczenie formuły nie\boldsymbol{s}}\def\blank{\hbox{\sf Blega zmianie także przy wymianie zmiennych związanych kwantyfikatorami wystepującymi wewnątrz formuły.

\subsection*{Ćwiczenia}\begin{small}

  1. Niech Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA =\<\NN, p^\strA, q^\strA\>} , gdzie:

\hfil Parser nie mógł rozpoznać (błąd składni): {\displaystyle \<a,b\>\in p^\strA} \wtw, gdy a+b6;\hfil

\hfil Parser nie mógł rozpoznać (błąd składni): {\displaystyle \<a,b\>\in q^\strA} \wtw, gdy b=a+2.

Zbadać czy formuły

    1. Parser nie mógł rozpoznać (błąd składni): {\displaystyle \forall x p\begin{eqnarray*}x,y\end{eqnarray*} \to \exists x q\begin{eqnarray*}x,y\end{eqnarray*}} ;
    2. Parser nie mógł rozpoznać (błąd składni): {\displaystyle \forall x p\begin{eqnarray*}x,y\end{eqnarray*} \to \forall x q\begin{eqnarray*}x,y\end{eqnarray*}} ;
    3. Parser nie mógł rozpoznać (błąd składni): {\displaystyle \forall x p\begin{eqnarray*}x,y\end{eqnarray*} \to \exists x q\begin{eqnarray*}x,z\end{eqnarray*}} ;

są spełnione przy wartościowaniu Parser nie mógł rozpoznać (błąd składni): {\displaystyle v\begin{eqnarray*}y\end{eqnarray*} = 7} , Parser nie mógł rozpoznać (błąd składni): {\displaystyle v\begin{eqnarray*}z\end{eqnarray*} = 1} w strukturze Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA} .

\item Niech Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA = \<\ZZ, f^\strA, r^\strA\>} i Parser nie mógł rozpoznać (nieznana funkcja „\strB”): {\displaystyle \strB = \<\ZZ, f^\strB, r^\strB\>} , gdzie

\hfil Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle f^\strA\begin{eqnarray*}m,n\end{eqnarray*} = \min\begin{eqnarray*}m,n\end{eqnarray*}} , dla Parser nie mógł rozpoznać (nieznana funkcja „\ZZ”): {\displaystyle m,n\in\ZZ} , a Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle r^\strA} jest relacją ;

\hfil Parser nie mógł rozpoznać (nieznana funkcja „\strB”): {\displaystyle f^\strB\begin{eqnarray*}m,n\end{eqnarray*} = m^2+n^2} , dla Parser nie mógł rozpoznać (nieznana funkcja „\ZZ”): {\displaystyle m,n\in\ZZ} , a Parser nie mógł rozpoznać (nieznana funkcja „\strB”): {\displaystyle r^\strB} jest relacją .

Zbadać czy formuły

  1. Parser nie mógł rozpoznać (błąd składni): {\displaystyle \forall y\begin{eqnarray*}\forall x\begin{eqnarray*}r\begin{eqnarray*}z,f\begin{eqnarray*}x,y\end{eqnarray*}\end{eqnarray*}\to r\begin{eqnarray*}z,y\end{eqnarray*}\end{eqnarray*}\end{eqnarray*}} ;
  2. Parser nie mógł rozpoznać (błąd składni): {\displaystyle \forall y\begin{eqnarray*}\forall x\begin{eqnarray*}r\begin{eqnarray*}z,f\begin{eqnarray*}x,y\end{eqnarray*}\end{eqnarray*}\end{eqnarray*}\to r\begin{eqnarray*}z,y\end{eqnarray*}\end{eqnarray*}} ,

są spełnione przy wartościowaniu Parser nie mógł rozpoznać (błąd składni): {\displaystyle v\begin{eqnarray*}z\end{eqnarray*} =5} , Parser nie mógł rozpoznać (błąd składni): {\displaystyle v\begin{eqnarray*}y\end{eqnarray*}=7} w strukturach Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA} i Parser nie mógł rozpoznać (nieznana funkcja „\strB”): {\displaystyle \strB} .

\item Czy formuła Parser nie mógł rozpoznać (błąd składni): {\displaystyle \forall x\begin{eqnarray*}\neg r\begin{eqnarray*}x,y\end{eqnarray*}\to\exists z\begin{eqnarray*}r\begin{eqnarray*}f\begin{eqnarray*}x,z\end{eqnarray*},g\begin{eqnarray*}y\end{eqnarray*}\end{eqnarray*}\end{eqnarray*}\end{eqnarray*}} jest spełniona przy wartościowaniu Parser nie mógł rozpoznać (błąd składni): {\displaystyle v\begin{eqnarray*}x\end{eqnarray*} =3} , Parser nie mógł rozpoznać (błąd składni): {\displaystyle w\begin{eqnarray*}x\end{eqnarray*} = 6} i Parser nie mógł rozpoznać (błąd składni): {\displaystyle u\begin{eqnarray*}x\end{eqnarray*} = 14}

  1. w strukturze Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA = \<\NN, r^\strA\>} , gdzie Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle r^\strA} jest

relacją podzielności?

  1. [\begin{eqnarray*}b\end{eqnarray*}] w strukturze Parser nie mógł rozpoznać (nieznana funkcja „\B”): {\displaystyle \B = \<\NN, r^\strB\>} , gdzie Parser nie mógł rozpoznać (nieznana funkcja „\strB”): {\displaystyle r^\strB} jest

relacją przystawania modulo 7?


\item W jakich strukturach prawdziwa jest formuła Parser nie mógł rozpoznać (błąd składni): {\displaystyle \exists y \begin{eqnarray*}y\neq x\end{eqnarray*}} ? A formuła Parser nie mógł rozpoznać (błąd składni): {\displaystyle \exists y \begin{eqnarray*}y\neq y\end{eqnarray*}} otrzymana przez ,,naiwne podstawienie y na x?

\item Podaj przykład modelu i wartościowania, przy którym formuła

\hfil Parser nie mógł rozpoznać (błąd składni): {\displaystyle p\begin{eqnarray*}x,f\begin{eqnarray*}x\end{eqnarray*}\end{eqnarray*} \to \forall x\exists y\, p\begin{eqnarray*}f\begin{eqnarray*}y\end{eqnarray*},x\end{eqnarray*}}

jest:\quad a\end{eqnarray*} spełniona;\quad b\end{eqnarray*} nie spełniona.

\item Zbadać, czy następujące formuły są tautologiami i czy są spełnialne: %%Rozwiazanie: %84%97bc

Parser nie mógł rozpoznać (błąd składni): {\displaystyle \exists x\forall y\begin{eqnarray*}p\begin{eqnarray*}x\end{eqnarray*} \vee q\begin{eqnarray*}y\end{eqnarray*}\end{eqnarray*} \to \forall y\begin{eqnarray*}p\begin{eqnarray*}f\begin{eqnarray*}y\end{eqnarray*}\end{eqnarray*}\vee q\begin{eqnarray*}y\end{eqnarray*}\end{eqnarray*}} ;

  1. Parser nie mógł rozpoznać (błąd składni): {\displaystyle \forall y\begin{eqnarray*}p\begin{eqnarray*}f\begin{eqnarray*}y\end{eqnarray*}\end{eqnarray*}\vee q\begin{eqnarray*}y\end{eqnarray*}\end{eqnarray*} \to \exists x\forall y\begin{eqnarray*}p\begin{eqnarray*}x\end{eqnarray*} \vee q\begin{eqnarray*}y\end{eqnarray*}\end{eqnarray*}} ;
  2. %97b

Parser nie mógł rozpoznać (błąd składni): {\displaystyle \exists x\begin{eqnarray*}\forall y q\begin{eqnarray*}y\end{eqnarray*}\to p\begin{eqnarray*}x\end{eqnarray*}\end{eqnarray*}\to \exists x\forall y\begin{eqnarray*}q\begin{eqnarray*}y\end{eqnarray*}\to p\begin{eqnarray*}x\end{eqnarray*}\end{eqnarray*}} ;

  1. %97c

Parser nie mógł rozpoznać (błąd składni): {\displaystyle \exists x\begin{eqnarray*}\forall y q\begin{eqnarray*}y\end{eqnarray*}\to p\begin{eqnarray*}x\end{eqnarray*}\end{eqnarray*} \to\exists x\begin{eqnarray*}q\begin{eqnarray*}x\end{eqnarray*}\to p\begin{eqnarray*}x\end{eqnarray*}\end{eqnarray*}} .


\item Niech f będzie jednoargumentowym symbolem funkcyjnym, który nie występuje w formule Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} . Pokazać, że formuła Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \forall x\exists y \var\varphi} jest spełnialna wtedy i tylko wtedy gdy formuła Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \forall x \var\varphi[f\begin{eqnarray*}x\end{eqnarray*}/y]} jest spełnialna.

\item Udowodnić, że zdanie

\hfil </math>\forall x\exists y\,p\begin{eqnarray*}x,y\end{eqnarray*}\wedge \forall x\neg p\begin{eqnarray*}x,x\end{eqnarray*} \wedge \forall x\forall y\forall z\begin{eqnarray*}p\begin{eqnarray*}x,y\end{eqnarray*}\wedge p\begin{eqnarray*}y,z\end{eqnarray*}\to p\begin{eqnarray*}x,z\end{eqnarray*}\end{eqnarray*}</math>.

ma tylko modele nieskończone.

\item Dla każdego n napisać takie zdanie Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi_n} , że Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA\models\var\varphi_n} zachodzi \wtw, gdy Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA} ma dokładnie n\Delta\vdashlementów.

\item Czy jeśli Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA \models \exists x\,\var\varphi} , to także Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA \models \var\varphi[t/x]} , dla pewnego termu t?