Logika dla informatyków/Pełność rachunku zdań: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Urzyczyn (dyskusja | edycje)
m Poprawka w dowodzie 6.5
Urzyczyn (dyskusja | edycje)
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 {q1,qn} 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 i=1,,n definiujemy formuły:

Parser nie mógł rozpoznać (nieznana funkcja „\begin{cases}”): {\displaystyle q'_i = \begin{cases}q_i & \textrm{\ jeśli } \varrho(q_i)=1 \\\neg q_i & \textrm{\ jeśli } \varrho(q_i)=0\end{cases}}

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 {q1,,qn}Hψ

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ą qi 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 q1,,qn zachodzi

{q'1,,q'n}H¬.

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 {q1,,qn}H¬ψ. Zatem {q1,,qn},ψH. 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 {q1,,qn},ψHϑ 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 {q1,,qn}Hϑ. Zatem {q1,,qn},ψHϑ 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


{q'1,,q'n}Hψ   oraz   {q'1,,q'n}H¬ϑ

Z Lematu 5.4(1) mamy

{q'1,,qn}H

Stosując teraz dwukrotnie (MP) dostajemy

{q'1,,q'n}

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 ΔHψ.

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 Hψ.

Lemat Kalmára odgrywa kluczową rolę w dowodzie poniższego twierdzenia o pełności.

Twierdzenie 6.3 (o pełności dla H)

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 {q1,,qn} będą wszystkimi zmiennymi występującymi w Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} . Dla dowolnej liczby 0mn nazwiemy m-zbiorem każdy zbiór formuł {q1,,qm}, gdzie qi jest albo qi lub ¬qi. Zauważmy, że 0-zbiór jest pusty.

Udowodnimy następującą własność: dla każdego m spełniającego 0mn, jeśli Δ jest m-zbiorem, to Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Delta\vdash_H\var\varphi} .

Zauważmy, że biorąc m=0 w (2) dostajemy tezę twierdzenia. Dowód (2) przeprowadzimy przez indukcję ze względu na m w zbiorze {0,,n}uporządkowanym relacją 1. Dla m=n 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 0<m<n i niech Δ będzie dowolnym (m1)-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 H+ ze wszystkimi spójnikami zdaniowymi.

Twierdzenie 6.4 (o pełności H+)

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 H 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 X,YΓ, 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 X oraz Y są rozłączne. Tak więc XY 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 ϱ(p)=1 i pΓ 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 k kolorów, to istnieje skończony fragment tej mapy, którego też nie da się pokolorować przy pomocy k kolorów. Niech I będzie zbiorem krajów tej mapy. Rozważmy zmienne zdaniowe pi,j, gdzie iI oraz j<k. Wartościowania będą odpowiadać kolorowaniom mapy. Intencją jest to, aby wartościowanie przypisywało zmiennej pi,j wartość 1 wtedy i tylko wtedy, gdy kraj i ma na mapie kolor j. Poniższe formuły przedstawiają podstawowe warunki dotyczące kolorowania.

Każdy kraj ma jakiś kolor: dla każdego iI wyraża to formuła

pi,0pi,1pi,k1.

Każdy kraj ma co najwyżej jeden kolor: dla każdego iI, oraz każdych i,j<k, jeśli jj to mamy formułę

¬(pi,jpi,j).

Każde dwa sąsiadujące kraje mają różne kolory: dla i,iI takich, że i oraz i sąsiadują oraz dla każdego j<k rozważmy formułę

¬(pi,jpi,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ć k kolorami. Zatem jeśli mapy nie da się pokolorować k kolorami, to Δ nie jest spełnialny i z twierdzenia o zwartości wynika, że istnieje skończony podzbiór Δ0, który nie jest spełnialny. Wówczas fragmentu mapy zawierającego kraje wymienione w indeksach zmiennych występujących w formułach z Δ0 nie da się pokolorować przy pomocy k 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 Δ0Δ 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 Δ0={ψ1,,ψn} 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 n 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 vdashH. 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.56.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.