Praktische Informatik 2
Transcrição
Praktische Informatik 2
Praktische Informatik 2 Themen Praktische Informatik 2 Alternative Programmiermethoden: Deklaratives (logisches Programmieren): Prolog Sommer-Semester 2007 Auf den Poolrechnerrn: /usr/local/praktikum/SWIprolog/bin/pl Prof. Dr. sc. Hans-Dieter Burkhard www.ki.informatik.hu-berlin.de Abstrakte Datenstrukturen (Listen, Graphen, Bäume ...) PI2 Repräsentation von „Wissen“ Sommer-Semester 2007 Hans-Dieter Burkhard Hans-Dieter Burkhard Über allen Wipfeln ist Ruh‘ 'GGGGPNKI]WJE ZUFWKGV KM]XLRSVHF[ UØRS[FKMGG Zeichen/Symbole + Interpretation Syntax + Semantik 001101111010101100010111010001001001000110101101010101 1+1=0 42 3 Explizites vs. Implizites Wissen PI2 Sommer-Semester 2007 Hans-Dieter Burkhard Uranos .... .... Kronos Unterschiedliche Formen für • Menschlicher Nutzer • Maschinelle Auswertung Hades Poseidon Rheia Zeus Apollo Artemis Semele PI2 Hera Athene Leto 5 Demeter Persephone Hermes Hans-Dieter Burkhard Hestia „Fakt“: parent(zeus,athena). Maja Inferenz: Verfahren zur Herleitung von implizitem Wissen aus explizitem Wissen (z.B. Beweisverfahren) Sommer-Semester 2007 4 Griechische GötterGaja explizit: z.B. Axiome, Schluss-Regeln Implizit: Folgerungen PI2 2 Zeichen, Symbole, Signale, ... Lexikon Datenbank Briefmarkensammlung Programme Landkarten Bilder Darstellung und Interpretation Gesetze • Menschlicher Nutzer Regeln • Maschinelle Auswertung ... PI2 Sommer-Semester 2007 Dionysos Sommer-Semester 2007 Ares .... .... Hans-Dieter BurkhardHarmonia Hephaistos Hebe Aphrodite 6 •1 Griechische Götter: Fakten parent(uranus, cronus). parent(uranus, cronus). Uranos Gaja parent(gaea, cronus). ... ... parent(gaea, female(gaea). parent(gaea, rhea). uranus). . . Kronos Rheia parent(rhea, zeus). cronus). parent(gaea, female(rhea). parent(cronus, zeus). Hades Hestia Poseidon Zeus Demeter male(uranus). parent(gaea, rhea). female(hera). parent(rhea, hera). Maja male(cronus). parent(rhea, female(hestia). parent(cronus, hera). zeus). Persephone Hermes male(zeus). Athene parent(cronus, hades). zeus). parent(cronus, Leto female(demeter). parent(rhea, hades). male(hades). Ares Hephaistos Apollo Artemis parent(rhea, hera). female(athena). parent(cronus, hestia). male(hermes). parent(cronus, female(metis). parent(zeus, ... ... apollo). Aphrodite parent(rhea, hestia). hera). Semele . . male(apollo). Dionysos Harmonia parent(leto, apollo). parent(zeus, hermes). hades). parent(cronus, female(maia). parent(zeus, artemis). parent(maia, hermes). male(dionysius). ... female(persephone). parent(leto, artemis). parent(zeus, athena). male(hephaestus). female(aphrodite). parent(semele, dionysius). parent(zeus, ares). male(poseidon). parent(aphrodite, harmonia). parent(hera, ares). female(artemis). harmonia). parent(zeus, hephaestus). parent(ares, parent(harmonia, semele). parent(hera, hephaestus).female(leto). parent(demeter, persephone). ... PI2 Sommer-Semester 2007 Hans-Dieter Burkhard Fakten in Prolog Ein Fakt hat die Form funktor ist der Name einer n-stelligen Relation (Prädikat). n ist die Anzahl der Argumente. Hera 7 Hans-Dieter Burkhard 9 CWA: Closed World Assumption (1a) funktor ist der Name einer n-stelligen Relation (Prädikat). ?- male(zeus). yes. ?- parent(zeus,athena). yes. ?-parent(hera,athena). no. PI2 Sommer-Semester 2007 parent(uranus, parent(gaea, parent(gaea, parent(rhea, parent(cronus, parent(rhea, parent(cronus, parent(cronus, parent(rhea, parent(cronus, parent(rhea, parent(zeus, parent(maia, ... female(gaea). cronus). female(rhea). cronus). female(hera). rhea). female(hestia). zeus). female(demeter). zeus). female(athena). hera). female(metis). hera). female(maia). hades). female(persephone). hades). female(aphrodite). hestia).male(uranus). female(artemis). hestia).male(cronus). female(leto). hermes).male(zeus). hermes).male(hades). male(hermes). male(apollo). male(dionysius). male(hephaestus). male(poseidon). Hans-Dieter Burkhard 10 parent(uranus, cronus). parent(gaea, cronus). female(gaea). female(rhea). female(hera). parent(gaea, rhea). female(hestia). ?-parent(hera,athena). parent(rhea, zeus). female(demeter). parent(cronus, zeus). female(athena). no. parent(rhea, hera). female(metis). parent(cronus, hera). ?-parent(zeus,hera,ares).parent(cronus, hades). female(maia). female(persephone). parent(rhea, hades). female(aphrodite). no. parent(cronus, hestia).male(uranus). female(artemis). parent(rhea, hestia).male(cronus). female(leto). ?-kleiner(3,7). parent(zeus, hermes).male(zeus). parent(maia, hermes).male(hades). no. ... male(hermes). ?-vater(zeus,athena). „Optimistische“ Variante: yes. „Pessimistische“ Variante: no. Hans-Dieter Burkhard 8 (Vorläufige) Bedeutung der Antwort „no“: Der Fakt ist in der Datenbank nicht enthalten. Oder: Welche Antwort gibt Prolog für nicht gespeicherte Fakten? Sommer-Semester 2007 Hans-Dieter Burkhard CWA: Closed World Assumption (1a) Bedeutung der Antwort „no“? PI2 Sommer-Semester 2007 Eine Anfrage hat die Form ?-funktor(argumente). female(gaea). cronus). female(rhea). cronus). female(hera). Hinzufügen: rhea). female(hestia). zeus). female(demeter). asserta(male(caesar)). zeus). female(athena). male(uranus). hera). female(metis). assertz(male(augustus)). male(cronus). hera). female(maia). male(zeus). hades). female(persephone). Löschen:male(hades). hades). female(aphrodite). hestia). male(hermes). female(artemis). retract(male(zeus)). hestia). male(apollo). female(leto). hermes). male(dionysius). hermes). male(hephaestus). male(poseidon). Sommer-Semester 2007 PI2 Anfragen Aufzählung: Die Beziehungen werden explizit aufgezählt (Faktenmenge, Datenbank) PI2 male/1 parent/2 parent/3 plus/3 true/0 fail/0 male(zeus). parent(zeus,athena). parent(zeus,hera,ares). plus(3,4,7). kleiner(6,9). Hebe Definition einer Relation durch Aufzählung parent(uranus, parent(gaea, parent(gaea, parent(rhea, parent(cronus, parent(rhea, parent(cronus, parent(cronus, parent(rhea, parent(cronus, parent(rhea, parent(zeus, parent(maia, ... funktor(argumente). male(apollo). male(dionysius). male(hephaestus). male(poseidon). 11 PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 12 •2 Anfragen nach Existenz Anfrage enthält Variable CWA: Closed World Assumption (1b) ?-funktor(argumente). Bedeutung der Antwort „no“ ? Variablen-Bezeichner beginnen mit Großbuchstaben ?- parent(zeus,X). X=hermes? ; X=athena? ; X=ares? ; no. female(gaea). ?parent(zeus,X). parent(uranus, cronus). female(rhea). parent(gaea, cronus). female(hera). X=hermes? parent(gaea, rhea). female(hestia). parent(rhea, zeus). ;parent(cronus, zeus). female(demeter). female(athena). parent(rhea, hera). female(metis). X=athena? parent(cronus, hera). female(maia). parent(cronus, hades). .parent(rhea, hades). female(persephone). female(aphrodite). parent(cronus, hestia).male(uranus). female(artemis). yes. parent(rhea, hestia).male(cronus). female(leto). parent(zeus, parent(maia, ... hermes).male(zeus). hermes).male(hades). male(hermes). male(apollo). male(dionysius). male(hephaestus). male(poseidon). „ ; “ erwartet weitere Antworten. „ .“ schließt Anfrage ab. PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 13 Relationen definieren durch Regeln Eine Regel hat die Form (Vorläufige) Bedeutung der Antwort „no“: female(gaea). parent(uranus, cronus). female(rhea). Es gibt keinen passenden Fakt in dercronus). Datenbank. parent(gaea, female(hera). ?-father(X,Y). no. ?-kleiner(M,N). no. ?-parent(X,gaea). no. PI2 Sommer-Semester 2007 parent(gaea, parent(rhea, parent(cronus, parent(rhea, parent(cronus, parent(cronus, parent(rhea, parent(cronus, parent(rhea, parent(zeus, parent(maia, ... rhea). female(hestia). zeus). female(demeter). zeus). female(athena). hera). female(metis). hera). female(maia). hades). female(persephone). hades). female(aphrodite). hestia).male(uranus). female(artemis). hestia).male(cronus). female(leto). hermes).male(zeus). hermes).male(hades). male(hermes). male(apollo). male(dionysius). male(hephaestus). male(poseidon). Hans-Dieter Burkhard 14 Relationen definieren durch Regeln Definition der Relation „Vater-Kind“: kopf:-körper. father(Vater,Kind) :-parent(Vater,Kind), male(Vater). goal:-subgoals. father(X,Y):-parent(X,Y),male(X). mother(X,Y):-parent(X,Y),female(X). Mit der intuitiven Bedeutung: parent(X,Y,Z) :-father(X,Z),mother(Y,Z). „goal“ gilt (ist beweisbar), falls alle „subgoals“ gelten (beweisbar sind). son(Sohn,Elternteil):parent(Elternteil,Sohn),male(Sohn). grandfather(X,Z):-father(X,Y),parent(Y,Z). grandmother(X,Z):-mother(X,Y),parent(Y,Z). grandchild(X,Y):-grandfather(Y,X). grandchild(X,Y):-grandmother(Y,Z). PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 15 Regel als logische Formel PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 16 Regel als logische Formel Die Variablen in Regeln sind universell quantifiziert. Die Relationen der rechten Seite sind konjunktiv verknüpft. goal(X1,...,Xn) :- subgoal1(X1,...,Xn) ,..., subgoalm(X1,...,Xn). Hornklausel: Wird aufgefasst als ∀X1...∀Xn Alternative mit maximal [ subgoal1(X1,...,Xn) ∧...∧ subgoalm(X1,...,Xn) → goal(X1,...,Xn) ] oder ∀X1...∀Xn [¬subgoal1(X1,..,Xn) ∨...∨ ¬subgoalm(X1,..,Xn) ∨ goal(X1,..,Xn) ] PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 17 einem nicht-negierten Literal ∀X1...∀Xn [¬subgoal1(X1,..,Xn) ∨...∨ ¬subgoalm(X1,..,Xn) ∨ goal(X1,..,Xn) ] PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 18 •3 Regel als logische Formel Regel als logische Formel Variable, die nur im Regelkörper auftreten, können als existentiell quantifizierte Variable innerhalb des Regelkörpers (!) betrachtet werden: Intuitive Bedeutung: ∀X1...∀Xn∀Y1...∀Yk [ subgoal1(X1,...,Xn,Y1,...,Yk ) ∧ ... ∧ subgoalm(X1,...,Xn,Y1,...,Yk ) → goal(X1,...,Xn) ] ist logisch äquivalent zu ∀X1...∀Xn [ ∃Y1..∃Yk[subgoal1(X1,..,Xn,Y1,..,Yk)∧...∧subgoalm(X1,..,Xn,Y1,..,Yk)] → goal(X1,...,Xn) ] Sommer-Semester 2007 Hans-Dieter Burkhard 19 H1 → H2 , H 1 H2 PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 20 Anfrage/Beweis Unbenannte/anonyme Variable Unbenannte/anonyme Variable: entspricht anschaulich der Abtrennungsregel (modus ponens) goal(X1,...,Xn) :- subgoal1(X1,...,Xn) ,..., subgoalm(X1,...,Xn). grandfather(X,Z):-father(X,Y),father(Y,Z). PI2 „goal“ gilt (ist beweisbar) falls alle „subgoals“ gelten (beweisbar sind). Gaja ?- mother_in_law(gaea,gaea). _ für „beliebig“ Zu beweisen: mother_in_law(X,Y):mother(X,Z),parent(Y,Z,_). Uranos mother_in_law(gaea,gaea). Kronos Rheia verfügbare Klausel: mother_in_law(X,Y):mother(X,Z),parent(Z,Y,_). mother_in_law(X,Y):mother(X,Z),parent(Z,Y,_). Klausel mit Bindung X=gaea, Y=gaea, Z=Z[1] mother_in_law(gaea,gaea):mother(gaea,Z[1]),parent(Z[1],gaea,_). PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 21 Anfrage/Beweis PI2 Sommer-Semester 2007 Hans-Dieter Burkhard Anfrage/Beweis Gaja Gaja Uranos zu beweisen: Kronos 22 Uranos zu beweisen: 1) mother(gaea,Z[1]). Rheia mother_in_law(gaea,gaea):mother(gaea,Z[1]),parent(Z[1],gaea,_). Kronos Rheia Verfügbare Klausel: mother(X,Y):-parent(X,Y),female(X). dafür zu beweisen 1) mother(gaea,Z[1]). 2) parent(Z[1],gaea,_). PI2 Sommer-Semester 2007 Hans-Dieter Burkhard Klausel mit Bindung X=gaea, Y=Z[1] : mother(gaea,Z[1]):-parent(gaea,Z[1]),female(gaea). 23 PI2 zu beweisen 1.1) parent(gaea, Z[1] ). zu beweisen 1.2) female(gaea). Sommer-Semester 2007 Hans-Dieter Burkhard 24 •4 Anfrage/Beweis Anfrage/Beweis Gaja Gaja Uranos zu beweisen: Uranos Kronos zu beweisen Kronos unter Beachtung der Bindung Z[1]=uranus : Rheia 1.1) parent(gaea, Z[1] ). Rheia 2) parent(uranus,gaea,_). verfügbarer Fakt ermöglicht Bindung Z[1] =uranus : parent(gaea,uranus). Verfügbare Klausel: parent(X,Y,Z) :-father(X,Z),mother(Y,Z). 1.2) female(gaea). Klausel mit Bindungen : verfügbarer Fakt: parent(uranus,gaea,Z[2]) :father(uranus,Z[2]),mother(gaea,Z[2]). female(gaea). PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 25 Anfrage/Beweis PI2 Sommer-Semester 2007 Hans-Dieter Burkhard Anfrage/Beweis Gaja Gaja Uranos zu beweisen Uranos Kronos zu beweisen: 2.1) father(uranus,Z[2]). Rheia zu beweisen 2.1) father(uranus,Z[2]). zu beweisen 2.2) mother(gaea,Z[2]). Sommer-Semester 2007 father(X,Y):-parent(X,Y),male(X). 27 Kronos PI2 Rheia male(uranus). Sommer-Semester 2007 Hans-Dieter Burkhard Gaja Uranos Kronos Rheia mother(gaea,cronus):parent(gaea,cronus),female(gaea). male(uranus). verfügbarer Fakt: zu beweisen 2.2.1) male(uranus). Hans-Dieter Burkhard 28 mother(X,Y):-parent(X,Y),female(X). Klausel mit Bindung X=gaea, Y=cronus : parent(uranus,cronus). Sommer-Semester 2007 zu beweisen 2.1.2) 2.2) mother(gaea,cronus). Verfügbare Klausel: verfügbarer Fakt (z.B.), bewirkt Bindung Z[2]=cronus : PI2 parent(uranus, Z[2]). zu beweisen mit erfolgter Bindung Z[2]=cronus 2.1.1) parent(uranus,Z[2]). 2.1.2) zu beweisen 2.1.1) Anfrage/Beweis Gaja Uranos zu beweisen: Rheia Klausel mit Bindung X=uranus, Y=Z[2] : father(uranus,Z[2]):parent(uranus,Z[2]),male(uranus). Hans-Dieter Burkhard Anfrage/Beweis Kronos Verfügbare Klausel: parent(uranus,gaea,Z[2]) :father(uranus,Z[2]),mother(gaea,Z[2]). PI2 26 zu beweisen 2.2.2) 29 PI2 Sommer-Semester 2007 parent(gaea,cronus), female(gaea). Hans-Dieter Burkhard 30 •5 Anfrage/Beweis Anfrage/Beweis-Baum Gaja Uranos zu beweisen: 2.2.1) Kronos ?- mother_in_law(gaea,gaea). Yes. Rheia parent(gaea,cronus). mother(gaea,uranus) parent(gaea,cronus). PI2 Sommer-Semester 2007 parent(uranus,cronus) parent(gaea,cronus) male(uranus) 31 PI2 Sommer-Semester 2007 female(gaea) Hans-Dieter Burkhard 32 Prolog-Programm Programme bestehen aus Klauseln. father(X,Y):-parent(X,Y),male(X). mother(X,Y):-parent(X,Y),female(X). parent(X,Y,Z) :-father(X,Z),mother(Y,Z). son(X,Y):-parent(X,Y),male(Y). parent(uranus, parent(gaea, parent(gaea, parent(rhea, parent(cronus, parent(rhea, parent(cronus, parent(cronus, parent(rhea, parent(cronus, parent(rhea, parent(zeus, parent(maia, ... female(gaea). cronus). female(rhea). cronus). female(hera). rhea). female(hestia). zeus). female(demeter). zeus). female(athena). hera). female(metis). hera). female(maia). hades). female(persephone). hades). female(aphrodite). hestia).male(uranus). female(artemis). hestia).male(cronus). female(leto). hermes).male(zeus). hermes).male(hades). male(hermes). male(apollo). male(dionysius). male(hephaestus). male(poseidon). father(Vater,Kind) :-parent(Vater,Kind), male(Vater). Sommer-Semester 2007 mother(gaea,cronus) Fertig (existenzielle) Anfragen mit Regeln PI2 parent(uranus,gaea,cronus) female(gaea) Hans-Dieter Burkhard ?- father(zeus,athena). yes. ?- father(zeus,X). X=hermes? ; X=athena? ; X=ares? . yes. Rheia father(uranus,cronus) parent(gaea,uranus) female(gaea). verfügbarer Fakt: female(gaea). Kronos mother_in_law(gaea,gaea) verfügbarer Fakt: 2.2.2) Gaja Uranos Hans-Dieter Burkhard 33 grandfather(X,Z):-father(X,Y),parent(Y,Z). grandmother(X,Z):-mother(X,Y),parent(Y,Z). grandchild(X,Y):-grandfather(Y,X). grandchild(X,Y):-grandmother(Y,Z). parent(uranus, parent(gaea, parent(gaea, parent(rhea, parent(cronus, parent(rhea, parent(cronus, parent(cronus, parent(rhea, parent(cronus, parent(rhea, parent(zeus, parent(maia, ... Klauseln sind Fakten oder Regeln. Fakt als Regel: fakt:-true female(gaea). cronus). female(rhea). cronus). female(hera). rhea). female(hestia). zeus). female(demeter). zeus). female(athena). hera). female(metis). hera). female(maia). hades). female(persephone). hades). female(aphrodite). hestia).male(uranus). female(artemis). hestia).male(cronus). female(leto). hermes).male(zeus). hermes).male(hades). male(hermes). male(apollo). male(dionysius). male(hephaestus). male(poseidon). mit Prädikat true/0 PI2 Sommer-Semester 2007 Hans-Dieter Burkhard Prolog-Programm Prolog-Programm: Prozeduren Klauseln definieren Relationen (Prädikate) Klauseln mit gleichem Kopf-Funktor (Name,Stelligkeit) bilden eine Prozedur Die Klauseln einer Prozedur bieten Alternativen für die Prolog-Beweise father(Vater,Kind) :-parent(Vater,Kind), male(Vater). Intuitive Bedeutung: Linke Seite gilt, wenn alle Prädikate der rechten Seite bei entsprechender Belegung/Bindung der Variablen gelten. Es gilt: father(zeus,athena). weil gilt: parent(zeus,athena). grandfather(X,Z):-father(X,Y),father(Y,Z). grandfather(X,Z):-father(X,Y),mother(Y,Z). parent(uranus, parent(gaea, parent(gaea, parent(rhea, ... male(zeus). PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 35 34 PI2 Sommer-Semester 2007 cronus). cronus). rhea). zeus). Hans-Dieter Burkhard 36 •6 Prolog-Programm: Prozeduren Prolog-Programm Klauseln mit gleichem Kopf-Funktor (Name,Stelligkeit) bilden eine Prozedur Redundanzen sind logisch unproblemastisch Anfragen an Programme haben die Form ? - goal(X1,...,Xn). im Sinne von „gilt ...?“ („ist ... beweisbar?“): grandfather(X,Z):-father(X,Y),father(Y,Z). grandfather(X,Z):-father(X,Y),mother(Y,Z). grandfather(X,Z):-father(X,Y),parent(Y,Z). grandfather(cronus, ares). grandfather(cronus, athena). ∃X1..∃Xk [ goal(X1,...,Xn) ] Oder allgemeiner ? - goal1(X1,...,Xn) ,..., goalm(X1,...,Xn). Redundanzen bieten zusätzliche Beweisvarianten PROLOG: evtl. unerwünschte Auswirkungen Softwaretechnologie: Minimalitätsprinzip PI2 Sommer-Semester 2007 Hans-Dieter Burkhard im Sinne von „gilt ...?“ („ist ... beweisbar?“): ∃X1..∃Xk [goal1(X1,...,Xn)∧ ... ∧ goalm(X1,...,Xn) ] 37 Prolog-Interpreter PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 38 Prolog-Interpreter Laufzeit-System für Prolog, das Antworten auf Anfragen an ein Programm gibt, d.h. Beweise sucht und ausführt (Theorem-Beweiser). Fahrplantabelle Fahrplan-Fakten s_bahn(alexanderplatz,jannowitzbrücke,6:09,6:11, 103). s_bahn(jannowitzbrücke,ostbahnhof, 6:11,6:13, 103). ... Vorstellung: Man gibt Fakten und Zusammenhänge als Programm ein (z.B. Fahrplantabelle) und erhält Antworten bzgl. aller Folgerungen (z.B. billigste Verbindungen von A nach B) . PI2 Sommer-Semester 2007 Hans-Dieter Burkhard Suchprogramm erreichbar(Start,Ziel,Zeit) :- s_bahn(Start,Zwischenziel,Abfahrt,Ankunft,_), erreichbar(Zwischenziel,Ziel,Zeit1), berechneZeit(Zeit1,Ankunft,Abfahrt,Zeit). ... 39 PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 40 Prolog und Logik Prolog-Interpreter Prolog-Programm P = Axiome Anfrage Q = Frage nach Beweisbarkeit von Q aus P Antwort = Ergebnis eines Beweises bzw. Fehlschlag Trace = Verlauf des Beweisversuchs Ziel: Prolog-Interpreter als universelles Verfahren im PK1 Insbesondere Vollständigkeit: Interpreter liefert alle Folgerungen aus dem Programm Korrektheit: Interpreter liefert nur Folgerungen aus dem Programm PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 41 PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 42 •7 Situation im PK1 gdw. gdw. Situation im PK1 Q folgt aus Formelmenge {P1,..,Pn} Q ist aus Formelmenge {P1,..,Pn} syntaktisch ableitbar P1 ∧ ... ∧ Pn → Q ist allgemeingültig Allgemeingültigkeit ist axiomatisierbar/aufzählbar: Falls ein Ausdruck H allgemeingültig ist, so ist das in endlich vielen Schritten feststellbar. Genauer: Es gibt dafür ein universelles Verfahren. gdw. gdw. Allgemeingültigkeit ist nicht entscheidbar: Es gibt kein universelles Verfahren, das für beliebige H entscheidet, ob H allgemeingültig ist. Falls ein Ausdruck H nicht allgemeingültig ist, so ist das eventuell nicht feststellbar (Verfahren kommt evtl. nicht zum Abbruch). Genauer: Es gibt dafür kein universelles Verfahren. Algorithmus/Programm „Theorembeweiser“ PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 43 Situation im PK1 gdw. gdw. Q folgt aus Formelmenge {P1,..,Pn} Q ist aus Formelmenge {P1,..,Pn} syntaktisch ableitbar P1 ∧ ... ∧ Pn → Q ist allgemeingültig Hans-Dieter Burkhard Sommer-Semester 2007 Hans-Dieter Burkhard 44 Kein Entscheidungsprogramm im PK1 möglich. Spezielle Situation für Prolog-Interpreter: – eingeschränkt durch Horn-Klauseln – eingeschränkt durch Beweisstrategie im Interpreter (Frage nach Vollständigkeit/Korrektheit!) Entscheidungsverfahren existieren prinzipiell für Falls ein Ausdruck H nicht allgemeingültig ist, so ist das nicht allgemein feststellbar. Genauer: Es gibt dafür kein universelles Verfahren. Sommer-Semester 2007 PI2 Konsequenzen aus Situation im PK1 Falls ein Ausdruck H allgemeingültig ist, so ist das in endlich vielen Schritten feststellbar. Genauer: Es gibt dafür ein universelles Verfahren. PI2 Q folgt aus Formelmenge {P1,..,Pn} Q ist aus Formelmenge {P1,..,Pn} syntaktisch ableitbar P1 ∧ ... ∧ Pn → Q ist allgemeingültig – aussagenlogische Programme oder – Programme über endlichen Relationen 45 Nichtdeterministische Suche nach Beweisbaum PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 46 Nichtdeterministische Suche nach Beweisbaum Ausgangspunkt und Zwischenzustände: Ziel (Ende des Verfahrens): Menge von „offenen“ (zu beweisenden) Teilzielen: subgoals = { subgoal1(...) ,..., subgoalm(...) } Die Teilziele subgoal1(...) haben die Form funktor(t1,...,tn) . Dabei bezeichnet funktor ein n-stelliges Prädikat, dessen Argumente jeweils an Terme ti gebunden sind. oder: kein weiterer Beweisversuch möglich, dabei Antwort „no“ Terme (Strukturen) sind Variablen, Konstante oder komplexere Strukturen, die wiederum Terme enthalten können. PI2 Sommer-Semester 2007 Hans-Dieter Burkhard subgoals ={} , d.h. alle Teilziele sind bewiesen dabei Antwort „yes“ bzw. Angabe der Terme, an die die Variablen der Anfrage gebunden wurden. 47 PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 48 •8 Nichtdeterministische Suche nach Beweisbaum Nichtdeterministische Suche nach Beweisbaum Zwischenschritte: Die Suche ist erfolgreich, wenn - in jedem Zwischenschritt eine passende Klausel gewählt wird, bei der die Unifikation gelingt, - am Ende subgoals={} gilt. Wähle ein zu beweisendes Teilziel: funktor(t1,...,tn) ∈ subgoals Wähle eine passende Klausel der zugehörigen Prozedur: funktor(x1,..,xn) :-funktor1(x11,..,x1n1),...,funktorm(xm1,..,xmnm) Unifikation des Kopfes funktor(x1,...,xn) mit Teilziel funktor(t1,...,tn) ergibt eine Variablensubstitution σ (Ersetzung von Variablen durch Terme) In jedem Schritt i erfolgen Substitutionen σi von (allen) Variablen. Die Substitutionen ergeben in ihrer Gesamtheit die Terme, an die die Variablen X der Anfrage gebunden wurden: „Antwort-Substitution“: σ (X) = σk (σk-1 (... σ1 (X) ...) ) Neuer Zwischenzustand: subgoals:= σ( ( subgoals – { funktor(t1,...,tn) } ) ∪ { funktor1(t11,..,t1n1),...,funktorm(tm1,..,tmnm)} ) PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 49 PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 50 Interpreter für Standard-Prolog Interpreter für Standard-Prolog Idee: Systematische Suche nach Beweismöglichkeiten Backtracking: Alternativen für den Beweis eines Teilziel werden markiert („Backtrack-Punkte“). (Reihenfolge für „wähle Teilziel/Klausel“) Reihenfolge innerhalb einer Prozedur (Alternativen für Beweis) oben vor unten Beim Fehlschlagen eines Beweisversuchs wird am jüngsten Backtrack-Punkt ein alternativer Beweis gestartet („chronologisches Backtracking“). Dabei werden zwischenzeitliche Variablenbindungen zurückgenommen. Reihenfolge innerhalb einer Klausel (alle subgoals müssen erfüllt werden) links vor rechts Eingabe von „;“ bei Antworten auf existentielle Anfragen wirkt wie Fehlschlag (löst Backtracking aus) . PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 51 PI2 grandfather(X,Z):-father(X,Y),father(Y,Z). grandfather(X,Z):-father(X,Y),mother(Y,Z). Sommer-Semester 2007 Beweisversuch mit 1. Klausel (ggf. neue Variablennamen!) grandfather(X1,Z):-father(X1,Y),father(Y,Z). Backtrackpunkt für 2. Klausel: grandfather(X,Z):-father(X,Y),mother(Y,Z). father(X,Y):-parent(X,Y),male(X). Beweisversuch mit Klausel (neue Variablennamen): father(X2,Y1):-parent(X2,Y1),male(X2). (Keine Alternativen – kein Backtrackpunkt) Substitution σ (X2) = X σ (Y1) = Y Substitution σ (X1) = X σ (Z) = ares grandfather(X,ares):father(X,Y),father(Y,ares). zu beweisen: zu beweisen: parent(X,Y). PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 52 zu beweisen: father(X,Y). ?-grandfather(X,ares). father(X,Y). Hans-Dieter Burkhard father(X,Y):-parent(X,Y),male(X). male(X). father(Y,ares). father(Y,ares). 53 PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 54 •9 parent(uranus, parent(gaea, parent(gaea, parent(rhea, zu beweisen: parent(cronus, parent(X,Y). parent(rhea, Beweisversuch mit 1. Fakt parent(cronus, parent(uranus, cronus). parent(cronus, Backtrackpunkt für Alternativen ... parent(gaea, cronus). cronus). cronus). rhea). zeus). zeus). hera). hera). hades). Beweis mit Fakt male(uranus). gelingt: Keine neuen Substitutionen. Keine neuen Teilziele. Zu beweisen: Ist Fakt, d.h. keine neuen Teilziele. Zu beweisen: male(uranus). father(uranus,ares). Sommer-Semester 2007 zu beweisen: male(uranus). male(uranus). Substitution σ (X) = uranus σ (Y) = cronus parent(uranus,cronus). PI2 male(uranus). male(cronus). male(zeus). male(hades). male(hermes). male(apollo). male(dionysius). male(hephaestus). male(poseidon). Hans-Dieter Burkhard father(uranus,ares). 55 PI2 Sommer-Semester 2007 Hans-Dieter Burkhard father(X,Y):-parent(X,Y),male(X). zu beweisen: father(uranus,ares). zu beweisen: parent(uranus,ares). Beweisversuch mit Klausel (neue Variablennamen) father(X3,Y2):-parent(X3,Y2),male(X3). Es gibt keinen solchen Fakt 56 parent(uranus, parent(gaea, parent(gaea, parent(rhea, parent(cronus, parent(rhea, parent(cronus, parent(cronus, ... (Keine Alternativen – kein Backtrackpunkt) Substitution σ (X3) = uranus σ (Y1) = ares Beweisversuch fehlgeschlagen. father(uranus,ares):parent(uranus,ares),male(uranus). Rückkehr zum jüngsten Backtrack-Punkt parent(gaea, zu beweisen: Sommer-Semester 2007 cronus). beim Beweis für parent(uranus,ares). PI2 cronus). cronus). rhea). zeus). zeus). hera). hera). hades). male(uranus). Hans-Dieter Burkhard Weitere Fehlschläge folgen bei Beweisversuchen mit parent(uranus, parent(gaea, parent(gaea, parent(rhea, parent(cronus, parent(rhea, parent(cronus, parent(cronus, ... parent(X,Y). 57 cronus). cronus). rhea). zeus). zeus). hera). hera). hades). PI2 Sommer-Semester 2007 male(X). father(Y,ares). Hans-Dieter Burkhard parent(uranus, parent(gaea, parent(gaea, parent(rhea, zu beweisen: parent(cronus, parent(X,Y). parent(rhea, Beweisversuch mit Fakt parent(cronus, parent(cronus, zeus). parent(cronus, Backtrackpunkt für Alternativen. ... parent(rhea, hera). 58 cronus). cronus). rhea). zeus). zeus). hera). hera). hades). Substitution σ (X) = cronus σ (Y) = zeus parent(cronus,zeus). Ist Fakt, d.h. keine neuen Teilziele. Zu beweisen: male(cronus). father(zeus,ares). PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 59 PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 60 •10 male(uranus). male(cronus). male(zeus). male(hades). male(hermes). male(apollo). male(dionysius). male(hephaestus). male(poseidon). zu beweisen: male(cronus). Beweis mit Fakt male(cronus). gelingt: male(cronus). Keine neuen Substitutionen. zu beweisen: father(zeus,ares). Beweisversuch mit Klausel (neue Variablennamen) father(X3,Y2):-parent(X3,Y2),male(X3). (Keine Alternativen – kein Backtrackpunkt) Substitution σ (X3) = zeus σ (Y1) = ares father(zeus,ares):parent(zeus,ares),male(zeus). Keine neuen Teilziele. zu beweisen: Zu beweisen: parent(zeus,ares). father(zeus,ares). PI2 father(X,Y):-parent(X,Y),male(X). Sommer-Semester 2007 Hans-Dieter Burkhard zu beweisen: parent(zeus,ares). Beweis mit Fakt parent(zeus,ares). gelingt: parent(zeus,ares). 61 parent(uranus, parent(gaea, parent(gaea, parent(rhea, parent(cronus, parent(rhea, parent(cronus, parent(cronus, ... cronus). cronus). rhea). zeus). zeus). hera). hera). hades). PI2 Sommer-Semester 2007 male(zeus). Hans-Dieter Burkhard male(uranus). male(cronus). male(zeus). male(hades). male(hermes). male(apollo). male(dionysius). male(hephaestus). male(poseidon). zu beweisen: male(zeus). Beweis mit Fakt male(zeus). gelingt: male(zeus). Keine neuen Substitutionen. 62 Keine neuen Substitutionen. Keine neuen Teilziele. Keine neuen Teilziele. Zu beweisen: Beweisversuch gelungen mit Substition: σ (X) = cronus male(zeus). PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 63 PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 64 ?-grandfather(X,ares). ?-grandfather(X,ares). Antwort X = cronus? ; X = cronus? Kronos grandfather(X,Z):-father(X,Y),mother(Y,Z). X = cronus? Rheia Zeus Kronos Hera Beweisbaum: Zweiter Beweisbaum: grandfather(cronus,ares). Ares Rheia Zeus Hera grandfather(cronus,ares). Ares father(cronus,zeus). father(zeus,ares). father(cronus,hera). male(cronus). parent(cronus,zeus). male(cronus). male(zeus). parent(cronus,zeus). parent(zeus,ares). PI2 Sommer-Semester 2007 Hans-Dieter Burkhard mother(hera,ares). female(hera). parent(hera,ares). 65 PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 66 •11 Redundanzen ... Unifikation (matching, instantiation) ... führen wegen der systematischen Durchmusterung aller Beweisversuche zu Wiederholungen von Resultaten Terme unifizieren: Durch geeigneten Unifikator (Variablen-Substitution σ) als Zeichenkette identisch machen. ?-grandfather(X,ares). parent(X,ares). grandfather(X,Z):-father(X,Y),father(Y,Z). σ (X) = zeus X = cronus? ; grandfather(X,Z):-father(X,Y),mother(Y,Z). X = cronus? Kronos Rheia Zeus PI2 Sommer-Semester 2007 Hans-Dieter Burkhard σ (Y) = ares parent(zeus,ares). „Instantiation“: Resultierender Term bei Substitution Hera Ares parent(zeus,Y). 67 Unifikation (matching, instantiation) PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 68 Unifikation (matching, instantiation) in Prolog: Beweisen eines Teilziels erfordert „Matchen“ von Teilziel und Klauselkopf father(zeus,ares). father(X3,Y2):-parent(X3,Y2),male(X3). father(zeus,ares):parent(zeus,ares),male(zeus). father(zeus,ares). father(X3,Y2):-parent(X3,Y2),male(X3). father(zeus,ares):parent(zeus,ares),male(zeus). Analogie: „Prozedur-Aufruf“ Parameterübergabe durch Instantiierung: σ(X)=zeus Bindung von Variablen für gesamte Klausel σ(Y)=ares Variable „gehören“ den Klauseln: Lebensdauer bis zum Backtracking Kein Überschreiben Sichtbarkeit innerhalb der Klausel von Werten Analogie: „Prozedur-Aufruf“ PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 69 PI2 Sommer-Semester 2007 Hans-Dieter Burkhard Unifikationsregeln Unifikationsregeln Terme t1 und t2 sind unifizierbar, falls • t1 und t2 sind identische Konstanten oder • t1 (bzw. t2) ist eine Variable: t1 (bzw. t2) wird an t2 (bzw. t1) gebunden oder • t1= funktor(t11,...,t1n) und t2 =funktor(t21,...,t2n) sind Strukturen mit identischem funktor (Name, Stelligkeit) und die Argumente t1i t2i sind paarweise unifizierbar. dreieck(P,punkt(X,Y),punkt(1,X)). dreieck(punkt(2,3),punkt(1,X),punkt(Y,Z)). Variablenseparierung: Rekursive Definition, die Substitution σ ergibt sich schrittweise. PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 71 70 dreieck( P, punkt(X,Y), punkt(1,X)). dreieck(punkt(2,3),punkt(1,C), punkt(A,B)). σ(P)= punkt(2,3) σ σ(X)=1 σ(Y)=C σ(A) =1 dreieck(punkt(2,3),punkt(1,C), punkt(1,1)). σ(B) =1 σ(C)=C PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 72 •12 Prolog-Operatoren „=“ und „==“ Prolog-Operatoren „=“ und „==“ Das Ziel term1 = term2 ist erfüllt, falls term1 und term2 unifizierbar sind. – Variable in term1 und term2 werden ggf. instantiiert. ?- dreieck(P,punkt(X,Y),punkt(1,X)) = dreieck(punkt(2,3),punkt(1,X),punkt(Y,Z)). P = punkt(2, 3) X = 1 Y = 1 Z = 1 Das Ziel term1 \= term2 ist erfüllt, falls term1 und term2 nicht unifizierbar sind. Das Ziel term1 == term2 ist erfüllt, falls term1 und term2 identisch sind. ?- dreieck(P,punkt(X,Y),punkt(1,X)) == dreieck(punkt(2,3),punkt(1,X),punkt(Y,Z)). No – nicht unifizierte Variable sind nicht identisch Das Ziel term1 \== term2 ist erfüllt, falls term1 und term2 nicht identisch sind. PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 73 PI2 Sommer-Semester 2007 Hans-Dieter Burkhard Occur-Check, σ(X) = funktor(..., X, ....) Problemzerlegung Beispiel: Programm-Klausel Zerlege ein Problem P in einzelne Probleme P1,...,Pn Unterschiedliche Reaktionen von Prolog-Systemen auf Anfragen p(X,f (X)) Löse jedes Problem Pi ? - p(Y,Y). ?- p(Y,Y), write(Y). Füge die Lösungen zusammen zu P ?- p(Y,Y), p(Z,Z),Y=Z. Beispiele: Ungarischer Würfel Kurvendiskussion Integralrechnung aufwendiger Test. Ignorieren? PI2 Sommer-Semester 2007 74 Hans-Dieter Burkhard 75 Problemzerlegung PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 76 Problemzerlegung Klausel als Problemzerlegung goal(X1,...,Xn) :- subgoal1(X1,...,Xn) ,..., subgoalm(X1,...,Xn). goal(X1,...,Xn) :- subgoal1(X1,...,Xn) ,..., subgoalm(X1,...,Xn). um „goal“ zu beweisen, beweise alle „subgoals“ „goal“ gilt (ist beweisbar) falls alle „subgoals“ gelten (beweisbar sind). Problemzerlegung um „goal“ zu beweisen, beweise alle „subgoals“ PI2 Sommer-Semester 2007 Hans-Dieter Burkhard erreichbar(Start,Ziel,Zeit) :- s_bahn(Start,Zwischenziel,Abfahrt,Ankunft,_), erreichbar(Zwischenziel,Ziel,Zeit1), berechneZeit(Zeit1,Ankunft,Abfahrt,Zeit). 77 PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 78 •13 Problemzerlegung Unterschied zu prozeduralem Denken berechneZeit(Zeit1,Ankunft,Abfahrt,Zeit). Beabsichtigte Bedeutung: Zeit = Zeit1 + (Ankunft - Abfahrt) berechneZeit(Zeit1,Ankunft,Abfahrt,Zeit) :- addiereZeit(Zeit1,Differenz,Zeit), subtrahiereZeit(Ankunft,Abfahrt,Differenz). (Spezielle Notationen für Zeitangaben beachten) Logische Sicht: Berechnung von „Differenz“ kann später erfolgen (Bindung statt Wertzuweisung). Problemzerlegung: berechneZeit(Zeit1,Ankunft,Abfahrt,Zeit) :- addiereZeit(Zeit1,Differenz,Zeit), subtrahiereZeit(Ankunft,Abfahrt,Differenz). Mit geeignet definierten Prädikaten addiereZeit/3, subtrahiereZeit/3 PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 79 Problemzerlegung Die in Standard-Prolog eingebaute Arithmetik erfordert aus Effizienzgründen allerdings gebundene Eingangsparameter. PI2 Sommer-Semester 2007 80 Alternativen für Problemzerlegung Zerlegung des Problems P in Probleme P1,...,Pn Graphische Darstellung oder in Probleme P´1,...,P´n´ oder ... berechneZeit(U,V,W,X) addiereZeit(U,Y,X) Hans-Dieter Burkhard subtrahiereZeit(V,W,Y). Klauseln einer Prolog-Prozedur bieten Alternativen grandfather(X,Z):-father(X,Y),father(Y,Z). grandfather(X,Z):-father(X,Y),mother(Y,Z). brother(B,X) Graphische Darstellung grandfather(X,Z) male(B) PI2 parent(V,M,B) Sommer-Semester 2007 parent(V,M,X) Hans-Dieter Burkhard Klausel1 81 Alternativen für Problemzerlegung PI2 Sommer-Semester 2007 Klausel2 Hans-Dieter Burkhard Kombinierte Verzweigungen verreisen oder-Verzweigung grandfather(X,Z) oder-Verzweigung Klausel1 82 fliegen autofahren bahnfahren wandern Klausel2 und-Verzweigungen father(X,Y) father(Y,Z) father(X,Y) und-Verzweigung Zum Bahnhof fahren Sommer-Semester 2007 Hans-Dieter Burkhard ... oder-Verzweigungen mother(Y,Z) Tram PI2 Fahrkarte kaufen 83 PI2 Taxi Bus und-Verzweigungen Sommer-Semester 2007 Hans-Dieter Burkhard Automat Schalter 84 •14 Und-Oder-Baum Und-Oder-Baum Anfrage Startknoten („Wurzel“) modelliert Ausgangsproblem Ein und-oder-Baum besteht (abwechselnd) aus – Knoten mit oder-Verzweigungen und – Knoten mit und-Verzweigungen Knoten ohne Nachfolger („Blätter“) sind unterteilt in - terminale Knoten („primitive Probleme“) Fakt modellieren unmittelbar lösbare Probleme - nichtterminale Knoten Unerfüllbares modellieren nicht zu lösende Probleme Subgoal Modell für Problemzerlegungen: – oder-Verzweigungen für alternative Möglichkeiten zur Problemzerlegung – und-Verzweigungen für Teilprobleme (keine unifizierende Klausel) Modell für Prolog-Programm: – oder-Verzweigungen für alternative Klauseln einer Prozedur – und-Verzweigungen für subgoals einer Klausel PI2 Sommer-Semester 2007 Hans-Dieter Burkhard Innere Knoten sind unterteilt in - Knoten mit und-Verzweigung - Knoten mit oder-Verzeigung 85 Und-Oder-Baum PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 86 a :a :b :b :c. e. f :f :h. Und-Oder-Baum ?-a a :a :b :b :c. e. f :f :h. PI2 b,c. e,f. g,h. e,h. g. e Sommer-Semester 2007 % % % % % % % % % (1) (2) (3) (4) (5) (6) (7) (8) (9) Hans-Dieter Burkhard (1) b (3) g 87 Lösbare/unlösbare Knoten PI2 (4) h e h (9) (6) (9) Sommer-Semester 2007 (2) c e (5) (6) Sommer-Semester 2007 (8) g e Hans-Dieter Burkhard (1) b Für endliche Bäume ergibt sich bei Festlegung für die Blätter eine eindeutige Zerlegung in lösbare/unlösbare Knoten (Bedingungen sind jeweils komplementär) PI2 (7) 88 a :a :b :b :c. e. f :f :h. ?-a 1. nichtterminale Knoten, 2. Knoten mit Und-Verzweigung: falls mindest. ein Nachfolger unlösbar, 3. Knoten mit Oder-Verzweigung: falls alle Nachfolger unlösbar sind Hans-Dieter Burkhard 89 (3) g PI2 (4) h e h (9) (6) (9) Sommer-Semester 2007 (1) (2) (3) (4) (5) (6) (7) (8) (9) (9) Lösbare Knoten: Unlösbare Knoten: g. e % % % % % % % % % f Lösbare/unlösbare Knoten 1. terminale Knoten, 2. Knoten mit Und-Verzweigung: falls alle Nachfolger lösbar sind 3. Knoten mit Oder-Verzweigung: falls mindestens ein Nachfolger lösbar ist b,c. e,f. g,h. e,h. (2) c e (5) (6) b,c. e,f. g,h. e,h. g. e % % % % % % % % % (1) (2) (3) (4) (5) (6) (7) (8) (9) f (7) (8) g e (6) Hans-Dieter Burkhard 90 •15 Bottom-up-Konstruktionsalgorithmus Anfang: Bottom-up-Konstruktionsalgorithmus MLÖSBAR := terminale Knoten MUNLÖSBAR := nichtterminale Knoten Zyklus: Solange nicht alle Knoten untersucht wurden: Wähle einen Knoten k, dessen Nachfolger alle untersucht wurden. Falls bei k und-Verzweigung und alle Nachfolger von k in MLÖSBAR oder falls bei k oder-Verzweigung und ein Nachfolger von k in MLÖSBAR : MLÖSBAR := MLÖSBAR ∪ {k} , andernfalls: MUNLÖSBAR := MUNLÖSBAR ∪ {k} . PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 91 Ergebnis für endliche Und-oder-Bäume: Zerlegung der Knoten in lösbare Knoten (MLÖSBAR) und unlösbare Knoten (MUNLÖSBAR) Das Ausgangsproblem kann genau dann durch Problemzerlegung gelöst werden, wenn der Startknoten in MLÖSBAR ist. Falls das Ausgangsproblem lösbar ist, kann ein Lösungsbaum konstruiert werden. PI2 Sommer-Semester 2007 Hans-Dieter Burkhard 92 •16