Rachunek zdan I i II rzedu. Rachunek predykatow

Transkrypt

Rachunek zdan I i II rzedu. Rachunek predykatow
Rachunek zdań i predykatów
Agnieszka Nowak
7 kwietnia 2008
1
1 Logika - Wprowadzenie
1.1 Słowniczek pojęć z logiki
Język - jest to system znaków.
Znak - def. Znak jest to przedmiot, który ma charakter konwencjonalny. Jest
postrzegany zmysłowo, wskazuje na coś innego niż on sam. Wskazuje na
jakiś przedmiot na mocy pewnej umowy.
System znaków - to zbiór znaków razem z regułami składniowymi i semantycznymi.
Korelator semantyczny - przedmioty, które są oznaczone przez znaki danego
języka np. krzesło, oraz sytuacje i cechy. Korelator semantyczny przypisuje
się konkretnemu językowi np. polskiemu.
Metajęzyk - jest to taki język, w którym mówi się o wyrażeniach innego języka.
Język sztuczny - jest konstruowany na mocy jakiejś umowy.
Język naturalny - kształtuje się w jakimś dłuższym okresie czasu.
Język naukowy - jest to język używany tylko do funkcji opisowych.
Funkcje języka:
• użytkowa,
• performatywna,
• expresywna. - są to funkcje pragmatyki.
Kategoria semantyczna - jest to zbiór wyrażeń języka pełniących tę samą funkcje składniową w danym języku.
• nazwy,
• zdania,
• kat. syntakt. funktorów i operatorów.
Logikę dzielimy na :
1. Semiotykę - bada relacje pomiędzy wyrażeniami językowymi a rzeczywistością pozajęzykową
• Syntaktyka - dziedzina semiotyki, która bada relacje pomiędzy
znakami językowymi ze względu na kształt i bez względu na ich
znaczenie
• Semantyka - bada relacje zachodzące pomiędzy znakami a rzeczami pozajęzyk.
• Pragmatyka - bada relacje zachodzące pomiędzy znakami językowymi a użytkownikami tych znaków.
2
2. Logikę formalną - wyznacza niezawodne schematy rozumowe.
3. Metodologię - a) ogólna, b) szczegółowa
Zdanie w sensie logicznym - jest to wyrażenie opisujące jakąś sytuację, które
jest prawdziwe albo fałszywe.
Prawdziwość - zdanie jest prawdziwe jeśli opisuje sytuację, która zachodzi w
rzeczywistości pozajęzykowej.
Fałszywość - zdanie jest fałszywe jeśli opisuje sytuację, która nie zachodzi w
rzeczywistości pozajęzykowej.
Ontologiczna zasada niesprzeczności - jest prawdziwa z powodu otaczającej
rzeczywistości a nie z powodu autorytetu Arystotelesa. Wartości logiczne
są obiektywnymi własnościami zdań.
Zdanie hipotetyczne - jest wtedy gdy uznaje się je za prawdopodobnie prawdziwe.
Zdanie supozycyjne - jest wtedy gdy jego prawdziwość została założona dla
celów jakiejś argumentacji.
Sensowność - zdanie jest sensowne w jakimś języku gdy jest konstruowane
zgodnie z zasadami składniowymi tego języka.
Fałszywość - aby dane wyrażenie było fałszywe musi być ono sensowne. Fałsz
jest wartością logiczną zdania i należy go odróżnić od nonsensu.
Nonsens - wyrażenie jest nonsensem danego języka wtedy gdy nie jest skonstruowane zgodnie z reg. składniowymi tego języka.
Niezawodny schemat rozumowy - to taki schemat, w którym prawdziwość przesłania gwarantuje prawdziwość wniosku. Nie możliwe jest by otrzymać
prawdziwy wniosek przy fałszywej przesłance. ¬¬A ≡ A.
Przedmiot - jest to każdy obiekt dla którego spełniona jest ontologiczna zasada
niesprzeczności. Przedmiot to wszystko co możemy sobie wyobrazić.
Supozycja formalna - wyrażenie występuje w supozycji formalnej gdy jest ono
znakiem dla czegoś innego od siebie.
Supozycja materialna - występuje gdy wyrażenie jest znakiem dla samego siebie.
Nazwa - jest to wyrażenie, które można wstawić w miejsce (a) lub (b) w schemacie (a) jest (b) i w wyniku tego podstawienia otrzymuje się wyrażenie
sensowne danego języka.
Zmienna - wyrażenie, za które można wstawić inne wyrażenie. Każda zmienna
posiada swój zakres.
3
Zakres zmienności - jest to zbiór wyrażeń, które można podstawić za daną
zmienną.
Funktor - wyrażenie, które posiada argumenty i które tworzy razem z tymi
argumentami nowe zdanie lub inny funktor. Przyjmuje się, że samodzielnymi kategoriami syntaktycznymi są nazwy i zdania a niesamodzielnymi funktory tzn. ich znaczenie zależy od argumentów. Funktory dzielimy
na: zdaniotwórcze, funktorotwórcze, nazwotwórcze. ( funktorami mogą być
czasowniki, spójnikami). Funktory mogą mieć wiele argumentów np.
z/nn gdzie z - f. zdaniotwórczy, nn - argumenty (2). np.: Jan kocha Zosię.
Jola i Kasia.
Z/nnn gdzie z - f. zdaniotwórczy, nnn - argumenty (3).
Argumenty funktorów mogą należeć do różnych kategorii syntaktycznych.
Dane wyrażenie jest wieloznaczne w danym języku J wtedy gdy występuje
w tym języku w różnych rolach składniowych.
Predykat - jest to funktor zdaniowy od argumentów nazwowowych.
Korelatem semantycznym od predykatu dwuargumentowego jest relacja.
Korelatem semantycznym od predykatu jednoargumentowego jest własność.
Np.: Jan idzie do szkoły ( relacje między Janem a szkołą ) - idzie do predykat dwuargumentowy.
Operator - jest to wyrażenie występujące razem ze zmienną posiadającą zasięg,
wraz z którą tworzy nazwę lub zdanie.
Zasięg - jest to wyrażenie występujące bezpośrednio po operatorze ( nie będące
zmienną ). Zasięg zazwyczaj występuje w nawiasach.
Kwantyfikator ogólny ( duży) Dla każdego...(tu wstawiamy zmienną)....jest
tak, że....(tu stawiamy zasięg) ∀x ( gdzie x jest np. człowiekiem)
Kwantyfikator szczegółowy (mały lub egzystencjalny): Dla niektórych...( tu
wstawiamy zmienną)...jest tak, że .....(tu wstawiamy zasięg) ∃x ( gdzie x
jest człowiekiem)
Operator abstrakcji- Zbiór.... (zmienna) takich, że....(zasięg) ∧
Wskaźnik kategorii operatorowej:
x - wskaźnik wyrażenia, które tworzy dany operator
X/Y
y - wskaźnik kategorii zasięgu.
Zmienna związana - jest to taka zmienna, która:
a) występuje w zasięgu danego operatora,
b) jest równokształtna względem zmiennej występującej pod operatorem.
Np.:
∀x ( x - jest człowiekiem ) lub ( x - śpi ) ∀x∃y ( x kocha y-ka ).
4
Zmienna wolna - jest to taka zmienna, która nie jest związana względem danego
operatora.
Funkcja zdaniowa - jest to wyrażenie, które posiada przynajmniej jedną zmienną wolną i staje się zdaniem gdy: w miejsce wszystkich zmiennych wolnych
podstawimy wyrażenie z zasięgu ich zmienności lub poprzedzimy kwantyfikatorami wiążącymi wszystkie zmienne.
Np.: Jurek jest człowiekiem
∀x ( x jest człowiekiem )
∃x ( x jest człowiekiem )
Funktor prawdziwościowy - jest to funktor zdaniotwórczy od argumentów zdaniowych ( tzn. posiada on wskaźnik Z/Z1 .....Zn ) takich, że wartość logiczna
zdania utworzonego przez ten funktor zależy wyłącznie od tego jakie są
wartości logiczne jego argumentów.
Funktor
p
0
1
negacji - nieprawda, że
¬p
1
0
funktor konieczności - ” konieczne jest, że..p.. ” ; ” możliwe jest, że..... ” - ten
funktor omawia się na gruncie logiki modalnej
funktor deontyczny - ” obowiązkowe jest, że ...(p).. ”. W logice deontycznej
rozpatruje się następujące funktory: a) ” zakazane jest, że
b) ” dozwolone jest, że..(p)..
p
0
Funktor koniunkcji - p ∧ q ( np. p i q ) 0
1
1
q
0
1
0
1
p∧q
0
0
0
1
Funktor alternatywy - p ∨ q ( p lub q )
• alternatywa zwykła - alternatywa zwykła jest prawdziwa jeżeli przyp q
0 0
najmniej jeden jej człon jest prawdziwy, jest ona przemienna. 0 1
1 0
1 1
p
0
• alternatywa rozłączna - p ⊥ q 0
1
1
5
q
0
1
0
1
p⊥q
0
1
1
1
p∨q
0
1
1
1
p
0
c) dyzjunkcja - p/q 0
1
1
q
0
1
0
1
p/q
1
1
1
0
Funktor implikacji - p → q - ” jeżeli p to q” Implikacja jest fałszywa tylko
wtedy gdy poprzednik (p) jest prawdą (1). Implikacja nie jest przemienna
tzn. wartość poprzednika następnika decyduje o wartości implikacji.
p
0
0
1
1
q
0
1
0
1
p→q
1
1
0
1
6
2 Teoretyczne podstawy rachunku predykatów
Rachunek zdań jest także jednym ze sposobów zapisu wiedzy. Można by stwierdzić, ze jest on systemem wyrażeń będących formułami prawdziwymi, w którym
nie stosuje się konkretnych zdań, lecz posługuje się tzw. zmiennymi zdaniowymi
reprezentującymi zdania. Cała teoria opiera się na klasycznej logice dwuwartościowej, zgodnie z którą, za zmienne zdaniowe można podstawiać takie zdania,
którym odpowiada wartość logiczna TRUE (prawda) lub FALSE (fałsz), tzn.
takie, które uznane są odpowiednio za prawdziwe lub fałszywe.Oprócz wyrażeń
prostych, w rachunku zdań tworzone są również wyrażenia złożone. Powstają
one z wyrażeń prostych przy wykorzystaniu funktorów zdaniotwórczych (spójników). Klasyczny rachunek zdań stosuje następujące spójniki:
• negacja ↑ (nieprawda, ze),
• koniunkcja ∧ (i),
• alternatywa ∨ (lub),
• implikacja → (jeżeli to),
• równoważność ↔ (wtedy i tylko wtedy gdy).
To, czy otrzymane w ten sposób wyrażenia są fałszywe czy tez prawdziwe, zależy wyłącznie od prawdziwości lub fałszywości zdań składowych.Zdania, które
są prawdziwe niezależnie od wartości logicznej występujących w nich zmiennych
zdaniowych, nazywane są tautologiami. Przykładem tautologii jest prawo logiczne: (p → q) → (q → p) gdzie przyjmując, ze zmienne zdaniowe p i q reprezentują
odpowiednio zdania: X jest dzieckiem i X jest niepełnoletni, możemy interpretować pokazaną tautologię jako schemat zdania: jest prawdą, ze jeżeli X jest
dzieckiem to X jest niepełnoletni, to prawdą jest także stwierdzenie, ze jeżeli X
nie jest niepełnoletni to X nie jest dzieckiem. (w potocznym rozumowaniu to
znaczy, ze jeżeli X jest dorosły to X nie jest dzieckiem, co rzeczywiście jest zgodne z rzeczywistością. Rachunek predykatów odgrywa istotna rolę wśród metod
reprezentacji wiedzy, stanowiąc podstawę programowania w logice. Rachunek
ten jest rozszerzeniem rachunku zdań przez wprowadzenie kwantyfikatorów:
1. ∀: dla każdego,
2. ∃: istnieje takie, że.
Rachunek zdań wykonuje działania na zdaniach posiadających jakąś wartość
logiczną, ale nie wnika w treść tych zdań. Pod tym względem rachunek predykatów jest narzędziem dogodniejszym dla zapisu wiedzy. Rachunek predykatów,
nazywany tez rachunkiem kwantyfikatorów, cieszy się obecnie dużym zainteresowaniem, ponieważ predykat jest nazwą reprezentującą jakąś własność lub relację. Z punktu widzenia gramatyki, predykat pełni rolę orzeczenia i składa się
z nazwy i dowolnej liczby argumentów, które są nazywane termami (stałe (symbole) alfanumeryczne, numeryczne, zmienne i wyrażenia). Podstawiając stałe
7
za zmienne otrzymujemy zdania prawdziwe lub fałszywe, dlatego w tak prosty
i zrozumiały sposób predykaty interpretują wyrażane zdania. Podstawowe wyrażenia w rachunku zdań noszą nazwę termów, a wyrażenia złożone nazywamy
formułami. Z formalnego punktu widzenia predykat rozpatruje się jako funkcję
odwzorowującą argumenty predykatu (termy) w wartości TRUE lub FALSE i
zapisuje się go podobnie jak funkcję w postaci: PREDYKAT (ARGUMENT).
np.:posiada indeks (student),
jest synem (Adam, Jacek).
Predykaty powyższe należy interpretować odpowiednio: student posiada indeks,
Adam jest synem Jacka. świadczy to więc o niezwykłej prostocie zapisu wiedzy
rachunkiem predykatów. Wyróżnia się rachunek predykatów I-go i II-go rzędu.
Rachunek predykatów I-go rzędu operuje na pojęciach abstrakcyjnych, posiada
mechanizmy pozwalające opisać prawa, którym podlegają obiekty systemu, jest
zatem pewnym rachunkiem formalnym. W rachunku tym funkcje zdaniowe reprezentowane są za pomocą reguł.Zupełnie oczywiste wydaje się być, ze każdy
predykat, który zawiera implikację jest regułą (w sensie reprezentacji regułowej). Np.:
(p → q)
gdzie p i q to predykaty, to reguła postaci:
Jeżeli p To q.
Każda funkcja zdaniowa w której występuje równoważność to dwie reguły. Np.:
(p ⇔ q)
gdzie p i q to predykaty, to dwie reguły:
(p ⇒ q)
oraz
(q ⇒ p)
Jednakże, nie wszystkie pojęcia o otaczającej nas rzeczywistości dają się reprezentować w logice. Z tego powodu, nie każda reguła utworzona z predykatu,
który nie jest prawem logicznym, jest prawdziwa. Podobnie, nie każda reguła
utworzona ze schematu wnioskowania jest prawdziwa, gdyż nie wszystkie schematy wnioskowania są niezawodne. Nie istnieje jednak metoda, która sprostałaby wszystkim wymaganiom.
8
3 Metody dowodzenia prawdziwości schematów
Wnioskowanie jest procesem myślowym, w którym na podstawie uznania pewnych zdań, zwanych przesłankami, dochodzimy do uznania innego zdania, zwanego wnioskiem . Wnioskowanie w systemach ekspertowych oparte jest na logice matematycznej, która bada, czy z założeń wynikają konkluzje, niezależnie
od ich prawdziwości lub fałszywości i niezależnie od tego, jakich spraw dotyczą.
Logika pozwala uznawać pewne sposoby wnioskowania stosowane w naukach za
poprawne, tworząc z nich systemy logiczne będące zbiorem praw i reguł, do których stosując się można uznawać te wszystkie wnioskowania, które spontanicznie
uznajemy za prawdziwe. Pod względem uznawania lub odrzucania pewnych sposobów wnioskowania istnieje w matematyce duża zgodność poglądów. Nie zdarza
się bowiem sytuacja, w której pewne reguły jedni uważają za prawdziwe, a inni
za całkowicie błędne. Można jedynie zaobserwować pewne różnice w rozumieniu pewnych reguł i w poglądzie na zakres ich stosowania. Zbiór, praktycznie
rzecz biorąc, wszystkich metod wnioskowania spotykanych w matematyce, daje tzw. klasyczny system logiki, na który składają się klasyczny rachunek zdań,
badający wartość logiczną zdań złożonych (alternatywa, koniunkcja, implikacja,
równoważność zdań) i klasyczny rachunek kwantyfikatorów. Do klasycznego rachunku zdań najłatwiej dojść przez wyjaśnienie pojęcia prawdy i fałszu, które
są powszechnie zrozumiałe. Klasyczne określenie prawdy głosi, ze prawdziwe
jest zdanie, które opisuje taki stan rzeczy, który istotnie ma miejsce - fałszywe
zaś jest zdanie opisujące nieistniejący stan rzeczy. Rozumowanie to opiera się
bowiem na tzw. zasadzie dwuwartościowości, która głosi, ze każde zdanie ma
jedną i tylko jedną z dwóch wartości logicznych: prawdy i fałszu. Oznacza to,
ze każde zdanie jest prawdziwe lub fałszywe i ze żadne zdanie nie jest zarazem
prawdziwe i fałszywe.
9
4 Reguły wnioskowania
Reguły wnioskowania w logice to zasady przekształcania zdań, w których wymienia się założenia (uznane za aksjomaty) oraz wskazuje sposoby poprawnego
(tj. zgodnego z prawami logiki) wprowadzania nowych twierdzeń. Podstawowe
reguły wnioskowania w logice to:
• reguła odrywania, nazywana najczęściej regułą modus ponens, oparta na
prawie ”modus ponendo ponens”, zgodnie z którym, jeśli prawdziwa jest
implikacja i jej poprzednik, to dozwolone jest zawsze uznanie prawdziwości także i następnika takiej implikacji. Reguła ta ma postać:
p→q
p
q
i mówi, że jeżeli z przesłanki p wynika fakt q (p implikuje q) i p jest
prawdziwe, to q także przyjmuje się za prawdziwe. Na tej regule opiera się
proces wnioskowania w przód Np.
Jeśli dziś jest ładna pogoda, to idę na spacer
Dziś jest ładna pogoda
Idę na spacer
• modus tollens oparta na prawie logicznym ”modus tollendo tollens”, które stwierdza, ze z implikacji i wyrażenia sprzecznego z jej następnikiem
wynika wyrażenie sprzeczne z jej poprzednikiem, a więc stwierdza niezawodność schematów:
((p → q) ∧ ¬q) → ¬p
((¬p → q) ∧ ¬q) → p
((p → ¬q) ∧ q) → ¬p
((¬p → ¬q) ∧ q) → p
Oto przykład wnioskowania podpadającego pod pierwszy schemat :
Jeżeli X jest dzieckiem to X jest niepełnoletni
X nie jest niepełnoletni
X nie jest dzieckiem
10
5 Rachunek zdań
5.1 Tautologia
Zdanie logiczne nazywamy tautologia, jeśli jest zawsze prawdziwe, niezależnie
od wartości logicznych zmiennych zdaniowych w nim występujących.
5.2 Wybrane prawa rachunku zdań
(p ∧ q) = (q ∧ p) - prawo przemienności koniunkcji
(p ∨ q) = (q ∨ p) - prawo przemienności alternatywy
(p ∧ q) ∧ r = p ∧ (q ∧ r) - prawo łączności koniunkcji
(p ∨ q) ∨ r = p ∨ (q ∨ r) - prawo łączności alternatywy
[(p ∧ q) ∨ r] = [(p ∨ r) ∧ (q ∨ r)] - prawo rozdzielczości alternatywy
[(p ∨ q) ∧ r] = [(p ∧ r) ∨ (q ∧ r)] - prawo rozdzielczości koniunkcji
(p∨ v p) - prawo wyłączonego środka (tertium non datur)
v (p∧ v p) - prawo sprzeczności
p ⇒ (p ∨ q) - prawo pochłaniania
(p ∧ q) ⇒ p - prawo pochłaniania
v (v p) ⇔ p - prawo podwójnego zaprzeczenia
v (p∧q) ⇔ (v p∨ v q) - prawo de’Morgana - zaprzeczenie koniunkcji (ekskluzja)
v (p ∨ q) ⇔ (v p∧ v q) - prawo de’Morgana - zaprzeczenie alternatywy (binegacja)
p ⇒ q ⇔ (v q ⇒v p) - prawo transpozycji
v (p ⇒ q) ⇔ (p∧ v q) - prawo zaprzeczenia implikacji
(p ⇒ q) ∧ (q ⇒ r) ⇒ (q ⇒ r) - prawo przechodniości implikacji
[(p ⇒ q) ∧ p] ⇒ q - prawo sylogizmu konstrukcyjnego (modus ponendo ponens)
[(p ⇒ q)∧ v q] ⇒v p - prawo sylogizmu destrukcyjnego (modus tollendo
tollens)
[(p ∨ q)∧ v q] ⇒ p - prawo sylogizmu alternatywnego (modus tollendo ponens)
p ⇒ p - prawo tożsamości dla implikacji
v (p ⇒ q) ≡ (p∧ v q) - prawo przeczenia implikacji
(p ⇒ q) ≡ (v p ∨ q) - prawo eliminacji implikacji
11
(p ⇒ q) ⇒ (v q ⇒v p) - prawo transpozycji prostej
[(p ∧ q) ⇒ r] ⇒ ((v r ∧ p) ⇒v q) - prawo transpozycji złożonej
[(p ∧ q) ⇒ r] ⇒ ((v r ∧ q) ⇒v p)
[(p ∧ q) ⇒ r)] ⇒ ([p ⇒ (q ⇒ r)] - prawo eksportacji
[p ⇒ (q ⇒ r)] ⇒ [(p ∧ q) ⇒ r] - prawo importacji
[p ⇒ (q ⇒ r)] ⇒ [q ⇒ (p ⇒ r)] - prawo komutacji
[(p ⇒ r) ∧ (q ⇒ r)] ⇒ [(p ∨ q) ⇒ r] - prawo łączenia
[(p ∨ q) ⇒ r] ⇒ [(p ⇒ r) ∧ (q ⇒ r)] - prawo rozłączania
[(p ⇒ q) ∧ (p ⇒ r)] ≡ [p ⇒ (q ∧ r)] - prawo kompozycji
[(p ⇒ q] ∧ [(r ⇒ s)] ≡ [(p ∧ r) ⇒ (q ∧ s)] - prawo mnożenia implikacji
[(p ⇒ q)∧(q ⇒ r)] ⇒ (p ⇒ r) - prawo sylogizmu hipotetycznego (koniunkcyjne)
(p ⇒ q) ⇒ [(q ⇒ r) ⇒ (p ⇒ r)] - prawo sylogizmu hipotetycznego (bezkoniunkcyjne)
{(p ∨ q) ∧ [(p ⇒ r) ∧ (q ⇒ r)]} ⇒ r - prawo dylematu konstrukcyjnego prostego
{(p ∨ q) ∧ [(p ⇒ r) ∧ (q ⇒ s)]} ⇒ (r ∨ s) - prawo dylematu konstrukcyjnego
złożonego
(p ≡ r) ≡ [(p ⇒ r) ∧ (r ⇒ p)] - prawo eliminacji równoważności I
(p ≡ r) ≡ [(p ∧ r) ∨ (v p∧ v r)] - prawo eliminacji równoważności II
(p ∧ q) ⇒ p - prawo symplifikacji dla koniunkcji
p ⇒ (q ⇒ p) - prawo symplifikacji dla implikacji (prawo charakterystyki prawdy)
v p ⇒ (p ⇒ q) - prawo Dunsa Szkota I (prawo charakterystyki fałszu)
(p∧ v p) ⇒ q - prawo Dunsa Szkota II
(p ⇒v p) ⇒ p - prawo Claviusa
p ⇒ (p ∨ q) - prawo pochłaniania dla alternatywy (prawo addycji)
(p ∧ q) ⇒ p - prawo pochłaniania dla koniunkcji (prawo symplifikacji dla koniunkcji)
(p ⇒ q) ⇒ [(p ∧ r) ⇒ (q ∧ r)] - prawo nowego czynnika
(p ⇒ q) ⇒ [(p ∨ r) ⇒ (q ∨ r)] - prawo nowego składnika
12
Do nauczenia :!
1. ((p ∧ q) ∧ p) ⇒ q - reguła odrywania RO
2. reguła modus tollens MT:
• ((p ∧ q) ∧ ¬q) ⇒ ¬p
• ((p ∧ ¬q) ∧ q) ⇒ ¬p
• ((¬p ∧ q) ∧ ¬q) ⇒ p
• ((¬p ∧ q) ∧ q) ⇒ p
3. ((p ∨ ¬q) ∧ q) → p- reguła opuszczania alternatywy OA
4. (p ∧ ¬p) ⇒ q - prawo Dunsa Szkota
5. reguła odrywania koniunkcji OK:
• (p ∧ q) ⇒ p
• (p ∧ q) ⇒ q
6. p ∧ q ⇒ (p ∧ q) -reguła dołączania koniunkcji DK
7. (p → q) ≡ ¬p ∨ q - prawo zastępowania implikacji ZI
8. ¬(p ∧ q) ≡ ¬p ∨ ¬q prawo negowania koniunkcji NK
9. ¬(p ∨ q) ≡ ¬p ∧ ¬q prawo negowania alternatywy NA
6 Metody dowodzenia prawdziwości schematów wnioskowania
Aby udowodnić prawdziwość jakiegoś stwierdzenia, które nie jest aksjomatem
(pewnikiem), wystarczy wykorzystać jedną z następujących metod dowodzenia
poprawności schematów logicznych:
1. metoda zero-jedynkowa,
2. skrócona metoda zero-jedynkowa,
3. metoda założeniowa.
13
6.1 Metoda zerojedynkowa
Metoda zerojedynkowa polega na wyznaczaniu wartości logicznej zdania przez
wartości logiczne jej składników. Aby rozstrzygnąć, czy dany schemat jest tautologią, nalezy rozważyć wszystkie możliwe kombinacje wartości logicznych zmiennych w niej występujących. Jeżeli w każdym przypadku wartość formuły (wyrażenia logiczne połączone funktorami) wynosi 1, to ta formuła jest tautologią.
W tym celu niezbędna jest znajomość tzw. tabel prawdy dla poszczególnych
operacji logicznych:
• sumy logicznej (alternatywy),
• iloczynu logicznego (koniunkcji),
• negacji,
• implikacji.
Przedstawione one zostały poniżej w tabeli. Zapamiętaj !!
1 = PRAWDA, 0 = FAŁSZ
x
0
0
1
1
y
0
1
0
1
x∨y
0
1
1
1
x∧y
0
0
0
1
x
1
1
0
0
x→y
1
1
0
1
Wówczas niezawodność schematu postaci:
((p → q) ∧ (q → r)) → (p → r),
będzie wykazana w następujący sposób:
p q r p → q q → r (p → q) ∧ (q → r) p → r ((p → q) ∧ (q → r)) → (p → r)
0 0 0 1
1
1
1
1
0 0 1 1
1
1
1
1
0 1 0 1
0
0
1
1
0 1 1 1
1
1
1
1
1 0 0 0
1
0
0
1
1 0 1 0
1
0
1
1
1 1 0 1
0
0
0
1
1 1 1 1
1
1
1
1
Tablica 2: Tabela dowodu prawdziwości stwierdzenia.
Metoda ta pozwala na jednoznaczne stwierdzenie, czy schemat wnioskowania
jest poprawny czy nie, jednakże nie zawsze jest uznawana w pełni formalną i
wystarczającą metodę dowodzenia celu. Istnieje także pewnego rodzaju modyfikacja metody zerojedynkowej, noszącą nazwę skróconej metody zerojedynkowej.
6.2 Skrócona metoda zerojedynkowa
Pozwala ona wykazać, że wyrażenie rachunku zdań o postaci implikacji jest
prawem logicznym, w sytuacji, gdy wykluczone jest, by dla jakiegoś układu
14
wartości logicznych przyporządkowanego zmiennym, poprzednik tej implikacji
był prawdziwy a jej następnik fałszywy. Metoda ta jest często wykorzystywana,
gdyż pozwala na uzyskanie tego samego rezultatu co metoda zerojedynkowa, bez
konieczności sprawdzania wszystkich kombinacji zmiennych logicznych. Dzieje
się tak dlatego, iz jeśli wszystkie przesłanki mają wartość logiczną 1, to wniosek
musi mieć wartość 1, lub, ze jeśli wniosek ma wartość logiczną 0, to przynajmniej
jedna z przesłanek ma wartość 0.
6.2.1
Przykład dla metody skróconej zero-jedynkowej
Sprawdzenie niezawodności schematu:
((p → q) ∧ (q → r)) → (p → r)
((p
→
q)
∧
1
(q
1
→
r))
→
(p
→
0
r)
1
1
1
0
0
?
1
1
?
0
1!
1
1
1
1!
1!
krok
1
2
3
4
5
6
7
8
9
10
SPRZECZNOŚĆ: q = 1 i q = 0 oraz r = 0 i r = 1
6.2.2
Zastosowania metody zero-jedynkowej
Metoda zero-jedynkowa polega na budowie i analizie matrycy logicznej formuły;
może być stosowana do:
• weryfikacji tautologii (dla każdej interpretacji wartość logiczna formuły
jest true)
• weryfikacji niespełnialności (dla każdej interpretacji wartość logiczna formuły jest false)
• badania równoważności formuł (dla każdej interpretacji wartości logiczne
są takie same)
• weryfikacji logicznej konsekwencji (dla każdej interpretacji prawdziwość
formuły musi pociągać prawdziwość jej konsekwencji)
15
• wyznaczania interpretacji przy których formuła jest prawdziwa lub fałszywa.
6.3 Metoda założeniowa
Wyróżniamy dwie techniki metody założeniowej:
• założeniowy dowód ”nie wprost”
• założeniowy dowód ”wprost”
Metoda założeniowego dowodu ”nie wprost” polega na tym, że z twierdzenia W
w postaci w1 → (w2 → w3 → . . . (wn → W)) wypisujemy najpierw wyrażenia
w1, . . . , wn i następnie negację wyrażenia W. Dalsze wyrażenia dołączamy do
dowodu korzystahąc z przyjętych reguł i tiwerdzeń wcześniej udowodnionych.
dowód jest zakonczony jeżeli wystapią w nim dwa wyrażenia, z których jedno
jest negacją drugiego.
Dowód niezawodności schematu:
((p → q) ∧ (q → r)) → (p → r)
zapisujemy w następujący sposób:
Zaszła sprzeczność dla zdań 11 oraz 12, a więc dowód był prawdziwy, a jedy1
2
3
4
5
6
7
8
9
10
11
12
p→q
q→r
¬(p → r)
¬p ∨ q
¬q ∨ r
¬(¬p ∨ r)
¬¬p ∧ ¬r
p ∧ ¬r
p
¬r
q
¬q
DN
[ z reguły zastępowania implikacji ZI(1)]
[ z reguły zastępowania implikacji ZI(2)]
[ z reguły zastępowania implikacji ZI(3)]
[ z reguły negowania alternatywy NA(6)]
[ z prawa podwójnej negacji PN(7)]
[ z prawa odrywania koniunkcji OK(8)]
[ z prawa odrywania koniunkcji OK(8)]
[ z prawa odrywania alternatywy OA(4,9)]
[ z prawa odrywania alternatywy OA(5,10)]
nie negacji tezy doprowadziła do sprzeczności. Skoro więc zaprzeczona teza jest
niemożliwa, to prawdziwa jest niezaprzeczona teza.
Metoda założeniowego dowodu ”wprost” polega na tym, że z twierdzenia W
w postaci w1 → (w2 → w3 → . . . (wn → W)) wypisujemy najpierw wyrażenia
w1, . . . , wn potem zaś wyrażenia, na dołączenie których pozwalają przyjęte reguły. Wolno też dołączyć do dowodu twierdzenia wcześniej udowodnione. Dowód
jest zakończony, gdy wystąpi w nim wyrażenie W.
Można inaczej powiedzieć, że w metodzie założeniowej (wprost) rozpatrywany
schemat uznajemy za niezawodny, gdy w wyniku kolejnych działań, podczas
których uzyskujemy schematy juz udowodnione jako niezawodne, ostatecznie
16
uzyskamy cel wnioskowania (konkluzję całego wyrażenia). Nie można jednak na
niej polegać w przypadku wykazywania zawodności schematów. Dowód niezawodności schematu:
((p → q) ∧ (q → r)) → (p → r)
zapisujemy w następujący sposób:
Zgodnie z metodą założeniową dowód rozpoczynać powinno wypisanie zało1
2
3
4
5
p→q
q→r
p
q
r
[ z reguły odrywania RO(1, 3)]
[ z reguły odrywania RO(2, 4)]
żeń, którymi są przesłanki dowodzonego schematu i poprzednik jej wniosku.
Komentarze umieszczone na boku mówią o tym, z których wierszy wcześniejszych kolejne wiersze są otrzymane przy pomocy reguły odrywania. Dowód jest
zakończony, gdyż otrzymaliśmy następnik wniosku.
7 Zadania
7.1 Zadanie 1
Udowodnić metodą skróconą zerojedynkową następujące schematy logiczne:
1. p ∨ q → ¬(p ∧ q)
2. ¬(p ∧ q) → ¬p ∧ ¬q
3. [(p → q) ∧ (p → r) ∧ ¬(q ∧ r)] → ¬p
4. [(p ∨ q) → (¬s ∧ d)][p → (¬s ∧ d)]
5. [(p → q) ∧ (q → r) ∧ (p ∨ q)] → r
6. (p → (q ∨ r)) ∧ (p → ¬q)] → (p → r)
7. (¬(p → q)) → (p ∧ ¬q)
8. (p ∧ q) → r] → [p → (q → r)]
9. (p → r) ∧ (q → r)] → [(p ∨ q) → r]
10. (p → q) ∧ (r → s) ∧ (¬q ∨ ¬s)] → (¬p ∨ ¬r)
11. ¬(p → q) → ¬p ∧ ¬q
17
7.2 Zadanie 2
Udowodnić metodą założeniową następujące schematy logiczne:
1. p → ¬(p ∧ q)
2. [(p → q) ∧ (p ∨ r)] → (q ∨ r)
3. (p → q) ∧ r] → p → (q ∧ r)
4. (p → q) ∧ (q → ¬r) ∧ r] → ¬p
5. (p ∨ q) → (¬s ∧ d)] → p → (¬s ∧ d)
6. (p → q) ∧ (r → s)] → [(p ∧ r) → (q ∧ s)]
7. [p → (q → r)] → [(p ∧ q) → r]
7.3 Zadanie 3
Zapisz poniższy schemat wnioskowania za pomocą zmiennych logicznych. Określ
zmienne logiczne występujące w schemacie. Uzupełnij brakującą część schematu
wnioskowania. Oceń, czy uzupełniony przez Ciebie schemat wnioskowania jest
prawdziwy. Jeśli tak, udowodnij ten schemat stosując metodę założeniową.
1. Jeśli uczyłam(łem) się solidnie do egzaminu, to zdałam(łem) egzamin w
pierwszym terminie
..........................................
Nie uczyłam(łem) się solidnie do egzaminu
2. .........................................
Nie mam wyobraźni
Nie lubię czytać książek
3. Jeżeli lubię oglądać telewizję, to nie lubię czytać książek
Lubię czytać książki
............................................
4. Jeżeli nie jestem człowiekiem, to nie umiem czytać
Umiem czytać
............................................
5. ............................................
Lubię się opalać
Jeżeli lubię, gdy jest ciepło, to lubię lato i lubię się opalać
6. Jeżeli lubię, gdy jest ciepło, to lubię lato
Jeżeli lubię lato to lubię się opalać
..............................................
18
7. Jeżeli lubię, gdy jest ciepło, to lubię lato
Jeżeli lubię się opalać, to wracam z wakacji opalony
..................................................
8. Jeżeli nie polecę samolotem to będę spóźniony
Nie będę spóźniony
.............................................
9. Jeżeli są zaspy śnieżne to temperatura nie podnosi się powyżej 0
Jeżeli autobus nie przejedzie to temperatura nie podnosi się powyżej 0
Są zaspy śnieżne i autobus nie przejedzie
......................................................................
10. Jeżeli są zaspy śnieżne to autobus nie przejedzie
Są zaspy śnieżne lub temperatura nie podniesie się powyżej 0
........................................................
11. Oglądam telewizję i słucham radia
Nie oglądam telewizji i słucham radia
.........................................
Czytam książkę
19
8 Rachunek zdań II-go rzędu - Kwantyfikatory
Kwantyfikatory są to najzwyczajniejsze w świecie stale (oczywiście logiczne),
występujące sobie w (noszącym znamiona graficznego rozpisu sensu zdania) rachunku kwantyfikatorów, a oznaczane przez więcej niż wielu wytrawnych Logików w następujący sposób:
• kwantyfikator ogólny, zapisywany jako ∀, czytany jako: ”dla każdego...”
• kwantyfikator szczegółowy (egzystencialny), zapisywany jako ∃, czytany
jako: ”istnieje taki ..., że...”
NAZWY- są dowolne zmienne - pojedyncze rzeczy, występujące w zdaniu i oznaczamy je małymi literami w następujący sposób : ”x, y, z...”
PREDYKATY - są to zmienne - własności NAZW i relacje miedzy tymi NAZWAMI zachodzące. Oznaczamy je wielkimi literami: ”P, Q, R, S...”
Predykaty reprezentują w wyrażeniu rachunku kwantyfikatorów albo NAZWE
(zapisuje się to zawsze tak: P(x) ), albo tez relacje pomiędzy NAZWAMI (zapis
: P(x, y)).
SCHEMAT ZDANIOWY - jest to symboliczny zapis odzwierciedlający zawartość zdania, np.:
• ∀x P(x) - czytaj jako: ”Dla każdego x, x jest Ptakiem”
• ∃ y Q(y) - czytaj jako: ”Istnieje taki y, że y jest Kurą”
8.1 Przykład
Zdanie:”Kubuś widział Antykubusia, goniącego czas.”
Wypisujemy sobie zmienne nazwowe (NAZWY), którymi są zawsze tylko te
wszystkie podmioty (rzeczowniki) , w stosunku do których inne części zdania
(mogą nimi być także rzeczowniki w formie dopełnienia), pełnią funkcje opisowa:
x - Kubuś
y - Antykubuś
z - czas
Dalej powinnością nasza jest utworzenie zmiennych predykatowych (PREDYKATóW), którymi są zawsze:
1. informacje o występowaniu podmiotu w zdaniu (PREDYKATY JEDNOARGUMENTOWE - bo jedna zmienna w nawiasie);
2. te części zdania, które występują pomiędzy NAZWAMI, łącząc je ze sobą w spójną całość (PREDYKATY DWUARGUMENTOWE - bo dwie
zmienne w nawiasie): Obawa rodzaje występują zawsze w formie twierdzącej !
K(x) - x jest Kubusiem
A(y) - y jest Antykubusiem
C(z) - z jest czasem
20
Tych jest zawsze tyle, ile nazw znaleźliśmy w badanym zdaniu)
W(x, y) - x widział y
G(y, z) - y gonił z
(TYCH JEST O JEDEN MNIEJ, NIż ILOść NAZW W BADANYM ZDANIU)
3. następnie przekształćmy sobie nasze zdanie tak, aby przybrało formę ułatwiającą nam dopasowanie odpowiednich kwantyfikatorów :
”(Jeden) Kubuś widział (jednego) Antykubusia, goniącego (jeden) czas.”
4. Mamy teraz pewność, że:
• Kubuś jest jeden, wiec możemy powiedzieć : ”Istnieje taki x, że x
jest Kubusiem” i zapisać to zaraz w schemacie, używając w tym celu
MAłEGO kwantyfikatora.
• Antykubuś jest jeden, wiec możemy powiedzieć : ”Istnieje taki y , ze
y jest Antykubusiem” i zapisać to zaraz w schemacie, używając w
tym celu MAłEGO kwantyfikatora.
• czas jest jeden, wiec możemy powiedzieć: ”Istnieje taki z , ze z jest
czasem” i zapisać to zaraz w schemacie, używając w tym celu MAłEGO kwantyfikatora.
- przystępujemy wiec do zapisania naszego zdania w postaci schematu
kwantyfikatorowego :
∃x {K(x) ∧ ∃ y [A(y) ∧ W(x, y) ∧ ∃z (C(z) ∧ G(y, z)]}
ale po kolei...
∃x K(x)
czytaj jako: ”Istnieje taki x, ze x jest Kubusiem...”
∃x {K(x) ∧ ∃ y [A(y) . . .
czytaj jako: Istnieje taki x, ze x jest Kubusiem i istnieje taki y, ze y jest Antykubusiem...”
Teraz uwzględniamy stosunek panujący miedzy pierwsza i druga NAZWA,
pamiętając, żeby zastosować ku temu symbol koniunkcji, gdyż ostatnim wpisanym przez nas kwantyfikatorem był mały kwantyfikator
∃x {K(x) ∧ ∃ y [A(y) ∧ W(x, y) . . .
co czytamy jako: ”Istnieje taki x, ze x jest Kubusiem i istnieje taki y, ze y jest
Antykubusiem i x widział y...” Kolejny krok to konieczność przedstawienia w
schemacie kolejnego bohatera naszego zdania - czasu, który jest tu nierozłącznie
związany z Antykubusiem - to on figluje z nim. Pamiętamy oczywiście o symbolu
koniunkcji, łączącym istnienie tej NAZWY z tym, co dotąd napisaliśmy
∃x {K(x) ∧ ∃ y [A(y) ∧ W(x, y) ∧ ∃z (C(z) . . .
21
czytamy jako: ”Istnieje taki x, ze x jest Kubusiem i istnieje taki y, ze y jest Antykubusiem i x widział y i istnieje taki z, ze z jest czasem...” No i nie pozostało
nam nic innego, jak dopełnienie schematu relacja zachodząca pomiędzy Antykubusiem i czasem - ”y gonił z”, jak zwykle wpisując w odpowiednim miejscu
symbol koniunkcji, bo determinuje to mały kwantyfikator :
∃x {K(x) ∧ ∃ y [A(y) ∧ W(x, y) ∧ ∃z (C(z) ∧ G(y, z)]}
co czytamy jako: Istnieje taki x, ze x jest Kubusiem i istnieje taki y, ze y jest
Antykubusiem i x widział y i istnieje taki z, ze z jest czasem i y gonił z.”
”Kubuś widział Antykubusia, goniącego czas.”
[ ”(Jeden) Kubuś widział (jednego) Antykubusia, goniącego (jeden) czas.” ] x Kubuś
y - Antykubuś
z - czas
K(x) - x jest kubusiem
A(y) -y jest Antykubusiem
C(y) - z jest czasem
W(x, y) - x widział y
G(y, z) - y gonił z
∃x {K(x) ∧ ∃ y [A(y) ∧ W(x, y) ∧ ∃z (C(z) ∧ G(y, z)]}
”Istnieje taki x, ze x jest Kubusiem i istnieje taki y, ze y jest Antykubusiem i x
widział y i istnieje taki z, ze z jest czasem i y gonił z.”
8.2 Przykład 2
Tym razem dostaliśmy takie zdanie:
”Wszystkie misie nie zjedzą miodku, wyprodukowanego przez Człowieka .”
Wypisujemy zmienne nazwowe (NAZWY), którymi są zawsze te wszystkie podmioty (rzeczowniki) , w stosunku do których inne części zdania (mogą nimi być
także rzeczowniki w formie dopełnienia), pełnią funkcje opisowa
x - mis
y - miodek
z - Człowiek
Dalej tworzymy (na początku ”na dłoni”) zmienne predykatowe (PREDYKATY), którymi są zawsze:
1. informacje o występowaniu podmiotu w zdaniu (PREDYKATY JEDNOARGUMENTOWE - bo jedna zmienna w nawiasie) ;
2. te części zdania, które występują pomiędzy NAZWAMI, łącząc je ze sobą w
spójna całość (PREDYKATY DWUARGUMENTOWE - bo dwie zmienne
w nawiasie
M(x) - x jest misiem
UWAGA ! Mimo, ze w zdaniu są ”misie” - słowo informujące o zbiorowym charakterze występującej tu nazwy, my umieszczamy w predykacie ZAWSZE nazwę
22
w formie liczby pojedynczej : ”mis”. PAMIETAJ !
U(y) - y jest miodkiem
C(z) - z jest Człowiekiem
Z(x, y) - x zjada y
W(z, y) - z wyprodukował y
∀x {M(x) →v ∃ y [u(y) ∧ Z(x, y) ∧ ∃z (C(z) ∧ W(z, y)]}
Negacja jest konieczna, ponieważ w naszym zdaniu jest jednoznaczne zaprzeczenie temu, że istnieje jakiś miodek ludzkiej produkcji, który odważyłby się zjeść
wszystkie misie... po kolei... Ustaliliśmy, ze główną NAZWA w tym zdaniu jest
”mis”, bo mówi się tu, co jemu (właściwie im - mamy liczbę mnoga ), się przytrafia, wiec rozpoczynamy od napisania faktu, ze to, co tu dzieje się, dotyczy
każdego misa :
∀x {M(x) . . .
UWAGA! Czyta się to tak: ”Dla każdego x, x jest misiem...” PAMIETAJ ! Teraz
kolejna NAZWA, która jest wobec misia podrzędną
∀x {M(x) →v ∃ y [u(y) . . .
”Dla każdego x, x jest misiem, to NIE istnieje taki y, ze y jest miodkiem...” Teraz
relacja zachodząca miedzy pierwszą i drugą NAZWĄ, pamiętamy, żeby zastosować symbol koniunkcji, gdyż ostatnim wpisanym przez nas kwantyfikatorem
był mały kwantyfikator:
∀x {M(x) →v ∃ y [u(y) ∧ Z(x, y) . . .
Dla każdego x, x jest misiem, to NIE istnieje taki y, ze y jest miodkiem i x zjada
y...” Przedstawiamy w schemacie kolejnego bohatera naszego zdania - Człowieka, który jest tu nierozłącznie związany z miodkiem. Pamiętamy oczywiście o
symbolu koniunkcji, łączącym istnienie tej NAZWY z tym, co dotychczas napisaliśmy (ostatnio wpisaliśmy mały kwantyfikator):
∀x {M(x) →v ∃ y [u(y) ∧ Z(x, y) ∧ ∃z (C(z) . . .
”Dla każdego x, x jest misiem, to NIE istnieje taki y, ze y jest miodkiem i x
zjada y, i istnieje taki z, ze z jest Człowiekiem...” Dopełniamy schemat relacja zachodząca pomiędzy Człowiekiem i miodkiem - ”z wyprodukował y”, jak
zwykle wpisując w odpowiednim miejscu symbol koniunkcji, bo determinuje to
ostatni mały kwantyfikator :
∀x {M(x) →v ∃ y [u(y) ∧ Z(x, y) ∧ ∃z (C(z) ∧ W(z, y)]}
Dla każdego x, x jest misiem, to NIE istnieje taki y, ze y jest miodkiem i x zjada
y, i istnieje taki z, ze z jest Człowiekiem, i z wyprodukował y.” Podsumowując,
cala praca powinna wyglądać następująco : ”Wszystkie misie nie zjedzą miodku, wyprodukowanego przez Człowieka .” [ ”Dla każdego misia nie istnieje taki
23
(jeden) miodek, który nadawałby się do zjedzenia i zostałby wyprodukowany
przez (jednego) Człowieka .” ]
x - mis
y - miodek
z - Człowiek
M(x) - x jest misiem
U(y) - y jest miodkiem
C(z) - z jest Człowiekiem
Z(x, y) - x zjada y
W(z, y) - z wyprodukował y
∀x {M(x) →v ∃ y [u(y) ∧ Z(x, y) ∧ ∃z (C(z) ∧ W(z, y)]}
”Dla każdego x, jeżeli x jest misiem, to NIE istnieje taki y, ze y jest miodkiem
i x zjada y, i istnieje taki z, ze z jest Człowiekiem i z wyprodukował y.”
ćwiczenie
8.3 inne Przykłady - zadania do wykonania przez studentów
1. ”Istnieją Ludzie, którzy są Aniołami.” [ mówiąc w uproszczeniu: ”Istnieje
taka (przynajmniej jedna) istota, która jest jednocześnie Człowiekiem i
Aniołem.” ]
x - istota
C(x) - x jest Człowiekiem
A(x) - x jest Aniołem
∃x (C(x) ∧ A(x))
- Mały kwantyfikator, bo zdanie nie mówi o wszystkich Ludziach, ale o
niektórych z nich. - Koniunkcja, bo to nieodłączna towarzyszka małego
kwantyfikatora. - W obu nawiasach ”x”, bo w tym przypadku chodzi o
jedna i ta sama istotę, która jest jednocześnie Człowiekiem i Aniołem.
”Istnieje taki x, że x jest Człowiekiem i x jest Aniołem.”
2. ”Istnieją Ludzie, którzy nie są Aniołami.” [ mówiąc w uproszczeniu: ”Istnieje taka (przynajmniej jedna) istota, która jest Człowiekiem i nie jest
Aniołem.” ]
x - istota
C(x) - x jest Człowiekiem
A(x) - x jest Aniołem
∃x (C(x)∧ v A(x))
”Istnieje taki x, ze x jest Człowiekiem i x nie jest Aniołem.”
3. ”Wszyscy Ludzie są Aniołami.” [ mówiąc w uproszczeniu: ”Każda istota,
która jest Człowiekiem, jest jednocześnie Aniołem.” ]
x - istota
24
C(x) - x jest Człowiekiem
A(x) - x jest Aniołem
∀x (C(x) → A(x))
- Duży kwantyfikator, bo zdanie mówi o wszystkich Ludziach. - Implikacja,
bo to nieodłączna towarzyszka dużego kwantyfikatora. - W obu nawiasach
”x”, bo w tym przypadku chodzi o wszystkie i te same istoty, które są
jednocześnie ludźmi i Aniołami. ”Dla każdego x, jeżeli x jest Człowiekiem,
to x jest Aniołem.”
4. ”Żaden Człowiek nie jest Aniołem.” mówiąc w uproszczeniu:
• WARIANT I - ”Każda istota, która jeżeli jest Człowiekiem, to nie
jest Aniołem.”
• lub też: WARIANT II - ”Nie istnieje istota, która jest zarazem Człowiekiem i Aniołem.”
x - istota
C(x) - x jest Człowiekiem
A(x) - x jest Aniołem
(a) wariant I
∀x (C(x) →v A(x))
”Dla każdego x, jeżeli x jest Człowiekiem, to x nie jest Aniołem.”
(b) wariant II
v ∃x (C(x) ∧ A(x))
”Nie istnieje taki x, że x jest Człowiekiem i x jest Aniołem.”
5. ”Tylko Ludzie są Aniołami.”[ mówiąc w uproszczeniu: ”Każda istota, która jeśli jest Człowiekiem, to jest jednocześnie Aniołem.” ] x - istota
C(x) - x jest Człowiekiem
A(x) - x jest Aniołem
∀x (C(x) → A(x))
”Dla każdego x, jeżeli x jest Człowiekiem, to x jest Aniołem.”
6. ”Nie tylko Ludzie są Aniołami.” [ mówiąc w uproszczeniu: ”Istnieje taka
(przynajmniej jedna) istota, która nie jest Człowiekiem i jest Aniołem.” ]
x - istota
C(x) - x jest Człowiekiem
A(x) - x jest Aniołem
∃x (v C(x) ∧ A(x))
25
- Mały kwantyfikator, bo zdanie nie mówi o wszystkich istotach, ale o
niektórych z nich. - Koniunkcja, bo to nieodłączna towarzyszka małego
kwantyfikatora. - W obu nawiasach ”x”, bo w tym przypadku chodzi o
jedna i ta sama istotę, która NIE jest jednocześnie Człowiekiem, ale jest
Aniołem. Istnieje taki x, ze x nie jest Człowiekiem i x jest Aniołem.”
7. ”Każda Polka jest córka jakiejś Europejki.” [ mówiąc w uproszczeniu: ”Dla
każdej Polki istnieje taka (przynajmniej jedna) Europejka, dla której ona
jest córka.” ] x - Polka
y - Europejka
Z(x) - x jest Polką
Z(y) - y jest Europejką
C(x, y) - x jest córką y
∀x [Z(x) → ∃ y (Z(y) ∧ C(x, y))
- Duży kwantyfikator, bo w zdaniu chodzi o każda, bez wyjątku, Polkę. Implikacja, bo pobliskim kwantyfikatorem (z lewej str.), był duży kwantyfikator. - Następnie mały kwantyfikator, bo trzeba nam uwzględnić istnienie
w naszym zdaniu kolejnej NAZWY. - Koniunkcja, bo wyznacza to leżący
z lewej strony mały kwantyfikator.
”Dla każdego x, jeżeli x jest Polka, to istnieje taki y, ze y jest Europejka
i x jest córka y.”
8. ”Pewna Polka nie jest córką żadnej Europejki.” [ mówiąc w uproszczeniu:
”Istnieje taka Polka, ze nie istnieje inna (przynajmniej jedna) Europejka,
której ona jest córką.” ] x - Polka
y - Europejka
Z(x) - x jest Polką
Z(y) - y jest Europejką
C(x, y) - x jest córką y
∃x [Z(x)∧ v ∃ y (Z(y) ∧ C(x, y)]
Mały kwantyfikator, bo w zdaniu chodzi o jedna Polkę. - Koniunkcja, bo
najbliższym kwantyfikatorem (z lewej strony), był mały kwantyfikator. Drugi mały kwantyfikator, bo trzeba nam uwzględnić NIE istnienie nawet
jednej Europejki, która byłaby matka Bohaterki. - Koniunkcja, bo wyznacza to lezący z lewej strony mały kwantyfikator. ”Istnieje taki x, ze x jest
Polką, i nie istnieje taki y, że y jest Europejką i x jest córką y.”
9. ”Pewna Europejka nie ma córki pośród Polek.” [ mówiąc w uproszczeniu:
”Istnieje taka Europejka, że każda Polka nie jest jej córką.” ] x - Europejka
y - Polka
Z(x) - x jest Europejką
Z(y) - y jest Polką
26
C(y, x) - y jest córką x
∃x [Z(x) ∧ ∃ y (Z(y) →v C(x, y)]
Istnieje taki x, że x jest Europejką, i dla każdego y, jeżeli y jest Polką, to
y nie jest córką x.”
10. ”Pewien Mędrzec nie obejrzał żadnego filmu.” [ mówiąc w uproszczeniu:
”Istnieje taki Mędrzec, który nie obejrzał żadnego z wszystkich filmów.” ]
x - Mędrzec
y - film
M(x) - x jest mędrcem
F(y) - y jest filmem
O(x, y) - x obejrzał y
∃x [M(x) ∧ ∀ y (F(y) →v O(x, y)]
”Istnieje taki x, że x jest Mędrcem, i dla każdego y, jeżeli y jest filmem,
to x nie obejrzał y.”
11. ”Pewien Człowiek nie ma Sąsiada.” [ mówiąc w uproszczeniu: ”Istnieje taki Człowiek, który nie ma żadnego Sąsiada.” ] W schemacie sformułujemy
część zdania tak :”nie istnieje (nawet jeden) Sąsiad.” x - Człowiek
y - Człowiek
C(x) - x jest człowiekiem
C(y) - y jest Człowiekiem
S(y, x) - y jest Sąsiadem x
∃x [C(x)∧ v ∃ y (C(y) ∧ S(y, x)]
”Istnieje taki x, że x jest Człowiekiem, i nie istnieje taki y, że y jest Człowiekiem i y jest Sąsiadem x.”
12. ”Wszyscy Ludzie są Sąsiadami wszystkich.” [ mówiąc w uproszczeniu: ”Każdy Człowiek, jest Sąsiadem każdego Człowieka.” ] x - Człowiek
y - Człowiek
C(x) - x jest Człowiekiem
C(y) - y jest Człowiekiem
S(y, x) - y jest Sąsiadem x
∀x [C(x) → ∀ y (C(y) → S(y, x)]
”Dla każdego x, jeśli x jest Człowiekiem, to każdy y, jeżeli y jest Człowiekiem, to y jest Sąsiadem x.”
13. ”Nikt nie ma Sąsiada.” [ mówiąc w uproszczeniu: ”Nie istnieje taki Człowiek, który nie ma żadnego Sąsiada.” ] x - Człowiek
y - Człowiek
C(x) - x jest Człowiekiem
27
C(y) - y jest Człowiekiem
S(y, x) - y jest Sąsiadem x
v ∃x [C(x) ∧ ∃ y (C(y)∧ v S(y, x)]
Nie istnieje taki x, że x jest Człowiekiem, i nie istnieje taki y, że y jest
Człowiekiem i y nie jest Sąsiadem x.”
14. ”Wszyscy przeczytali jakaś książkę.” [ mówiąc w uproszczeniu: ”Każdy
Człowiek, przeczytał (przynajmniej jedna) książkę.” ] x - Człowiek
y - książka
C(x) - x jest człowiekiem
F(y) - y jest książką
O(x, y) - x przeczytał y
∀x [C(x) → ∃ y (F(y) ∧ O(x, y)]
”Dla każdego x, jeżeli x jest Człowiekiem, to istnieje taki y, że y jest
książką i x przeczytał y.”
15. ”Jest film, którego nie obejrzeli wszyscy Ludzie.” [ mówiąc w uproszczeniu: ”Istnieje taki film, którego nie obejrzał każdy Człowiek.” ] x - film
y - Człowiek
F(x) - x jest filmem
C(y) - y jest człowiekiem
O(y, x) - y obejrzał x
∃x [F(x) ∧ ∀ y (C(y) →v O(y, x)]
”Istnieje taki x, że x jest filmem, i dla każdego y, jeżeli y jest Człowiekiem,
to y nie obejrzał x.”
16. ”Żaden z nas nie przeczytał wszystkich książek.” [ mówiąc w uproszczeniu: ”Każdy Człowiek nie przeczytał każdej książki.” ] x - Człowiek
y - książka
C(x) - x jest Człowiekiem
F(y) - y jest książką
O(x, y) - x przeczytał y
∀x [C(x) → ∀ y (F(y) →v O(x, y)]
”Dla każdego x, jeśli x jest Człowiekiem, to każdy y, jeżeli y jest książką,
to x nie przeczytał y.”
17. ”Wszyscy Naukowcy maja poglądy, z którymi wszyscy Naukowcy się nie zgadzają.”
[ mówiąc w uproszczeniu: ”Każdy Naukowiec ma (przynajmniej jeden) pogląd, z którym inni (gazdy) Naukowcy się nie zgadzają.” ] x - Naukowiec
y - pogląd
z - Naukowiec
28
N(x) - x jest Naukowcem
P(y) - y jest poglądem
N(z) - z jest Naukowcem
M(x, y) - x ma y
Z(z, y) - z zgadza się z y
∀x {N(x) → ∃ y [P(y) ∧ M(x, y) ∧ ∀z (N(z) →v Z(z, y)]}
co czytamy jako: ”Dla każdego x, jeśli x jest Naukowcem, to istnieje taki
y, że y jest poglądem i x ma y, i dla każdego z, jeżeli z jest Naukowcem, to z nie zgadza się z y.” - Duży kwantyfikator, bo w zdaniu chodzi o
każdego Naukowca. - Mały kwantyfikator, bo uwzględniamy istnienie przynajmniej jednego poglądu, który należy do wszystkich Naukowców (każdy
ma oczywiście swój własny). - Koniunkcja, bo wyznacza to leżący z lewej
strony mały kwantyfikator. - Duży kwantyfikator, bo informujemy o tym,
ze wszyscy Naukowcy, jak jeden mąż, nie zgadzają się z czymś, co twierdzi
na jakiś temat każdy (inny), z nich. - Implikacja (po dużym kwantyfikatorze), bo jeśli z jest Naukowcem, to wg naszego zdania, ”w genach nosi
brak akceptacji dla choć jednego sadu innych Naukowców.”
18. ”Pewni Naukowcy maja poglądy, z którymi żaden Człowiek się nie zgadza.”
[ czyli: ”Istnieje taki (przynajmniej) jeden Naukowiec, który ma (przynajmniej) jeden pogląd, z którym ani jeden Człowiek się nie zgadza.” ]
x - Naukowiec
y - pogląd
z - Człowiek
N(x) - x jest Naukowcem
P(y) - y jest poglądem
C(z) - z jest Naukowcem
M(x, y) - x ma y
Z(z, y) - z zgadza się z y.
∃x {N(x) ∧ ∃ y [P(y) ∧ M(x, y)∧ v ∃z (C(z)∧ v Z(z, y)]}
co czytamy jako: ”Istnieje taki x, ze x jest Naukowcem i istnieje taki y,
ze y jest poglądem, i x ma y, i nie istnieje taki z, ze z jest Człowiekiem, i
z zgadza się z y.” - Mały kwantyfikator, bo w zdaniu chodzi o przynajmniej jednego Naukowca. - Mały kwantyfikator, bo uwzględniamy istnienie
przynajmniej jednego poglądu, który należy do tego jednego Naukowca.
- Negacja małego kwantyfikatora, bo ”NIE istnieje pod Słońcem nawet
jedna Osoba, która z tym konkretnym poglądem zgodziłaby się”.
19. ”Pewien Człowiek ma przekonania, z którymi identyfikują się wszyscy Ludzie.”
[ mówiąc w uproszczeniu: ”Istnieje taki Człowiek, który ma (przynajmniej
jedno) przekonanie, z którym identyfikuje się każdy Człowiek.”]
x - Człowiek
y - przekonanie
29
z - Człowiek
C(x) - x jest Człowiekiem
P(y) - y jest przekonaniem
C(z) - z jest Człowiekiem
M(x, y) - x ma y
I(z, x) - z identyfikuje się z y
∃x {C(x) ∧ ∃ y [P(y) ∧ M(x, y) ∧ ∀z (C(z) → I(z, y)]}
co czytamy jako: ”Istnieje taki x, ze x jest Człowiekiem, i istnieje taki y,
ze y jest przekonaniem, i x ma y, i dla każdego z, jeżeli z jest Człowiekiem,
to z identyfikuje się z y.”
20. Zdanie: ”Są ubrania stworzone przez Dyktatorów mody
, którzy nie są pozbawieni zmysłu użytkowości.” [ inaczej mówiąc: ”Istnieje takie (przynajmniej) jedno ubranie, które zostało stworzone przez (przynajmniej) jednego Dyktatora mody, którym nie jest pozbawiony (jednego)
zmysłu użytkowości.”]
x - ubranie
y - Dyktator mody
z - cecha
U(x) - x jest ubraniem
D(y) - y jest Dyktatorem mody
P(z) - z jest zmysłem użytkowości
K(y, x) - y stworzył x
N(y, z) - y jest pozbawiony z
∃x {U(x) ∧ ∃ y [D(y) ∧ K(y, x)∧ v ∃z (P(z) ∧ N(y, z)]}
co czytamy jako ”Istnieje taki x, ze x jest ubraniem i istnieje taki y, ze
y jest Dyktatorem mody, i y stworzył x, i nie istnieje taki z, ze z jest
zmysłem użytkowości, i y jest pozbawiony z.”
21. Zdanie: ”Żaden Człowiek nie zniszczy bezzasadnie Istoty, która ma w sobie wszystkie pierwiastki życia.” [czyli: ”Nie istnieje taki Człowiek, który
zniszczy bezzasadnie (jedną) Istotę, która ma w sobie każdy pierwiastek życia.”]
x - Człowiek
y - Istota
z - symptom
C(x) - x jest Człowiekiem
I(y) - y jest Istota
P(z) - z jest pierwiastkiem życia
Z(x, y) - x zniszczy bezzasadnie y
M(y, z) - y ma w sobie z
v ∃x {C(x) ∧ ∃ y [I(y) ∧ Z(x, y) ∧ ∀z (P(z) → M(y, z)]}
30
co czytam jako: ”Nie istnieje taki x, ze x jest Człowiekiem i istnieje taki
y, ze y jest Istota, i x zniszczy bezzasadnie y, i dla każdego z, jeżeli z jest
pierwiastkiem życia, to y ma w sobie z.”
31
8.4 Ćwiczenia z rachunku kwantyfikatowów
Zapisywanie zdań języka polskiego w języku kwantyfikatorowym:
1. Jakiś przedmiot jest zielony.
2. Jakiś Polak jest bogaty.
3. Jakiś Polak jest przystojny i bogaty.
4. Jakiś Polak nie jest bogaty.
5. Jan zna jakiegoś Niemca.
6. Jan nie zna jakiegoś Niemca.
7. Jakiś Polak zna jakiegoś Niemca.
8. Jakiś Polak nie zna jakiegoś Niemca.
9. Żaden Polak nie jest bogaty.
10. Żaden Polak nie zna żadnego Niemca.
11. Jan nie zna żadnego Niemca.
12. Jakiś Polak nie zna żadnego Niemca.
13. Każdy Polak jest bogaty.
14. Każdy Polak zna jakiegoś Niemca.
15. Każdy Polak jest przystojny lub bogaty.
16. Jan zna każdego Niemca.
17. Każdy Polak nie zna każdego Niemca.
18. Każdy Polak zna jakiegoś Niemca.
19. Każdy Polak nie zna żadnego Niemca.
32
9 Prolog - Programming In Logic
Należy do klasy języków deklaratywnych, gdzie opisuje się rozwiązywany problem, a nie tak jak przy językach imperatywnych (proceduralnych) - w których
wskazuje się algorytm rozwiązania problemu. Dzięki zautomatyzowaniu procesu
dowodzenia twierdzeń logicznych, a szczególnie dzięki opracowaniu przez Robinsona w 1965 roku tzw. zasady rezolucji - stało się możliwe automatyczne
wywnioskowania rozwiązania na podstawie zbioru formuł logicznych opisujących problem.
9.1 Składnia
Termy (wyrażenia)- opis obiektów np.: Para(Jacek, Agatka)
Para - to dwuargumentowy funktor, spinający dwa termy proste: Jacek i Agatka
w jeden term złożony: Para(Jacek, Agatka)
9.2 Unifikacja
W termach możliwe są zmienne. Zmiennej w termie odpowiada dowolny obiekt.
Pod zmienne można podstawiać inne termy. Unifikacja 2 termów to działanie
polegające na znalezieniu takich podstawień za zmienne w termach, aby po ich
wykonaniu termy stały się identyczne. Unifikacja jeśli się powiedzie to wykona
się podstawienie. Jeśli się nie powiedzie, to jest odpowiedź : ”niepowodzenie”
Unifikacja pozwala rozkładać termy złożone na prostsze wyrażenia.
Para(Jacek, Agatka) = para(X, Y)
Programowanie w prologu składa się z:
1. deklarowania Faktów dotyczących obiektów i związkow między nimi.
2. Definiowania Reguł dotyczyczących obiektów i związków między nimi.
3. Zadawania pytań o obiekty i związki między nimi.
Przykład nr 1:
Lubi(Jarek, ryby)
Lubi(Jarek, Maria)
Lubi(Maria, ksiazka)
Lubi(Jan, ksiazka)
Lubi(Jan, Francja)
Teraz gdybyśmy chcieli wywnioskować z tych faktów czy Jarek lubi pieniądze:
? − lubi(Jarek, pienidze)
Odp Prologu: no
? − lubi(Maria, Jarek)
Odp Prologu: no
? − lubi(Jarek, Maria)
Odp Prologu: yes
33
Przykład :
Lubi(Jan, kwiaty)
Lubi(Jan, Maria)
Lubi(Pawel, Maria)
Teraz gdybyśmy chcieli wywnioskować z tych faktów co lubi Jan?
PYTANIE:
? − lubi(Jan, X)
Odp Prologu:
X = kwiaty
(zmienna X jest odtąd UKONKRETNIONA !)
PYTANIE:
? − lubi(x, Maria)
Odp Prologu:
X = Jan;
X = Pawel;
No;
co oznacza ze nie ma już więcej odpowiedzi możliwych !
KONIUNKCJE:
Przykład :
Lubi(Maria, czekolada)
Lubi(Maria, wino)
Lubi(Jan, wino)
Lubi(Jan, Maria)
Wówczas:
Pytanie:
? − lubi(Jan, Maria), lubi(Maria, Jan)
Odp Prologu: no;
Pytanie:
? − lubi(Maria, X), lubi(Jan, X)
czyli czy istnieje coś co jednocześnie lubią i Maria i Jan Odp Prologu:
X = wino;
no;
REGUŁY:
Jan lubi każdego kto lubi wino
Lubi(Jan, X) : −Lubi(X, wino).
Jan lubi kobiety, które lubią wino
Lubi(Jan, X) : −Kobieta(X), Lubi(X, wino).
9.3 Przykład nr 2: ”Rozkład lotów”
2 predykaty są dane:
Rejsy(skąd, dokąd, odlot, przylot)
(wyraża dostępne loty między miastami USA)
34
Połączenie(skąd, dokąd, odlot, przylot)
(znajduje połączenia pośrednie i bezpośrednie, ale na każdą przesiadkę rezerwuje minimum godzinę między przylotem a odlotem.)
Dane są:
Re jsy(SF, DEN, 930, 1230)
Re jsy(SF, DAL, 900, 1430)
Re jsy(DEN, CHI, 1500, 1800)
Re jsy(DEN, DAL, 1400, 1700)
Re jsy(DAL, CHI, 1530, 1730)
Re jsy(CHI, NY, 1500, 1930)
Re jsy(CHI, NY, 1900, 2200)
Re jsy(CHI, NY, 1830, 2130)
Polaczenie(X, Y, O, P) : −rejsy(X, Y, O, P)
Polaczenie(X, Y, O, P) : −rejsy(X, Z, O, T1), Polaczenie(Z, Y, T2, P), T2 >= T1 + 100.
Teraz w celu znalezienia połączeń z San Francisco (SF) do Chicago (CHI)
zadajemy następujące pytanie:
? − Polaczenie(SF, CHI, Odlot, Przylot).
A prolog odpowiada:
Odlot = 930, Przylot = 1800;
Odlot = 900, Przylot = 1730;
No.
Natomiast jeśli chcemy wylecieć z SF do NY po godzinie 900, to możemy
znaleźć odpowiednie połączenie zadając pytanie:
? − polaczenie(SF, NY, Odlot, Przylot), Odlot > 900.
Wówczas Prolog odpowie:
Odlot = 930, Przylot = 2200;
No.
9.4 Przykład nr 3 ”Windsor”
W Prolog’u zapiszemy to następująco:
male(james1).
male(charles1).
male(charles2).
male(james2).
male(george1).
f emale(catherine).
f emale(elizabeth).
f emale(sophia).
parent(charles1, james1).
parent(elizabeth, james1).
35
parent(charles2, charles1).
parent(catherine, charles1).
parent(james2, charles1).
parent(sophia, elizabeth).
parent(george1, sophia).
Teraz możliwe jest zdefiniowanie kilku pytań:
Was George I the parent of Charles I?
Query: parent(charles1, george1).
Who was Charles I’s parent?
Query: parent(charles1, Parent).
who were the children of Charles I?
Query: parent(Child, charles1).
Spróbuj dodać do programu następujące reguły i sprawdź rezultat:
• M is the mother of P if she is a parent of P and is female
• F is the father of P if he is a parent of P and is male
• X is a sibling of Y if they both have the same parent.
9.5 Przykład nr 4 - ”student”
Przypuśćmy, że mamy następujące zdania w języku PROLOG:
• teaches(dr f red, history).
• teaches(dr f red, english).
36
• teaches(dr f red, drama).
• teaches(dr f iona, physics)
• studies(alice, english).
• studies(angus, english).
• studies(amelia, drama).
• studies(alex, physics).
Roważmy następujące pytania i odpowiedzi na nie:
• ? − teaches(dr f red, Course), studies(Student, Course).
• odpowiedź:
–
–
–
–
–
Course = english
Student = alice ;
Course = english
Student = angus ;
Course = drama
– Student = amelia ;
– No
• ? − teaches(dr f red, Course), !, studies(Student, Course).
• odpowiedź:
– No
• ? − teaches(dr f red, Course), studies(Student, Course), !.
– Course = english
– Student = alice ;
– No
• ?−!, teaches(dr f red, Course), studies(Student, Course).
• odpowiedź:
–
–
–
–
–
–
–
Course = english
Student = alice ;
Course = english
Student = angus ;
Course = drama
Student = amelia ;
No
37
9.6 Przykład nr 5 - ”Windsor cd.”
Rozważmy zdania:
• born(charles, elizabeth2, philip).
• born(anne, elizabeth2, philip).
• born(andrew, elizabeth2, philip).
• born(edward, elizabeth2, philip).
• born(diana, f rances, edwardSpencer).
• born(william, diana, charles).
• born(henry, diana, charles).
Rozważmy więc zapytania:
• ?born(S, elizabeth2, Y)andborn(G, M, S).
• odpowiedź:?
Inne zdania:
• parents(william, diana, charles).
• parents(henry, diana, charles).
• parents(charles, elizabeth, philip).
• parents(diana, f rances, edward).
• parents(anne, elizabeth, philip).
• parents(andrew, elizabeth, philip).
• parents(edwardW, elizabeth, philip).
• married(diana, charles).
• married(elizabeth, philip).
• married( f rances, edward).
• married(anne, mark).
• oraz reguły:
• parent(C, M) <= parents(C, M, D).
• parent(C, D) <= parents(C, M, D).
• sibling(X, Y) <= parents(X, M, D)andparents(Y, M, D).{NB.sibling(X, X)}
38
• aORuDirect(C, A) <= parent(C, P)andsibling(P, A).
• aORuMarr(C, A) <= aORuDirect(C, X)andmarried(X, A).
• aORuMarr(C, A) <= aORuDirect(C, X)andmarried(A, X).
• aORu(C, A) <= aORuDirect(C, A).
• aORu(C, A) <= aORuMarr(C, A).
Jaka więc będzie odpowiedź na pytanie: ?aORu(william, A). ? {TheAunt/UncleRelation.}
9.7 Przykład nr 6 - prosty przykład
Rozważmy zdania:
• bachelor(P) : −male(P), not(married(P)).
• male(henry).
• male(tom).
• married(tom).
Wówczas:
• ? − bachelor(henry).
• odpowiedź: yes
• ? − bachelor(tom).
• odpowiedź: no
• ? − bachelor(Who).
• odpowiedź: Who = henry;
no
• ? − not(married(Who)).
• odpowiedź: no.
39

Podobne dokumenty