Logika dla informatyków/Pełność rachunku zdań: Różnice pomiędzy wersjami
m Poprawka w dowodzie 6.5 |
mNie podano opisu zmian |
||
Linia 157: | Linia 157: | ||
<math>\varphi\not\in\Gamma</math>, to | <math>\varphi\not\in\Gamma</math>, to | ||
<math>\neg\varphi\in\Gamma</math>, więc | <math>\neg\varphi\in\Gamma</math>, więc | ||
math>\{\neg(\var\varphi\rightarrow\psi), | <math>\{\neg(\var\varphi\rightarrow\psi), | ||
\neg\var\varphi\}\subseteq\Gamma</math>, co kończy dowód ([[#eq-zda-2|5]]). | \neg\var\varphi\}\subseteq\Gamma</math>, co kończy dowód ([[#eq-zda-2|5]]). | ||
Wersja z 22:02, 30 paź 2006
Pełność rachunku zdań
Zagadnienie pełności systemów formalnych jest jednym z centralnych problemów logiki. O ile poprawność systemu formalnego (zwana też adekwatnością) oznacza, że wszystkie twierdzenia systemu są prawdziwe względem przyjętej semantyki, to pełność jest własnością mówiącą o tym, że każda formuła prawdziwa daje się udowodnić w systemie. Jest wiele różnych dowodów twierdzenia o pełności dla rachunku zdań. My podamy elegancki dowód pochodzący od L. Kalmára. Dla udowodnienia nieco silniejszej wersji twierdzenia o pełności (Twierdzenie 6.7) wykorzystamy silne i bardzo pożyteczne Twierdzenie 6.5 zwane twierdzeniem o zwartości.
Lemat 6.1 (Kalmár)
Niech Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} będzie formułą zbudowaną przy użyciu oraz , o zmiennych zawartych w zbiorze i niech Parser nie mógł rozpoznać (błąd składni): {\displaystyle \varrho:\mbox{\small ZZ}\rightarrow\{0,1\} } będzie dowolnym wartościowaniem. Dla definiujemy formuły:
Niech Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi'} będzie formułą identyczną z Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} , jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \models\var\varphi[\varrho]} , w przeciwnym razie niech Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi'} oznacza formułę Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \neg\var\varphi} . Wówczas
Dowód
Dowód jest prowadzony przez indukcję ze względu na budowę formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} . Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest zmienną to Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi'=q_i'} . Zatem trywialnie zachodzi Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \{q_1',\ldots,q_n'\}\vdash\var\varphi'} .
Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest stałą , to Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi'=\neg\bot} i oczywiście dla dowolnego wyboru zachodzi
Załóżmy teraz, że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest postaci Parser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle \psi\arr\vartheta} i rozważmy następujące przypadki.
(A) .
Wówczas Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi'=\var\varphi} oraz . Z założenia indukcyjnego mamy . Zatem . Z Lematu 5.4(2) mamy Parser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle \{q_1',\ldots,q_n'\},\psi\vdash_H\bot\arr\vartheta} . Zatem, stosując (MP) dostajemy i z twierdzenia o dedukcji
Parser nie mógł rozpoznać (nieznana funkcja „\varaphi”): {\displaystyle \{q'_1,\ldots,q'_n\}\vdash_H\psi\rightarrow\varaphi.}
(B) .
Wówczas Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi'=\var\varphi} , oraz . Z założenia indukcyjnego mamy . Zatem i z twierdzenia o dedukcji dostajemy
Parser nie mógł rozpoznać (nieznana funkcja „\varaphi”): {\displaystyle \{q'_1,\ldots,q'_n\}\vdash_H\psi\rightarrow\varaphi.}
(C) oraz .
Wówczas Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi'=\neg\var\varphi.\ \psi'=\psi} oraz . Z założenia indukcyjnego mamy
oraz
Z Lematu 5.4(1) mamy
Stosując teraz dwukrotnie (MP) dostajemy
To kończy dowód lematu.

Lemat 6.2
Dla dowolnego zbioru formuł i dla dowolnych formuł Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} i , jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta,\var\varphi\vdash_H \psi} oraz Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta,\neg\var\varphi\vdash_H \psi} , to .
Dowód
Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta,\var\varphi\vdash_H \psi} to na mocy twierdzenia o dedukcji mamy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \vdash_H \var\varphi\arr\psi} . Podobnie dostajemy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \vdash_H\neg\var\varphi\arr\psi} . Stosując Lemat 5.4(3), oraz dwukrotnie regułę odrywania dostajemy .

