Test b: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian
Nie podano opisu zmian
Linia 9: Linia 9:
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órez działów informatyki, w których metody logiki formalnej stały się standardowym narzędziem zarówno badacza jak i praktyka.


    \setcounte\prooftree twierdzenie \justifies 0 \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree <span id="aleksander" \>
==Rachunek zdań==


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 \begin{eqnarray*}zdaniami orzekającymi\end{eqnarray*}, 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 ''\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{\sf 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 \begin{eqnarray*}zdaniami orzekającymi\end{eqnarray*}, 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 ''\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{\sf Bważać za zeroargumentowe spójniki logiczne.Dlatego nasza pierwsza definicja jest  taka:
Linia 23: Linia 23:
  Inaczej mówiąc, formuły zdaniowe to\Delta\vdashlementy najmniejszego zbioru      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>.}}
  Inaczej mówiąc, formuły zdaniowe to\Delta\vdashlementy najmniejszego zbioru      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:  
'''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;
#Negacja;


Linia 33: Linia 33:
<!--%-->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.
<!--%-->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.


  W ''logice klasycznej'' interpretacją    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{\sf Bstalić wartości zmiennych.
===Znaczenie formuł===    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{\sf Bstalić wartości zmiennych.


{{definicja||zesiesmieli|
{{definicja||zesiesmieli|
Linia 39: Linia 39:




  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ślamyprzez indukcję:
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ślamyprzez indukcję:
*item <math>\wfz\bot\varrho=0</math> oraz <math>\wfz\top\varrho=1</math>;
*item <math>\wfz\bot\varrho=0</math> oraz <math>\wfz\top\varrho=1</math>;
*\item <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;
*\item <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;
Linia 49: Linia 49:
}}
}}


    Łatwo można zauważyć, że </math>\wf\prooftree \var\varphi\to\psi \justifies \varrho \using \textrm{\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{\sf 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{\sf 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{\sf 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>.
Łatwo można zauważyć, że </math>\wf\prooftree \var\varphi\to\psi \justifies \varrho \using \textrm{\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{\sf 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{\sf 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{\sf 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>.
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łnionaprzez 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*}.
'''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łnionaprzez 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*}.




Linia 61: Linia 61:




      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ą.}}
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ą.}}


===Tautologie rachunku zdań===
===Tautologie rachunku zdań===


 
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>.
  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>.


{{fakt||instancja2|
{{fakt||instancja2|
Linia 72: Linia 71:




  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||
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||


}}
}}
Linia 80: Linia 79:




  Następujące formuły \begin{eqnarray*}i wszystkie ich instancje\end{eqnarray*} są tautologiami rachunku zdań:%<!--%-->
Następujące formuły \begin{eqnarray*}i wszystkie ich instancje\end{eqnarray*} są tautologiami rachunku zdań:%<!--%-->




