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)
Linia 208: Linia 208:
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  
\[
\sat\mathfrak A\varrho\var\varphi \hspace{1cm} {\textrm \wtw, gdy}\hspace{1cm}
\sat\mathfrak A{\varrho'}\var\varphi.
\]
}}
{{dowod||


<center> <math> (\mathfrak A,\varrho) \vDash\var\varphi </math>  wtedy i tylko wtedy, gdy  <math> ( \mathfrak A, \varrho') \vDash\var\varphi. </math></center>
{{dowod|||
Ćwiczenie.
}}
}}



Wersja z 17:28, 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 (np. relacjach i funkcjach). Dzięki zastosowaniu 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:

  • Symbole operacji i relacji (w tym symbol równości =);
  • Zmienne indywiduowe, których wartości mają przebiegać rozważane dziedziny;
  • Kwantyfikatory, wiążące zmienne indywiduowe w formułach.


Składnia

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

Definicja 2.1

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-argumentowych}, aelementy ΣnR będziemy nazywać 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 (o znanej każdemu liczbie argumentów) tworzy sygnaturę języka teorii ciał.

Definicja 2.2

Ustalamy pewien nieskończony przeliczalny zbiór X symboli, które będziemy nazywać zmiennymi indywiduowymi i zwykle oznaczać symbolami x,y,z. Zbiór termów TΣ(X) nad sygnaturą Σ i zbiorem zmiennych X definiujemy indukcyjnie:

  • Zmienne indywiduowe są termami.
  • Dla każdego n0 i każdego symbolu operacji fΣnF, jeśli t1,,tn są termami, to f(t1,,tn) jest też termem.

Zauważmy, że z powyższej definicji wynika iż stałe sygnatury Σ (czyli symbole operacji zeroargumentowych) są termami.

Definicja 2.3

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

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


Definicja 2.4

Następnie zdefiniujemy 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 t1,,tnTΣ(X), napis r(t1,,tn) jest formułą atomową.
  • Dla dowolnych termów t1,t2, napis (t1=t2) jest formułą atomową.

Konwencja: Niektóre dwuargumentowe symbole relacyjne (np. ) i funkcyjne (np. +,) są zwyczajowo pisane pomiędzy argumentami. Na przykład formułę atomową (x,y) zwykle piszemy jako ,,xy.

Definicja 2.5

Formuły nad sygnaturą Σ i zbiorem zmiennych indywiduowych X 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ć (nieznana funkcja „\var”): {\displaystyle (\var\varphi\to\psi)} jest też formułą.
  • Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest formułą a xX 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 zmiennych wolnych Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle FV\var\varphi} występujących w tej formule:

  • FV=;
  • FVr(t1,,tn)=i=1nFVti;
  • Parser nie mógł rozpoznać (nieznana funkcja „\cupFV”): {\displaystyle FV{t_1=t_2}=FV{t_1}\cupFV{t_2}} ;
  • Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle FV{\var\varphi\to\psi}=FV\var\varphi\cup FV\psi} ;
  • Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\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 egzystencjalny zdefiniujemy jako skrót notacyjny przy pomocy 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. }


Zmienne wolne a zmienne związane. W Definicji 2.5 nie zakładamy, że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\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 „\var”): {\displaystyle x\not\in FV\var\varphi} . Przez 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 <ref name="trzy">Zakładamy tu, że s oraz r są symbolami relacji.</ref> xu(r(x,y)yxs(x,y,z)) 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 wolnych i związanych w formułach. Wszystkie wystąpienia zmiennych w formułach atomowych są wolne. Wolne (związane) wystąpienia w formułach Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi}ψ pozostają wolne (związane) 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} (związanymi przez dopisanie kwantyfikatora ), a charakter pozostałych wystąpień jest taki sam w Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} i w Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \exists x\var\varphi} .

Przykładowo w formule xu(r(x,y_)yxs(x,y,z)) 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 uwaga 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 (związane np. deklaracją w bloku) nie są widoczne na zewnątrz zakresu ich deklaracji. Intuicyjnie naturalne jest oczekiwanie, że zmiana zmiennej związanej na inną zmienną (tak aby nie wprowadzić konfliktu wynikającego ze zmiany struktury wiązań) nie powinna zmieniać znaczenia formuły.<ref name="cztery">Taka zamiana zmiennych bywa nazywana α-konwersją.</ref> Tak w istocie będzie, jak się przekonamy poniżej (Fakt 2.12).

Semantyka formuł

Niech Σ będzie sygnaturą. Struktura 𝔄 nad sygnaturą Σ (lub po prostu Σ-struktura) to niepusty zbiór A, zwany 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 r𝔄An. (Na przykład, jeśli Σ składa się z jednego symbolu relacji dwuargumentowej, to każdy graf zorientowany jest Σ-strukturą.) W praktyce, strukturę relacyjną przedstawia się jako krotkę postaci Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mathfrak A = \<A, f_1^\mathfrak A,\ldots,f_n^\mathfrak A,r_1^\mathfrak A,\ldots, r_m^\mathfrak A\>} , 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 r𝔄,f𝔄,


