Resolution ist auch eine Berechnung

Werbung
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
Herunterladen