18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS...

28
18.10.99 GK Prolog - Fakten, Reg eln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf [email protected]

Transcript of 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS...

Page 1: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

1

Fakten, Regeln und Anfragen

Prolog Grundkurs WS 99/00

Christof Rumpf

[email protected]

Page 2: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

2

Programmieren = Problemlösen

Prolog ist eine deklarative Programmiersprache. Problemlösen in Prolog heißt Probleme beschreiben, indem Objekte mit ihren Eigenschaften und Beziehungen dargestellt werden.– Was ist das Problem?– Welche Objekte sind beteiligt?– Welche Eigenschaften und Beziehungen?

Page 3: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

3

„Natürliches“ Schließen

Sokrates ist ein Mensch. Alle Menschen sind sterblich.

Sokrates ist sterblich.

– Sprache: natürliche Sprache, Deutsch.– Schlußregel: natürliches, intuitives

Schließen.

Page 4: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

4

Modus Ponens

mensch(sokrates) A x mensch(x) sterblich(x) A B

sterblich(sokrates) B

– Sprache: formale Sprache, PL1– Schlußregel:Modus Ponens

Page 5: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

5

Resolution

mensch(sokrates). sterblich(X):- mensch(X). X

?- sterblich(X). X X = sokrates yes

– Sprache: formale Sprache, Prolog

– Schlußregel:Resolution

Page 6: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

6

Namen sind Schall und Rauch

banane(sokrates). kann_fliegen(X):- banane(X).

?- kann_fliegen(X). X = sokrates yes

Page 7: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

7

Analyse des Sokrates-Beispiels

– 1 Objekt sokrates.– 1 Menge von Objekten X.– 1 Eigenschaft mensch von Objekt sokrates.– 1 bedingte Eigenschaft sterblich einer Menge

von Objekten X.– 1 Beziehung zwischen Mengen von Objekten:

sterblich(X):- mensch(X).Die Mengen sind identisch.

Page 8: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

8

Prolog Entwicklungsumgebung

Entwicklungsumgebung (IDE)

Editor

Interpreter(Inferenzmaschine)

Benutzerschnittstelle(Anfragen)

Wissensbasis(Prolog-Programm = Regeln + Fakten)

Page 9: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

9

Fakten, Regeln und Anfragen

mensch(sokrates).

sterblich(X):- mensch(X).

?- mensch(sokrates).

yes

?- mensch(aristoteles).

no

?- sterblich(sokrates).

yes

Fakt

Regel

Anfrage

Die Inferenzmaschine versucht die Anfragen durch Zugriff auf die Wissensbasis zu beweisen.

Page 10: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

10

Fakten

Fakten sind Aussagen über Eigenschaften und Beziehungen von Objekten, die als wahr angenommen werden. Z.B.

„Fritz liebt Anna.“ ist eine Aussage über eine Beziehung zwischen

zwei Objekten. In Prolog können wir folgenden Fakt formulieren:

liebt(fritz, anna).

Page 11: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

11

Schreibweise für Fakten

In Prolog verwenden wir eine standardisierte Form, um Fakten zu repräsentieren.

• Die Bezeichner aller Objekte, Eigenschaften und Beziehungen beginnen mit Kleinbuchstaben.

• Die Bezeichner für Mengen von Objekten (Variablen) beginnen mit Großbuchstaben.

• Die Bezeichner für Eigenschaften und Beziehungen werden zuerst geschrieben und die Objekte durch Kommata getrennt in runden Klammern.

• Am Ende eines Fakts kommt ein Punkt.

Page 12: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

12

Prädikate und Argumente

– Eigenschaften und Beziehungen werden Prädikate genannt.

– Bezeichner von Eigenschaften und Beziehungen werden Funktoren genannt.

– Die Objekte werden Argumente genannt.– Ein Prädikat mit n Argumenten hat

Stelligkeit/Valenz/Arity n.

funktor(Arg1,..., Argn)

Page 13: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

13

Argumentreihenfolge

Die Reihenfolge der Argumente von Beziehungen spielt eine Rolle.

liebt(anna,fritz). liebt(fritz,anna).

verheiratet(X,Y). verheiratet(Y,X).

Page 14: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

14

Argumentposition

Wir können selbst bestimmen, welche Interpretation die Argumentpositionen bekommen.

„Anna ist die Mutter von Maria.“ mutter(anna,maria). oder mutter(maria,anna).

mutter(Mutter,Kind). oder mutter(Kind,Mutter).

Einmal getroffene Konvention beibehalten.

Page 15: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

15

Einige Beispiel-Fakten

wertvoll(gold).

