Test b

Z Studia Informatyczne
Wersja z dnia 01:53, 19 wrz 2006 autorstwa Beret (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania
\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óreto przekonanie uł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, traktujematematykę jako swój przedmiot zainteresowania. Dla uniknięcia,,błędnego koła musimy więc tutaj zauważyć, że logika formalna nieopisuje rzeczywistych wywodów matematyka, ale ich uproszczonemodele, które bez zastrzeżeń można uważać za zwykłe obiektymatematyczne. Mimo tego ograniczenia, logika matematyczna dostarczaniezwykle ważnych wniosków o charakterze filozoficznymi metamatematycznym.

Logika formalna była kiedyś ezoteryczną nauką z pogranicza filozofii imatematyki, potem stała się pełnoprawnym działem czystej matematyki.Jeszcze później, wraz z narodzinami informatyki, zaczęła być corazbardziej postrzegana jako dziedzina matematyki stosowanej, a 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ń}\setcounter{twierdzenie}{0}\label{aleksander==


Jak powiedzieliśmy wyżej, logika matematyczna zajmuje się badaniemrozmaitych systemów formalnych, modelujących rzeczywiste sposobywnioskowania matematycznego. Do najprostszych takich systemów należą różne warianty logiki zdaniowej\/ zwanej też rachunkiem zdań\/. Język rachunku zdań jest bardzo prosty. Nie ma w nim wyrażeń stwierdzających jakiś stan rzeczy, zajście jakichś faktów, czy też wyrażeń orzekających o własnościach obiektów.Przedmiotem naszego zainteresowania są tu tylko możliwe zależności pomiędzy stwierdzeniami (zdaniami orzekającymi), oraz tow jaki sposób prawdziwość zdań złożonych zależy od prawdziwości ichskładowych. Sens samych składowych pozostaje tu całkowicie dowolny i 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:

\begin{definicja}  \rm Ustalamy pewien przeliczalnie   nieskończony zbiór Parser nie mógł rozpoznać (nieznana funkcja „\zmz”): {\displaystyle \zmz}
 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;
  • em Jeśli napis jest formułą zdaniową, to także napis jest formułą zdaniową;
  • item Jeśli napisy i są formułami zdaniowymi to napisy , i też są formułami zdaniowymi.

Inaczej mówiąc, formuły zdaniowe to elementy najmniejszego zbioru napisów Parser nie mógł rozpoznać (nieznana funkcja „\zfz”): {\displaystyle \zfz} , zawierającego Parser nie mógł rozpoznać (nieznana funkcja „\zmz”): {\displaystyle \zmz\cup\{\bot,\top\}} i takiego, że dla dowolnych </math>\varphi,\psi\in\zfzParser nie mógł rozpoznać (błąd składni): {\displaystyle także } \neg\varphi,(\varphi\to\psi), (\varphi\vee\psi), (\varphi\wedge\psi)</math> należą do Parser nie mógł rozpoznać (nieznana funkcja „\zfz”): {\displaystyle \zfz} .\end{definicja}

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 oznacza , ale napis jest niepoprawny.

===Znaczenie formuł} W {\it logice klasycznej\/===

formuły jest wartość logiczna tj. ,,prawda (1) lub ,,fałsz (0).Aby określić wartość formuły zdaniowej trzeba jednak najpierw ustalić wartości zmiennych.

\begin{definicja}  \rm    Przez wartościowanie zdaniowe\/ rozumiemy dowolną funkcję ,która zmiennym zdaniowym przypisuje wartości logiczne 0 lub 1.    Wartość formuły\/ zdaniowej  przy     wartościowaniu  oznaczamy przez Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz\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 „\wfz”): {\displaystyle \wfz{p}{\varrho}=\varrho(p)} , gdy jest symbolem zdaniowym;
  • em Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz{\neg\varphi}\varrho=1-\wfz{\varphi}\varrho} ;
  • m </math>\wfz{\varphi\vee\psi}{\varrho}=\max\{\wfz{\varphi}{\varrho}, \wfz{\psi}{\varrho}\}</math>;
  • m </math>\wfz{\varphi\wedge\psi}{\varrho}=\min\{\wfz{\varphi}{\varrho}, \wfz{\psi}{\varrho}\}</math>;
  • em Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz{\varphi\to\psi}{\varrho}=0} , gdy Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz\varphi\varrho=1} i Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz\psi\varrho=0} ;
  • em Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz{\varphi\to\psi}\varrho=1} , \wpp.

