Logik für Informatiker Wintersemester 2007/08 Thomas Schwentick Teil B: Prädikatenlogik 5. Erfüllbarkeit Version von: 4. Februar 2008(17:15) Inhalt 5.1 Einleitung 5.2 Herbrand-Strukturen und Grundresolution 5.3 Unifikation und prädikatenlogische Resolution 5.4 Logische Programmierung: Prolog Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 1 Prolog • ➞ • • Prolog: „Programming in Logic“ Deklarative Programmiersprache Wird z.B. für wissensbasierte Systeme verwendet Beispiel-Programm aus Einleitung: ancestor(X,Y) :- parent(X,Y). ancestor(X,Y) :- parent(X,Z),ancestor(Z,Y). parent(bob,allen). parent(dave,bob). parent(fred,dave). ? :- ancestor(Y,allen). • Die Regel ancestor(X,Y) :- parent(X,Z),ancestor(Z,Y) entspricht der PL-Formel ∀x ∀y(∃z P (x, z) ∧ A(z, y)) → A(x, y) • Die Ziel-Regel ? :- ancestor(Y,allen). entspricht der Formel F = ∃y A(y, allen) • Wie bei der AL-Resolution wird nun versucht, zu zeigen, dass die Programm-Formeln zusammen mit der negierten Zielformel F = ∀y ¬A(y, allen) unerfüllbar sind (und passende Werte für y zu finden) Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 2 Prolog (Forts.) • Wie lässt sich die Unerfüllbarkeit der dem Programm ancestor(X,Y) :- parent(X,Y). ancestor(X,Y) :- parent(X,Z),ancestor(Z,Y). parent(bob,allen). parent(dave,bob). parent(fred,dave). ? :- ancestor(Y,allen). • entsprechenden Formeln testen? Einfacher Ansatz: Setze alle möglichen Werte für x und y ein, z.B.: – P (dave, bob) ∧ A(bob, fred) → A(dave, fred) – P (bob, fred) ∧ A(fred, allen) → A(bob, allen) – Zielformel: ¬A(fred, allen), ¬A(bob, allen),... • Wir können dann Atome wie P (dave, bob) als aussagenlogische • • Variablen betrachten, und mit Resolution versuchen, einen Widerspruch zu erzeugen Sogar: alle Formeln sind Hornformeln, deshalb ist ein effizienter Erfüllbarkeitstest möglich Schönheitsfehler: bei k-stelligen Prädikaten und n Grundelementen ergeben sich nk Klauseln Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 3 Prolog: Noch ein Beispiel • Das Programm Wahr(t). Falsch(f). Wahr(und(X,Y)) :- Wahr(X), Wahr(Y) Falsch(und(X,Y)) :- Falsch(X) Falsch(und(X,Y)) :- Falsch(Y) Falsch(oder(X,Y)) :- Falsch(X), Falsch(Y) Wahr(oder(X,Y)) :- Wahr(X) Wahr(oder(X,Y)) :- Wahr(Y) Wahr(nicht(X)) :- Falsch(X) Falsch(nicht(X)) :- Wahr(X) • beschreibt die Semantik von Termen, die mit Funktionen „und“, „oder“, „nicht“ und Wahrheitswerten t und f gebildet werden Die Zielregel: ? :- Wahr(und(t,oder(X,nicht(Y)))) würde dann nach Werten für X und Y suchen, die den angegebenen • • • Term wahr machen Auch hier ist eine Lösung durch einen Erfüllbarkeitstest mit Hilfe der AL-Resolution (und sogar dem Markierungsalgorithmus) möglich Aber: es gibt unendlich viele Terme und deshalb unendlich viele mögliche Klauseln Wir beschäftigen uns nun also mit Erfüllbarkeitstests für PL-Formeln Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 4 Erfüllbarkeit von PL-Formeln: Beispiel • Prädikatenlogische Erfüllbarkeit wirft völlig neue Probleme auf, wie das folgende Beispiel zeigt • Sei F = ∀u ∀v ∀w (P (u, v) ∧ P (v, w) → P (u, w))∧ ∀x ¬P (x, x) ∧ ∀y P (y, f (y)) • F hat das Modell A = (N, P, f ) mit – P (n, m) :⇐⇒ n < m für alle n, m ∈ N – f (n) = n + 1 für alle n ∈ N • A ist ein unendliches Modell • Hat F auch ein endliches Modell? Nein! – Denn: Angenommen B = (U, P B, f B) wäre ein endliches Modell – Sei a ∈ U beliebig – Wir betrachten die Folge a, f (a), f (f (a))(=: f 2 (a)), . . . (und lassen dabei den Superskript B weg) – Dann gibt es i < j , so dass f i(a) = f j (a) ist – Da immer (x, f (x)) ∈ P gilt und P transitiv ist, folgt (f i(a), f j (a)) ∈ P – Das widerspricht aber der Teilformel ∀x Logik für Inf. / Schwentick / WiSe 07/08 ¬P (x, x) B: Prädikatenlogik - 5. Erfüllbarkeit Folie 5 Erfüllbarkeit prädikatenlogischer Formeln: Plan • Unser Ziel ist also ein Erfüllbarkeitstest für PL-Formeln F (ohne Gleichheit!) – Wir wissen schon: wir können F in eine erfüllbarkeitsäquivalente geschlossene Skolem-Formel F 0 umwandeln – Nebenbei bemerkt: bei dieser Umwandlung können auch bei Formeln ohne Funktionssymbole neue Funktionssymbole hinzukommen – Wir werden sehen: wenn F 0 ein Modell hat, dann auch ein Herbrand-Modell: ∗ Die Grundmenge U und die Funktionen eines Herbrand-Modells H für F sind dabei durch F schon eindeutig bestimmt – Um festzustellen, ob es auch Relationen für H gibt, die F erfüllen, können wir dann auf die aussagenlogische Resolution zurückgreifen Logik für Inf. / Schwentick / WiSe 07/08 – Wir betrachten jedes Atom, das aus U und den Prädikaten von F gebildet werden kann, als aussagenlogische Variable – Dann definieren wir die Menge E(F ) aller Klauseln, die sich aus F durch Einsetzen von (Grund-)Termen für die Variablen ergeben – Wir werden sehen: F prädikatenlogisch erfüllbar ⇐⇒ E(F ) aussagenlogisch erfüllbar • Leider führt dieses Verfahren aus prinzipiellen Gründen nicht zu einem vollständigen Erfüllbarkeitsalgorithmus • Außerdem ist der Algorithmus extrem ineffizient, deshalb betrachten wir danach eine weitere, etwas zielgerichtetere Methode: prädikatenlogische Resolution • Wir folgen im Folgenden weitgehend [KuK] B: Prädikatenlogik - 5. Erfüllbarkeit Folie 6 Inhalt 5.1 Einleitung 5.2 Herbrand-Strukturen und Grundresolution 5.3 Unifikation und prädikatenlogische Resolution 5.4 Logische Programmierung: Prolog Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 7 Das Herbrand-Universum zu einer Skolem-Formel • Angenommen, wir wollen die Erfüllbarkeit testen von F1 = ∀x ∀y R(x) ∧ (P (x) ∨ ¬R(y) ∨ ¬R(f (a))) ∧ (¬P (b) ∨ ¬R(g(b, y))) • Was wissen wir über Modelle A von F1 ? • Sie müssen Elemente aA, bA enthalten • Sie müssen auch Elemente f A(aA), f A(bA), g A(aA, aA), g A(aA, bA), g A(bA, aA), g A(bA, bA) enthalten • Sie müssen Elemente wie f A(f A(aA)), f A(g A(aA, aA)), g A(f A(aA), aA) • • enthalten usw. Welche dieser Elemente gleich sind, wissen wir nicht Herbrand verfolgte einen syntaktischen Ansatz: Versuche ein Modell zu konstruieren, dessen Grundmenge U genau aus allen Termen besteht, die sich aus den Konstantensymbolen a, b, dem 1-stelligen Funktionssymbol f und dem 2-stelligen Funktionssymbol g bilden lassen Kurz-Bio: Jacques Herbrand • Geboren: 12.2.1908 in Paris • Studium in Paris • Forschungsaufenthalte in Hamburg • • Also: a, b, f (a), f (b), g(a, a), g(a, b), g(b, a), g(b, b), f (f (a)), f (g(a, a)), . . . Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit und Göttingen Am 27.5.1931 beim Bergsteigen in den franz. Alpen tödlich verunglückt Folie 8 Das Herbrand-Universum zu einer Skolem-Formel (Forts.) • Welches Universum wählen wir für F2 = ∀x P (x) ∧ ¬P (f (x))? • Kleines Problem: die Formel hat keine Konstantensymbole ➞ Wir konstruieren U aus dem Symbol a • Also: U =def alle Terme, die sich aus a, f bilden lassen: a, f (a), f (f (a)), f (f (f (a))), . . . Definition • Das Herbrand-Universum D(F ) zu einer Formel F besteht aus allen Termen, die sich aus den in F vorkommenden Konstantensymbolen und Funktionssymbolen bilden lassen • Falls F keine Konstantensymbole enthält, wird a als Konstantensymbol hinzugenommen Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 9 Herbrand-Strukturen • Unser Ziel: Modelle für Formeln finden • Erster Schritt: Grundmenge festlegen X • Angenommen, wir haben eine Formel mit einem Funktionssymbol f und das Herbrand-Universum a, f (a), . . . • Zweiter Schritt: Konstanten festlegen – Wie soll in A die Konstante aA definiert sein? – Wir wählen das nahe Liegende: aA := a • Dritter Schritt: Funktionen auf der Grundmenge festlegen – Wie soll in A dann f A(a) definiert sein? – Wir wählen auch hier das nahe Liegende: f A(a) := f (a) • Sei F eine geschlossene Skolem-Formel • Eine Struktur A heißt Herbrand-Struktur für F , falls gilt: – Die Grundmenge von A ist D(F ) – Ist c ein Konstantensymbol von F , so ist cA = c – Ist f ein k-stelliges Funktionssymbol von F und sind t1 , . . . , tk ∈ D(F ), so ist f A(t1 , . . . , tk) = f (t1 , . . . , tk) • Herbrand-Strukturen unterscheiden sich also nur bezüglich ihrer Relationen • Ein Herbrand-Modell einer Formel ist ein – Zu beachten: ∗ f A(a) bezeichnet hier den Funktionswert von f A an der Stelle a ∗ f (a) ist ein Element des Herbrand-Universums Logik für Inf. / Schwentick / WiSe 07/08 Definition Modell, das eine Herbrand-Struktur ist B: Prädikatenlogik - 5. Erfüllbarkeit Folie 10 Satz von Löwenheim-Skolem Satz 5.1 [Lowenheim-Skolem] • Jede PL-Formel hat genau dann ein Modell, wenn sie ein Modell mit abzählbarer Grundmenge hat Beweisskizze • Die Richtung „⇐“ ist klar • Für „⇒“ sei zunächst F = ∀x1 · · · ∀xl G eine zur • • • • gegebenen Formel erfüllbarkeitsäquivalente geschlossene Skolem-Formel Wir zeigen: Hat F ein Modell, so auch ein Herbrand-Modell H Klar: Herbrandmodelle haben abzählbare Grundmengen Sei also A ein Modell für F mit Grundmenge A Wir konstruieren H wie folgt: – Grundmenge D(F ), Konstanten, Funktionen gemäß Definition von Herbrand-Strukturen – Falls F keine Konstanten enthält, bezeichne aA ein beliebig gewähltes Element aus A – Ist P ein k-stelliges Relationssymbol von F und sind t1 , . . . , tk ∈ D(F ), so sei P H definiert durch: A A (t1 , . . . , tk) ∈ P H ⇐⇒ (tA 1 , . . . , tk ) ∈ P Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 11 Satz von Löwenheim-Skolem: Beweis (Forts.) Beweisskizze (Forts.) • Zur Erinnerung: – F = ∀x1 · · · ∀xl G A A – (t1 , . . . , tk) ∈ P H ⇐⇒ (tA 1 , . . . , tk ) ∈ P • Wir zeigen durch Induktion nach l: H |= F • l = 0: ➞ F quantorenfrei ➨ H |= F , da nach Konstruktion: H |= P (t1 , . . . tk) ⇐⇒ A |= P (t1 , . . . tk) • l > 0: – Sei F 0 =def ∀x2 · · · ∀xl G ➨ Für jedes u ∈ A gilt: (A, x1 7→ u) |= F 0 – Insbesondere gilt dies für jedes u, zu dem es einen Term t gibt mit tA = u ➨ Für jeden Term t gilt: A |= F 0[x1 /t] – Da F 0 [x1 /t] nur l − 1 Quantoren hat, folgt nach Induktion: H |= F 0[x1 /t], für jeden Term t ➨ Für jedes t ∈ D(F ) gilt: (H, x1 7→ t) |= F 0 ➨ H |= ∀x1 F 0, also: H |= F Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 12 Leopold Löwenheim und Thoralf Skolem Kurz-Bio: Leopold Löwenheim • • • • • Geboren: 26.6.1878 in Krefeld Studium in Berlin Mathematik-Lehrer ab 1906 Teilnahme am ersten Weltkrieg 1915/1916 Kurz-Bio: Thoralf Skolem • • • • Geboren: 23.5.1887 in Oslo Studium in Oslo (Kristiania) ab 1905 Dozent in Oslo und Bergen Gestorben: 23.3.1963 in Oslo Als „Nicht-Arier“ 1934 aus dem Schuldienst entlassen • 1946-1949: Lehrer in Berlin • Gestorben: 5.5.1957 in Berlin Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 13 Herbrand-Expansionen • Um die Erfüllbarkeit einer PL-Formel zu testen, können wir also: – sie in eine erfüllbarkeitsäquivalente geschlossene Skolem-Formel F umwandeln, und – testen, ob F ein Herbrand-Modell hat • Für letzteres müssen wir herausfinden, ob Relationen über D(F ) so konstruiert werden können, dass F wahr wird • Wir werden jetzt sehen, wie sich diese letzte Frage mit aussagenlogischer Resolution (partiell) beantworten lässt • Dazu definieren wir: Definition • Sei F = ∀x1 · · · ∀xl G eine geschlossene Skolem-Formel mit Matrix-Formel G • Die Herbrand-Expansion E(F ) von F sei die folgende Menge von PL-Formeln: {G[x1 /t1 , . . . , xl/tl] | t1 , . . . , tl ∈ D(F )} Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 14 Herbrand-Expansionen: Beispiele Beispiel • Für F2 = ∀x P (x) ∧ ¬P (f (x)) gilt: – D(F ) = {a, f (a), f (f (a)), f (f (f (a))), . . .} – E(F ) = {P (a) ∧ ¬P (f (a)), wegen x 7→ a P (f (a)) ∧ ¬P (f (f (a))), wegen x 7→ f (a) P (f (f (a))) ∧ ¬P (f (f (f (a)))), wegen x 7→ f (f (a)) P (f (f (f (a)))) ∧ ¬P (f (f (f (f (a))))), wegen x 7→ f (f (f (a))) . . .} Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 15 Herbrand-Expansionen: Beispiele (Forts.) Beispiel • Für F1 = ∀x ∀y R(x) ∧ (P (x) ∨ ¬R(y) ∨ ¬R(f (a)))∧ (¬P (b) ∨ ¬R(g(b, y))) gilt: – D(F ) = {a, b, f (a), f (b), g(a), g(b), f (f (a)), f (f (b)), f (g(a)), f (g(b)), g(f (a)), . . .} – E(F ) = {R(a) ∧ (P (a) ∨ ¬R(a) ∨ ¬R(f (a)))∧(¬P (b) ∨ ¬R(g(b, a))), wegen x 7→ a, y 7→ a R(b) ∧ (P (b) ∨ ¬R(a) ∨ ¬R(f (a))) ∧ (¬P (b) ∨ ¬R(g(b, a))) wegen x 7→ b, y 7→ a R(b) ∧ (P (b) ∨ ¬R(b) ∨ ¬R(f (a))) ∧ (¬P (b) ∨ ¬R(g(b, b))) wegen x 7→ b, y 7→ b R(a) ∧ (P (a) ∨ ¬R(b) ∨ ¬R(f (a))) ∧ (¬P (b) ∨ ¬R(g(b, b))) wegen x 7→ a, y 7→ b R(f (a)) ∧ (P (f (a)) ∨ ¬R(a) ∨ ¬R(f (a))) ∧ (¬P (b) ∨ ¬R(g(b, a))) wegen x 7→ f (a), y 7→ a R(f (a)) ∧ (P (f (a)) ∨ ¬R(b) ∨ ¬R(f (a))) ∧ (¬P (b) ∨ ¬R(g(b, b))) wegen x 7→ f (a), y 7→ b . . .} Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 16 Satz von Gödel, Herbrand, Skolem • In der Herbrand-Expansion kommen keine prädikatenlogischen Variablen mehr vor ➞ Um ein Modell für F zu konstruieren genügt es, eine Wahrheitsbelegung für die atomaren Formeln von E(F ) zu finden, die alle Formeln in E(F ) wahr macht ➞ Das ist ein aussagenlogisches Erfüllbarkeitsproblem mit unendlich vielen aussagenlogischen Variablen • Wir sagen: E(F ) ist aussagenlogisch erfüllbar, wenn es eine Belegung der atomaren Formeln von E(F ) mit Wahrheitswerten gibt, die alle Formeln in E(F ) erfüllt • Dann erhalten wir folgenden Satz Satz 5.2 [Gödel, Herbrand, Skolem] • Eine geschlossene Skolemformel F ist genau dann erfüllbar, wenn E(F ) aussagenlogisch erfüllbar ist Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 17 Erfüllbarkeitstest für prädikatenlogische Formeln Alg. 5.3 [Grundresolutionsalgorithmus] • Wenn eine Formel F unerfüllbar ist, lässt sich also aus E(F ) die leere Klausel per • Eingabe: PL-Formel F Ausgabe: „unerfüllbar“, falls F unerfüllbar ist, (aussagenlogischer) Resolution herleiten andernfalls keine Termination 1: Wandle F in eine erfüllbarkeitsäquivalente Wenn eine Formel F erfüllbar ist, hilft uns geschlossene Formel G in Skolemform um die AL-Resolution nicht weiter, da wir nicht in 2: M := ∅, i := 0 endlich vielen Schritten ein (unendliches) 3: while true do Modell konstruieren können • Immerhin erhalten wir aus dem Bisherigen den folgenden Algorithmus, der herausfindet, ob eine PL-Formel unerfüllbar ist 7: i := i + 1 Gi := i-te Formel von E(G) M := M ∪ {Gi} if M ist aussagenlogisch unerfüllbar 8: then Return „unerfüllbar“, 4: 5: 6: • Bemerkung: der folgende Algorithmus heißt Grundresolutionsalgorithmus, weil er nur Grundterme verwendet (im Gegensatz zur prädikatenlogischen Resolution) Logik für Inf. / Schwentick / WiSe 07/08 • Wir sagen, dass das Unerfüllbarkeitsproblem für PL-Formeln semi-entscheidbar ist, weil es einen Algorithmus gibt, der – für unerfüllbare Formeln anhält und „unerfüllbar“ ausgibt und – für erfüllbare Formeln nicht terminiert B: Prädikatenlogik - 5. Erfüllbarkeit Folie 18 Grundresolutionsalgorithmus: Erstes Beispiel Beispiel • Sei F2 = ∀x P (x) ∧ ¬P (f (x)) • D(F ) = {a, f (a), f (f (a)), f (f (f (a))), . . .} • E(F ) = {P (a) ∧ ¬P (f (a)), P (f (a)) ∧ ¬P (f (f (a))), . . .} {P (f (a))} wegen x wegen x 7→ a 7 f (a) → {¬P (f (a))} ∅ • Leider wird nicht immer so schnell eine unerfüllbare Klauselmenge erreicht Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 19 Grundresolutionsalgorithmus: Zweites Beispiel Beispiel • Sei F1 = ∀x ∀y R(x) ∧ (P (x) ∨ ¬R(y) ∨ ¬R(f (a))) ∧ (¬P (b) ∨ ¬R(g(b, y))) • D(F ) = {a, b, f (a), g(a, a), f (b), g(a, b), g(b, a), g(b, b), f (f (a)), . . .} • E(F ) = {R(a) ∧ (P (a) ∨ ¬R(a) ∨ ¬R(f (a))) ∧ (¬P (b) ∨ ¬R(g(b, a))) wegen x 7→ a, y 7→ a (1) ··· ··· R(f (a)) ∧ (P (f (a)) ∨ ¬R(a) ∨ ¬R(f (a))) ∧ (¬P (b) ∨ ¬R(g(b, a))) wegen x 7→ f (a), y 7→ a (5) ··· ··· R(b) ∧ (P (b) ∨ ¬R(f (a))) ∧ (¬P (b) ∨ ¬R(g(b, f (a)))) wegen x 7→ b, y 7→ f (a) (8) ··· ··· R(g(b, a)) ∧ (P (g(b, a)) ∨ ¬R(a) ∨ ¬R(f (a))) ∧ (¬P (b) ∨ ¬R(g(b, a))) wegen x 7→ b, y 7→ f (a) (26) ···} {P (b), ¬R(f (a))} {R(f (a))} {R(g(b, a))} {¬P (b), ¬R(g(b, a))} {¬P (b)} {P (b)} ∅ Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 20 Grundresolutionsalgorithmus: Zweites Beispiel (Forts.) • In diesem Beispiel ergibt also erst die 26. Iteration des Grundresolutionsalgorithmus die Ausgabe „unerfüllbar“ • Einige Beobachtungen bezüglich des Resolutionsbeweises {P (b), ¬R(f (a))} {R(f (a))} {R(g(b, a))} {¬P (b), ¬R(g(b, a))} {P (b)} {¬P (b)} ∅ (1) Die Klausel {R(x)} haben wir zweimal verwendet (2) Der Resolutionsschritt auf der linken Seite verwendet die PL-Klauseln (a) P (x) ∨ ¬R(y) ∨ ¬R(f (a)) mit Substitution x 7→ b, y 7→ (b) R(x) mit Substitution x 7→ f (a) f (a), – Die Variable x wird hier also in den beiden Klauseln auf verschiedene Weise substituiert – Durch die Substitution verringert sich die Anzahl der Literale in der ersten Klausel • Im Folgenden werden wir sehen, wie solche Substitutionen und dann auch Resolutionsbeweise gezielter gefunden werden können • Dies führt uns zur prädikatenlogischen Resolution Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 21 Inhalt 5.1 Einleitung 5.2 Herbrand-Strukturen und Grundresolution 5.3 Unifikation und prädikatenlogische Resolution 5.4 Logische Programmierung: Prolog Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 22 PL-Resolution: Vorüberlegungen • Erfüllbarkeit von F2 = ∀x P (x) ∧ ¬P (f (x)): • Grundresolution ist eine Art Brute-Force-Ansatz: – D(F ) = {a, f (a), f (f (a)), f (f (f (a))), . . .} – E(F ) = {P (a) ∧ ¬P (f (a)), wegen x 7→ a P (f (a)) ∧ ¬P (f (f (a))), wegen x 7→ f (a) . . .} {P (f (a))} {¬P (f (a))} ∅ • Könnten wir nicht zielgerichteter vorgehen? – Matrixklauselform von F2 : {P (x)}, {¬P (f (x))} {P (x)} {¬P (f (x))} x 7→ a x 7→ f (a) {P (f (a))} {¬P (f (a))} ∅ • Dieses Zusammenspiel von Substitutionen und Resolutionsschritten ist die Grundidee der prädikatenlogischen Resolution Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 23 PL-Resolution: Vorüberlegungen (Forts.) • Erfüllbarkeit von F1 = ∀x ∀y R(x)∧ (P (x) ∨ ¬R(y) ∨ ¬R(f (a))) ∧ (¬P (b) ∨ ¬R(g(b, y))) • Matrixklauselform von F1 : {R(x)}, {P (x), ¬R(y), ¬R(f (a))}, {¬P (b), ¬R(g(b, y))} {¬P (b), ¬R(g(b, y))} y 7→ a {R(x)} x 7→ g(b, a) {P (x), ¬R(y), ¬R(f (a))} x 7→ b x 7→ f (a) y 7→ f (a) {R(g(b, a))} {¬P (b), ¬R(g(b, a))} {P (b), ¬R(f (a))} {R(f (a))} {¬P (b)} {P (b)} ∅ • Wichtigster Schritt: Substitutionen auf zwei Klauseln anwenden, so dass zwei unifizierbare Literale entstehen (und möglichst außerdem mehrere Literale zusammen fallen) Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 24 PL-Resolution: Vorüberlegungen (Forts.) • Ein weiteres Beispiel: {¬R(x)}, {R(f (y)), P (y)}, {¬P (x), ¬P (f (b))} {¬R(x)} x→ 7 f (a) {¬R(f (a))} {R(f (y)), P (y)} y 7→ a {¬P (x), ¬P (f (b))} x 7→ f (b) {¬P (f (b))} {R(f (a)), P (a)} {P (a)} ??? • Problem: Die Festlegung auf a im ersten Schritt war eigentlich unnötig • Besser: {¬R(x)} {R(f (y)), P (y)} {¬P (x), ¬P (f (b))} x 7→ f (z) {¬R(f (z))} y 7→ z {R(f (z)), P (z)} x 7→ f (b) {P (z)} z→ 7 f (b) {P (f (b))} {¬P (f (b))} ∅ Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 25 Rechnen mit Substitutionen • Substitutionen: Zur Erinnerung: PL-Substitutionen sind partielle Funktionen PV → PT Schreibweise: σ = {x 7→ a, y 7→ f (b), z 7→ x} Alle Zuordnungen einer Substitution σ werden simultan angewendet Ist σ(x) für eine Variable nicht definiert, so bleibt die Variable durch die Anwendung der Substitution unverändert – Die beiden folgenden Fälle haben also die gleiche Wirkung: ∗ σ(x) ist nicht definiert und – – – – ∗ σ(x) = x • Komposition von Substitutionen: – τ ◦ σ bezeichnet die Substitution, die durch Hintereinanderausführung von (zuerst) σ und (dann) τ entsteht – {x 7→ a, y 7→ f (b), z 7→ y} ◦ {u 7→ f (x), v 7→ g(y), y 7→ b} = {u 7→ f (a), v 7→ g(f (b)), x 7→ a, y 7→ b, z 7→ y} • Komposition von Substitutionen und Belegungen: – Ist A eine Struktur mit aA = 1, bA = 4, f A(3) = 5, σ = {x 7→ a, y 7→ f (u), z 7→ x},und β = {x 7→ 2, u 7→ 3}, so gilt: ∗ JxK(A,β◦σ) = 1 ∗ JyK(A,β◦σ) = 5 Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 26 Unifikatoren • Wir betrachten jetzt das folgende algorithmische Problem: – Gegeben eine Menge von prädikatenlogischen Literalen L1 , . . . , Lm, finde eine Substitution s, die σ(L1 ) = · · · = σ(Lm) erfüllt Beispiel • • • • L1 = R(x, a, y), L2 = R(f (z), u, b), L3 = R(v, u, w) Die Substitution σ1 : u 7→ a v 7→ f (a) w 7→ b x 7→ f (a) y 7→ b z 7→ a bildet alle Literale auf R(f (a), a, b) ab Logik für Inf. / Schwentick / WiSe 07/08 • Eine solche Substitution heißt Unifikator • Um uns möglichst viele Möglichkeiten zu erhalten, interessieren wir uns für Unifikatoren, die möglichst wenige Festlegungen treffen Definition • Eine Substitution σ heißt Unifikator der Literale L1 , . . . , Lm, falls σ(L1 ) = · · · = σ(Lm) gilt • σ heißt allgemeinster Unifikator für L1 , . . . , Lm, falls für jeden Unifikator σ1 von L1 , . . . , Lm eine Substitution σ2 existiert mit σ1 = σ2 ◦ σ • Es muss natürlich nicht immer einen • • Unifikator geben (Beispiele: nächste Folie) Aber wenn es einen Unifikator gibt, dann auch einen allgemeinsten Unifikator Die Abkürzung MGU steht für „most general unifier“ B: Prädikatenlogik - 5. Erfüllbarkeit Folie 27 Unifikatoren (Forts.) Beispiel • Die Substitution σ : u 7→ a v 7→ f (z) w 7→ b x 7→ f (z) y 7→ b • • Es muss natürlich nicht immer einen Unifikator geben Beispiel • Beispiele von Literalpaaren ohne Unifikator: – Verschiedene Relationsnamen: ∗ P (a), R(y) – Positives und negatives Literal: ∗ P (a), ¬P (y) – Verschiedene Funktionssymbole: ∗ P (a, f (x)), P (y, g(b)) – Variablen-Rekursion: ∗ P (a, f (x)), P (y, x) ist sogar ein MGU für – L1 = R(x, a, y), – L2 = R(f (z), u, b), – L3 = R(v, u, w) Beispielsweise lässt sich σ1 : u v w x y z 7→ a 7 → f (a) 7→ b 7→ f (a) 7→ b 7→ a schreiben als: σ1 = {z 7→ a} ◦ σ • Der folgende Unifikationsalgorithmus gibt „unerfüllbar“ • • • aus, wenn er eine dieser Situationen vorfindet Andernfalls gibt er einen allgemeinsten Unifikator aus Auf einen Korrektheitsbeweis für den Algorithmus werden wir verzichten Anhand des folgenden Literal-Paares ist ersichtlich, dass der MGU exponentiell groß werden kann: R(x1 , x2 , . . . , xn−1 , xn ) – R(f (x2 , x2 ), f (x3 , x3 ), . . . , f (xn , xn ), a) – Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 28 Der Unifikationsalgorithmus Alg. 5.4 [Unifikationsalgorithmus] Eingabe: Menge L 6= ∅ von PL-Literalen Ausgabe: Allgemeinster Unifikator σ für L oder „nicht unifizierbar“ 1: if es gibt ein positives und ein negatives Literal in L oder es kommen verschiedene Relationssymbole in L vor then 2: Return „nicht unifizierbar“ 0 3: L := L, σ := ∅ 0 4: while |L | > 1 do 5: Wähle zwei Literale L1 , L2 in L0 6: Seien z1 (in L1 ) und z2 (in L2 ) die ersten Zeichen, an denen L1 und L2 verschieden sind 7: if weder z1 noch z2 ist Variable then 8: Return „nicht unifizierbar“ 9: if z1 ist Variable then 10: Sei t der in L2 mit z2 beginnende Term 11: if z1 kommt in t vor then 12: Return „nicht unifizierbar“ 13: else 14: 15: 16: 17: 18: σ := {z1 7→ t} ◦ σ Wende z1 7→ t auf alle Literale in L0 an else Falls z2 Variable ist, analog Return σ Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 29 Unifikationsalgorithmus: Beispiel Beispiel Beispiel • L = {P (f (x), g(y, h(a, z))), P (f (g(a, b)), g(g(u, v), w))} • Also: |L0| = 2 • Sei – – L1 = P (f (x), g(y, h(a, z))) L2 = P (f (g(a, b)), g(g(u, v), w)) • z1 = x, z2 = g • Also: t = g(a, b) und x kommt nicht in t vor ➞ σ := {x 7→ g(a, b)} • L0 = {P (f (g(a, b)), g(y, h(a, z))), P (f (g(a, b)), g(g(u, v), w))} • Immer noch: |L0| = 2 • Sei – – L1 = P (f (g(a, b)), g(y, h(a, z))) L2 = P (f (g(a, b)), g(g(u, v), w)) • z1 = y , z2 = g • t = g(u, v) und y kommt in t nicht vor Logik für Inf. / Schwentick / WiSe 07/08 ➞ σ := {y 7→ g(u, v)} ◦ σ • L0 = {P (f (g(a, b)), g(g(u, v), h(a, z))), P (f (g(a, b)), g(g(u, v), w))} • Immer noch: |L0| = 2 • – L1 = P (f (g(a, b)), g(g(u, v), h(a, z))) – L2 = P (f (g(a, b)), g(g(u, v), w)) • z1 = h, z2 = w • Also: t = h(a, z) und w kommt nicht in t vor ➞ σ := {w 7→ h(a, z)} ◦ σ • L0 = {P (f (g(a, b)), g(g(u, v)), h(a, z))} • Also: |L0| = 1 • Ausgabe: {x 7→ g(a, b), y 7→ g(u, v), B: Prädikatenlogik - 5. Erfüllbarkeit w 7→ h(a, z)} Folie 30 Prädikatenlogische Resolventen Definition • Seien K, K 0 prädikatenlogische Klauseln • Seien τ, τ 0 Variablenumbenennungen, so dass H =def τ (K) und H 0 =def τ 0 (K 0 ) keine Variablen gemeinsam haben • Seien L1 , . . . , Lk Literale in H und L01 , . . . , L0m Literale in H 0, so dass {¬L1 , . . . , ¬Lk, L01 , . . . , L0m} unifizierbar ist mit allgemeinstem Unifikator σ • Dann heißt σ((H − {L1 , . . . , Lk}) ∪ (H 0 − {L01 , . . . , L0m})) prädikatenlogische Resolvente von K und K 0 Beispiel {P (x), S(f (x), a)} ∅ {P (x), S(f (x), a)} {x 7→ f (u)} {¬P (f (x)), ¬P (y), ¬R(z)} {x 7→ u} {¬P (f (u)), ¬P (y), ¬R(z)} {y 7→ f (u)} {S(f (f (u)), a), ¬R(z)} Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 31 Das prädikatenlogische Resolutionslemma Lemma 5.5 [PL-Resolutionslemma] (1) Seien K, K 0 prädikatenlogische Klauseln (2) Seien τ, τ 0 Variablenumbenennungen, so dass H =def τ (K) und H 0 =def τ 0 (K 0 ) keine Variablen gemeinsam haben (3) Seien L1 , . . . , Lk Literale in H und L01 , . . . , L0m Literale in H 0, so dass {¬L1 , . . . , ¬Lk, L01 , . . . , L0m} unifizierbar ist mit allgemeinstem Unifikator σ (4) Sei K 00 = σ((H − {L1 , . . . , Lk})∪ (H 0 − {L01 , . . . , L0m})) die prädikatenlogische Resolvente von K und K 0 (5) Sei A eine zu K 0 und K 00 passende Struktur Dann gilt: Falls (a) für alle Belegungen β : (A, β) (b) für alle Belegungen β : (A, β) |= K und |= K 0, so gilt auch für alle Belegungen β : (A, β) |= K 00 Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 32 Das PL-Resolutionslemma: Illustration und Beweisidee K = {. . . , L , . . .} τ H = {M1 , . . . , Mn ,L1 , . . . , Lk } {. . . , L0 , . . .} = K 0 τ0 {L01 , . . . , L0m ,M10 , . . . , Ml0 } = H 0 σ σ K 00 = {M1 , . . . , Mn ,M10 , . . . , Ml0 } • Sei A eine Struktur, so dass (a) für alle passenden Belegungen β : (A, β) (b) für alle passenden Belegungen β : (A, β) |= K und |= K 0, • Sei β eine passende Belegung für K 00 • Zu zeigen: (A, β) |= K 00 • (a) ⇒ β ◦ σ ◦ τ macht ein Literal L aus K wahr – 1. Fall: τ (L) = Mi, für ein i (oben: i = 1) ⇒ dann wird σ(Mi) in K 00 wahr – 2. Fall: τ (L) = Li, für ein i (oben: i = 1) ➨ für alle i ist L0i falsch ➨ β ◦ σ ◦ τ 0 macht ein Literal L0 aus K 0 wahr und τ 0(L0) = Mj0 , für ein j (oben: j = 1) ➨ Dann wird σ(Mj0 ) in K 00 wahr Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 33 Prädikatenlogisches Resolutionslemma: Beweis Beweisskizze für Lemma 5.5 • Seien K, K 0, K 00 usw. wie im Lemma vorgegeben • Sei β eine passende Belegung für K 00 • Vorüberlegung: – β ◦ σ ◦ τ ist eine zu K passende Belegung – β ◦ σ ◦ τ 0 ist eine zu K 0 passende Belegung • Zu zeigen: (A, β) |= K 00 • Wegen (a) gilt: (A, β ◦ σ ◦ τ ) |= K ➨ Es gibt ein Literal L in K mit (A, β ◦ σ ◦ τ ) |= L • (Andere Notation: JLK(A,β◦σ◦τ) =1) • Wir unterscheiden die beiden Fälle: (i) τ (L) ∈ H − {L1 , . . . , Lk} (ii) τ (L) ∈ {L1 , . . . , Lk} Logik für Inf. / Schwentick / WiSe 07/08 Beweisskizze (Forts.) • Fall (i): τ (L) ∈ H − {L1 , . . . , Lk} ➨ L00 =def (σ ◦ τ )(L) ist Literal von K 00 und JL00 K(A,β) = J(σ ◦ τ )(L)K(A,β) =JLK(A,β◦σ◦τ) =1 • Fall (ii): τ (L) ∈ {L1 , . . . , Lk} • Sei i ≤ k mit τ (L) = Li • Da σ Unifikator für ¬Li und alle L0j , folgt σ(¬Li) = σ(L0j ) für alle j ≤ m ➨ für alle j ≤ m: JL0j K(A,β◦σ) = 0 ➨ für alle L0 ∈ K 0 mit τ 0(L0) ∈ {L01 , . . . , L0m} gilt: JL0K(A,β◦σ◦τ 0 ) = 0 ➨ wegen (b) gibt es L0 ∈ K 0 mit τ 0(L0) 6∈ {L01 , . . . , L0m} und JL0K(A,β◦σ◦τ 0 ) = 1 ➨ L00 =def (σ ◦ τ 0)(L0) ist Literal von K 00 mit JL00K(A,β) = 1 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 34 Das Lifting-Lemma • Eine Substitution σ heißt Grundsubstitution für eine PL-Klausel K , falls σ(K) keine Variablen mehr enthält Lemma 5.6 [Lifting-Lemma] • Seien K1 , K2 prädikatenlogische Klauseln mit Grundsubstitutionen σ1 , σ2 • Seien K10 = σ1 (K1 ), K20 = σ2 (K2 ) • Dann gilt: falls K30 aussagenlogische Resolvente von K10 und K20 ist, so gibt es eine PL-Resolvente K3 von K1 und K2 und eine Grundsubstitution σ3 mit σ3 (K3 ) = K30 K1 σ1 K10 K2 K3 σ3 σ2 K20 K30 Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 35 Lifting-Lemma: Beispiel • Der nicht schwierige aber etwas technische Beweis des Lifting-Lemmas findet sich in [KuK] • Wir geben die Idee hier anhand eines Beispiels wieder: – K1 = {P (x, y), ¬R(g(x), f (y))} – K2 = {R(x, y), R(g(a), z)} K1 ={P (x, y), ¬R(g(x), f (y))} x y 7→ 7→ a u x 7→ a y 7→ b K2 ={R(x, y), R(g(a), z)} a ) (u ) ( g f 7→ 7→ x ,z y x 7→ g(a) y, z 7→ f (b) K3 ={P (a, u)} K10 ={P (a, b), ¬R(g(a), f (b))} u 7→ b K20 ={R(g(a), f (b))} K30 ={P (a, b)} Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 36 Prädikatenlogische Resolution • Für PL-Klauselmengen K definieren wir: – Res(K) =def K ∪ {K | K ist PL-Resolvente zweier Klauseln aus K} – Res0 (K) =def K – Resk(K) =def Res(Resk−1 (K)), – Res∞(K) =def [ für alle k Res k ≥1 (K) k≥0 Satz 5.7 [PL-Resolutionssatz] • Eine prädikatenlogische Formel F ist genau dann unerfüllbar, wenn für ihre Matrixklauselform K gilt: ∅ ∈ Res∞(K) • Für eine Klauselmenge K bezeichne ∀K im Folgenden die Formel, die aus der KNF zu K durch All-Quantifizierung aller vorkommenden Variablen entsteht Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 37 Der Resolutionssatz der Prädikatenlogik: Beweis Satz 5.7 [PL-Resolutionssatz] • Eine prädikatenlogische Formel F ist genau dann unerfüllbar, wenn für ihre Matrixklauselform K gilt: ∅ ∈ Res∞(K) Beweisskizze • Korrektheit des PL-Resolutionskalküls: Zu zeigen: ∅∈ Res∞(K) ⇒ F unerfüllbar • Wir zeigen zuerst, dass aus dem PL-Resolutionslemma für jede PL-Klauselmenge K0 folgt: ∀K0 erfüllbar ⇒ ∀Res(K0) erfüllbar – Sei A ein Modell für ∀K0 – Sei K ∈ Res(K0 ) Resolvente von K1 , K2 ∈ K0 – Wegen Lemma 5.5 gilt dann: Beweisskizze für Satz 5.7 (Forts.) • Vollständigkeit des PL-Kalküls: Zu zeigen: F unerfüllbar ⇒ ∅ ∈ Res∞(K) • Sei also F unerfüllbar • Mit Satz 5.2 folgt, dass E(F ) unerfüllbar ist ➨ ∅ ∈ Res∞(E(F )) ➨ Es gibt also einen aussagenlogischen Resolutionsbeweis für ∅, der (endlich viele) Klauseln aus E(F ) verwendet • Durch Anwendung des Lifting-Lemmas auf jeden einzelnen Resolutionsschritt lässt sich daraus ein prädikatenlogischer Resolutionsbeweis gewinnen A |= ∀K ➨ A ist ein Modell für ∀Res(K0) • Der Rest des Korrektheits-Beweises erfolgt wie in Lemma 3.2 durch Induktion Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 38 Inhalt 5.1 Einleitung 5.2 Herbrand-Strukturen und Grundresolution 5.3 Unifikation und prädikatenlogische Resolution 5.4 Logische Programmierung: Prolog Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 39 Prolog: Beispiel Beispiel • Wir betrachten wieder das folgende Prolog-Programm: ancestor(X,Y) :- parent(X,Y). ancestor(X,Y) :- parent(X,Z),ancestor(Z,Y). parent(bob,allen). parent(dave,bob). parent(fred,dave). ? :- ancestor(Y,allen). • Konventionen in Prolog: • • – Variablennamen beginnen mit Großbuchstaben – Prädikate, Funktionen, Konstanten beginnen mit Kleinbuchstaben Wir verwenden folgende Relations- und Konstantensymbole: – P für parent, A für ancestor – a für allen, b für bob, d für dave und f für fred Umwandlung in Matrixklauselform ergibt: – {¬P (x, z), ¬A(z, y), A(x, y)} – {¬P (x, y), A(x, y)} – {P (b, a)}, {P (d, b)}, {P (f, d)} – {¬A(y, a)} (aus der Zielklausel) Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 40 Prolog: Beispiel (Forts.) Beispiel {¬P (x, y), A(x, y)} {¬A(y, a)} {¬P (x, z), ¬A(z, y), A(x, y)} {P (b, a)} y 7→ x y 7→ a x 7→ z y 7→ a {¬A(x, a)} {¬P (x, z), ¬A(z, a), A(x, a)} {¬P (x, z), ¬A(z, a)} {P (f, d)} {P (d, b)} {¬P (z, a), A(z, a)} {¬P (x, z), ¬P (z, a)} z 7→ b {¬P (x, b), ¬P (b, a)} {¬P (x, b)} • Komposition von y 7→ x und x 7→ d liefert die „Lösung“ y x→ 7 d {¬P (d, b)} 7→ d ∅ Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 41 Ein komplizierteres Prolog-Beispiel • Eine leicht modifizierte Version des Affe-Stuhl-Banane-Beispiels aus Kapitel 1: (1) Wenn der Affe die Banane greifen kann, kann er sie auch essen (2) Ist der Stuhl in der Mitte des Raumes und ist der Affe auf dem Stuhl, so kann er die Banane greifen (3) Befinden sich der Affe und der Stuhl an derselben Position des Raumes, so kann der Affe auf den Stuhl steigen (4) Befinden sich der Affe und der Stuhl an derselben Position des Raumes, so kann der Affe den Stuhl zu einer anderen Position schieben (5) Der Affe kann zur Position des Stuhles laufen • Wir wollen ein Prolog-Programm entwerfen, das nicht nur testet, ob der Affe die Banane essen kann, sondern auch einen Plan dafür findet • Dazu verwenden wir: – Terme, die verschiedene Zustände unseres Szenarios repräsentieren: state(PosAffe,AufStuhl,PosStuhl,HatBanane) door Funktions- door true true window window symbol false false middle middle – das Prädikat can_eat(State,Actions) mit der intuitiven Bedeutung: Von State aus kann der Affe mit Actions zum Verzehr der Banane kommen – das Prädikat reach(Actions), das wahr werden soll, wenn der Affe mit Actions aus der Situation mit dem Stuhl an der Tür und dem Affen am Fenster zum Verzehr gelangen kann Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 42 Ein komplizierteres Prolog-Beispiel (Forts.) (1) Wenn der Affe die Banane greifen kann, kann er sie auch essen (2) Ist der Stuhl in der Mitte und der Affe auf dem Stuhl, so kann er die Banane greifen (3) Befinden sich der Affe und der Stuhl an derselben Position des Raumes, so kann der Affe auf den Stuhl steigen (4) Befinden sich der Affe und der Stuhl an derselben Position des Raumes, so kann der Affe den Stuhl zu einer anderen Position schieben (5) Der Affe kann zur Position des Stuhles laufen state(PosAffe,AufStuhl,PosStuhl,HatBanane) door window middle (1’) (2’) (3’) (4’) (5’) (6’) (7’) true false door window middle true false can_eat(state(X,Y,Z,true),eat). can_eat(state(middle,true,middle,false),grasp(Act1)):can_eat(state(middle,true,middle,true),Act1). can_eat(state(Pos,false,Pos,false),climb(Act2)):can_eat(state(Pos,true,Pos,false),Act2). can_eat(state(Pos1,false,Pos1,false),push(NewPos,Act3)):can_eat(state(NewPos,false,NewPos,false),Act3). can_eat(state(Pos2,false,ChairPos,false),go(NewPos1,Act4)):can_eat(state(NewPos1,false,ChairPos,false),Act4). reach(Actions):can_eat(state(door,false,window,false),Actions). ? :- reach(Actions) Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 43 Ein komplizierteres Prolog-Beispiel (Forts.) Beispiel {R(x), ¬C(s(d, f, w, f ), x)} {C(s(y, f, y 0 , f ), go(z, x)), ¬C(s(z, f, y 0 , f ), x)} {¬R(x)} {¬C(s(d, f, w, f ), x)} w y {¬C(s(z, f, w, f ), x)} {C(s(y, f, y, f ), c(x)), ¬C(s(y, t, y, f ), x)} {C(s(m, t, m, f ), gr(x)), ¬C(s(m, t, m, t), x)} {C(s(y, y 0 , y 00 , t), e)} 7→ 7→ d ,y 7→ {C(s(y, f, y, f ), p(z, x)), ¬C(s(z, f, z, f ), x)} y x 7→ go(z, x) 0 w x 7→ p(z, x), z 7→ w {¬C(s(z, f, z, f ), x)} x 7→ c(x), z 7→ y y 7→ m y 0 7→ t y 00 7→ m {¬C(s(y, t, y, f ), x)} x 7→ gr(x) y 7→ m {¬C(s(m, t, m, t), x)} x 7→ e • Durch Komposition der Substitutionen ergibt sich die Lösung x 7→ go(w, p(m, c(gr(e)))) Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit ∅ Folie 44 PL-Resolution: Einschränkungen • Die PL-Resolution ist vollständig (Satz 5.7) • Also: wenn eine Formelmenge unerfüllbar ist, findet die PL-Resolution einen Beweis dazu • Problem: es gibt oft sehr viele resolvierbare Klauseln ➞ viele Wege, die (möglicherweise) nicht zum Ziel führen • Wir betrachten jetzt Einschränkungen der PL-Resolution ➞ kleinerer Suchraum – Einige dieser Einschränkungen sind vollständig, einige sind nur für Hornformeln vollständig – Für Prolog wird in der Regel die SLD-Resolution verwendet • Danach betrachten wir systematische Suchstrategien zum Auffinden von SLD-Resolutionen • Wir folgen jetzt weitgehend dem Schöning-Buch [Sch] Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 45 PL-Resolution: Vollständige Restriktionen Beispiel: Lineare Resolution • K bezeichne immer die gegebene Klauselmenge • P-Restriktion: eine der beiden verwendeten {A, B}{A, ¬B} {¬A, B} {¬A, ¬B} {A} Klauseln darf nur positive Literale enthalten {B} • N-Restriktion: eine der beiden verwendeten Klauseln darf nur negative Literale enthalten {¬A} • Lineare Restriktion: Der Resolutionsbeweis besteht aus einer Folge K0 , . . . , Kn und es gelten: – K0 ∈ K, – für jedes i > 0 ist Ki Resolvente von Ki−1 und einer anderen Klausel (Kj mit j < i oder aus K) ∅ Satz 5.8 • Resolution mit P-Restriktion, N-Restriktion oder linearer Restriktion ist jeweils vollständig • Der Beweis kann zunächst für die Aussagenlogik geführt und dann per Lifting-Lemma auf die Prädikatenlogik übertragen werden (siehe [Sch]) Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 46 PL-Resolution: Unvollständige Restriktionen • Input-Restriktion: Mindestens eine der beiden verwendeten Klauseln muss immer aus K sein • Einheits-Resolution: Mindestens eine der beiden verwendeten Klauseln muss einelementig sein • SLD-Resolution: – Lineare Restriktion mit negativem K0 und – Input-Restriktion – (und eine Auswahlfunktion für das zu resolvierende Literal in der jeweils aktuellen Zielklausel) • Ein Beispiel für die SLD-Resolution haben wir schon gesehen: Affe, Stuhl, Banane Satz 5.9 (a) Resolution mit Input-Restriktion, Einheits-Resolution und SLD-Resolution ist jeweils unvollständig (b) Resolution mit Input-Restriktion, Einheits-Resolution und SLD-Resolution ist jeweils vollständig für Hornklauseln Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 47 Logik-Programme • Logik-Programme (Prolog-Programme) verwenden nur Hornklauseln: Name Klausel Regel Prozedurklauseln {¬A1 , . . . , ¬An, B} {B} {¬A1 , . . . , ¬An} B :- A1,...,An. B. ? :- A1,...,An Tatsachenklauseln Zielklauseln • Die SLD-Resolution startet mit der Zielklausel • In jedem Schritt wird mit einer Prozedurklausel oder einer Tatsachenklausel resolviert: ➞ Ein Atom der Zielklausel muss ausgewählt werden (mit der Auswahlfunktion) ➞ Eine passende Klausel für dieses Atom muss ausgewählt werden • Um Variablendisjunktheit zu erreichen, genügt es, jeweils die Variablen in der Prozedurklausel umzubenennen Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 48 SLD-Resolution: Berechnungen • Wenn wir einen SLD-Beweis schrittweise ➞ aufbauen, haben wir also jeweils – eine Zielklausel G und – eine Substitution σ , die die bisherigen Resolutionsschritte zusammenfasst Konfiguration: (G, σ) • Wir schreiben (G1 , σ1 ) `K (G2 , σ2 ) • falls – G2 durch Anwendung eines Resolutionsschrittes mit einer Klausel aus K aus (G1 , σ1 ) hervorgeht und – σ2 = σ ◦ σ1 ist, wobei σ die auf G1 angewendete Substitution bezeichnet Eine Berechnung eines Logik-Programmes K mit Zielklausel G ist eine Folge (G, [ ]) `K (G1 , σ1 ) `K (G2 , σ2 ) `K · · · • Beispiel • Beispiel-Programm: p(X,Z) :- q(X,Y), p(Y,Z). p(U,U). q(a,b). ? :- p(V,b). ({¬P (v, b)}, [ ]) `K ({¬Q(x, y), ¬P (y, b)}, [v/x]) `K ({¬P (b, b)}, [v/a]) `K (∅, [v/a]) • Lösung: v 7→ a • (es gibt natürlich hier noch andere Lösungen) (im Allgemeinen unendlich) Erfolgreiche Berechnung: (G, [ ]) `K (G1 , σ1 ) `K · · · `K (∅, σn) Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 49 Vollständigkeit der SLD-Resolution für die PL: Präzisierung • Das Verhältnis zwischen Folgerungen aus und Berechnungen von • Logik-Programmen lässt sich präzise beschreiben Für eine Formel F = A1 ∧ · · · ∧ Ak und eine Substitution τ , die jeder Variablen von F einen Grundterm zuordnet, nennen wir τ (F ) eine Grundinstanz von F Satz 5.10 [Clark] (a) Ist K die Klauselmenge zu einem Logik-Programm P mit Zielklausel G von der Form ? :- A1,...,Ak und ist (G, [ ]) `K · · ·K ` (∅, σ) eine erfolgreiche Berechnung, so ist jede Grundinstanz von σ(A1 ∧ · · · ∧ Ak) eine Folgerung aus P (b) Ist für ein σ jede Grundinstanz von σ(A1 ∧ · · · ∧ Ak) eine Folgerung aus P , so gibt es eine erfolgreiche Berechnung (G, [ ]) `K · · ·K ` (∅, σ 0), und eine Substitution σ 00 mit σ(A1 ∧ · · · ∧ Ak) = σ 00(σ 0(A1 ∧ · · · ∧ Ak) • Also: die Folgerungen aus einem Logik-Programm lassen sich gerade durch erfolgreiche Berechnungen finden • Der Beweis findet sich in [Sch] Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 50 Auswertungsstrategien • Zu einem Logik-Programm und einer Zielklausel kann es viele verschiedene Berechnungen geben • In jedem Schritt gibt es zwei Wahlmöglichkeiten: (1) Auswahl eines Literals in der (aktuellen) Zielklausel (2) Auswahl der passenden Prozedurklausel Beispiel A :A :B :B. B :C :C. B,C. D. D. ?:-A,B,C ?:-A,B,C E,F. A,C. ?:-A,D,C ? ;- A,B,C ?:-A,C ?:-A,B,C ?:-A,E,F,C • Die Reihenfolge der Auswertung hinsichtlich (1) ist egal ➞ Zu jeder erfolgreichen Berechnung gibt es eine äquivalente Berechnung, in der immer mit dem ersten Literal resolviert wird • In Prolog wird immer eine solche „Links-nach-rechts-Auswertung“ vorgenommen ➞ kanonische Berechnungen Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 51 Auswertungsstrategien (Forts.) • Die möglichen kanonischen Berechnungen lassen sich etwas kompakter in einem Baum darstellen: Die Ebenen, in denen Literale ausgewählt werden, entfallen jeweils Beispiel 1: 2: 3: Z: q(X,Z):-q(Y,Z), r(X,Y) q(X,X). r(b,c). ?:-q(X,c) ? :- q(X,c). 1 ?:-q(Y,c),r(X,Y) 1 2 ?:-q(V,c),r(Y,V),r(X,Y) 1 2 2 Ergebnis: X 7→ c ?:-r(X,c) 2 3 ?:-r(Y,c),r(X,Y) 3 2 Ergebnis: X 7→ b ?:-r(X,b) unendlich nicht erfolgreich • Der Baum kann mit Backtracking durchsucht werden Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 52 Auswertungsstrategien (Forts.) • Zur systematischen Durchsuchung des Baumes bieten sich (wie immer) zunächst zwei Strategien an: – Breitensuche: ∗ Zuerst alle Kinder der Wurzel, dann alle Kinder der Kinder usw. ∗ Auf diese Weise wird jede Lösung gefunden ∗ Aber es ist sehr aufwändig – Tiefensuche: ∗ Immer zuerst im ersten Teilbaum suchen ∗ wenn er ganz durchsucht ist, im zweiten Teilbaum weitersuchen usw. ∗ Das ist oft effizient und wird deshalb in Prolog üblicherweise verwendet ∗ Problem: Die Auswertung eines unendlichen Teilbaumes terminiert nicht! ➞ Das muss beim Schreiben von Prolog-Programmen im Auge behalten werden... Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 53 Zusammenfassung • Es ist nicht leicht, die Erfüllbarkeit prädikatenlogischer Formeln zu • testen: – Wir haben nur Semi-Entscheidungsverfahren für die Unerfüllbarkeit kennen gelernt: ∗ Der Grundresolutionsalgorithmus führt das Problem auf einen Unentscheidbarkeitstest für eine unendliche Menge aussagenlogischer Klauseln zurück ∗ Die prädikatenlogische Resolution versucht, „direkt“ einen Unerfüllbarkeitsbeweis zu finden – Es gibt erfüllbare Formeln, die nur unendliche Modelle haben – Allerdings: wenn es ein Modell gibt, so auch ein abzählbares Logische Programmierung: – Prolog-Programme verwenden nur Hornformeln – Die Auswertung versucht, einen SLD-Resolutionsbeweis zu finden – Die Suchstrategie wählt immer das am weitesten links stehende Literal für den nächsten Resolutionsschritt und verfolgt eine Tiefensuche • Mehr über wissensbasierte Systeme und logische Programmierung lernen Sie in DVEW Logik für Inf. / Schwentick / WiSe 07/08 B: Prädikatenlogik - 5. Erfüllbarkeit Folie 54