Składanie podstawień Plan wykładu Uzgadnianie Logika obliczeniowa Instytut Informatyki Plan wykładu Składanie podstawień 1 Składanie podstawień Podstawienie Motywacja Złożenie podstawień 2 Uzgadnianie Podstawienie uzgadniające Algorytm uzgadniania Uzgadnianie
Problem jedzenie(x 1 ) lubi(adam, x 1 ) jedzenie(jabłko) jedzenie(kurczak) 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 zmienną 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: λ, µ, δ, θ. Term Stała, zmienna lub symbol funkcyjny z listą argumentów.
Instancja wyrażenia 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. Wyrażenie E p(x, y) q(y) r(z) Podstawienie θ {x a, y w, z f (w)} Instancja E θ p(a, w) q(w) r(f (w)) Kilka podstawień 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 wystąpieniach zmiennej.
Kilka podstawień i kilka wyrażeń 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ę operację usprawnić? Znajdujemy złożenie podstawień θ = (θ 1... θ m ) i podstawiamy we wszystkich wyrażeniach. E 1 E 2... E n θ (E 1 )θ (E 2 )θ... (E n )θ Przykład 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ładanie podstawień nie jest przemienne!
Definicja 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 δ. Złożenie podstawień 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} Podstawienie δ do termów t i z podstawienia θ. Ze zbioru δ dodajemy podstawienia dla tych zmiennych, którym θ nie nadaje wartości. Łączność Składanie podstawień jest łączne, 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ładanie podstawień jest łączne!
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ładanie podstawień nie jest przemienne! Podstawienie uzgadniające Dla dowolnego zbioru atomów podstawieniem uzgadniającym tego zbioru nazywamy podstawienie spełniajace warunek: instancją wszystkich elementów tego zbioru uzyskaną przez zastosowanie tego podstawienia jest ten sam atom. Podstawienie uzgadniajace µ 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 θ = µλ.
Podstawienie uzgadniające - przykłady Następujące pary formuł można uzgodnić: formuła 1 formuła 2 p(x, b, z) p(a, y, c) p(a, x, f (g(y))) p(y, f (z), f (z)) podstawienie uzgadniające {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))) Następującyh par formuł nie można uzgodnić: formuła 1 formuła 2 p(x) q(x) p(x, y) p(z) p(f (x)) p(g(x)) p(x) p(f (x)) Algorytm uzgadniania Zbiór termów do uzgodnienia będziemy zapisywać w postaci zbioru równań na termach. 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ą, i = 1,..., n,; jeżeli zmienna x i, wystepuje po lewej stronie równania, to 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 gló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), n równaniami postaci t 1 = t 1,..., t n = t n. Przykład 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) Algorytm uzgadniania 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. Przykład Najbardziej ogólne podstawienie uzgadniające µ = {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) x = f (g(a))
Algorytm uzgadniania - własności 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 }. Najbardziej ogólne podstawienie uzgadniające Przykład A = p(f (y), a, g(y)) A = p(f (x), w, z) Podstawienie uzgadniające θ = {x b, y b, w a, z g(b)} Najbardziej ogólne podstawienie uzgadniające µ = {x y, w a, z g(y)} θ = µλ λ = {y b} µλ = {x b, y b, w a, z g(b)} = θ
Sprawdzanie 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!). Pytania 1 Uzgodnij (jeżeli to możliwe) następującą parę formuł rachunku predykatów. 2 Dane są dwa podstawienia λ i σ. Wykonaj podstawienie λσ do podanej formuły.