\end{definicja}

Łatwo można zauważyć, że </math>\wfz{\varphi\to\psi}{\varrho} =  \max\{\wfz\psi\varrho,1-\wfz\varphi\varrho\}</math>,   czyli Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz{\varphi\to\psi}\varrho=\wfz{\neg\varphi\vee\psi}\varrho}
, dla    dowolnego . A zatem zamiast formuły  moglibyśmy   z równym powodzeniem używać wyrażenia , lub też     odwrotnie: zamiast alternatywy  pisać .Nasz wybór spójników nie jest więc ,,najoszczędniejszy, w istocie w logice klasycznej wystarczy używać np. implikacji i fałszu  (Ćwiczenie #udacczleka). Czasem i my będziemy korzystać z tego wygodnego uproszczenia, przyjmując, że ,,oficjalnymi spójnikami są tylko implikacja i fałsz, a pozostałe to skróty notacyjne, tj. że napisy\begin{tabbing}  \hspace{3.0cm}\quad \=  \qquad \= oznaczają odpowiednio \quad  \=;\\  \hspace{2.0cm}\ \ \  \> \> \ \ \ \   \> ;\\   \hspace{2.0cm}\ \ \  \>  \> \ \ \ \   \> ;\\   \hspace{2.0cm}\ \ \   \>  \> \ \ \ \    \> .\end{tabbing}  Będziemy też czasem pisać Parser nie mógł rozpoznać (nieznana funkcja „\oto”): {\displaystyle \varphi\oto\psi}
 zamiast   . Zauważmy, że   Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz{\varphi\oto\psi}\varrho=1}
 \wtw, gdy   Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz{\varphi\to\psi}\varrho=\wfz{\psi\to\varphi}\varrho}
.
 Często stosowanym skrótem jest notacja     oznaczająca alternatywę wszystkich formuł , gdzie   przebiega skończony zbiór . Analogicznie stosuje się  zapis .
Notacja i terminologia:     Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\kl”): {\displaystyle \kl\varphi_\varrho=1}
 to piszemy też       lub  i mówimy, że  jest spełniona\/ przez     wartościowanie . Jeśli  jest zbiorem formuł zdaniowych, oraz      dla wszystkich , to piszemy   .  Wreszcie  oznacza, że każde wartościowanie spełniające     wszystkie formuły z  spełnia także formułę . Mówimy wtedy,      że  jest semantyczną konsekwencją\/ zbioru .     Jeśli  to zamiast  piszemy     po prostu . Oznacza to, że formuła  jest spełnionaprzez każde wartościowanie. Na koniec powiedzmy jeszcze, że formułami  równoważnymi\/ nazywamy takie formuły      i , których wartości przy każdym wartościowaniu są takie  same (tj. takie, że równoważność Parser nie mógł rozpoznać (nieznana funkcja „\oto”): {\displaystyle \varphi\oto\psi}
 jest tautologią ---patrz niżej).


\begin{definicja}\rm       Formuła  jest spełnialna\/, gdy      zachodzi dla pewnego wartościowania . Jeśli zaś    to mówimy, że  jest   tautologią\/ (klasycznego) rachunku zdań. Oczywiście   jest spełnialna \wtw, gdy  nie jest tautologią.\end{definicja}
===Tautologie rachunku zdań===


 Niech  będzie funkcją przypisujacą symbolom zdaniowym pewne formuły.    Jeśli  jest formułą zdaniową, to przez  oznaczymy   formu\lę otrzymaną z  przez jednoczesną zamianę każdego wystąpienia zmiennej       zdaniowej  na formu\lę . Mówimy, że formuła  jest    instancją\/ schematu zdaniowego . Używamy oznaczenia   .