fem(anna).

besitzt(fritz,gold).

vater(fritz,anna).

gibt(fritz,anna,buch).

Gold ist wertvoll.

Anna ist weiblich.

Fritz besitzt Gold.

Fritz ist der Vater von Anna.

Fritz gibt Anna das/ein Buch.

Page 16: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

16

Universelle Fakten

Fakten, die Variablen als Argumente haben, werden universelle Fakten genannt.

objekt(X). beziehung(X,Y). weg(X,rom).

Die Variablen stehen für beliebige Objekte.

Page 17: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

17

Atomare Fakten

Fakten können auch aus 0-stelligen Prädikaten bestehen. Von Bedeutung sind inbesondere zwei atomare Fakten, deren Verwendung standardisiert ist:

true. Ist immer definiert. fail. Ist niemals definiert.

Page 18: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

18

Von Fakten zu Regeln

„Fritz liebt alle Menschen.“

Faktenrepräsentation:

liebt(fritz,anna). liebt(fritz,paul). liebt(fritz,sokrates). ...

Regelrepräsentation:

liebt(fritz,X):- mensch(X). mensch(anna). mensch(paul). mensch(sokrates). ...

Page 19: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

19

Fakten und Regeln

Fakten bezeichnen Eigenschaften und Beziehungen von Objekten und werden unbedingt als wahr angesehen.

Regeln führen Bedingungen für die Wahrheit von Eigenschaften und Beziehungen ein.

Fakten lassen sich auch als Regeln umformulieren:

liebt(fritz,anna). liebt(fritz,anna):- true.

Page 20: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

20

Aufbau von Regeln

Regeln bestehen aus Kopf und Rumpf.

Head :- Body.

Der Kopf ist ein Prädikat und der Rumpf ein Prädikat oder eine Konjunktion und/oder Disjunktion von Prädikaten.

Page 21: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

21

Konjunktion

„Fritz liebt jeden, der Wein und Essen liebt.“

liebt(fritz,X):- liebt(X,wein), liebt(X,essen).

Allgemein:

A:- B1, ..., Bn | A, B Prädikate

Page 22: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

22

Disjunktion

„Fritz liebt jeden, der Wein oder Essen liebt.“

liebt(fritz,X):- liebt(X,wein);liebt(X,essen).

Alternativ:

liebt(fritz,X):- liebt(X,wein). liebt(fritz,X):- liebt(X,essen).

Page 23: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

23

Negation

„Fritz liebt alle Menschen außer sich selbst.“

liebt(fritz,X):- mensch(X), not X = fritz.

Alternativ:

liebt(fritz,X):- mensch(X), X \= fritz.

Page 24: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

24

Klauseln und Prädikate

Fakten und Regeln werden unter dem Oberbegriff Klauseln zusammengefasst.

Prolog-Programme bestehen aus Klauseln.

Alle Klauseln mit dem gleichen Prädikat im Kopf bilden eine Prädikatsdefinition, bzw definieren ein Prädikat.

Page 25: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

25

Anfragen

Anfagen werden am Prompt des Interpreters gestellt.

Interpretation von Anfragen: ?- sterblich(sokrates).

Hat das Objekt sokrates die Eigenschaft sterblich? ?- sterblich(X).

Gibt es ein Objekt X mit der Eigenschaft sterblich?

Page 26: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

26

Backtracking

Wenn es mehrere Lösungen zu einer Anfrage gibt, werden die Elemente der Lösungsmenge aufgezählt. Der Interpreter muß sich dabei merken, welche Lösungen er schon gefunden hat.

Das Verfahren, mehrere Verzweigungen in einem Lösungsraum verwalten zu können, nennt man Backtracking. Prolog-Interpreter haben dieses Verfahren eingebaut.

Page 27: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

27

Mehrere Lösungen

Datenbasis

liebt(fritz,blumen). liebt(fritz,anna). liebt(paul,anna).

Anfragen

?- liebt(X,anna). X = fritz ->; X = paul ->; no

Durch Eingabe eines Semikolons nach einer Antwort auf eine Anfrage bringen wir den Interpreter zum Backtracking.

Page 28: 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

18.10.99 GK Prolog - Fakten, Regeln und Anfragen

28

Variablen

Variablen gelten im Kontext von Anfagen als implizit existensquantifiziert.

?- mensch(X).

Gibt es ein Objekt X mit Eigenschaft mensch?

Variablen gelten im Kontext von Fakten und Regeln als implizit allquantifiziert.

sterblich(X):- mensch(X).

Alle Objekte X mit Eigenschaft mensch haben auch Eigenschaft

sterblich.