Logika dla informatyków/Pełność rachunku zdań
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. Dlaudowodnienia 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 {\em 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
Zbiór formuł jest spełnialny \wtw, gdy każdy skończony podzbiór zbioru jest spełnialny.
<span id="
Powiemy, że zbiór jest {\em 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 Parser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle \arr} oraz . Używając lematu Kuratowskiego-Zorna pokazujemy najpierw, że istnieje maksymalny skończenie spełnialny zbiór formuł zawierający . Oczywiście mamy
\bot\not\in\Gamma.
\end{equation}
Ponadto, dla dowolnej formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} mamy \textrm{jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\not\in\Gamma} , to Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \neg\var\varphi\in\Gamma} .} \end{equation} 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 (#eq-zda-2a).
Dla dowolnych formuł Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi,\psi}
,
(\var\varphi\arr\psi)\in\Gamma \hspace{.5cm} \mbox{ \wtw, gdy }
\hspace{.5cm} \var\varphi\not\in\Gamma \mbox{ lub } \psi\in\Gamma.
\end{equation}
Jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle (\var\varphi\arr\psi)}
oraz Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi}
należą do oraz
, to na mocy (#eq-zda-2a).
Wówczas sprzeczny zbiór Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \{(\var\varphi\arr\psi),\var\varphi,\neg\psi\}}
jest
podzbiorem co dowodzi \rightarrowlikacji z lewej do prawej
w (#eq-zda-2). Na odwrót, jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle (\var\varphi\arr\psi)\not\in\Gamma}
, to na
mocy (#eq-zda-2a) mamy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \neg(\var\varphi\arr\psi)\in\Gamma}
. Tak więc
zbiory </math>\{\neg(\var\varphi\arr\psi), \psi\}\{\neg(\var\varphi\arr\psi),
\neg\var\varphi\}</math> są sprzeczne, co kończy dowód (#eq-zda-2).
Teraz możemy zdefiniować wartościowanie Parser nie mógł rozpoznać (błąd składni): {\displaystyle \varrho:\\mbox{\small ZZ}\arr \{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} , \models\var\varphi[\varrho] \hspace{.5cm} \mbox{ \wtw, gdy } \hspace{.5cm} \var\varphi\in \Gamma. \end{equation} Dowód (#eq-zda-3) przeprowadzamy przez indukcję ze względu na budowę formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} . Własności (#eq-zda-1)używamy w przypadku gdy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest , a własności (#eq-zda-2) w przypadku, gdy zewnętrznym spójnikiem Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest Parser nie mógł rozpoznać (nieznana funkcja „\arr”): {\displaystyle \arr} . " style="font-variant:small-caps">Dowód eq-zda-3
Przykład
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ść \wtw, 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 \[p_{i,0}\vee p_{i,1}\vee\ldots\vee p_{i,k-1}.\]
Każdy kraj ma co najwyżej jeden kolor: dla każdego , oraz każdych , jeśli to mamy formułę \[\neg(p_{i,j}\wedge p_{i,j'}).\]
Każde dwa sąsiadujące kraje mają różne kolory: dla takich, że oraz sąsiadują oraz dla każdego rozważmy formułę \[\neg(p_{i,j}\wedge p_{i',j}).\]
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 #tw-zda-3a).
Twierdzenie
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 e_{H^+}\var\varphi} .
<span id="
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 „\arr”): {\displaystyle \psi_1\arr(\psi_2\arr\cdots\arr(\psi_n\arr\var\varphi)\cdots)} jest tautologią. Z twierdzenia o pełności wnioskujemy, że </math>\vdash_{H^+} \psi_1\arr(\psi_2\arr\cdots\arr(\psi_n\arr\var\varphi)\cdots)</math>. Stosując razy (MP) do powyższej formuły dostajemy \[\Delta_0\vdash_{H^+}\var\varphi.\] Tak więc Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle e_{H^+}\var\varphi} , co kończy dowód twierdzenia. " style="font-variant:small-caps">Dowód
Powiemy, że zbiór formuł jest {\em sprzeczny}, gdy . Zbiór, który nie jest sprzeczny nazwiemy {\em niesprzecznym}. \Leftrightarrow nieco inne sformułowanie ,,silnego twierdzenia o pełności:
Twierdzenie
Dowód
A \leftrightarrow twierdzenie o pełności dla rachunku sekwentów i naturalnej dedukcji.
Wniosek
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
\subsection*{Ćwiczenia}\begin{small}
- Dowieść, że "silne" twierdzenie o pełności
(Twierdzenie #tw-zda-4) pociąga twierdzenie o zwartości.
- <span id="wtomigraj} Udowodnić, że jeśli w systemie Parser nie mógł rozpoznać (błąd składni): {\displaystyle \vdash_{H+" \> }
zamienimy aksjomaty (B1--B4) na aksjomaty
- [(D1)] Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\to\var\varphi\vee \psi} ;
- [(D2)] Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \psi\to\var\varphi\vee \psi} ;
- [(D3)] </math>(\var\varphi\to \vartheta)\wedge(\psi\to \vartheta)
\to(\var\varphi\vee \psi \to \vartheta)</math>;
- [(C1)] Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\wedge \psi\to \var\varphi} ;
- [(C2)] Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\wedge \psi\to \psi} ;
- [(C3)] </math>(\vartheta\to \var\varphi)\wedge(\vartheta\to \psi)\to
(\vartheta\to\var\varphi\wedge \psi)</math>.
to twierdzenie o pełności pozostanie prawdziwe.
\item Dany jest nieskończony zbiór chłopców, z których każdy ma skończoną liczbę narzeczonych. Ponadto dla każdego , dowolnych chłopców ma co najmniej narzeczonych. Dowieść, że każdy chłopiec może się ożenić z jedną ze swoich narzeczonych bez popełnienia bigamii.