Wartościowaniem w Σ-strukturze 𝔄 nazwiemy dowolną funkcję ϱ:XA. Dla wartościowania ϱ, zmiennej xX orazelementu 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ć (nieznana funkcja „\begin{cases}”): {\displaystyle \varrho_x^a(y)= \begin{cases} \varrho(y)}, \mbox{jeśli} y\neq x \\ a, \mbox{w przeciwnym wypadku} \end{cases}}


Najpierw zdefiniujemy znaczenie termów. Wartość termu tTΣ(X) w Σ-strukturze 𝔄 przy wartościowaniu ϱ oznaczamy przez [[t]]ϱ𝔄, lub [[t]]ϱ, gdy 𝔄 jest znane. Definicja jest indukcyjna:

  • [[x]]ϱ𝔄=ϱ(x).
  • [[f(t1,,tn)]]ϱ𝔄=f𝔄([[t1]]𝔄ϱ,,[[t1]]ϱ𝔄).

Znaczenie formuł definiujemy poniżej. Napis

Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle (\mathfrak A , \varrho ) \vDash \var\varphi. }

czytamy: formuła Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest spełniona w strukturze 𝔄 przy wartościowaniu ϱ. Zakładamy tu, że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} oraz 𝔄 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 (𝔄,ϱ).
  • Dla dowolnego n1, rΣnR oraz dla dowolnych termów t1,,tn, przyjmujemy, że (𝔄,ϱ)r(t1,,tn) wtedy i tylko wtedy, gdy Parser nie mógł rozpoznać (błąd składni): {\displaystyle \langle [[t_1]]^{\mathfrak A}_\varrho, \ldots [[t_2]]^{\mathfrak A}_\varrho \rangle \in r^{\mathfrak A } .
  • (𝔄,ϱ)t1=t2, wtedy i tylko wtedy, gdy [[t1]]ϱ𝔄=[[t2]]ϱ𝔄
  • Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle (\mathfrak A , \varrho ) \vDash \var\varphi \to \psi } , gdy nie zachodzi (𝔄,ϱ)φ lub zachodzi (𝔄,ϱ)ψ
  • Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle (\mathfrak A , \varrho ) \vDash \forall x\var\varphi } wtedy i tylko wtedy, gdy dla dowolnego aA zachodzi (𝔄,ϱxa)φ


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 „\var”): {\displaystyle FV(\var\varphi)} . Uzasadnia ono następującą konwencję notacyjną: napiszemy na przykład Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle ( \mathfrak A , x:a,y:b ) \vDash \var\varphi } zamiast Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle (\mathfrak A, \varrho )\vDash \var\varphi } , gdy ϱ(x)=aϱ(y)=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 2.6

{{{3}}}

\psi,

) 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{(W)}\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(\forall x\var\varphi)\\leftrightarrow (\forall y \subst\var\varphi yx). \]

\begin{dowodbezqed} Z Faktu #fa-pier-1 oraz Faktu #fakt-gen otrzymujemy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \models\forall y(\forall x\var\varphi\to\subst\var\varphi yx). } Zatem na mocy Faktu #fakt-przyklad-taut(#taut1) wnioskujemy, że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \models(\forall y\forall x\var\varphi)\to(\forall y\subst\var\varphi yx). } Na mocy Przykładu #fakt-przyklad-taut(#taut2) otrzymujemy \rightarrowlikację . Odwrotna \rightarrowlikacja wynika z już udowodnionej \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 uogólnić Fakt #alfa-konw: znaczenie formuły nie ulega 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. xp(x,y)xq(x,y);
    2. xp(x,y)xq(x,y);
    3. xp(x,y)xq(x,z);

są spełnione przy wartościowaniu v(y)=7, v(z)=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(m,n) = \min(m,n)} , 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(m,n) = 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. y(x(r(z,f(x,y))r(z,y)));
  2. y(x(r(z,f(x,y)))r(z,y)),

są spełnione przy wartościowaniu v(z)=5, v(y)=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 x(¬r(x,y)z(r(f(x,z),g(y)))) jest spełniona przy wartościowaniu v(x)=3, w(x)=6 i u(x)=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. [(b)] 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 y(yx)? A formuła y(yy) otrzymana przez ,,naiwne podstawienie y na x?

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

\hfil p(x,f(x))xyp(f(y),x)

jest:\quad a) spełniona;\quad b) nie spełniona.

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

xy(p(x)q(y))y(p(f(y))q(y));

  1. y(p(f(y))q(y))xy(p(x)q(y));
  2. %97b

x(yq(y)p(x))xy(q(y)p(x));

  1. %97c

x(yq(y)p(x))x(q(x)p(x)).


\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(x)/y]} jest spełnialna.

\item Udowodnić, że zdanie

\hfil </math>\forall x\exists y\,p(x,y)\wedge \forall x\neg p(x,x) \wedge \forall x\forall y\forall z(p(x,y)\wedge p(y,z)\to p(x,z))</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 nelementó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?