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