\begin{fakt}    Jeżeli\/  jest zbiorem formu\l\ rachunku zdań i     , to także .   W szczególności, jeśli  jest tautologią   to  jest też tautologią.\end{fakt}\vspace{-5mm}\begin{dowod} Ćwiczenie.\end{dowod}
\begin{przyklad}  \rm\parskip=2mmNastępujące formuły (i wszystkie ich instancje) są tautologiami rachunku zdań:%
  1. tem ;
  2. tem ;
  3. tem ;
  4. tem ;
  5. tem ;
  6. \item \quad oraz \quad ;
  7. tem \quad oraz \quad ;
  8. \item , \quad \quad oraz \quad ;
  9. \item ,\quad \quad oraz \quad ;
  10. tem ;
  11. tem ;
  12. tem ;
  13. tem Parser nie mógł rozpoznać (nieznana funkcja „\oto”): {\displaystyle (p\to q)\oto (\neg p\vee q)} ;
  14. em </math>((p\leftrightarrow q)\leftrightarrow r) \leftrightarrow (p\leftrightarrow(q\leftrightarrow r))</math>;
  15. tem Parser nie mógł rozpoznać (nieznana funkcja „\oto”): {\displaystyle p\vee\bot\oto p} \quad oraz \quad Parser nie mógł rozpoznać (nieznana funkcja „\oto”): {\displaystyle p\wedge\top\oto p} .

\begin{dowod} Łatwy. \end{dowod}

Niektóre z powyższych formu\l\ wskazują na analogię pomiędzyimplikacją i uporzą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 elementem). 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 implikują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 funkcji      z  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 implikację 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ść implikacji 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 implikacji zasadniczą własnośćlogiki klasycznej: możliwość rozumowania przez zaprzeczenie. Sens  prawa Peirce'a widać najlepiej gdy  jest fałszem, otrzymujemy wtedy  prawo 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 . Intuicyjne uzasadnienie drugiej formuły jest zaś w istocie związane  z prawem (#5). 