Linia 116: Linia 115:
Niektóre z powyższych formu\l\ wskazują na analogię pomiędzy    \rightarrowlikacją i\boldsymbol{s}}\def\blank{\hbox{\sf 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*}.
Niektóre z powyższych formu\l\ wskazują na analogię pomiędzy    \rightarrowlikacją i\boldsymbol{s}}\def\blank{\hbox{\sf 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*}.


  O ile&nbsp;\begin{eqnarray*}[[#9]]\end{eqnarray*} 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 \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]].
O ile&nbsp;\begin{eqnarray*}[[#9]]\end{eqnarray*} 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 \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]].  
 
    Formuła&nbsp;\begin{eqnarray*}[[#12a]]\end{eqnarray*} wyraża \rightarrowlikację z pomocą negacji i alternatywyi 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>.  
Formuła&nbsp;\begin{eqnarray*}[[#12a]]\end{eqnarray*} wyraża \rightarrowlikację z pomocą negacji i alternatywyi 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>.  


      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{\sf Bzasadnienie drugiej formuły jest zaś w istocie związane    z prawem&nbsp;\begin{eqnarray*}[[#5]]\end{eqnarray*}.  
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{\sf Bzasadnienie drugiej formuły jest zaś w istocie związane    z prawem&nbsp;\begin{eqnarray*}[[#5]]\end{eqnarray*}.  


  Własnością, która często\boldsymbol{s}}\def\blank{\hbox{\sf Bchodzi naszej\boldsymbol{s}}\def\blank{\hbox{\sf 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{\sf 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!
Własnością, która często\boldsymbol{s}}\def\blank{\hbox{\sf Bchodzi naszej\boldsymbol{s}}\def\blank{\hbox{\sf 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{\sf 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!


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{\sf 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.  
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{\sf 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.  


===Postać normalna formuł===
===Postać normalna formuł===
 


{{definicja|||
{{definicja|||
Linia 135: Linia 132:
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.
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.


    \hfil\hfil\hfil </math>\var\varphi = \begin{eqnarray*}p^1_1\vee\cdots\vee p^{k_1}_1\end{eqnarray*}\wedge\cdots\wedge    \begin{eqnarray*}p^1_r\vee\cdots\vee p^{k_r}_r\end{eqnarray*}</math>,\hfil \begin{eqnarray*}*\end{eqnarray*}
\hfil\hfil\hfil </math>\var\varphi = \begin{eqnarray*}p^1_1\vee\cdots\vee p^{k_1}_1\end{eqnarray*}\wedge\cdots\wedge    \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{\sf 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> totyle co koniunkcja z&nbsp;jednym pustym składnikiem.}}
 
        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{\sf 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> totyle co koniunkcja z&nbsp;jednym pustym składnikiem.}}


{{fakt||pania|
{{fakt||pania|
Linia 147: Linia 142:
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:
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>.
\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&nbsp;[[#wziawszy}\end{eqnarray*}.]] Przypadek koniunkcji jest oczywisty, a \rightarrowlikację    \Delta\vdashliminujemy z pomocą prawa&nbsp;[[#taut-rz]]\begin{eqnarray*}[[#12a]]\end{eqnarray*}. Szczegóły pozostawiamy Czytelnikowi.}}
Podobnie postępujemy z alternatywą dwóch formuł w postaci normalnej.\footnote{Ta procedura jest niestety  wykładnicza \begin{eqnarray*}Ćwiczenie&nbsp;[[#wziawszy}\end{eqnarray*}.]] Przypadek koniunkcji jest oczywisty, a \rightarrowlikację    \Delta\vdashliminujemy z pomocą prawa&nbsp;[[#taut-rz]]\begin{eqnarray*}[[#12a]]\end{eqnarray*}. Szczegóły pozostawiamy Czytelnikowi.}}
Linia 153: Linia 148:
\subsection*{Ćwiczenia}\begin{small}
\subsection*{Ćwiczenia}\begin{small}
##Zbadać, czy następujące formuły są tautologiami rachunku zdańi czy są spełnialne:
##Zbadać, czy następujące formuły są tautologiami rachunku zdańi czy są spełnialne:
###\item <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>;
###\item <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>;
###\item <math>\begin{eqnarray*}p\to q\end{eqnarray*}\vee\begin{eqnarray*}q\to r\end{eqnarray*}</math>;
###\item <math>\begin{eqnarray*}p\to q\end{eqnarray*}\vee\begin{eqnarray*}q\to r\end{eqnarray*}</math>;
Linia 164: Linia 157:
###item <math>q\vee r\to \begin{eqnarray*}p\vee q\to p\vee r\end{eqnarray*}</math>;
###item <math>q\vee r\to \begin{eqnarray*}p\vee q\to p\vee r\end{eqnarray*}</math>;
###\item </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 </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>.
#Czy następujące zbiory formuł są spełnialne?
#Czy następujące zbiory formuł są spełnialne?
##em <math>\{p\to \neg q, q\to \neg r, r\to \neg p\}</math>;
##em <math>\{p\to \neg q, q\to \neg r, r\to \neg p\}</math>;
Linia 174: Linia 162:
##item <math>\{\neg\begin{eqnarray*}\neg q\vee p\end{eqnarray*}, p\vee\neg r, q\to\neg r\}</math>;
##item <math>\{\neg\begin{eqnarray*}\neg q\vee p\end{eqnarray*}, p\vee\neg r, q\to\neg r\}</math>;
##item <math>\{s\to q, p\vee\neg q, \neg\begin{eqnarray*}s\wedge p\end{eqnarray*}, s\}</math>.
##item <math>\{s\to q, p\vee\neg q, \neg\begin{eqnarray*}s\wedge p\end{eqnarray*}, s\}</math>.
\item Czy zachodzą następujące konsekwencje?
\item Czy zachodzą następujące konsekwencje?
#em <math>p\wedge q\to\neg r, p\models r\to \neg q</math>;
#em <math>p\wedge q\to\neg r, p\models r\to \neg q</math>;

Wersja z 11:38, 19 wrz 2006

\titleLogika dla informatyków\author{Jerzy Tiuryn\and Jerzy Tyszkiewicz\and Paweł Urzyczyn}\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 słuszności wywodu. Logika, która narodziła się jakonauka o rozumowaniu, jest jednak ważnym i potrzebnym narzędziem, które to przekonanie\boldsymbol{s}}\def\blank{\hbox{\sf 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 pewnymsensie paradoksalna: będąc sama częścią matematyki, traktuje matematykę jako swój przedmiot zainteresowania. Dla\boldsymbol{s}}\def\blank{\hbox{\sf 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{\sf Bproszczone modele, które bez zastrzeżeń można\boldsymbol{s}}\def\blank{\hbox{\sf Bważać za zwykłe obiektymatematyczne. Mimo tego ograniczenia, logika matematyczna dostarczaniezwykle ważnych wniosków o charakterze filozoficznymi metamatematycznym.

Logika formalna była kiedyś\Delta\vdashzoteryczną 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 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.

Rachunek zdań

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 \begin{eqnarray*}zdaniami orzekającymi\end{eqnarray*}, 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 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{\sf 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 , , itp. Pojęcie formuły zdaniowej definiujemy przez indukcję:

  • item Zmienne zdaniowe oraz i są formułami zdaniowymi;
  • tem 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ą;
  • \item 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{\sf 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ślamyprzez indukcję:

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

\endprooftree=\max\{\wf\prooftree \var\varphi \justifies \varrho \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree, \wf\prooftree \psi \justifies \varrho}\ \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>;

  • \item </math>\wf\prooftree \var\varphi\wedge\psi \justifies \varrho \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree=\min\{\wf\prooftree \var\varphi \justifies \varrho \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree, \wf\prooftree \psi \justifies \varrho}\ \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>;
  • \item Parser nie mógł rozpoznać (nieznana funkcja „\wf”): {\displaystyle \wf\prooftree \var\varphi\to\psi \justifies \varrho \using \textrm{\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} ;
  • tem 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 \textrm{\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{\sf 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{\sf 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{\sf 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 przebiega skończony zbiór . 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łnionaprzez 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 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 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}}} End of proof.gif

    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}}} End of proof.gif

    Niektóre z powyższych formu\l\ wskazują na analogię pomiędzy \rightarrowlikacją i\boldsymbol{s}}\def\blank{\hbox{\sf Bporządkowaniem \begin{eqnarray*}np. zawieraniem zbiorów\end{eqnarray*}. Implikację można odczytać tak: ,,warunek jest silniejszy \begin{eqnarray*}mniejszy lub równy\end{eqnarray*} od . 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 jest najsilniejszym warunkiem, który wynika zarówno z jak i z \begin{eqnarray*}czyli jest kresem górnym pary , 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 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  do oznaczymy przez , to mamy \begin{eqnarray*}bardzo naturalną\end{eqnarray*} równoliczność . 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 alternatywyi 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 wynika z  w kontekście , 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 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 i , natychmiast zgadzamy się na . Intuicyjne\boldsymbol{s}}\def\blank{\hbox{\sf 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{\sf Bchodzi naszej\boldsymbol{s}}\def\blank{\hbox{\sf 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{\sf 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{\sf 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{\sf Btożsamiamy w myśl Przykładu #taut-rz\begin{eqnarray*}#14\end{eqnarray*} ze stałą , a stała totyle co koniunkcja z jednym pustym składnikiem.}}

    Fakt


    Dla każdej formuły zdaniowej istnieje równoważna jej formuław 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}}} End of proof.gif

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

      1. Zbadać, czy następujące formuły są tautologiami rachunku zdańi czy są spełnialne:
        1. \item 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. \item 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. \item 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. \item 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. \item 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. \item 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. \item 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. item 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. \item </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. em ;
      2. em ;
      3. item 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. item 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. em ;
    2. item 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. item 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. item Parser nie mógł rozpoznać (błąd składni): {\displaystyle \begin{eqnarray*}p\to q\end{eqnarray*}\to r, \neg p\models r} ;
    5. item Parser nie mógł rozpoznać (błąd składni): {\displaystyle \begin{eqnarray*}p\to q\end{eqnarray*}\to r, \neg r\models p} ;
    6. em .


         \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. \item 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.
    2. \item 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        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 , 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ą .\end{eqnarray*} 
    
      Wskazówka: Indukcja \zwn .
    
    \item    Niech  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 , który nazwiemy jej    wartością przy wartościowaniu Parser nie mógł rozpoznać (nieznana funkcja „\warpi”): {\displaystyle \warpi}
    .
    
    • item 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} ;
    • \item Parser nie mógł rozpoznać (nieznana funkcja „\wf”): {\displaystyle \wf\prooftree p \justifies \warpi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree=\warpi\begin{eqnarray*}p\end{eqnarray*}} , gdy jest symbolem zdaniowym;
    • item Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz{\neg\var\varphi}\warpi= X-\wfz{\var\varphi}\warpi} ;
    • \item </math>\wf\prooftree \var\varphi\vee\psi \justifies \warpi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree=\wf\prooftree \var\varphi \justifies \warpi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree\cup \wf\prooftree \psi \justifies \warpi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>;
    • \item </math>\wf\prooftree \var\varphi\wedge\psi \justifies \warpi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree=\wf\prooftree \var\varphi \justifies \warpi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree\cap \wf\prooftree \psi \justifies \warpi \using \textrm{\begin{eqnarray*}W\end{eqnarray*}}\endprooftree</math>;
    • \item </math>\wf\prooftree \var\varphi\to\psi \justifies \warpi}= \begin{eqnarray*}X-\wfz{\var\varphi \using \textrm{\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 .%%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:
    
    • \item Zarówno Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\to\vartheta} jak i sątautologiami rachunku zdań.
    • em 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  i niech  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  na . 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  ani ,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}