Rachunek zdań i predykatów

Transkrypt

Rachunek zdań i predykatów
Rachunek zdań i predykatów
Agnieszka Nowak
7 kwietnia 2008
1 Rachunek zdań
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
1
2 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. 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.
2.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),
2
• 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.
2.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
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.
3
2.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
2.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)
• wyznaczania interpretacji przy których formuła jest prawdziwa lub fałszywa.
3 Zadania
3.1 Zadanie 1
Udowodnić metodą skróconą zerojedynkową następujące schematy logiczne:
4
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
subsectionZadanie 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]
3.2 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
5
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ć
..............................................
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ę
6
4 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ą”
4.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
7
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) . . .
8
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.”
4.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ę
9
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
10
(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
4.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
11
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))
12
- 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ą
13
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
14
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
15
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
16
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)]}
17
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.”
18
4.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.
19
5 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.
5.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)
5.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
20
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).
5.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)
21
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.
5.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).
22
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.
5.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).
23
• 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
24
5.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)}
25
• 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.}
5.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.
26

Podobne dokumenty