Deduktion mit Resolution

Transcription

Deduktion mit Resolution
Deduktion
ß Menge von Ausdrücken der Prädikatenlogik beschreibt
einen bestimmten Sachverhalt, quasi eine "Theorie" des
Anwendungsbereiches. Was folgt logisch aus dieser
Theorie?
ß Deduktion: aus wahren Aussagen andere notwendigerweise wahre Aussagen ableiten
ß Beispiele
Wenn es regnet, dann wird die Strasse nass.
Es regnet.
----------------------------------------------------Die Strasse wird nass.
Vögel können fliegen.
Tweetie ist ein Vogel.
-------------------------Tweetie kann fliegen.
ß verallgemeinert zur universellen Schlussregel "modus
ponens"
Wenn A gilt, dann gilt B.
A gilt.
-----------------------------B gilt.
ß Wie kann man diese und andere Schlussregeln
formalisieren?
Resolution 1
Semantische Folgerungsbeziehung
ß Wenn in einer bestimmten Situation prädikatenlogische
Aussagen A wahr sind, sind dann notwendigerweise
auch andere prädikatenlogische Aussagen T wahr?
ß Folgerung sollte für alle Fälle gelten, in denen A und T
wahr sind
ß Es gilt die logische Konsequenz
A |= T
wenn jedes Modell der Menge A auch ein Modell der
Menge T ist.
Resolution 2
Syntaktische Folgerungsbeziehung
ß nach festen syntaktischen Regeln – Deduktionsregeln
oder Inferenzregeln – werden rein mechanisch aus
Aussagen andere Aussagen hergeleitet
ß Aussagen T sind aus einer Menge von Aussagen A
h e r l e i t b a r , wenn man T nach endlichen vielen
Anwendungen der Regeln auf A erhält
A |- T
Ausgangsaussagen A werden
hergeleitete Aussagen T Theoreme
Axiome
genannt,
Herleitung wird Beweis genannt
ß Beweis ist endliche Folge von Aussagen
P1, P2, ..., Pn
wobei jedes Pi ein Axiom oder eine nach den Regeln
hergeleitete Aussage ist
Beweis gelingt, wenn die letzte Aussage Pn das zu
beweisende Theorem ist
ß Beweisstrategie
effektiv – Beweis gelingt
effizient – möglichst wenig fehlschlagende Beweisversuche, möglichst kurze Beweise
Resolution 3
Zusammenhang zwischen semantischer
und syntaktischer Folgerung
ß Deduktionssystem muss korrekt sein, d.h. jedes
hergeleitete Theorem muss logische Konsequenz der
Axiome sein
A |- T Æ A |= T
ß Deduktionssystem sollte vollständig sein, d.h. jede
logische Konsequenz der Axiome sollte auch hergeleitet
werden können
A |= T Æ A |- T
ß wenn ein Deduktionssystem korrekt und vollständig ist,
dann kann man die logische Konsequenz durch einen
Beweis ersetzen
A |= T ´ A |- T
Resolution 4
Deduktionssysteme
ß Deduktionssystem besteht aus Axiomen, Deduktionsregeln und – was oft vergessen wird – einer Beweisstrategie
ß axiomatische Deduktionssysteme
enthalten meistens mehrere Deduktionsregeln
zusätzlich zu den Axiomen, die den Diskursbereich
beschreiben, werden sogenannte logische Axiome
verwendet, d.h. Tautologien zur Umformung von
Ausdrücken
axiomatische Systeme eignen sich in erster Linie für
theoretische Untersuchungen
sie sind für praktische und speziell für automatische
Beweise schlecht geeignet
ß natürliche Deduktionsysteme
enthalten Deduktionsregeln, die das menschliche
Beweisen widerspiegeln sollen
gut für das Arbeiten mit Papier und Bleistift
basieren auf menschlicher Intuition
ß Resolutionssysteme
Grundlage für automatisches Beweisen und für logische
Programmiersprachen
ß Tableaux-Systeme
können manuell wie automatisch verwendet werden
Resolution 5
Resolution
ß Resolution ist ein Deduktionssystem mit einer einzigen
Deduktionsregel
ß Resolution entstand um 1970 beim Versuch, Deduktion zu
automatisieren, d.h. Beweise durch den Computer
automatisch ausführen zu lassen
ß Grundidee der Resolution: aus den beiden wahren
Aussagen
P⁄Q
ÿP⁄R
kann man die wahre Aussage
Q⁄R
schliessen, denn entweder ist P wahr, dann muss R wahr
sein, oder P ist falsch, dann muss Q wahr sein; in jedem
Fall ist dann Q ⁄ R wahr
ß Resolution setzt voraus, dass Aussagen in der
Klauselform, d.h. als konjunktive Normalform, dargestellt
werden
Resolution 6
Schlussregel Resolution
ß Resolutionsregel (Robinson)
Klausel K1 mit dem positiven Literal L
Klausel K2 mit dem negativen Literal ÿ L
Aus den Klauseln K1 und K2 leitet man die Resolvente,
d.h. die Klausel {K1 - {L}} » { K2 - {ÿ L}} ab.
K1
K2
-----------------------------------{K1 - {L}} » { K2 - {ÿ L}}
ß Beispiel
p⁄q⁄ÿr
s⁄ÿp
-----------------------------------q⁄ÿr⁄s
Resolution 7
Andere Schlussregeln als Resolution
ß Resolution ist eine mächtige Schlussregel, die andere
Schlussregeln als Spezialfälle enthält
ß modus ponens
PÆQ
P
--------------------Q
als Resolution
ÿP⁄Q
P
--------------------Q
ß modus tollens
PÆQ
ÿQ
--------------------ÿP
als Resolution
ÿP⁄Q ÿQ
--------------------ÿP
Resolution 8
Leere Klausel
ß leere Klausel {}, d.h. Klausel ohne positive und negative
Literale, steht für die widersprüchliche Aussage ^ , d.h.
für Inkonsistenz
ß Wie kann man das verstehen?
Es gilt
A⁄^≡A
AŸÿ^≡A
Dann
(N1 Ÿ N2 Ÿ ... Ÿ Nm) Æ (P1 ⁄ P2 ⁄ ... ⁄ Pn)
≡ (N1 Ÿ N2 Ÿ ... Ÿ Nm Ÿ ÿ ^) Æ (P1 ⁄ P2 ⁄ ... ⁄ Pn ⁄ ^)
leere Klausel enthält keine N und keine P
≡ÿ^Æ^
≡ÿÿ^⁄^
≡^⁄^
≡^
Resolution 9
Leere Klausel
ß Beispiel
Klauselmenge M = {ÿp ⁄ q, p, ÿ q}
Resolutionen
ÿp ⁄ q
p
----------------q
ÿq
------------------{}
d.h. die Klauselmenge M ist inkonsistent
andere Ableitung der leeren Klausel
ÿp ⁄ q ÿq
----------------ÿp
p
------------------{}
ß Eine Klauselmenge ist inkonsistent, wenn man durch
Resolution auf irgendeine Weise die leere Klausel {}
ableiten kann.
Resolution 10
Deduktionstheorem
ß Deduktionstheorem
M » {A} |- B genau dann, wenn M |- (A Æ B)
ß M |- P genau dann, wenn M » {ÿP} inkonsistent ist
Spezialfall des Deduktionstheorems
M » {A} |- B genau dann, wenn M |- (A Æ B)
setze A = ÿP und B = ^
M » {ÿP} |- ^ genau dann, wenn M |- (ÿP Æ ^), d.h.
wenn M |- P
Resolution 11
Deduktion mit Resolution
ß Deduktion mit Resolution verwendet Beweise durch
Widerspruch (Refutation)
ß Vorgehensweise
M |- P genau dann, wenn M » {ÿP} inkonsistent ist
Um nachzuweisen, dass M » {ÿ P} inkonsistent ist,
transformiert man M » {ÿP} in Klauselform.
Dabei verwendet man den Satz: Eine Menge M von
prädikatenlogischen Formeln kann in eine Menge von
Klauseln transformiert werden, die genau dann konsistent
ist, wenn M konsistent ist.
Wenn man aus den aus M » {ÿP} entstandenen Klauseln
durch Resolution die leere Klausel ableiten kann, dann ist
diese Klauselmenge inkonsistent. Damit ist auch M » {ÿP}
inkonsistent, und somit gilt M |- P.
Falls man die leere Klausel nicht ableiten kann, dann ist M
» {ÿ P} konsistent und somit kann P nicht aus M
abgeleitet werden.
Resolution 12
Deduktion mit Resolution: Beispiele
ß Beispiel
Beweis von (p Æ q) Æ r |- p Æ (q Æ r)
Ist
{(p Æ q) Æ r, ÿ (p Æ (q Æ r))}
inkonsistent?
Umwandlung in Klauselform
≡ {ÿ (ÿ p ⁄ q) ⁄ r, ÿ (ÿp ⁄ (ÿ q ⁄ r))}
≡ {(p Ÿ ÿ q) ⁄ r, p Ÿ q Ÿ ÿ r}
≡ {(p ⁄ r) Ÿ (ÿ q ⁄ r), p Ÿ q Ÿ ÿ r}
≡ { p ⁄ r, ÿ q ⁄ r, p, q, ÿ r}
Resolution
ÿq⁄r ÿr
-----------------ÿq
q
------------------------------{}
Beweis wurde erbracht
Resolution 13
Deduktion mit Resolution: Beispiele
ß Beispiel (Umkehrung der Aussagen)
Beweis von p Æ (q Æ r) |- (p Æ q) Æ r
Ist
{ p Æ (q Æ r), ÿ ((p Æ q) Æ r)}
inkonsistent?
Umwandlung in Klauselform
≡ {ÿ p ⁄ (ÿ q ⁄ r), ÿ (ÿ (ÿp ⁄ q) ⁄ r)}
≡ {ÿ p ⁄ ÿ q ⁄ r, (ÿp ⁄ q) Ÿ ÿ r }
≡ {ÿ p ⁄ ÿ q ⁄ r, ÿp ⁄ q, ÿ r}
Resolution führt in diesem Fall nicht zur leeren Klausel;
man kann sich leicht überzeugen, dass immer eine
Resolvente ÿp übrigbleibt
D.h. die obige Ableitung gilt nicht.
Resolution 14
Resolution mit Variablen
ß gegeben zwei Klauseln
p(X1) ⁄ q(X1)
¬ p(a) ⁄ r(X2, Y2)
ß Resolvente?
ß Da alle Variablen universell quantifiziert sind, kann man
jede Variable durch einen Term aus dem Wertebereich der
Variablen substituieren.
ß Im Beispiel ergibt die
Klauselinstanzen
Substitution {X1/a}
die
p(a) ⁄ q(a)
¬ p(a) ⁄ r(X2, Y2)
ß Resolvente
q(a) ⁄ r(X2, Y2)
Resolution 15
Substitutionen, Unifikatoren
ß Begriffe
[L] s bedeutet Anwendung der Substitution s auf das
Literal L
Literal [L] s = L' ist eine Instanz von L
Literal L subsumiert seine Instanz L'
ß Unifikator
Wenn es für zwei Literale L1 und L2 eine Substitution s
gibt, sodass
[L1] s = [L2] s
dann nennen wir s einen Unifikator von L1 und L2.
ß allgemeinster Unifikator (most general unificator, mgu)
Der Unifikator s ist genau dann der allgemeinste
Unifikator für L1 und L2 ist, wenn für jeden anderen
Unifikator s' gilt, dass das Literal [L1] s das Literal [L1]
s' subsumiert.
Der allgemeinste Unifikator ist bis auf Variablenumbenennungen eindeutig.
Resolution 16
Beispiel für allgemeinsten Unifikator
ß Literale
p(a, Y, Z)
p(X, b, Z)
werden durch die Substitution s
{X/a, Y/b, Z/c}
unifiziert
[p(a, Y, Z)] {X/a, Y/b, Z/c} ≡
[p(X, b, Z)] {X/a, Y/b, Z/c} ≡
p(a, b, c)
Aber s ist nicht der allgemeinste Unifikator. Der
allgemeinste Unifikator ist in diesem Fall
{X/a, Y/b}
mit der Instanz
[p(a, Y, Z)] {X/a, Y/b} ≡
[p(X, b, Z)] {X/a, Y/b} ≡
p(a, b, Z)
Resolution 17
Wann unifizieren zwei Literale?
ß Relationszeichen (Prädikatsname) und Arität müssen
übereinstimmen
ß alle Argumente müssen unifiziert werden können
Unifikation gelingt, wenn ein oder beide Argumente
Variable sind
Unifikation gelingt, wenn beide Argumente die gleiche
Konstante sind
Unifikation gelingt, wenn beide Argumente
zusammengesetzte Terme mit dem gleichen
Funktionszeichen (Funktionsnamen, Funktor) und der
gleichen Arität sind und alle Argumente unifizieren
Resolution 18
Resolution mit Unifikation
ß Gegeben
Literal L1 in einer Klausel K1
Literal ¬ L2 in einer Klausel K2
L1 und L2 haben allgemeinsten Unifikator u
ß Resolvente besteht aus der Vereinigungsmenge aller
Literale von K1 und K2 abzüglich L1 und ¬ L2, auf die u
angewandt wurde
K1
K2
------------------------------------[{K1 - {L1}} » {K2 - {¬L2}}] u
ß Beispiel
p(X,f(2)) ⁄ q(X) ⁄ ÿ r(X,Y)
s(V) ⁄ ÿ p(4,V)
-----------------------------------------------------------------q(4) ⁄ ÿ r(4,Y) ⁄ s(f(2))
allgemeinster Unifikator ist {X/4, V/f(2)} denn es gilt
p(X,f(2)) {X/4, V/f(2)} = p(4,V) {X/4, V/f(2)}
Resolution 19
Beispiel
ß Beweis der Addition 2 + 2 = 4 in Peano Arithmetik durch
Resolution
Axiome
X+0=X
X + s(Y) = s(X + Y)
Theorem
s(s(0)) + s(s(0)) = s(s(s(s(0))))
ß Mit den Abkürzungen
sX für s(X)
add(X, Y, Z) für X+Y=Z
lauten die Axiome
add(X, 0, X)
add(X, Y, Z) Æ add(X, sY, sZ)
und das Theorem
add(ss0, ss0, ssss0)
ß Umwandlung in Klauselform
(1) add(X, 0, X)
(2) ÿ add(X, Y, Z) ⁄ add(X, sY, sZ)
(3) ÿ add(ss0, ss0, ssss0)}
(negiertes Theorem)
Resolution 20
Beispiel
ß Für den ersten Resolutionsschritt verwenden wir das
negierte Theorem (3) und die einzige passende Klausel
(2). (Das Literal der Klausel (3) unifiziert mit dem Literal
der Klausel (1) nicht.)
(2) ÿ add(X, Y, Z) ⁄ add(X, sY, sZ)
(3) ÿ add(ss0, ss0, ssss0)
mit dem mgu = {X/ss0, Y/s0, Z/sss0} erhalten wir die
Resolvente
(4) ÿ add(ss0, s0, sss0)
ß Für den zweiten Resolutionsschritt verwenden wir die
Resolvente (4) und Klausel (2). Klausel (1) kommt wieder
nicht in Frage.
(4) ÿ add(ss0, s0, sss0)
(2) ÿ add(X, Y, Z) ⁄ add(X, sY, sZ)
Mit dem mgu = {X/ss0, Y/0, Z/ss0} erhalten wir die
Resolvente
(5) ÿ add(ss0, 0, ss0)
Resolution 21
Beispiel
ß Für den dritten Resolutionsschritt verwenden wir die
Resolvente (5) und Klausel (1).
(5) ÿ add(ss0, 0, ss0)
(1) add(X, 0, X)
Mit dem mgu = {X/ss0} erhalten wir die Resolvente
(6) {}
ß Die leere Resolvente bedeutet, dass die Klauselmenge
{(1), (2), (3)} inkonsistent ist und dass das Theorem aus
den Axiomen folgt, d.h. dass 2 + 2 = 4 in der Peano
Arithmetik gilt.
ß Der Resolutionsbeweis hat eine Kombination von zwei
Beweisstrategien benutzt, um effizient und effektiv zur
leeren Klausel zu gelangen:
set-of-support
man benutzt das negierte Theorem als eine der beiden
Klauseln beim ersten Resolutionsschritt
lineare Resolution
man verwendet ab dem zweiten Resolutionsschritt
immer die Resolvente des vorherigen Schrittes als eine
der beiden Klauseln; die andere Klausel ist eines der
Axiome oder eine vorherige Resolvente
Resolution 22
Berechnung als Beweis
ß Im Beispiel wurde die Addition 2+2=4 überprüft. Nun
wollen wir den Resolutionsbeweis konstruktiv verwenden, d.h. einen Wert "durch Beweis berechnen".
Welchen Wert muss W haben, damit W + 2 = 4?
ß Klauselform
(1) add(X, 0, X)
(2) ÿ add(X, Y, Z) ⁄ add(X, sY, sZ)
(3) ÿ add(W, ss0, ssss0)}
(negiertes Theorem)
ß Erster Resolutionsschritt:
(2) ÿ add(X, Y, Z) ⁄ add(X, sY, sZ)
(3) ÿ add(W, ss0, ssss0)
mgu = {X/W, Y/s0, Z/sss0}
(4) ÿ add(W, s0, sss0)
ß Zweiter Resolutionsschritt:
(2) ÿ add(X, Y, Z) ⁄ add(X, sY, sZ)
(4) ÿ add(W, s0, sss0)
mgu = {X/W, Y/0, Z/ss0}
(5) ÿ add(W, 0, ss0)
Resolution 23
Berechnung als Beweis
ß Dritter Resolutionsschritt:
(1) add(X, 0, X)
(5) ÿ add(W, 0, ss0)
mgu = {X/W, X/ss0}
(6) {}
X wurde an ss0 gebunden, W an X, d.h. W an ss0.
Damit haben wir W de facto als ss0 berechnet.
Resolution 24
Refutation & Resolution
ß Um nachzuweisen, dass ein Theorem T aus einer Menge
M von Axiomen folgt, negieren wir T und fügen die
Negation zu M hinzu.
ß Falls {M » ¬ T} noch nicht in Klauselform ist,
transformieren wir es in Klauselform und wenden
Resolution an.
ß Wenn wir die leere Klausel erhalten, ist {M » ¬ T}
inkonsistent, damit ist T eine logische Konsequenz von M.
ß Falls T Variablen enthält, werden die Variablen während
des Beweises durch Substitutionen si an Terme gebunden.
ß Dann ist
[T] s1• ... • sn
logische Konsequenz von M.
ß Da die si allgemeinste Unifikatoren sind, ist
[T] s1• ... • sn
die allgemeinste Instanz von T, die aus M folgt.
Resolution 25
Beispiel
ß Axiome
mensch(sokrates)
" X (mensch(X) Æ sterblich(X))
als Klauselmenge M
mensch(sokrates)
¬ mensch(X) ⁄ sterblich(X)
(1)
(2)
ß Theorem
sterblich(Who)
ergibt 'Zielklausel' Z
¬ sterblich(Who)
(3)
ß M » Z ist inkonsistent, denn Resolution liefert die
Resolventen
sterblich(sokrates)
(4)
(aus (1) und (2) mit Substitution {X/sokrates})
{}
(5)
(aus (3) und (4) mit Substitution {Who/sokrates})
Resolution 26
Beispiel
ß Also ist
sterblich(Who) {Who/sokrates}
=
sterblich(sokrates)
eine logische Konsequenz von M.
Resolution 27
Korrektheit und Vollständigkeit der
Resolution in der Prädikatenlogik
ß Korrektheit der Resolution in der Prädikatenlogik
Wenn eine Klausel K aus einer Menge M von Klauseln
durch Resolution abgeleitet werden kann, dann ist K eine
logische Konsequenz von M.
ß Korollar
Wenn die leere Klausel aus einer Menge M von Klauseln
durch Resolution abgeleitet werden kann, dann ist M
inkonsistent.
ß Vollständigkeit der Resolution bezüglich Refutation in der
Prädikatenlogik
Wenn eine Menge von Klauseln inkonsistent ist, dann
kann man aus ihr durch Resolution die leere Klausel
ableiten.
Resolution 28
Implementierung der Resolution in Prolog
ß Programmiersprache Prolog: Versuch, Resolution effizient
und effektiv zu machen
ß Einschränkungen der Sprache auf Hornklauseln
ß Verwendung der SLD Resolutionsstrategie
ß Gewinn in Effizienz und Effektivität wird durch
Unvollständigkeit und Inkorrektheit erkauft, d.h. es
werden möglicherweise nicht mehr alle Lösungen
gefunden und es können falsche Lösungen erzeugt
werden
Resolution 29
Resolutionsstrategien
ß Ziel eines Refutationsbeweises ist es, die leere Klausel
abzuleiten.
ß Dafür gibt es oft mehrere Möglichkeiten.
ß Resolutionsstrategien dienen dazu, einen Refutationsbeweis zielgerichtet und effizient zu führen.
ß Zwei Strategien werden untersucht – Set-of-Support
Resolution und lineare Resolution – die zur SLD
Resolution kombiniert werden.
Resolution 30
Set of Support
ß Die Untermenge S einer Klauselmenge M wird set of
support genannt, wenn M - S konsistent ist.
ß Set of Support Resolution
Bei jedem Resolutionsschritt ist eine der beiden Klauseln
ein Element oder ein Abkömmling des set of support.
Die set of support-Resolution ist bezüglich der Refutation
vollständig.
ß Beispiel: Klauselmenge M besteht aus einem definiten
Programm und einer Zielklausel.
Definites Programm:
mensch(sokrates)
¬ mensch(X) ⁄ sterblich(X)
(1)
(2)
Anfrage (Zielklausel):
¬ sterblich(Who)
(3)
Ein definites Programm ist immer konsistent, denn
Resolution zwischen definiten Klauseln ergibt immer eine
definite Klausel, d.h. eine nichtleere Resolvente.
D.h. set of support kann nur die Zielklausel sein.
Resolution 31
Lineare Resolution
ß Lineare Resolution
Die Resolvente eines Schrittes wird als eine der beiden
Klauseln des nächsten Schrittes verwendet.
Die andere Klausel ist entweder eine Klausel der
ursprünglichen Klauselmenge oder ein Vorfahr der
aktuellen Resolvente.
Die erste Resolvente ist eine Klausel der ursprünglichen
Klauselmenge.
Die lineare Resolution ist bezüglich der Refutation
vollständig.
Resolution 32
Lineare Resolution
ß Beispiel für lineare Resolution
mensch(sokrates)
¬ mensch(X) ⁄ sterblich(X)
¬ sterblich(Who)
(1)
(2)
(3)
sterblich(sokrates)
(4)
(aus (1) und (2) mit Substitution {X/sokrates})
{}
(5)
(aus (3) und (4) mit Substitution {Who/sokrates})
oder
¬ mensch(X)
(4)
(aus (2) und (3) mit Substitution {X/Who})
{}
(5)
(aus (1) und (4) mit Substitution {Who/sokrates})
Resolution 33
SLD Resolution (Select, Linear, Definite)
ß Um nachzuweisen, dass
(n1 Ÿ ... Ÿ nm)
(m > 0)
die logische Konsequenz einer Menge M von definiten
Klauseln ist, wählt man die Negation (Zielklausel)
¬ (n1 Ÿ ... Ÿ nm)
Prolog-Notation ?- n1, ..., nm.
als set of support.
ß Die lineare Resolution besteht darin, ein Literal ni der
Zielklausel auszuwählen und es mit dem Kopf h einer
passenden definiten Klausel des Programms M
h ⁄ ¬b1 ⁄ ¬b2 ⁄ ... ⁄ ¬bn
(n≥0)
Prolog-Notation h :- b1, b2,..., bn.
zu unifizieren
[h] u = [ni] u
(u ist der allgemeinste Unifikator)
um die Resolvente
[¬n1 ⁄ ... ⁄ ¬ni-1⁄ ¬b1⁄ ¬b2⁄ ... ⁄ ¬bn⁄ ¬ni+1⁄ ... ⁄ ¬nm] u
Prolog-Notation ?- [n1, ..., ni-1, b1, b2, ..., bn, ni+1, ..., nm] u
zu erhalten, die dann im nächsten Resolutionsschritt als
eine der beiden Klauseln verwendet wird.
Resolution 34
SLD-Ableitung
ß Folge von Resolventen R1, R2, ..., Rn. Die erste Resolvente
ist dabei die ursprüngliche Zielklausel (Frage).
ß Jeder SLD Schritt i ist mit einer Substitution – dem
allgemeinsten Unifikator ui – verbunden.
ß Ist eine Resolvente leer, dann sind das Programm M und
die Anfrage
¬ (n1 Ÿ ... Ÿ nm)
inkonsistent. Somit ist nach dem Refutationssatz
[n1 Ÿ ... Ÿ nm] u1•u2• ... • un
eine logische Konsequenz des Programms M. Da die ui
die allgemeinsten Unifikatoren sind, ist
[n1 Ÿ ... Ÿ nm] u1•u2• ... • un
die allgemeinste Instanz von
n1 Ÿ ... Ÿ nm
die aus dem Programm M folgt.
Resolution 35
Korrektheit & Vollständigkeit von SLD
ß P definites Programm
ß Korrektheit von SLD
Jede durch SLD berechnete Lösung ist die logische
Konsequenz von P.
ß Vollständigkeit von SLD
Jede logische Konsequenz von P ist Instanz einer durch
SLD berechneten Lösung.
Resolution 36
Beispiel
ß Programm
p(X) :- q(X), r(X).
p(3).
q(1).
q(2).
r(2).
r(3).
(1)
(2)
(3)
(4)
(5)
(6)
ß Anfrage
?- p(X).
Resolution 37
SLD-Baum
?- p(X)
1
2
?- q(X1), r(X1)
[]
{X/3}
3
?- r(1)
4
?- r(2)
5
success
6
?- q(2)
failure
?- q(3)
failure
5
4
[]
[]
{X/2}
{X/2}
success
success
Resolution 38
Berechnungsregel (computation rule)
ß
ß
Die Berechnungsregel wählt ein Ziel für den nächsten
Resolutionsschritt aus der aktuellen Resolvente.
Jede Berechnungsregel führt zur gleichen Zahl von
Erfolgszweigen.
ß Man kann für jeden Resolutionsschritt eine andere
Berechnungsregel anwenden.
ß In Prolog wird immer das erste Ziel wählt.
?- p(X)
1
2
?- q(X1), r(X1)
[]
{X/3}
3
?- r(1)
success
4
?- r(2)
failure
5
[]
{X/2}
success
Resolution 39
Wahl der Programmklausel
ß Die Wahl der Programmklausel bestimmt die Reihenfolge
der Zweige des SLD Baums, d.h. die Reihenfolge der
Lösungen.
?- p(X)
2
1
[]
?- q(X1), r(X1)
{X/3}
success
4
?- r(2)
3
?- r(1)
failure
5
[]
{X/2}
success
ß
Prolog wählt immer die textuell erste Programmklausel,
mit der das Ziel unifiziert werden kann.
ß Die Reihenfolge der Programmklauseln ist beliebig,
solange der SLD-Baum endlich ist.
Resolution 40
Suche im SLD Baum
ß Prolog verwendet zur Suche von Erfolgszweigen im SLD
Baum Tiefensuche, die einfach und effizient zu
implementieren ist
?- p(X)
1
2
[]
?- q(X1), r(X1)
{X/3}
4
success
?- r(1)
failure
ba
ck
t
ra
ck
in
g
3
?- r(2)
5
[]
{X/2}
success
ß Bei einem Fehlerzweig kehrt Prolog zum letzten Knoten
zurück, für den es alternative Programmklauseln gibt
(backtracking).
Resolution 41
Weiteres Beispiel
ß Programm
p(X) :- p(X), r(X).
p(3).
r(3).
(1)
(2)
(3)
ß Anfrage
?- p(X).
ß SLD-Baum
?-p(X)
1
2
[]
success
{X/3}
?- p(X1), r(X1)
1
2
?- p(X2), r(X2), r(X1)
1
?-r(3)
3
2
?- p(X3), r(X3), r(X2), r(X1)
[]
success
{X/3}
ß Das Ziel p(3) ist eine logische Konsequenz des
Programms, wird aber nicht gefunden, da alle
Erfolgszweige rechts vom unendlichen Zweig liegen.
Resolution 42
Weiteres Beispiel
ß Andere Reihenfolge der Programmklauseln
p(3).
(1)
p(X) :- p(X), r(X).
(2)
r(3).
(3)
vertauscht die Zweige des SLD-Baums.
?-p(X)
1
2
?- p(X1), r(X1)
[]
success
{X/3}
1
?-r(3)
3
[]
success
{X/3}
2
?- p(X2), r(X2), r(X1)
1
2
?- p(X3), r(X3), r(X2), r(X1)
ß Die Lösung p(3) wird nun durch Prolog gefunden, da sie
links vom unendlichen Zweig liegt.
Resolution 43
Probleme
ß Potentielle Unvollständigkeit
Die Wahl der effizienten Tiefensuche macht die an sich
vollständige SLD Resolution potentiell unvollständig.
ß Potentielle Inkorrektheit
Der oft aus Effizienzgründen unterdrückte 'occurs
check' macht die an sich korrekte SLD Resolution
potentiell inkorrekt.
Resolution 44
Konsequenzen
ß Programm P:
p(X) :- p(X), q(X).
p(2).
p(3).
q(3).
ß Deklarative Semantik von P
Ein Ziel Z ist logische Konsequenz eines Programms P,
wenn P » {¬ Z} inkonsistent ist, d.h. kein Modell hat.
Deklarative Semantik des Programms P ist sein kleinstes
Herbrand Modell M(P) = {p(2), p(3), q(3)}.
ß Prozedurale Semantik von P
Die prozedurale Semantik des Programms P reflektiert
die SLD Resolutionsstrategie.
Ein Ziel Z folgt aus dem Programm P, wenn P und ¬ Z
im Laufe der SLD Beweisprozedur die leere Klausel {}
generieren.
Die prozedurale Bedeutung PS(P) = {q(3)} des PrologProgramms P ist die Menge aller variablenfreier Ziele Zij,
die Instanzen von Fragen ¬ Zi sind, die durch die SLD
Beweisprozedur bewiesen werden.
Die Reihenfolge von Klauseln und von Zielen spielt beim
SLD Beweis eine wesentliche Rolle.
Resolution 45