Rachunek zdań

Wprowadzenie



Logika zdaniowa jest językiem, który pozwala opisywać zależności pomiędzy zdaniami. Przykładem może być zdanie:


Jeśli \( \mathrm {n} \) jest liczbą pierwszą to \( \mathrm {n} \) jest liczbą nieparzystą lub \( \mathrm {n} \) jest równe 2. W powyższym zdaniu spójniki jeśli [..] to, lub mówią o związkach które zachodzą pomiędzy zdaniami:
  1. \( \mathrm {n} \) jest liczbą pierwszą,
  2. \( \mathrm {n} \) jest liczbą nieparzystą,
  3. \( \mathrm {n} \) jest równe 2.

Oznaczmy powyższe zdania przez \( p,q,r \) (w takiej właśnie kolejności). Używając symboli, które zwyczajowo odpowiadają potocznemu rozumieniu spójników jeśli [..] to, lub oraz powyższych oznaczeń, otrzymamy formułę

\( p \Rightarrow (q \vee r). \)

Jeśli powyższą formułę uznamy za prawdziwą, to może nam ona posłużyć do otrzymania nowych wniosków. Na przykład, jeśli o jakiejś liczbie \( \mathrm {n} \) będziemy wiedzieć, że jest liczbą pierwszą oraz że nie jest nieparzysta, to klasyczny rachunek zdań pozwoli nam formalnie wywnioskować fakt, że liczba \(\mathrm {n} \) jest równa 2. Podsumowując, jeśli uznamy za prawdziwe następujące zdania:

  1. \( p \Rightarrow (q \vee r) \),
  2. \( p \),
  3. \( \neg q \) (przez \( \neg \) oznaczamy negację)

to zgodnie z klasycznym rachunkiem zdań powinniśmy uznać za prawdziwe zdanie \( \mathrm {r} \), czyli \( \mathrm {n} \) jest równe 2. Powyższy schemat wnioskowania można również opisać formułą


\( ((p \Rightarrow (q \vee r)) \wedge p \wedge (\neg q))\Rightarrow q. \)

W powyższej formule symbol \( \wedge \) odpowiada spójnikowi \( \mathrm {i} \) (oraz).

Dzięki rachunkowi zdań możemy precyzyjnie opisywać schematy wnioskowania i zdania złożone oraz oceniać ich prawdziwość.

Język logiki zdaniowej

Język logiki zdaniowej



Zaczniemy od definicji języka logiki zdaniowej. Składa się on z formuł zdefiniowanych następująco:
Definicja 2.1 [Formuła logiki zdaniowej]

  1. zmienna zdaniowa jest formułą (zmienne zdaniowe oznaczamy zwykle literami alfabetu rzymskiego np. \( p,q,r \)),
  2. jeśli \( {\phi} \) oraz \( {\psi} \) są formułami to \( (\phi \Rightarrow \psi) \) jest formułą (spójnik \( \Rightarrow \) nazywamy implikacją),
  3. jeśli \( {\phi} \) jest formułą to \( \neg \phi \) jest formułą (spójnik \( \neg \) nazywamy negacją),
  4. nic innego nie jest formułą.

Powyższa definicja mówi, że formułami nazywamy te napisy, które dają się skonstruować ze zmiennych zdaniowych przy pomocy spójników \( \Rightarrow \) oraz \( \neg \).
Uwaga 2.2.

Zgodnie z powyższą definicją nie jest formułą napis \( p\Rightarrow q \), gdyż brakuje w nim nawiasów. Pomimo, iż poprawnie powinniśmy napisać \( (p\Rightarrow q) \) możemy przyjąć że nie będzie konieczne pisanie nawiasów, jeśli nawiasy można jednoznacznie uzupełnić. Często przyjmuje się również prawostronne nawiasowanie dla implikacji, czyli formuła \( p \Rightarrow q \Rightarrow r \) jest domyślnie nawiasowana w następujący sposób \( (p \Rightarrow (q \Rightarrow r)) \).

Przykład 2.3 Poniższe napisy nie są formułami

  • \( p \Rightarrow \Rightarrow q \),
  • \( \neg \neg \neg \),
  • ten napis na pewno nie jest formułą,
  • \( (p \Rightarrow \neg q)) \).

Poniższe napisy są formułami

  • \( (p \Rightarrow (r \Rightarrow q)) \),
  • \( \neg \neg \neg q \),
  • \( (p \Rightarrow \neg q) \).

Ćwiczenie 2.1

Rozmiarem formuły nazwiemy ilość występujących w niej spójników. Na przykład formuła \( \neg \neg q \) ma rozmiar 2, a formuła \( (p\Rightarrow q) \) ma rozmiar 1. Przypuśćmy, że jedyną zmienną zdaniową jaką wolno nam użyć jest \( \mathrm {p} \). Ile można skonstruować rożnych formuł o rozmiarze 3?

Uwaga 2.4.

Język logiki zdaniowej można równoważnie zdefiniować nie używając nawiasów za pomocą tzw. Odwrotnej Notacji Polskiej.

Aksjomatyka Klasycznego Rachunku Zdań

Aksjomatyka Klasycznego Rachunku Zdań



Podobnie jak nie wszystkie zdania języka naturalnego mają sens, nie wszystkie formuły opisują prawdziwe schematy wnioskowania lub zdania, które bylibyśmy skłonni uznać za prawdziwe. W tym rozdziale skupimy się na tym, które spośród wszystkich formuł zdaniowych wyróżnić jako prawdziwe.

