A Fachbereich Mathematik Dr. Mathias Kegelmann Peter Lietz Tobias Löw Florence Micol TECHNISCHE UNIVERSITÄT DARMSTADT Sommersemester 2003 7. Juli 2003 Einführung in die Logik für Informatiker Lösungshinweise zum zehnten Übungsblatt Präsenzübungen (P 29) Unifikation Finde jeweils den allgemeinsten Unifikator der folgenden Formeln bzw. Terme, falls möglich: Die folgenden (teil-)unifizierten Formeln bzw. Terme wurden mit einer Left-First-Depth-FirstVariante des Unifikationsalgorithmus produziert. (a) P (x, f (y)), P (g(y, y), z) unifizierbar Substitution: σ = [g(y, y)/x][f (y)/z], Unifikator: P (g(y, y), f (y)) (b) f (x, g(y)), f (h(y), h(y)) nicht unifizierbar Teilsubstitution: σ = [h(y)/x], dann Knoten-Mismatch g 6= h (c) P (f (x, f (x, y)), y), P (f (u, v), v) nicht unifizierbar Teilsubstitution: σ = [u/x][f (u, y)/v], dann Occurs-Check-Fehler wegen [f (u, y)/y]. (d) P (f (x, y)), Q(v, w) nicht unifizierbar Knoten-Mismatch P 6= Q (e) P (f (x, g(y)), x, g(z)), P (f (u, u), w, w) unifizierbar Substitution: σ = [u/x][g(y)/u][g(y)/w][y/z], Unifikator: P (f (g(y), g(y)), g(y), g(y)) (P 30) Resolutionsverfahren Zeige, daß die folgenden vier Formeln zusammen inkonsistent sind: 1. ∀ x. ∀ y. P (x, y) → P (y, x) 2. ∀ x. ∀ y. ∀ z. (P (x, y) ∧ P (y, z)) → P (x, z) 3. ∀ x. ∃ y. P (x, y) 4. ∃ x. ¬P (x, x) Bringen wir in der Konjuktion der Formeln zuerst den ∃-Quantor der letzten Formel und dann die Quantoren der vorletzten Formel nach vorne und skolemisieren, so erhalten wir folgende Klausen 1. {¬P (x, y), P (y, x)} 2. {¬P (x, y), ¬P (y, z)), P (x, z)} 3. {P (x, f (x))} 4. {¬P (c, c)} Substitution von 1. mit [f (x)/y] und Resolution mit 3. ergibt 5. {P (f (x), x)} Substitution von 2. mit [f (x)/y] und Resolution mit 3. ergibt 6. {¬P (f (x), z), P (x, z)} Substitution von 5. und 6. mit [z/x] und Resolution ergibt 7. {P (z, z)} Substitution von 7. mit [c/z] und Resolution mit 4. ergibt 8. ∅ (P 31) Unifikation von mehr als zwei Formeln Finde jeweils den allgemeinsten Unifikator der folgenden Formeln, falls möglich (a ist eine Konstante): Wir gehen wie im (P 29) vor mit folgender Erweiterung: Unterscheiden sich die Syntaxbäume an einer Stelle, und ist keine der Knoten eine Variable, dann sind die Bäume nicht unifizierbar, andernfalls lassen wir einen Baum mit einer Variable an dem Knoten weg, und unifizieren die restlichen Teilbäume. Gelingt dies, dann ersetzen wir die Variable durch den unifizierten Teilbaum. (Klar?) (a) P (a, x, f (g(y))), P (y, f (z), f (z)), P (u, f (g(w)), f (g(w))) Folgende Teilbäume sind zu unifizieren: • a,y,u: Anwenden der erweiterten Regeln ergibt σ1 = [a/u][a/y] • x,f (z),f (g(w)):Anwenden der erweiterten Regeln ergibt σ2 = σ1 [g(w)/z][f (g(w))/x] • a,w,w:Anwenden der erweiterten Regeln ergibt σ3 = σ2 [a/w] Die Unifizierte Formeln lautet: P (a, f (g(a)), f (g(a))) (b) Q(x, y), Q(f (y), z), Q(f (f (z)), z) Folgende Teilbäume sind zu unifizieren: • x,f (y),f (f (z)): Anwenden der erweiterten Regeln ergibt σ1 = [f (z)/y][f (f (z))/x] • f (z),z,z:Anwenden der erweiterten Regeln ergibt einen Occurs-Check-Fehler bei der Unifikation von f (z) und z.