Logik-orientierte Programmierung mit Prolog H.Stoyan 20. Juni 2006 1 Verarbeitungsmodell, Programmierssprache, Programmierstil • Spezifikation einer abstrakten Machine: Verarbeitungsmodell • Definition einer Programmiersprache für ein Verarbeitungsmodell • Einhaltung eines Programmierstils entsprechend dem Verarbeitungsmodell 2 Klassisches v.Neumann-Verarbeitungsmodell: • Programme im Speicher sind Ketten von Befehlen • jeder Befehl enthält eine auszuführende Operation und Adressen der Operanden • zu verarbeitende Daten stehen auf bestimmten Speicherstellen oder werden dorthin eingelesen • das Programm startet auf Knopfdruck • Ergebnisse werden ausgegeben oder stehen auf bestimmten Ergebnisadressen 3 Termverarbeitungsmodell: • Programme sind Funktionsdefinitionen • Es wird ein Arbeitsterm vereinfacht • Vereinfachungsregeln: 1. Lambda-Reduktion: Lambda-Ausdruck mit Argumenten wird ersetzt durch den Körper des Ausdrucks, in dem die Argumente für die Variablen substituiert werden 2. Definitionseinsetzung: Für den Namen einer Funktion wird deren Definition (i.a. ein Lambda-Ausdruck) substituiert 3. Variablenumbenennung: Um Variablenkollisionen bei den Regeln 1 und 2 zu vermeiden, werden Variablen umbenannt 4. Ergebnis der Vereinfachung ist ein Wert (eine Datenstruktur, ein Term) Problem in Scheme: Wenn Ergebnis erneut vereinfacht wird, kommt ein anderes Ergebnis heraus (keine Normalform!) 4 Beweiserverarbeitungsmodell: • Programme sind Mengen von log.Formeln • das Programm startet, wenn eine Testformel eingegeben wird • das Ergebnis lautet “Ja” oder “Nein” (wenn die Formel aus der Formelmenge folgt oder ableitbar ist). • Um das Programm zu verstehen, müssen wir den Beweiser verstehen • Es ist ein Resolutionsbeweiser Verwendung des Modells: 1. Programmiersprache Aussagenlogik: Welche Syntax? Welche Semantik? 2. Was bedeutet “folgt” oder “ableitbar”? 5 Beispielprogramm personAllen25MFußballspieler. personBarbara22FFriseuse. personBert55MTaschendieb. personJohn25MSchreiner. hatteaffäreBarbaraJohn. hatteaffäreBarbaraBert. hatteaffäreSusanJohn. motivAllenGeld. motivBarbaraGeld. motivBertGeld. motivJohnGeld. 6 motivAllenEifersucht :personAllen25MFußballspieler, hatteaffäreSusanAllen. motivBertEifersucht :personBert55MTaschendieb, hatteaffäreSusanBert. motivJohnEifersucht :personJohn25MSchreiner, hatteaffäreSusanJohn. ermordetmitSusanKnüppel. 7 Syntax der Aussagenlogik: 1. Elementaraussagen 2. zusammengesetzte Aussagen (Operatoren ∧, ∨, ¬, →) Hier haben wir Horn-Logik: 1. Elementaraussagen 2. Nach jeder Formel .“ ” 3. zusammengesetzte Aussagen (Operatoren ,, :-) 4. Einfache Implikationen statt A ∧ B → C schreiben wir: C :- A, B. 5. Es gibt nur Elementaraussagen und einfache Implikationen! 8 motivBarbaraEifersucht :personBarbara22FFriseuse, hatteaffäreBarbaraAllen, hatteaffäreSusanAllen. motivBarbaraEifersucht :personBarbara22FFriseuse, hatteaffäreBarbaraBert, hatteaffäreSusanBert. motivBarbaraEifersucht :personBarbara22FFriseuse, hatteaffäreBarbaraJohn, hatteaffäreSusanJohn. besitztBertHolzkeule. besitztJohnStange. ... 9 besitzmoeglicherweiseBertHolzkeule :besitztBertHolzkeule. besitztmoeglicherweiseJohnStange :besitztJohnStange. besitztmoeglicherweiseAllenFußballstiefel PersonAllen25MFußballspieler. besitztmoeglicherweiseAllenSchere :PersonAllen25MFußballspieler. besitztmoeglicherweiseBarbaraSchere :PersonBarbara22FFriseuse. besitztmoeglicherweiseBertSchere :PersonBert55MTaschendieb. besitztmoeglicherweiseJohnSchere :PersonJohn25MSchreiner. ... funktioniertwieHolzkeuleKnüppel. funktioniertwieStangeKnüppel. funktioniertwieSchereMesser. 10 alle Kombinationen von: Personen (A,B,B,J), Objekten (F,H,S,Sc), Werkzeugen (M,K) hatmöglichetatwaffeAllen :ermordetmitSusanMesser, besitztmöglicherweiseAllenSchere, funktioniertwieSchereMesser. hatmöglichetatwaffeAllen :ermordetmitSusanKnüppel, besitztmöglicherweiseAllenFußballstiefel, funktioniertwieFußballstiefelKnüppel. hatmöglichetatwaffeBarbara :ermordetmitSusanMesser, besitztmöglicherweiseBarbaraSchere, funktioniertwieSchereMesser. 11 hatmöglichetatwaffeBarbara :ermordetmitSusanKnüppel, besitztmöglicherweiseBarbaraStange, funktioniertwieStangeKnüppel. alle Kombinationen von Personen (A,B,B,J) und Motiven (E,G) verdaechtigAllen :hatmöglichetatwaffeAllen, motivAllenEifersucht. verdaechtigJohn :hatmöglichetatwaffeJohn, motivJohnGeld. 12 Semantik der Aussagenlogik: 1. Elementaraussagen (a) Sinn: Welt von bestehenden Sachverhalten W, Menge von einfachen Propositionen (im Verstand) Sinnabbildung: Elementaraussagen → W Sinnkriterium: Nur verifizierbare Aussage hat Sinn (b) Bewertung, Urteil: Wert einer Elementaraussage ist wahr oder falsch Bewertungsabbildung: Elementaraussagen → {W, F } 2. zusammengesetzte Aussagen Wahrheitswertfunktionen für ¬, ∧, ∨, →, ↔ (a) σ¬ = {(F, W ), (W, F )} (b) σ∧ = {(F, F, F ), (F, W, F ), (W, F, F ), (W, W, W )} (c) σ∨ = {(F, F, F ), (F, W, W ), (W, F, W ), (W, W, W )} (d) σ→ = {(F, F, W ), (F, W, W ), (W, F, F ), (W, W, W )} (e) σ↔ = {(F, F, W ), (F, W, F ), (W, F, F ), W, W, W )} 13 3. Gibt es eine Bewertung (bei der den vorkommenden Elementarvariablen die Werte W und F zugewiesen wurden), bei der eine Gesamtformel wahr wird, so nennen wir die Bewertung Modell der Aussage 4. Aussage heißt erfüllbar, wenn es eine Bewertung gibt, bei der die Aussage den Wert W erhält 5. Aussage heißt allgemeingültig, wenn bei allen Bewertungen die Aussage den Wert W erhält 6. Aussage heißt widerlegbar, wenn es eine Bewertung gibt, bei der die Aussage den Wert F erhält 7. Aussage heißt widersprüchlich (unerfüllbar), wenn es keine Bewertung gibt, bei der die Aussage den Wert F erhält 8. Verwendung der 4 Eigenschaften auch für Formelmengen 9. Eine Formel folgt aus einer Formelmenge: Formel F folgt aus Formelmenge, wenn Formel immer wahr, wenn alle Formeln der Formelmenge wahr 14 10. Beispiel: (a∨¬a) folgt aus jeder beliebigen anderen Formelmenge: Tautologie 11. Folgt ist semantischer Begriff. Um Folgerung festzustellen, ist Wahrheitsprüfung erforderlich 12. Wahrheitsprüfung (Erfüllbarkeitsprüfung) z.B. mit Wahrheitstafelmethode 13. Wahrheitstafelmethode ist von exponentieller Komplexität 14. eine polynomiale Methode ist (für die volle Aussagenlogik) unbekannt 15 1. logisches Verarbeitungsmodell • Ein vom Anwender aufgestelltes Axiomensystem wird vorverarbeitet: Die Wahrheitswertetafel der Konjunktion wird aufgestellt. • eine Anfrageformel wird eingegeben, ihre Wahrheitswertetafel wird aufgestellt. • Für jede Zeile, in der die Wahrheitswertetafel des Axiomensystems ein W zeigt, muß auch die Wahrheitswertetafel der Anfrageformel ein W zeigen. • Ist das Kriterium erfüllt, so gibt der Folgerungsprüfer Ja“ aus, sonst ” Nein“ ” 16 Varianten Wenn man eine Zeile angeben könnte, in der die Anfrageformel mit F bewertet wird, das Axiomemsystem aber mit W, würde dies ausreichen, um festzustellen, ob Nein“ auszugeben ist. ” In diesem Falle sprechen wir vom Widerspruch. Die Implikation ist nur dann F, wenn die 1. Prämisse W ist und die zweite F. Also könnten wir auch die Implikation aus der Axiomenkonjunktion und der Anfrageformel bewerten. Die Formel folgt nur, wenn die Implikation immer W ist. Auch könnten wir die Konjunktion aus den Axiomen und der negierten Anfrageformel bewerten. Gibt es eine Zeile mit dem Gesamtwert W, dann ist Nein“ auszugeben. ” 17 Äquivalenz von Formeln Zwei Formeln heißen äquivalent, wenn die letzte Zeile ihrer Wertetafel identisch ist. Das bedeutet, sie realisieren dieselbe logische Funktion der in ihnen auftretenden Elementaraussagen. Zwei Formeln A und B heißen äquivalent, wenn A ↔ allgemeingültig ist. Beispiele: Äquivalent sind: • ¬(A ∧ B) und (¬A ∨ ¬B) • ¬(A ∨ B) und (¬A ∧ ¬B) • (A ∧ (B ∧ V )) und ((A ∧ B) ∧ C) • (A ∧ B) und (B ∧ A) • A und ¬¬A • ((A ∧ (B ∨ C) und ((A ∧ B) ∨ (A ∧ C)) 18 Zu jeder Booleschen Funktion f : Ωn 7→ Ω gibt es mindestens eine Aussagenlogische Formel, die n Variablen enthält und mit der Booleschen Funktion wertgleich ist. Zu jeder Formel gibt es eine äquivalente Formel, der Gestalt ((q11 ∧ ...q1n) ∨ (q21 ∧ ...q2n)... ∨ (qm1 ∧ ...qmn)), die disjunktive kanonische Form (Disjunktive Normalform). Zu jeder Formel gibt es eine äquivalente Formel, der Gestalt ((q11 ∨ ...q1n) ∧ (q21 ∨ ...q2n)... ∧ (qm1 ∨ ...qmn)), die konjunktive kanonische Form (Konjjunktive Normalform). 19 Alternative: Syntaktische Arbeit Wenn sehr viele Elementaraussagen zu verknüpfen sind, ist die Wahrheitswertetafel sehr aufwendig. In der Prädikatenlogik hat man es meist mit unendlich vielen möglichen Fällen zu tun. Alternative zum Folgern: das Schließen = syntaktisches Vorgehen. Entdeckung des Aristoteles: Es gibt Aussagen über die Welt, die rein strukturell wahr oder falsch sind. Beispiel: Es regnet, oder es regnet nicht. Es regnet, und es regnet nicht. Es gibt Beziehungen zwischen Aussagen, die rein strukturell fundiert sind, und doch Aussagen über die Wahrheit erlauben. Beispiel: Ist die Aussage a wahr und auch die Aussage a → b, dann ist auch die Aussage b wahr. 20 Interessant an dem Beispiel ist, daß die Aussage b eindeutig bestimmt ist. Beispiel: Ist die Aussage (a ∧ b) wahr, dann sind auch die Aussagen a und b wahr. (Wahr heißt: Bei einer Bewertung mit W bewertet.) Eindeutige Beziehungen nennen wir Funktionen. 21 Kalküle Strukturelle eindeutige Beziehungen zwischen Formeln wollen wir Regeln (auch Schlußregeln) nennen. Argumentformeln: Prämissen Resultatformel: Konsequenz Nullstellige Regeln nennen wir logische Axiome. Systeme von Regeln heißen Kalküle Regeln sind n-stellige Funktionen von Formeln in Formeln. F × ... × F 7→ F Typischerweise: Strukturelle Beschreibung der Formeln. Elementaraussagen werden zu Formelvariablen Beispiel für logische Axiome: (a → a) Beispiel für Schlußregel: Modus Ponens. Zweistellige Funktion! nicht alle Regeln sind brauchbar! Beispiel: Regel Aus einer Formel a wird auf (a∧¬a) geschlossen, gleichgültig ob a wahr oder falsch: Ergebnis immer falsch Wunsch: Erhaltung der Allgemeingültkeit, Erfüllbarkeit, Nichterfüllbarkeit, Widerlegbarkeit 22 positiver Kalkül: wenn Argumentformeln allgemeingültig, dann auch die Schlußkonsequenz (wenn Argumentformel wahr in gewisser Bewertung, dann auch Konsequenz in derselben Bewertung). Beispiel: Hilbert-Kalkül Axiome und 2 Regeln 23 Der Hilbert Kalkül 1. Alphabet: {¬, →, (, ), p1, p2, ...} 2. Formeln: Jedes pi ∈ F. Falls F und G ∈ F, so auch ¬F und F → G∈F 3. Axiome(nschemata): (a) (A → (B → A)) (b) ((A → (B → C)) → ((A → B) → (A → C))) (c) (((¬A) → (¬B)) → (B → A)) 4. Modus ponens als Schlußregel: (A, A → B; B) 5. Substitution als Schlußregel: Ist F (A) wahr und B beliebig, dann ist F (B) wahr. A ist eine Elementaraussage oder Formelvariable der Schemata. 24 Der Hilbert-Kalkül ist aufbauend: Startend von einem Axiomensystem (als wahr angenommene Formeln) werden andere wahre Formeln abgeleitet. Zweck des Kalküls: Beweiskonstruktion. Ein Beweis ist eine Folge von Formeln, so daß entweder 1. jede Formel aus dem Beweis ist ein Axiom 2. jede Formel aus dem Beweis mit Index i ist Konsequenz eines Schlusses, wobei Formeln mit Indizes j < i Prämissen sind. Problem: Ein Beweis beweist eine Formel. Die Formel muß im Beweis vorkommen. (danach muß der Beweis nicht fortgesetzt werden) Wie findet man den Beweis einer Formel? Heuristische Suchprozedur! Nachteil heuristischer Prozeduren: Trotz Beweisbarkeit wird (vielleicht) kein Beweis gefunden Wichtig aber: Zielformel muß erfunden werden 25 Zerlegender Kalkül: Regeln zerlegen Formeln in Bestandteile Ein Beweis ist eine Folge von Formeln, so daß 1. die erste Formel ist die Zielformel 2. weitere Formeln im Beweis sind Konsequenzen von Regeln mit Prämissen aus dem Beweis Der Beweis ist vollständig, wenn alle Formeln im Beweis Konsequenzen als Axiome haben Beispiel: Resolutionskalkül ein widerlegender zerlegender Kalkül. 26 Der Resolutionskalkül Axiom ist: die leere Klausel, Regel: die Resolutionsregel Aus Formeln a1 ∨ ... ∨ an und b1 ∨ ... ∨ bm schließen wir a1 ∨ ...ai−i ∨ ai+1 ∨ ...an ∨ b1 ∨ ... ∨ bj−i ∨ bj+1 ∨ ... ∨ bm, wenn ai = ¬bj Gegeben: Menge von Anwendungsformeln. Zielformel ist das Negat aus der eigentlich zu beweisenden Formel Ein Beweis ist eine Folge von Formeln, so daß 1. Formel im Beweis ist Zielformel oder Anwendungsformel 2. Formel im Beweis mit Index i ist Konsequenz zweier Formeln mit Index j und k, j < i, k < i Der Beweis ist geglückt, wenn Axiomformel [] vorkommt Vorteil des Kalüls: Nur 1 Regel, nur ein (einfaches) Axiom 27 Kalküle können auch zu schwach sein, d.h. es könnte Formeln geben, die zwar aus einer Anwendungsformelmenge folgen, für die aber kein Beweis konstruiert werden kann. Dann sprechen wir von einem unvollständigen Kalkül Für einen vollständigen Kalkül kann man ein Deduktionstheorem beweisen: Wenn Formel folgt, dann Formel ableitbar. Die Umkehrung (wenn Formel ableitbar, dann folgt sie) ist eine Aussage über die Korrektheit des Kalküls (aller Regeln insgesamt) Resolutionsregel erhält Widerlegbarkeit der Formelmenge: Die um (negierte) Zielformel erweiterte Menge der Anwendungsformeln ist widerlegbar und bleibt es auch trotz Hinzufügung der Konsequenzen Tatsächlich, wie Axiomformel [] zeigt, arbeitet der Resolutionskalkül mit Klauseln 28 Syntax der Klausellogik: 1. Elementaraussagen, Literale: Elementaraussagen und ihre Negate 2. Formeln sind Mengen von Literalen, auch die leere Klausel ist erlaubt Vorstellung: Disjunktionen Semantik der Klausellogik: 1. die leere Klausel ist immer falsch 2. einelementige Klauseln sind erfüllbar (durch Zuweisung des Wahrheitswertes W zu dem einzigen Literal) 3. n-elementige Klauseln sind erfüllbar, wenn es eine Bewertung der Elementaraussagen gibt, so daß ein Literal einer Klausel wahr sind 4. eine Klauselmenge ist erfüllbar, wenn alle Klauseln bei einer Bewertung erfüllt sind Konsequenz: ist die leere Klausel abgeleitet, kann die Klauselmenge nicht erfüllbar sein 29 Resolutionsverarbeitungsmodell 1. Ein logisches Programm ist eine Menge von Anwendungsklauseln 2. Ein logisches Programm wird aktiviert durch Vorlage einer Zielformel 3. Der Beweiser negiert die Zielformel und sucht nach einem Widerlegungsbeweis 4. Ist die leere Klausel abgeleitet, hält der Beweiser und das Resultat ist ’Ja’ Zurück zum Beispiel: Die Klausel a, ¬b wurde notiert als a :- b. Die Klausel a, ¬b1, ¬b2, ...¬bn als a :- b1 b2 ... bn Das heißt, das Programm besteht nur aus Elementaraussagen und einfachen Implikationen Warum? 30 Auch der syntaktische Beweiser für Aussagenlogik in Klauselform hat exponentielle Komplexität Bei Beschränkung auf die einfachen Klauseln (Hornklauseln) ändert sich das Bild aber: Entscheidung der Hornklauseln polynomial möglich! 31 Programmieren mit Aussagen-Horn-Logik Ausdruckskraft der Aussagenlogik aber beschränkt - Programmieren unbequem: Viele Implikationen und Elementaraussagen müssen in allen Kombinationen formuliert werden Elementaraussagen haben keine Feinstruktur: Keine Parameter, keine Koordinaten usw. Vorgehen beim Programmieren: 1. Natürlichsprachige Spezifikation 2. Aufstellen einer Liste von Elementaraussagen (Vokabular) 3. Formulieren der Fakten und der Implikationen Anwendung der Aussagenlogik unmöglich, wenn unendlich viele Elementaraussagen z.B.: Aussagen über Primzahlen oder über Meßergebnisse Anwendung der Aussagenlogik unbequem, wenn vielfältige Eigenschaftsund Beziehungsbeschreibungen nötig sind 32 statt: Alle Menschen brauchen Geld muß man für jeden der inFrage kommenden Personen schreiben: XbrauchtGeld das geht mit Prädikatenlogik besser! 33 Syntax der Prädikatenlogik: a) Terme aa) Objektkonstanten sind Terme. Syntax: Identifier beginnend mit kl.Buchstaben ab) Objektvariable sind Terme. Syntax: Identifier beginnend mit gr.Buchsta ac) Ausdrücke der Form f (t1, ..., tn) sind Terme, wenn f eine Funktionskonstante und die ti alle Terme sind ad) Funktionskonstante: Syntax: Identifier beginnend mit kl.Buchstaben (manchmal mit zugeordneter Stelligkeit: sin/1) b) Fakten (Atomformeln) ba) Prädikate (Relationskonstante): Syntax: Identifier beginnend mit kl.Buchstaben (manchmal mit zugeordneter Stelligkeit: gleich/2) bb) Ausdrücke der Form p(t1,...,tn) sind Fakten c) Komplexe Formeln c1) Ist F Formel, dann auch ¬F c2) sind F und G Formeln, dann auch (F ∧ G), (F ∨ G), (F → G) und (F ↔ G) 34 c3) Ist F Formel, dann auch ∀x(F ) und ∃x(F ). d) offene und geschlossene Formeln da) kommt in einer Formel eine Variable vor, die nicht im Bereich eines Quantors steht, dann nennen wir sie frei und die Formel heißt offen db) kommt in einer Formel eine Variable vor, die im Bereich eines Quantors steht, dann nennen wir sie gebunden dc) kommt in einer Formel keine Variable vor, die nicht im Bereich eines Quantors steht, dann nennen wir sie geschlossen 35 Semantik der Prädikatenlogik: 1. Wahl eines Universums, einer Menge von Objekten mit darüber definierten Funktionen und Relationen 2. Für alle verwendeten Objektkonstanten wird jeweils ein Element im Universum ausgewählt (nicht notwendig verschieden - dies ist aber plausibel) 3. Für alle verwendeten Funktionskonstanten mit Stelligkeit i wird eine istellige Funktion über dem Universum ausgewählt (nicht notwendig verschieden - dies ist aber plausibel) 4. Für alle verwendeten Prädikate mit Stelligkeit i wird eine istellige Relation über dem Universum ausgewählt (nicht notwendig verschieden dies ist aber plausibel) 5. Für alle geschlossenen Atomformeln ohne Quantor gibt es in der zugehören Relation ein Tupel, das den Argumenten entspricht oder nicht. Falls es das Tupel gibt, bewerten wir die Formel mit W, gibt es das Tupel nicht, bewerten wir die Formel mit F 36 6. ist F eine Formel ¬G und kann ich G bewerten, dann bekommt F die gegenteilige Bewertung 7. ist F eine Formel der Form (GoH) und kann ich G und H bewerten, dann bekommt F die Bewertung σo(σ(G), σ(H)) 8. offene Formeln kann man nur in Zusammenhang mit einer Zuweisung bewerten: Eine Zuweisung ist die Zuordnung je eines Objekts aus dem Universum zu jeder vorkommenden freien Variablen. Erfinden wir Namen für diese Objekte und substituieren diese für die (freien) Variablen, so erhalten wir eine bewertbare geschlossene Formel 9. eine Formel der Form ∀xF (x), wobei x in F durch den Quantor gebunden ist, wird mit W bewertet, wenn für alle Zuweisungen die Bewertung von F(X) W ist. In allen anderen Fälle ist sie F 10. eine Formel der Form ∃xF (x), wobei x in F durch den Quantor gebunden ist, wird mit W bewertet, wenn es eine Zuweisungen gibt, für die die Bewertung von F(X) W ist. In allen anderen Fälle ist sie F Statt Kalküle für die Prädikatenlogik durchzusprechen, gehen wir gleich zur Klausellogik: 37 Syntax der Klausellogik 1.Ordnung: a) wie bei Prädikatenlogik b) wie bei Prädikatenlogik c ) ist F Atomformel, dann sind F und -F Literale d) [] ist eine Klausel (die leere Klausel) e) Klauseln aus einer einzigen Atomformel heißen Fakten f ) Klauseln aus einem positiven Literal (dem Kopf) und einigen negativen Literalen (dem Körper) heißen Implikation (Regel) g) Alle Klauseln aus den Anwendungsformeln sind bezgl. jeder auftretenden Variablen (implizit) allquantifiziert h) Zielformeln sind bezgl. jeder auftretenden Variablen (implizit) existenzquantifiziert Wir notieren nach jeder Formel (Klausel) einen Punkt. Wir notieren in einer Implikation nach jedem Literal ein Komma. Das Komma nach dem Kopf schreiben wir als :38 Damit schreiben wir das Ausgangsbeispiel: person(allen,25,m,fußballspieler). person(barbara,22,f,friseuse). person(bert,55,m,taschendieb). person(john,25,m,schreiner). hatteaffäre(barbara,john). hatteaffäre(barbara,bert). hatteaffäre(susan,john). motiv(X,geld). motiv(X,eifersucht) :person(X,_,m,_), hatteaffäre(susan,X). 39 motiv(X,eifersucht :person(X,_,f,_), hatteaffäre(X,Y), hatteaffäre(susan,Y). besitzt(bert,holzkeule). besitzt(john,stange). besitzmoeglicherweise(X,Y) :besitzt(X,Y). besitztmoeglicherweise(X,fußballstiefel) :person(X,_,_,fußballspieler). besitztmoeglicherweise(X,schere) :person(X,_,_,_). ... funktioniertwie(holzkeule,knüppel). funktioniertwie(stange,knüppel). funktioniertwie(schere,messer). 40 ermordetmit(susan,knüppel). hatmöglichetatwaffe(X) :ermordetmit(susan,Y), besitztmöglicherweise(X,Z), funktioniertwie(Z,Y). verdaechtig(X) :hatmöglichetatwaffe(X), motiv(X,Y). 41 Prolog Von dieser Klausellogik unterscheidet sich die Programmiersprache Prolog durch: 1. es gibt Konstantensymbole für Zahlen, Zeichen und Zeichenketten 2. es gibt Infixsyntax für einige Prädikate 3. anonyme Variable (stehen im Beispiel schon) 4. Listen-Notation für bestimmte Terme (cons) 5. arithmetische Ausdrücke werden ausgerechnet, wenn sie nach einem is-Prädikat stehen 6. es gibt Prädikate, die Aktionen (beim Beweis) auslösen 7. Sprechweise: Einerklauseln = Fakten, Implikationen = Regeln, Zielformel = Anfrage 8. Reihenfolge der Prämissen in den Implikationen hat Einfluß auf Effizienz und Termination 42 9. Reihenfolge der Klauseln ist sehr wichtig, hat Einfluß auf Effizienz und Termination Semantik eines Logikprogramms: Die Menge der ableitbaren Grundfakten Fakt = Atomformel, Einer-Klausel Grund = keine Variablen in der Formel, sondern nur Konstanten 43 Ableitbare Grundfakten für das Beispiel person(allen,25,m,fußballspieler). person(barbara,22,f,friseuse). person(bert,55,m,taschendieb). person(john,25,m,schreiner). hatteaffäre(barbara,john). hatteaffäre(barbara,bert). hatteaffäre(susan,john). motiv(allen,geld). motiv(barbara,geld). motiv(bert,geld). motiv(john,geld). ... motiv(john,eifersucht). motiv(bert,eifersucht). motiv(barbara,eifersucht). besitzt(bert,holzkeule). besitzt(john,stange). 44 besitzmoeglicherweise(bert,holzkeule). besitzmoeglicherweise(john,stange). besitztmoeglicherweise(allen,fußballstiefel). besitztmoeglicherweise(allen,schere). besitztmoeglicherweise(barbara,schere). besitztmoeglicherweise(bert,schere). besitztmoeglicherweise(john,schere). ... funktioniertwie(holzkeule,knüppel). funktioniertwie(stange,knüppel). funktioniertwie(schere,messer). ermordetmit(susan,knüppel). hatmöglichetatwaffe(bert). hatmöglichetatwaffe(john). verdaechtig(bert). verdaechtig(john). 45