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

Podobne dokumenty