Lemat Kalmára odgrywa kluczową rolę w dowodzie poniższego twierdzenia o pełności.
Twierdzenie 6.3 (o pełności dla )
Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest tautologią zbudowaną przyużyciu oraz , to Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \vdash_H\var\varphi} .
Dowód
Załóżmy, że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest tautologią. Niech będą wszystkimi zmiennymi występującymi w Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} . Dla dowolnej liczby nazwiemy -zbiorem każdy zbiór formuł , gdzie jest albo lub . Zauważmy, że -zbiór jest pusty.
Udowodnimy następującą własność: dla każdego spełniającego , jeśli jest -zbiorem, to Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta\vdash_H\var\varphi} .
Zauważmy, że biorąc w (2) dostajemy tezę twierdzenia. Dowód (2) przeprowadzimy przez indukcję ze względu na w zbiorze uporządkowanym relacją . Dla własność (2) wynika z Lematu 6.1 oraz z faktu, że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest tautologią. Załóżmy, że (2) zachodzi dla pewnego i niech będzie dowolnym -zbiorem. Z założenia indukcyjnego dostajemy
Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta,q_{m}\vdash_H\var\varphi} oraz
Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta,\neg q_{m}\vdash_H\var\varphi.}
Zatem na mocy Lematu 6.2 dostajemy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \vdash_H\var\varphi.} To kończy dowód (2) i tym samym dowód twierdzenia o pełności.

Korzystając z Lematu 5.6 natychmiast dostajemy twierdzenie o pełności dla systemu ze wszystkimi spójnikami zdaniowymi.
Twierdzenie 6.4 (o pełności )
Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest tautologią, to Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \vdash_{H^+}\var\varphi} .
Dowód
Ponieważ Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \vdash_{H^+}\var\varphi\arr\tilde{\var\varphi}} , więc z twierdzenia o poprawności wynika, że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \models\var\varphi\arr\tilde{\var\varphi}} . A zatem Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \tilde{\var\varphi}} jest tautologią. Z twierdzenia o pełności dla systemu dostajemy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \vdash_H\tilde{\var\varphi}} . Stąd Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \vdash_{H^+}\tilde{\var\varphi}} i ponieważ Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \vdash_{H^+}\tilde{\var\varphi}\arr\var\varphi} (por. Lemat 5.6) więc stosując (MP) dostajemy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \vdash_{H^+}\tilde{\var\varphi}}

Elementy teorii modeli
Powiemy, że zbiór formuł jest spełnialny gdy istnieje wartościowanie Parser nie mógł rozpoznać (błąd składni): {\displaystyle \varrho:\mbox{\small ZZ}\arr \{0,1\}} spełniające wszystkie formuły ze zbioru .
Twierdzenie 6.5
Zbiór formuł jest spełnialny wtedy i tylko wtedy, gdy każdy skończony podzbiór zbioru jest spełnialny.
Dowód
Powiemy, że zbiór jest skończenie spełnialny, gdy każdy skończony podzbiór zbioru jest spełnialny.
Szkic dowodu twierdzenia o zwartości wygląda następująco. Bez zmniejszenia ogólności możemy przyjąć, że wszystkie rozważane formuły są zbudowane przyużyciu jedynie spójników oraz . Używając lematu Kuratowskiego-Zorna pokazujemy najpierw, że istnieje maksymalny skończenie spełnialny zbiór formuł zawierający . Oczywiście mamy
Ponadto, dla dowolnej formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} mamy jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\not\in\Gamma} , to math>\neg\var\varphi\in\Gamma</math>.
Istotnie, jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} oraz Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \neg\var\varphi} nie należą do , to istnieją skończone zbiory , takie że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle X\cup\{\var\varphi\}} oraz Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle Y\cup\{\neg\var\varphi\}} nie są spełnialne. Wynika stąd, że zbiory wartościowań spełniających oraz są rozłączne. Tak więc nie jest spełnialny, a otrzymana sprzeczność dowodzi (4).
Zatem dla dowolnych formuł Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi,\psi}
,
Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle (\var\varphi\rightarrow\psi)\in\Gamma \hspace{.5cm}} wtedy i tylko wtedy, gdy Parser nie mógł rozpoznać (błąd składni): {\displaystyle \hspace{.5cm} \var\varphi\not\in\Gamma} lub
Rzeczywiście, jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle (\var\varphi\rightarrow\psi)} i Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} należą do oraz , to na mocy (4). Wówczas niespełnialny zbiór Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \{(\var\varphi\rightarrow\psi),\var\varphi,\neg\psi\}} jest podzbiorem co dowodzi dowodzi z lewej do prawej w (5). Na odwrót, jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle (\var\varphi\arr\psi)\not\in\Gamma} , to na mocy (4) mamy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \neg(\var\varphi\rightarrow\psi)\in\Gamma} . Jeśli teraz to niespełnialny zbiór Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \{\neg(\var\varphi\rightarrow\psi), \psi\}} jest podzbiorem . Podobnie, jeśli , to , więc Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \{\neg(\var\varphi\rightarrow\psi), \neg\var\varphi\}\subseteq\Gamma} , co kończy dowód (5).
Teraz możemy zdefiniować wartościowanie Parser nie mógł rozpoznać (błąd składni): {\displaystyle \varrho:\mbox{\small ZZ}\rightarrow \{0,1\}} tak, że dla dowolnej zmiennej Parser nie mógł rozpoznać (błąd składni): {\displaystyle p\in \mbox{\small ZZ}} warunki i są równoważne. Z następującej własności wynika, że spełnia wszystkie formuły ze zbioru , a zatem jest zbiorem spełnialnym.
Dla dowolnej formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} , Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \models\var\varphi[\varrho] \hspace{.5cm} \mbox{ wtedy i tylko wtedy, gdy } \hspace{.5cm} \var\varphi\in \Gamma.}
Dowód (6) przeprowadzamy przez indukcję ze względu na budowę formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} . Własności (3)używamy w przypadku gdy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest , a własności (5) w przypadku, gdy zewnętrznym spójnikiem Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest .

Przykład 6.6
Podamy przykład zastosowania twierdzenia o zwartości. Pokażemy, że jeśli nieskończonej mapy (o przeliczalnej liczbie krajów) nie da się pokolorować przy pomocy kolorów, to istnieje skończony fragment tej mapy, którego też nie da się pokolorować przy pomocy kolorów. Niech będzie zbiorem krajów tej mapy. Rozważmy zmienne zdaniowe , gdzie oraz . Wartościowania będą odpowiadać kolorowaniom mapy. Intencją jest to, aby wartościowanie przypisywało zmiennej wartość wtedy i tylko wtedy, gdy kraj ma na mapie kolor . Poniższe formuły przedstawiają podstawowe warunki dotyczące kolorowania.
Każdy kraj ma jakiś kolor: dla każdego wyraża to formuła
Każdy kraj ma co najwyżej jeden kolor: dla każdego , oraz każdych , jeśli to mamy formułę
Każde dwa sąsiadujące kraje mają różne kolory: dla takich, że oraz sąsiadują oraz dla każdego rozważmy formułę
Niech będzie zbiorem wszystkich formuł przedstawionych wyżej. Łatwo jest zauważyć, że jest spełnialny wtedy i tylko wtedy, gdy mapę da się pokolorować kolorami. Zatem jeśli mapy nie da się pokolorować kolorami, to nie jest spełnialny i z twierdzenia o zwartości wynika, że istnieje skończony podzbiór , który nie jest spełnialny. Wówczas fragmentu mapy zawierającego kraje wymienione w indeksach zmiennych występujących w formułach z nie da się pokolorować przy pomocy kolorów.
Jako wniosek z twierdzenia o zwartości otrzymujemy następujące wzmocnienie twierdzenia o pełności (por. Twierdzenie 6.4).
Twierdzenie 6.7 ("Silne" twierdzenie o pełności)
Dla dowolnego zbioru formuł oraz dowolnej formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} , jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest semantyczną konsekwencją zbioru , to Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta\vdash_{H^+}\var\varphi} .
Dowód
Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta\models\var\varphi} to zbiór Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta\cup\{\neg\var\varphi\}} nie jest spełnialny. Na mocy twierdzenia o zwartości istnieje skończony podzbiór taki, że Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta_0\cup\{\neg\var\varphi\}} nie jest spełnialny. Zatem Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta_0\models\var\varphi} . Tak więc jeśli to oczywiście formuła Parser nie mógł rozpoznać (nieznana funkcja „\righrarrow”): {\displaystyle \psi_1\rightarrow(\psi_2\righrarrow\cdots\righrarrow(\psi_n\righrarrow\var\varphi)\cdots)} jest tautologią. Z twierdzenia o pełności wnioskujemy, że </math>\vdash_{H^+} \psi_1\righrarrow(\psi_2\arr\cdots\righrarrow(\psi_n\righrarrow\var\varphi)\cdots)</math>. Stosując razy (MP) do powyższej formuły dostajemy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta_0\vdash_{H^+}\var\varphi.} Tak więc Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \vdash_{H^+}\var\varphi} , co kończy dowód twierdzenia.

Powiemy, że zbiór formuł jest sprzeczny, gdy . Zbiór, który nie jest sprzeczny nazwiemy niesprzecznym. Oto nieco inne sformułowanie "silnego" twierdzenia o pełności:
Twierdzenie 6.8
Zbiór formuł jest spełniony wtedy i tylko wtedy, gdy jest niesprzeczny.
Dowód
Zauważmy, że zbiór formuł jest sprzeczny, gdy . A zatem teza wynika z Twierdzeń 5.5 i 6.7, jeśli przyjmiemy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi=\bot} .

A oto twierdzenie o pełności dla rachunku sekwentów i naturalnej dedukcji.
Wniosek 6.9
Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta\models\var\varphi} to Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle e_G\var\varphi} oraz Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle e_{N}\var\varphi} .
Dowód
Natychmiast z Twierdzeń 5.8, 5.9 i 6.7.
