Instytut Informatyki Poznań, rok akademicki 2009/2010 Instytut Informatyki Poznań, rok akademicki 2009/2010 1 Podstawienia Motywacja Podstawienie 2 Sk ladanie podstawień Motywacja Z lożenie podstawień W lasności sk ladania podstawień 3 Uzgadnianie Podstawienie uzgadniajace Uzupe lnienia Adam i orzeszki Adam lubi każde jedzenie. Jab lko jest jedzeniem. Kurczak jest jedzeniem. Wszystko co można zjeść i nie zatruć si e jest jedzeniem. Bogdan je orzeszki i nadal żyje. Zuzia je wszystko to, co Bogdan. Czy Adam lubi orzeszki? jedzenie(x 1 ) lubi(adam, x 1 ) je(x 1, x 2 ) żyje(x 1 ) jedzenie(x 2 ) je(bogdan, orzeszki) żyje(bogdan) je(bogdan, x 2 ) je(zuzia, x 2 )
Postać klauzulowa Problem jedzenie(x 1 ) lubi(adam, x 1 ) je(x 1, x 2 ) żyje(x 1 ) jedzenie(x 2 ) je(bogdan, orzeszki) żyje(bogdan) je(bogdan, x 2 ) je(zuzia, x 2 ) jedzenie(x 1 ) lubi(adam, x 1 ) (je(x 1, x 2 ) żyje(x 1 )) jedzenie(x 2 ) je(bogdan, orzeszki) żyje(bogdan) je(bogdan, x 2 ) je(zuzia, x 2 ) jedzenie(x 1 ) lubi(adam, x 1 ) je(x 1, x 2 ) żyje(x 1 ) jedzenie(x 2 ) je(bogdan, orzeszki) żyje(bogdan) je(bogdan, x 2 ) je(zuzia, x 2 ) Podstawienie termu za zmienna Instancja wyrażenia Podstawieniem (termów za zmienne) nazywamy zbiór {x 1 t 1,..., x n t n } gdzie x i sa różnymi zmiennymi, a t i sa termami różnymi od odpowiadajacych im zmiennych x i. Podstawienie puste jest to podstawienie zdefiniowane przez zbiór pusty. Podstawienia oznaczamy ma lymi literami alfabetu greckiego: λ, µ, δ, θ. Term Sta la, zmienna lub symbol funkcyjny z list a argumentów. Rozważamy wyrażenia w postaci klauzulowej. Niech E b edzie wyrażeniem, a θ = {x 1 t 1,..., x n t n } podstawieniem. Instancje Eθ wyrażenia E otrzymujemy przez jednoczesne zastapienie każdego wystapienia zmiennej x i termem t i. Postać klauzulowa Formu la zamknieta jest w postaci klauzulowej wtw, gdy jest w przedrostkowej koniunkcyjnej postaci normalnej i jej prefix zawiera wy l acznie kwantyfikatory uniwersalne. Postać koniunkcyjna normalna Formu la jest w koniunkcyjnej postaci normalnej wtw, gdy jest koniunkcja alternatyw litera lów. Wyrażenie E
Kilka podstawień Kilka podstawień i kilka wyrażeń E = p(u, v, x, y, z) θ = {x f (v), y f (a), z u} δ = {y g(a), u f (x), v f (f (a))} Eθ = p(u, v, f (v), f (a), u) (Eθ)δ = p(f (x), f (f (a)), f (f (f (a)), f (a), f (x))) Podstawienie należy wykonać równocześnie we wszystkich wystapieniach zmiennej. E 1 E 2... E n θ 1 (E 1 )θ 1 (E 2 )θ 1... (E n)θ 1 θ 2 ((E 1 )θ 1 )θ 2 ((E 2 )θ 1 )θ 2... ((E n)θ 1 )θ 2............... θ m ((((E 1 )θ 1 )θ 2 )...)θ m ((((E 2 )θ 1 )θ 2 )...)θ m... ((((E n)θ 1 )θ 2 )...)θ m Czy można t e operacj e usprawnić? Znajdujemy z lożenie podstawień θ = (θ 1... θ m) i podstawiamy we wszystkich wyrażeniach. E 1 E 2... E n θ (E 1 )θ (E 2 )θ... (E n)θ E = p(u, v, x, y, z) θ = {x f (v), y f (a), z u} δ = {y g(a), u f (x), v f (f (a))} Eθ = p(u, v, f (v), f (a), u) (Eθ)δ = p(f (x), f (f (a)), f (f (f (a))), f (a), f (x)) Eδ = p(f (x), f (f (a)), x, g(a), z) (Eδ)θ = p(f (f (v)), f (f (a)), f (v), g(a), u) Sk ladanie podstawień nie jest przemienne! Definicja Niech θ = {x 1 t 1,..., x n t n } i δ = {y 1 s 1,..., y n s n } bed a podstawieniami. Niech X i Y bed a zbiorami zmiennych zastepowanych odpowiednio w podstawieniach θ i δ. Z lożenie podstawień Podstawienie θδ (z lożenie podstawień θ i δ), definiujemy jako nastepuj ace podstawienie: θδ = {x i t i δ x i X, x i t i δ} {y j s i y i Y, y j / X } Podstawienie δ do termów t i z podstawienia θ. Ze zbioru δ dodajemy podstawienia dla tych zmiennych, którym θ nie nadaje wartości.
L aczność Sk ladanie podstawień jest l aczne, tj. λ(θδ) = (λθ)δ. λ = {x g(z)}, θ = {y f (z)}, δ = {z b} θδ = {y f (b), z b} λ(θδ) = {x g(b), y f (b), z b} λθ = {x g(z), y f (z)} (λθ)δ = {x g(b), y f (b), z b} Sk ladanie podstawień jest l aczne! Przemienność E = p(u, v, x, y, z) θ = {x f (v), y f (a), z u} δ = {y g(a), u f (x), v f (f (a))} θδ = {x f (f (f (a))), y f (a), z f (x)} {u f (x), v f (f (a))} E(θδ) = p(f (x), f (f (a)), f (f (f (a))), f (a), f (x)) δθ = {y g(a), u f (f (v)), v f (f (a))} {x f (v), z u} E(δθ) = p(f (f (v)), f (f (a)), f (v), g(a), u) Sk ladanie podstawień nie jest przemienne! Podstawienie uzgadniajace Podstawienie uzgadniajace - przyk lady Dla dowolnego zbioru atomów podstawieniem uzgadniajacym tego zbioru nazywamy podstawienie spe lniajace warunek: instancja wszystkich elementów tego zbioru uzyskana przez zastosowanie tego podstawienia jest ten sam atom. Podstawienie uzgadniajace µ nazywamy najbardziej ogólnym podstawieniem uzgadniajacym danego zbioru atomów, jeśli każde podstawienie uzgadniajace θ można uzyskać z µ przez zastosowanie dodatkowego podstawienia, czyli θ = µλ. Nastepuj ace pary formu l można uzgodnić: formu la 1 formu la 2 p(x, b, z) p(a, y, c) p(a, x, f (g(y))) p(y, f (z), f (z)) Nastepuj acyh par formu l nie można uzgodnić: formu la 1 formu la 2 p(x) q(x) p(x, y) p(z) p(f (x)) p(g(x)) p(x) p(f (x)) podstawienie uzgadniajace {x a, y b, z c} {x f (g(a)), y a, z g(a)} wynik p(a, b, c) p(a, f (g(a)), f (g(a)))
Zbiór termów do uzgodnienia bedziemy zapisywać w postaci zbioru równań na termach. Zbiór równań na termach jest w postaci rozwiazywalnej, jeśli spe lnione sa nastepuj ace warunki: wszystkie równania sa postaci x i = t i, gdzie x i jest zmienna, i = 1,..., n,; jeżeli zmienna x i, wystepuje po lewej stronie równania, to nie wystepuje w żadnym innym miejscu. Zbiór równań w postaci rozwiazywalnej definiuje podstawienie {x 1 t 1,..., x n t n }. 1 Przekszta lć równanie t = x, gdzie t nie jest zmienna, do x = t. 2 Usuń równanie postaci x = x. 3 Niech t = t bedzie równaniem takim, że t, t nie sa zmiennymi. Jeśli glówne symbole funkcyjne termów t i t sa różne, to zakończ algorytm i udziel odpowiedzi: zbiór termów nie jest uzgadnialny. W przeciwnym razie zastap równanie f (t 1,..., t n) = f (t 1,..., t n), n równaniami postaci t 1 = t 1,..., t n = t n. p(a, x, f (g(y))) = p(y, f (z), f (z)) a = y x = f (z) f (g(y)) = f (z) y = a g(y) = z z = g(y) - w lasności 4 Niech x = t bedzie równaniem takim, że zmienna x wystepuje w zbiorze równań nie tylko po lewej stronie tego równania. Jeśli zmienna x wystepuje w t, to zakończ algorytm i udziel odpowiedzi: zbiór termów nie jest uzgadnialny. W przeciwnym razie zastap wszystkie wystapienia zmiennej x w innych równaniach termem t. µ = {x f (g(a)), y a, z g(a)} p(a, x, f (g(y))) = p(y, f (z), f (z)) x = f (z) y = a z = g(y) z = g(a) zawsze si e zatrzymuje. Jeśli algorytm zakończy sie udzieleniem odpowiedzi, że zbiór termów nie jest uzgadnialny, to dla danego zbioru równań nie istnieje podstawienie uzgadniajace. Jeśli algorytm zakończy sie sukcesem, to otrzymany zbiór równań jest w postaci rozwiazywalnej i definiuje najbardziej ogólne podstawienie uzgadniajace podany zbiór równań: µ = {x 1 t 1,..., x n t n }.
Sprawdzanie wyst epowania zmiennej A = p(a, x, f (g(y))) A = p(y, f (z), f (z)) Podstawienie uzgadniajace θ = {x f (g(a)), y a, z g(a)} µ = {x f (z), y a, z g(a)} θ = µλ λ = {z g(a)} µλ = {x f (g(a)), y a, z g(a)} = θ Konieczność sprawdzania, czy term podstawiany za zmienna nie zawiera tej zmiennej, powoduje, że algorytm uzgadniania ma wyk ladnicza z lożoność obliczeniowa (wzgledem wielkości uzgadnianych termów). Algorytmy stosowane w praktyce zwykle nie stosuja tego sprawdzenia (ryzyko b l edu!). Algorytm Robinsona Algorytm Robinsona c.d. Niech A i A bed a atomami utworzonymi z tego samego symbolu predykatywnego. Traktujemy te atomy jako ciagi symboli (listy). Niech k bedzie indeksem pierwszej pozycji od lewej strony, na której w tych ciagach wystepuj a różne symbole. Pare termów t, t rozpoczynajacych sie od pozycji k w atomie A oraz A nazywamy zbiorem niezgodności atomów A i A. A = p(a, x, f (g(y))) A = p(y, f (z), f (z)) k = 2 t = a t = y Algorytm inicjujemy z A 0 = A i A 0 = A. Niech {t, t } bedzie zbiorem niezgodności atomów A i A. Jeśli jednym z termów należacych do tego zbioru jest zmienna x i+1, a drugi term t i+1, w którym zmienna x i+1 nie wystepuje, 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. A 0 = p(a, x, f (g(y))) A 0 = p(y, f (z), f (z)) {t, t } = {a, y} x 1 = y t 1 = a σ 1 = {y a} A 1 = p(a, x, f (g(a))) A 1 = p(a, f (z), f (z))
Algorytm Robinsona c.d. Adam i orzeszki jeszcze raz Jeśli nie można wykonać kolejnego 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 sa uzgadnialne i najbardziej ogólnym podstawieniem uzgadniajacym jest podstawienie µ = σ 1... σ n. µ = {y a, x f (g(a)), z g(a)} A 1 = p(a, x, f (g(a))) A 1 = p(a, f (z), f (z)) σ 2 = {x f (z)} A 2 = p(a, f (z), f (g(a))) A 2 = p(a, f (z), f (z)) σ 3 = {z g(a)} A 3 = p(a, f (g(a)), f (g(a))) A 3 = p(a, f (g(a)), f (g(a))) jedzenie(x 1 ) lubi(adam, x 1 ) je(x 1, x 2 ) żyje(x 1 ) jedzenie(x 2 ) je(bogdan, orzeszki żyje(bogdan) je(bogdan, x 2 ) je(zuzia, x 2 ) x 1 jab lko lubi(adam, jab lko), lubi(adam, jab lko) Pytania 1 Uzgodnij (jeżeli to możliwe) nastepuj ac a pare formu l rachunku predykatów. 2 Dane sa dwa podstawienia λ i σ. Wykonaj podstawienie λσ do podanej formu ly.