Logika dla informatyków/Logika w informatyce: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Aneczka (dyskusja | edycje)
Nie podano opisu zmian
Aneczka (dyskusja | edycje)
Nie podano opisu zmian
Linia 13: Linia 13:
===Zdaniowe logiki trójwartościowe===
===Zdaniowe logiki trójwartościowe===


Logika klasyczna, o której mowa w Wykładzie 1, jest \textit{logiką
Logika klasyczna, o której mowa w Wykładzie 1, jest ‘‘logiką
dwuwartościową}.   
dwuwartościową}.   


Pierwsze \textit{logiki trójwartościowe} skonstruowali niezależnie od  
Pierwsze ‘‘logiki trójwartościowe} skonstruowali niezależnie od  
siebie polski logik Jan Łukasiewicz i amerykański \begin{eqnarray*}ale\boldsymbol{s}}\def\blank{\hbox{\sf Brodzony w  
siebie polski logik Jan Łukasiewicz i amerykański (aleurodzony w  
Augustowie\end{eqnarray*} logik i matematyk Emil Post. Motywacje Posta były raczej  
Augustowie)logik i matematyk Emil Post. Motywacje Posta były raczej  
kombinatoryczne, natomiast Łukasiewicz swoją konstrukcję poparł  
kombinatoryczne, natomiast Łukasiewicz swoją konstrukcję poparł  
głębokim wywodem filozoficznym.  Argumentował między innymi, że zdania  
głębokim wywodem filozoficznym.  Argumentował między innymi, że zdania  
Linia 30: Linia 30:
tworzyć, tylko odtwarzać coś już zdeterminowanego.  
tworzyć, tylko odtwarzać coś już zdeterminowanego.  


Łukasiewicz wierzył głęboko w wolną wolę i twórczość, więc\boldsymbol{s}}\def\blank{\hbox{\sf Bważał, że  
Łukasiewicz wierzył głęboko w wolną wolę i twórczość, więcuważał, że  
\fi   
\fi   
Aby logika mogła jakoś zdać sprawę ze statusu zdań o przyszłości,  
Aby logika mogła jakoś zdać sprawę ze statusu zdań o przyszłości,  
Linia 66: Linia 66:




a następnie ich\boldsymbol{s}}\def\blank{\hbox{\sf Bżycie  
a następnie ichużycie  




Linia 140: Linia 140:


Przy takiej deklaracji, tabela \verb+A+ będzie mogła w kolumnie  
Przy takiej deklaracji, tabela \verb+A+ będzie mogła w kolumnie  
\verb+valid+ zawierać \textit{trzy} wartości logiczne: \verb+TRUE+,  
\verb+valid+ zawierać ‘‘trzy} wartości logiczne: \verb+TRUE+,  
\verb+FALSE+ i \verb+NULL+, a logika trójwartościowa objawi swoje  
\verb+FALSE+ i \verb+NULL+, a logika trójwartościowa objawi swoje  
działanie przy wykonaniu np.\ zapytania   
działanie przy wykonaniu np.\ zapytania   
Linia 192: Linia 192:
{{definicja||zesiesmieliJ|  
{{definicja||zesiesmieliJ|  


\textit{Zbiór formuł zdaniowej logiki trójwartościowej} to zbiór tych  
‘‘Zbiór formuł zdaniowej logiki trójwartościowej} to zbiór tych  
formuł zdaniowej logiki klasycznej \begin{eqnarray*}patrz Definicja [[#radamalpa]], w  
formuł zdaniowej logiki klasycznej (patrz Definicja [[#radamalpa]], w  
których występują tylko  spójniki <math>\lnot,\lor</math> i <math>\land.</math>  
których występują tylko  spójniki <math>\lnot,\lor</math> i <math>\land.</math>  


Linia 207: Linia 207:
trójwartościowaniu&nbsp;<math>\varrho</math> oznaczamy przez <math>\wfz\alpha\varrho</math> i  
trójwartościowaniu&nbsp;<math>\varrho</math> oznaczamy przez <math>\wfz\alpha\varrho</math> i  
określamy przez indukcję:  
określamy przez indukcję:  
*<math>\wf\prooftree p \justifies \varrho \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree=\varrho\begin{eqnarray*}p\end{eqnarray*}</math>, gdy <math>p</math> jest symbolem zdaniowym;  
*<math>\wf\prooftree p \justifies \varrho \using \textrm{(W\end{eqnarray*}}\endprooftree=\varrho(p\end{eqnarray*}</math>, gdy <math>p</math> jest symbolem zdaniowym;  
*<math>\wfz{\neg\alpha}\varrho=F_\lnot\begin{eqnarray*}\wfz{\alpha}\varrho\end{eqnarray*}</math>;  
*<math>\wfz{\neg\alpha}\varrho=F_\lnot(\wfz{\alpha}\varrho\end{eqnarray*}</math>;  
*</math>\wf\prooftree \alpha\lor\beta \justifies \varrho \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree=F_\land\begin{eqnarray*}\wf\prooftree \alpha \justifies \varrho \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree,  
*</math>\wf\prooftree \alpha\lor\beta \justifies \varrho \using \textrm{(W\end{eqnarray*}}\endprooftree=F_\land(\wf\prooftree \alpha \justifies \varrho \using \textrm{(W\end{eqnarray*}}\endprooftree,  
\wf\prooftree \beta \justifies \varrho \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree\end{eqnarray*}</math>;  
\wf\prooftree \beta \justifies \varrho \using \textrm{(W\end{eqnarray*}}\endprooftree\end{eqnarray*}</math>;  
*</math>\wf\prooftree \alpha\land\beta \justifies \varrho \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree=F_\lor\begin{eqnarray*}\wf\prooftree \alpha \justifies \varrho \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree,  
*</math>\wf\prooftree \alpha\land\beta \justifies \varrho \using \textrm{(W\end{eqnarray*}}\endprooftree=F_\lor(\wf\prooftree \alpha \justifies \varrho \using \textrm{(W\end{eqnarray*}}\endprooftree,  
\wf\prooftree \beta \justifies \varrho \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree\end{eqnarray*}</math>;  
\wf\prooftree \beta \justifies \varrho \using \textrm{(W\end{eqnarray*}}\endprooftree\end{eqnarray*}</math>;  
*<math>\wf\prooftree \lnot\alpha \justifies \varrho \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree=F_\lnot\begin{eqnarray*}\wfz\alpha\varrho\end{eqnarray*}.</math>  
*<math>\wf\prooftree \lnot\alpha \justifies \varrho \using \textrm{(W\end{eqnarray*}}\endprooftree=F_\lnot(\wfz\alpha\varrho\end{eqnarray*}.</math>  


}}  
}}  
Linia 229: Linia 229:


\conn{F_\lor}0\mbox{\rm\texttt<}\frac12\mbox{\rm\texttt>}11\mbox{\rm\texttt<}\frac12\mbox{\rm\texttt>}1\ \ \   
\conn{F_\lor}0\mbox{\rm\texttt<}\frac12\mbox{\rm\texttt>}11\mbox{\rm\texttt<}\frac12\mbox{\rm\texttt>}1\ \ \   
{\begi\prooftree array \justifies |c|c| \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree\hline   
{\begi\prooftree array \justifies |c|c| \using \textrm{(W\end{eqnarray*}}\endprooftree\hline   
\multicolum\prooftree 2}{|c| \justifies F_\lnot \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree \\\hline\hline x&\\\hline 0&1\\\hline  
\multicolum\prooftree 2}{|c| \justifies F_\lnot \using \textrm{(W\end{eqnarray*}}\endprooftree \\\hline\hline x&\\\hline 0&1\\\hline  
1&0\\\hline{\frac12}&{\frac12}\\\hline\end{array}}  
1&0\\\hline{\frac12}&{\frac12}\\\hline\end{array}}  
</math>  
</math>  
Linia 242: Linia 242:
Warto zauważyć, że w  przypadku tej logiki  zachodzą równości   
Warto zauważyć, że w  przypadku tej logiki  zachodzą równości   
*<math>\wfz{\neg\alpha}\varrho=1-\wfz{\alpha}\varrho</math>,  
*<math>\wfz{\neg\alpha}\varrho=1-\wfz{\alpha}\varrho</math>,  
*</math>\wf\prooftree \alpha\vee\beta \justifies \varrho \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree=\max\{\wf\prooftree \alpha \justifies \varrho \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree,  
*</math>\wf\prooftree \alpha\vee\beta \justifies \varrho \using \textrm{(W\end{eqnarray*}}\endprooftree=\max\{\wf\prooftree \alpha \justifies \varrho \using \textrm{(W\end{eqnarray*}}\endprooftree,  
\wf\prooftree \beta \justifies \varrho}\ \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>,  
\wf\prooftree \beta \justifies \varrho}\ \using \textrm{(W\end{eqnarray*}}\endprooftree</math>,  
*</math>\wf\prooftree \alpha\wedge\beta \justifies \varrho \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree=\min\{\wf\prooftree \alpha \justifies \varrho \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree,  
*</math>\wf\prooftree \alpha\wedge\beta \justifies \varrho \using \textrm{(W\end{eqnarray*}}\endprooftree=\min\{\wf\prooftree \alpha \justifies \varrho \using \textrm{(W\end{eqnarray*}}\endprooftree,  
\wf\prooftree \beta \justifies \varrho}\ \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>,  
\wf\prooftree \beta \justifies \varrho}\ \using \textrm{(W\end{eqnarray*}}\endprooftree</math>,  


znane z Definicji [[#zesiesmieli]], tak więc mozna ją traktować jako  
znane z Definicji [[#zesiesmieli]], tak więc mozna ją traktować jako  
literalne\boldsymbol{s}}\def\blank{\hbox{\sf Bogólnienie logiki klasycznej.  
literalneuogólnienie logiki klasycznej.  


Zachowanie stałych i operacji logicznych w języku SQL rządzi się  
Zachowanie stałych i operacji logicznych w języku SQL rządzi się  
Linia 256: Linia 256:
Zupełnie inną logikę zaproponował Bochvar:  
Zupełnie inną logikę zaproponował Bochvar:  


<span id=""/> <math> \conn{F_\land}0\mbox{\rm\texttt<}\frac12}0\prooftree \frac12}{\frac12 \justifies \frac12 \using \textrm{\begin{eqnarray*}W\end{eqnarray*}\mbox{\rm\texttt>}\endprooftree\ \ \  
<span id=""/> <math> \conn{F_\land}0\mbox{\rm\texttt<}\frac12}0\prooftree \frac12}{\frac12 \justifies \frac12 \using \textrm{(W\end{eqnarray*}\mbox{\rm\texttt>}\endprooftree\ \ \  


\conn{F_\lor}0\mbox{\rm\texttt<}\frac12}1\prooftree \frac12}{\frac12 \justifies \frac12 \using \textrm{\begin{eqnarray*}W\end{eqnarray*}\mbox{\rm\texttt>}\endprooftree\ \ \  
\conn{F_\lor}0\mbox{\rm\texttt<}\frac12}1\prooftree \frac12}{\frac12 \justifies \frac12 \using \textrm{(W\end{eqnarray*}\mbox{\rm\texttt>}\endprooftree\ \ \  
{\begi\prooftree array \justifies |c|c| \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree\hline   
{\begi\prooftree array \justifies |c|c| \using \textrm{(W\end{eqnarray*}}\endprooftree\hline   
\multicolum\prooftree 2}{|c| \justifies F_\lnot \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree \\\hline\hline x&\\\hline 0&1\\\hline  
\multicolum\prooftree 2}{|c| \justifies F_\lnot \using \textrm{(W\end{eqnarray*}}\endprooftree \\\hline\hline x&\\\hline 0&1\\\hline  
1&0\\\hline{\frac12}&{\frac12}\\\hline\end{array}}  
1&0\\\hline{\frac12}&{\frac12}\\\hline\end{array}}  
</math>  
</math>  
Linia 269: Linia 269:
błąd.  
błąd.  


Dalej mamy dość\Delta\vdashgzotycznie wyglądającą logikę Sobocińskiego:  
Dalej mamy dośćegzotycznie wyglądającą logikę Sobocińskiego:  




<span id=""/> <math> \conn{F_\land}00001101\ \ \ \ \conn{F_\lor}01011101\ \ \ \   
<span id=""/> <math> \conn{F_\land}00001101\ \ \ \ \conn{F_\lor}01011101\ \ \ \   


{\begi\prooftree array \justifies |c|c| \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree\hline   
{\begi\prooftree array \justifies |c|c| \using \textrm{(W\end{eqnarray*}}\endprooftree\hline   
\multicolum\prooftree 2}{|c| \justifies F_\lnot \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree \\\hline\hline x&\\\hline 0&1\\\hline  
\multicolum\prooftree 2}{|c| \justifies F_\lnot \using \textrm{(W\end{eqnarray*}}\endprooftree \\\hline\hline x&\\\hline 0&1\\\hline  
1&0\\\hline{\frac12}&{\frac12}\\\hline\end{array}}  
1&0\\\hline{\frac12}&{\frac12}\\\hline\end{array}}  
</math>  
</math>  
Linia 283: Linia 283:
stosujemy tę logikę przy okazji wypełniania różnych formularzy i  
stosujemy tę logikę przy okazji wypełniania różnych formularzy i  
kwestionariuszy. Odpowiadając na różne pytania sformułowane ,,tak lub  
kwestionariuszy. Odpowiadając na różne pytania sformułowane ,,tak lub  
nie'' w niektórych polach na odpowiedzi\boldsymbol{s}}\def\blank{\hbox{\sf Bmieszczamy ,,nie dotyczy'' a  
nie'' w niektórych polach na odpowiedziumieszczamy ,,nie dotyczy'' a  
potem podpisujemy się pod dokumentem mimo ostrzeżenia ,,Świadomy/ma  
potem podpisujemy się pod dokumentem mimo ostrzeżenia ,,Świadomy/ma  
odpowiedzialności karnej za składanie fałszywych zeznań \dots  
odpowiedzialności karnej za składanie fałszywych zeznań \dots  
Linia 298: Linia 298:
sposób krótki:  
sposób krótki:  


<span id=""/> <math> \conn{F_\land}0000\prooftree \frac12}{\frac12 \justifies \frac12 \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree\ \ \  
<span id=""/> <math> \conn{F_\land}0000\prooftree \frac12}{\frac12 \justifies \frac12 \using \textrm{(W\end{eqnarray*}}\endprooftree\ \ \  


\conn{F_\lor}0\mbox{\rm\texttt<}\frac12}11\prooftree \frac12 \justifies \frac12 \using \textrm{\begin{eqnarray*}W\end{eqnarray*}\mbox{\rm\texttt>}\endprooftree\ \ \  
\conn{F_\lor}0\mbox{\rm\texttt<}\frac12}11\prooftree \frac12 \justifies \frac12 \using \textrm{(W\end{eqnarray*}\mbox{\rm\texttt>}\endprooftree\ \ \  
{\begi\prooftree array \justifies |c|c| \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree\hline   
{\begi\prooftree array \justifies |c|c| \using \textrm{(W\end{eqnarray*}}\endprooftree\hline   
\multicolum\prooftree 2}{|c| \justifies F_\lnot \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree \\\hline\hline x&\\\hline 0&1\\\hline  
\multicolum\prooftree 2}{|c| \justifies F_\lnot \using \textrm{(W\end{eqnarray*}}\endprooftree \\\hline\hline x&\\\hline 0&1\\\hline  
1&0\\\hline{\frac12}&{\frac12}\\\hline\end{array}}  
1&0\\\hline{\frac12}&{\frac12}\\\hline\end{array}}  
</math>  
</math>  
Linia 337: Linia 337:
aktywnej.  
aktywnej.  


Na potrzeby niniejszego rozważania zakładamy i\boldsymbol{s}}\def\blank{\hbox{\sf Bstalamy skończoną  
Na potrzeby niniejszego rozważania zakładamy iustalamy skończoną  
sygnaturę <math>\Sigma,</math> złożoną wyłącznie z symboli relacji i stałych, jak  
sygnaturę <math>\Sigma,</math> złożoną wyłącznie z symboli relacji i stałych, jak  
to zwykle ma miejsce w bazach danych.  
to zwykle ma miejsce w bazach danych.  
Linia 344: Linia 344:
{{definicja|||  
{{definicja|||  


Tytułem przypomnienia \begin{eqnarray*}Czytelnik powinien znać algebrę relacyjną z  
Tytułem przypomnienia (Czytelnik powinien znać algebrę relacyjną z  
wykładu baz danych\end{eqnarray*} i&nbsp;dla&nbsp;ustalenia notacji, definiujemy  
wykładu baz danych)i&nbsp;dla&nbsp;ustalenia notacji, definiujemy  
\textit{składnię algebry relacyjnej} AR nad&nbsp;<math>\Sigma</math>.  
‘‘składnię algebry relacyjnej} AR nad&nbsp;<math>\Sigma</math>.  
*Każdy symbol relacji <math>n</math>-argumentowej z <math>\Sigma</math> z wyjątkiem  
*Każdy symbol relacji <math>n</math>-argumentowej z <math>\Sigma</math> z wyjątkiem  
równości jest <math>n</math>-argumentowym wyrażeniem AR.  
równości jest <math>n</math>-argumentowym wyrażeniem AR.  
Linia 356: Linia 356:
*Jeśli <math>E</math> jest <math>n</math>-argumentowym wyrażeniem AR oraz  
*Jeśli <math>E</math> jest <math>n</math>-argumentowym wyrażeniem AR oraz  
<math>i_1,\dots,i_k</math> jest ciągiem różnych ale niekoniecznie wszystkich  
<math>i_1,\dots,i_k</math> jest ciągiem różnych ale niekoniecznie wszystkich  
\Delta\vdashlementów zbioru <math>\{1,\dots,n\}</math>, to <math>\pi_{i_1,\dots,i_k} E</math> jest  
elementów zbioru <math>\{1,\dots,n\}</math>, to <math>\pi_{i_1,\dots,i_k} E</math> jest  
<math>k</math>-argumentowym wyrażeniem AR. W szczególności ciąg ten może być  
<math>k</math>-argumentowym wyrażeniem AR. W szczególności ciąg ten może być  
pusty, zaś  <math>\pi E</math> jest wyrażeniem \mbox{0-argumentowym}.  
pusty, zaś  <math>\pi E</math> jest wyrażeniem \mbox{0-argumentowym}.  
Linia 370: Linia 370:
Semantyka algebry relacyjnej  
Semantyka algebry relacyjnej  
jest następująca: dla danej struktury  
jest następująca: dla danej struktury  
<math>\strA</math> nad <math>\Sigma,</math> każdemu <math>n</math>-ar\-gu\-men\-to\-we\-mu wyrażeniu <math>E</math> algebry  
<math>\mathfrak A</math> nad <math>\Sigma,</math> każdemu <math>n</math>-ar\-gu\-men\-to\-we\-mu wyrażeniu <math>E</math> algebry  
relacyjnej  przypisujemy <math>n</math>-argumentową relację <math>\\\seml E \semr</math> w&nbsp;<math>A.</math>  
relacyjnej  przypisujemy <math>n</math>-argumentową relację <math>\\\seml E \semr</math> w&nbsp;<math>A.</math>  
Definicja oczywiście przebiega indukcyjnie względem budowy <math>E.</math>  
Definicja oczywiście przebiega indukcyjnie względem budowy <math>E.</math>  


*Jeśli <math>R</math> należy do <math>\Sigma,</math> to <math>\\\seml R \semr=R^\strA.</math>  
*Jeśli <math>R</math> należy do <math>\Sigma,</math> to <math>\\\seml R \semr=R^\mathfrak A.</math>  
*<math>\\\seml E\cup F \semr=\\\seml E \semr\cup\\\seml F \semr</math> oraz  <math>\\\seml E-F \semr=\\\seml E \semr-\\\seml F \semr</math>.  
*<math>\\\seml E\cup F \semr=\\\seml E \semr\cup\\\seml F \semr</math> oraz  <math>\\\seml E-F \semr=\\\seml E \semr-\\\seml F \semr</math>.  
*</math>\\\seml \pi_{i_1,\dots,i_k \semr  
*</math>\\\seml \pi_{i_1,\dots,i_k \semr  
Linia 383: Linia 383:
}\<b_1\dots,b_m\>\in\\\seml F}\ \semr</math>.  
}\<b_1\dots,b_m\>\in\\\seml F}\ \semr</math>.  
*</math>\\\seml \sigma_\theta E \semr=\{\<a_1,\dots,a_n\>\in\\\seml E \semr&nbsp;|&nbsp;  
*</math>\\\seml \sigma_\theta E \semr=\{\<a_1,\dots,a_n\>\in\\\seml E \semr&nbsp;|&nbsp;  
a_i=a_j,\ \mbox{gdy}\ \begin{eqnarray*}i=j\end{eqnarray*}\in\theta\ \mbox{oraz}\ a_i=c^\strA
a_i=a_j,\ \mbox{gdy}\ (i=j\end{eqnarray*}\in\theta\ \mbox{oraz}\ a_i=c^\mathfrak A
,\ \mbox{gdy}\ \begin{eqnarray*}i=c\end{eqnarray*}\in\theta\}.</math>  
,\ \mbox{gdy}\ (i=c\end{eqnarray*}\in\theta\}.</math>  




Linia 401: Linia 401:
Dla danej formuły <math>\alpha</math> logiki pierwszego rzędu takiej, że  
Dla danej formuły <math>\alpha</math> logiki pierwszego rzędu takiej, że  
<math>\fv{\alpha}=\{x_{i_1},\dots x_{i_n}\}</math>, oraz struktury  
<math>\fv{\alpha}=\{x_{i_1},\dots x_{i_n}\}</math>, oraz struktury  
<math>\strA=\<A,\dots\></math> określimy interpretację tej formuły w <math>\strA</math>,  
<math>\mathfrak A=\<A,\dots\></math> określimy interpretację tej formuły w <math>\mathfrak A</math>,  
oznaczaną <math>\\\seml \alpha \semr</math>, jak następuje:  
oznaczaną <math>\\\seml \alpha \semr</math>, jak następuje:  


Linia 413: Linia 413:
{{definicja|||  
{{definicja|||  


\textit{Aktywną dziedziną} struktury <math>\strA</math> nazwiemy podzbiór  
‘‘Aktywną dziedziną} struktury <math>\mathfrak A</math> nazwiemy podzbiór  
<math>ad\begin{eqnarray*}\strA\end{eqnarray*}\subseteq A</math> jej\boldsymbol{s}}\def\blank{\hbox{\sf Bniwersum, złożony z wszystkich\Delta\vdashlementów
<math>ad(\mathfrak A\end{eqnarray*}sbseteq A</math> jejuniwersum, złożony z wszystkichelementów
które są wartościami stałych z&nbsp;sygnatury bądź występują jako  
które są wartościami stałych z&nbsp;sygnatury bądź występują jako  
współrzędna w co najmniej jednej krotce należącej do interpretacji  
współrzędna w co najmniej jednej krotce należącej do interpretacji  
Linia 422: Linia 422:
Jak łatwo zauważyć,  
Jak łatwo zauważyć,  
interpretacje wszystkich wyrażeń algebry relacyjnej obliczane w  
interpretacje wszystkich wyrażeń algebry relacyjnej obliczane w  
<math>\strA</math> są w&nbsp;istocie relacjami w dziedzinie aktywnej.  
<math>\mathfrak A</math> są w&nbsp;istocie relacjami w dziedzinie aktywnej.  


Inaczej jest w logice pierwszego rzędu:\boldsymbol{s}}\def\blank{\hbox{\sf Bżycie negacji prowadzi  
Inaczej jest w logice pierwszego rzędu:użycie negacji prowadzi  
natychmiast do formuł, których interpretacje zawierają\Delta\vdashlementy spoza  
natychmiast do formuł, których interpretacje zawierająelementy spoza  
aktywnej dziedziny.   
aktywnej dziedziny.   


Linia 433: Linia 433:
interpretacji w każdej strukturze.  
interpretacji w każdej strukturze.  


Jednak gdy założymy, że  <math>A=ad\begin{eqnarray*}\strA\end{eqnarray*},</math> to sytuacja sie  
Jednak gdy założymy, że  <math>A=ad(\mathfrak A\end{eqnarray*},</math> to sytuacja sie  
zmienia. Wyrazem tego jest poniższe twierdzenie.  
zmienia. Wyrazem tego jest poniższe twierdzenie.  


Linia 440: Linia 440:
#
#
Dla każdego wyrażenia <math>E</math> algebry relacyjnej istnieje taka formuła  
Dla każdego wyrażenia <math>E</math> algebry relacyjnej istnieje taka formuła  
<math>\alpha_E</math> logiki pierwszego rzędu, że dla każdej struktury <math>\strA</math>  
<math>\alpha_E</math> logiki pierwszego rzędu, że dla każdej struktury <math>\mathfrak A</math>  
spełniającej <math>A=ad\begin{eqnarray*}\strA\end{eqnarray*},</math> zachodzi <math>\\\seml \alpha \semr=\\\seml E \semr.</math>  
spełniającej <math>A=ad(\mathfrak A\end{eqnarray*},</math> zachodzi <math>\\\seml \alpha \semr=\\\seml E \semr.</math>  
#
#
Dla każdej formuły <math>\alpha</math> logiki pierwszego rzędu istnieje wyrażenie  
Dla każdej formuły <math>\alpha</math> logiki pierwszego rzędu istnieje wyrażenie  
<math>E_\alpha</math> algebry relacyjnej takie, że dla każdej struktury <math>\strA</math>  
<math>E_\alpha</math> algebry relacyjnej takie, że dla każdej struktury <math>\mathfrak A</math>  
spełniającej <math>A=ad\begin{eqnarray*}\strA\end{eqnarray*},</math> zachodzi <math>\\\seml E \semr=\\\seml \alpha \semr.</math>  
spełniającej <math>A=ad(\mathfrak A\end{eqnarray*},</math> zachodzi <math>\\\seml E \semr=\\\seml \alpha \semr.</math>  


}}  
}}  
Linia 459: Linia 459:


Gdy <math>E</math> jest <math>n</math>-argumentowym symbolem relacyjnym <math>R</math>, to <math>\alpha_E</math>  
Gdy <math>E</math> jest <math>n</math>-argumentowym symbolem relacyjnym <math>R</math>, to <math>\alpha_E</math>  
ma postać <math>R\begin{eqnarray*}x_1,\dots,x_n\end{eqnarray*},</math>  a&nbsp;prawdziwość tezy jest oczywista.  
ma postać <math>R(x_1,\dots,x_n\end{eqnarray*},</math>  a&nbsp;prawdziwość tezy jest oczywista.  


<math>\alpha_{E\cup F}</math> definiujemy jako <math>\alpha_E\lor\alpha_F,</math> zaś  
<math>\alpha_{E\cup F}</math> definiujemy jako <math>\alpha_E\lor\alpha_F,</math> zaś  
Linia 467: Linia 467:
Aby skonstruować <math>\alpha_{\pi_{i_1,\dots,i_k}E}</math> tworzymy formułę  
Aby skonstruować <math>\alpha_{\pi_{i_1,\dots,i_k}E}</math> tworzymy formułę  
<math>\exists x_{j_1}\dots\exists x_{j_{n-k}}\alpha</math>, gdzie  
<math>\exists x_{j_1}\dots\exists x_{j_{n-k}}\alpha</math>, gdzie  
<math>j_1,\dots,j_{n-k}</math> to wypisane w obojętnej kolejności\Delta\vdashlementy zbioru  
<math>j_1,\dots,j_{n-k}</math> to wypisane w obojętnej kolejnościelementy zbioru  
<math>\{1,\dots,n \}-\{i_1,\dots,i_k\}.</math> Następnie dokonujemy w niej  
<math>\{1,\dots,n \}-\{i_1,\dots,i_k\}.</math> Następnie dokonujemy w niej  
zamiany nazw zmiennych związanych tak, by ich numery były większe niż  
zamiany nazw zmiennych związanych tak, by ich numery były większe niż  
Linia 473: Linia 473:
<math>\beta</math> będzie otrzymaną w ten sposób formułą. Wówczas  
<math>\beta</math> będzie otrzymaną w ten sposób formułą. Wówczas  
<math>\alpha_{\pi_{i_1,\dots,i_k}E}</math> definiujemy jako  
<math>\alpha_{\pi_{i_1,\dots,i_k}E}</math> definiujemy jako  
<math>\beta\begin{eqnarray*}x_1/y_{i_1},\dots,x_k/y_{i_k}\end{eqnarray*}</math>.  Widać, że ta formuła spełnia  
<math>\beta(x_1/y_{i_1},\dots,x_k/y_{i_k}\end{eqnarray*}</math>.  Widać, że ta formuła spełnia  
tezę.   
tezę.   


Linia 497: Linia 497:


Zaczynamy od konstrukcji jednoargumentowego wyrażenia <math>AD</math> takiego, że  
Zaczynamy od konstrukcji jednoargumentowego wyrażenia <math>AD</math> takiego, że  
dla każdej struktury <math>\strA,</math> mamy <math>\\\seml AD}=ad\begin{eqnarray*}\strA\end{eqnarray* \semr.</math>  
dla każdej struktury <math>\mathfrak A,</math> mamy <math>\\\seml AD}=ad(\mathfrak A\end{eqnarray* \semr.</math>  


Jest ono <math>\cup</math>-sumą wyrażeń <math>\pi_i R</math> dla wszystkich symboli  
Jest ono <math>\cup</math>-sumą wyrażeń <math>\pi_i R</math> dla wszystkich symboli  
Linia 508: Linia 508:


\[\\\seml E_{\alpha;n} \semr=\{\<a_1,\dots,a_n\>\in  
\[\\\seml E_{\alpha;n} \semr=\{\<a_1,\dots,a_n\>\in  
A^n&nbsp;|&nbsp;\begin{eqnarray*}\strA,x_{1}:a_1,\dots,x_{n}:a_n\end{eqnarray*}\models\alpha\}.\]   
A^n&nbsp;|&nbsp;(\mathfrak A,x_{1}:a_1,\dots,x_{n}:a_n\end{eqnarray*}\models\alpha\}.\]   


Oznacza to, że <math>E_{\alpha;n}</math> zawiera dodatkowe współrzędne, które  
Oznacza to, że <math>E_{\alpha;n}</math> zawiera dodatkowe współrzędne, które  
Linia 514: Linia 514:
<math>\alpha</math>.  Aby otrzymać <math>E_\alpha</math> wystarczy wziąć rzut  
<math>\alpha</math>.  Aby otrzymać <math>E_\alpha</math> wystarczy wziąć rzut  
<math>\pi_{I}E_{\alpha;n},</math> gdzie <math>I</math> to posortowany rosnąco ciąg numerów  
<math>\pi_{I}E_{\alpha;n},</math> gdzie <math>I</math> to posortowany rosnąco ciąg numerów  
zmiennych wolnych <math>\alpha,</math> co\Delta\vdashliminuje przy okazji zbędne współrzędne.  
zmiennych wolnych <math>\alpha,</math> coeliminuje przy okazji zbędne współrzędne.  


</math>E_{x_i=x_j;n}<math> to </math>\sigma_{i=j}\begin{eqnarray*}\underbrace{AD\times\dots\times  
</math>E_{x_i=x_j;n}<math> to </math>\sigma_{i=j}(\underbrace{AD\times\dots\times  
AD}_{n}\end{eqnarray*}.</math>   
AD}_{n}\end{eqnarray*}.</math>   


<math>E_{R\begin{eqnarray*}x_{i_1},\dots,x_{i_k}\end{eqnarray*};n}</math> jest zdefiniowane jako  
<math>E_{R(x_{i_1},\dots,x_{i_k}\end{eqnarray*};n}</math> jest zdefiniowane jako  
<math>\pi_{I}\begin{eqnarray*}R\times\underbrace{AD\times\dots\times AD}_{n-k}\end{eqnarray*},</math> gdzie  
<math>\pi_{I}(R\times\underbrace{AD\times\dots\times AD}_{n-k}\end{eqnarray*},</math> gdzie  
<math>I</math> jest taką permutacją <math>\{1,\dots,n\}</math>, która współrzędne <math>R</math>  
<math>I</math> jest taką permutacją <math>\{1,\dots,n\}</math>, która współrzędne <math>R</math>  
mieszcza na pozycjach o kolejnych numerach <math>i_1,\dots,i_k.</math>  
mieszcza na pozycjach o kolejnych numerach <math>i_1,\dots,i_k.</math>  
Linia 526: Linia 526:
</math>E_{\alpha\lor\beta;n}<math> jest zdefiniowane jako </math>E_{\alpha;n}\cup  
</math>E_{\alpha\lor\beta;n}<math> jest zdefiniowane jako </math>E_{\alpha;n}\cup  
E_{\beta;n},</math> natomiast  <math>E_{\lnot\alpha;n}</math> to  
E_{\beta;n},</math> natomiast  <math>E_{\lnot\alpha;n}</math> to  
<math>\begin{eqnarray*}\underbrace{AD\times\dots\times AD}_{n}\end{eqnarray*}-E_{\alpha;n}.</math>  
<math>(\underbrace{AD\times\dots\times AD}_{n}\end{eqnarray*}-E_{\alpha;n}.</math>  






Wreszcie w wypadku <math>E_{\exists x_i\alpha;n}</math> możemy bez\boldsymbol{s}}\def\blank{\hbox{\sf Btraty
Wreszcie w wypadku <math>E_{\exists x_i\alpha;n}</math> możemy bezutraty
ogólności założyć, że </math>i=n+1<math>.  Wtedy  </math>E_{\exists  
ogólności założyć, że </math>i=n+1<math>.  Wtedy  </math>E_{\exists  
x_i\alpha;n}</math> jest zdefiniowane jako  
x_i\alpha;n}</math> jest zdefiniowane jako  
Linia 543: Linia 543:
konferencjach naukowych dotyczących teorii baz danych, systematycznie  
konferencjach naukowych dotyczących teorii baz danych, systematycznie  
prezentowane są prace, których tematem jest logika pierwszego rzędu i  
prezentowane są prace, których tematem jest logika pierwszego rzędu i  
nikt się już temu nie dziwi ani niczego nie musi\boldsymbol{s}}\def\blank{\hbox{\sf Bzasadniać.  
nikt się już temu nie dziwi ani niczego nie musiuzasadniać.  


W szczególności badania dotyczące gier Ehrenfeuchta oraz  
W szczególności badania dotyczące gier Ehrenfeuchta oraz  
charakteryzacji obliczeniowych logiki pierwszego rzędu \begin{eqnarray*}w duchu  
charakteryzacji obliczeniowych logiki pierwszego rzędu (w duchu  
twierdzeń B\"uchi i Fagina\end{eqnarray*} są generalnie postrzegane jako wyniki  
twierdzeń B\"uchi i Fagina)są generalnie postrzegane jako wyniki  
należące do teorii baz danych.  
należące do teorii baz danych.  


Linia 553: Linia 553:


W tym rozdziale przedyskutujemy zagadnienie rozstrzygalności teorii  
W tym rozdziale przedyskutujemy zagadnienie rozstrzygalności teorii  
matematycznych \begin{eqnarray*}rozumianych jako zbiorów zdań\end{eqnarray*}.  
matematycznych (rozumianych jako zbiorów zdań\end{eqnarray*}.  
Przykładem teorii nierozstrzygalnej jest arytmetyka Peano   
Przykładem teorii nierozstrzygalnej jest arytmetyka Peano   
\begin{eqnarray*}Twierdzenie&nbsp;[[#przescieradlo]]\end{eqnarray*}. Przykład teorii rozstrzygalnej  
(Twierdzenie&nbsp;[[#przescieradlo]]\end{eqnarray*}. Przykład teorii rozstrzygalnej  
prezentujemy poniżej.  
prezentujemy poniżej.  


Linia 561: Linia 561:
{{twierdzenie|||  
{{twierdzenie|||  


Teoria gęstych porządków liniowych które nie mają\Delta\vdashlementów
Teoria gęstych porządków liniowych które nie mająelementów
maksymalnych ani minimalnych jest rozstrzygalna.  
maksymalnych ani minimalnych jest rozstrzygalna.  
}}  
}}  
Linia 568: Linia 568:


Niech <math>\mathcal{A}</math> będzie klasą wszystkich gęstych porządków  
Niech <math>\mathcal{A}</math> będzie klasą wszystkich gęstych porządków  
liniowych które nie mają\Delta\vdashlementów maksymalnych ani minimalnych.  
liniowych które nie mająelementów maksymalnych ani minimalnych.  
Z Wniosku [[#zupa} wiemy, że <math>'''Th]]\begin{eqnarray*}\mathcal{A'''\end{eqnarray*}</math> jest zupełna.  
Z Wniosku [[#zupa} wiemy, że <math>'''Th]](\mathcal{A'''\end{eqnarray*}</math> jest zupełna.  
Ponadto zauważmy, że   
Ponadto zauważmy, że   
<math>'''Th}\begin{eqnarray*}\mathcal{A}\end{eqnarray*}=\{\alpha&nbsp;|&nbsp;\Delta\models\alpha\'''</math>,   
<math>'''Th}(\mathcal{A}\end{eqnarray*}=\{\alpha&nbsp;|&nbsp;\Delta\models\alpha\'''</math>,   
gdzie <math>\Delta</math> to następujący zbiór zdań:  
gdzie <math>\Delta</math> to następujący zbiór zdań:  
<!--% -->  
<!--% -->  
\begin{gather*}  
\begin{gather*}  
\forall x\forall y \ \begin{eqnarray*}x\leq y \land y\leq x\end{eqnarray*}\to x=y\\  
\forall x\forall y \ (x\leq y \land y\leq x\end{eqnarray*}\to x=y\\  
\forall x\forall y \forall z\ \begin{eqnarray*}x\leq y \land y\leq z\end{eqnarray*}\to x\leq z\\  
\forall x\forall y \forall z\ (x\leq y \land y\leq z\end{eqnarray*}\to x\leq z\\  
\forall x\forall y \ x\leq y \lor y\leq x\\  
\forall x\forall y \ x\leq y \lor y\leq x\\  
\forall x\exists y\ x< y\\  
\forall x\exists y\ x< y\\  
\forall x\exists y\ y< x\\  
\forall x\exists y\ y< x\\  
\forall x\forall y\ \begin{eqnarray*}x < y\end{eqnarray*}\to \begin{eqnarray*}\exists z\ x < z \land z<y\end{eqnarray*}
\forall x\forall y\ (x < y\end{eqnarray*}\to (\exists z\ x < z \land z<y)
\end{gather*}  
\end{gather*}  
<!--% -->  
<!--% -->  
Linia 588: Linia 588:
Na mocy twierdzenia o pełności  
Na mocy twierdzenia o pełności  
<!--% -->  
<!--% -->  
\[\{\alpha&nbsp;|&nbsp;\Delta\models\alpha\}=\{\alpha&nbsp;|&nbsp;\Delta\vdash_H\alpha\}.\]  
\[\{\alpha&nbsp;|&nbsp;\Delta\models\alpha\}=\{\alpha&nbsp;|&nbsp;e_H\alpha\}.\]  
<!--% -->  
<!--% -->  
Pozostaje więc wykazać rozstrzygalność  
Pozostaje więc wykazać rozstrzygalność  
<math>\{\alpha&nbsp;|&nbsp;\Delta\vdash_H\alpha\}.</math>  
<math>\{\alpha&nbsp;|&nbsp;e_H\alpha\}.</math>  




Linia 597: Linia 597:
Dla danej formuły&nbsp;<math>\alpha</math> systematycznie generujemy wszystkie   
Dla danej formuły&nbsp;<math>\alpha</math> systematycznie generujemy wszystkie   
dowody w systemie Hilberta,  
dowody w systemie Hilberta,  
poszukując wśród nich albo dowodu  <math>\Delta\vdash_H\alpha,</math>  
poszukując wśród nich albo dowodu  <math>e_H\alpha,</math>  
albo dowodu  <math>\Delta\vdash_H\lnot\alpha.</math> Wobec zaobserwowanej  
albo dowodu  <math>e_H\lnot\alpha.</math> Wobec zaobserwowanej  
przez nas zupełności, jeden z nich w końcu się znajdzie.  Jeśli będzie  
przez nas zupełności, jeden z nich w końcu się znajdzie.  Jeśli będzie  
to ten pierwszy, to procedura\boldsymbol{s}}\def\blank{\hbox{\sf Bdzieli wówczas odpowiedzi: ,,TAK'',   
to ten pierwszy, to proceduraudzieli wówczas odpowiedzi: ,,TAK'',   
a&nbsp;jeśli ten drugi, to ,,NIE''.  
a&nbsp;jeśli ten drugi, to ,,NIE''.  
}}  
}}  
Linia 607: Linia 607:
Przeprowadzony przez nas dowód jest całkiem prosty, ale prowadzi do  
Przeprowadzony przez nas dowód jest całkiem prosty, ale prowadzi do  
algorytmu rozstrzygającego, o którego złożoności nic rozsądnego  
algorytmu rozstrzygającego, o którego złożoności nic rozsądnego  
powiedzieć nie\boldsymbol{s}}\def\blank{\hbox{\sf Bmiemy.  
powiedzieć nieumiemy.  


Istnieją bardziej zaawansowane technicznie metody dowodzenia  
Istnieją bardziej zaawansowane technicznie metody dowodzenia  
rozstrzygalności, które pozwalają oszacować złożoność tworzonych przez  
rozstrzygalności, które pozwalają oszacować złożoność tworzonych przez  
nie algorytmów. Jednak można\boldsymbol{s}}\def\blank{\hbox{\sf Bdowodnić, że żaden taki algorytm nie  
nie algorytmów. Jednak możnaudowodnić, że żaden taki algorytm nie  
może mieć złożoności mniejszej niż {\sc Pspace}, o ile tylko działa  
może mieć złożoności mniejszej niż {\sc Pspace}, o ile tylko działa  
poprawnie dla wszystkich formuł zawierających symbole równości.   
poprawnie dla wszystkich formuł zawierających symbole równości.   
Linia 629: Linia 629:


Przeprowadzamy redukcję w pamięci logarytmicznej z problemu QBF  
Przeprowadzamy redukcję w pamięci logarytmicznej z problemu QBF  
\begin{eqnarray*}kwantyfikowanych formuł Boolowskich\end{eqnarray*} do naszego problemu.  
(kwantyfikowanych formuł Boolowskich)do naszego problemu.  


Instancjami problemu QBF są zdania postaci  
Instancjami problemu QBF są zdania postaci  
Linia 649: Linia 649:
Niech formułą otrzymana po tych operacjach będzie <math>\alpha'.</math>  
Niech formułą otrzymana po tych operacjach będzie <math>\alpha'.</math>  
Wtedy wynikiem naszej redukcji jest formuła <math>\alpha''</math>  
Wtedy wynikiem naszej redukcji jest formuła <math>\alpha''</math>  
\[\forall x\forall y\begin{eqnarray*} x=y \lor \alpha'\end{eqnarray*}.\]  
\[\forall x\forall y( x=y \lor \alpha'\end{eqnarray*}.\]  


Jest oczywiste, że <math>\alpha''</math> daje się obliczyć z <math>\alpha</math> w  
Jest oczywiste, że <math>\alpha''</math> daje się obliczyć z <math>\alpha</math> w  
Linia 659: Linia 659:
<math>\forall x_i\forall y_i</math> i <math>\exists x_i\exists y_i</math> swoją funkcją wiernie  
<math>\forall x_i\forall y_i</math> i <math>\exists x_i\exists y_i</math> swoją funkcją wiernie  
odpowiadają kwantyfikatorom </math>\forall  
odpowiadają kwantyfikatorom </math>\forall  
p_i</math> oraz <math>\exists p_i.</math> Z kolei klauzula <math>\forall x\forall y \begin{eqnarray*}x=y\end{eqnarray*}</math>  
p_i</math> oraz <math>\exists p_i.</math> Z kolei klauzula <math>\forall x\forall y (x=y\end{eqnarray*}</math>  
czyni <math>\alpha''</math> prawdziwym w&nbsp;strukturach jednoelementowych,  
czyni <math>\alpha''</math> prawdziwym w&nbsp;strukturach jednoelementowych,  
niezależnie od postaci <math>\alpha.</math>   
niezależnie od postaci <math>\alpha.</math>   
Linia 671: Linia 671:
{{twierdzenie|Tarski||  
{{twierdzenie|Tarski||  


Teoria\boldsymbol{s}}\def\blank{\hbox{\sf Bporządkowanego ciała liczb rzeczywistych, tj.&nbsp;teoria struktury  
Teoriauporządkowanego ciała liczb rzeczywistych, tj.&nbsp;teoria struktury  
\mbox{<math>\<\RR,+,*,0,1,\leq\></math>} jest rozstrzygalna.   
\mbox{<math>\<\RR,+,*,0,1,\leq\></math>} jest rozstrzygalna.   
}}  
}}  


Jej znaczenie dla informatyki zasadza się na fakcie, że ta teoria to w  
Jej znaczenie dla informatyki zasadza się na fakcie, że ta teoria to w  
istocie znana wszystkim ze szkoły \textit{geometria
istocie znana wszystkim ze szkoły ‘‘geometria
analityczna}. Poważną część algorytmicznych badań w zakresie geometrii  
analityczna}. Poważną część algorytmicznych badań w zakresie geometrii  
obliczeniowej można streścić jako\boldsymbol{s}}\def\blank{\hbox{\sf Blepszanie algorytmu  
obliczeniowej można streścić jakoulepszanie algorytmu  
rozstrzygającego teorię \mbox{<math>\<\RR,+,*,0,1,\leq\></math>} dla różnych  
rozstrzygającego teorię \mbox{<math>\<\RR,+,*,0,1,\leq\></math>} dla różnych  
szczególnych klas formuł, pojawiających się w praktyce.  
szczególnych klas formuł, pojawiających się w praktyce.  




\subsection*{Ćwiczenia}\begin{small}  
sbsection*{Ćwiczenia}\begin{small}  
#
#
Udowodnić, że logiki trójwartościowe Heytinga-Kleene-Łukasiewicza,  
Udowodnić, że logiki trójwartościowe Heytinga-Kleene-Łukasiewicza,  
Linia 690: Linia 690:
Podać przykład zdania logiki pierwszego rzędu, które nie jest tautologią,  
Podać przykład zdania logiki pierwszego rzędu, które nie jest tautologią,  
ale jest prawdziwe we  
ale jest prawdziwe we  
wszystkich strukturach <math>\strA</math> takich, że <math>A=ad\begin{eqnarray*}\strA\end{eqnarray*}.</math>   
wszystkich strukturach <math>\mathfrak A</math> takich, że <math>A=ad(\mathfrak A\end{eqnarray*}.</math>   
#<span id="rJ1" \>  Udowodnić, że zbiór tautologii logiki pierwszego rzędu nad  
#<span id="rJ1" \>  Udowodnić, że zbiór tautologii logiki pierwszego rzędu nad  
sygnaturą składającą się tylko z&nbsp;równości jest rozstrzygalny.   
sygnaturą składającą się tylko z&nbsp;równości jest rozstrzygalny.   
Linia 702: Linia 702:


#Zbadać złożoność obliczeniową algorytmu zaproponowanego powyżej  
#Zbadać złożoność obliczeniową algorytmu zaproponowanego powyżej  
i\boldsymbol{s}}\def\blank{\hbox{\sf Bdowodnić, że zbiór tautologii logiki pierwszego rzędu nad  
iudowodnić, że zbiór tautologii logiki pierwszego rzędu nad  
sygnaturą składającą się tylko z&nbsp;równości jest {\sc Pspace}-zupełny.  
sygnaturą składającą się tylko z&nbsp;równości jest {\sc Pspace}-zupełny.  


Linia 710: Linia 710:


{\em Wskazówka:\/} Rozwiązać najpierw zadanie [[#rJ1]], a stałe  
{\em Wskazówka:\/} Rozwiązać najpierw zadanie [[#rJ1]], a stałe  
zasymulować jako relacje\boldsymbol{s}}\def\blank{\hbox{\sf Bnarne będące singletonami.  
zasymulować jako relacjeunarne będące singletonami.  






\end{small}
\end{small}

Wersja z 07:54, 26 wrz 2006

Wykład 13 (link z wykł. 3)


Logika w informatyce

W tym rozdziale naszkicujemy skrótowo kilka nie wspomnianych dotychczas zagadnień logiki, które wiążą ją z informatyką. Wybór jest dość arbitralny, a opisy niezbyt wyczerpujące. Stanowią one raczej zaproszenie do dalszych, własnych poszukiwań, niż zamknięty wykład prezentowanych zagadnień.

Zdaniowe logiki trójwartościowe

Logika klasyczna, o której mowa w Wykładzie 1, jest ‘‘logiką dwuwartościową}.

Pierwsze ‘‘logiki trójwartościowe} skonstruowali niezależnie od siebie polski logik Jan Łukasiewicz i amerykański (aleurodzony w Augustowie)logik i matematyk Emil Post. Motywacje Posta były raczej kombinatoryczne, natomiast Łukasiewicz swoją konstrukcję poparł głębokim wywodem filozoficznym. Argumentował między innymi, że zdania o przyszłości, typu ,,jutro pójdę do kina, nie są dzisiaj jeszcze ani prawdziwe, ani fałszywe, bo przypisanie im którejś z tych wartości zaprzeczałoby istnieniu wolnej woli. \iffalse Podobnie, przypisanie już dziś prawdy lub fałszu zdaniu ,,Obraz, który namaluję jutro będzie piękny przeczyłoby naszej zdolności do tworzenia, bo skoro już dziś można ocenić to, co stworzymy dopiero jutro, to znaczy że nie będziemy tworzyć, tylko odtwarzać coś już zdeterminowanego.

Łukasiewicz wierzył głęboko w wolną wolę i twórczość, więcuważał, że \fi Aby logika mogła jakoś zdać sprawę ze statusu zdań o przyszłości, musi im przypisać inną, trzecią wartość logiczną.

Trzeba tu zaznaczyć, że zupełnie inną propozycją rozwiązania tego samego problemu jest stworzona przez Brouwera logika intuicjonistyczna, którą poznaliśmy w Wykładzie #logint.

Zanim przejdziemy do części trochę bardziej formalnej, rozważmy jeszcze dwa przykłady wzięte z żywej informatyki, gdzie także naturalnie pojawia się trzecia wartość logiczna.

Przykład

Rozważmy dwie deklaracje funkcji w Pascalu:


function f(x,y:boolean):boolean;

begin

...

end;


function g(x,y:boolean):boolean;

begin

...

end;


a następnie ichużycie


function f(x,y:boolean):boolean;

begin

...

end;


function g(x,y:boolean):boolean;

begin

...

end;


if f(x,y) and g(x,y) then ... else ...;


Wydaje się na pierwszy rzut oka, że to sytuacja rodem z logiki klasycznej, ale nie: przecież i \verb+f+ i \verb+g+ mogą dać w wyniku obliczenia wartości \verb+true+, \verb+false+ lub się zapętlić, które to zdarzenie jest formą trzeciej wartości logicznej. Sposób, w jaki się z nią obejdzie funkcja \verb+and+ zależy od wyboru programisty: może on zastosować albo krótkie albo długie wyliczenie w swoim programie.

Przykład

Inna sytuacja to tabela stworzona za pomocą następującej instrukcji SQL w relacyjnej bazie danych:


function f(x,y:boolean):boolean;

begin

...

end;


function g(x,y:boolean):boolean;

begin

...

end;


if f(x,y) and g(x,y) then ... else ...;


CREATE TABLE A (

id INTEGER PRIMARY KEY auto_increment,

...

valid BOOLEAN,

...

);


Przy takiej deklaracji, tabela \verb+A+ będzie mogła w kolumnie \verb+valid+ zawierać ‘‘trzy} wartości logiczne: \verb+TRUE+, \verb+FALSE+ i \verb+NULL+, a logika trójwartościowa objawi swoje działanie przy wykonaniu np.\ zapytania


function f(x,y:boolean):boolean;

begin

...

end;


function g(x,y:boolean):boolean;

begin

...

end;


if f(x,y) and g(x,y) then ... else ...;


CREATE TABLE A (

id INTEGER PRIMARY KEY auto_increment,

...

valid BOOLEAN,

...

);


SELECT *

FROM A AS A1, A AS A2

WHERE A1.valid and A2.valid



Definicja

‘‘Zbiór formuł zdaniowej logiki trójwartościowej} to zbiór tych formuł zdaniowej logiki klasycznej (patrz Definicja #radamalpa, w których występują tylko spójniki ¬, i .

Wywołane w ten sposób zawężenie składni zrekompensujemy niezwłocznie po stronie semantyki.

Przez trójwartościowanie zdaniowe\/ rozumiemy dowolną funkcję Parser nie mógł rozpoznać (błąd składni): {\displaystyle \varrho:\\mbox{\small ZZ}\to\{0,\frac12,1\}} , która zmiennym zdaniowym przypisuje wartości logiczne 0, 12 i 1.

Wartość formuły\/ zdaniowej α przy trójwartościowaniu ϱ oznaczamy przez Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz\alpha\varrho} i określamy przez indukcję:

  • Parser nie mógł rozpoznać (nieznana funkcja „\wf”): {\displaystyle \wf\prooftree p \justifies \varrho \using \textrm{(W\end{eqnarray*}}\endprooftree=\varrho(p\end{eqnarray*}} , gdy p jest symbolem zdaniowym;
  • Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz{\neg\alpha}\varrho=F_\lnot(\wfz{\alpha}\varrho\end{eqnarray*}} ;
  • </math>\wf\prooftree \alpha\lor\beta \justifies \varrho \using \textrm{(W\end{eqnarray*

\endprooftree=F_\land(\wf\prooftree \alpha \justifies \varrho \using \textrm{(W\end{eqnarray*}}\endprooftree,

\wf\prooftree \beta \justifies \varrho \using \textrm{(W\end{eqnarray*}}\endprooftree\end{eqnarray*}</math>;

  • </math>\wf\prooftree \alpha\land\beta \justifies \varrho \using \textrm{(W\end{eqnarray*}}\endprooftree=F_\lor(\wf\prooftree \alpha \justifies \varrho \using \textrm{(W\end{eqnarray*}}\endprooftree,

\wf\prooftree \beta \justifies \varrho \using \textrm{(W\end{eqnarray*}}\endprooftree\end{eqnarray*}</math>;

  • Parser nie mógł rozpoznać (nieznana funkcja „\wf”): {\displaystyle \wf\prooftree \lnot\alpha \justifies \varrho \using \textrm{(W\end{eqnarray*}}\endprooftree=F_\lnot(\wfz\alpha\varrho\end{eqnarray*}.}

}}


Różne wybory funkcji F,F:{0,12,1}×{0,12,1}{0,12,1} i F¬:{0,12,1}{0,12,1} prowadzą do różnych logik trójwartościowych.

Zaczniemy od logiki najstarszej, zwanej dziś logiką Heytinga-Kleene-Łukasiewicza:

Parser nie mógł rozpoznać (nieznana funkcja „\conn”): {\displaystyle \conn{F_\land}0000\mbox{\rm\texttt<}\frac12\mbox{\rm\texttt>}\mbox{\rm\texttt<}\frac12\mbox{\rm\texttt>}\ \ \conn{F_\lor}0\mbox{\rm\texttt<}\frac12\mbox{\rm\texttt>}11\mbox{\rm\texttt<}\frac12\mbox{\rm\texttt>}1\ \ \ {\begi\prooftree array \justifies |c|c| \using \textrm{(W\end{eqnarray*}}\endprooftree\hline \multicolum\prooftree 2}{|c| \justifies F_\lnot \using \textrm{(W\end{eqnarray*}}\endprooftree \\\hline\hline x&\\\hline 0&1\\\hline 1&0\\\hline{\frac12}&{\frac12}\\\hline\end{array}} }


Jest to logika niewątpliwie nadająca się do rozwiązania zadania, które sobie Łukasiewicz postawił. Sposób traktowania wartości logicznej 12 jest taki, że należy ją rozumieć jako ,,jeszcze nie wiadomo.

Warto zauważyć, że w przypadku tej logiki zachodzą równości

  • Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz{\neg\alpha}\varrho=1-\wfz{\alpha}\varrho} ,
  • </math>\wf\prooftree \alpha\vee\beta \justifies \varrho \using \textrm{(W\end{eqnarray*}}\endprooftree=\max\{\wf\prooftree \alpha \justifies \varrho \using \textrm{(W\end{eqnarray*}}\endprooftree,

\wf\prooftree \beta \justifies \varrho}\ \using \textrm{(W\end{eqnarray*}}\endprooftree</math>,

  • </math>\wf\prooftree \alpha\wedge\beta \justifies \varrho \using \textrm{(W\end{eqnarray*}}\endprooftree=\min\{\wf\prooftree \alpha \justifies \varrho \using \textrm{(W\end{eqnarray*}}\endprooftree,

\wf\prooftree \beta \justifies \varrho}\ \using \textrm{(W\end{eqnarray*}}\endprooftree</math>,

znane z Definicji #zesiesmieli, tak więc mozna ją traktować jako literalneuogólnienie logiki klasycznej.

Zachowanie stałych i operacji logicznych w języku SQL rządzi się właśnie prawami logiki Heytinga-Kleene-Łukasiewicza.


Zupełnie inną logikę zaproponował Bochvar:

Parser nie mógł rozpoznać (nieznana funkcja „\conn”): {\displaystyle \conn{F_\land}0\mbox{\rm\texttt<}\frac12}0\prooftree \frac12}{\frac12 \justifies \frac12 \using \textrm{(W\end{eqnarray*}\mbox{\rm\texttt>}\endprooftree\ \ \ \conn{F_\lor}0\mbox{\rm\texttt<}\frac12}1\prooftree \frac12}{\frac12 \justifies \frac12 \using \textrm{(W\end{eqnarray*}\mbox{\rm\texttt>}\endprooftree\ \ \ {\begi\prooftree array \justifies |c|c| \using \textrm{(W\end{eqnarray*}}\endprooftree\hline \multicolum\prooftree 2}{|c| \justifies F_\lnot \using \textrm{(W\end{eqnarray*}}\endprooftree \\\hline\hline x&\\\hline 0&1\\\hline 1&0\\\hline{\frac12}&{\frac12}\\\hline\end{array}} }

Czytelnik bez trudu rozpozna, że jest logika właściwa dla Przykładu #paskal, gdy programista wybierze długie wyliczenie wyrażeń logicznych. W sensie tej logiki stała 12 oznacza awarię lub błąd.

Dalej mamy dośćegzotycznie wyglądającą logikę Sobocińskiego:


Parser nie mógł rozpoznać (nieznana funkcja „\conn”): {\displaystyle \conn{F_\land}00001101\ \ \ \ \conn{F_\lor}01011101\ \ \ \ {\begi\prooftree array \justifies |c|c| \using \textrm{(W\end{eqnarray*}}\endprooftree\hline \multicolum\prooftree 2}{|c| \justifies F_\lnot \using \textrm{(W\end{eqnarray*}}\endprooftree \\\hline\hline x&\\\hline 0&1\\\hline 1&0\\\hline{\frac12}&{\frac12}\\\hline\end{array}} }

Jednak i ona ma swój poważny sens. W niej stała logiczna 12 oznacza ,,nie dotyczy lub ,,nieistotne. Wszyscy odruchowo wręcz stosujemy tę logikę przy okazji wypełniania różnych formularzy i kwestionariuszy. Odpowiadając na różne pytania sformułowane ,,tak lub nie w niektórych polach na odpowiedziumieszczamy ,,nie dotyczy a potem podpisujemy się pod dokumentem mimo ostrzeżenia ,,Świadomy/ma odpowiedzialności karnej za składanie fałszywych zeznań \dots oświadczam że wszystkie odpowiedzi w tym formularzu są zgodne ze stanem faktycznym. Po prostu stosujemy tu logikę Sobocińskiego, w której koniunkcja kilku wyrazów o wartości 1 i kilku wyrazów o wartości 12 daje wynik 1. Na szczęście, organy kontrolne chyba też znają ten rachunek zdań i stosują go do oceny naszych zeznań\dots

Przechodząc do logik wyglądających na pierwszy rzut oka jeszcze niezwyklej, natrafiamy na logikę z nieprzemienną koniunkcją i alternatywą, która opisuje spójniki logiczne w Pascalu, wyliczane w sposób krótki:

Parser nie mógł rozpoznać (nieznana funkcja „\conn”): {\displaystyle \conn{F_\land}0000\prooftree \frac12}{\frac12 \justifies \frac12 \using \textrm{(W\end{eqnarray*}}\endprooftree\ \ \ \conn{F_\lor}0\mbox{\rm\texttt<}\frac12}11\prooftree \frac12 \justifies \frac12 \using \textrm{(W\end{eqnarray*}\mbox{\rm\texttt>}\endprooftree\ \ \ {\begi\prooftree array \justifies |c|c| \using \textrm{(W\end{eqnarray*}}\endprooftree\hline \multicolum\prooftree 2}{|c| \justifies F_\lnot \using \textrm{(W\end{eqnarray*}}\endprooftree \\\hline\hline x&\\\hline 0&1\\\hline 1&0\\\hline{\frac12}&{\frac12}\\\hline\end{array}} }

Dla każdego z powyższych rachunków logicznych zasadne i interesujące są pytania o to czym jest tautologia, o aksjomatyzacje i systemy dowodzenia. Tak samo jest z innymi logikami wielowartościowymi, bo Czytelnik juz zapewne zauważył, że o ile jest jedna sensowna logika dwuwartościowa i kilka, wzajemnie konkurencyjnych sensownych logik trójwartościowych, to zapewne przy wzroście liczby wartości logicznych, liczba sensownych logik też rośnie. Tytułem przykładu: można sobie bez trudu wyobrazić logikę, w której chcielibyśmy mieć jednocześnie dwie różne stałe odpowiadające ,,nie wiadomo i ,,nie dotyczy. Taka logika miałaby więc co najmniej cztery wartości logiczne. Jak łatwo się domyślić, ogromnym obszarem zastosowań logik wielowartościowych jest sztuczna inteligencja i reprezentacja wiedzy.

Logika intucjonistyczna też może być w pewnych sytuacjach traktowana jako logika wielowartościowa. W tym przypadku potrzeba tych wartości nieskończenie wiele. Odpowiednio staranne spojrzenie na Definicję Twierdzenie #zwawo pozwala w nim dojrzeć właśnie opis zbioru tautologii zdaniowej logiki intucjonistycznej jako zbioru tautologii logiki nieskończeniewielo\-war\-toś\-ciowej, w której zbiór wartości logicznych to rodzina podzbiorów otwartych . Trzeba jednak zaznaczyć, że podejście to zatraca pewne istotne intuicje.

Tw. Codda

Twierdzenie Codda łączy ze sobą świat logiki i świat relacyjnych baz danych. Zostanie ono sformułowane i dowiedzione w tym rozdziale. Orzeka ono, że logika pierwszego rzędu i algebra relacyjna, znana z wykładu baz danych, są wzajemnie na siebie przekładalne, przy założeniu dla logiki pierwszego rzędu tzw. semantyki dziedziny aktywnej.

Na potrzeby niniejszego rozważania zakładamy iustalamy skończoną sygnaturę Σ, złożoną wyłącznie z symboli relacji i stałych, jak to zwykle ma miejsce w bazach danych.


Definicja

{{{3}}}

Jak wiadomo, AR jest teoretycznym modelem języka zapytań do relacyjnych baz danych. Pokażemy teraz, że algebra relacyjna jest ściśle powiązana z logiką pierwszego rzędu, a we wszystkich sytuacjach naturalnych z punktu widzenia teorii baz danych, jest jej nawet równoważna.


Dla danej formuły α logiki pierwszego rzędu takiej, że Parser nie mógł rozpoznać (nieznana funkcja „\fv”): {\displaystyle \fv{\alpha}=\{x_{i_1},\dots x_{i_n}\}} , oraz struktury Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mathfrak A=\<A,\dots\>} określimy interpretację tej formuły w 𝔄, oznaczaną Parser nie mógł rozpoznać (błąd składni): {\displaystyle \\\seml \alpha \semr} , jak następuje:

Parser nie mógł rozpoznać (błąd składni): {\displaystyle \\\seml \alpha \semr=\{\<a_1,\dots,a_n\>\in }

Intuicyjnie, Parser nie mógł rozpoznać (nieznana funkcja „\wf”): {\displaystyle \wf\alpha} to relacja definiowana przez formułę α w danej strukturze.

Definicja

‘‘Aktywną dziedziną} struktury 𝔄 nazwiemy podzbiór Parser nie mógł rozpoznać (błąd składni): {\displaystyle ad(\mathfrak A\end{eqnarray*}sbseteq A} jejuniwersum, złożony z wszystkichelementów które są wartościami stałych z sygnatury bądź występują jako współrzędna w co najmniej jednej krotce należącej do interpretacji jakiegoś symbolu relacyjnego z sygnatury.

Jak łatwo zauważyć, interpretacje wszystkich wyrażeń algebry relacyjnej obliczane w 𝔄 są w istocie relacjami w dziedzinie aktywnej.

Inaczej jest w logice pierwszego rzędu:użycie negacji prowadzi natychmiast do formuł, których interpretacje zawierająelementy spoza aktywnej dziedziny.


Zatem w pełnej ogólności są formuły logiki pierwszego rzędu, dla których nie istnieje wyrażenie algebry relacyjnej o tej samej interpretacji w każdej strukturze.

Jednak gdy założymy, że Parser nie mógł rozpoznać (błąd składni): {\displaystyle A=ad(\mathfrak A\end{eqnarray*},} to sytuacja sie zmienia. Wyrazem tego jest poniższe twierdzenie.

Twierdzenie Codd

Dla każdego wyrażenia E algebry relacyjnej istnieje taka formuła αE logiki pierwszego rzędu, że dla każdej struktury 𝔄 spełniającej Parser nie mógł rozpoznać (błąd składni): {\displaystyle A=ad(\mathfrak A\end{eqnarray*},} zachodzi Parser nie mógł rozpoznać (błąd składni): {\displaystyle \\\seml \alpha \semr=\\\seml E \semr.}

Dla każdej formuły α logiki pierwszego rzędu istnieje wyrażenie Eα algebry relacyjnej takie, że dla każdej struktury 𝔄 spełniającej Parser nie mógł rozpoznać (błąd składni): {\displaystyle A=ad(\mathfrak A\end{eqnarray*},} zachodzi Parser nie mógł rozpoznać (błąd składni): {\displaystyle \\\seml E \semr=\\\seml \alpha \semr.}

Dowód

{{{3}}}

Twierdzenie Codda jest już w pewnym stopniu częścią folkloru w teorii baz danych. Dziś wszyscy wiedzą, że algebra relacyjna to właściwie to samo, co logika pierwszego rzędu. W związku z tym, od wielu lat na konferencjach naukowych dotyczących teorii baz danych, systematycznie prezentowane są prace, których tematem jest logika pierwszego rzędu i nikt się już temu nie dziwi ani niczego nie musiuzasadniać.

W szczególności badania dotyczące gier Ehrenfeuchta oraz charakteryzacji obliczeniowych logiki pierwszego rzędu (w duchu twierdzeń B\"uchi i Fagina)są generalnie postrzegane jako wyniki należące do teorii baz danych.

Rozstrzygalność i nierozstrzygalność teorii

W tym rozdziale przedyskutujemy zagadnienie rozstrzygalności teorii matematycznych (rozumianych jako zbiorów zdań\end{eqnarray*}. Przykładem teorii nierozstrzygalnej jest arytmetyka Peano (Twierdzenie #przescieradlo\end{eqnarray*}. Przykład teorii rozstrzygalnej prezentujemy poniżej.


Twierdzenie

Teoria gęstych porządków liniowych które nie mająelementów maksymalnych ani minimalnych jest rozstrzygalna.

{{dowod||

Niech 𝒜 będzie klasą wszystkich gęstych porządków liniowych które nie mająelementów maksymalnych ani minimalnych. Z Wniosku [[#zupa} wiemy, że Parser nie mógł rozpoznać (błąd składni): {\displaystyle '''Th]](\mathcal{A'''\end{eqnarray*}} jest zupełna. Ponadto zauważmy, że Parser nie mógł rozpoznać (błąd składni): {\displaystyle '''Th}(\mathcal{A}\end{eqnarray*}=\{\alpha&nbsp;|&nbsp;\Delta\models\alpha\'''} , gdzie Δ to następujący zbiór zdań: \begin{gather*} \forall x\forall y \ (x\leq y \land y\leq x\end{eqnarray*}\to x=y\\ \forall x\forall y \forall z\ (x\leq y \land y\leq z\end{eqnarray*}\to x\leq z\\ \forall x\forall y \ x\leq y \lor y\leq x\\ \forall x\exists y\ x< y\\ \forall x\exists y\ y< x\\ \forall x\forall y\ (x < y\end{eqnarray*}\to (\exists z\ x < z \land z<y) \end{gather*} gdzie </math>x<yParser nie mógł rozpoznać (błąd składni): {\displaystyle jest oczywistym skrótem notacyjnym dla formuły } x\leq y \land x\neq y.</math>

Na mocy twierdzenia o pełności \[\{\alpha | \Delta\models\alpha\}=\{\alpha | e_H\alpha\}.\] Pozostaje więc wykazać rozstrzygalność Parser nie mógł rozpoznać (błąd składni): {\displaystyle \{\alpha&nbsp;|&nbsp;e_H\alpha\}.}


Procedura rozstrzygająca jest następująca: Dla danej formuły α systematycznie generujemy wszystkie dowody w systemie Hilberta, poszukując wśród nich albo dowodu eHα, albo dowodu eH¬α. Wobec zaobserwowanej przez nas zupełności, jeden z nich w końcu się znajdzie. Jeśli będzie to ten pierwszy, to proceduraudzieli wówczas odpowiedzi: ,,TAK, a jeśli ten drugi, to ,,NIE. }}


Przeprowadzony przez nas dowód jest całkiem prosty, ale prowadzi do algorytmu rozstrzygającego, o którego złożoności nic rozsądnego powiedzieć nieumiemy.

Istnieją bardziej zaawansowane technicznie metody dowodzenia rozstrzygalności, które pozwalają oszacować złożoność tworzonych przez nie algorytmów. Jednak możnaudowodnić, że żaden taki algorytm nie może mieć złożoności mniejszej niż {\sc Pspace}, o ile tylko działa poprawnie dla wszystkich formuł zawierających symbole równości.

Twierdzenie Stockmeyer

Następujący problem jest {\sc Pspace}-trudny: czy dane zdanie logiki pierwszego rzędu nad sygnaturą zawierającą wyłącznie symbol równości jest tautologią?

Wobec naszej wiedzy o klasach złożoności, wątpliwe jest zatem istnienie algorytmów o wielomianowej złożoności czasowej nawet dla teorii jeszcze prostszych niż ta rozpatrywana w poprzednim twierdzeniu.

Dowód

{{{3}}}

Szczególnie interesujące jest następujące twierdzenie:

Twierdzenie Tarski

Teoriauporządkowanego ciała liczb rzeczywistych, tj. teoria struktury \mbox{Parser nie mógł rozpoznać (błąd składni): {\displaystyle \<\RR,+,*,0,1,\leq\>} } jest rozstrzygalna.

Jej znaczenie dla informatyki zasadza się na fakcie, że ta teoria to w istocie znana wszystkim ze szkoły ‘‘geometria analityczna}. Poważną część algorytmicznych badań w zakresie geometrii obliczeniowej można streścić jakoulepszanie algorytmu rozstrzygającego teorię \mbox{Parser nie mógł rozpoznać (błąd składni): {\displaystyle \<\RR,+,*,0,1,\leq\>} } dla różnych szczególnych klas formuł, pojawiających się w praktyce.


sbsection*{Ćwiczenia}\begin{small}

Udowodnić, że logiki trójwartościowe Heytinga-Kleene-Łukasiewicza, Bochvara i Sobocińskiego spełniają prawa de Morgana.

Podać przykład zdania logiki pierwszego rzędu, które nie jest tautologią, ale jest prawdziwe we wszystkich strukturach 𝔄 takich, że Parser nie mógł rozpoznać (błąd składni): {\displaystyle A=ad(\mathfrak A\end{eqnarray*}.}

  1. Udowodnić, że zbiór tautologii logiki pierwszego rzędu nad

sygnaturą składającą się tylko z równości jest rozstrzygalny.

{\em Wskazówka:\/} Niech α będzie formułą o randze kwantyfikatorowej q. Udowodnić, że każde dwie struktury o mocy co najmniej q nad powyższą sygnaturą są q-elementarnie równoważne. Wywnioskować stąd, że aby sprawdzić, czy α jest tautologią wystarczyć sprawdzić to w strukturach o mocy co najwyżej q.


  1. Zbadać złożoność obliczeniową algorytmu zaproponowanego powyżej

iudowodnić, że zbiór tautologii logiki pierwszego rzędu nad sygnaturą składającą się tylko z równości jest {\sc Pspace}-zupełny.

  1. Udowodnić, że zbiór tautologii logiki pierwszego

rzędu nad sygnaturą składającą się tylko z równości i skończenie wielu symboli stałych jest rozstrzygalny.

{\em Wskazówka:\/} Rozwiązać najpierw zadanie #rJ1, a stałe zasymulować jako relacjeunarne będące singletonami.


\end{small}