Logik-orientierte Programmierung mit Prolog H.Stoyan

Werbung
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
Herunterladen