Logikprogrammierung � Berechnung durch Resolution � 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 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. 234 Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 6.1 Logikprogrammierung – Berechnung durch Resolution Beispiel {Add(x, 0, x)}, {¬Add(x, y , z), Add(x, s(y ), s(z))}, {¬Add(s 3 (0), s 2 (0), u)} 235 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 �= x} {D(f , x, f � ) ∧ D(g , x, g � ) → D(+(f , g ), x, +(f � , g � ))} {D(f , x, f � ) ∧ D(g , x, g � ) → D(∗(f , g ), x, +(∗(f , g � ), ∗(f � , 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