Aksjomaty

Wielu matematyków zgadza się dzisiaj co do tego, że zdania pasujące do poniższych schematów powinny być uznane za prawdziwe:

Definicja 3.1 Aksjomaty klasycznego rachunku zdań

  1. \( (\phi \Rightarrow (\psi \Rightarrow \phi)) \) (formuła ta jest nazywana aksjomatem K),
  2. \( (\phi \Rightarrow (\nu \Rightarrow \psi)) \Rightarrow ((\phi \Rightarrow \nu) \Rightarrow (\phi \Rightarrow \psi) ) \) (formuła ta jest nazywana aksjomatem S),
  3. \( (\neg \phi \Rightarrow \psi) \Rightarrow ((\neg \phi \Rightarrow \neg \psi) \Rightarrow \phi) \) (tzw. schemat dowodu niewprost)

Zdania pasujące do powyższych schematów to wszystkie zdania, które można otrzymać, podstawiając w miejsce \( \phi, \nu, \psi \) dowolne formuły.

Reguła dowodzenia

Przyglądnijmy się teraz jak posługujemy się implikacją we wnioskowaniu. W przykładzie z początku wykładu implikacja odpowiadała konstrukcji językowej:
jeśli \( {\phi} \) to \( {\psi} \).
W takim przypadku, jeśli akceptujemy powyższą implikacjię jako zdanie prawdziwe oraz jeśli zdanie \( {\phi} \) jako prawdziwe, to powinniśmy także zaakceptować \( {\psi} \). Przedstawiony sposób wnioskowania nosi nazwę reguły Modus Ponens (nazywana też regułą odrywania, często będziemy używać skrótu MP) i jest skrótowo notowany w poniższy sposób
\( \frac{\phi \Rightarrow \psi, \phi} {\psi}. \)
Reguła modus ponens posłuży nam do uzupełniania zbioru aksjomatów o ich konsekwencje logiczne, które również uznamy za prawdziwe. Aby precyzyjnie zdefiniować zbiór wszystkich konsekwencji logicznych aksjomatów, definiujemy poniżej pojęcie dowodu.

Definicja 3.2

Ciąg formuł \( \phi_0, \dots ,\phi_n \) jest dowodem formuły \( {\psi} \) wtedy i tylko wtedy, gdy:

  1. \( \phi_n \) jest formułą \( {\psi} \),
  2. dla każdego \( i\leq n \) formuła \( \phi_i \) jest aksjomatem lub istnieją \( j,k < i \) takie, że formuła \( \phi_i \) jest wynikiem zastosowania reguły modus ponens do formuł \( \phi_j, \phi_k \).

W drugim punkcie powyższej definicji, jeśli formuła \( \phi_i \) nie jest aksjomatem (a więc powstaje przez zastosowanie MP), to formuły \( \phi_j,\phi_k \) muszą pasować do przesłanek reguły MP, a więc \( \phi_j \) musi być postaci \( \phi_k \Rightarrow \phi_i \) lub \( \phi_k \) postaci \( \phi_j \Rightarrow \phi_i \).
Definicja 3.3
Formułę nazywamy twierdzeniem klasycznego rachunku zdań jeśli istnieje jej dowód z aksjomatów klasycznego rachunku zdań 3.1

Przykład

Zastanówmy się na formułą postaci \( \phi \Rightarrow \phi \). Intuicja podpowiada, że taką formułę powinniśmy uznać za prawdziwą. Nie pasuje ona jednak do żadnego ze schematów aksjomatów 3.1. Formuła ta jest jednak twierdzeniem klasycznego rachunku zdań. Poniżej przedstawiamy jej dowód. Aby łatwiej dopasować formuły do schematów aksjomatów, użyliśmy nawiasów kwadratowych dla nawiasów, które pochodzą ze schematów.

  1. \( [\phi \Rightarrow [(q \Rightarrow \phi) \Rightarrow \phi)]\Rightarrow [[\phi \Rightarrow (q \Rightarrow \phi)] \Rightarrow [\phi \Rightarrow\phi]] \) formuła ta jest aksjomatem zgodnym ze schematem S,
  2. \( \phi \Rightarrow [(q \Rightarrow \phi) \Rightarrow \phi] \) aksjomat zgodny ze schematem K,
  3. \( (\phi \Rightarrow (q \Rightarrow \phi)) \Rightarrow (\phi \Rightarrow \phi) \) z modus ponens z formuł 1 i 2,
  4. \( \phi \Rightarrow [q \Rightarrow \phi] \) aksjomat zgodny ze schematem K,
  5. \( (\phi \Rightarrow \phi) \) z modus ponens z formuł 3 i 4.

Podsumowanie

Klasyczny rachunek zdań, czyli zbiór formuł które uznajemy za prawdziwe, zdefiniowaliśmy, wyróżniając pewne formuły jako aksjomaty 3.1 i dorzucając do nich wszystkie formuły, które dają się z nich wywnioskować przy pomocy reguły Modus Ponens. Warto zwrócić uwagę, że pomimo tego, iż w doborze aksjomatów i reguł wnioskowania kierowaliśmy się intuicyjnym pojęciem implikacji i konsekwencji, klasyczny rachunek zdań jest teorią syntaktyczną, zbiorem pewnych napisów o których znaczeniu nie musimy nic mówić.

