Logika dla informatyków/Rachunek zdań: Różnice pomiędzy wersjami
Linia 12: | Linia 12: | ||
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 (zdaniami orzekającymi), 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 '' <math>\vee</math>,''koniunkcja '' <math>\wedge</math>, ''negacja'' <math>\neg</math>, czy ''implikacja'' <math>\to</math>. Wygodne są też ''stałe logiczne '' <math>\bot</math> (fałsz) i <math>\top</math> (prawda),które można uważać za zeroargumentowe spójniki logiczne.Dlatego nasza pierwsza definicja jest taka: | 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 (zdaniami orzekającymi), 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 '' <math>\vee</math>,''koniunkcja '' <math>\wedge</math>, ''negacja'' <math>\neg</math>, czy ''implikacja'' <math>\to</math>. Wygodne są też ''stałe logiczne '' <math>\bot</math> (fałsz) i <math>\top</math> (prawda),które można uważać za zeroargumentowe spójniki logiczne.Dlatego nasza pierwsza definicja jest taka: | ||
{{definicja||radamalpa| | {{definicja||radamalpa| | ||
Linia 18: | Linia 19: | ||
*Zmienne zdaniowe oraz <math>\bot</math> i <math>\top</math> są formułami zdaniowymi; | *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 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>(\var\varphi\to\psi)</math>, <math>(\var\varphi\vee\psi)</math> i <math>(\var\varphi\wedge\psi)</math>też są formułami zdaniowymi. | *Jeśli napisy <math>\var\varphi</math> i <math>\psi</math> są formułami zdaniowymi to napisy <math>(\var\varphi\to\psi)</math>, <math>(\var\varphi\vee\psi)</math> i <math>(\var\varphi\wedge\psi)</math> też są formułami zdaniowymi. | ||
Inaczej mówiąc, formuły zdaniowe to\Delta\vdashlementy najmniejszego zbiorunapisó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, | Inaczej mówiąc, formuły zdaniowe to\Delta\vdashlementy najmniejszego zbiorunapisó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,(\var\varphi\to\psi),(\var\varphi\vee\psi), (\var\varphi\wedge\psi)</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: | ||
Linia 30: | Linia 31: | ||
#Implikacja. | #Implikacja. | ||
<!--%-->Zatem na przykład wyrażenie <math>\neg\var\varphi\vee\psi\to\vartheta</math> oznacza <math> | <!--%-->Zatem na przykład wyrażenie <math>\neg\var\varphi\vee\psi\to\vartheta</math> oznacza <math>((\neg\var\varphi\vee\psi)\to\vartheta)</math>, ale napis <math>\var\varphi\vee\psi\wedge \vartheta</math> jest niepoprawny. | ||
===Znaczenie formuł=== | ===Znaczenie formuł=== | ||
formuły jest wartość logiczna tj. ,,prawda'' | formuły jest wartość logiczna tj. ,,prawda'' (1) lub ,,fałsz'' (0).Aby określić wartość formuły zdaniowej trzeba jednak najpierwustalić wartości zmiennych. | ||
{{definicja||zesiesmieli| | {{definicja||zesiesmieli| | ||
Linia 39: | Linia 40: | ||
Przez ''wartościowanie zdaniowe | Przez ''wartościowanie zdaniowe'' rozumiemy dowolną funkcję <math>\varrho</math>,która zmiennym zdaniowym przypisuje wartości logiczne 0 lub 1. ''Wartość formuły'' zdaniowej <math>\var\varphi</math> przy wartościowaniu <math>\varrho</math> oznaczamy przez <math>\wfz\var\varphi\varrho</math> i określamyprzez indukcję: | ||
*<math>\wfz\bot\varrho=0</math> oraz <math>\wfz\top\varrho=1</math>; | *<math>\wfz\bot\varrho=0</math> oraz <math>\wfz\top\varrho=1</math>; | ||
*<math>\wf\prooftree p \justifies \varrho \using \textrm{ | *<math>\wf\prooftree p \justifies \varrho \using \textrm{(W)}\endprooftree=\varrho(p)</math>, gdy <math>p</math> jest symbolem zdaniowym; | ||
*<math>\wfz{\neg\var\varphi}\varrho=1-\wfz{\var\varphi}\varrho</math>; | *<math>\wfz{\neg\var\varphi}\varrho=1-\wfz{\var\varphi}\varrho</math>; | ||
*</math>\wf\prooftree \var\varphi\vee\psi \justifies \varrho \using \textrm{ | *</math>\wf\prooftree \var\varphi\vee\psi \justifies \varrho \using \textrm{(W)}\endprooftree=\max\{\wf\prooftree \var\varphi \justifies \varrho \using \textrm{(W)}\endprooftree,\wf\prooftree \psi \justifies \varrho}\ \using \textrm{(W)}\endprooftree</math>; | ||
*</math>\wf\prooftree \var\varphi\wedge\psi \justifies \varrho \using \textrm{ | *</math>\wf\prooftree \var\varphi\wedge\psi \justifies \varrho \using \textrm{(W)}\endprooftree=\min\{\wf\prooftree \var\varphi \justifies \varrho \using \textrm{(W)}\endprooftree,\wf\prooftree \psi \justifies \varrho}\ \using \textrm{(W)}\endprooftree</math>; | ||
*<math>\wf\prooftree \var\varphi\to\psi \justifies \varrho \using \textrm{ | *<math>\wf\prooftree \var\varphi\to\psi \justifies \varrho \using \textrm{(W)}\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. | *<math>\wfz{\var\varphi\to\psi}\varrho=1</math>, \wpp. | ||
}} | }} | ||
Łatwo można zauważyć, że </math>\wf\prooftree \var\varphi\to\psi \justifies \varrho \using \textrm{ | Łatwo można zauważyć, że </math>\wf\prooftree \var\varphi\to\psi \justifies \varrho \using \textrm{(W)}\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>, dladowolnego <math>\varrho</math>. A zatem zamiast formuły <math>\var\varphi\to\psi</math> moglibyśmy z równym powodzeniemuż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 wystarczyużywać np. \rightarrowlikacji i fałszu (Ćwiczenie [[#udacczleka]]). Czasem i my będziemy korzystać z tego wygodnegouproszczenia, 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 \= <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(\var\varphi\to\neg\psi)</math>.\end{tabbing}Będziemy też czasem pisać <math>\var\varphi\\leftrightarrow\psi</math> zamiast <math>(\var\varphi\to\psi)\wedge(\psi\to\var\varphi)</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ł <math>\var\varphi_i</math>, gdzie <math>i</math>przebiega skończony zbiór <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ł <math>\var\varphi_i</math>, gdzie <math>i</math>przebiega skończony zbiór <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 | '''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 <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 <math>\Gamma</math> spełnia także formułę <math>\var\varphi</math>. Mówimy wtedy, że <math>\var\varphi</math> jest ''semantyczną konsekwencją'' zbioru <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ą takiesame (tj. takie, że równoważność <math>\var\varphi\\leftrightarrow\psi</math> jest tautologią ---patrz niżej). | ||
Linia 61: | Linia 62: | ||
Formuła <math>\var\varphi</math> jest ''spełnialna | Formuła <math>\var\varphi</math> jest ''spełnialna'', gdy <math>\varrho\models\var\varphi</math> zachodzi dla pewnego wartościowania <math>\rho</math>. Jeśli zaś <math>\models\var\varphi</math> to mówimy, że <math>\var\varphi</math> jest''tautologią'' (klasycznego) 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>\var\varphi</math> jest formułą zdaniową, to przez <math>S | 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(\var\varphi)</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(p)</math>. Mówimy, że formuła <math>S(\var\varphi)</math> jest ''instancją'' schematu zdaniowego <math>\var\varphi</math>. Używamy oznaczenia <math>S(\Gamma) = \{S(\psi)\ |\ \psi\in\Gamma\}</math>. | ||
{{fakt||instancja2| | {{fakt||instancja2| | ||
Linia 71: | Linia 72: | ||
Jeżeli\/ <math>\Gamma</math> jest zbiorem formu\l\ rachunku zdań i <math>\Gamma\models\var\varphi</math>, to także <math>S | Jeżeli\/ <math>\Gamma</math> jest zbiorem formu\l\ rachunku zdań i <math>\Gamma\models\var\varphi</math>, to także <math>S(\Gamma)\models S(\var\varphi)</math>. W szczególności, jeśli <math>\var\varphi</math> jest tautologią to <math>S(\var\varphi)</math> jest też tautologią.}}{{dowod|| | ||
}} | }} | ||
Linia 79: | Linia 80: | ||
Następujące formuły | Następujące formuły (i wszystkie ich instancje) są tautologiami rachunku zdań:%<!--%--> | ||
Linia 93: | Linia 94: | ||
<math> | <math>(\neg q\to\neg p)\to (p\to q)</math>; | ||
<math> | <math>(p\to r)\to((q\to r)\to(p\vee q \to r))</math>; | ||
<math> | <math>(r\to p)\to((r\to q)\to(r\to(p\wedge q)))</math>; | ||
Linia 107: | Linia 108: | ||
(p\leftrightarrow(q\leftrightarrow r))</math>; | |||
<math>p\wedge\top\\leftrightarrow p</math>. }}{{dowod|| | <math>p\wedge\top\\leftrightarrow p</math>. }}{{dowod|| | ||
Linia 113: | Linia 114: | ||
}} | }} | ||
Niektóre z powyższych formu\l\ wskazują na analogię pomiędzy\rightarrowlikacją | Niektóre z powyższych formu\l\ wskazują na analogię pomiędzy\rightarrowlikacją iuporządkowaniem (np. 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ę ([[#1]]) czytamy wtedy: ,,fałsz jest najsilniejszym warunkiem (najmniejszym\Delta\vdashlementem)''. Formuły ([[#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 ([[#9]]) wyrażają dualną własność koniunkcji: to jest kres dolny, czyli najsłabszy warunek \rightarrowlikujący oba argumenty.Prawa de Morgana ([[#11]],[[#12]]) wskazują też na analogie koniunkcja -- iloczyn, alternatywa -- suma, negacja -- dopełnienie. Ta ostatnia widoczna jest też w prawach wyłączonego środka ([[#5]]), podwójnej negacji ([[#6]]) i kontrapozycji ([[#7]]). | ||
O ile | O ile ([[#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 funkcjiz <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 ([[#10]]) nie jest wcale przypadkowe. Wrócimy do tego w Rozdziale [[#logint]]. | ||
Formuła | Formuła ([[#12a]]) 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 | Formuła ([[#2]]) mówi, że dodatkowe założenie można zawsze zignorować. Formuła ([[#3]]) (prawo Frege) wyraża dystrybutywność \rightarrowlikacji względem siebie samej i może być odczytywana tak:jeśli <math>r</math> wynika z <math>q</math> w kontekście <math>p</math>, to ten kontekst może być włączony do założenia i konkluzji. Formuła ([[#4]]) (prawo Peirce'a) wyraża przy pomocy samej \rightarrowlikacji zasadniczą własnośćlogiki klasycznej: możliwość rozumowania przez zaprzeczenie. Sensprawa Peirce'a widać najlepiej gdy <math>q</math> jest fałszem, otrzymujemy wtedyprawo Claviusa: <math>(\neg p\to p)\to p</math>. | ||
Warto zauważyć, że formuły w parach | Warto zauważyć, że formuły w parach ([[#6]]) i ([[#7]]) nie są wcale tak symetryczne jak się wydaje na pierwszy rzut oka. Na przykład, pierwsza z formu\l ([[#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>. Intuicyjneuzasadnienie drugiej formuły jest zaś w istocie związane z prawem ([[#5]]). | ||
Własnością, która | Własnością, która częstouchodzi naszejuwagi, jest łączność równoważności ([[#13]]). W zwiazku z tym, wyrażenie <math>\var\varphi \\leftrightarrow \psi \\leftrightarrow \vartheta</math> można z czystym sumieniem pisać bez nawiasów. Zwróćmy jednakuwagę 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> | 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żemyuważać za ,,pustą alternatywę'' a <math>\top</math> za ,,pustą koniunkcję''. Powyżej pominięto dobrze znane prawa: łączność i przemienność koniunkcji i alternatywy, ich wzajemną dystrybutywność, przechodniość,zwrotność \rightarrowlikacji itp. | ||
Linia 131: | Linia 132: | ||
{{definicja||| | {{definicja||| | ||
Każdą zmienną zdaniową i negację zmiennej zdaniowej nazwijmy ''literałem | 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 = | \hfil\hfil\hfil </math>\var\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 (*) | ||
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ę | 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 [[#taut-rz]]([[#14]]) ze stałą <math>\top</math>, a stała <math>\bot</math> totyle co koniunkcja z jednym pustym składnikiem.}} | ||
{{fakt||pania| | {{fakt||pania| | ||
Linia 143: | Linia 144: | ||
Dla każdej formuły zdaniowej istnieje równoważna jej formuław koniunkcyjnej postaci normalnej.}}{{dowod|| | Dla każdej formuły zdaniowej istnieje równoważna jej formuław koniunkcyjnej postaci normalnej.}}{{dowod|| | ||
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 <math>\var\varphi</math> jest w postaci | 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 <math>\var\varphi</math> jest w postaci (*), to <math>\neg\var\varphi</math>można przekształcić w koniunkcyjną postać normalną stosując prawa De Morgana i prawa dystrybutywności: | ||
\hfil </math>\psi\vee | \hfil </math>\psi\vee(\vartheta\wedge\zeta)\\leftrightarrow(\psi\vee\vartheta)\wedge(\psi\vee\zeta)</math>\hfil</math>\psi\vee(\vartheta\vee\zeta)\\leftrightarrow(\psi\vee\vartheta)\vee(\psi\vee\zeta)</math>. | ||
Podobnie postępujemy z alternatywą dwóch formuł w postaci normalnej.\footnote{Ta procedura jest niestetywykładnicza | Podobnie postępujemy z alternatywą dwóch formuł w postaci normalnej.\footnote{Ta procedura jest niestetywykładnicza (Ćwiczenie [[#wziawszy}).]]Przypadek koniunkcji jest oczywisty, a \rightarrowlikacjęeliminujemy z pomocą prawa [[#taut-rz]]([[#12a]]). Szczegóły pozostawiamy Czytelnikowi.}} | ||
\subsection*{Ćwiczenia}\begin{small} | \subsection*{Ćwiczenia}\begin{small} | ||
Linia 153: | Linia 154: | ||
###<math> | ###<math>(p\to r)\wedge(q\to s)\wedge(\neg p\vee \neg s)\to (\neg p\vee \neg q)</math>; | ||
###<math> | ###<math>(p\to q)\vee(q\to r)</math>; | ||
###<math> | ###<math>((p\to q)\to r)\wedge\neg(((q\to r)\to r)\to r))</math>; | ||
###<math> | ###<math>(p\to q)\wedge(\neg p\to r)\to (r\to\neg q)</math>; | ||
###<math> | ###<math>((\neg p\to q)\to r)\to \neg(p\to q)</math>; | ||
###<math>p\vee | ###<math>p\vee(\neg p\wedge q)\vee(\neg p\wedge\neg q)</math>; | ||
###<math> | ###<math>(p\to q)\vee (p\to \neg q)</math>; | ||
###<math>q\vee r\to | ###<math>q\vee r\to (p\vee q\to p\vee r)</math>; | ||
###</math> | ###</math>(p\vee q\vee r)\wedge(q\vee(\neg p\wedge s))\wedge (\neg s\vee q\vee r)\to q</math>. | ||
Linia 170: | Linia 171: | ||
##<math>\{p\to \neg q, q\to \neg r, r\to \neg p\}</math>; | ##<math>\{p\to \neg q, q\to \neg r, r\to \neg p\}</math>; | ||
##<math>\{p\to q, q\to r, r\vee s\leftrightarrow \neg q\}</math>; | ##<math>\{p\to q, q\to r, r\vee s\leftrightarrow \neg q\}</math>; | ||
##<math>\{\neg | ##<math>\{\neg(\neg q\vee p), p\vee\neg r, q\to\neg r\}</math>; | ||
##<math>\{s\to q, p\vee\neg q, \neg | ##<math>\{s\to q, p\vee\neg q, \neg(s\wedge p), s\}</math>. | ||
\item Czy zachodzą następujące konsekwencje? | \item Czy zachodzą następujące konsekwencje? | ||
#<math>p\wedge q\to\neg r, p\models r\to \neg q</math>; | #<math>p\wedge q\to\neg r, p\models r\to \neg q</math>; | ||
#<math>p\to q, p\to | #<math>p\to q, p\to(q\to r)\models p\to r</math>; | ||
#<math>p\to | #<math>p\to(q\to r), p\to q\models q\to r</math>; | ||
#<math> | #<math>(p\to q)\to r, \neg p\models r</math>; | ||
#<math> | #<math>(p\to q)\to r, \neg r\models p</math>; | ||
#<math>p\to q, r\to \neg q\models r\to\neg p</math>. | #<math>p\to q, r\to \neg q\models r\to\neg p</math>. | ||
Linia 186: | Linia 187: | ||
\item Znależć formułę zdaniową <math>\var\varphi</math>, która jest spełniona dokładnieprzy wartościowaniach <math>\varrho</math> spełniających warunki: | \item Znależć formułę zdaniową <math>\var\varphi</math>, która jest spełniona dokładnieprzy wartościowaniach <math>\varrho</math> spełniających warunki: | ||
#Dokładnie dwie spośród wartości <math>\varrho | #Dokładnie dwie spośród wartości <math>\varrho(p)</math>, <math>\varrho(q)</math> i <math>\varrho(r)</math> są równe 1. | ||
#<math>\varrho | #<math>\varrho(p) = \varrho(q) \not= \varrho(r)</math>. | ||
''Rozwiązanie:'' Można to robić na różne sposoby, ale najprościej po prostu wypisać alternatywę koniunkcji, np. </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 <span id="udacczleka" \> Udowodnić, że dla dowolnej funkcji <math>f:\{0,1\}^k\to\{0,1\}</math>istnieje formuła <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 dladowolnego wartościowania zdaniowego <math>\varrho</math> zachodzi równość<math>\wfz\var\varphi\varrho = f | \item <span id="udacczleka" \> Udowodnić, że dla dowolnej funkcji <math>f:\{0,1\}^k\to\{0,1\}</math>istnieje formuła <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 dladowolnego wartościowania zdaniowego <math>\varrho</math> zachodzi równość<math>\wfz\var\varphi\varrho = f(\varrho(p_1),\ldots, \varrho(p_k))</math>. (Inaczej mówiąc, formuła <math>\var\varphi</math> definiuje funkcję zerojedynkową <math>f</math>.) | ||
''Wskazówka:'' Indukcja \zwn <math>k</math>. | ''Wskazówka:'' Indukcja \zwn <math>k</math>. | ||
\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 | \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 zbiorze <math>\pot X</math>. Każdej formule zdaniowej <math>\var\varphi</math> przypiszemy teraz pewien podzbiór <math>\wfz\var\varphi\warpi</math> zbioru <math>X</math>, który nazwiemy jej ''wartością'' przy wartościowaniu <math>\warpi</math>. | ||
*<math>\wfz\bot\warpi=\emptyset</math> oraz <math>\wfz\top\warpi=X</math>; | *<math>\wfz\bot\warpi=\emptyset</math> oraz <math>\wfz\top\warpi=X</math>; | ||
*<math>\wf\prooftree p \justifies \warpi \using \textrm{ | *<math>\wf\prooftree p \justifies \warpi \using \textrm{(W)}\endprooftree=\warpi(p)</math>, gdy <math>p</math> jest symbolem zdaniowym; | ||
*<math>\wfz{\neg\var\varphi}\warpi= X-\wfz{\var\varphi}\warpi</math>; | *<math>\wfz{\neg\var\varphi}\warpi= X-\wfz{\var\varphi}\warpi</math>; | ||
*</math>\wf\prooftree \var\varphi\vee\psi \justifies \warpi \using \textrm{ | *</math>\wf\prooftree \var\varphi\vee\psi \justifies \warpi \using \textrm{(W)}\endprooftree=\wf\prooftree \var\varphi \justifies \warpi \using \textrm{(W)}\endprooftree\cup\wf\prooftree \psi \justifies \warpi \using \textrm{(W)}\endprooftree</math>; | ||
*</math>\wf\prooftree \var\varphi\wedge\psi \justifies \warpi \using \textrm{ | *</math>\wf\prooftree \var\varphi\wedge\psi \justifies \warpi \using \textrm{(W)}\endprooftree=\wf\prooftree \var\varphi \justifies \warpi \using \textrm{(W)}\endprooftree\cap\wf\prooftree \psi \justifies \warpi \using \textrm{(W)}\endprooftree</math>; | ||
*</math>\wf\prooftree \var\varphi\to\psi \justifies \warpi}= | *</math>\wf\prooftree \var\varphi\to\psi \justifies \warpi}= (X-\wfz{\var\varphi \using \textrm{(W)}\endprooftree\warpi)\cup\wfz\psi\warpi</math>. | ||
Udowodnić, że formuła <math>\var\varphi</math> jest tautologią rachunku zdań \wtw, gdy jest ''prawdziwa | Udowodnić, że formuła <math>\var\varphi</math> jest tautologią rachunku zdań \wtw, gdy jest ''prawdziwa'' w <math>\pot X</math>, tj. gdy dla dowolnego <math>\warpi</math>jej wartością jest cały zbiór <math>X</math>.%%Rozwiazanie | ||
\item <span id="wziawszy" \> 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 <span id="wziawszy" \> 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. | ||
Linia 212: | Linia 213: | ||
<!--%% D. Niwinski--> | <!--%% D. Niwinski--> | ||
\item Niech <math>\var\varphi | \item Niech <math>\var\varphi(p)</math> będzie pewną formułą, w którejwystępuje zmienna zdaniowa <math>p</math> i niech <math>q</math> będzie zmienną zdaniową niewystępującą w <math>\var\varphi(p)</math>. Przez <math>\var\varphi(q)</math> oznaczmy formułę powstałą z <math>\var\varphi(p)</math> przez zamianę wszystkich <math>p</math> na <math>q</math>. Udowodnić, że jeśli | ||
\hfil <math>\var\varphi | \hfil <math>\var\varphi(p), \var\varphi(q) \models p\leftrightarrow q</math>\hfil | ||
to istnieje formuła <math>\psi</math>, nie zawierająca zmiennych <math>p</math> ani <math>q</math>,taka że | to istnieje formuła <math>\psi</math>, nie zawierająca zmiennych <math>p</math> ani <math>q</math>,taka że | ||
\hfil <math>\var\varphi | \hfil <math>\var\varphi(p)\models p\leftrightarrow\psi</math>.\hfil<!--%% D. Niwinski--> |
Wersja z 09:13, 20 wrz 2006
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 uł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 uniknięcia, "błędnego koła" musimy więc tutaj zauważyć, że logika formalna nieopisuje rzeczywistych wywodów matematyka, ale ich uproszczone modele, które bez zastrzeżeń można uważać za zwykłe obiektymatematyczne. Mimo tego ograniczenia, logika matematyczna dostarcza niezwykle ważnych wniosków o charakterze filozoficznym i 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ć 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ó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ę 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 (zdaniami orzekającymi), 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 implikacja . Wygodne są też stałe logiczne (fałsz) i (prawda),które można uważ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ę:
- 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ć (nieznana funkcja „\var”): {\displaystyle (\var\varphi\to\psi)} , Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle (\var\varphi\vee\psi)} i Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle (\var\varphi\wedge\psi)} 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:
- Negacja;
- Koniunkcja i alternatywa;
- 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ć (nieznana funkcja „\var”): {\displaystyle ((\neg\var\varphi\vee\psi)\to\vartheta)} , 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 (1) lub ,,fałsz (0).Aby określić wartość formuły zdaniowej trzeba jednak najpierwustalić wartości zmiennych.
Definicja
Łatwo można zauważyć, że </math>\wf\prooftree \var\varphi\to\psi \justifies \varrho \using \textrm{(W)}\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} , dladowolnego . A zatem zamiast formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\to\psi} moglibyśmy z równym powodzeniemuż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 wystarczyużywać np. \rightarrowlikacji i fałszu (Ćwiczenie #udacczleka). Czasem i my będziemy korzystać z tego wygodnegouproszczenia, 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ć (nieznana funkcja „\var”): {\displaystyle \neg(\var\varphi\to\neg\psi)} .\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ć (nieznana funkcja „\var”): {\displaystyle (\var\varphi\to\psi)\wedge(\psi\to\var\varphi)} . 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ą takiesame (tj. takie, że równoważność Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\\leftrightarrow\psi} jest tautologią ---patrz niżej).
Definicja
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ć (nieznana funkcja „\var”): {\displaystyle S(\var\varphi)} 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ę . Mówimy, że formuła Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle S(\var\varphi)} jest instancją schematu zdaniowego Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} . Używamy oznaczenia .
Fakt
Dowód
Przykład
Następujące formuły (i wszystkie ich instancje) są tautologiami rachunku zdań:%
;
;
;
(p\leftrightarrow(q\leftrightarrow r))</math>;
Parser nie mógł rozpoznać (błąd składni): {\displaystyle p\wedge\top\\leftrightarrow p} .Dowód
Niektóre z powyższych formu\l\ wskazują na analogię pomiędzy\rightarrowlikacją iuporządkowaniem (np. zawieraniem zbiorów). Implikację można odczytać tak: ,,warunek jest silniejszy (mniejszy lub równy) od . Formu\lę (#1) czytamy wtedy: ,,fałsz jest najsilniejszym warunkiem (najmniejszym\Delta\vdashlementem). Formuły (#8) stwierdzają, że alternatywa jest najsilniejszym warunkiem, który wynika zarówno z jak i z (czyli jest kresem górnym pary , jak suma zbiorów). Formuły (#9) wyrażają dualną własność koniunkcji: to jest kres dolny, czyli najsłabszy warunek \rightarrowlikujący oba argumenty.Prawa de Morgana (#11,#12) wskazują też na analogie koniunkcja -- iloczyn, alternatywa -- suma, negacja -- dopełnienie. Ta ostatnia widoczna jest też w prawach wyłączonego środka (#5), podwójnej negacji (#6) i kontrapozycji (#7).
O ile (#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 funkcjiz do oznaczymy przez , to mamy (bardzo naturalną)równoliczność . Podobieństwo tego związku do formuły (#10) nie jest wcale przypadkowe. Wrócimy do tego w Rozdziale #logint.
Formuła (#12a) 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 (#2) mówi, że dodatkowe założenie można zawsze zignorować. Formuła (#3) (prawo Frege) 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 (#4) (prawo Peirce'a) wyraża przy pomocy samej \rightarrowlikacji zasadniczą własnośćlogiki klasycznej: możliwość rozumowania przez zaprzeczenie. Sensprawa Peirce'a widać najlepiej gdy jest fałszem, otrzymujemy wtedyprawo Claviusa: .
Warto zauważyć, że formuły w parach (#6) i (#7) nie są wcale tak symetryczne jak się wydaje na pierwszy rzut oka. Na przykład, pierwsza z formu\l (#6) to w istocie .Wiedząc, że i , natychmiast zgadzamy się na . Intuicyjneuzasadnienie drugiej formuły jest zaś w istocie związane z prawem (#5).
Własnością, która częstouchodzi naszejuwagi, jest łączność równoważności (#13). 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 jednakuwagę 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żemyuważ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.
Definicja
Fakt
<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 (*), 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(\vartheta\wedge\zeta)\\leftrightarrow(\psi\vee\vartheta)\wedge(\psi\vee\zeta)</math>\hfil</math>\psi\vee(\vartheta\vee\zeta)\\leftrightarrow(\psi\vee\vartheta)\vee(\psi\vee\zeta)</math>.
Podobnie postępujemy z alternatywą dwóch formuł w postaci normalnej.\footnote{Ta procedura jest niestetywykładnicza (Ćwiczenie [[#wziawszy}).]]Przypadek koniunkcji jest oczywisty, a \rightarrowlikacjęeliminujemy z pomocą prawa #taut-rz(#12a). Szczegóły pozostawiamy Czytelnikowi." style="font-variant:small-caps">Dowód
\subsection*{Ćwiczenia}\begin{small}
- Zbadać, czy następujące formuły są tautologiami rachunku zdańi czy są spełnialne:
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- </math>(p\vee q\vee r)\wedge(q\vee(\neg p\wedge s))\wedge (\neg s\vee q\vee r)\to q</math>.
- Czy następujące zbiory formuł są spełnialne?
- ;
- ;
- ;
- .
\item Czy zachodzą następujące konsekwencje?
- ;
- ;
- ;
- ;
- ;
- .
\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}}
oznaczadualizację 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 orazkaż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ładnieprzy wartościowaniach spełniających warunki:
- Dokładnie dwie spośród wartości , i są równe 1.
- .
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 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 dladowolnego wartościowania zdaniowego zachodzi równośćParser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz\var\varphi\varrho = f(\varrho(p_1),\ldots, \varrho(p_k))} . (Inaczej mówiąc, formuła Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} definiuje funkcję zerojedynkową .)
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} .
- 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 \textrm{(W)}\endprooftree=\warpi(p)} , gdy 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 \textrm{(W)}\endprooftree=\wf\prooftree \var\varphi \justifies \warpi \using \textrm{(W)}\endprooftree\cup\wf\prooftree \psi \justifies \warpi \using \textrm{(W)}\endprooftree</math>;
- </math>\wf\prooftree \var\varphi\wedge\psi \justifies \warpi \using \textrm{(W)}\endprooftree=\wf\prooftree \var\varphi \justifies \warpi \using \textrm{(W)}\endprooftree\cap\wf\prooftree \psi \justifies \warpi \using \textrm{(W)}\endprooftree</math>;
- </math>\wf\prooftree \var\varphi\to\psi \justifies \warpi}= (X-\wfz{\var\varphi \using \textrm{(W)}\endprooftree\warpi)\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 prawdziwa w Parser 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:
- Zarówno Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\to\vartheta} jak i są 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(p)} będzie pewną formułą, w którejwystępuje zmienna zdaniowa i niech będzie zmienną zdaniową niewystępującą w Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi(p)} . Przez Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi(q)} oznaczmy formułę powstałą z Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi(p)} przez zamianę wszystkich na . Udowodnić, że jeśli
\hfil Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi(p), \var\varphi(q) \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(p)\models p\leftrightarrow\psi} .\hfil