Test b: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Beret (dyskusja | edycje)
Nie podano opisu zmian
 
m Zastępowanie tekstu – „<math> ” na „<math>”
 
(Nie pokazano 10 wersji utworzonych przez 2 użytkowników)
Linia 1: Linia 1:
\title'''Logika dla informatyków'''\author{Jerzy Tiuryn\and Jerzy Tyszkiewicz\and Paweł Urzyczyn}<!--%%\date{\dzisiaj, godzina&nbsp;\czas}-->\date{Sierpień 2006}\maketitle
\title'''Logika dla informatyków'''  
\author{Jerzy Tiuryn\and Jerzy Tyszkiewicz\and Paweł Urzyczyn}  
<!--%%\date{\dzisiaj, godzina&nbsp;\czas} -->  
\date{Sierpień 2006}\maketitle  


Wnioskowanie o prawdziwości rozmaitych stwierdzeń jest powszednimzajęciem matematyków i nie tylko matematyków. Dlategofilozofowie i matematycy od dawna zajmowali się systematyzacją metodwnioskowania i kryteriów ich poprawności. Oczywiście ostatecznymkryterium poprawności rozumowania pozostaje zawsze zdrowy rozsądek iprzekonanie o&nbsp;słuszności wywodu. Logika, która narodziła się jakonauka o rozumowaniu, jest jednak ważnym i&nbsp;potrzebnym narzędziem, któreto przekonanie ułatwia.
Wnioskowanie o prawdziwości rozmaitych stwierdzeń jest powszednim
zajęciem matematyków i nie tylko matematyków. Dlatego
filozofowie i matematycy od dawna zajmowali się systematyzacją metod
wnioskowania i kryteriów ich poprawności. Oczywiście ostatecznym
kryterium poprawności rozumowania pozostaje zawsze zdrowy rozsądek i
przekonanie o&nbsp;słuszności wywodu. Logika, która narodziła się jako
nauka o rozumowaniu, jest jednak ważnym i&nbsp;potrzebnym narzędziem, które
to przekonanie\boldsymbol{s}}\def\blank{\hbox\mathsf{ Błatwia.  


Szczególną rolę wśród rozmaitych działów logiki zajmuje logikamatematyczna, poświęcona opisowi i analizie języka matematyki orazpoprawności wnioskowań matematycznych. Jest to dyscyplina w&nbsp;pewnymsensie paradoksalna:&nbsp;będąc sama częścią matematyki, traktujematematykę jako swój przedmiot zainteresowania. Dla uniknięcia,,błędnego koła'' musimy więc tutaj zauważyć, że logika formalna nieopisuje rzeczywistych wywodów matematyka, ale ich uproszczonemodele, które bez zastrzeżeń można uważać za zwykłe obiektymatematyczne. Mimo tego ograniczenia, logika matematyczna dostarczaniezwykle ważnych wniosków o&nbsp;charakterze filozoficznymi&nbsp;metamatematycznym.
Szczególną rolę wśród rozmaitych działów logiki zajmuje logika
matematyczna, poświęcona opisowi i analizie języka matematyki oraz
poprawności wnioskowań matematycznych. Jest to dyscyplina w&nbsp;pewnym
sensie paradoksalna:&nbsp;będąc sama częścią matematyki, traktuje
matematykę jako swój przedmiot zainteresowania. Dla\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bniknięcia
,,błędnego koła'' musimy więc tutaj zauważyć, że logika formalna nie
opisuje rzeczywistych wywodów matematyka, ale ich\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bproszczone
modele, które bez zastrzeżeń można\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bważać za zwykłe obiekty
matematyczne. Mimo tego ograniczenia, logika matematyczna dostarcza
niezwykle ważnych wniosków o&nbsp;charakterze filozoficznym
i&nbsp;metamatematycznym.  


Logika formalna była kiedyś ezoteryczną nauką z pogranicza filozofii imatematyki, potem stała się pełnoprawnym działem czystej matematyki.Jeszcze później, wraz z narodzinami informatyki, zaczęła być corazbardziej postrzegana jako dziedzina matematyki stosowanej, a&nbsp;zwłaszcza podstaw informatyki.
Logika formalna była kiedyś\Delta\vdashzoteryczną nauką z pogranicza filozofii i
matematyki, potem stała się pełnoprawnym działem czystej matematyki.  
Jeszcze później, wraz z narodzinami informatyki, zaczęła być coraz
bardziej postrzegana jako dziedzina matematyki stosowanej, a&nbsp;zwłaszcza
podstaw informatyki.  


Logika matematyczna stosowana jest dziś szeroko w informatyce. Semantyka i weryfikacja programów, teoria złożoności i teoria automatów,programowanie funkcyjne i programowanie w logice --- to tylko niektórez działów informatyki, w których metody logiki formalnej stały się standardowym narzędziem zarówno badacza jak i praktyka.
Logika matematyczna stosowana jest dziś szeroko w informatyce. Semantyka
i weryfikacja programów, teoria złożoności i teoria automatów,  
programowanie funkcyjne i programowanie w logice --- to tylko niektóre
z działów informatyki, w których metody logiki formalnej stały się
standardowym narzędziem zarówno badacza jak i praktyka.  


==Rachunek zdań}\setcounter{twierdzenie}{0}\label{aleksander==
==Rachunek zdań==


Jak powiedzieliśmy wyżej, logika matematyczna zajmuje się badaniem
rozmaitych systemów formalnych, modelujących rzeczywiste sposoby
wnioskowania matematycznego. Do najprostszych takich systemów
należą różne warianty ''logiki zdaniowej'' zwanej też
''rachunkiem zdań''. Język rachunku zdań jest bardzo prosty. 
Nie ma w nim wyrażeń stwierdzających jakiś stan rzeczy, 
zajście jakichś faktów, czy też wyrażeń orzekających o własnościach obiektów.
Przedmiotem naszego zainteresowania są tu tylko możliwe 
zależności pomiędzy stwierdzeniami \begin{eqnarray*}zdaniami orzekającymi\end{eqnarray*}, oraz to
w jaki sposób prawdziwość zdań złożonych zależy od prawdziwości ich
składowych. Sens samych składowych pozostaje tu całkowicie dowolny 
i&nbsp;nieistotny. Dlatego w rachunku zdań odpowiadają im po prostu 
''zmienne zdaniowe''. Zdania złożone budujemy ze zmiennych za pomocą
''spójników logicznych'' takich jak ''alternatywa\/''&nbsp;<math>\vee</math>,
''koniunkcja''&nbsp;<math>\wedge</math>, ''negacja''&nbsp;<math>\neg</math>, 
czy ''\rightarrowlikacja''&nbsp;<math>\to</math>. 
Wygodne są też ''stałe logiczne''&nbsp;<math>\bot</math> \begin{eqnarray*}fałsz\end{eqnarray*} i <math>\top</math>&nbsp;\begin{eqnarray*}prawda\end{eqnarray*},
które można\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bważać za zeroargumentowe spójniki logiczne.
Dlatego nasza pierwsza definicja jest  taka:


Jak powiedzieliśmy wyżej, logika matematyczna zajmuje się badaniemrozmaitych systemów formalnych, modelujących rzeczywiste sposobywnioskowania matematycznego. Do najprostszych takich systemów należą różne warianty ''logiki zdaniowej\/'' zwanej też ''rachunkiem zdań\/''. Język rachunku zdań jest bardzo prosty. Nie ma w nim wyrażeń stwierdzających jakiś stan rzeczy, zajście jakichś faktów, czy też wyrażeń orzekających o własnościach obiektów.Przedmiotem naszego zainteresowania są tu tylko możliwe zależności pomiędzy stwierdzeniami (zdaniami orzekającymi), oraz tow jaki sposób prawdziwość zdań złożonych zależy od prawdziwości ichskładowych. Sens samych składowych pozostaje tu całkowicie dowolny i&nbsp;nieistotny. Dlatego w rachunku zdań odpowiadają im po prostu  ''zmienne zdaniowe\/''. Zdania złożone budujemy ze zmiennych za pomocą    ''spójników logicznych\/'' takich jak ''alternatywa\/''&nbsp;<math>\vee</math>,      ''koniunkcja\/''&nbsp;<math>\wedge</math>, ''negacja''&nbsp;<math>\neg</math>,    czy ''implikacja\/''&nbsp;<math>\to</math>.      Wygodne są też ''stałe logiczne\/''&nbsp;<math>\bot</math> (fałsz) i <math>\top</math>&nbsp;(prawda),które można uważać za zeroargumentowe spójniki logiczne.Dlatego nasza pierwsza definicja jest  taka:
{{definicja||radamalpa|


\begin{definicja} <span id="radamalpa" \> \rm Ustalamy pewien przeliczalnie   nieskończony zbiór&nbsp;<math>\zmz</math> symboli, które będziemy nazywać     ''zmiennymi zdaniowymi\/'' i zwykle oznaczać literami <math>p</math>, <math>q</math>, itp.  Pojęcie ''formuły zdaniowej\/'' definiujemy przez indukcję:
Ustalamy pewien przeliczalnie
*item Zmienne zdaniowe oraz <math>\bot</math> i <math>\top</math> są formułami zdaniowymi;
nieskończony zbiór&nbsp;<math>\\mbox{\small ZZ}</math> symboli, które będziemy nazywać
*em Jeśli napis <math>\varphi</math> jest formułą zdaniową, to także napis   <math>\neg\varphi</math> jest formułą zdaniową;
''zmiennymi zdaniowymi'' i zwykle oznaczać literami <math>p</math>, <math>q</math>, itp.   
*item Jeśli napisy <math>\varphi</math> i <math>\psi</math> są formułami zdaniowymi to       napisy <math>(\varphi\to\psi)</math>, <math>(\varphi\vee\psi)</math> i <math>(\varphi\wedge\psi)</math>też są formułami zdaniowymi.
Pojęcie ''formuły zdaniowej'' definiujemy przez indukcję:  
Inaczej mówiąc, formuły zdaniowe to elementy najmniejszego zbioru    napisów <math>\zfz</math>, zawierającego <math>\zmz\cup\{\bot,\top\}</math> i takiego, że    dla dowolnych </math>\varphi,\psi\in\zfz<math> także </math>\neg\varphi,(\varphi\to\psi),  (\varphi\vee\psi), (\varphi\wedge\psi)</math> należą do <math>\zfz</math>.\end{definicja}
*Zmienne zdaniowe oraz <math>\bot</math> i <math>\top</math> są formułami zdaniowymi;  
*Jeśli napis <math>\var\varphi</math> jest formułą zdaniową, to także napis
<math>\neg\var\varphi</math> jest formułą zdaniową;  
*Jeśli napisy <math>\var\varphi</math> i <math>\psi</math> są formułami zdaniowymi to
napisy <math>\begin{eqnarray*}\var\varphi\to\psi\end{eqnarray*}</math>, <math>\begin{eqnarray*}\var\varphi\vee\psi\end{eqnarray*}</math> i <math>\begin{eqnarray*}\var\varphi\wedge\psi\end{eqnarray*}</math>  
też są formułami zdaniowymi.  


  '''Konwencje notacyjne:''' Dla pełnej jednoznaczności składni nasze formuły są w pełni nawiasowane. W praktyce wiele nawiasów pomijamy, stosując przy tym następujące priorytety:
Inaczej mówiąc, formuły zdaniowe to\Delta\vdashlementy najmniejszego zbioru
#Negacja;
napisów <math>\\F_{{\sc Z}}</math>, zawierającego <math>\\mbox{\small ZZ}\cup\{\bot,\top\}</math> i takiego, że  
dla dowolnych</math>\var\varphi,\psi\in\\F_{{\sc Z}}<math>także</math>\neg\var\varphi,\begin{eqnarray*}\var\varphi\to\psi\end{eqnarray*},
\begin{eqnarray*}\var\varphi\vee\psi\end{eqnarray*}, \begin{eqnarray*}\var\varphi\wedge\psi\end{eqnarray*}</math> należą do <math>\\F_{{\sc Z}}</math>.  
}}


'''Konwencje notacyjne:''' Dla pełnej jednoznaczności składni nasze formuły 
są w pełni nawiasowane. W praktyce wiele nawiasów pomijamy, stosując 
przy tym następujące priorytety: 
#Negacja; 


#Koniunkcja i alternatywa;
#Koniunkcja i alternatywa;  


#Implikacja. 


#Implikacja.
<!--% -->  
<!--%-->Zatem na przykład wyrażenie   <math>\neg\varphi\vee\psi\to\vartheta</math> oznacza   <math>((\neg\varphi\vee\psi)\to\vartheta)</math>, ale napis   <math>\varphi\vee\psi\wedge \vartheta</math> jest niepoprawny.
Zatem na przykład wyrażenie
<math>\neg\var\varphi\vee\psi\to\vartheta</math> oznacza
<math>\begin{eqnarray*}\begin{eqnarray*}\neg\var\varphi\vee\psi\end{eqnarray*}\to\vartheta\end{eqnarray*}</math>, ale napis
<math>\var\varphi\vee\psi\wedge \vartheta</math> jest niepoprawny.  


===Znaczenie formuł} W {\it logice klasycznej\/===
===Znaczenie formuł===
formuły jest wartość logiczna tj.&nbsp;,,prawda'' (1) lub ,,fałsz''&nbsp;(0).Aby określić wartość formuły zdaniowej trzeba jednak najpierw ustalić wartości zmiennych.
formuły jest wartość logiczna tj.&nbsp;,,prawda'' \begin{eqnarray*}1\end{eqnarray*} lub ,,fałsz''&nbsp;\begin{eqnarray*}0\end{eqnarray*}.  
Aby określić wartość formuły zdaniowej trzeba jednak najpierw\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bstalić 
wartości zmiennych.  


\begin{definicja} <span id="zesiesmieli" \> \rm    Przez ''wartościowanie zdaniowe\/'' rozumiemy dowolną funkcję&nbsp;<math>\varrho</math>,która zmiennym zdaniowym przypisuje wartości logiczne 0 lub&nbsp;1.    ''Wartość formuły\/'' zdaniowej <math>\varphi</math> przy    wartościowaniu&nbsp;<math>\varrho</math> oznaczamy przez <math>\wfz\varphi\varrho</math> i określamyprzez indukcję:
{{definicja||zesiesmieli|
*item <math>\wfz\bot\varrho=0</math> oraz <math>\wfz\top\varrho=1</math>;
*item <math>\wfz{p}{\varrho}=\varrho(p)</math>, gdy <math>p</math> jest symbolem zdaniowym;
*em <math>\wfz{\neg\varphi}\varrho=1-\wfz{\varphi}\varrho</math>;
*m </math>\wfz{\varphi\vee\psi}{\varrho}=\max\{\wfz{\varphi}{\varrho}, \wfz{\psi}{\varrho}\}</math>;
*m </math>\wfz{\varphi\wedge\psi}{\varrho}=\min\{\wfz{\varphi}{\varrho}, \wfz{\psi}{\varrho}\}</math>;
*em <math>\wfz{\varphi\to\psi}{\varrho}=0</math>, gdy    <math>\wfz\varphi\varrho=1</math> i <math>\wfz\psi\varrho=0</math>;
*em <math>\wfz{\varphi\to\psi}\varrho=1</math>, \wpp.
\end{definicja}


Łatwo można zauważyć, że </math>\wfz{\varphi\to\psi}{\varrho} =  \max\{\wfz\psi\varrho,1-\wfz\varphi\varrho\}</math>,   czyli <math>\wfz{\varphi\to\psi}\varrho=\wfz{\neg\varphi\vee\psi}\varrho</math>, dla    dowolnego&nbsp;<math>\varrho</math>. A zatem zamiast formuły <math>\varphi\to\psi</math> moglibyśmy  z równym powodzeniem używać wyrażenia <math>\neg\varphi\vee\psi</math>, lub też    odwrotnie: zamiast alternatywy <math>\varphi\vee\psi</math> pisać <math>\neg\varphi\to\psi</math>.Nasz wybór spójników nie jest więc ,,najoszczędniejszy'', w istocie w logice klasycznej wystarczy używać np.&nbsp;implikacji i fałszu  (Ćwiczenie&nbsp;[[#udacczleka]]). Czasem i my będziemy korzystać z tego wygodnego uproszczenia, przyjmując, że ,,oficjalnymi'' spójnikami są tylko implikacja i fałsz, a pozostałe to skróty notacyjne, tj.&nbsp;że napisy<!--%-->\begin{tabbing} \hspace{3.0cm}\quad \= <math>\neg\varphi</math> \qquad \= oznaczają odpowiednio \quad  \=<math>\varphi\to\bot</math>;\\ \hspace{2.0cm}\ \ \ \> <math>\top</math>\> \ \ \ \   \> <math>\neg\bot</math>;\\   \hspace{2.0cm}\ \ \ \> <math>\varphi\vee\psi</math> \> \ \ \ \   \> <math>\neg\varphi\to\psi</math>;\\   \hspace{2.0cm}\ \ \  \> <math>\varphi\wedge\psi</math> \> \ \ \ \   \> <math>\neg(\varphi\to\neg\psi)</math>.\end{tabbing} Będziemy też czasem pisać <math>\varphi\oto\psi</math> zamiast  <math>(\varphi\to\psi)\wedge(\psi\to\varphi)</math>. Zauważmy, że  <math>\wfz{\varphi\oto\psi}\varrho=1</math> \wtw, gdy  <math>\wfz{\varphi\to\psi}\varrho=\wfz{\psi\to\varphi}\varrho</math>.
Przez ''wartościowanie zdaniowe'' rozumiemy dowolną funkcję&nbsp;<math>\varrho</math>,  
która zmiennym zdaniowym przypisuje wartości logiczne 0 lub&nbsp;1. 
''Wartość formuły'' zdaniowej <math>\var\varphi</math> przy 
wartościowaniu&nbsp;<math>\varrho</math> oznaczamy przez <math>\wfz\var\varphi\varrho</math> i określamy
przez indukcję:
*<math>\wfz\bot\varrho=0</math> oraz <math>\wfz\top\varrho=1</math>;
*<math>\wf\prooftree p \justifies \varrho \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree=\varrho\begin{eqnarray*}p\end{eqnarray*}</math>, gdy <math>p</math> jest symbolem zdaniowym;  
*<math>\wfz{\neg\var\varphi}\varrho=1-\wfz{\var\varphi}\varrho</math>;
*</math>\wf\prooftree \var\varphi\vee\psi \justifies \varrho \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree=\max\{\wf\prooftree \var\varphi \justifies \varrho \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree,
\wf\prooftree \psi \justifies \varrho}\ \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>;
*</math>\wf\prooftree \var\varphi\wedge\psi \justifies \varrho \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree=\min\{\wf\prooftree \var\varphi \justifies \varrho \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree,
\wf\prooftree \psi \justifies \varrho}\ \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>;
*<math>\wf\prooftree \var\varphi\to\psi \justifies \varrho \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree=0</math>, gdy 
<math>\wfz\var\varphi\varrho=1</math> i <math>\wfz\psi\varrho=0</math>;
*<math>\wfz{\var\varphi\to\psi}\varrho=1</math>, \wpp.  


  Często stosowanym skrótem jest notacja <math>\bigvee_{i\in I}\varphi_i</math>    oznaczająca alternatywę wszystkich formuł&nbsp;<math>\varphi_i</math>, gdzie <math>i</math>  przebiega skończony zbiór&nbsp;<math>I</math>. Analogicznie stosuje się  zapis <math>\bigwedge_{i\in I}\varphi_i</math>.
}}  


'''Notacja i terminologia:'''    Jeśli <math>\kl\varphi_\varrho=1</math> to piszemy też <math>\varrho\models\varphi</math>      lub <math>\models\varphi[\varrho]</math> i mówimy, że <math>\varphi</math> jest ''spełniona\/'' przez    wartościowanie&nbsp;<math>\varrho</math>. Jeśli <math>\Gamma</math> jest zbiorem formuł zdaniowych, oraz    <math>\varrho\models\gamma</math> dla wszystkich <math>\gamma\in\Gamma</math>, to piszemy  <math>\varrho\models\Gamma</math>. Wreszcie <math>\Gamma\models\varphi</math> oznacza, że każde wartościowanie spełniające    wszystkie formuły z&nbsp;<math>\Gamma</math> spełnia także formułę&nbsp;<math>\varphi</math>. Mówimy wtedy,      że <math>\varphi</math> jest ''semantyczną konsekwencją\/'' zbioru&nbsp;<math>\Gamma</math>.     Jeśli <math>\Gamma=\emptyset</math> to zamiast <math>\Gamma\models\varphi</math> piszemy    po prostu <math>\models\varphi</math>. Oznacza to, że formuła <math>\varphi</math> jest spełnionaprzez każde wartościowanie. Na koniec powiedzmy jeszcze, że formułami ''równoważnymi\/'' nazywamy takie formuły    <math>\varphi</math> i <math>\psi</math>, których wartości przy każdym wartościowaniu są takie same (tj.&nbsp;takie, że&nbsp;równoważność <math>\varphi\oto\psi</math> jest tautologią ---patrz niżej).
Łatwo można zauważyć, że</math>\wf\prooftree \var\varphi\to\psi \justifies \varrho \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree =
\max\{\wfz\psi\varrho,1-\wfz\var\varphi\varrho\}</math>
czyli <math>\wfz{\var\varphi\to\psi}\varrho=\wfz{\neg\var\varphi\vee\psi}\varrho</math>, dla
dowolnego&nbsp;<math>\varrho</math>. A zatem zamiast formuły <math>\var\varphi\to\psi</math> moglibyśmy 
z równym powodzeniem\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bżywać wyrażenia <math>\neg\var\varphi\vee\psi</math>, lub też 
odwrotnie: zamiast alternatywy <math>\var\varphi\vee\psi</math> pisać <math>\neg\var\varphi\to\psi</math>.
Nasz wybór spójników nie jest więc ,,najoszczędniejszy'', w istocie 
w logice klasycznej wystarczy\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bżywać np.&nbsp;\rightarrowlikacji i fałszu 
\begin{eqnarray*}Ćwiczenie&nbsp;[[#udacczleka]]\end{eqnarray*}. Czasem i my będziemy korzystać z tego 
wygodnego\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bproszczenia, przyjmując, 
że ,,oficjalnymi'' spójnikami są tylko \rightarrowlikacja i fałsz, a pozostałe 
to skróty notacyjne, tj.&nbsp;że napisy
<!--% -->
\begin{tabbing}
\hspace{3.0cm}\quad \= <math>\neg\var\varphi</math> \qquad \= oznaczają  
odpowiednio \quad
\=<math>\var\varphi\to\bot</math>;\\
\hspace{2.0cm}\ \ \  \> <math>\top</math>\> \ \ \ \ 
\> <math>\neg\bot</math>;\\ 
\hspace{2.0cm}\ \ \  \> <math>\var\varphi\vee\psi</math> \> \ \ \ \ 
\> <math>\neg\var\varphi\to\psi</math>;\\ 
\hspace{2.0cm}\ \ \  \> <math>\var\varphi\wedge\psi</math> \> \ \ \ \ 
\> <math>\neg\begin{eqnarray*}\var\varphi\to\neg\psi\end{eqnarray*}</math>.
\end{tabbing}
Będziemy też czasem pisać <math>\var\varphi\\leftrightarrow\psi</math> zamiast 
<math>\begin{eqnarray*}\var\varphi\to\psi\end{eqnarray*}\wedge\begin{eqnarray*}\psi\to\var\varphi\end{eqnarray*}</math>. Zauważmy, że   
<math>\wfz{\var\varphi\\leftrightarrow\psi}\varrho=1</math> \wtw, gdy  
<math>\wfz{\var\varphi\to\psi}\varrho=\wfz{\psi\to\var\varphi}\varrho</math>.  


Często stosowanym skrótem jest notacja <math>\bigvee_{i\in I}\var\varphi_i</math>
oznaczająca alternatywę wszystkich formuł&nbsp;<math>\var\varphi_i</math>, gdzie <math>i</math>
przebiega skończony zbiór&nbsp;<math>I</math>. Analogicznie stosuje się
zapis <math>\bigwedge_{i\in I}\var\varphi_i</math>.


'''Notacja i terminologia:''' 
Jeśli <math>\kl\var\varphi_\varrho=1</math> to piszemy też <math>\varrho\models\var\varphi</math> 
lub <math>\models\var\varphi[\varrho]</math> i mówimy, że <math>\var\varphi</math> jest ''spełniona'' 
przez 
wartościowanie&nbsp;<math>\varrho</math>. Jeśli <math>\Gamma</math> jest zbiorem formuł zdaniowych, oraz 
<math>\varrho\models\gamma</math> dla wszystkich <math>\gamma\in\Gamma</math>, to piszemy 
<math>\varrho\models\Gamma</math>.
Wreszcie <math>\Gamma\models\var\varphi</math> oznacza, że każde wartościowanie spełniające 
wszystkie formuły z&nbsp;<math>\Gamma</math> spełnia także formułę&nbsp;<math>\var\varphi</math>. Mówimy wtedy, 
że <math>\var\varphi</math> jest ''semantyczną konsekwencją'' zbioru&nbsp;<math>\Gamma</math>. 
Jeśli <math>\Gamma=\emptyset</math> to zamiast <math>\Gamma\models\var\varphi</math> piszemy 
po prostu <math>\models\var\varphi</math>. Oznacza to, że formuła <math>\var\varphi</math> jest spełniona
przez każde wartościowanie. Na koniec powiedzmy jeszcze, że formułami 
''równoważnymi'' nazywamy takie formuły 
<math>\var\varphi</math> i <math>\psi</math>, których wartości przy każdym wartościowaniu są takie
same \begin{eqnarray*}tj.&nbsp;takie, że&nbsp;równoważność <math>\var\varphi\\leftrightarrow\psi</math> jest tautologią ---
patrz niżej\end{eqnarray*}.


\begin{definicja}\rm <span id="kiedymogla" \>      Formuła <math>\varphi</math> jest ''spełnialna\/'', gdy <math>\varrho\models\varphi</math>    zachodzi dla pewnego wartościowania&nbsp;<math>\rho</math>. Jeśli zaś <math>\models\varphi</math>  to mówimy, że <math>\varphi</math> jest  ''tautologią\/'' (klasycznego) rachunku zdań. Oczywiście <math>\neg\varphi</math>  jest spełnialna \wtw, gdy <math>\varphi</math> nie jest tautologią.\end{definicja}


===Tautologie rachunku zdań===
{{definicja||kiedymogla|


Formuła <math>\var\varphi</math> jest ''spełnialna'', gdy <math>\varrho\models\var\varphi</math> 
zachodzi dla pewnego wartościowania&nbsp;<math>\rho</math>. Jeśli zaś <math>\models\var\varphi</math> 
to mówimy, że <math>\var\varphi</math> jest
''tautologią'' \begin{eqnarray*}klasycznego\end{eqnarray*} rachunku zdań. Oczywiście <math>\neg\var\varphi</math>
jest spełnialna \wtw, gdy <math>\var\varphi</math> nie jest tautologią.
}}


  Niech <math>S</math> będzie funkcją przypisujacą symbolom zdaniowym pewne formuły.    Jeśli <math>\varphi</math> jest formułą zdaniową, to przez <math>S(\varphi)</math> oznaczymy  formu\lę otrzymaną z <math>\varphi</math> przez jednoczesną zamianę każdego wystąpienia zmiennej      zdaniowej <math>p</math> na formu\lę <math>S(p)</math>. Mówimy, że formuła <math>S(\varphi)</math> jest    ''instancją\/'' schematu zdaniowego <math>\varphi</math>. Używamy oznaczenia  <math>S(\Gamma) = \{S(\psi)\ |\ \psi\in\Gamma\}</math>.
===Tautologie rachunku zdań===


\begin{fakt} <span id="instancja2" \>   Jeżeli\/ <math>\Gamma</math> jest zbiorem formu\l\ rachunku zdań i    <math>\Gamma\models\varphi</math>, to także <math>S(\Gamma)\models S(\varphi)</math>.   W&nbsp;szczególności, jeśli <math>\varphi</math> jest tautologią  to <math>S(\varphi)</math> jest też tautologią.\end{fakt}\vspace{-5mm}\begin{dowod} Ćwiczenie.\end{dowod}
Niech <math>S</math> będzie funkcją przypisujacą symbolom zdaniowym pewne formuły.
Jeśli <math>\var\varphi</math> jest formułą zdaniową, to przez <math>S\begin{eqnarray*}\var\varphi\end{eqnarray*}</math> oznaczymy 
formu\lę otrzymaną z <math>\var\varphi</math> przez jednoczesną 
zamianę każdego wystąpienia zmiennej 
zdaniowej <math>p</math> na formu\lę <math>S\begin{eqnarray*}p\end{eqnarray*}</math>. Mówimy, że formuła <math>S\begin{eqnarray*}\var\varphi\end{eqnarray*}</math> jest
''instancją'' schematu zdaniowego <math>\var\varphi</math>. Używamy oznaczenia 
<math>S\begin{eqnarray*}\Gamma\end{eqnarray*} = \{S\begin{eqnarray*}\psi\end{eqnarray*}\ |\ \psi\in\Gamma\}</math>.


\begin{przyklad} <span id="taut-rz" \> \rm\parskip=2mmNastępujące formuły (i wszystkie ich instancje) są tautologiami rachunku zdań:%<!--%-->
{{fakt||instancja2|
#tem <span id="1" \>  <math>\bot\to p</math>;
#tem <span id="2" \>  <math>p\to(q\to p)</math>;
#tem <span id="3" \>  <math>(p\to(q\to r))\to((p\to q)\to(p\to r))</math>;
#tem <span id="4" \>  <math>((p\to q)\to p)\to p</math>;
#tem <span id="5" \>  <math>p\vee\neg p</math>;
#\item <span id="6" \>  <math>p \to \neg\neg p</math>\quad oraz \quad <math>\neg\neg p \to p</math>;
#tem <span id="7" \>  <math>(p\to q)\to(\neg q\to\neg p)</math> \quad oraz \quad  <math>(\neg q\to\neg p)\to (p\to q)</math>;
#\item <span id="8" \>  <math>p\to(p\vee q)</math>, \quad <math>q\to(p\vee q)</math>\quad  oraz \quad  <math>(p\to r)\to((q\to r)\to(p\vee q \to r))</math>;
#\item <span id="9" \>  <math>(p\wedge q)\to p</math>,\quad  <math>(p\wedge q)\to q</math>\quad  oraz \quad  <math>(r\to p)\to((r\to q)\to(r\to(p\wedge q)))</math>;
#tem <span id="10" \>  <math>((p\wedge q)\to r)\leftrightarrow(p\to(q\to r))</math>;
#tem <span id="11" \>  <math>\neg(p\vee q) \leftrightarrow (\neg p\wedge \neg q)</math>;
#tem <span id="12" \>  <math>\neg(p\wedge q) \leftrightarrow (\neg p\vee \neg q)</math>;
#tem <span id="12a" \>  <math>(p\to q)\oto (\neg p\vee q)</math>;
#em <span id="13" \>  </math>((p\leftrightarrow q)\leftrightarrow r) \leftrightarrow (p\leftrightarrow(q\leftrightarrow r))</math>;
#tem <span id="14" \>  <math>p\vee\bot\oto p</math> \quad  oraz \quad  <math>p\wedge\top\oto p</math>.
\begin{dowod} Łatwy. \end{dowod}


Niektóre z powyższych formu\l\ wskazują na analogię pomiędzyimplikacją i uporządkowaniem (np.&nbsp;zawieraniem zbiorów). Implikację    <math>p\to q</math> można odczytać tak: ,,warunek <math>p</math> jest silniejszy (mniejszy    lub równy) od <math>q</math>''. Formu\lę&nbsp;([[#1]]) czytamy wtedy: ,,fałsz jest najsilniejszym warunkiem (najmniejszym elementem)''.    Formuły&nbsp;([[#8]]) stwierdzają, że alternatywa <math>p\vee q</math> jest     najsilniejszym warunkiem, który wynika zarówno z <math>p</math> jak i z <math>q</math> (czyli    jest kresem górnym pary <math>\{p,q\}</math>, jak suma zbiorów). Formuły&nbsp;([[#9]]) wyrażają dualną własność koniunkcji: to jest kres dolny, czyli najsłabszy warunek implikujący oba argumenty.  Prawa de&nbsp;Morgana&nbsp;([[#11]],[[#12]]) wskazują też na analogie koniunkcja -- iloczyn, alternatywa -- suma, negacja -- dopełnienie.  Ta ostatnia widoczna jest też w prawach wyłączonego środka&nbsp;([[#5]]),  podwójnej negacji&nbsp;([[#6]]) i&nbsp;kontrapozycji&nbsp;([[#7]]).
Jeżeli <math>\Gamma</math> jest zbiorem formu\l\ rachunku zdań i 
<math>\Gamma\models\var\varphi</math>, to także <math>S\begin{eqnarray*}\Gamma\end{eqnarray*}\models S\begin{eqnarray*}\var\varphi\end{eqnarray*}</math>.
W&nbsp;szczególności, jeśli <math>\var\varphi</math> jest tautologią 
to <math>S\begin{eqnarray*}\var\varphi\end{eqnarray*}</math> jest też tautologią.  
}}
{{dowod||


O ile&nbsp;([[#9]]) wskazuje na analogię pomiędzy koniunkcją i iloczynemmnogościowym, o tyle warto zauważyć, że koniunkcja ma teżwłasności podobne do iloczynu kartezjańskiego. Jeśli zbiór funkcji      z&nbsp;<math>A</math> do <math>B</math> oznaczymy przez <math>[A\to B]</math>, to mamy (bardzo naturalną)  równoliczność <math>[A\times B\to C]\sim [A\to[B\to C]]</math>. Podobieństwo  tego związku do formuły&nbsp;([[#10]]) nie jest wcale przypadkowe.  Wrócimy do tego w Rozdziale&nbsp;[[#logint]].
}}


Formuła&nbsp;([[#12a]]) wyraża implikację z pomocą negacji i alternatywyi jest często bardzo przydatna, gdy np. chcemy przekształcić jakąśformułę do prostszej postaci.
{{przyklad||14|


  Formuła&nbsp;([[#2]]) mówi, że dodatkowe założenie można zawsze  zignorować. Formuła&nbsp;([[#3]]) (prawo Frege) wyraża dystrybutywność implikacji względem siebie samej i może być odczytywana tak:     jeśli <math>r</math> wynika z&nbsp;<math>q</math> w kontekście <math>p</math>, to ten kontekst może  być włączony do założenia i&nbsp;konkluzji. Formuła&nbsp;([[#4]]) (prawo Peirce'a) wyraża przy pomocy samej implikacji zasadniczą własnośćlogiki klasycznej: możliwość rozumowania przez zaprzeczenie. Sens  prawa Peirce'a widać najlepiej gdy <math>q</math> jest fałszem, otrzymujemy wtedy  prawo Claviusa: <math>(\neg p\to p)\to p</math>.  
Następujące formuły \begin{eqnarray*}i wszystkie ich instancje\end{eqnarray*}  
są tautologiami rachunku zdań:%
<!--% -->
<math>\begin{eqnarray*}\neg q\to\neg p\end{eqnarray*}\to \begin{eqnarray*}p\to q\end{eqnarray*}</math>;  
<math>\begin{eqnarray*}p\to r\end{eqnarray*}\to\begin{eqnarray*}\begin{eqnarray*}q\to r\end{eqnarray*}\to\begin{eqnarray*}p\vee q \to r\end{eqnarray*}\end{eqnarray*}</math>;
<math>\begin{eqnarray*}r\to p\end{eqnarray*}\to\begin{eqnarray*}\begin{eqnarray*}r\to q\end{eqnarray*}\to\begin{eqnarray*}r\to\begin{eqnarray*}p\wedge q\end{eqnarray*}\end{eqnarray*}\end{eqnarray*}</math>;  
\begin{eqnarray*}p\leftrightarrow\begin{eqnarray*}q\leftrightarrow r\end{eqnarray*}\end{eqnarray*}</math>;
<math>p\wedge\top\\leftrightarrow p</math>.
}}
{{dowod||


  Warto zauważyć, że formuły w parach&nbsp;([[#6]]) i&nbsp;([[#7]]) nie są wcale tak symetryczne jak się wydaje na pierwszy rzut oka. Na przykład,    pierwsza z formu\l&nbsp;([[#6]]) to w istocie <math>p \to ((p\to\bot)\to\bot)</math>.      Wiedząc, że <math>p</math> i <math>p\to\bot</math>, natychmiast zgadzamy się na <math>\bot</math>. Intuicyjne uzasadnienie drugiej formuły jest zaś w istocie związane  z prawem&nbsp;([[#5]]).
}}


Własnością, która często uchodzi naszej uwagi, jest  łączność równoważności&nbsp;([[#13]]). W&nbsp;zwiazku z tym, wyrażenie  <math>\varphi \oto \psi \oto \vartheta</math> można z czystym sumieniem pisać bez nawiasów. Zwróćmy jednak uwagę na to, że oznacza ono zupełnie      co innego niż stwierdzenie że <math>\varphi</math>, <math>\psi</math> i <math>\vartheta</math> są sobie nawzajem równoważne!
Niektóre z powyższych formu\l\ wskazują na analogię pomiędzy
\rightarrowlikacją i\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bporządkowaniem \begin{eqnarray*}np.&nbsp;zawieraniem zbiorów\end{eqnarray*}. Implikację
<math>p\to q</math> można odczytać tak: ,,warunek <math>p</math> jest silniejszy \begin{eqnarray*}mniejszy  
lub równy\end{eqnarray*} od <math>q</math>''. Formu\lę&nbsp;\begin{eqnarray*}[[#1]]\end{eqnarray*} czytamy wtedy: ,,fałsz jest 
najsilniejszym warunkiem \begin{eqnarray*}najmniejszym\Delta\vdashlementem\end{eqnarray*}''.
Formuły&nbsp;\begin{eqnarray*}[[#8]]\end{eqnarray*} stwierdzają, że alternatywa <math>p\vee q</math> jest 
najsilniejszym warunkiem, który wynika zarówno z <math>p</math> jak i z <math>q</math> \begin{eqnarray*}czyli 
jest kresem górnym pary <math>\{p,q\}</math>, jak suma zbiorów\end{eqnarray*}. Formuły&nbsp;\begin{eqnarray*}[[#9]]\end{eqnarray*} 
wyrażają dualną własność koniunkcji: to jest kres dolny, czyli 
najsłabszy warunek \rightarrowlikujący oba argumenty.
Prawa de&nbsp;Morgana&nbsp;\begin{eqnarray*}[[#11]],[[#12]]\end{eqnarray*} wskazują też na analogie 
koniunkcja -- iloczyn, alternatywa -- suma, negacja -- dopełnienie. 
Ta ostatnia widoczna jest też w prawach wyłączonego środka&nbsp;\begin{eqnarray*}[[#5]]\end{eqnarray*}, 
podwójnej negacji&nbsp;\begin{eqnarray*}[[#6]]\end{eqnarray*} i&nbsp;kontrapozycji&nbsp;\begin{eqnarray*}[[#7]]\end{eqnarray*}.


Ostatnie na liście są dwie równoważności wyrażające taką myśl: fałsz jest,,elementem neutralnym'' dla alternatywy, a prawda dla koniunkcji.   Dlatego <math>\bot</math> możemy uważać za ,,pustą alternatywę'' a <math>\top</math> za ,,pustą koniunkcję''. Powyżej pominięto dobrze znane prawa: łączność i&nbsp;przemienność koniunkcji i&nbsp;alternatywy, ich wzajemną dystrybutywność, przechodniość,zwrotność implikacji itp.  
O ile&nbsp;\begin{eqnarray*}[[#9]]\end{eqnarray*} wskazuje na analogię pomiędzy koniunkcją i iloczynem
mnogościowym, o tyle warto zauważyć, że koniunkcja ma też
własności podobne do iloczynu kartezjańskiego. Jeśli zbiór funkcji
z&nbsp;<math>A</math> do <math>B</math> oznaczymy przez <math>[A\to B]</math>, to mamy \begin{eqnarray*}bardzo naturalną\end{eqnarray*}
równoliczność <math>[A\times B\to C]\sim [A\to[B\to C]]</math>. Podobieństwo 
tego związku do formuły&nbsp;\begin{eqnarray*}[[#10]]\end{eqnarray*} nie jest wcale przypadkowe. 
Wrócimy do tego w Rozdziale&nbsp;[[#logint]].


  ===Postać normalna formuł===
Formuła&nbsp;\begin{eqnarray*}[[#12a]]\end{eqnarray*} wyraża \rightarrowlikację z pomocą negacji i alternatywy
i jest często bardzo przydatna, gdy np. chcemy przekształcić jakąś
formułę do prostszej postaci.  


Formuła&nbsp;\begin{eqnarray*}[[#2]]\end{eqnarray*} mówi, że dodatkowe założenie można zawsze 
zignorować. Formuła&nbsp;\begin{eqnarray*}[[#3]]\end{eqnarray*} \begin{eqnarray*}prawo Frege\end{eqnarray*} wyraża dystrybutywność 
\rightarrowlikacji względem siebie samej i może być odczytywana tak:
jeśli <math>r</math> wynika z&nbsp;<math>q</math> w kontekście <math>p</math>, to ten kontekst może 
być włączony do założenia i&nbsp;konkluzji. Formuła&nbsp;\begin{eqnarray*}[[#4]]\end{eqnarray*} \begin{eqnarray*}prawo 
Peirce'a\end{eqnarray*} wyraża przy pomocy samej \rightarrowlikacji zasadniczą własność
logiki klasycznej: możliwość rozumowania przez zaprzeczenie. Sens
prawa Peirce'a widać najlepiej gdy <math>q</math> jest fałszem, otrzymujemy wtedy
prawo Claviusa: <math>\begin{eqnarray*}\neg p\to p\end{eqnarray*}\to p</math>. 


\begin{definicja}\rm Każdą zmienną zdaniową i negację zmiennej zdaniowej nazwijmy ''literałem\/''. Mówimy, że formuła zdaniowa <math>\varphi</math> jest w {\it koniunkcyjnej postaci  normalnej}, gdy  <math>\varphi</math> jest koniunkcją alternatyw literałów, tj.
Warto zauważyć, że formuły w parach&nbsp;\begin{eqnarray*}[[#6]]\end{eqnarray*} i&nbsp;\begin{eqnarray*}[[#7]]\end{eqnarray*} nie są 
wcale tak symetryczne jak się wydaje na pierwszy rzut oka. Na przykład,  
pierwsza z formu\l&nbsp;\begin{eqnarray*}[[#6]]\end{eqnarray*} to w istocie <math>p \to \begin{eqnarray*}\begin{eqnarray*}p\to\bot\end{eqnarray*}\to\bot\end{eqnarray*}</math>.  
Wiedząc, że <math>p</math> i <math>p\to\bot</math>, natychmiast zgadzamy się na <math>\bot</math>
Intuicyjne\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bzasadnienie drugiej formuły jest zaś w istocie związane  
z prawem&nbsp;\begin{eqnarray*}[[#5]]\end{eqnarray*}.


  \hfil\hfil\hfil </math>\varphi = (p^1_1\vee\cdots\vee p^{k_1}_1)\wedge\cdots\wedge (p^1_r\vee\cdots\vee p^{k_r}_r)</math>,\hfil (*)
Własnością, która często\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bchodzi naszej\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bwagi, jest  
łączność równoważności&nbsp;\begin{eqnarray*}[[#13]]\end{eqnarray*}. W&nbsp;zwiazku z tym, wyrażenie 
<math>\var\varphi \\leftrightarrow \psi \\leftrightarrow \vartheta</math> można z czystym sumieniem 
pisać bez nawiasów. Zwróćmy jednak\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bwagę na to, że oznacza ono zupełnie 
co innego niż stwierdzenie że <math>\var\varphi</math>, <math>\psi</math> i <math>\vartheta</math> 
są sobie nawzajem równoważne!


        gdzie <math>r\geq 0</math>, <math>k_i\geq 0</math>, dla <math>i=0,\ldots r</math>, a wszystkie <math>p^i_j</math> są literałami. Przy tym pustą koniunkcję (<math>r=0</math>) utożsamiamy w myśl      Przykładu&nbsp;[[#taut-rz]]([[#14]]) ze stałą&nbsp;<math>\top</math>, a stała <math>\bot</math> totyle co koniunkcja z&nbsp;jednym pustym składnikiem.\end{definicja}
Ostatnie na liście są dwie równoważności wyrażające taką myśl: fałsz jest
,,elementem neutralnym'' dla alternatywy, a prawda dla koniunkcji.
Dlatego <math>\bot</math> możemy\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bważać za ,,pustą alternatywę'' a <math>\top</math>   
za ,,pustą koniunkcję''. 
Powyżej pominięto dobrze znane prawa: łączność i&nbsp;przemienność 
koniunkcji i&nbsp;alternatywy, ich wzajemną dystrybutywność, przechodniość,  
zwrotność \rightarrowlikacji itp.


\begin{fakt} <span id="pania" \> Dla każdej formuły zdaniowej istnieje równoważna jej formuław koniunkcyjnej postaci normalnej.\end{fakt}\begin{dowod}Dowód jest przez indukcję \zwn&nbsp;długość formuły. Symbole zdaniowe są oczywiście w postaci normalnej. Zgodnie z naszą definicją, także stałe logiczne są postaciami normalnymi.    Jeśli <math>\varphi</math> jest w&nbsp;postaci (*), to <math>\neg\varphi</math>można przekształcić w&nbsp;koniunkcyjną postać normalną stosując prawa De&nbsp;Morgana i prawa dystrybutywności:
===Postać normalna formuł===


\hfil </math>\psi\vee(\vartheta\wedge\zeta)\oto (\psi\vee\vartheta)\wedge(\psi\vee\zeta)</math>\hfil </math>\psi\vee(\vartheta\vee\zeta)\oto (\psi\vee\vartheta)\vee(\psi\vee\zeta)</math>.
{{definicja|||


Podobnie postępujemy z alternatywą dwóch formuł w postaci normalnej.\footnote{Ta procedura jest niestety wykładnicza (Ćwiczenie&nbsp;[[#wziawszy}).]]Przypadek koniunkcji jest oczywisty, a implikację  eliminujemy z pomocą prawa&nbsp;[[#taut-rz]]([[#12a]]). Szczegóły pozostawiamy Czytelnikowi.\end{dowod}
Każdą zmienną zdaniową i negację zmiennej zdaniowej nazwijmy 
''literałem''.
Mówimy, że formuła zdaniowa <math>\var\varphi</math> jest w {\it koniunkcyjnej postaci
normalnej}, gdy  <math>\var\varphi</math> jest koniunkcją  alternatyw literałów, tj.  


\subsection*{Ćwiczenia}\begin{small}
\hfil\hfil\hfil</math>\var\varphi = \begin{eqnarray*}p^1_1\vee\cdots\vee p^{k_1}_1\end{eqnarray*}\wedge\cdots\wedge
#Zbadać, czy następujące formuły są tautologiami rachunku zdańi czy są spełnialne:
\begin{eqnarray*}p^1_r\vee\cdots\vee p^{k_r}_r\end{eqnarray*}</math>,\hfil \begin{eqnarray*}*\end{eqnarray*}


gdzie <math>r\geq 0</math>, <math>k_i\geq 0</math>, dla <math>i=0,\ldots r</math>, a wszystkie <math>p^i_j</math> 
są literałami.
Przy tym pustą koniunkcję \begin{eqnarray*}<math>r=0</math>\end{eqnarray*}\boldsymbol{s}}\def\blank{\hbox\mathsf{ Btożsamiamy w myśl 
Przykładu&nbsp;[[#taut-rz]]\begin{eqnarray*}[[#14]]\end{eqnarray*} ze stałą&nbsp;<math>\top</math>, a stała <math>\bot</math> to
tyle co koniunkcja z&nbsp;jednym pustym składnikiem.
}}


##em <math>(p\to r)\wedge(q\to s)\wedge(\neg p\vee \neg s)\to (\neg p\vee \neg q)</math>;
{{fakt||pania|
##em <math>(p\to q)\vee(q\to r)</math>;
##em <math>((p\to q)\to r)\wedge\neg(((q\to r)\to r)\to r))</math>;
##em <math>(p\to q)\wedge(\neg p\to r)\to (r\to\neg q)</math>;
##em <math>((\neg p\to q)\to r)\to \neg(p\to q)</math>;
##em <math>p\vee(\neg p\wedge q)\vee(\neg p\wedge\neg q)</math>;
##em <math>(p\to q)\vee (p\to \neg q)</math>;
##em <math>q\vee r\to (p\vee q\to p\vee r)</math>;
##m </math>(p\vee q\vee r)\wedge(q\vee(\neg p\wedge s))\wedge (\neg s\vee q\vee r) \to q</math>.


Dla każdej formuły zdaniowej istnieje równoważna jej formuła
w koniunkcyjnej postaci normalnej.
}}
{{dowod||


Dowód jest przez indukcję \zwn&nbsp;długość formuły. Symbole zdaniowe są 
oczywiście w postaci normalnej. Zgodnie z naszą definicją, także 
stałe logiczne są postaciami normalnymi. 
Jeśli <math>\var\varphi</math> jest w&nbsp;postaci \begin{eqnarray*}*\end{eqnarray*}, to <math>\neg\var\varphi</math>
można przekształcić w&nbsp;koniunkcyjną postać normalną stosując prawa 
De&nbsp;Morgana i prawa dystrybutywności:


\hfil</math>\psi\vee\begin{eqnarray*}\vartheta\wedge\zeta\end{eqnarray*}\\leftrightarrow
\begin{eqnarray*}\psi\vee\vartheta\end{eqnarray*}\wedge\begin{eqnarray*}\psi\vee\zeta\end{eqnarray*}</math>\hfil
</math>\psi\vee\begin{eqnarray*}\vartheta\vee\zeta\end{eqnarray*}\\leftrightarrow
\begin{eqnarray*}\psi\vee\vartheta\end{eqnarray*}\vee\begin{eqnarray*}\psi\vee\zeta\end{eqnarray*}</math>.


\item Czy następujące zbiory formuł są spełnialne?
Podobnie postępujemy z alternatywą dwóch formuł w postaci 
#em <math>\{p\to \neg q, q\to \neg r, r\to \neg p\}</math>;
normalnej.\footnote{Ta procedura jest niestety
#em <math>\{p\to q, q\to r, r\vee s\leftrightarrow \neg q\}</math>;
wykładnicza \begin{eqnarray*}Ćwiczenie&nbsp;[[#wziawszy}\end{eqnarray*}.]]
#em <math>\{\neg(\neg q\vee p), p\vee\neg r, q\to\neg r\}</math>;
Przypadek koniunkcji jest oczywisty, a \rightarrowlikację
#em <math>\{s\to q, p\vee\neg q, \neg(s\wedge p), s\}</math>.
\Delta\vdashliminujemy z pomocą prawa&nbsp;[[#taut-rz]]\begin{eqnarray*}[[#12a]]\end{eqnarray*}.
Szczegóły pozostawiamy Czytelnikowi.
}}


\subsection*{Ćwiczenia}\begin{small}
##Zbadać, czy następujące formuły są tautologiami rachunku zdań
i czy są spełnialne:


\item Czy zachodzą następujące konsekwencje?
###<math>\begin{eqnarray*}p\to r\end{eqnarray*}\wedge\begin{eqnarray*}q\to s\end{eqnarray*}\wedge\begin{eqnarray*}\neg p\vee \neg s\end{eqnarray*}\to \begin{eqnarray*}\neg p\vee \neg q\end{eqnarray*}</math>;  
#em <math>p\wedge q\to\neg r, p\models r\to \neg q</math>;
###<math>\begin{eqnarray*}p\to q\end{eqnarray*}\vee\begin{eqnarray*}q\to r\end{eqnarray*}</math>;
#em <math>p\to q, p\to(q\to r)\models p\to r</math>;
###<math>\begin{eqnarray*}\begin{eqnarray*}p\to q\end{eqnarray*}\to r\end{eqnarray*}\wedge\neg\begin{eqnarray*}\begin{eqnarray*}\begin{eqnarray*}q\to r\end{eqnarray*}\to r\end{eqnarray*}\to r\end{eqnarray*}\end{eqnarray*}</math>;  
#em <math>p\to(q\to r), p\to q\models q\to r</math>;
###<math>\begin{eqnarray*}p\to q\end{eqnarray*}\wedge\begin{eqnarray*}\neg p\to r\end{eqnarray*}\to \begin{eqnarray*}r\to\neg q\end{eqnarray*}</math>;
#em <math>(p\to q)\to r, \neg p\models r</math>;
###<math>\begin{eqnarray*}\begin{eqnarray*}\neg p\to q\end{eqnarray*}\to r\end{eqnarray*}\to \neg\begin{eqnarray*}p\to q\end{eqnarray*}</math>;  
#em <math>(p\to q)\to r, \neg r\models p</math>;
###<math>p\vee\begin{eqnarray*}\neg p\wedge q\end{eqnarray*}\vee\begin{eqnarray*}\neg p\wedge\neg q\end{eqnarray*}</math>;  
#em <math>p\to q, r\to \neg q\models r\to\neg p</math>.
###<math>\begin{eqnarray*}p\to q\end{eqnarray*}\vee \begin{eqnarray*}p\to \neg q\end{eqnarray*}</math>;
###<math>q\vee r\to \begin{eqnarray*}p\vee q\to p\vee r\end{eqnarray*}</math>;  
###</math>\begin{eqnarray*}p\vee q\vee r\end{eqnarray*}\wedge\begin{eqnarray*}q\vee\begin{eqnarray*}\neg p\wedge s\end{eqnarray*}\end{eqnarray*}\wedge \begin{eqnarray*}\neg s\vee q\vee r\end{eqnarray*}
\to q</math>.  




    \item Dla dowolnej formuły <math>\varphi</math> niech <math>\hat{\varphi}</math> oznacza    dualizację formuły <math>\varphi</math>, tzn. formułę powstającą z <math>\varphi </math>    przez zastąpienie każdego wystąpienia <math>\wedge</math> symbolem <math>\vee</math> oraz    każdego wystąpienia <math>\vee</math> symbolem <math>\wedge</math>. \begin{renumerate}    \item Dowieść,że  <math>\varphi</math> jest tautologią wtw, gdy <math>\neg\hat{\varphi}</math>jest tautologią.  \item Dowieść, że <math>\varphi\lr\psi</math> jest tautologią wtw, gdy  <math>\hat{\varphi}\lr\hat{\psi}</math> jest tautologią.\end{renumerate}


  \item Znależć formułę zdaniową&nbsp;<math>\varphi</math>, która jest spełniona dokładnie  przy wartościowaniach&nbsp;<math>\varrho</math> spełniających warunki:
#Czy następujące zbiory formuł są spełnialne?
#item Dokładnie dwie spośród wartości <math>\varrho(p)</math>, <math>\varrho(q)</math>  i <math>\varrho(r)</math> są równe&nbsp;1.
##<math>\{p\to \neg q, q\to \neg r, r\to \neg p\}</math>;  
#em <math>\varrho(p) = \varrho(q) \not= \varrho(r)</math>.
##<math>\{p\to q, q\to r, r\vee s\leftrightarrow \neg q\}</math>;
##<math>\{\neg\begin{eqnarray*}\neg q\vee p\end{eqnarray*}, p\vee\neg r, q\to\neg r\}</math>;  
##<math>\{s\to q, p\vee\neg q, \neg\begin{eqnarray*}s\wedge p\end{eqnarray*}, s\}</math>.  




''Rozwiązanie:'' Można to robić na różne sposoby, ale najprościej  po prostu wypisać alternatywę koniunkcji, np. </math>(p\wedge q\wedge \neg r) \vee(p \wedge\neg q \wedge r)</math>.  
\item Czy zachodzą następujące konsekwencje?
#<math>p\wedge q\to\neg r, p\models r\to \neg q</math>;
#<math>p\to q, p\to\begin{eqnarray*}q\to r\end{eqnarray*}\models p\to r</math>;
#<math>p\to\begin{eqnarray*}q\to r\end{eqnarray*}, p\to q\models q\to r</math>;
#<math>\begin{eqnarray*}p\to q\end{eqnarray*}\to r, \neg p\models r</math>;
#<math>\begin{eqnarray*}p\to q\end{eqnarray*}\to r, \neg r\models p</math>;
#<math>p\to q, r\to \neg q\models r\to\neg p</math>.  


\item <span id="udacczleka" \>  Udowodnić, że dla dowolnej funkcji <math>f:\{0,1\}^k\to\{0,1\}</math>      istnieje formuła&nbsp;<math>\varphi</math>, w której występują tylko spójniki <math>\to</math> i <math>\bot</math>  oraz zmienne zdaniowe ze zbioru <math>\{p_1,\ldots, p_k\}</math>, o tej własności, że dla  dowolnego wartościowania zdaniowego&nbsp;<math>\varrho</math> zachodzi równość  <math>\wfz\varphi\varrho = f(\varrho(p_1),\ldots, \varrho(p_k))</math>.    (Inaczej mówiąc, formuła&nbsp;<math>\varphi</math> definiuje funkcję zerojedynkową&nbsp;<math>f</math>.)


  ''Wskazówka:'' Indukcja \zwn&nbsp;<math>k</math>.
\item Dla dowolnej formuły <math>\var\varphi</math> niech <math>\hat{\var\varphi}</math> oznacza
dualizację formuły <math>\var\varphi</math>, tzn. formułę powstającą z <math>\var\varphi</math>
przez zastąpienie każdego wystąpienia <math>\wedge</math> symbolem <math>\vee</math> oraz
każdego wystąpienia <math>\vee</math> symbolem <math>\wedge</math>. 
\begin{renumerate}
\item Dowieść,że  <math>\var\varphi</math> jest tautologią wtw, gdy <math>\neg\hat{\var\varphi}</math>
jest tautologią.
\item Dowieść, że <math>\var\varphi\\leftrightarrow\psi</math> jest tautologią wtw, gdy 
<math>\hat{\var\varphi}\\leftrightarrow\hat{\psi}</math> jest tautologią.
\end{renumerate}


\item <span id="krecic" \>  Niech <math>X</math> będzie dowolnym zbiorem niepustym. Dowolną funkcję    <math>\warpi:\zmz\to\pot X</math> nazwijmy ''wartościowaniem\/''    w&nbsp;zbiorze <math>\pot X</math>. Każdej formule zdaniowej&nbsp;<math>\varphi</math> przypiszemy teraz    pewien podzbiór <math>\wfz\varphi\warpi</math> zbioru&nbsp;<math>X</math>, który nazwiemy jej    ''wartością\/'' przy wartościowaniu&nbsp;<math>\warpi</math>.
\item Znależć formułę zdaniową&nbsp;<math>\var\varphi</math>, która jest spełniona dokładnie
*item <math>\wfz\bot\warpi=\emptyset</math> oraz <math>\wfz\top\warpi=X</math>;
przy wartościowaniach&nbsp;<math>\varrho</math> spełniających warunki:
*item <math>\wfz{p}{\warpi}=\warpi(p)</math>, gdy <math>p</math> jest symbolem zdaniowym;
#Dokładnie dwie spośród wartości <math>\varrho\begin{eqnarray*}p\end{eqnarray*}</math>, <math>\varrho\begin{eqnarray*}q\end{eqnarray*}</math>
*em <math>\wfz{\neg\varphi}\warpi= X-\wfz{\varphi}\warpi</math>;
i <math>\varrho\begin{eqnarray*}r\end{eqnarray*}</math> są równe&nbsp;1.
*m </math>\wfz{\varphi\vee\psi}{\warpi}=\wfz{\varphi}{\warpi}\cup \wfz{\psi}{\warpi}</math>;
#<math>\varrho\begin{eqnarray*}p\end{eqnarray*} = \varrho\begin{eqnarray*}q\end{eqnarray*} \not= \varrho\begin{eqnarray*}r\end{eqnarray*}</math>.  
*m </math>\wfz{\varphi\wedge\psi}{\warpi}=\wfz{\varphi}{\warpi}\cap \wfz{\psi}{\warpi}</math>;
*m </math>\wfz{\varphi\to\psi}{\warpi}= (X-\wfz{\varphi}\warpi) \cup\wfz\psi\warpi</math>.
  Udowodnić, że formuła <math>\varphi</math> jest tautologią rachunku zdań \wtw, gdy      jest ''prawdziwa\/'' w&nbsp;<math>\pot X</math>, tj.&nbsp;gdy dla dowolnego <math>\warpi</math>  jej wartością jest cały zbiór&nbsp;<math>X</math>.%%Rozwiazanie


\item <span id="wziawszy" \>  Uzupełnić szczegóły dowodu Faktu&nbsp;[[#pania]].Pokazać, że długość postaci normalnej może wzrosnąć wykładniczo w stosunku do rozmiaru formuły początkowej.


  \item Niech formuła <math>\varphi\to\psi</math> będzie tautologią  rachunku zdań. Znaleźć taką formułę&nbsp;<math>\vartheta</math>, że:
''Rozwiązanie:'' Można to robić na różne sposoby, ale najprościej 
*item Zarówno <math>\varphi\to\vartheta</math> jak i <math>\vartheta\to\psi</math> są tautologiami rachunku zdań.
po prostu wypisać alternatywę koniunkcji, np</math>\begin{eqnarray*}p\wedge q\wedge \neg r\end{eqnarray*}
*em W formule&nbsp;<math>\vartheta</math> występują tylko te zmienne zdaniowe,    które występują zarówno w&nbsp;<math>\varphi</math> jak i&nbsp;w&nbsp;<math>\psi</math>.
\vee\begin{eqnarray*}p \wedge\neg q \wedge r\end{eqnarray*}</math>.
<!--%% D. Niwinski-->


  \item Niech <math>\varphi(p)</math> będzie pewną formułą, w której   występuje zmienna zdaniowa&nbsp;<math>p</math> i niech <math>q</math> będzie zmienną zdaniową nie    występującą w&nbsp;<math>\varphi(p)</math>. Przez&nbsp;<math>\varphi(q)</math> oznaczmy formułę powstałą      z&nbsp;<math>\varphi(p)</math> przez zamianę wszystkich&nbsp;<math>p</math> na&nbsp;<math>q</math>. Udowodnić, że jeśli
\item <span id="udacczleka" \> 
Udowodnić, że dla dowolnej funkcji <math>f:\{0,1\}^k\to\{0,1\}</math>
istnieje formuła&nbsp;<math>\var\varphi</math>, w której występują tylko spójniki <math>\to</math> i <math>\bot</math>  
oraz zmienne zdaniowe ze zbioru <math>\{p_1,\ldots, p_k\}</math>, o tej własności, że dla
dowolnego wartościowania zdaniowego&nbsp;<math>\varrho</math> zachodzi równość
<math>\wfz\var\varphi\varrho = f\begin{eqnarray*}\varrho\begin{eqnarray*}p_1\end{eqnarray*},\ldots, \varrho\begin{eqnarray*}p_k\end{eqnarray*}\end{eqnarray*}</math>
\begin{eqnarray*}Inaczej mówiąc, formuła&nbsp;<math>\var\varphi</math> definiuje funkcję zerojedynkową&nbsp;<math>f</math>.\end{eqnarray*} 


  \hfil <math>\varphi(p), \varphi(q) \models p\leftrightarrow q</math>\hfil
''Wskazówka:'' Indukcja \zwn&nbsp;<math>k</math>.


      to istnieje formuła&nbsp;<math>\psi</math>, nie zawierająca zmiennych&nbsp;<math>p</math> ani&nbsp;<math>q</math>,taka że
\item <span id="krecic" \> 
Niech <math>X</math> będzie dowolnym zbiorem niepustym. Dowolną funkcję 
<math>\warpi:\\mbox{\small ZZ}\to\pot X</math> nazwijmy ''wartościowaniem'' 
w&nbsp;zbiorze <math>\pot X</math>. Każdej formule zdaniowej&nbsp;<math>\var\varphi</math> przypiszemy teraz 
pewien podzbiór <math>\wfz\var\varphi\warpi</math> zbioru&nbsp;<math>X</math>, który nazwiemy jej 
''wartością'' przy wartościowaniu&nbsp;<math>\warpi</math>.
*<math>\wfz\bot\warpi=\emptyset</math> oraz <math>\wfz\top\warpi=X</math>;
*<math>\wf\prooftree p \justifies \warpi \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree=\warpi\begin{eqnarray*}p\end{eqnarray*}</math>, gdy <math>p</math> jest symbolem zdaniowym;
*<math>\wfz{\neg\var\varphi}\warpi= X-\wfz{\var\varphi}\warpi</math>;
*</math>\wf\prooftree \var\varphi\vee\psi \justifies \warpi \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree=\wf\prooftree \var\varphi \justifies \warpi \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree\cup
\wf\prooftree \psi \justifies \warpi \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>;
*</math>\wf\prooftree \var\varphi\wedge\psi \justifies \warpi \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree=\wf\prooftree \var\varphi \justifies \warpi \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree\cap
\wf\prooftree \psi \justifies \warpi \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>;
*</math>\wf\prooftree \var\varphi\to\psi \justifies \warpi}= \begin{eqnarray*}X-\wfz{\var\varphi \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree\warpi\end{eqnarray*}
\cup\wfz\psi\warpi</math>.


  \hfil <math>\varphi(p)\models p\leftrightarrow\psi</math>.\hfil<!--%% D. Niwinski-->
Udowodnić, że formuła <math>\var\varphi</math> jest tautologią rachunku zdań \wtw, gdy 
jest ''prawdziwa'' w&nbsp;<math>\pot X</math>, tj.&nbsp;gdy dla dowolnego <math>\warpi</math>
jej wartością jest cały zbiór&nbsp;<math>X</math>.%%Rozwiazanie
 
\item <span id="wziawszy" \> 
Uzupełnić szczegóły dowodu Faktu&nbsp;[[#pania]].
Pokazać, że długość postaci normalnej 
może wzrosnąć wykładniczo w stosunku do rozmiaru formuły początkowej.
 
\item Niech formuła <math>\var\varphi\to\psi</math> będzie tautologią 
rachunku zdań. Znaleźć taką formułę&nbsp;<math>\vartheta</math>, że:
*Zarówno <math>\var\varphi\to\vartheta</math> jak i <math>\vartheta\to\psi</math> są 
tautologiami rachunku zdań.
*W formule&nbsp;<math>\vartheta</math> występują tylko te zmienne zdaniowe,
które występują zarówno w&nbsp;<math>\var\varphi</math> jak i&nbsp;w&nbsp;<math>\psi</math>.
 
<!--%% D. Niwinski -->
 
\item Niech <math>\var\varphi\begin{eqnarray*}p\end{eqnarray*}</math> będzie pewną formułą, w której
występuje zmienna zdaniowa&nbsp;<math>p</math> i niech <math>q</math> będzie zmienną zdaniową nie
występującą w&nbsp;<math>\var\varphi\begin{eqnarray*}p\end{eqnarray*}</math>. Przez&nbsp;<math>\var\varphi\begin{eqnarray*}q\end{eqnarray*}</math> oznaczmy formułę powstałą 
z&nbsp;<math>\var\varphi\begin{eqnarray*}p\end{eqnarray*}</math> przez zamianę wszystkich&nbsp;<math>p</math> na&nbsp;<math>q</math>. Udowodnić, że jeśli
 
\hfil <math>\var\varphi\begin{eqnarray*}p\end{eqnarray*}, \var\varphi\begin{eqnarray*}q\end{eqnarray*} \models p\leftrightarrow q</math>\hfil
 
to istnieje formuła&nbsp;<math>\psi</math>, nie zawierająca zmiennych&nbsp;<math>p</math> ani&nbsp;<math>q</math>,
taka że 
 
\hfil <math>\var\varphi\begin{eqnarray*}p\end{eqnarray*}\models p\leftrightarrow\psi</math>.\hfil  
<!--%% D. Niwinski -->  




\end{small}
\end{small}

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

\titleLogika dla informatyków \author{Jerzy Tiuryn\and Jerzy Tyszkiewicz\and Paweł Urzyczyn} \date{Sierpień 2006}\maketitle

Wnioskowanie o prawdziwości rozmaitych stwierdzeń jest powszednim zajęciem matematyków i nie tylko matematyków. Dlatego filozofowie i matematycy od dawna zajmowali się systematyzacją metod wnioskowania i kryteriów ich poprawności. Oczywiście ostatecznym kryterium poprawności rozumowania pozostaje zawsze zdrowy rozsądek i przekonanie o słuszności wywodu. Logika, która narodziła się jako nauka o rozumowaniu, jest jednak ważnym i potrzebnym narzędziem, które to przekonanie\boldsymbol{s}}\def\blank{\hbox\mathsf{ Błatwia.

Szczególną rolę wśród rozmaitych działów logiki zajmuje logika matematyczna, poświęcona opisowi i analizie języka matematyki oraz poprawności wnioskowań matematycznych. Jest to dyscyplina w pewnym sensie paradoksalna: będąc sama częścią matematyki, traktuje matematykę jako swój przedmiot zainteresowania. Dla\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bniknięcia ,,błędnego koła musimy więc tutaj zauważyć, że logika formalna nie opisuje rzeczywistych wywodów matematyka, ale ich\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bproszczone modele, które bez zastrzeżeń można\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bważać za zwykłe obiekty matematyczne. Mimo tego ograniczenia, logika matematyczna dostarcza niezwykle ważnych wniosków o charakterze filozoficznym i metamatematycznym.

Logika formalna była kiedyś\Delta\vdashzoteryczną nauką z pogranicza filozofii i matematyki, potem stała się pełnoprawnym działem czystej matematyki. Jeszcze później, wraz z narodzinami informatyki, zaczęła być coraz bardziej postrzegana jako dziedzina matematyki stosowanej, a zwłaszcza podstaw informatyki.

Logika matematyczna stosowana jest dziś szeroko w informatyce. Semantyka i weryfikacja programów, teoria złożoności i teoria automatów, programowanie funkcyjne i programowanie w logice --- to tylko niektóre z działów informatyki, w których metody logiki formalnej stały się standardowym narzędziem zarówno badacza jak i praktyka.

Rachunek zdań

Jak powiedzieliśmy wyżej, logika matematyczna zajmuje się badaniem rozmaitych systemów formalnych, modelujących rzeczywiste sposoby wnioskowania matematycznego. Do najprostszych takich systemów należą różne warianty logiki zdaniowej zwanej też rachunkiem zdań. Język rachunku zdań jest bardzo prosty. Nie ma w nim wyrażeń stwierdzających jakiś stan rzeczy, zajście jakichś faktów, czy też wyrażeń orzekających o własnościach obiektów. Przedmiotem naszego zainteresowania są tu tylko możliwe zależności pomiędzy stwierdzeniami \begin{eqnarray*}zdaniami orzekającymi\end{eqnarray*}, oraz to w jaki sposób prawdziwość zdań złożonych zależy od prawdziwości ich składowych. Sens samych składowych pozostaje tu całkowicie dowolny i nieistotny. Dlatego w rachunku zdań odpowiadają im po prostu zmienne zdaniowe. Zdania złożone budujemy ze zmiennych za pomocą spójników logicznych takich jak alternatywa\/ , koniunkcja , negacja ¬, czy \rightarrowlikacja . Wygodne są też stałe logiczne  \begin{eqnarray*}fałsz\end{eqnarray*} i  \begin{eqnarray*}prawda\end{eqnarray*}, które można\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bważać za zeroargumentowe spójniki logiczne. Dlatego nasza pierwsza definicja jest taka:

Definicja

Ustalamy pewien przeliczalnie nieskończony zbiór Parser nie mógł rozpoznać (błąd składni): {\displaystyle \\mbox{\small ZZ}} symboli, które będziemy nazywać zmiennymi zdaniowymi i zwykle oznaczać literami p, q, itp. Pojęcie formuły zdaniowej definiujemy przez indukcję:

  • Zmienne zdaniowe oraz i są formułami zdaniowymi;
  • Jeśli napis Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest formułą zdaniową, to także napis

Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \neg\var\varphi} jest formułą zdaniową;

  • Jeśli napisy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} i ψ są formułami zdaniowymi to

napisy Parser nie mógł rozpoznać (błąd składni): {\displaystyle \begin{eqnarray*}\var\varphi\to\psi\end{eqnarray*}} , Parser nie mógł rozpoznać (błąd składni): {\displaystyle \begin{eqnarray*}\var\varphi\vee\psi\end{eqnarray*}} i Parser nie mógł rozpoznać (błąd składni): {\displaystyle \begin{eqnarray*}\var\varphi\wedge\psi\end{eqnarray*}} też są formułami zdaniowymi.

Inaczej mówiąc, formuły zdaniowe to\Delta\vdashlementy najmniejszego zbioru napisów Parser nie mógł rozpoznać (błąd składni): {\displaystyle \\F_{{\sc Z}}} , zawierającego Parser nie mógł rozpoznać (błąd składni): {\displaystyle \\mbox{\small ZZ}\cup\{\bot,\top\}} i takiego, że dla dowolnych</math>\var\varphi,\psi\in\\F_Szablon:\sc ZParser nie mógł rozpoznać (błąd składni): {\displaystyle także} \neg\var\varphi,\begin{eqnarray*}\var\varphi\to\psi\end{eqnarray*}, \begin{eqnarray*}\var\varphi\vee\psi\end{eqnarray*}, \begin{eqnarray*}\var\varphi\wedge\psi\end{eqnarray*}</math> należą do Parser nie mógł rozpoznać (błąd składni): {\displaystyle \\F_{{\sc Z}}} .

Konwencje notacyjne: Dla pełnej jednoznaczności składni nasze formuły są w pełni nawiasowane. W praktyce wiele nawiasów pomijamy, stosując przy tym następujące priorytety:

  1. Negacja;
  1. Koniunkcja i alternatywa;
  1. Implikacja.

Zatem na przykład wyrażenie Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \neg\var\varphi\vee\psi\to\vartheta} oznacza Parser nie mógł rozpoznać (błąd składni): {\displaystyle \begin{eqnarray*}\begin{eqnarray*}\neg\var\varphi\vee\psi\end{eqnarray*}\to\vartheta\end{eqnarray*}} , ale napis Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\vee\psi\wedge \vartheta} jest niepoprawny.

Znaczenie formuł

formuły jest wartość logiczna tj. ,,prawda \begin{eqnarray*}1\end{eqnarray*} lub ,,fałsz \begin{eqnarray*}0\end{eqnarray*}. Aby określić wartość formuły zdaniowej trzeba jednak najpierw\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bstalić wartości zmiennych.

Definicja

Przez wartościowanie zdaniowe rozumiemy dowolną funkcję ϱ, która zmiennym zdaniowym przypisuje wartości logiczne 0 lub 1. Wartość formuły zdaniowej Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} przy wartościowaniu ϱ oznaczamy przez Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz\var\varphi\varrho} i określamy przez indukcję:

  • Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz\bot\varrho=0} oraz Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz\top\varrho=1} ;
  • Parser nie mógł rozpoznać (nieznana funkcja „\wf”): {\displaystyle \wf\prooftree p \justifies \varrho \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree=\varrho\begin{eqnarray*}p\end{eqnarray*}} , gdy p jest symbolem zdaniowym;
  • Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz{\neg\var\varphi}\varrho=1-\wfz{\var\varphi}\varrho} ;
  • </math>\wf\prooftree \var\varphi\vee\psi \justifies \varrho \using \text{\begin{eqnarray*}W\end{eqnarray*

\endprooftree=\max\{\wf\prooftree \var\varphi \justifies \varrho \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree,

\wf\prooftree \psi \justifies \varrho}\ \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>;

  • </math>\wf\prooftree \var\varphi\wedge\psi \justifies \varrho \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree=\min\{\wf\prooftree \var\varphi \justifies \varrho \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree,

\wf\prooftree \psi \justifies \varrho}\ \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>;

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

Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz\var\varphi\varrho=1} i Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz\psi\varrho=0} ;

  • Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz{\var\varphi\to\psi}\varrho=1} , \wpp.

}}

Łatwo można zauważyć, że</math>\wf\prooftree \var\varphi\to\psi \justifies \varrho \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree = \max\{\wfz\psi\varrho,1-\wfz\var\varphi\varrho\}</math>, czyli Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz{\var\varphi\to\psi}\varrho=\wfz{\neg\var\varphi\vee\psi}\varrho} , dla dowolnego ϱ. A zatem zamiast formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\to\psi} moglibyśmy z równym powodzeniem\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bżywać wyrażenia Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \neg\var\varphi\vee\psi} , lub też odwrotnie: zamiast alternatywy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\vee\psi} pisać Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \neg\var\varphi\to\psi} . Nasz wybór spójników nie jest więc ,,najoszczędniejszy, w istocie w logice klasycznej wystarczy\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bżywać np. \rightarrowlikacji i fałszu \begin{eqnarray*}Ćwiczenie #udacczleka\end{eqnarray*}. Czasem i my będziemy korzystać z tego wygodnego\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bproszczenia, przyjmując, że ,,oficjalnymi spójnikami są tylko \rightarrowlikacja i fałsz, a pozostałe to skróty notacyjne, tj. że napisy \begin{tabbing} \hspace{3.0cm}\quad \= Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \neg\var\varphi} \qquad \= oznaczają odpowiednio \quad \=Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\to\bot} ;\\ \hspace{2.0cm}\ \ \ \> \> \ \ \ \ \> ¬;\\ \hspace{2.0cm}\ \ \ \> Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\vee\psi} \> \ \ \ \ \> Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \neg\var\varphi\to\psi} ;\\ \hspace{2.0cm}\ \ \ \> Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\wedge\psi} \> \ \ \ \ \> Parser nie mógł rozpoznać (błąd składni): {\displaystyle \neg\begin{eqnarray*}\var\varphi\to\neg\psi\end{eqnarray*}} . \end{tabbing} Będziemy też czasem pisać Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\\leftrightarrow\psi} zamiast Parser nie mógł rozpoznać (błąd składni): {\displaystyle \begin{eqnarray*}\var\varphi\to\psi\end{eqnarray*}\wedge\begin{eqnarray*}\psi\to\var\varphi\end{eqnarray*}} . Zauważmy, że Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz{\var\varphi\\leftrightarrow\psi}\varrho=1} \wtw, gdy Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz{\var\varphi\to\psi}\varrho=\wfz{\psi\to\var\varphi}\varrho} .

Często stosowanym skrótem jest notacja Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \bigvee_{i\in I}\var\varphi_i} oznaczająca alternatywę wszystkich formuł Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi_i} , gdzie i przebiega skończony zbiór I. Analogicznie stosuje się zapis Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \bigwedge_{i\in I}\var\varphi_i} .

Notacja i terminologia: Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\kl”): {\displaystyle \kl\var\varphi_\varrho=1} to piszemy też Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \varrho\models\var\varphi} lub Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \models\var\varphi[\varrho]} i mówimy, że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest spełniona przez wartościowanie ϱ. Jeśli Γ jest zbiorem formuł zdaniowych, oraz ϱγ dla wszystkich γΓ, to piszemy ϱΓ. Wreszcie Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma\models\var\varphi} oznacza, że każde wartościowanie spełniające wszystkie formuły z Γ spełnia także formułę Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} . Mówimy wtedy, że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest semantyczną konsekwencją zbioru Γ. Jeśli Γ= to zamiast Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma\models\var\varphi} piszemy po prostu Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \models\var\varphi} . Oznacza to, że formuła Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest spełniona przez każde wartościowanie. Na koniec powiedzmy jeszcze, że formułami równoważnymi nazywamy takie formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} i ψ, których wartości przy każdym wartościowaniu są takie same \begin{eqnarray*}tj. takie, że równoważność Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\\leftrightarrow\psi} jest tautologią --- patrz niżej\end{eqnarray*}.


Definicja

Formuła Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest spełnialna, gdy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \varrho\models\var\varphi} zachodzi dla pewnego wartościowania ρ. Jeśli zaś Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \models\var\varphi} to mówimy, że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest tautologią \begin{eqnarray*}klasycznego\end{eqnarray*} rachunku zdań. Oczywiście Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \neg\var\varphi} jest spełnialna \wtw, gdy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} nie jest tautologią.

Tautologie rachunku zdań

Niech S będzie funkcją przypisujacą symbolom zdaniowym pewne formuły. Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest formułą zdaniową, to przez Parser nie mógł rozpoznać (błąd składni): {\displaystyle S\begin{eqnarray*}\var\varphi\end{eqnarray*}} oznaczymy formu\lę otrzymaną z Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} przez jednoczesną zamianę każdego wystąpienia zmiennej zdaniowej p na formu\lę Parser nie mógł rozpoznać (błąd składni): {\displaystyle S\begin{eqnarray*}p\end{eqnarray*}} . Mówimy, że formuła Parser nie mógł rozpoznać (błąd składni): {\displaystyle S\begin{eqnarray*}\var\varphi\end{eqnarray*}} jest instancją schematu zdaniowego Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} . Używamy oznaczenia Parser nie mógł rozpoznać (błąd składni): {\displaystyle S\begin{eqnarray*}\Gamma\end{eqnarray*} = \{S\begin{eqnarray*}\psi\end{eqnarray*}\ |\ \psi\in\Gamma\}} .

Fakt

Jeżeli Γ jest zbiorem formu\l\ rachunku zdań i Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma\models\var\varphi} , to także Parser nie mógł rozpoznać (błąd składni): {\displaystyle S\begin{eqnarray*}\Gamma\end{eqnarray*}\models S\begin{eqnarray*}\var\varphi\end{eqnarray*}} . W szczególności, jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest tautologią to Parser nie mógł rozpoznać (błąd składni): {\displaystyle S\begin{eqnarray*}\var\varphi\end{eqnarray*}} jest też tautologią.

Dowód

{{{3}}}

Przykład

Następujące formuły \begin{eqnarray*}i wszystkie ich instancje\end{eqnarray*} są tautologiami rachunku zdań:% Parser nie mógł rozpoznać (błąd składni): {\displaystyle \begin{eqnarray*}\neg q\to\neg p\end{eqnarray*}\to \begin{eqnarray*}p\to q\end{eqnarray*}} ; Parser nie mógł rozpoznać (błąd składni): {\displaystyle \begin{eqnarray*}p\to r\end{eqnarray*}\to\begin{eqnarray*}\begin{eqnarray*}q\to r\end{eqnarray*}\to\begin{eqnarray*}p\vee q \to r\end{eqnarray*}\end{eqnarray*}} ; Parser nie mógł rozpoznać (błąd składni): {\displaystyle \begin{eqnarray*}r\to p\end{eqnarray*}\to\begin{eqnarray*}\begin{eqnarray*}r\to q\end{eqnarray*}\to\begin{eqnarray*}r\to\begin{eqnarray*}p\wedge q\end{eqnarray*}\end{eqnarray*}\end{eqnarray*}} ; \begin{eqnarray*}p\leftrightarrow\begin{eqnarray*}q\leftrightarrow r\end{eqnarray*}\end{eqnarray*}</math>; Parser nie mógł rozpoznać (błąd składni): {\displaystyle p\wedge\top\\leftrightarrow p} .

Dowód

{{{3}}}

Niektóre z powyższych formu\l\ wskazują na analogię pomiędzy \rightarrowlikacją i\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bporządkowaniem \begin{eqnarray*}np. zawieraniem zbiorów\end{eqnarray*}. Implikację pq można odczytać tak: ,,warunek p jest silniejszy \begin{eqnarray*}mniejszy lub równy\end{eqnarray*} od q. Formu\lę \begin{eqnarray*}#1\end{eqnarray*} czytamy wtedy: ,,fałsz jest najsilniejszym warunkiem \begin{eqnarray*}najmniejszym\Delta\vdashlementem\end{eqnarray*}. Formuły \begin{eqnarray*}#8\end{eqnarray*} stwierdzają, że alternatywa pq jest najsilniejszym warunkiem, który wynika zarówno z p jak i z q \begin{eqnarray*}czyli jest kresem górnym pary {p,q}, jak suma zbiorów\end{eqnarray*}. Formuły \begin{eqnarray*}#9\end{eqnarray*} wyrażają dualną własność koniunkcji: to jest kres dolny, czyli najsłabszy warunek \rightarrowlikujący oba argumenty. Prawa de Morgana \begin{eqnarray*}#11,#12\end{eqnarray*} wskazują też na analogie koniunkcja -- iloczyn, alternatywa -- suma, negacja -- dopełnienie. Ta ostatnia widoczna jest też w prawach wyłączonego środka \begin{eqnarray*}#5\end{eqnarray*}, podwójnej negacji \begin{eqnarray*}#6\end{eqnarray*} i kontrapozycji \begin{eqnarray*}#7\end{eqnarray*}.

O ile \begin{eqnarray*}#9\end{eqnarray*} wskazuje na analogię pomiędzy koniunkcją i iloczynem mnogościowym, o tyle warto zauważyć, że koniunkcja ma też własności podobne do iloczynu kartezjańskiego. Jeśli zbiór funkcji z A do B oznaczymy przez [AB], to mamy \begin{eqnarray*}bardzo naturalną\end{eqnarray*} równoliczność [A×BC][A[BC]]. Podobieństwo tego związku do formuły \begin{eqnarray*}#10\end{eqnarray*} nie jest wcale przypadkowe. Wrócimy do tego w Rozdziale #logint.

Formuła \begin{eqnarray*}#12a\end{eqnarray*} wyraża \rightarrowlikację z pomocą negacji i alternatywy i jest często bardzo przydatna, gdy np. chcemy przekształcić jakąś formułę do prostszej postaci.

Formuła \begin{eqnarray*}#2\end{eqnarray*} mówi, że dodatkowe założenie można zawsze zignorować. Formuła \begin{eqnarray*}#3\end{eqnarray*} \begin{eqnarray*}prawo Frege\end{eqnarray*} wyraża dystrybutywność \rightarrowlikacji względem siebie samej i może być odczytywana tak: jeśli r wynika z q w kontekście p, to ten kontekst może być włączony do założenia i konkluzji. Formuła \begin{eqnarray*}#4\end{eqnarray*} \begin{eqnarray*}prawo Peirce'a\end{eqnarray*} wyraża przy pomocy samej \rightarrowlikacji zasadniczą własność logiki klasycznej: możliwość rozumowania przez zaprzeczenie. Sens prawa Peirce'a widać najlepiej gdy q jest fałszem, otrzymujemy wtedy prawo Claviusa: Parser nie mógł rozpoznać (błąd składni): {\displaystyle \begin{eqnarray*}\neg p\to p\end{eqnarray*}\to p} .

Warto zauważyć, że formuły w parach \begin{eqnarray*}#6\end{eqnarray*} i \begin{eqnarray*}#7\end{eqnarray*} nie są wcale tak symetryczne jak się wydaje na pierwszy rzut oka. Na przykład, pierwsza z formu\l \begin{eqnarray*}#6\end{eqnarray*} to w istocie Parser nie mógł rozpoznać (błąd składni): {\displaystyle p \to \begin{eqnarray*}\begin{eqnarray*}p\to\bot\end{eqnarray*}\to\bot\end{eqnarray*}} . Wiedząc, że p i p, natychmiast zgadzamy się na . Intuicyjne\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bzasadnienie drugiej formuły jest zaś w istocie związane z prawem \begin{eqnarray*}#5\end{eqnarray*}.

Własnością, która często\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bchodzi naszej\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bwagi, jest łączność równoważności \begin{eqnarray*}#13\end{eqnarray*}. W zwiazku z tym, wyrażenie Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi \\leftrightarrow \psi \\leftrightarrow \vartheta} można z czystym sumieniem pisać bez nawiasów. Zwróćmy jednak\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bwagę na to, że oznacza ono zupełnie co innego niż stwierdzenie że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} , ψ i ϑ są sobie nawzajem równoważne!

Ostatnie na liście są dwie równoważności wyrażające taką myśl: fałsz jest ,,elementem neutralnym dla alternatywy, a prawda dla koniunkcji. Dlatego możemy\boldsymbol{s}}\def\blank{\hbox\mathsf{ Bważać za ,,pustą alternatywę a za ,,pustą koniunkcję. Powyżej pominięto dobrze znane prawa: łączność i przemienność koniunkcji i alternatywy, ich wzajemną dystrybutywność, przechodniość, zwrotność \rightarrowlikacji itp.

Postać normalna formuł

Definicja

{{{3}}}

\def\blank{\hbox\mathsf{ Btożsamiamy w myśl

Przykładu #taut-rz\begin{eqnarray*}#14\end{eqnarray*} ze stałą , a stała to tyle co koniunkcja z jednym pustym składnikiem. }}

Fakt

Dla każdej formuły zdaniowej istnieje równoważna jej formuła w koniunkcyjnej postaci normalnej.

<span id="

Dowód jest przez indukcję \zwn długość formuły. Symbole zdaniowe są oczywiście w postaci normalnej. Zgodnie z naszą definicją, także stałe logiczne są postaciami normalnymi. Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest w postaci \begin{eqnarray*}*\end{eqnarray*}, to Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \neg\var\varphi} można przekształcić w koniunkcyjną postać normalną stosując prawa De Morgana i prawa dystrybutywności:

\hfil</math>\psi\vee\begin{eqnarray*}\vartheta\wedge\zeta\end{eqnarray*}\\leftrightarrow \begin{eqnarray*}\psi\vee\vartheta\end{eqnarray*}\wedge\begin{eqnarray*}\psi\vee\zeta\end{eqnarray*}</math>\hfil </math>\psi\vee\begin{eqnarray*}\vartheta\vee\zeta\end{eqnarray*}\\leftrightarrow \begin{eqnarray*}\psi\vee\vartheta\end{eqnarray*}\vee\begin{eqnarray*}\psi\vee\zeta\end{eqnarray*}</math>.

Podobnie postępujemy z alternatywą dwóch formuł w postaci normalnej.\footnote{Ta procedura jest niestety wykładnicza \begin{eqnarray*}Ćwiczenie [[#wziawszy}\end{eqnarray*}.]] Przypadek koniunkcji jest oczywisty, a \rightarrowlikację \Delta\vdashliminujemy z pomocą prawa #taut-rz\begin{eqnarray*}#12a\end{eqnarray*}. Szczegóły pozostawiamy Czytelnikowi. " style="font-variant:small-caps">Dowód

{{{3}}}

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

    1. Zbadać, czy następujące formuły są tautologiami rachunku zdań

i czy są spełnialne:

      1. Parser nie mógł rozpoznać (błąd składni): {\displaystyle \begin{eqnarray*}p\to r\end{eqnarray*}\wedge\begin{eqnarray*}q\to s\end{eqnarray*}\wedge\begin{eqnarray*}\neg p\vee \neg s\end{eqnarray*}\to \begin{eqnarray*}\neg p\vee \neg q\end{eqnarray*}} ;
      2. Parser nie mógł rozpoznać (błąd składni): {\displaystyle \begin{eqnarray*}p\to q\end{eqnarray*}\vee\begin{eqnarray*}q\to r\end{eqnarray*}} ;
      3. Parser nie mógł rozpoznać (błąd składni): {\displaystyle \begin{eqnarray*}\begin{eqnarray*}p\to q\end{eqnarray*}\to r\end{eqnarray*}\wedge\neg\begin{eqnarray*}\begin{eqnarray*}\begin{eqnarray*}q\to r\end{eqnarray*}\to r\end{eqnarray*}\to r\end{eqnarray*}\end{eqnarray*}} ;
      4. Parser nie mógł rozpoznać (błąd składni): {\displaystyle \begin{eqnarray*}p\to q\end{eqnarray*}\wedge\begin{eqnarray*}\neg p\to r\end{eqnarray*}\to \begin{eqnarray*}r\to\neg q\end{eqnarray*}} ;
      5. Parser nie mógł rozpoznać (błąd składni): {\displaystyle \begin{eqnarray*}\begin{eqnarray*}\neg p\to q\end{eqnarray*}\to r\end{eqnarray*}\to \neg\begin{eqnarray*}p\to q\end{eqnarray*}} ;
      6. Parser nie mógł rozpoznać (błąd składni): {\displaystyle p\vee\begin{eqnarray*}\neg p\wedge q\end{eqnarray*}\vee\begin{eqnarray*}\neg p\wedge\neg q\end{eqnarray*}} ;
      7. Parser nie mógł rozpoznać (błąd składni): {\displaystyle \begin{eqnarray*}p\to q\end{eqnarray*}\vee \begin{eqnarray*}p\to \neg q\end{eqnarray*}} ;
      8. Parser nie mógł rozpoznać (błąd składni): {\displaystyle q\vee r\to \begin{eqnarray*}p\vee q\to p\vee r\end{eqnarray*}} ;
      9. </math>\begin{eqnarray*}p\vee q\vee r\end{eqnarray*}\wedge\begin{eqnarray*}q\vee\begin{eqnarray*}\neg p\wedge s\end{eqnarray*}\end{eqnarray*}\wedge \begin{eqnarray*}\neg s\vee q\vee r\end{eqnarray*}

\to q</math>.


  1. Czy następujące zbiory formuł są spełnialne?
    1. {p¬q,q¬r,r¬p};
    2. {pq,qr,rs¬q};
    3. Parser nie mógł rozpoznać (błąd składni): {\displaystyle \{\neg\begin{eqnarray*}\neg q\vee p\end{eqnarray*}, p\vee\neg r, q\to\neg r\}} ;
    4. Parser nie mógł rozpoznać (błąd składni): {\displaystyle \{s\to q, p\vee\neg q, \neg\begin{eqnarray*}s\wedge p\end{eqnarray*}, s\}} .


\item Czy zachodzą następujące konsekwencje?

  1. pq¬r,pr¬q;
  2. Parser nie mógł rozpoznać (błąd składni): {\displaystyle p\to q, p\to\begin{eqnarray*}q\to r\end{eqnarray*}\models p\to r} ;
  3. Parser nie mógł rozpoznać (błąd składni): {\displaystyle p\to\begin{eqnarray*}q\to r\end{eqnarray*}, p\to q\models q\to r} ;
  4. Parser nie mógł rozpoznać (błąd składni): {\displaystyle \begin{eqnarray*}p\to q\end{eqnarray*}\to r, \neg p\models r} ;
  5. Parser nie mógł rozpoznać (błąd składni): {\displaystyle \begin{eqnarray*}p\to q\end{eqnarray*}\to r, \neg r\models p} ;
  6. pq,r¬qr¬p.


\item Dla dowolnej formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} niech Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \hat{\var\varphi}} oznacza dualizację formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} , tzn. formułę powstającą z Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} przez zastąpienie każdego wystąpienia symbolem oraz każdego wystąpienia symbolem . \begin{renumerate} \item Dowieść,że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest tautologią wtw, gdy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \neg\hat{\var\varphi}} jest tautologią. \item Dowieść, że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\\leftrightarrow\psi} jest tautologią wtw, gdy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \hat{\var\varphi}\\leftrightarrow\hat{\psi}} jest tautologią. \end{renumerate}

\item Znależć formułę zdaniową Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} , która jest spełniona dokładnie przy wartościowaniach ϱ spełniających warunki:

  1. Dokładnie dwie spośród wartości Parser nie mógł rozpoznać (błąd składni): {\displaystyle \varrho\begin{eqnarray*}p\end{eqnarray*}} , Parser nie mógł rozpoznać (błąd składni): {\displaystyle \varrho\begin{eqnarray*}q\end{eqnarray*}}

i Parser nie mógł rozpoznać (błąd składni): {\displaystyle \varrho\begin{eqnarray*}r\end{eqnarray*}} są równe 1.

  1. Parser nie mógł rozpoznać (błąd składni): {\displaystyle \varrho\begin{eqnarray*}p\end{eqnarray*} = \varrho\begin{eqnarray*}q\end{eqnarray*} \not= \varrho\begin{eqnarray*}r\end{eqnarray*}} .


Rozwiązanie: Można to robić na różne sposoby, ale najprościej po prostu wypisać alternatywę koniunkcji, np</math>\begin{eqnarray*}p\wedge q\wedge \neg r\end{eqnarray*} \vee\begin{eqnarray*}p \wedge\neg q \wedge r\end{eqnarray*}</math>.

\item Udowodnić, że dla dowolnej funkcji f:{0,1}k{0,1} istnieje formuła Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} , w której występują tylko spójniki i oraz zmienne zdaniowe ze zbioru {p1,,pk}, o tej własności, że dla dowolnego wartościowania zdaniowego ϱ zachodzi równość Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz\var\varphi\varrho = f\begin{eqnarray*}\varrho\begin{eqnarray*}p_1\end{eqnarray*},\ldots, \varrho\begin{eqnarray*}p_k\end{eqnarray*}\end{eqnarray*}} . \begin{eqnarray*}Inaczej mówiąc, formuła Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} definiuje funkcję zerojedynkową f.\end{eqnarray*}

Wskazówka: Indukcja \zwn k.

\item Niech X będzie dowolnym zbiorem niepustym. Dowolną funkcję Parser nie mógł rozpoznać (nieznana funkcja „\warpi”): {\displaystyle \warpi:\\mbox{\small ZZ}\to\pot X} nazwijmy wartościowaniem w zbiorze Parser nie mógł rozpoznać (nieznana funkcja „\pot”): {\displaystyle \pot X} . Każdej formule zdaniowej Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} przypiszemy teraz pewien podzbiór Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz\var\varphi\warpi} zbioru X, który nazwiemy jej wartością przy wartościowaniu Parser nie mógł rozpoznać (nieznana funkcja „\warpi”): {\displaystyle \warpi} .

  • Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz\bot\warpi=\emptyset} oraz Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz\top\warpi=X} ;
  • Parser nie mógł rozpoznać (nieznana funkcja „\wf”): {\displaystyle \wf\prooftree p \justifies \warpi \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree=\warpi\begin{eqnarray*}p\end{eqnarray*}} , gdy p jest symbolem zdaniowym;
  • Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz{\neg\var\varphi}\warpi= X-\wfz{\var\varphi}\warpi} ;
  • </math>\wf\prooftree \var\varphi\vee\psi \justifies \warpi \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree=\wf\prooftree \var\varphi \justifies \warpi \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree\cup

\wf\prooftree \psi \justifies \warpi \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>;

  • </math>\wf\prooftree \var\varphi\wedge\psi \justifies \warpi \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree=\wf\prooftree \var\varphi \justifies \warpi \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree\cap

\wf\prooftree \psi \justifies \warpi \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>;

  • </math>\wf\prooftree \var\varphi\to\psi \justifies \warpi}= \begin{eqnarray*}X-\wfz{\var\varphi \using \text{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree\warpi\end{eqnarray*}

\cup\wfz\psi\warpi</math>.

Udowodnić, że formuła Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest tautologią rachunku zdań \wtw, gdy jest prawdziwaParser nie mógł rozpoznać (nieznana funkcja „\pot”): {\displaystyle \pot X} , tj. gdy dla dowolnego Parser nie mógł rozpoznać (nieznana funkcja „\warpi”): {\displaystyle \warpi} jej wartością jest cały zbiór X.%%Rozwiazanie

\item Uzupełnić szczegóły dowodu Faktu #pania. Pokazać, że długość postaci normalnej może wzrosnąć wykładniczo w stosunku do rozmiaru formuły początkowej.

\item Niech formuła Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\to\psi} będzie tautologią rachunku zdań. Znaleźć taką formułę ϑ, że:

  • Zarówno Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\to\vartheta} jak i ϑψ

tautologiami rachunku zdań.

  • W formule ϑ występują tylko te zmienne zdaniowe,

które występują zarówno w Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jak i w ψ.


\item Niech Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\begin{eqnarray*}p\end{eqnarray*}} będzie pewną formułą, w której występuje zmienna zdaniowa p i niech q będzie zmienną zdaniową nie występującą w Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\begin{eqnarray*}p\end{eqnarray*}} . Przez Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\begin{eqnarray*}q\end{eqnarray*}} oznaczmy formułę powstałą z Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\begin{eqnarray*}p\end{eqnarray*}} przez zamianę wszystkich p na q. Udowodnić, że jeśli

\hfil Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\begin{eqnarray*}p\end{eqnarray*}, \var\varphi\begin{eqnarray*}q\end{eqnarray*} \models p\leftrightarrow q} \hfil

to istnieje formuła ψ, nie zawierająca zmiennych p ani q, taka że

\hfil Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\begin{eqnarray*}p\end{eqnarray*}\models p\leftrightarrow\psi} .\hfil


\end{small}