Uwaga 3.4

Warto przyglądnąć się przyjętym aksjomatom i zastanowić się jakim zdaniom odpowiadają i czy rzeczywiście bylibyśmy skłonni uznać je za prawdziwe. Pomocne może być interpretowanie formuł postaci \( \phi \Rightarrow (\nu \Rightarrow \psi) \) jako „jeśli prawdziwe jest \( {\phi} \) i prawdziwe jest \( \nu \) to prawdziwe jest \( {\psi} \)”. W kolejnych rozdziałach przekonamy się, że taka interpretacja jest uzasadniona.

Matryca boolowska

Matryca boolowska


W poprzednim rozdziale zdefiniowaliśmy klasyczny rachunek zdań jako teorię aksjomatyczną. Jeśli pozwolimy sobie na używanie skończonych zbiorów i funkcji, możemy równoważnie zdefiniować klasyczny rachunek zdań za pomocą tzw. matrycy boolowskiej.
Definicja 4.1
Dwuelementową matrycą boolowską nazywamy zbiór dwuelementowy \( \mathbb{B}=\{0,1\} \) w którym 1 jest wyróżnioną wartością prawdy, wraz z dwoma funkcjami odpowiadającymi za interpretacje spójników \( \Rightarrow \) oraz \( \neg \) zdefiniowanymi następująco


\( \Rightarrow \) 0 1
0 1 1
1 0 1
    
\( \mathrm {p} \) \( \neg p \)
0 1
1 0

\( \quad \mbox{(4.1)} \)

Definicja 4.2

Wartościowaniem nazywamy funkcję, która przypisuje zmiennym zdaniowym elementy zbioru \( \mathbb{B} \). Wartościowanie zmiennych można rozszerzyć na wartościowanie formuł interpretując spójniki \( \Rightarrow \) oraz \( \neg \) jako funkcje zgodnie z tabelami 4.1.

Przykład 4.3

Niech \( {v} \) będzie wartościowaniem zmiennych takim, że \( v(p)=0,v(q)=1, v(r)=0 \). Wtedy

  • formuła \( q \Rightarrow p \) jest wartościowana na 0 (będziemy to zapisywać jako \( v(q \Rightarrow p)=0 \)),
  • formuła \( r \Rightarrow (q \Rightarrow p) \) jest wartościowana na 1 (czyli \( v(r \Rightarrow (q \Rightarrow p))=1 \)),
  • formuła \( \neg p \Rightarrow r \) jest wartościowana na 0 (czyli \( v(\neg p \Rightarrow r)=0 \)).

Ćwiczenie 4.1

Przy wartościowaniu \( v \) z przykładu 4.3 jakie wartości przyjmują następujące formuły

  1. \( p \Rightarrow (q \Rightarrow r) \),
  2. \( p \Rightarrow (p \Rightarrow q) \),
  3. \( \neg \neg q \Rightarrow p \),
  4. \( (\neg q\Rightarrow q) \Rightarrow (q \Rightarrow \neg q) \).

Ćwiczenie 4.2

     1. Podaj przykład wartościowania zmiennych tak aby poniższe formuły były wartościowane na 0

(a) \( p \Rightarrow (q \Rightarrow r) \)
(b) \( (\neg p \Rightarrow q) \)
(c) \( (p\Rightarrow q) \Rightarrow q \)

     2. Podaj przykład wartościowania zmiennych tak aby poniższe formuły były wartościowane na 1

(a) \( \neg (p \Rightarrow q) \)
(b) \( \neg (\neg p \Rightarrow \neg q) \)
(c) \( (\neg q\Rightarrow q) \Rightarrow (q \Rightarrow \neg q) \)

Twierdzenie o pełności

Zauważmy, że istnieją formuły, które dla każdego wartościowania zmiennych zdaniowych, zawsze przyjmują wartość 1 (np. \( p \Rightarrow p \)). Takie formuły będziemy nazywać tautologiami.