Własnością, która często uchodzi naszej uwagi, jest łączność równoważności (#13). W zwiazku z tym, wyrażenie Parser nie mógł rozpoznać (nieznana funkcja „\oto”): {\displaystyle \varphi \oto \psi \oto \vartheta} można z czystym sumieniem pisać bez nawiasów. Zwróćmy jednak uwagę na to, że oznacza ono zupełnie co innego niż stwierdzenie że , 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 uważ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ść implikacji itp.

===Postać normalna formuł===


\begin{definicja}\rm Każdą zmienną zdaniową i negację zmiennej zdaniowej nazwijmy literałem\/. Mówimy, że formuła zdaniowa jest w {\it koniunkcyjnej postaci normalnej}, gdy jest koniunkcją alternatyw literałów, tj.

\hfil\hfil\hfil </math>\varphi = (p^1_1\vee\cdots\vee p^{k_1}_1)\wedge\cdots\wedge (p^1_r\vee\cdots\vee p^{k_r}_r)</math>,\hfil (*)
       gdzie , , dla , a wszystkie  są literałami.  Przy tym pustą koniunkcję () utożsamiamy w myśl       Przykładu #taut-rz(#14) ze stałą , a stała  totyle co koniunkcja z jednym pustym składnikiem.\end{definicja}
\begin{fakt}  Dla każdej formuły zdaniowej istnieje równoważna jej formuław koniunkcyjnej postaci normalnej.\end{fakt}\begin{dowod}Dowód jest przez indukcję \zwn 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  jest w postaci (*), to można przekształcić w koniunkcyjną postać normalną stosując prawa De Morgana i prawa dystrybutywności:
\hfil </math>\psi\vee(\vartheta\wedge\zeta)\oto (\psi\vee\vartheta)\wedge(\psi\vee\zeta)</math>\hfil </math>\psi\vee(\vartheta\vee\zeta)\oto (\psi\vee\vartheta)\vee(\psi\vee\zeta)</math>.

Podobnie postępujemy z alternatywą dwóch formuł w postaci normalnej.\footnote{Ta procedura jest niestety wykładnicza (Ćwiczenie [[#wziawszy}).]]Przypadek koniunkcji jest oczywisty, a implikację eliminujemy z pomocą prawa #taut-rz(#12a). Szczegóły pozostawiamy Czytelnikowi.\end{dowod}

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

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


    1. em ;
    2. em ;
    3. em ;
    4. em ;
    5. em ;
    6. em ;
    7. em ;
    8. em ;
    9. m </math>(p\vee q\vee r)\wedge(q\vee(\neg p\wedge s))\wedge (\neg s\vee q\vee r) \to q</math>.



\item Czy następujące zbiory formuł są spełnialne?

  1. em ;
  2. em ;
  3. em ;
  4. em .


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

  1. em ;
  2. em ;
  3. em ;
  4. em ;
  5. em ;
  6. em .


   \item Dla dowolnej formuły  niech  oznacza    dualizację formuły , tzn. formułę powstającą z     przez zastąpienie każdego wystąpienia  symbolem  oraz    każdego wystąpienia  symbolem . \begin{renumerate}    \item Dowieść,że   jest tautologią wtw, gdy jest tautologią.  \item Dowieść, że Parser nie mógł rozpoznać (nieznana funkcja „\lr”): {\displaystyle \varphi\lr\psi}
 jest tautologią wtw, gdy   Parser nie mógł rozpoznać (nieznana funkcja „\lr”): {\displaystyle \hat{\varphi}\lr\hat{\psi}}
 jest tautologią.\end{renumerate}
 \item Znależć formułę zdaniową , która jest spełniona dokładnie  przy wartościowaniach  spełniających warunki:
  1. item Dokładnie dwie spośród wartości , i są równe 1.
  2. em .


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 , 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\varphi\varrho = f(\varrho(p_1),\ldots, \varrho(p_k))}
.     (Inaczej mówiąc, formuła  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:\zmz\to\pot X}
 nazwijmy wartościowaniem\/     w zbiorze Parser nie mógł rozpoznać (nieznana funkcja „\pot”): {\displaystyle \pot X}
. Każdej formule zdaniowej  przypiszemy teraz     pewien podzbiór Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz\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 „\wfz”): {\displaystyle \wfz{p}{\warpi}=\warpi(p)} , gdy jest symbolem zdaniowym;
  • em Parser nie mógł rozpoznać (nieznana funkcja „\wfz”): {\displaystyle \wfz{\neg\varphi}\warpi= X-\wfz{\varphi}\warpi} ;
  • m </math>\wfz{\varphi\vee\psi}{\warpi}=\wfz{\varphi}{\warpi}\cup \wfz{\psi}{\warpi}</math>;
  • m </math>\wfz{\varphi\wedge\psi}{\warpi}=\wfz{\varphi}{\warpi}\cap \wfz{\psi}{\warpi}</math>;
  • m </math>\wfz{\varphi\to\psi}{\warpi}= (X-\wfz{\varphi}\warpi) \cup\wfz\psi\warpi</math>.
 Udowodnić, że formuła  jest tautologią rachunku zdań \wtw, gdy      jest prawdziwa\/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  będzie tautologią   rachunku zdań. Znaleźć taką formułę , że:
  • item Zarówno jak i są tautologiami rachunku zdań.
  • em W formule  występują tylko te zmienne zdaniowe, które występują zarówno w  jak i w .
 \item Niech  będzie pewną formułą, w której    występuje zmienna zdaniowa  i niech  będzie zmienną zdaniową nie    występującą w . Przez  oznaczmy formułę powstałą       z  przez zamianę wszystkich  na . Udowodnić, że jeśli
 \hfil \hfil
     to istnieje formuła , nie zawierająca zmiennych  ani ,taka że 
 \hfil .\hfil


\end{small}