Rachunek predykatów Wykład 5 Plan wykładu Funkcje i termy Postać klauzulowa formuł Modele Herbranda Twierdzenie Herbranda Rezolucja dla klauzul ustalonych Podstawienia Uzgadnianie Rezolucja Funkcje i termy Istotną siłą rachunku predykatów jest możliwość wyrażenia logicznych zależności dotyczących dziedzin strukturalnych, takich jak dziedziny liczbowe, czy struktury danych (listy, drzewa). Funkcje i termy Niech F będzie przeliczalnym zbiorem symboli funkcyjnych. Następująca gramatyka definiuje termy jako uogólnienie stałych i zmiennych. Zmieniono regułę gramatyki definiującą formuły atomowe. Argumentem formuły atomowej jest teraz lista termów. Funkcje i termy term ::= x dla dowolnego x V term ::= a dla dowolnego a A term ::= f(lista_termów) dla dowolnego f F lista_termów ::= term lista_termów ::= term, lista_termów atom ::= p(lista_termów) dla dowolnego p P Termy ustalone Term oraz atom nazywamy ustalonym wtw, gdy nie zawiera zmiennych. Formuła jest ustalona wtw, gdy nie zawiera ani kwantyfikatorów, ani zmiennych. Formułę A nazywamy ustaloną instancją formuły A, która nie zawiera kwantyfikatorów, jeśli A można otrzymać z formuły A przez podstawienie za zmienne (wolne) formuły A termów ustalonych. 1
Interpretacja Niech U będzie zbiorem formuł takim, że zbiór {p 1,..., p k } jest zbiorem wszystkich symboli predykatywnych, {f 1,..., f l } jest zbiorem wszystkich symboli funkcyjnych, {a 1,..., a m } zbiorem wszystkich stałych występujących w formułach należących do U. Interpretacją I nazywamy czwórkę: (D, {R 1,..., R k }, {F 1,..., F l }, {d 1,..., d m }), gdzie: D jest niepustą dziedziną R i jest n i -argumentową relacją przyporządkowaną p i F i jest n i -argumentową funkcją przyporządkowaną f i d i D są elementami dziedziny, przyporządkowanymi a i. Wartość termu i formuły Dla termu ustalonego t wartość termu w interpretacji I definiujemy przez indukcję: v x (a i ) = d i v x (f i (t 1,..., t n )) = F i (v x (t 1 ),..., v x (t n )). Wartość formuły v x (A) definiujemy również przez indukcję. Dla formuł atomowych: v x (p i (t 1,..., t n )) = 1 wtw, gdy (v x (t 1 ),..., v x (t n )) R i. Definicja wartości formuł złożonych nie ulega zmianie. Metoda tabel semantycznych Zastępujemy numerację symboli stałych przez numerację termów ustalonych. Formuła x y (p(x,y) p(f(x,a), f(y,a))) jest spełniona w interpretacji (Z, { }, {+}, {1}) Postępowanie pozostaje bez zmian. m, n Z; x := m; y := n; v(f(x,a) = +(v(x), v(a)) = +(m,1) v(f(y,a) = +(v(y), v(a)) = +(n,1) m+1 n+1 m n m + 1 n + 1 dla dowolnych liczb całkowitych Nie jest prawdziwa 5, 4 Z; Formuła x y (p(x,y) p(f(x,a), f(y,a))) nie jest spełniona w interpretacji (Z, {>}, {*}, { 1}) v(f(x,a) = *(v(x), v(a)) = *(5, ( 1)) v(f(y,a) = *(v(y), v(a)) = *(4, ( 1)) 5 > 4 5*( 1) > 4*( 1) 5*( 1) 4*( 1) Postać klauzulowa formuł Formuła jest w preneksowej postaci normalnej wtw, gdy jest postaci Q 1 x 1... Q n x n M gdzie Q i są kwantyfikatorami, a M jest formułą w koniunkcyjnej postaci normalnej, nie zawierającą kwantyfikatorów. Ciąg Q 1 x 1... Q n x n jest nazywany prefiksem, a M matrycą formuły. 2
Postać klauzulowa formuł Formuła zamknięta jest w postaci klauzulowej wtw, gdy jest w preneksowej postaci normalnej i jej prefiks zawiera wyłącznie kwantyfikatory uniwersalne. Literał jest to formuła atomowa lub negacja formuły atomowej. Klauzula jest to alternatywa literałów. Klauzula C i jest klauzulą ustaloną wtw, gdy jest ustaloną instancją klauzuli C, czyli można ją otrzymać z C przez zastąpienie wszystkich zmiennych C termami ustalonymi. Literał ustalony jest ustalona instancją literału. Notacja x z ([p(f(y)) p(g(z)) q(z)] [ q(z) p(g(z)) q(y)]) {{p(f(y), p(g(z)), q(z)}, { q(z), p(g(z)), q(y)}} {pfy pgz qz, qz pgz, qy} Twierdzenie Skolema Niech A będzie formułą zamkniętą. Wówczas istnieje formułą A w postaci klauzulowej taka, że A A. To znaczy, że A jest spełnialna wtw A jest spełnialna. To nie znaczy, że formuly sa równoważne! Postać klauzulowa formuł Usunięcie kwantyfikatorów egzystencjalnych jest wykonywane przez wprowadzenie nowych symboli funkcyjnych. Powoduje to, że formuły przestają być równoważne! x y p(x, y) x p(x, f(x)) Skolemizacja Wejście: Zamknięta formuła A rachunku predykatów. Wyjście: Formuła A w postaci klauzulowej, taka, że A A Przemianuj zmienne kwantyfikowane w ten sposób, aby żadna zmienna nie występowała w dwóch kwantyfikatorach. Usuń wszystkie binarne operatory logiczne oprócz oraz. Przesuń operatory negacji do środka, usuwając podwójną negację, tak, aby negacja występowała tylko przy formułach atomowych. Skorzystaj z równoważności: x A(x) x A(x) oraz x A(x) x A(x) Wydobądź kwantyfikatory z matrycy. Powtarzaj następującą operację: wybierz kwantyfikator nie będący w zasięgu innego kwantyfikatora i przenieś go na zewnątrz, korzystając z następujących równoważności, możliwych do zastosowania, gdy żadna zmienna nie występuje w dwóch kwantyfikatorach: A op QxB(x) Qx(A op B(x)) oraz QxA(x) op B Qx(A(x) op B) Skolemizacja Korzystając z praw rozdzielczości, przekształć matrycę formuły do koniunkcyjnej postaci normalnej. Niech x będzie kwantyfikatorem egzystencjalnym występującym w formule A, y 1,..., y n będą zmiennymi kwantyfikowanymi uniwersalnie występującymi przed x, f będzie nowym symbolem funkcyjnym o arności n. Usuń x i zastąp każde wystąpienie zmiennej x termem f(y 1,..., y n ). Jeśli żaden kwantyfikator uniwersalny nie poprzedza x, to zastąp x nową stałą a (funkcją 0-argumentową). Wprowadzone nowe symbole funkcyjne są nazywane funkcjami Skolema. 3
x y p(x, y) y x p(x, y) x y p(x, y) w z p(z, w) x y p(x, y) w z p(z, w) x y p(x, y) w z p(z, w) x y w z ( p(x, y) p(z, w)) x w z ( p(x, f(x)) p(g(x,w), w)) Modele Herbranda Niech S będzie zbiorem klauzul A będzie zbiorem symboli stałych występujących w S F będzie zbiorem symboli funkcyjnych z S. Uniwersum Herbranda H S zbioru S definiujemy indukcyjnie: a i H S dla a i A f i (t 1,..., t n ) H S dla f i F, t j H S. Jeżeli w zbiorze S nie występuje żadna stała, indukcyjna definicja Hs jest inicjowana wprowadzeniem dowolnej stałej a. Modele Herbranda Uniwersum Herbranda jest po prostu zbiorem wszystkich termów ustalonych utworzonych z symboli występujących w S. Jeżeli w zbiorze S występuje symbol funkcyjny, to oczywiście uniwersum Herbranda jest nieskończone, gdyż zawiera termy postaci f(f(... (a)... )). Modele Herbranda Niech H S będzie uniwersum Herbranda zbioru klauzul S. Bazą Herbranda B S nazywamy zbiór atomów ustalonych, utworzonych z symboli predykatywnych występujących w S oraz z termów należących do H S. Interpretacją Herbranda dla zbioru klauzul S nazywamy interpretację, której dziedziną jest uniwersum Herbranda zbioru S, a stałym i symbolom funkcyjnym są przyporządkowane te same symbole: v(a) = a v(f(t 1,..., t n )) = f(v(t 1 ),..., v(t n )) Nie nakłada się żadnych ograniczeń na przyporządkowanie symbolom predykatywnym relacji określonych nad uniwersum Herbranda. Modelem Herbranda zbioru klauzul S nazywamy interpretację Herbranda spełniającą S. Model Herbranda można utożsamić z podzbiorem bazy Herbranda, zawierającym atomy, dla których v(p(t 1,...,t n ))=1. Modele Herbranda Niech S będzie zbiorem klauzul. Zbiór S ma model wtedy i tylko wtedy, gdy ma model Herbranda. Powyższe twierdzenie nie zachodzi dla dowolnych formuł, czyli formuł, które nie są zbiorami klauzul. Twierdzenia Herbranda Semantyczne Zbiór klauzul S jest niespełnialny wtedy i tylko wtedy, gdy skończony zbiór ustalonych instancji klauzul z S jest niespełnialny. Formuła A jest niespełnialna wtedy i tylko wtedy, gdy formuła utworzona ze skończonego zbioru ustalonych instancji podformuł formuły A jest niespełnialny. Składniowe Dowód formuły A rachunku predykatów istnieje wtedy i tylko wtedy, gdy dla formuły utworzonej ze skończonego zbioru ustalonych instancji podformul formuły A istnieje dowód, w którym używa się jedynie aksjomatów oraz reguł dowodzenia dla rachunku zdań. 4
Twierdzenia Herbranda Twierdzenie Herbranda dostarcza narzędzia do zdefiniowania wydajnej semi-decyzyjnej procedury rozwiązującej problem prawdziwości formuł rachunku predykatów: zaneguj formułę, przekształć ją do postaci klauzulowej, utwórz skończony zbiór klauzul ustalonych, sprawdź, czy zbiór klauzul ustalonych jest niespełnialny. Twierdzenia Herbranda Twierdzenie Herbranda dostarcza narzędzia do zdefiniowania wydajnej semi-decyzyjnej procedury rozwiązującej problem prawdziwości formuł rachunku predykatów: zaneguj formułę, przekształć ją do postaci klauzulowej, utwórz skończony zbiór klauzul ustalonych, sprawdź, czy zbiór klauzul ustalonych jest niespełnialny. Rezolucja dla klauzul ustalonych Reguła rezolucji dla klauzul ustalonych Niech C 1, C 2 będą klauzulami ustalonymi takimi, że l C 1 oraz l C 2. Klauzule C 1, C 2 nazywamy klauzulami kolidującymi i mówimy, że kolidują względem komplementarnych literałów l, l. Rezolwentą klauzul C 1, C 2 nazywamy klauzulę C postaci Rez(C 1, C 2 ) = (C 1 {l}) (C 2 {l}). Klauzule C 1, C 2 nazywamy klauzulami macierzystymi dla C. Rezolucja dla klauzul ustalonych Rezolwenta klauzul C 1 i C 2 jest spełnialna wtedy i tylko wtedy, gdy klauzule C 1 i C 2 są spełnialne. Podstawienia Podstawieniem (termów za zmienne) nazywamy zbiór {x 1 t 1,..., x n t n } gdzie x i są różnymi zmiennymi, a t i są termami różnymi od odpowiadających im zmiennych x i. Podstawienie puste jest to podstawienie zdefiniowane przez zbiór pusty. Podstawienia oznaczamy małymi literami alfabetu greckiego: λ, µ, δ, θ. Podstawienia Wyrażeniem nazywamy term, literał, klauzulę lub zbiór klauzul. Niech E będzie wyrażeniem, a θ = {x 1 t 1,..., x n t n } podstawieniem. Instancję Eθ wyrażenia E otrzymujemy przez jednoczesne zastąpienie każdego wystąpienia zmiennej x i termem t i. 5
Podstawienia Niech θ = {x 1 t 1,..., x n t n } i δ = {y 1 s 1,..., y n s n } będą podstawieniami. Niech X i Y będą zbiorami zmiennych zastępowanych odpowiednio w podstawieniach θ i δ. Podstawienie θδ, złożenie podstawień θ i δ, definiujemy jako następujące podstawienie: θδ={x i t i δ x i X, x i t i δ} {y j s i y i Y, y j X} θ = {x f(y), y f(a), z u} δ= {y g(a), u z, v f(f(a))} E = p(u, v, x, y, z) Podstawienie δ do termów t i z podstawienia θ Dodajemy ze zbioru δ podstawienia dla tych zmiennych, którym θ nie nadaje wartości θ = {x f(y), y f(a), z u} δ= {y g(a), u z, v f(f(a))} E = p(u, v, x, y, z) θ = {x f(y), y f(a), z u} δ= {y g(a), u z, v f(f(a))} E = p(u, v, x, y, z) θδ = {x f(g(a)), y f(a)} {u z, v f(f(a))} θδ = {x f(g(a)), y f(a)} {u z, v f(f(a))} θ = {x f(y), y f(a), z u} δ= {y g(a), u z, v f(f(a))} E = p(u, v, x, y, z) θδ = {x f(g(a)), y f(a)} {u z, v f(f(a))} Podstawienia Niech E będzie wyrażeniem, a q i d podstawieniami. Wówczas E(θδ) = (Eθ)δ. θ(δγ) = (θδ)γ θδ = {x f(g(a)), y f(a), u z, v f(f(a))} E(θδ) = p(z, f(f(a)), f(g(a)), f(a), z) 6
Uzgadnianie Dla dowolnego zbioru atomów podstawieniem uzgadniającym tego zbioru nazywamy podstawienie spełniające warunek: instancją wszystkich elementów tego zbioru uzyskaną przez zastosowanie tego podstawienia jest ten sam atom. Podstawienie uzgadniające µ nazywamy najbardziej ogólnym podstawieniem uzgadniającym danego zbioru atomów, jeśli każde podstawienie uzgadniające θ można uzyskać z µ przez zastosowanie dodatkowego podstawienia, czyli θ = µλ. Uzgadnianie Zbiór równań na termach jest w postaci rozwiązywalnej, jeśli spełnione są następujące warunki: wszystkie równania są postaci x i = t i, gdzie x i jest zmienną; każda zmienna x i, występująca po lewej stronie równania, nie występuje w żadnym innym miejscu. Zbiór równań w postaci rozwiązywalnej definiuje podstawienie {x 1 t 1,..., x n t n }. Algorytm uzgadniania 1. Przekształć równanie t = x, gdzie t nie jest zmienną, do x = t. 2. Usuń równanie postaci x = x. 3. Niech t = t będzie równaniem takim, że t, t nie są zmiennymi. Jeśli główne symbole funkcyjne termów t i t są różne, to zakończ algorytm i udziel odpowiedzi: zbiór termów nie jest uzgadnialny. W przeciwnym razie zastąp równanie f(t 1,..., t n ) = f(t 1,..., t n ) k równaniami postaci t 1 = t 1,..., t n = t n. 4. Niech x = t będzie równaniem takim, że zmienna x występuje w zbiorze równań nie tylko po lewej stronie tego równania. Jeśli zmienna x występuje w t, to zakończ algorytm i udziel odpowiedzi: zbiór termów nie jest uzgadnialny. W przeciwnym razie zastąp wszystkie wystąpienia zmiennej x w innych równaniach termem t. g(y) = x f(x, h(x), y) = f(g(z), w, z) g(y) = x f(x, h(x), y) = f(g(z), w, z) g(y) = x f(x, h(x), y) = f(g(z), w, z) x = g(y) reg. 1 x = g(y) g(z) = g(y) z = y h(x) = w reg. 3 h(x) = w Reg. 4 Reg. 3 7
g(y) = x f(x, h(x), y) = f(g(z), w, z) g(y) = x f(x, h(x), y) = f(g(z), w, z) z = y Reg. 4 z = z Reg. 2 Reg. 1 w = h(g(z)) {x g(z), w h(g(z)), y z} Uzgadnianie Algorytm uzgadniania zawsze się zatrzymuje. Jeśli algorytm zakończy się udzieleniem odpowiedzi, że zbiór termów nie jest uzgadnialny, to dla danego zbioru równań nie istnieje podstawienie uzgadniające. Jeśli algorytm zakończy się sukcesem, to otrzymany zbiór równań jest w postaci rozwiązywalnej i definiuje najbardziej ogólne podstawienie uzgadniające podany zbiór równań: µ = {x 1 t 1,..., x n t n }. Algorytm Robinsona Niech A i A będą atomami utworzonymi z tego samego symbolu predykatywnego. Potraktujmy te atomy jako ciągi symboli i niech k będzie indeksem pierwszej pozycji od lewej strony, na której w tych ciągach występują różne symbole. Parę termów {t, t } rozpoczynających się od pozycji k w atomie A oraz A nazywamy zbiorem niezgodności atomów A i A. Algorytm Robinsona Inicjujemy algorytm, przyjmując A 0 = A oraz A 0 = A. Wykonajmy nastepujący krok algorytmu: Niech {t, t } będzie zbiorem niezgodności algorytmów A i A. Jeśli jednym z termów należących do tego zbioru jest zmienna x i+1, a drugi term t i+1, w którym zmienna x i+1 nie występuje, to niech σ i+1 = {x i+1 t i+1 } oraz A i+1 = A i σ i+1, A i+1 = A i σ i+1. Jeśli nie można wykonać podanego kroku algorytmu, to atomów nie można uzgodnić. Jeśli po wykonaniu kolejnego kroku algorytmu otrzymamy A n = A n, to atomy A i A są uzgadnialne i najbardziej ogólnym podstawieniem uzgadniającym jest podstawienie µ = σ 1,..., σ n. Sprawdzenie występowania zmiennej Konieczność sprawdzania, czy term podstawiany za zmienną nie zawiera tej zmiennej, powoduje, że algorytm uzgadniania ma wykładniczą złożoność obliczeniową (względem wielkości uzgadnianych termów). Algorytmy stosowane w praktyce zwykle nie stosują tego sprawdzenia (ryzyko błędu!). 8
x 1 = f(x 0, x 0 ) x 2 = f(x 1, x 1 ) x 3 = f(x 2, x 2 )... x n = f(x n-1, x n-1 ) x 2 = f(f(x 0, x 0 ), f(x 0, x 0 )) x 3 = f(f(x 1, x 1 ), f(x 1, x 1 ))... x n = f(f(x n-2, x n-2 ), f(x n-2, x n-2 )) O(2 n ) x 2 = f(f(x 0, x 0 ), f(x 0, x 0 )) x 3 = f(f(f(x 0, x 0 ), f(x 0, x 0 )), f(f(x 0, x 0 ), f(x 0, x 0 )))... x n = f(f(f(x n-3, x n-3 ), f(x n-3, x n-3 )), f(f(x n-3, x n-3 ), f(x n-3, x n-3 ))) Rezolucja Niech L = {l 1,..., l n } będzie zbiorem literałów. Wówczas L = {l 1,..., l n }. Ogólna reguła rezolucji Niech C 1 i C 2 będą klauzulami nie mającymi wspólnych zmiennych. Niech L 1 = {l 11,..., l 1n } C 1, L 2 = {l 21,..., l 2n } C 2, będą podzbiorami literałów takimi, że L 1 i L 2 można uzgodnić, a σ będzie ich podstawieniem uzgadniającym (mgu). Klauzule C 1 i C 2 nazywamy kolidującymi i mówimy, że kolidują względem zbiorów literałów L 1 i L 2. Rezolwentą klauzul C 1 i C 2 nazywamy klauzulę postaci Rez(C 1, C 2 )= (C 1 σ L 1 σ) (C 2 σ L 2 σ) Ogólna metoda rezolucji Niech S 0 = S. Załóżmy, że utworzyliśmy zbiór S i. Wybierz klauzule kolidujące C 1, C 2 S i i niech C = Rez(C 1, C 2 ). Jeśli C jest klauzulą pustą, to zakończ: zbiór S jest niespełnialny. W przeciwnym razie utwórz S i+1 = S i {C}. Jeśli S i+1 = S i dla wszystkich par literałów kolidujących, to zakończ wykonywanie: Zbiór S jest spełnialny. x a q(a) x a q(a) s(f(a)) s(f(a)) 9
x a q(a) r(a, f(a)) r(a, f(a)) s(f(a)) (10) s(f(a)) (10) q(a) r(a, f(a)) (11) s(f(a)) (10) q(a) r(a, f(a)) (11) r(a, f(a)) (12) y f(a) t(f(a)) s(f(a)) (10) q(a) r(a, f(a)) (11) r(a, f(a)) (12) t(f(a)) (13) x f(a) s(f(a)) s(f(a)) (10) q(a) r(a, f(a)) (11) r(a, f(a)) (12) t(f(a)) (13) s(f(a)) (14) Zbiór klauzul jest niespełnialny. Poprawność i pełność rezolucji (Lemat o podnoszeniu) Niech C1 i C2 będą instancjami ustalonymi klauzul C1 oraz C2. Niech C będzie rezolwentą ustaloną klauzul C1 i C2. Wówczas istnieje rezolwenta C klauzul C1 oraz C2 taka, że C jest instancją ustaloną C. 10
Poprawność i pełność rezolucji Poprawność rezolucji Jeżeli na podstawie ogólnej metody rezolucji można wyprowadzić klauzulę pustą, to zbiór klauzul jest niespełnialny. Pełność rezolucji Jeśli zbiór klauzul jest niespełnialny, to stosując ogólną metodę rezolucji można wyprowadzić klauzulę pustą. 11