1 / 114

Logische Programmierung mit PROLOG

Logische Programmierung mit PROLOG. Klaus Becker 2007. Logische Programmierung. Alle Menschen sind sterblich. Sokrates ist ein Mensch. Sokrates ist sterblich. sterblich(X) :- mensch(X). mensch(sokrates). sterblich(sokrates). sterblich(X) :- mensch(X). mensch(sokrates).

lot
Download Presentation

Logische Programmierung mit PROLOG

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Logische Programmierung mit PROLOG Klaus Becker 2007

  2. Logische Programmierung Alle Menschen sind sterblich.Sokrates ist ein Mensch. Sokrates ist sterblich. sterblich(X) :- mensch(X).mensch(sokrates). sterblich(sokrates). sterblich(X) :- mensch(X).mensch(sokrates). ?- sterblich(X).X = sokrates;No.

  3. Teil 1 Fakten und Regeln

  4. Die Welt der griechischen Götter (Heaven) Uranus = Gaea (Earth) | --------------------------------------- | | | | | Cronus = Rhea Coeus = Phoebe Oceanus = Tethys | | | ---------------------- Leto = Zeus Iapetus | | | | | | | Hestia | Poseidon | Demeter=Zeus | ---------------- Hades Zeus = Hera | | | | | | | Persephone | | Prometheus | Athena | --------- | | | | | Atlas Epimetheus --------------- Apollo Artemis | | | | | | | Ares Hebe Hephaestus Zeus=Maia Zeus=Dione | | From Edith Hamiltion's Mythology Hermes Aphrodite

  5. Modellierungsansatz Eine (Mini-) Welt besteht aus Objekten (Personen, Gegenstände, ...), die Eigenschaften haben und in Beziehung zueinander stehen. Hera(weiblich) Zeus(männlich) ist verheiratet mit

  6. Modellierungsansatz Objekte werden mit Konstanten (allg. mit Termen) beschrieben, Eigenschaften und Beziehungen mit Hilfe von Prädikaten. Fakten: weiblich(hera). maennlich(zeus). verheiratet(zeus, hera). Prädikat Konstante Konstante Hera(weiblich) Zeus(männlich) ist verheiratet mit

  7. Modellierungsansatz Sachverhalte der Miniwelt können direkt mit Hilfe von Fakten beschrieben werden. Fakten: weiblich(hera). maennlich(zeus). verheiratet(zeus, hera). Hera(weiblich) Zeus(männlich) ist verheiratet mit Miniwelt

  8. Modellierungsansatz Sachverhalte der Miniwelt können auch indirekt mit Hilfe von Regeln beschrieben werden. Fakten: vater(zeus, hermes).vater(zeus, aphrodite). direkte Beschreibung Fakten: weiblich(maia).maennlich(zeus). kind(hermes, zeus).kind(hermes, maia). Zeus=Maia Zeus=Dione | | Hermes Aphrodite Miniwelt Regeln: vater(X, Y) :- kind(Y, X), maennlich(X). mutter(X, Y) :- kind(Y, X), weiblich(X). indirekte Beschreibung

  9. Regeln Regeln sind Wenn-Dann-Aussagen. Implikation Und Variable Regeln: vater(X, Y) :- kind(Y, X), maennlich(X). mutter(X, Y) :- kind(Y, X), weiblich(X). Regelkopf(Folgerung) Regelrumpf (Bedingungen) informelle Beschreibung: X ist Vater von Y, wenn Y Kind von X ist und X männlich ist. X ist Mutter von Y, wenn Y Kind von X ist und X weiblich ist.

  10. Rekursive Regeln Das Prädikat im Regelkopf darf im Regelrumpf vorkommen. Regeln: vorfahr(X, Y) :- kind(Y, X). vorfahr(X, Y) :- kind(Y, Z), vorfahr(X, Z). Regelkopf(Folgerung) Regelrumpf (Bedingungen) informelle Beschreibung: X ist Vorfahr von Y, wenn Y Kind von X ist. X ist Vorfahr von Y, wenn Y Kind von Z und X Vorfahr von Z ist.

  11. Logische Herleitung der Modellwelt Die in der Modellwelt geltenden Sachverhalte ergeben sich aus der (in/direkten) Beschreibung der Miniwelt durch logische Herleitungen. kind(hebe, zeus).kind(hebe, hera).kind(zeus, rhea).kind(zeus, cronus).kind(rhea, uranus).... vorfahr(X, Y) :- kind(Y, X). vorfahr(X, Y) :- kind(Y, Z), vorfahr(X, Z). Logische Herleitung Beschreibung der Miniwelt kind(zeus, cronus). vorfahr(X, Y) :- kind(Y, X). vorfahr(cronus, zeus). kind(hebe, zeus). vorfahr(cronus, zeus). vorfahr(X, Y) :- kind(Y, Z), vorfahr(X, Z). vorfahr(cronus, hebe). Modellwelt vorfahr(cronus, zeus).vorfahr(cronus, hebe)....

  12. Modus Ponens Zur Herleitung der Sachverhalte der Modellwelt wird die logische Schlussregel „modus ponens“ benutzt. Regeln werden dabei als Wenn-Dann-Aussagen interpretiert. Die in der Regel vorkommenden Variablen sind Platzhalter für alle Objekte der Modellwelt. kind(zeus, cronus). vorfahr(X, Y) :- kind(Y, X). vorfahr(cronus, zeus). Alle Menschen sind sterblich.Sokrates ist ein Mensch. Sokrates ist sterblich. Für alle X: mensch(X)  sterblich(X).mensch(sokrates). sterblich(sokrates). kind(hebe, zeus). vorfahr(cronus, zeus). vorfahr(X, Y) :- kind(Y, Z), vorfahr(X, Z). vorfahr(cronus, hebe). sterblich(X) :- mensch(X).mensch(sokrates). sterblich(sokrates).

  13. Von der Miniwelt zur Modellwelt Cronus|Zeus|Hebe... Miniwelt Modellwelt kind(hebe, zeus).kind(hebe, hera).kind(zeus, rhea).kind(zeus, cronus).kind(rhea, uranus).... vorfahr(cronus, zeus).vorfahr(cronus, hebe).... Fakten und Regeln: kind(hebe, zeus).kind(hebe, hera).kind(zeus, rhea).kind(zeus, cronus).kind(rhea, uranus).... vorfahr(X, Y) :- kind(Y, X). vorfahr(X, Y) :- kind(Y, Z), vorfahr(X, Z). Mit Hilfe von Fakten und Regeln wird implizit eine Modellwelt konstruiert, die die Miniwelt (in Teilen) beschreiben soll. Beschreibung der Miniwelt

  14. Modellierungskonzept Das gesamte Wissen über die Welt wird mit Fakten und Regeln modelliert. In der Modellwelt gelten nur die „Sachverhalte“, die mit Hilfe der gegebenen Fakten und Regeln logisch hergeleitet werden können. Dies sind die direkt genannten Fakten und die mit Hilfe der logischen Schlussregel "modus ponens" herleitbaren Fakten (closed-world-assumption).

  15. Übung Gegeben ist die folgende (unvollständige) Beschreibung der Miniwelt. Welche der angezeigten Sachverhalte gelten in der Modellwelt? Fakten und Regeln: maennlich(cronus).maennlich(zeus).maennlich(hades).maennlich(poseidon).weiblich(rhea).weiblich(hera).kind(zeus, rhea).kind(hera, rhea).kind(hades, rhea).kind(hestia, rhea).vater(X, Y) :- kind(Y, X), maennlich(X). mutter(X, Y) :- kind(Y, X), weiblich(X). bruder(X, Y) :- maennlich(X), vater(Z, X), vater(Z, Y).bruder(X, Y) :- maennlich(X), mutter(Z, X), mutter(Z, Y). bruder(zeus, hades).bruder(hades, zeus).bruder(zeus, poseidon).bruder(zeus, hestia).bruder(zeus, zeus).schwester(hera, hestia). Cronus = Rhea | ---------------------- | | | | | Hestia | Poseidon | Demeter=Zeus Hades Zeus = Hera

  16. Übung Ergänzen Sie die Regeln zur Beschreibung der Miniwelt. Gehen Sie davon aus, dass alle Fakten zu den Prädikaten "maennlich", "weiblich" und "kind" in der Faktenbasis korrekt aufgelistet sind. Fakten und Regeln: maennlich(cronus)...weiblich(rhea)...kind(zeus, rhea)...vater(X, Y) :- kind(Y, X), maennlich(X). mutter(X, Y) :- kind(Y, X), weiblich(X). elternteil(X, Y) :- bruder(X, Y) :- maennlich(X), elternteil(E, X), elternteil(E, Y), X \== Y.schwester(X, Y) :- sohn(X, Y) :-oma(X, Y) :- Cronus = Rhea | ---------------------- | | | | | Hestia | Poseidon | Demeter=Zeus Hades Zeus = Hera

  17. Teil 2 Anfragen

  18. Logik-Programme Ein Logik-Programm besteht aus einer Wissensbasis und einer Anfrage. maennlich(cronus). maennlich(zeus). .. weiblich(rhea). weiblich(demeter). .. kind(hestia, rhea). kind(hades, rhea). .. vater(X, Y) :- kind(Y, X), maennlich(X). mutter(X, Y) :- kind(Y, X), weiblich(X). Wissensbasis ?- weiblich(Frau). Anfrage

  19. SWI-Prolog-Editor Wissensbasis Anfrage

  20. PROLOG PROLOG steht für „Programming in Logic“. Die Programmiersprache PROLOG wurde Anfang der siebziger Jahre (des 20. Jahrhunderts) von Alain Colmerauer und Robert Kowalski konzipiert. SWI-PROLOG ist ein freies und professionelles PROLOG-System, das seit 1987 an der Universität Amsterdam entwickelt und gepflegt wird. Der SWI-PROLOG-Editor ist eine für den Unterricht geeignete Entwicklungsumgebung zur Erstellung von PROLOG-Programmen, die von G. Röhner entwickelt wurde. Installationshinweise:Installieren Sie zunächst SWI-PROLOG.Installieren Sie anschließend den SWI-PROLOG-Editor.

  21. Wissensbasis erzeugen Geben Sie die Fakten und Regeln zur Beschreibung der Miniwelt ein oder laden Sie die entsprechende Quelldatei. Bevor Sie Anfragen an die Wissensbasis stellen können, muss diese Wissensbasis erst erzeugt werden. Rufen Sie hierzu das Systemprädikat "consult" auf. Wenn der PROLOG-Interpreter keine Syntaxfehler gefunden hat, bestätigt er die erfolgreiche Erzeugung der Wissensbasis mit "Yes". Consultieren Mit consult(<Datei>). werden aus der angegebenen Datei die Fakten und Regeln in die Wissensbasis eingelesen.

  22. Anfrage stellen Geben Sie die jetzt die Anfrage im unteren Fenster (hinter "?-") ein. Mit der "Return"-Taste erhält man das erste Ergebnis (falls es eines gibt), mit jedem weiteren "Return" ggf. weitere Ergebnisse. Findet der PROLOG-Interpreter keine weiteren Ergebnisse, so zeigt er dies mit "No" an. Das trennende Semikolon kann als "oder" gedeutet werden. Anfrage Anfrage Ergebnisse

  23. Übung Laden Sie die Datei "Familie1.pl" und erzeugen Sie mit "Consultieren" die zugehörige Wissensbasis. Lassen Sie PROLOG die folgenden Anfragen auswerten. Formulieren Sie die Anfragen auch umgangssprachlich. ?- weiblich(hera). % Ist Hera weiblich??- vater(zeus, hades). ?- weiblich(Frau). % Wer ist weiblich??- mutter(M, zeus).?- mutter(rhea, Kind).?- mutter(hera, Kind).?- mutter(M, K).?- mutter(M, K), weiblich(K).?- vater(V, _Kind).?- weiblich(T), mutter(_, T). Was hat es mit dem "_" auf sich?

  24. Übung Entwickeln Sie eine Wissensbasis zu einer eigenen Familien-Welt (Sie können auch die Götter-Welt erweitern). Folgende Prädikate können Sie dabei festgelegen: maennlich, weiblich, kind, vater, mutter, vorfahr, sohn, tochter, grossvater, grossmutter, enkel, geschwister, bruder, schwester, onkel, tante, ... Testen Sie ihre Wissensbasis mit Hilfe geeigneter Anfragen. Hinweise zur PROLOG-Syntax: Jede Deklaration der Wissensbasis und jede Anfrage schließt mit einem Punkt ab. Variablenbezeichner beginnen mit einem Großbuchstaben (oder anonym mit _), Konstanten- und Prädikatenbezeichner mit Kleinbuchstaben.

  25. Übung An einem runden Tisch sitzen sechs Personen. Erstellen Sie eine Wissensbasis mit dem Prädikat "rechtsneben(X, Y)". Ermitteln Sie soweit möglich Antworten auf folgende Anfragen: Wer sitzt rechts neben Anna? Von wem ist Anke der linke Nachbar? Wer sind die Nachbarn von Alfred? Geben Sie Regeln an für: - linksneben(X, Y)- nachbarvon(Mitte, Links, Rechts)- gegenueber(Hier, Dort) Alba Anna Arthur Alfred Anton Anke siehe: G. Röhner: Informatik mit Prolog. HeLP 2002.

  26. Übung Wir betrachten die unten abgebildete Blockwelt. Wie könnte man die Struktur dieser Blockwelt mit Hilfe von Fakten und Regeln beschreiben? d g c f a e b p1 p2 p3 siehe: G. Röhner: Informatik mit Prolog. HeLP 2002.

  27. Anfragen Der Programm-Interpreter erzeugt die Ergebnisse der Anfrage. maennlich(zeus). weiblich(hera).weiblich(maia).kind(apollo, zeus).kind(hermes, maia).kind(hermes, zeus). vater(X, Y) :- kind(Y, X), maennlich(X). Wissensbasis Anfrage ?- weiblich(Frau). Frau = hera;Frau = maia;No. Ergebnisse Der Programm-Interpreter sucht hierzu alle Instanzen der Anfrage, die in der Modellwelt gelten bzw. aus der Wissensbasis herleitbar sind.

  28. Ja-Nein-Anfragen maennlich(zeus). weiblich(hera).weiblich(maia).kind(apollo, zeus).kind(hermes, maia).kind(hermes, zeus). vater(X, Y) :- kind(Y, X), maennlich(X). ?- maennlich(zeus). % Ist Zeus männlich?Yes. ?- maennlich(hera). % Ist Hera männlich?No. Ja-Nein-Anfrage

  29. Ergänzungsanfragen maennlich(zeus). weiblich(hera).weiblich(maia).kind(apollo, zeus).kind(hermes, maia).kind(hermes, zeus). vater(X, Y) :- kind(Y, X), maennlich(X). ?- vater(W, hermes). % Wer ist Vater von Hermes?W = zeus;No. ?- weiblich(Frau). % Wer ist weiblich?Frau = hera;Frau = maia;No. Ergänzungsanfrage

  30. Anfragen mit anonymen Variablen maennlich(zeus). weiblich(hera).weiblich(maia).kind(apollo, zeus).kind(hermes, maia).kind(hermes, zeus). vater(X, Y) :- kind(Y, X), maennlich(X). mutter(X) :- weiblich(X), kind(_, X). ?- vater(V, _Kind) % Wer ist Vater (von einem Kind)?V = zeus;V = zeus;No. Anonyme Variable Anonyme Variablen werden nicht instanziert.

  31. Datenflussrichtung maennlich(zeus). weiblich(hera).weiblich(maia).kind(apollo, zeus).kind(hermes, maia).kind(hermes, zeus). vater(X, Y) :- % vater(?Vater, ?Kind) kind(Y, X), maennlich(X). Kann in beiden Rollen (+ / -) verwendet werden ?- vater(maia, hermes). % vater(+Vater, +Kind) instanziert ?- vater(V, hermes). % vater(-Vater, +Kind) ?- vater(zeus, K). % vater(+Vater, -Kind) offen ?- vater(V, K). % vater(-Vater, -Kind) Die Datenflussrichtung kann flexibel gestaltet werden.

  32. Teil 3 Das Berechnungskonzept

  33. Suche nach Anfrageergebnissen Gegeben: Logik-Programm (Wissensbasis + Anfrage) maennlich(zeus). weiblich(hera).weiblich(maia).kind(apollo, zeus).kind(hermes, maia).kind(hermes, zeus). vater(X, Y) :- kind(Y, X), maennlich(X). maennlich(zeus). weiblich(hera).weiblich(maia).kind(apollo, zeus).kind(hermes, maia).kind(hermes, zeus).vater(zeus, apollo).vater(zeus, hermes). ... induzierte Modellwelt ?- vater(V, hermes). Gesucht: Instanzen der Anfrage, die zur Modellwelt gehören V = zeus. Problem: Wie erzeugt man systematisch Anfrageergebnisse?

  34. Ein einfaches Beispiel Gegeben: Logik-Programm (Wissensbasis + Anfrage) a. b.c :- a, d. c :- e.d :- b. ?- c. Gesucht: Verfahren zur Bestimmung der Anfrageergebnisse Yes. Beachte: Wir betrachten zunächst den Fall, dass keine Variablen im Logik-Programm vorkommen.

  35. Herleitung mit "modus ponens" Logik-Programm Herleitung a. b.c :- a, d. c :- e.d :- b. a d ad  c ---------- c b b  d -------- d b -- b a -- a ?- c. Yes. Die Grundlage einer Herleitung des Anfrageergebnisses ist die Schlussregel „modus ponens“: a1, ... , ana1 ...  an b -------------------- b Wenn die Implikation a1 ...  an b gilt und alle Teilbedingungen a1, ... , an nachgewiesen sind, dann kann hieraus die Konklusion b hergeleitet werden.

  36. "Rückwärts"-Herleitung Programm Vorwärts-Herleitung Rückwärts-Herleitung a. b.c :- a, d. c :- e.d :- b. b -- b ? c. ad  c. ? a, d. a. ? d. b  d. ? b. b. ? a -- a b b  d -------- d ?- c. Yes. a d ad  c ---------- c

  37. "Rückwärts"-Herleitung Programm Rückwärts-Deutung Rückwärts-Herleitung a. b.c :- a, d. c :- e.d :- b. Zeige c Da ad  c, reicht es: Zeige a, d. Da a, reicht es: Zeige d. Da b  d, reicht es: Zeige b. Da b, Fertig! ? c. ad  c. ? a, d. a. ? d. b  d. ? b. b. ? ?- c. Yes.

  38. Deutung als Widerspruchsbeweis Programm Rückwärts-Deutung Rückwärts-Herleitung a. b.c :- a, d. c :- e.d :- b. Ang., c gilt nicht, Da ad  c, gilt dann a nicht oder d nicht. Da a, gilt dann d nicht. Da b  d, gilt dann b nicht. Da b, Widerspruch! ? c. ad  c. ? a, d. a. ? d. b  d. ? b. b. ?  ?- c. Yes.

  39. Resolution Programm Resolutionsschritte Rückwärts-Herleitung a. b.c :- a, d. c :- e.d :- b. -c -a  -d c. -a  -d. a. -d. -b d. -b. b.  ? c. ad  c. ? a, d. a. ? d. b  d. ? b. b. ?  ?- c. Yes. Für Herleitungen mit Implikationen gilt:Rückwärts mit „modus ponens“ entspricht vorwärts mit Resolution. a1, ... , an , a1 ...  an b --------------------------------- b a1  ...  an c, b1 ...  bm-c ----------------------------------------- a1  ...  an b1 ...  bm

  40. Sackgassen Programm Herleitung mit Sackgasse erfolgreiche Herleitung a. b.c :- a, d. c :- e.d :- b. ? c. e  c. ? e. ? c. ad  c. ? a, d. a. ? d. b  d. ? b. b. ? ?- c. Yes. Es ergeben sich oft verschiedene Möglichkeiten, wie eine Herleitung weitergeführt werden kann. Nicht alle diese Herleitungen sind aber erfolgreich. Eine „passende“ Herleitung muss man daher in der Regel suchen.

  41. Backtracking Programm Herleitung mit Sackgasse erfolgreiche Herleitung a. b.c :- e.c :- a, d. d :- b. ? c. e  c. ? e. zurücksetzen ? c. ad  c. ? a, d. a. ? d. b  d. ? b. b. ? ?- c. Yes. Backtracking:Wenn der erste Term des Ziels mit keinem Regelkopf übereinstimmt, dann geh zurück zu dem Ziel, bei dem als letztes eine Auswahlmöglichkeit bestand und treffe eine neue Auswahl.

  42. Der allgemeine Fall Wissensbasis maennlich(zeus). weiblich(hera).weiblich(maia).kind(apollo, zeus).kind(hermes, maia).kind(hermes, zeus). vater(X, Y) :- kind(Y, X), maennlich(X). ... Herleitung (Beweis) kind(hermes, zeus). maennlich(zeus). vater(X, Y) :- kind(Y, X), maennlich(X). ------------------------------------ vater(zeus, hermes). Anfrage ?- vater(V, hermes). Ergebnis V = zeus. /* Substitution */ Problem: Wie erzeugt man systematisch logische Herleitungen?

  43. Auswertung von Anfragen /*1*/ maennlich(zeus). /*2*/ weiblich(hera). /*3*/ weiblich(maia)./*4*/ kind(apollo, zeus). /*5*/ kind(hermes, maia). /*6*/ kind(hermes, zeus). /*7*/ vater(X, Y) :- kind(Y, X), maennlich(X). Regel 7 Substitution X = V, Y = hermes. Ziel ?- vater(V, hermes). ?- kind(hermes, V), maennlich(V). Regelanwendung:Suche einen Fakt / Regelkopf, der mit der ersten Zielbedingung mit Hilfe einer geeigneten Variablenbindung (Substitution) gleichgemacht werden kann. Ersetze die erste Zielbedingung durch den Regelrumpf und wende auf alle Terme des Ziels die Variablenbindung an.

  44. Auswertung von Anfragen /*1*/ maennlich(zeus). /*2*/ weiblich(hera). /*3*/ weiblich(maia)./*4*/ kind(apollo, zeus). /*5*/ kind(hermes, maia). /*6*/ kind(hermes, zeus). /*7*/ vater(X, Y) :- kind(Y, X), maennlich(X). Regel 7 5 Substitution X = V, Y = hermes. V = maia. Ziel ?- vater(V, hermes). ?- kind(hermes, V), maennlich(V). ?- maennlich(maia). Regelanwendung:Suche einen Fakt / Regelkopf, der mit der ersten Zielbedingung mit Hilfe einer geeigneten Variablenbindung gleichgemacht (unifiziert) werden kann. Ersetze die erste Zielbedingung durch den Regelrumpf und wende auf alle Terme des Ziels die Variablenbindung an.

  45. Auswertung von Anfragen /*1*/ maennlich(zeus). /*2*/ weiblich(hera). /*3*/ weiblich(maia)./*4*/ kind(apollo, zeus). /*5*/ kind(hermes, maia). /*6*/ kind(hermes, zeus). /*7*/ vater(X, Y) :- kind(Y, X), maennlich(X). Regel 7 5 No Substitution X = V, Y = hermes. V = maia. Ziel ?- vater(V, hermes). ?- kind(hermes, V), maennlich(V). ?- maennlich(maia). ?- kind(hermes, V), maennlich(V). Backtracking: Wenn die erste Zielbedingung mit keinem Fakt / Regelkopf gleichgemacht werden kann, dann geh zurück zu dem Ziel, bei dem als letztes eine Auswahlmöglichkeit bestand und treffe eine neue Auswahl.

  46. Auswertung von Anfragen /*1*/ maennlich(zeus). /*2*/ weiblich(hera). /*3*/ weiblich(maia)./*4*/ kind(apollo, zeus). /*5*/ kind(hermes, maia). /*6*/ kind(hermes, zeus). /*7*/ vater(X, Y) :- kind(Y, X), maennlich(X). Regel 7 5 No 6 Substitution X = V, Y = hermes. V = maia. V = zeus. Ziel ?- vater(V, hermes). ?- kind(hermes, V), maennlich(V). ?- maennlich(maia). ?- kind(hermes, V), maennlich(V). ?- maennlich(zeus).

  47. Auswertung von Anfragen /*1*/ maennlich(zeus). /*2*/ weiblich(hera). /*3*/ weiblich(maia)./*4*/ kind(apollo, zeus). /*5*/ kind(hermes, maia). /*6*/ kind(hermes, zeus). /*7*/ vater(X, Y) :- kind(Y, X), maennlich(X). Regel 7 5 No 6 1 Substitution X = V, Y = hermes. V = maia. V = zeus. V = zeus. Ziel ?- vater(V, hermes). ?- kind(hermes, V), maennlich(V). ?- maennlich(maia). ?- kind(hermes, V), maennlich(V). ?- maennlich(zeus). Ergebnis: Ist keine Zielbedingung mehr vorhanden, so liefert die Variablenbindung das gesuchte Ergebnis.

  48. Beweisbaum /*1*/ maennlich(zeus). /*2*/ weiblich(hera). /*3*/ weiblich(maia)./*4*/ kind(apollo, zeus). /*5*/ kind(hermes, maia). /*6*/ kind(hermes, zeus). /*7*/ vater(X, Y) :- kind(Y, X), maennlich(X). vater(V, hermes) kind(hermes, V) maennlich(V) kind(hermes, maia) kind(hermes, zeus) maennlich(zeus) UND-Knoten X = V, Y = hermes. ODER-Knoten V = maia. V = zeus. V = zeus. Veranschaulichung: Die Herleitung eines Berechnungsergebnisses kann mit Hilfe eines Beweisbaumes verdeutlicht werden.

  49. Trace einer Beweissuche vater(V, hermes) kind(hermes, V) maennlich(V) kind(hermes, maia) kind(hermes, zeus) maennlich(zeus) UND-Knoten ODER-Knoten CALL: Teilziel aufrufen EXIT: Zeilziel erfolgr. b. REDO: Teilziel nochmal b. FAIL: Teilziel erfolglos b. ?- vater(V, hermes). CALL: vater(V, hermes) CALL: kind(hermes, V) CALL: kind(hermes, maia) EXIT: kind(hermes, maia) CALL: maennlich(maia) FAIL: maennlich(maia) REDO: kind(hermes, V) CALL: kind(hermes, zeus) EXIT: kind(hermes, zeus) CALL: maennlich(zeus) EXIT: maennlich(zeus) EXIT: vater(V, hermes) V = zeus.

More Related