Ćwiczenie 4.3
Sprawdź czy poniższe formuły są tautologiami

  1. \( (\phi \Rightarrow (\psi \Rightarrow \phi)) \),
  2. \( (\phi \Rightarrow (\nu \Rightarrow \psi) \Rightarrow ((\phi \Rightarrow \nu \Rightarrow (\phi \Rightarrow \nu) ) \),
  3. \( (\neg \phi \Rightarrow \psi) \Rightarrow (\neg \phi \Rightarrow \neg \psi) \Rightarrow \phi \),
  4. \( ((\phi \Rightarrow q) \Rightarrow p) \Rightarrow p \).



Nie przez przypadek pierwsze trzy formuły z poprzedniego zadania odpowiadają aksjomatom klasycznego rachunku zdań 3.1. Okazuje się że istnieje ścisły związek pomiędzy tautologiami a twierdzeniami klasycznego rachunku zdań. Mówi o tym ważny wynik Emila Posta

Twierdzenie 4.4

Post 1921 Formuła jest twierdzeniem klasycznego rachunku zdań wtedy i tylko wtedy kiedy jest tautologią.

Dowód powyższego twierdzenia jest przedstawiony na wykładzie Logika dla informatyków Dzięki powyższemu twierdzeniu możemy w miarę łatwo stwierdzać, czy dana formuła jest twierdzeniem klasycznego rachunku zdań, sprawdzając, czy jest tautologią, co wymaga rozważenia jedynie skończonej (chociaż często niemałej) liczby wartościowań. Co więcej, mamy też możliwość dowodzenia, że jakaś formuła nie jest twierdzeniem klasycznego rachunku zdań. Uzasadnienie, że nie da się jakiejś formuły udowonić z aksjomatów poprzez stosowanie reguły MP wydaje się zadaniem trudnym, znacznie łatwiej jest poszukać wartościowania, które wartościuje formułę na 0 (znowu wystarczy sprawdzić jedynie skończenie wiele wartościowań).

Ćwiczenie 4.4
Udowodnij że każde twierdzenie klasycznego rachunku zdań jest tautologią.



Inne spójniki

Do tej pory jedynymi rozważanymi spójnikami była implikacja i negacja. W analogiczny sposób do 4.1 możemy wprowadzać kolejne spójniki. Często używane spójniki to koniunkcja (spójnik i) oznaczana przez \( \wedge \) oraz alternatywa (spójnik lub) oznaczana przez \( \vee \), które będziemy interpretować w następujący sposób:


\( \wedge \) 0 1
 0   0   0 
 1   0   1 
    
\( \vee \) 0 1
 0   0   1 
 1   1   1 

\( \quad \mbox{(4.2)} \)



Zgodnie z intuicją koniunkcja \( \phi \wedge\psi \) jest wartościowana na 1 wtedy i tylko wtedy, gdy zarówno \( {\phi} \) jak i \( {\psi} \) są wartościowane na 1. Alternatywa \( \phi \vee \psi \) jest wartościowana na 1, jeśli przynajmniej jedna z formuł \( \phi, \psi \) jest wartościowana na 1.

Definicja 4.5

Formuły \( {\phi} \) oraz \( {\psi} \) są równoważne (oznaczamy ten fakt przez \( \phi \equiv \psi \) wtedy i tylko wtedy, gdy dla każdego wartościowania formuła \( {\phi} \) przyjmuje tą samą wartość co formuła \( {\psi} \).

Ćwiczenie 4.5

Udowodnij, że następujące formuły są równoważne

  1. \( \phi \vee \psi \equiv \neg \phi \Rightarrow \psi \)
  2. \( \phi \wedge \psi \equiv \neg (\phi \Rightarrow \neg \psi) \)

Z powyższego zadania wynika, że każdą formułę w której występują spójniki \( \wedge \) lub \( \vee \) można zastąpić równoważną formułą, w której jedynymi spójnikami są \( \Rightarrow \) oraz \( \neg \). Tak naprawdę więc nowe spójniki nie wprowadzają nic nowego poza użytecznymi skrótami w zapisywaniu formuł. Aby się oswoić z własnościami spójników, prześledzimy szereg ich praw.

Ćwiczenie 4.6

Udowodnij następujące równoważności

  1. \( \neg \neg p \equiv p \),
  2. \( p\Rightarrow q \equiv \neg p \vee q \),
  3. \( p \Rightarrow (q \Rightarrow r) \equiv (p \wedge q) \Rightarrow r \),
  4. \( \neg( p \wedge q) \equiv \neg p \vee \neg q \),
  5. \( \neg( p \vee q) \equiv \neg p \wedge \neg q \),
  6. \( p \wedge (q \vee r) \equiv (p \wedge q) \vee (p\wedge r) \),
  7. \( p \vee (q \wedge r) \equiv (p \vee q) \wedge (p\vee r) \),
  8. \( (p \Rightarrow q) \Rightarrow (\neg p \Rightarrow \neg q) \).

Ćwiczenie 4.7

Sprawdź które z następujących formuł są tautologiami

  1. \( ( (p \vee r)\wedge( q \vee \neg r) )\Rightarrow (p \vee q) \),
  2. \( (p \vee q) \Rightarrow ( (p \vee r)\wedge( q \vee \neg r)) \),
  3. \( ( (p \wedge r)\vee( q \wedge \neg r) )\Rightarrow(p \wedge q) \),
  4. \( (p \wedge q) \Rightarrow ( (p \wedge r)\vee( q \wedge \neg r)) \).

Binarne spójniki logiczne interpretowaliśmy jako funkcje z \( \mathbb{B}\times \mathbb{B} arrow \mathbb{B} \). Nie trudno przekonać się, że takich funkcji jest dokładnie 16. Dla każdej takiej funkcji możemy dodać spójnik, który będzie interpretowany dokładnie jako ta funkcja. W poniższej tabeli zamieszczamy wszystkie takie funkcje wraz ze zwyczajowymi oznaczeniami odpowiadających im spójników.

Definicja 4.6

W poniższej tabeli przedstawiamy wszystkie spójniki binarne.


Numer
funkcji
\( p=0 \)
\( q=0 \)
\( p=0 \)
\( {q=1} \)
\( p=1 \)
\( q=0 \)
\( p=1 \)
\( {q=1} \)
   
0 0 0 0 0   \( F \)
1 0 0 0 1   \( \wedge \)
2 0 0 1 0   \( \neg (p \Rightarrow q) \)
3 0 0 1 1   \( \mathrm{p} \)
4 0 1 0 0   \( \neg (q \Rightarrow p) \)
5 0 1 0 1   \( \mathrm{q} \)
6 0 1 1 0   \( XOR \)
7 0 1 1 1   \( \vee \)
8 1 0 0 0   \( NOR \)
9 1 0 0 1   \( \Leftrightarrow \)
10 1 0 1 0   \( \neg q \)
11 1 0 1 1   \( q \Rightarrow p \)
12 1 1 0 0   \( \neg p \)
13 1 1 0 1   \( p \Rightarrow q \)
14 1 1 1 0   \( NAND \)
15 1 1 1 1   \( T \)

Spójnik binarny \( \circ \) będziemy nazywać przemiennym, jeśli zachodzi następująca równoważność

\( p \circ q \equiv q \circ p \quad \mbox{(4.3)} \)

Ćwiczenie 4.8

Sprawdź następujące równoważności

  1. \( x NAND y \equiv \neg (x \wedge y) \)
  2. \( x NOR y \equiv \neg (x \vee y) \)
  3. \( x XOR y \equiv \neg (x \Leftrightarrow y) \)

Ćwiczenie 4.9
Ile spójników binarnych jest przemiennych? Wypisz je wszystkie.


Ćwiczenie 4.10

Udowodnij, że następujące spójniki są łączne

  1. \( \vee \)
  2. \( \wedge \)
  3. \( \Leftrightarrow \)
  4. \( XOR \)

Możemy również rozważać spójniki 3 i więcej argumentowe. Spójnik \( k \)-argumetowy powinien odpowiadać funkcji \( \mathbb{B}^k arrow \mathbb{B} \).

Przykład 4.7

W poniższej tabeli przedstawiamy przykład spójnika trójargumentowego


\( \mathrm {p} \) \( \mathrm {q} \) \( \mathrm {r} \) \( \circ (p, q, r) \)
 0   0   0   0 
0 0 1 1
0 1 0 1
0 1 1 0
1 0 0 1
1 0 1 0
1 1 0 0
1 1 1 1

Uwaga 4.1
Różnych spójników \( k \)-argumentowych jest dokładnie \( 2^{2^k} \).

Systemy funkcjonalnie pełne

Systemy funkcjonalnie pełne


Każda formuła odpowiada pewnej funkcji przekształcającej wartościowania zmiennych w niej występujących w element zbioru \( \mathbb{B} \). Na przykład formuła \( p \Rightarrow (q\Rightarrow r) \) wyznacza funkcję \( f_{p \Rightarrow (q\Rightarrow r)} \) opisaną poniższą tabelą

\( \mathrm {p} \) \( \mathrm {q} \) \( \mathrm {r} \) \( f_{p arrow _(q arrow r)} \)
 0   0   0  1
0 0 1 1
0 1 0 1
0 1 1 1
1 0 0 1
1 0 1 1
1 1 0 0
1 1 1 1

Mówimy, wtedy że formuła \( {\phi} \) definuje funkcję \( f_{\phi} \).

Definicja 5.1

Skończony zbiór funkcji boolowskich \( {\Gamma} \) nazywamy funkcjonalnie pełnym, jeśli każdą funkcję boolowską da się zdefiniować przy pomocy formuły zbudowanej wyłącznie ze spójników odpowiadających funkcjom ze zbioru \( {\Gamma} \).

Twierdzenie 5.2

Zbiór \( \{\wedge, \vee, \neg\} \) jest funkcjonalnie pełny.

Dowód

Dla dowolnej funkcji boolowskiej skonstruujemy formułę która ją definiuje. Niech \( \displaystyle k\in \) oraz \( \displaystyle f:\mathbb{B}^k arrow \; \mathbb{B} \). W definiowanej formule będziemy używać zmiennych \( \displaystyle p_1, \dots,p_k \), a każdy element \( \displaystyle (w_1,\ldots,w_k) \in \mathbb{B}^k \) będzie odpowiadał wartościowaniu \( \displaystyle v_w \) takiemu, że \( \displaystyle v(p_i)=w_i \).

Niech \( \displaystyle F \) będzie zbiorem tych argumentów, dla których funkcja \( \displaystyle f \) przyjmuje wartość 1. Dla dowolnego elementu \( \displaystyle x_i \in F \) skonstruujemy formułę \( \displaystyle \phi_i \) w taki sposób, aby była spełniona tylko dla wartościowania odpowiadającego elementowi \( \displaystyle x_i \). Niech \( \displaystyle x_i= (w_1,\dots,w_k) \), wtedy formułę \( \displaystyle \phi_i \) definiujemy jako \( \displaystyle l^i_1 \wedge l^i_2 \wedge \dots \wedge l^i_k \) gdzie

\( \displaystyle l^i_j \begin{cases} p_j, & \mbox{gdy } w_j = 1 \displaystyle ; \\ \neg p_j, & \mbox{gdy } w_j = 0 \displaystyle .\end{cases} \)

Łatwo sprawdzić, że formuła \( \displaystyle \phi_i \) jest spełniona tylko dla wartościowania odpowiadającego elementowi \( \displaystyle x_i \).

Postępując w ten sposób dla każdego elementu zbioru \( \displaystyle F \) otrzymamy formuły \( \displaystyle \phi_1, \dots \phi_m \). Biorąc
\( \displaystyle \phi_1 \vee \dots \vee \phi_m \)

otrzymamy formułę która definiuje funkcję \( \displaystyle f \), oznaczmy ją przez \( \displaystyle \Phi \). Jeśli dla wartościowania \( \displaystyle v \) formuła \( \displaystyle \Phi \) jest spełniona to znaczy, że któraś z formuł \( \displaystyle \phi_i \) jest spełniona. Oznacza to że wartościowanie \( \displaystyle v \) odpowiada pewnemu elementowi \( \displaystyle x_i \) zbioru \( \displaystyle F \), wobec tego funkcja \( \displaystyle f(x_i)=1 \) co jest zgodne z tym, że spełniona jest \( \displaystyle \Phi \). W drugą stronę załóżmy że dla pewnego elementu \( \displaystyle a\in \mathbb{B}^k \) mamy \( \displaystyle f(a)=1 \). Wobec tego \( \displaystyle a\in F \). Wtedy \( \displaystyle a \) odpowiada pewnej formule \( \displaystyle \phi_i \), która jest spełniona dla wartościowania odpowiadającego \( \displaystyle a \). Wobec tego również cała formuła \( \displaystyle \Phi \) jest spełniona dla tego wartościowania (bo jeden z elementów alternatywy jest spełniony). Wynika stąd, że formuła \( \displaystyle \Phi \) definiuje funkcję \( \displaystyle f \). Na koniec zauważmy jeszcze że jedynymi spójnikami występującymi w formule \( \displaystyle \Phi \) są \( \displaystyle \neg, \vee, \wedge \).

Twierdzenie 5.3

Zbiory \( \{\wedge, \neg\} \), \( \{\vee, \neg\} \) są funkcjonalnie pełne.

Dowód

Aby pokazać, że \( \displaystyle \{\wedge, \neg\} \) jest funkcjonalnie pełny wystarczy pokazać, że przy pomocy spójników \( \displaystyle \{\wedge, \neg\} \) da się zdefiniować \( \displaystyle \vee \). Wtedy funkcjonalną pełność otrzymamy z twierdzenia 5.2. W ćwiczeniu 4.2 pokazaliśmy, że

\( \displaystyle \neg (x \vee y) = \neg x \wedge \neg y. \)
Wobec tego
\( \displaystyle x \vee y =\neg(\neg x \wedge \neg y) \)

a więc zdefiniowaliśmy \( \displaystyle \vee \) przy pomocy \( \displaystyle \neg, \wedge \).

Analogicznie aby pokazać funkcjonalną pełność zbioru \( \displaystyle \{\vee, \neg\} \) zdefiniujemy \( \displaystyle \wedge \) przy pomocy spójników \( \displaystyle \vee, \neg \). Z <ćwiczenia 4.2 mamy
\( \displaystyle \neg(x \wedge y)= \neg x \vee \neg y \)
a więc
\( \displaystyle x \wedge y=\neg( \neg x \vee \neg y). \)

Ćwiczenie 5.1

Udowodnij, że zbiór \( \displaystyle \{\Rightarrow, \neg\} \) jest funkcjonalnie pełny.

Twierdzenie 5.4

Zbiór \( \{NOR\} \) jest funkcjonalnie pełny.

Dowód
Pokażemy, że przy pomocy \( \displaystyle NOR \) można zdefiniować \( \displaystyle \neg \) oraz \( \displaystyle \vee \). Wtedy z twierdzenia twierdzenia 5.3 otrzymamy tezę twierdzenia.

Łatwo sprawdzić, że
\( \displaystyle p NOR p \equiv \neg. \)
Wiemy, że
\( \displaystyle p NOR q \equiv \neg (p\vee q). \)
Wobec tego mamy również
\( \displaystyle \neg(p NOR q) \equiv p\vee q. \)
Możemy teraz wyrazić negację za pomocą \( \displaystyle NOR \), otrzymamy wtedy
\( \displaystyle (p NOR q) NOR (p NOR q) \equiv p\vee q. \)

Ćwiczenie 5.2

Udowodnij, że zbiór \( \displaystyle \{NAND\} \) jest funkcjonalnie pełny.

Ćwiczenie 5.3

Zdefiniuj alternatywę przy pomocy samej implikacji.

Ćwiczenie 5.4

Jakie funkcje binarne da się zdefiniować przy pomocy samej implikacji?

Ćwiczenie 5.5

Udowodnij, że poniższe zbiory nie są funkcjonalnie pełne

  1. \( \{\wedge\} \)
  2. \( \{\vee\} \)
  3. \( \{\Leftrightarrow\} \)
  4. \( \{XOR\} \)

Ćwiczenie 5.6

Czy funkcje binarne, zdefiniowane za pomocą formuł zawierającyh jedynie przemienne spójniki, muszą być przemienne?


Ćwiczenie 5.7

(z wykładu prof. P.M.Idziaka) Niech \( F_n \) oznacza ilość boolowskich funkcji \( \mathrm {n} \) argumetnowych, a \( P_n \) ilość boolowskich funkcji \( \mathrm {n} \) argumentowych, takich że przy pomocy każdej z nich da się zdefiniować dowolną funkcję boolowską (czyli jeśli \( \circ \) jest takim spójnikiem to zbiór \( \{\circ\} \) jest funkcjonalnie pełny). Udowdnij istenienie poniższej granicy i wyznacz jej wartość
\( \lim_{n arrow \infty} \frac{P_n}{F_n} \)

Postacie normalne

Postacie normalne



Definicja 6.1

Literałem nazywamy formułę, która jest zmienną zdaniową lub negacją zmiennej zdaniowej.

Zauważmy, że formuła konstruowana w dowodzie twierdzenia 5.2 jest w pewnej standartowej postaci - formuła jest alternatywą formuł, które są koniunkcjami literałów. Przypomnijmy, że dla \( p \Rightarrow q \) zbudujemy formułę

\( (p \wedge q) \vee (\neg p \wedge q) \vee (\neg p \wedge \neg q). \)

Definicja 6.2

Formuła jest w dyzjunktywnej postaci normalnej (DNF), jeśli jest alternatywą formuł które są koniunkcjami literałów. Czyli wtedy, gdy jest postaci

\( \phi_1\vee \dots \vee \phi_n \)

oraz każda z formuł \( \phi_i \) jest koniunkcją literałów, czyli jest postaci

\( l_l^i \wedge \dots \wedge l_k^i \)

dla pewnych literałów \( l_l^i, \dots,l_k^i \)

Twierdzenie 6.3

Dla każdej formuły istnieje równoważna formuła w DNF.

Dowód

Wynika bezpośrednio z konstrukcji w dowodzie twierdzenia 5.2.

Definicja 6.4

Formuła jest w koniunktywnej postaci normalnej (CNF), jeśli jest koniunkcją formuł które są alternatywami literałów.

Twierdzenie 6.5

Dla każdej formuły istnieje równoważna formuła w CNF.

Dowód

Niech \( \displaystyle \Phi \) będzie dowolną formułą. Z twierdzenia twierdzenia 6.3 wynika, że dla formuły \( \displaystyle \neg \Phi \) istnieje dyzjunktywna postać normalna. Niech \( \displaystyle \Psi \) będzie taką formułą. Wtedy mamy

\( \displaystyle \Phi \equiv \neg \Psi. \)

Stosując wielokrotnie prawa de'Morgana dla formuły \( \displaystyle \neg \Psi \) otrzymamy formułę w koniunktywnej postaci normalnej. Indukcyjny dowód tego faktu pomijamy.

Ćwiczenie 6.1

Jak sprawdzić, czy formuła w CNF jest tautologią?

Ćwiczenie 6.2

Dla poniższych formuł wypisz ich najkrótsze równoważne formuły w CNF

  1. \( p \Leftrightarrow q \),
  2. \( p \Rightarrow (q \Rightarrow p) \),
  3. \( (p \Rightarrow q) \Rightarrow p \),
  4. \( (p \vee a \vee b) \wedge (\neg q \vee \neg a) \wedge(r \vee \neg b \vee \neg c) \wedge(c \vee p)) \),
  5. \( (p \wedge q) \vee (r \wedge s) \).

Spełnialność

Spośród wszystkich formuł wyróżnimy też zbiór formuł spełnialnych.

Definicja 6.6

Formuła jest spełnialna, jeśli istenieje takie wartościowanie, które wartościuje tą formułę na 1.

Formuły spełnialne są w ścisłym związku z tautologiami.

Twierdzenie 6.7

Formuła \( {\phi} \) jest tautologią wtedy i tylko wtedy, kiedy formuła \( \neg \phi \) nie jest spełnialna.

Dowód

Przypuśćmy, że formuła \( {\phi} \) jest tautologią. Wtedy dla każdego wartościowania \( \mathrm{v} \) mamy \( v(\phi)=1 \). Stąd otrzymujemy, że dla każdego wartościowania \( \mathrm{v} \) mamy \( v(\neg \phi)=0 \), a więc nie istnieje wartościwanie, które spełnia \( \neg \phi \), czyli formuła ta nie jest spełnialna.

Przypuśćmy, że formuła \( \neg \phi \) nie jest spełnialna, czyli nie istnieje wartościowanie \( \mathrm{v} \) takie, że \( v(\neg \phi)=0 \). Wynika stąd, że dla każdego wartościowania mamy \( v(\phi)=1 \), a więc \( {\phi} \) jest tautologią.

Ćwiczenie 6.3

Sprawdź spełnialność następujących formuł

  1. \( (\neg p \vee q) \wedge (\neg q \vee \neg r) \wedge (\neg q \vee \neg p) \)
  2. \( (\neg p \vee q) \wedge (\neg q \vee \neg r) \wedge (\neg q \vee p) \)

Formuły z powyższego zadania, poza tym że są w koniunktywnej postaci normalnej, to jeszcze występujące w nich klauzule mają dokładnie dwa literały. Problem spełnialności takich formuł jest nazywany w literaturze problemem 2SAT. Dla takich formuł istnieją szybkie algorytmy pozwalające ocenić ich spełnialność. Dopuszczanie klauzul o długości 3, bardzo komplikuje problem. Do dziś nie wiadomo czy dla takich formuł istnieją szybkie algorytmy oceniające spełnialność. Więcej na ten temat można się dowiedzieć z wykładu Teoria złożoności.

Logika intuicjonistyczna

Logika intuicjonistyczna


Niektórzy logicy mają wątpliwości co do tego, czy powinniśmy przyjmować schemat dowodu niewprost jako aksjomat. Poddanie w wątpliwość tego aksjomatu doprowadziło do powstnia tzw. logiki intuicjonistycznej. Ważnym powodem zajmowania się logiką intuicjonistyczną są jej zadziwiające związki z teorią obliczeń (patrz izomorfizm Curryego-Howarda).

Implikacyjny fragment logiki intuicjonistycznej, który będziemy oznaczać przez \( I_\Rightarrow \) to zbiór tych formuł, które da się dowodnić przy pomocy reguły MP z aksjomatów S i K.

Definicja 7.1

Aksjomaty \( I_\Rightarrow \)

  1. \( (\phi \Rightarrow (\psi \Rightarrow \phi)) \) (formuła ta jest nazywana aksjomatem K),
  2. \( (\phi \Rightarrow (\nu \Rightarrow \psi) \Rightarrow ((\phi \Rightarrow \nu) \Rightarrow (\phi \Rightarrow \nu) ) \) (formuła ta jest nazywana aksjomatem S).

W pełnej wersji logiki intucjonistycznej pojawiają się również aksjomaty dla spójników \( \wedge, \vee \) oraz \( \neg \). Dla uproszczenia zajmiemy się jedynie formułami, w których jedynym spójnikiem jest implikacja. Dodatkowym argumentem uzasadniającym takie podejście jest fakt, że każde twierdzenie logiki intuicjonistycznej, w którym jedynymi spójnikami są \( \Rightarrow \), da się udowodnić przy pomocy aksjomatów 7.1. Zobaczymy, że analogiczne twierdzenie nie jest prawdą dla logiki klasycznej. Logika intuicjonistyczna jest bardziej skomplikowana od logiki klasycznej. W szczególności nie istnieje skończona matryca, za pomocą której moglibyśmy rozstrzygać czy dana formuła jest twierdzeniem logiki intuicjonistycznej.

Twierdzenie 7.2

Każde twierdzenie logiki intuicjonistycznej jest twierdzeniem klasycznego rachunku zdań.

Dowód

Każdy dowód twierdzenia logiki inuicjonistycznej jest równocześnie dowodem twierdzenia klasycznego rachunku zdań.

Implikacja w drugą stronę nie zachodzi. Istnieją formuły zbudowane jedynie przy pomocy \( \Rightarrow \), które nie należą do \( I_\Rightarrow \), pomimo że są twierdzeniami klasycznego rachunku zdań. Przykładem takiej formuły jest prawo Pierce'a:

\( ((p \Rightarrow q) \Rightarrow p ) \Rightarrow p. \)

W zadaniu 4.1 pokazaliśmy, że formuła ta jest w istocie tautologią więc w myśl twierdzenia Posta 4.4 również twierdeniem klasycznego rachunku zdań.
W poniższych zadaniach udowodnimy poniższe twierdzenie

Twierdzenie 7.3

Prawo Pierce'a nie jest twierdzeniem intuicjonizmu.

Zauważmy, że oznacza to również, że każdy dowód prawa Pierce'a w logice klasycznej korzysta z aksjomatu 3 3.1, a więc wymaga używania spójnika \( \neg \).
Aby udowodnić twierdzenie 7.3, zdefiniujemy jeszcze jedną logikę którą nazwiemy \( I_3 \). Podobnie do 4.1 zdefiniujemy matrycę tym razem 3-elementową.

Definicja 7.4

Matrycą \( \mathbb{M}_3 \) będziemy nazywać zbiór trójelementowy \( M_3=\{0,1,2\} \), w którym 2 jest wyróżnioną wartością prawdy, wraz z funkcją odpowiadają za interpretacje \( \Rightarrow \) zdefiniowaną następująco


\( \Rightarrow \) 0 1 2
 0   2   2   2 
 1   0   2   2 
 2   0   1   2 

W przypadku rozważanej matrycy \( \mathbb{M}_3 \) wartościowanie będzie funkcją przypisującą zmiennym zdaniowym elementy zbioru \( M_3 \). Podobnie jak dla logiki klasycznej wartościowanie zmiennych rozszzerzamy na wartościowanie formuł zgodnie z tabelą 7.4.

Przykład 7.5

Dla wartościowania \( v \) takiego, że \( v(p)=2, v(q)=1, v(r)=0 \) formuła

\( (p \Rightarrow q) \Rightarrow r \)

przyjmuje wartość 0.

Definicja 7.6

Tautologią logiki \( I_3 \) będziemy nazywać każdą formułę implikacyjną, która przy każdym wartościowaniu zmiennych w \( M_3 \) przyjmuje wartość 2.

Ćwiczenie 7.1

Udowodnij, że aksjomaty S i K są tautologiami \( I_3 \).

Ćwiczenie 7.2

Udowodnij, że jeśli formuła postaci \( \phi \Rightarrow \psi \) oraz formuła \( {\phi} \) są tautologiami \( I_3 \), to formuła \( {\psi} \) jest tautologią \( I_3 \).

Ćwiczenie 7.3

Udowodnij, że każde twierdzenie logiki \( I_\Rightarrow \) jest tautologią \( I_3 \).


Ćwiczenie 7.4

Sprawdź, czy prawo Pierce'a jest tautologią \( I_3 \).


Podsumujmy wyniki powyższych zadań. Wskazaliśmy logikę \( I_3 \) taką, że każda twierdzenie intuicjonizmu jest tautologią \( I_3 \). Skoro prawo Pierce'a nie jest tautologią \( I_3 \), to nie jest też twierdzeniem \( I_\Rightarrow \).

UWAGA! W dalszej części będziemy się posługiwać wyłącznie logiką klasyczną.