Rachunek zdań i predykatów

Podobne dokumenty
Rachunek zdań i predykatów

Rachunek zdań i predykatów

Rachunek zdań i predykatów

Systemy ekspertowe : predykaty

Rachunek zdań I i II rzędu

Prolog - Programming In Logic

Np. Olsztyn leży nad Łyną - zdanie prawdziwe, wartość logiczna 1 4 jest większe od 5 - zdanie fałszywe, wartość logiczna 0

0.1. Logika podstawowe pojęcia: zdania i funktory, reguły wnioskowania, zmienne zdaniowe, rachunek zdań.

MATEMATYKA DYSKRETNA, PODSTAWY LOGIKI I TEORII MNOGOŚCI

Rachunek zdań I i II rzędu

Logika formalna wprowadzenie. Ponieważ punkty 10.i 12. nie były omawiane na zajęciach, dlatego można je przeczytać fakultatywnie.

Elementy logiki. Wojciech Buszkowski Wydział Matematyki i Informatyki UAM Zakład Teorii Obliczeń

Drzewa Semantyczne w KRZ

Ziemia obraca się wokół Księżyca, bo posiadając odpowiednią wiedzę można stwierdzić, czy są prawdziwe, czy fałszywe. Zdaniami nie są wypowiedzi:

Przykłady zdań w matematyce. Jeśli a 2 + b 2 = c 2, to trójkąt o bokach długości a, b, c jest prostokątny (a, b, c oznaczają dane liczby dodatnie),

Uwagi wprowadzajace do reguł wnioskowania w systemie tabel analitycznych logiki pierwszego rzędu

LOGIKA Dedukcja Naturalna

LOGIKA I TEORIA ZBIORÓW

Lekcja 3: Elementy logiki - Rachunek zdań

Adam Meissner.

JEZYKOZNAWSTWO. I NAUKI O INFORMACJI, ROK I Logika Matematyczna: egzamin pisemny 18 czerwca Imię i Nazwisko:... I

5. OKREŚLANIE WARTOŚCI LOGICZNEJ ZDAŃ ZŁOŻONYCH

Programowanie w logice

Wstęp do logiki. Klasyczny Rachunek Zdań II

1. Wstęp do logiki. Matematyka jest nauką dedukcyjną. Nowe pojęcia definiujemy za pomocą pojęć pierwotnych lub pojęć uprzednio wprowadzonych.

Matematyka ETId Elementy logiki

JEZYKOZNAWSTWO. I NAUKI O INFORMACJI, ROK I Logika Matematyczna: egzamin pisemny 29 czerwca Imię i Nazwisko:...

JEZYKOZNAWSTWO. I NAUKI O INFORMACJI, ROK I Logika Matematyczna: egzamin pisemny 11 czerwca Imię i Nazwisko:... FIGLARNE POZNANIANKI

Andrzej Wiśniewski Logika II. Materiały do wykładu dla studentów kognitywistyki

NOWE ODKRYCIA W KLASYCZNEJ LOGICE?

Imię i nazwisko:... OBROŃCY PRAWDY

Wykład 11b. System aksjomatyczny Klasycznego Rachunku Predykatów. Aksjomaty i reguły inferencyjne

Lista 1 (elementy logiki)

Tautologia (wyrażenie uniwersalnie prawdziwe - prawo logiczne)

Wprowadzenie do logiki Zdania, cz. III Język Klasycznego Rachunku Predykatów

Rachunek logiczny. 1. Język rachunku logicznego.

Elementy logiki matematycznej

Myślenie w celu zdobycia wiedzy = poznawanie. Myślenie z udziałem rozumu = myślenie racjonalne. Myślenie racjonalne logiczne statystyczne

Michał Lipnicki (UAM) Logika 11 stycznia / 20

Rachunek zdań I rzędu Aksjomaty rachunku zdań, tautologie Schematy rachunku zdań Dowodzenie poprawności Metoda zerojedynkowa Skrócona metoda

Język rachunku predykatów Formuły rachunku predykatów Formuły spełnialne i prawdziwe Dowody założeniowe. 1 Zmienne x, y, z...

Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki. Wykłady 12 i 13. Dowód i dowodzenie w KRP. Tezy KRP

ĆWICZENIE 2. DEF. Mówimy, że formuła A wynika logicznie z formuł wartościowanie w, takie że w A. A,, A w KRZ, jeżeli nie istnieje

Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki. Wykłady 7 i 8. Aksjomatyczne ujęcie Klasycznego Rachunku Zdań

Zagadnienia podstawowe dotyczące metod formalnych w informatyce

Logika. Michał Lipnicki. 15 stycznia Zakład Logiki Stosowanej UAM. Michał Lipnicki () Logika 15 stycznia / 37

Wybierz cztery z poniższych pięciu zadań. Poprawne rozwiazanie dwóch zadań oznacza zdany egzamin.

Podstawowe Pojęcia. Semantyczne KRZ

Wykład 6. Reguły inferencyjne systemu aksjomatycznego Klasycznego Rachunku Zdań

Zastosowanie logiki matematycznej w procesie weryfikacji wymagań oprogramowania

Logika Stosowana. Wykład 1 - Logika zdaniowa. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017

Rachunek zdań. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Dalszy ciąg rachunku zdań

Indukcja matematyczna

