Korrektheit und Vollständigkeit

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