Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 4.9 Prädikatenlogik – Resolution Korrektheit und Vollständigkeit Theorem 36 Sei C Klauselmenge. Es gibt Resolutionsbeweis für C gdw. C unerfüllbar ist. Beweisskizze: “⇒” Wie bisher: Zeige, dass erfüllbare Menge unter Hinzunahme von Resolventen erfüllbar bleibt. “⇐” Sei C unerfüllbar. Nach Thm. 35 gibt es Grundresolutionsbeweis mit Instanziierungen zu Grundtermen. Dieser lässt sich in einen Resolutionsbeweis umbauen, welcher die Instanziierungen mittels MGUs teilweise und nur an benötigter Stelle macht. 223 Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 4.9 Prädikatenlogik – Resolution Beschränkung auf zwei Terme noch zu tun: Berechnung von MGUs Lemma: Seien t1 , . . . , tn , n > 1 Terme ohne Funktionssymbol f . Jeder Unifikator für t1 , . . . , tn ist auch ein Unifikator für f (t2 , . . . , tn ), f (t1 , . . . , t1 ) und umgekehrt. Beweis: Übung. Soll heißen: bei der Berechnung von MGUs können wir uns auf den Fall zweier Terme t, t 0 beschränken. Beachte: Für Unifikation kein Unterschied zwischen Funktions- und Prädikatsymbolen. 224 Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 4.9 Prädikatenlogik – Resolution Berechnung von MGUs Algorithmus arbeitet auf Menge von Paaren von Termen M = {(t1 , t10 ), . . . , (tn , tn0 )} Aufruf mit zu unifizierendem Paar (t, t 0 ) iteriere, solange noch eine der folgenden Regeln die Menge M ändert • entferne Paare der Form (t, t) aus M • ersetze jedes (t, x) in M durch (x, t), falls x Variable, t nicht Variable • gibt es (t, t 0 ) ∈ M mit t = f (s1 , . . . , sm ), t 0 = f (u1 , . . . , um ), so ersetze M durch (M \ {(t, t 0 )}) ∪ {(s1 , u1 ), . . . , (sm , um )} • ist M = {(x, t), (t1 , t10 ), . . . , (tn , tn0 )}, so dass x nicht in t vorkommt, so ersetze M durch 0 ))}, wobei σ = [x 7→ t] {(x, t), (σ(t1 ), σ(t10 )), . . . , (σ(tm ), σ(tm 225 Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 4.9 Prädikatenlogik – Resolution Beispiele berechne MGUs für • R(g (x, y ), f (y )), R(g (g (d, z), z 0 ), f (y 0 )) • P(f (g (x, f (y )))), P(f (y )) • R(f (x), x), R(y , c), R(f (z), z 0 ) 226 Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 4.9 Prädikatenlogik – Resolution Berechnung von MGUs Termination nicht trivial; aber Regeln nicht beliebig lange anwendbar zwei Fälle bei Termination: 1 M = {(x1 , t1 ), . . . , (xn , tn )}, wobei x1 , . . . , xn paarweise verschieden und kommen nicht in t1 , . . . , tn vor [x1 7→ t1 , . . . , xn 7→ tn ] ist MGU 2 keine Regel anwendbar, aber M nicht von obiger Form Eingabe nicht unifizierbar Theorem 37 (ohne Beweis) Obiger Algorithmus terminiert immer und berechnet einen MGU für die Eingabeterme. 227 Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 4.9 Prädikatenlogik – Resolution Resolution für FO[=, τ ] beachte: bisher nur Resolution für FO[τ ]; lässt sich diese auf FO[=, τ ] erweitern? ja, z.B. mittels Paramodulation Def.: Eine Klausel E heißt Grundparamodulant für Klauseln C und D, falls . • C = s = t, C 0 • D = `, D 0 • E = `0 , C 0 , D 0 , wobei `0 aus ` entsteht, indem ein einziges Vorkommen von s durch t (oder umgekehrt) ersetzt wurde Grundresolution für FO[=, τ ] durch Hinzunahme der Grundparamodulationsregel zur Grundresolution für FO[τ ] 228 Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 4.9 Prädikatenlogik – Resolution Beispiel . (∀x ∀y .x = 6 y → P(x) ∨ P(y )) ∧ (¬P(c) ∨ ¬P(d)) ist erfüllbar, vgl. mit ähnlichem Beispiel ohne Quantorenrelativierung 229 Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 4.9 Prädikatenlogik – Resolution Paramodulation Def.: Eine Klausel E heißt Paramodulant für Klauseln C und D, falls . . • C = s = t, C 0 oder C = t = s, C 0 • D = `, D 0 , wobei in ` ein Term r vorkommt • C 0 und D 0 haben keine gemeinsamen Variablen • es gibt einen MGU σ für s und r • E = σ(`0 ), σ(C 0 ), σ(D 0 ), wobei `0 aus ` entsteht, indem ein einziges Vorkommen von s durch σ(t) ersetzt wurde Resolution für FO[=, τ ] durch Hinzunahme der Paramodulationsregel zur Resolution für FO[τ ] 230 Logikprogrammierung I Berechnung durch Resolution I Die Programmiersprache Prolog Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 6.1 Logikprogrammierung – Berechnung durch Resolution Resolution als Berechnungsmodell bisher Resolution nur als Verfahren zum Beweis der Unerfüllbarkeit einer Klauselmenge Resolution kann mehr: Erzeugung neuer Terme durch MGUs in Iteration der Resolution ist auch eine Berechnung Verallgemeinerung: • gegeben Eingabe-Klauselmenge C, Ziel-Klausel ϕ • berechne Substitution σ, so dass σ(ϕ) aus C per Resolution herleitbar ist 232 Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 6.1 Logikprogrammierung – Berechnung durch Resolution Beispiel Bsp. Konstante 0, einst. Funktion s zur symbolischen Repräsentation natürlicher Zahlen Axiomatisierung der Addition: ∀x.Add(x, 0, x) ∀x.∀y .∀z.Add(x, y , z) → Add(x, s(y ), s(z)) Axiomatisierung der Multiplikation: ∀x.Mult(x, 0, 0) ∀x.∀y .∀z.Mult(x, y , z) ∧ Add(y , z, u) → Mult(x, s(y ), u) 233 Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 6.1 Logikprogrammierung – Berechnung durch Resolution 234 Beispiel Was ist 3 + 2? Für welchen Term t ist Add(s(s(s(0))), s(s(0)), t) Konsequenz aus obiger Klauselmenge? Beachte: Φ |= ϕ gdw. Φ ∧ ¬ϕ unerfüllbar benutze also Resolutionsverfahren für {Add(x, 0, x)}, {¬Add(x, y , z), Add(x, s(y ), s(z))}, {¬Add(s 3 (0), s 2 (0), u)} führe am Ende aufgesammelte Substitutionen aus, um u korrekt zu instanziieren Was ist 3 ∗ 2? Übung. Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 6.1 Logikprogrammierung – Berechnung durch Resolution 235 Beispiel {Add(x, 0, x)}, {¬Add(x, y , z), Add(x, s(y ), s(z))}, {¬Add(s 3 (0), s 2 (0), u)} Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 6.1 Logikprogrammierung – Berechnung durch Resolution Beispiel symbolische Differenzierung modellieren; Signatur (+, ∗, 1, 0, x, y , . . .) (Achtung, x etc. ist Konstante in Signatur, aber Variable in modelliertem Szenario!) {D(x, x, 1)} {D(y , x, 0) | y 6= x} {D(f , x, f 0 ) ∧ D(g , x, g 0 ) → D(+(f , g ), x, +(f 0 , g 0 ))} {D(f , x, f 0 ) ∧ D(g , x, g 0 ) → D(∗(f , g ), x, +(∗(f , g 0 ), ∗(f 0 , g )))} Übungen: • berechne die Ableitung von x 2 · (y + x) nach x • erweitere dies um natürliche Zahlen und Operatoren pow (f , n) für Polynome 236 Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 6.1 Logikprogrammierung – Berechnung durch Resolution Resolutionsstrategien Ziel: Berechnungsmechanismus in Resolution in einer Programmiersprache ausnutzen pragmatisches Problem: obiger Resolutionskalkül nicht sehr zielgerichtet; Resolutions-Baumstruktur vollkommen beliebig effiziente Auswertung in Interpreter erfordert klarere Regeln leicht zu machen, z.B. “wähle immer kleinste passende Klausel” etc. wirft Frage auf: gilt Korrektheit (Φ unerfüllbar gdw. Resolutionsbeweis existiert) auch unter Einschränkung auf bestimmte Resolutionsstrategien? 237 Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 6.1 Logikprogrammierung – Berechnung durch Resolution SLD-Resolution Def.: SLD-Resolutionsbeweis für Φ ist Liste C1 , . . . , Cn , so dass • C1 ∈ Φ • für alle i = 2, . . . , n existiert C ∈ Φ, so dass Ci Resolvent von Ci−1 und C beachte: Liste = degenerierter Baum Bsp.: (man stelle sich geeignete FO-Literale vor) Φ = {{A, B}, {¬A, B, ¬C }, {¬B, ¬C }, {C }} 238 Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 6.1 Logikprogrammierung – Berechnung durch Resolution SLD-Resolution und Horn-Klauseln Def.: Horn-Klausel ist Klausel mit höchstens einem positiven Literal: P(t̄) ∨ ¬Q1 (s̄1 ) ∨ . . . ∨ ¬Qn (s̄n ) mit n ≥ 0 Theorem 38 (ohne Beweis) Sei Φ Menge von Horn-Klauseln. Φ ist unerfüllbar gdw. es SLD-Resolutionsbeweis für Φ gibt. SLD-Resolution ist nicht vollständig für allgemeine Klauselmengen Bsp.: man versuche, einen SLD-Resolutionsbeweis für Φ := {{A, B}, {¬A, B}, {A, ¬B}, {¬A, ¬B}} zu konstruieren 239 Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 6.2 Logikprogrammierung – Prolog Programmiersprache Prolog Prolog-Programm ist Liste von Fakten (einelementige Hornklausel) und Regeln (mehrelementige Hornklauseln) • Variablen beginnen mit Großbuchstaben oder Unterstrich • Funktionen und Prädikate beginnen mit Kleinbuchstaben Bsp.: p(X,c,X). p(X,f(Y),f(Z)) :- p(X,Y,Z). 240 Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 6.2 Logikprogrammierung – Prolog Syntax Klauselform gemacht für Konjunktionen im Antezedent: isWitch(X) :- female(X), burnable(X), sameWeight(X,duck). Disjunktionen im Antezedent modellierbar: A ∨ B → C ≡ (A → C ) ∧ (B → C ) isParent(X,Y) :- isFather(X,Y). isParent(X,Y) :- isMother(X,Y). oder isParent(X,Y) :- isFather(X,Y); isMother(X,Y). 241