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