Logika pragmatyczna. Logika pragmatyczna. Kontakt: Zaliczenie:

Wstęp do logiki. Klasyczny Rachunek Predykatów I

Jest to zasadniczo powtórka ze szkoły średniej, być może z niektórymi rzeczami nowymi.

Konsekwencja logiczna

Podstawy Sztucznej Inteligencji (PSZT)

Logika pragmatyczna dla inżynierów

Semantyka rachunku predykatów

Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu.

0. ELEMENTY LOGIKI. ALGEBRA BOOLE A

Rachunek zdao i logika matematyczna

Dowody założeniowe w KRZ

Klasyczny rachunek predykatów

Egzamin z logiki i teorii mnogości, rozwiązania zadań

III rok kognitywistyki UAM,

Maciej Grzesiak Instytut Matematyki Politechniki Poznańskiej. Elementy logiki

4 Klasyczny rachunek zdań

I. Podstawowe pojęcia i oznaczenia logiczne i mnogościowe. Elementy teorii liczb rzeczywistych.

(g) (p q) [(p q) p]; (h) p [( p q) ( p q)]; (i) [p ( p q)]; (j) p [( q q) r]; (k) [(p q) (q p)] (p q); (l) [(p q) (r s)] [(p s) (q r)];

LOGIKA MATEMATYCZNA. Poziom podstawowy. Zadanie 2 (4 pkt.) Jeśli liczbę 3 wstawisz w miejsce x, to które zdanie będzie prawdziwe:

RACHUNEK ZDAŃ 7. Dla każdej tautologii w formie implikacji, której poprzednik również jest tautologią, następnik także jest tautologią.

Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki. Wykład 10. Twierdzenie o pełności systemu aksjomatycznego KRZ

Kultura logiczna Klasyczny rachunek zdań 1/2

Laboratorium przedmiotu Paradygmaty Programowania

Paradygmaty dowodzenia

Wstęp do logiki. Klasyczny Rachunek Zdań III

LOGIKA Klasyczny Rachunek Zdań

Wykład 1. Informatyka Stosowana. 3 października Informatyka Stosowana Wykład 1 3 października / 26

Klasyczny rachunek zdań 1/2

Reguły gry zaliczenie przedmiotu wymaga zdania dwóch testów, z logiki (za ok. 5 tygodni) i z filozofii (w sesji); warunkiem koniecznym podejścia do

Metody dowodzenia twierdzeń i automatyzacja rozumowań Systemy aksjomatyczne I

Elementy logiki i teorii mnogości

Kultura logiczna Klasyczny rachunek zdań 2/2

1 Podstawowe oznaczenia

Logika Matematyczna (2,3)

Logika Matematyczna. Zadania Egzaminacyjne, 2007

Andrzej Wiśniewski Logika II. Materiały do wykładu dla studentów kognitywistyki. Wykład 14. Wprowadzenie do logiki intuicjonistycznej

Rachunek zdań. Zdanie w sensie logicznym jest to wyraŝenie jednoznacznie stwierdzające, na gruncie reguł danego języka, iŝ tak a

SZTUCZNA INTELIGENCJA

Predykat. Matematyka Dyskretna, Podstawy Logiki i Teorii Mnogości Barbara Głut

vf(c) =, vf(ft 1... t n )=vf(t 1 )... vf(t n ).

Logika. Michał Lipnicki. 18 listopada Zakład Logiki Stosowanej UAM. Michał Lipnicki Logika 18 listopada / 1

Wykład 2. Informatyka Stosowana. 8 października 2018, M. A-B. Informatyka Stosowana Wykład 2 8 października 2018, M. A-B 1 / 41

Elementy logiki Klasyczny rachunek predykatów

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.

8. SKRÓCONA METODA ZERO-JEDYNKOWA

Transkrypt:

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 y x y x y x x y 0 0 0 0 1 1 0 1 1 0 1 1 1 0 1 0 0 0 1 1 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) (q r)) (p r) krok 1 0 1 1 1 2 1 0 3 1 0 4?? 5 1 0 6 1 1! 7 1 8 1 1! 9 1 1! 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 NA- ZWAMI 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 (PREDY- KATóW), którymi są zawsze: 1. informacje o występowaniu podmiotu w zdaniu (PREDYKATY JEDNO- ARGUMENTOWE - 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 ZDA- NIU) 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 : ale po kolei... x {K(x) y [A(y) W(x, y) z (C(z) G(y, z)]} 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 (PREDYKA- TY), którymi są zawsze: 1. informacje o występowaniu podmiotu w zdaniu (PREDYKATY JEDNO- ARGUMENTOWE - 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) 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) 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) 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) 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) 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) 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) 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) A(x)) Dla każdego x, jeżeli x jest Człowiekiem, to x nie jest Aniołem. (b) wariant II 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 ( 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) 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) 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) 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) 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 x [C(x) y (C(y) 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) 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) 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) 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) z (C(z) 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) 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 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ą: Rejsy(SF, DEN, 930, 1230) Rejsy(SF, DAL, 900, 1430) Rejsy(DEN, CHI, 1500, 1800) Rejsy(DEN, DAL, 1400, 1700) Rejsy(DAL, CHI, 1530, 1730) Rejsy(CHI, NY, 1500, 1930) Rejsy(CHI, NY, 1900, 2200) Rejsy(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