x - MEiL - Politechnika Warszawska
Transkrypt
x - MEiL - Politechnika Warszawska
POLITECHNIKA WARSZAWSKA WYDZIAŁ MECHANICZNY ENERGETYKI I LOTNICTWA MEL WPROWADZENIE DO SZTUCZNEJ INTELIGENCJI NS 586 Dr inż. Franciszek Dul © F.A. Dul 2013 9. WNIOSKOWANIE W LOGICE PIERWSZEGO RZĘDU © F.A. Dul 2013 Wnioskowanie w logice pierwszego rzędu Pokażemy, w jaki sposób uogólnić algorytmy wnioskowania rachunku zdań tak, aby wnioskować w logice pierwszego rzędu. © F.A. Dul 2013 Jak wnioskować z kwantyfikatorami... W języku logiki pierwszego rzędu można opisać świat w sposób ścisły, a zarazem bardzo zwięzły. Zwięzłość opisu osiąga się poprzez użycie obiektów, relacji między nimi, funkcji oraz kwantyfikatorów. Występowanie kwantyfikatorów uniemożliwia jednak prowadzenie wnioskowania w taki sposób, jak w rachunku zdań. Zdania zapisane w języku logiki pierwszego rzędu muszą więc najpierw być przekształcone do postaci umożliwiającej wnioskowanie: - do postaci rachunku zdań, albo - do postaci które umożliwiają wnioskowanie bezpośrednie w FOL za pomocą przekształconych metod wnioskowania. © F.A. Dul 2013 9.1. Sprowadzenie wnioskowania logiki pierwszego rzędu do wnioskowania w rachunku zdań Idea: należy zastąpić zdania kwantyfikowne przez zbiór zdań bez kwantyfikatorów. Zbiór zdań zdekwantyfikowanych powinien być równoważny logicznie wyjściowemu zbiorowi zdań kwantyfikowanych lub co najmniej spełnialny (t.j. prawdziwy dla pewnych modeli). • Eliminacja kwantyfikatorów ogólnych Zastąpienie zmiennej przez symbol podstawowy (ground term) • Eliminacja kwantyfikatorów szczegółowych skolemizacja © F.A. Dul 2013 9.1. Sprowadzenie FOL do PL Podstawienie ogólne (universal instantiation, UI) Subst(θ,α) = podstawienie wyrażenia θ do zdania α . Każde podstawienie do zdania z kwantyfikatorem ogólnym pewnego wyrażenia za zmienną kwantyfikowaną wynika z tego zdania, tj. ∀v α(v) ————————— Subst( {v/g}, α ) Za zmienną v podstawiamy wyrażenie g Zachodzi to dla każdej zmiennej v i każdego wyrażenia g. Przykład Podstawienie do zdania ∀x Król(x) ∧ Chciwy(x) ⇒ Zły(x) wyrażeń: {x/Jan} i {x/Ojciec(Jan)} daje zdania: Król(Jan) ∧ Chciwy(Jan) ⇒ Zły(Jan) Król(Ojciec(Jan)) ∧ Chciwy(Ojciec(Jan)) ⇒ Zły(Ojciec(Jan)) Zdanie z kwantyfikatorem ogólnym jest równoważne zbiorowi zdań z podstawieniami wszystkich obiektów z dziedziny. © F.A. Dul 2013 9.1. Sprowadzenie FOL do PL Podstawienie szczegółowe (existential instantiation, EI) Dla każdego zdania α, zmiennej v i stałej k która nie występuje w bazie wiedzy KB zachodzi wynikanie ∃v α(v) ————————— Subst( {v/k}, α ) Przykład Podstawienie stałej C do zdania ∃x Korona(x) ∧ NaGłowie(x,Jan) daje zdanie Korona(C) ∧ NaGłowie(C,Jan) Stała C nazywa się stałą Skolema, zaś procedura jej podstawienia – skolemizacją. Stała Skolema którą chcemy użyć nie może występować w bazie KB - w przeciwnym razie relacja wynikania zbioru zdań skolemizowanych z bazy KB nie jest spełniona. © F.A. Dul 2013 9.1. Sprowadzenie FOL do PL Różnice pomiędzy podstawieniami: ogólnym (UI) i szczegółowym (EI) • Podstawienie ogólne (UI) może być wykonane wielokrotnie w celu dodania nowych zdań do bazy wiedzy. Nowa baza wiedzy KB jest równoważna logicznie bazie starej. • Podstawienie szczegółowe (EI) może być wykonane tylko raz, w celu eliminacji kwantyfikatora szczegółowego. Nowa baza wiedzy KB nie jest równoważna logicznie bazie starej, ale jest spełnialna (tj. prawdziwa dla pewnych modeli) jeżeli baza wyjściowa była spełnialna. Twierdzenie (Herbrand, 1930) Jeżeli zdanie α wynika z bazy wiedzy pierwszego rzędu, to wynika ze skończonego podzbioru równoważnej bazy predykatowej. © F.A. Dul 2013 9.1. Sprowadzenie FOL do PL Sprowadzenie wnioskowania FOL do wnioskowania w rachunku zdań Załóżmy, że baza wiedzy KB zawiera następujące zdania i wyrażenia: ∀x Król(x) ∧ Chciwy(x) ⇒ Zły(x) Król(Jan) Chciwy(Jan) Brat(Ryszard,Jan) Wykonanie wszystkich możliwych podstawień osób, tj: {x/Jan}, {x/Ryszard} daje w wyniku nową bazę KB: Król(Jan) ∧ Chciwy(Jan) ⇒ Zły(Jan) Król(Ryszard) ∧ Chciwy(Ryszard) ⇒ Zły(Ryszard) Król(Jan) Chciwy(Jan) Brat(Ryszard,Jan) Nowa baza wiedzy jest już czysto predykatowa (KB PL) – nie ma w niej kwantyfikatorów. © F.A. Dul 2013 9.1. Sprowadzenie FOL do PL Każda baza wiedzy zapisana w logice pierwszego rzędu (KB FOL) może być sprowadzona do bazy predykatowej (KB PL) w taki sposób, że wynikanie jest zachowane, tj, Zdanie wynika z przekształconej bazy KB wtedy i tylko wtedy, gdy wynika z bazy pierwotnej. Po przekształceniu KB FOL do KB PL możemy zadawać pytania i otrzymywać odpowiedzi w postaci predykatowej. Czy wynikanie w logice pierwszego rzędu jest gwarantowane? Niestety... Twierdzenie (Turing, Church, 1936) Wynikanie w logice pierwszego rzędu jest półrozstrzygalne (semidecidable). Oznacza to, że : • istnieją algorytmy które dają odpowiedź twierdzącą na każde zdanie wynikające z bazy KB FOL, ale • nie ma algorytmów które odpowiadają przecząco na każde zdanie nie wynikające z bazy KB FOL. © F.A. Dul 2013 9.1. Sprowadzenie FOL do PL Problemy ze sprowadzeniem FOL do PL • Sprowadzenie bazy FOL do postaci predykatowej prowadzi do utworzenia wielu, często nieistotnych, zdań. Przykład Z bazy ∀x Król(x) ∧ Chciwy(x) ⇒ Zły(x) Król(Jan) ∀y Chciwy(y) Brat(Ryszard,Jan) wynika zdanie Zły(Jan), ale również wiele innych zdań: Zły(Ryszard), Chciwy(Jan), Chciwy(Ryszard). • Funkcje mogą generować nieskończone ciągi wyrażeń, np. Ojciec(Ojciec(Ojciec(Jan)))... • Sprowadzenie FOL do PL generuje dużą liczbę podstawień. Dla p zdań k-krotnych i n stałych istnieje p·nk podstawień. © F.A. Dul 2013 Wnioskowanie w bazie predykatowej Przekształcenie bazy zapisanej w języku logiki pierwszego rzędu do bazy predykatowej pozwala prowadzić wnioskowanie metodami rachunku zdań. Jednak takie postępowanie może być wysoce nieefektywne, gdyż eliminacja kwantyfikatorów ogólnych może spowodować lawinowy wzrost liczby zdań w bazie przekształconej. Lepszym rozwiązaniem jest modyfikacja algorytmów wnioskowania w taki sposób, aby można było prowadzić wnioskowanie bezpośrednio w bazie FOL. Osiąga się to poprzez zastosowanie operacji podniesienia i unifikacji oraz wykorzystanie uogólnionej reguły odrywania i algorytmu eliminacji (rezolucji). © F.A. Dul 2013 9.2. Unifikacja i podniesienie Zamiast przekształcać bazę FOL do postaci PL, można przedefiniować reguły wnioskowania tak, aby były słuszne dla logiki pierwszego rzędu używającej kwantyfikatorów: ogólnych i szczegółowych. Na wyjściowej bazie należy najpierw dokonać operacji umożliwiających stosowanie przedefiniowanych reguł wnioskowania. Unifikacja jest to procedura rekurencyjna pozwalająca sprawdzić, czy istnieje podstawienie sprowadzające dwa wyrażenia do takiej samej postaci. Podniesienie (lifting) - wykonanie podstawień które pozwalają prowadzić wnioskowanie w bazie FOL. © F.A. Dul 2013 9.2. Podniesienie i unifikacja Unifikacja Unifikacja zdań α, β za pomocą podstawienia θ może być zdefiniowana następująco Unify(α,β) = θ jeżeli Subst(θ,α) = Subst(θ,β) Unifikacja jest to procedura rekurencyjna pozwalająca sprawdzić, czy istnieje podstawienie sprowadzające dwa wyrażenia do takiej samej postaci. Przykłady: • Król(x) i Chciwy(x) oraz Król(Jan) i Chciwy(y). Podstawienie θ = { x/Jan, y/Jan } unifikuje obie pary zdań. • Kobieta(Anna) i Mężczyzna(Jan) nie unifikują się; • Kobieta(Anna) i Kobieta(Anna) unifikują się trywialnie; • Kobieta(Anna) i Kobieta(Maria) nie unifikują się, gdyż mają różne argumenty; Unifikacja pozwala często istotnie zredukować liczbę zdań zawartych w bazie wiedzy KB. © F.A. Dul 2013 9.2. Podniesienie i unifikacja Unifikacja Przykłady problemów unifikacji: p Zna(Jan,x) q Zna(Jan,Maria) θ © F.A. Dul 2013 9.2. Podniesienie i unifikacja Unifikacja Przykłady problemów unifikacji: p Zna(Jan,x) q Zna(Jan,Maria) θ {x/Maria} © F.A. Dul 2013 9.2. Podniesienie i unifikacja Unifikacja Przykłady problemów unifikacji: p Zna(Jan,x) Zna(Jan,x) q Zna(Jan,Maria) Zna(y,Adam) θ {x/Maria} © F.A. Dul 2013 9.2. Podniesienie i unifikacja Unifikacja Przykłady problemów unifikacji: p Zna(Jan,x) Zna(Jan,x) q Zna(Jan,Maria) Zna(y,Adam) θ {x/Maria} {x/Adam,y/Jan} © F.A. Dul 2013 9.2. Podniesienie i unifikacja Unifikacja Przykłady problemów unifikacji: p Zna(Jan,x) Zna(Jan,x) Zna(Jan,x) q Zna(Jan,Maria) Zna(y,Adam) Zna(y,Matka(y)) θ {x/Maria} {x/Adam,y/Jan} © F.A. Dul 2013 9.2. Podniesienie i unifikacja Unifikacja Przykłady problemów unifikacji: p Zna(Jan,x) Zna(Jan,x) Zna(Jan,x) q Zna(Jan,Maria) Zna(y,Adam) Zna(y,Matka(y)) θ {x/Maria} {x/Adam,y/Jan} {y/Jan,x/Matka(Jan)} © F.A. Dul 2013 9.2. Podniesienie i unifikacja Unifikacja Przykłady problemów unifikacji: p Zna(Jan,x) Zna(Jan,x) Zna(Jan,x) Zna(Jan,x) q Zna(Jan,Maria) Zna(y,Adam) Zna(y,Matka(y)) Zna(x,Adam) θ {x/Maria} {x/Adam,y/Jan} {y/Jan,x/Matka(Jan)} © F.A. Dul 2013 9.2. Podniesienie i unifikacja Unifikacja Przykłady problemów unifikacji: p Zna(Jan,x) Zna(Jan,x) Zna(Jan,x) Zna(Jan,x) q Zna(Jan,Maria) Zna(y,Adam) Zna(y,Matka(y)) Zna(x,Adam) θ {x/Maria} {x/Adam,y/Jan} {y/Jan,x/Matka(Jan)} {brak} Nie można podstawić {x/Jan} bo otrzymamy Zna(Jan,Jan) niezgodne ze Zna(Jan,Adam) – wystąpił konflikt nazw zmiennych. Aby usunąć konflikt nazw zastępujemy zmienną x w jednym ze zdań (np. w drugim) inną zmienną, np. z. Otrzymujemy Zna(Jan,x) , Zna(z,Adam) Jest to standaryzacja która eliminuje konflikty nazw. © F.A. Dul 2013 9.2. Podniesienie i unifikacja Podniesienie - uogólniona reguła odrywania (Generalized Modus Ponens) Jeżeli istnieje takie θ, że ∀i Unify(pi,pi’) = θ, to p1', p2', … , pn', ( p1 ∧ p2 ∧ … ∧ pn ⇒ q) Subst(θ,q) Przykład p1' oznacza Król(Jan) p1 p2' oznacza Chciwy(y) p2 θ oznacza {x/Jan,y/Jan} q Subst(θ,q) oznacza oznacza Król(x) oznacza Chciwy(x) oznacza Zły(x) Zły(Jan) • Uogólniona reguła odrywania (GMP) jest używana dla bazy wiedzy złożonej z klauzul Horna (tj. zawierających dokładnie jeden literał niezanegowany) • Zakłada się, że wszystkie zmienne są kwantyfikowane ogólnie („dla każdego”). © F.A. Dul 2013 9.3. Algorytmy FOL wnioskowania w przód i wstecz Algorytmy wnioskowania w przód i wstecz dla logiki pierwszego rzędu (FOL) i logiki zdań (PL) są identyczne. Wnioskowanie w przód dla KB FOL • Zaczynamy od zdań opisujących fakty dowiedzione; • Stosujemy uogólnioną regułę odrywania dla FOL do wyprowadzenia nowych zdań; • Dodajemy nowe zdania do bazy KB FOL; • Wnioskowanie kończymy, jeżeli wyprowadzimy udowadniane zdanie lub gdy dalsze wnioskowanie nie jest możliwe; Wnioskowanie wstecz dla KB FOL • Zaczynamy od zdania, które jest zapytaniem; • Stosujemy uogólnioną regułę odrywania dla FOL znajdując zdania z których wynika dowodzone zdanie; • Wnioskowanie kończymy, jeżeli przesłankami zdania aktualnie dowodzonego będą zdania bazy KB FOL które opisują fakty dowiedzione; © F.A. Dul 2013 9.3. Algorytmy FOL wnioskowania w przód i wstecz Przykład wnioskowania z bazy wiedzy FOL Baza wiedzy KB FOL zawiera następujące zdania: • Prawo USA stanowi, że przestępstwem jest sprzedaż broni do krajów wrogich. • Kraj Nono, wróg USA, posiada pewną liczbę rakiet. • Wszystkie te rakiety zostały sprzedane Nono przez niejakiego pułkownika Westa. • Pułkownik West jest Amerykaninem. Dowieść, że w świetle prawa amerykańskiego pułkownik West jest przestępcą. © F.A. Dul 2013 9.3. Algorytmy FOL wnioskowania w przód i wstecz Przykład wnioskowania z bazy wiedzy FOL Baza wiedzy w postaci zdań FOL: Jest przestępstwem gdy Amerykanin sprzedaje broń krajom wrogim: American(x∧ Sells(x,y,z) ) ∧ Weapon(y) ∧ Hostile(z) ⇒ Criminal(x) Nono posiada pewną liczbę rakiet, tj., ∃x Owns(Nono,x) ∧ Missile(x) Owns(Nono,M1) ∧ Missile(M1) ⇐ po skolemizacji {x/M1} Wszystkie rakiety zostały sprzedanie Nono przez pułkownika Westa Missile(x) ∧ Owns(Nono,x) ⇒ Sells(West,x,Nono) Rakiety są bronią: Missile(x) ⇒ Weapon(x) Wróg Ameryki jest krajem wrogim: Enemy(x,America) ⇒ Hostile(x) Pułkownik West jest Amerykaninem … American(West) Kraj Nono jest wrogiem Ameryki … Enemy(Nono,America) © F.A. Dul 2013 9.3. Algorytmy FOL wnioskowania w przód i wstecz Dowód poprzez wnioskowanie w przód © F.A. Dul 2013 9.3. Algorytmy FOL wnioskowania w przód i wstecz Dowód poprzez wnioskowanie w przód © F.A. Dul 2013 9.3. Algorytmy FOL wnioskowania w przód i wstecz Dowód poprzez wnioskowanie w przód © F.A. Dul 2013 9.3. Algorytmy FOL wnioskowania w przód i wstecz Własności wnioskowania w przód • Wnioskowanie w przód jest poprawne i zupełne dla bazy w postaci klauzul Horna pierwszego rzędu. • Wnioskowanie w przód dla klauzuli Horna pierwszego rzędu nie zawierających funkcji wymaga skończonej liczby kroków. • Wnioskowanie w przód w przypadku ogólnym może się nie zakończyć jeżeli zapytanie nie wynika z bazy FOL ... • ... i nie można temu zaradzić, gdyż wynikanie z klauzulami Horna pierwszego rzędu jest półrozstrzygalne (patrz twierdzenie Turinga-Churcha). • Wnioskowanie w przód jest szeroko używane w dedukcyjnych bazach wiedzy. © F.A. Dul 2013 9.3. Algorytmy FOL wnioskowania w przód i wstecz Dowód poprzez wnioskowanie wstecz © F.A. Dul 2013 9.3. Algorytmy FOL wnioskowania w przód i wstecz Dowód poprzez wnioskowanie wstecz © F.A. Dul 2013 9.3. Algorytmy FOL wnioskowania w przód i wstecz Dowód poprzez wnioskowanie wstecz © F.A. Dul 2013 9.3. Algorytmy FOL wnioskowania w przód i wstecz Dowód poprzez wnioskowanie wstecz © F.A. Dul 2013 9.3. Algorytmy FOL wnioskowania w przód i wstecz Dowód poprzez wnioskowanie wstecz © F.A. Dul 2013 9.3. Algorytmy FOL wnioskowania w przód i wstecz Dowód poprzez wnioskowanie wstecz © F.A. Dul 2013 9.3. Algorytmy FOL wnioskowania w przód i wstecz Dowód poprzez wnioskowanie wstecz © F.A. Dul 2013 9.3. Algorytmy FOL wnioskowania w przód i wstecz Własności wnioskowania wstecz • Przy rekurencyjnym dowodzeniu w głąb pamięć zależy liniowo od długości dowodu. • Wnioskowanie wstecz jest niezupełne z powodu możliwości zapętlenia się algorytmu (ale można temu zapobiec); • Wnioskowanie wstecz może być nieefektywne gdy wielokrotnie sprawdza cele już osiągnięte (można temu zaradzić kosztem dodatkowej pamięci). • Wnioskowanie wstecz jest szeroko używane w programowaniu logicznym. © F.A. Dul 2013 9.5. Eliminacja (rezolucja) Zasada eliminacji pozwala dowodzić twierdzenia sformułowane w języku logiki pierwszego rzędu. Zasada eliminacji dla logiki pierwszego rzędu ma postać l1 ∨ ··· ∨ li ∨ ··· ∨ lk, m1 ∨ ··· ∨ mk ∨ ··· ∨ mn Subst(θ , l1 ∨ ··· ∨ li-1 ∨ li+1 ∨ ··· ∨ lk ∨ m1 ∨ ··· ∨ mj-1 ∨ mj+1 ∨ ··· ∨ mn ) gdzie Unify(li,¬mk) = θ. Obie klauzule (alternatywy lj oraz mj) muszą być standaryzowane, aby nie miały wspólnych zmiennych. Aby zastosować eliminację baza FOL musi być najpierw przekształcona do postaci koniunktywnej normalnej (CNF). Udowodnienie zdania α poprzez rezolucję polega na wykazaniu, że ( KB FOL ∧ ¬α ) jest niespełnialne. Zasada rezolucji stosowana jest m.in. przy weryfikacji poprawności projektów układów elektronicznych, przy dowodzeniu poprawności programów, itp. © F.A. Dul 2013 9.5. Eliminacja (rezolucja) Przykład Dane są zdania ¬Bogaty(x) ∨ Nieszczęśliwy(x) Bogaty(Jan) Podstawienie θ = { x/Jan } sprowadza klauzule ¬Bogaty(x) Bogaty(Jan) do postaci komplementarnej. Eliminacja ¬Bogaty(Jan) ∨ Nieszczęśliwy(Jan) Bogaty(Jan) Nieszczęśliwy(Jan) prowadzi więc do wniosku, że „Jan jest nieszczęśliwy” mimo, że jest bogaty. © F.A. Dul 2013 9.5. Eliminacja (rezolucja) Sprowadzenie zdań FOL do postaci CNF • Zdanie “Każdy kto kocha wszystkie zwierzęta jest kochany przez kogoś”. ∀x [∀y Animal(y) ⇒ Loves(x,y) ] ⇒ [ ∃y Loves(y,x) ] • Reguła eliminacji implikacji, x ⇒ y ≡ ¬x ∨ y • Eliminacja obu implikacji ∀x [ ∀y ¬Animal(y) ∨ Loves(x,y) ] ⇒ [ ∃y Loves(y,x) ] ∀x [ ¬∀y ¬Animal(y) ∨ Loves(x,y) ] ∨ [ ∃y Loves(y,x) ] • Reguły negacji kwantyfikatorów, ¬∀x p ≡ ∃x ¬p, ¬∃x p ≡ ∀ x ¬p • Przesunięcie negacji do wnętrza wyrażeń, ∀x [ ∃y ¬(¬Animal(y) ∨ Loves(x,y)) ] ∨ [ ∃y Loves(y,x) ] ∀x [ ∃y ¬¬Animal(y) ∧ ¬Loves(x,y) ] ∨ [ ∃y Loves(y,x) ] ∀x [ ∃y Animal(y) ∧ ¬Loves(x,y) ] ∨ [ ∃y Loves(y,x)] © F.A. Dul 2013 9.5. Eliminacja (rezolucja) Sprowadzenie zdań FOL do postaci CNF • Standaryzacja: każdy kwantyfikator musi używać innej zmiennej ∀x [ ∃y Animal(y) ∧ ¬Loves(x,y) ] ∨ [∃z Loves(z,x) ] • Skolemizacja: ogólna forma podstawienia szczegółowego. Każdą zmienną szczegółową zastępuje się przez funkcję Skolema zmiennej zewnętrznej kwantyfikatora ogólnego: F(x) – zwierzę być może nie kochane przez x, G(x) – ktoś, kto może kochać x. ∀x [ Animal(F(x)) ∧ ¬Loves(x,F(x)) ] ∨ Loves(G(x),x) • Opuszczenie kwantyfikatora ogólnego [ Animal(F(x)) ∧ ¬Loves(x,F(x)) ] ∨ Loves(G(x),x) • Przekształcenie do postaci koniunkcji alternatyw: [ Animal(F(x))∨ Loves(G(x),x) ] ∧ [¬Loves(x,F(x)) ∨ Loves(G(x),x) ] Powyższa postać CNF jest zupełnie nieczytelna, ale nadaje się do dowodzenia automatycznego. © F.A. Dul 2013 9.5. Eliminacja (rezolucja) Dowód rezolucyjny dla kaluzuli Horna American(x∧ Sells(x,y,z) ) ∧ Weapon(y) ∧ Hostile(z) ⇒ Criminal(x) © F.A. Dul 2013 9.5. Eliminacja (rezolucja) Dowód rezolucyjny dla kaluzuli Horna American(x∧ Sells(x,y,z) ) ∧ Weapon(y) ∧ Hostile(z) ⇒ Criminal(x) © F.A. Dul 2013 9.5. Eliminacja (rezolucja) Dowód rezolucyjny dla kaluzuli Horna American(x∧ Sells(x,y,z) ) ∧ Weapon(y) ∧ Hostile(z) ⇒ Criminal(x) {x/West} © F.A. Dul 2013 9.5. Eliminacja (rezolucja) Dowód rezolucyjny dla kaluzuli Horna American(x∧ Sells(x,y,z) ) ∧ Weapon(y) ∧ Hostile(z) ⇒ Criminal(x) {x/West} © F.A. Dul 2013 9.5. Eliminacja (rezolucja) Dowód rezolucyjny dla kaluzuli Horna American(x∧ Sells(x,y,z) ) ∧ Weapon(y) ∧ Hostile(z) ⇒ Criminal(x) {x/West} © F.A. Dul 2013 9.5. Eliminacja (rezolucja) Dowód rezolucyjny dla kaluzuli Horna American(x∧ Sells(x,y,z) ) ∧ Weapon(y) ∧ Hostile(z) ⇒ Criminal(x) {x/West} © F.A. Dul 2013 9.5. Eliminacja (rezolucja) Dowód rezolucyjny dla kaluzuli Horna American(x∧ Sells(x,y,z) ) ∧ Weapon(y) ∧ Hostile(z) ⇒ Criminal(x) {x/West} {x/y} © F.A. Dul 2013 9.5. Eliminacja (rezolucja) Dowód rezolucyjny dla kaluzuli Horna American(x∧ Sells(x,y,z) ) ∧ Weapon(y) ∧ Hostile(z) ⇒ Criminal(x) {x/West} {x/y} © F.A. Dul 2013 9.5. Eliminacja (rezolucja) Dowód rezolucyjny dla kaluzuli Horna American(x∧ Sells(x,y,z) ) ∧ Weapon(y) ∧ Hostile(z) ⇒ Criminal(x) {x/West} {x/y} {y/M1} © F.A. Dul 2013 9.5. Eliminacja (rezolucja) Dowód rezolucyjny dla kaluzuli Horna American(x∧ Sells(x,y,z) ) ∧ Weapon(y) ∧ Hostile(z) ⇒ Criminal(x) {x/West} {x/y} {y/M1} © F.A. Dul 2013 9.5. Eliminacja (rezolucja) Dowód rezolucyjny dla kaluzuli Horna American(x∧ Sells(x,y,z) ) ∧ Weapon(y) ∧ Hostile(z) ⇒ Criminal(x) {x/West} {x/y} {y/M1} {x/M1} © F.A. Dul 2013 9.5. Eliminacja (rezolucja) Dowód rezolucyjny dla kaluzuli Horna American(x∧ Sells(x,y,z) ) ∧ Weapon(y) ∧ Hostile(z) ⇒ Criminal(x) {x/West} {x/y} {y/M1} {x/M1} © F.A. Dul 2013 9.5. Eliminacja (rezolucja) Dowód rezolucyjny dla kaluzuli Horna American(x∧ Sells(x,y,z) ) ∧ Weapon(y) ∧ Hostile(z) ⇒ Criminal(x) {x/West} {x/y} {y/M1} {x/M1} © F.A. Dul 2013 9.5. Eliminacja (rezolucja) Dowód rezolucyjny dla kaluzuli Horna American(x∧ Sells(x,y,z) ) ∧ Weapon(y) ∧ Hostile(z) ⇒ Criminal(x) {x/West} {x/y} {y/M1} {x/M1} © F.A. Dul 2013 9.5. Eliminacja (rezolucja) Dowód rezolucyjny dla kaluzuli Horna American(x∧ Sells(x,y,z) ) ∧ Weapon(y) ∧ Hostile(z) ⇒ Criminal(x) {x/West} {x/y} {y/M1} {x/M1} © F.A. Dul 2013 9.5. Eliminacja (rezolucja) Dowód rezolucyjny dla kaluzuli Horna American(x∧ Sells(x,y,z) ) ∧ Weapon(y) ∧ Hostile(z) ⇒ Criminal(x) {x/West} {x/y} {y/M1} {x/M1} © F.A. Dul 2013 9.5. Eliminacja (rezolucja) Dowód rezolucyjny dla kaluzuli Horna American(x∧ Sells(x,y,z) ) ∧ Weapon(y) ∧ Hostile(z) ⇒ Criminal(x) {x/West} {x/y} {y/M1} {x/M1} {x/Nono} © F.A. Dul 2013 9.5. Eliminacja (rezolucja) Dowód rezolucyjny dla kaluzuli Horna American(x∧ Sells(x,y,z) ) ∧ Weapon(y) ∧ Hostile(z) ⇒ Criminal(x) {x/West} {x/y} {y/M1} {x/M1} {x/Nono} © F.A. Dul 2013 9.5. Eliminacja (rezolucja) Dowód rezolucyjny dla kaluzuli Horna American(x∧ Sells(x,y,z) ) ∧ Weapon(y) ∧ Hostile(z) ⇒ Criminal(x) {x/West} {x/y} {y/M1} {x/M1} {x/Nono} © F.A. Dul 2013 9.5. Eliminacja (rezolucja) Dowód rezolucyjny dla kaluzuli Horna American(x∧ Sells(x,y,z) ) ∧ Weapon(y) ∧ Hostile(z) ⇒ Criminal(x) {x/West} {x/y} {y/M1} {x/M1} {x/Nono} Klauzula pusta – dowiedziono klauzulę Criminal(West) © F.A. Dul 2013 9.6. Automatyczne dowodzenie twierdzeń Programy dowodzenia twierdzeń (Theorem Provers, Automated Reasoners) umożliwiają dowodzenie twierdzeń sformułowanych w języku logiki pierwszego rzędu. Najbardziej znane programy: • OTTER - pierwszy program dowodzenia twierdzeń w FOL (Argonne National Laboratrory, USA), • PROVER9 - następca OTTERa, • PTTP - Prolog Technology Theorem Prover (Stanford University, USA), • ONTIC - system reprezentacji wiedzy matematycznej, • AURA - Automated Reasoning Assistent, • SAM, EQP, SPIN i inne.. (n.p. na stronie ar.colognet.org znajdują się linki do ponad pięćdziesięciu (!) programów dowodzenia twierdzeń). © F.A. Dul 2013 9.6. Automatyczne dowodzenie twierdzeń Idea programu OTTER Dane definiujące dowodzony problem: • Zbiór zdań opisujących problem (set of support, SOS). • Aksjomaty użytkowe, nie będące elementami SOS, opisujące wiedzę ogólną na temat problemu. • Zbiór tzw. równań demodulujących (demodulators) określających formy kanoniczne do których przekształcane są wszystkie zdania (np. x+0=x: x+0 → x). • Zbiór parametrów i klauzul sterujących. Program OTTER stosuje rezolucję do kolejnych zdań zbioru opisującego SOS względem aksjomatów użytkowych. Rezolucja klauzul SOS przebiega w kolejności od najprostszej, wybieranej heurystycznie za pomocą algorytmu best-first. © F.A. Dul 2013 9.6. Automatyczne dowodzenie twierdzeń Programy dowodzenia twierdzeń pozwoliły uzyskać wiele ważnych wyników matematycznych: • 1969 – program SAM udowadnia kilka lematów teorii warstw. • 1979 – Natarjan Shankar przy użyciu programu BoyeraMoora dowiódł po raz pierwszy w sposób ścisły słynne Twierdzenie Gödla o Niezupełności. Twierdzenie Gödla Jeżeli system S zawiera ciąg dowodów Di oraz ciąg wszystkich formuł zdaniowych jednoargumentowych Zi, to istnieje formuła Zk(w) = ¬∃ j { Dj dowodzi Zw(w) } W systemie S można zatem sformułować zdanie Gödla Zk(k) = ¬∃ j { Dj dowodzi Zk(k) } którego nie można dowieść! • Gdyby można było go dowieść, to byłoby fałszywe, a system byłby sprzeczny,... • zatem jest prawdziwe, ale nie można tego dowieść. © F.A. Dul 2013 9.6. Automatyczne dowodzenie twierdzeń Programy dowodzenia twierdzeń pozwoliły uzyskać wiele ważnych wyników matematycznych. • 1983 – program AURA udowadnia twierdzenia z wielu dziedzin matematyki. • Program OTTER (i jego nowsze wersje: MACE 2, EQP) jest jednym z najlepszych programów dowodzenia twierdzeń. Za pomocą EQP dowiedziono w roku 1996 słynnej hipotezy Robbinsa (o równoważności algebry Robbinsa i algebry boolowskiej), nieudowodnionej od roku 1933, nawet przez samego Alfreda Tarskiego*). Dowód uzyskany programem EQP liczy tylko 17 linijek! *) Alfred Tarski (1901-1983) – wybitny polski logik, wykładowca UW i liceum Żeromskiego (do 1939), oraz uniwersytetów Harvarda, Princeton i Berkeley (USA). Jako pierwszy sformułował definicję prawdy. Uważany za największego logika w dziejach po Arystotelesie. © F.A. Dul 2013 9.6. Automatyczne dowodzenie twierdzeń Programy dowodzenia twierdzeń pozwoliły uzyskać wiele ważnych wyników matematycznych: • Za pomocą programów dowodzących udowodniono wiele twierdzeń: - geometrii algebraicznej, - logiki kombinatorycznej, - autodualnych algebr Boolowskich, - teorii grup, półgrup i kwazigrup, - teorii krat i kwazikrat i wielu innych... • Podejmowane są nawet próby formalizacji całej matematyki: - projekt QED (niestety upadł), - system Mizar; kontynuacja idei QED; Baza - teoria zbiorów Tarskiego, 8800 definicji, 50,000 twierdzeń; umożliwia dowodzenie twierdzeń a nawet ... automatyczne pisanie artykułów! W obu projektach są silne akcenty polskie. © F.A. Dul 2013 9.6. Automatyczne dowodzenie twierdzeń Programy dowodzące są też używane w różnych dziedzinach jako asystenci: • człowiek-ekspert nadzoruje rozwiązanie problemu wytyczając kierunki działań, • program-asystent rozwiązuje problemy szczegółowe. Innymi zastosowaniami programów dowodzących są weryfikacja oraz synteza układów elektronicznych lub oprogramowania. • Program AURA posłużył do weryfikacji 16-bitowego układu sumującego (1983). • Specjalne programy dowodzące służą do weryfikacji poprawności układów VLSI, np. procesorów CPU. • Program SPIN służy do weryfikacji poprawności oprogramowania. Za jego pomocą weryfikowano w NASA oprogramowanie Remote Agent sterujące lotem sond międzyplanetarnych, m.in. sondy Deep Space One (1999). © F.A. Dul 2013 Podsumowanie • Algorytmy wnioskowania w logice pierwszego rzędu są ważnymi narzędziami sztucznej inteligencji. • Uogólniona wersja Modus Ponens stanowi efektywną regułę wnioskowania w logice pierwszego rzędu. • Algorytmy wnioskowania w przód i wstecz są najważniejszymi narzędziami wnioskowania automatycznego w logice pierwszego rzędu. • Uogólniona zasada rezolucji pozwala dowodzić twierdzeń w bazie wiedzy reprezentowanej w postaci normalnej koniunktywnej (CNF). • Automatyczne dowodzenie twierdzeń umożliwiło udowodnienie wielu twierdzeń matematycznych. • Automatyczne dowodzenie twierdzeń pomaga także przy syntezie i weryfikacji oprogramowania. © F.A. Dul 2013