syntax von prolog & familiendatenbasis prolog grundkurs ws 99/00 christof rumpf...
TRANSCRIPT
![Page 2: Syntax von Prolog & Familiendatenbasis Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de](https://reader038.vdocuments.site/reader038/viewer/2022102923/55204d6549795902118bb366/html5/thumbnails/2.jpg)
25.10.99 GK Prolog - Syntax, Familiendatenbasis
2
Syntax von Prolog
Die Syntax von Prolog beschreibt die Menge der wohlgeformten Ausdrücke in Prolog.
Wir kennen bereits einige grundlegende Konzepte wie Fakten, Regeln, Klauseln, Anfagen, Prädikate, Argumente, Variablen, Funktoren, ...
![Page 3: Syntax von Prolog & Familiendatenbasis Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de](https://reader038.vdocuments.site/reader038/viewer/2022102923/55204d6549795902118bb366/html5/thumbnails/3.jpg)
25.10.99 GK Prolog - Syntax, Familiendatenbasis
3
Terme
Die grundlegende Datenstruktur in Prolog ist der Term. Terme werden aus ASCII-Zeichen gebildet.
A B C ... X Y Z Großbuchstaben a b c ... x y z Kleinbuchstaben 1 2 3 ... 8 9 0 Ziffern + - * / \ ^ [ ] Sonderzeichen ( ) ~ : . ? , ;
![Page 4: Syntax von Prolog & Familiendatenbasis Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de](https://reader038.vdocuments.site/reader038/viewer/2022102923/55204d6549795902118bb366/html5/thumbnails/4.jpg)
25.10.99 GK Prolog - Syntax, Familiendatenbasis
4
Sorten von Termen
Terme
einfach zusammengesetzt
Atome Zahlen Variablen Strukturen Listen (Prädikate) Integers Reals
![Page 5: Syntax von Prolog & Familiendatenbasis Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de](https://reader038.vdocuments.site/reader038/viewer/2022102923/55204d6549795902118bb366/html5/thumbnails/5.jpg)
25.10.99 GK Prolog - Syntax, Familiendatenbasis
5
Atome
Atome sind Zeichenfolgen, die mit einem Kleinbuchstaben beginnen. Der Rest eines Atoms kann aus Klein- oder Großbuchstaben und Ziffern bestehen, aber keine Sonderzeichen außer „_“ (Unterstrich) enthalten.
wir sind vier atome ichBinAtomNr5
ich_bin_atom_frieda
![Page 6: Syntax von Prolog & Familiendatenbasis Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de](https://reader038.vdocuments.site/reader038/viewer/2022102923/55204d6549795902118bb366/html5/thumbnails/6.jpg)
25.10.99 GK Prolog - Syntax, Familiendatenbasis
6
Hochkommata
Durch einfache Hochkommata kann man beliebige Zeichenfolgen „zwangsatomisieren“.
`Ich bin ein Atom.` `0815`
`°!^/{?#*§@`
![Page 7: Syntax von Prolog & Familiendatenbasis Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de](https://reader038.vdocuments.site/reader038/viewer/2022102923/55204d6549795902118bb366/html5/thumbnails/7.jpg)
25.10.99 GK Prolog - Syntax, Familiendatenbasis
7
Variablen
Variablen sind Zeichenfolgen, die mit einem Großbuchstaben oder „_“ beginnen. Bis auf nicht vorhandene Zwangsvariabilisierung gilt für den Rest das gleiche wie für Atome.
X Fritz
_ich_bin_eine_Variable
![Page 8: Syntax von Prolog & Familiendatenbasis Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de](https://reader038.vdocuments.site/reader038/viewer/2022102923/55204d6549795902118bb366/html5/thumbnails/8.jpg)
25.10.99 GK Prolog - Syntax, Familiendatenbasis
8
Variablenidentität
Die anonyme Variable besteht lediglich aus einem Zeichen: „_“ (Unterstrich). Im Gegensatz zu anderen Variablen kann man mit anonymen Variablen keine Variablengleichheit erzielen.
liebt(X,Y). nicht notwendigerweise gleich liebt(X,X). notwendigerweise gleich liebt(_,_). nicht notwendigerweise gleich
![Page 9: Syntax von Prolog & Familiendatenbasis Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de](https://reader038.vdocuments.site/reader038/viewer/2022102923/55204d6549795902118bb366/html5/thumbnails/9.jpg)
25.10.99 GK Prolog - Syntax, Familiendatenbasis
9
Interne Variablen
Arity Prolog 6.1 verwendet intern eine standardisierte Darstellung für Variablen: 4-stellige Hexadezimalzahlen mit führendem Unterstrich.
?- X = Y. X = _0F5A Y = _0F5A yes
![Page 10: Syntax von Prolog & Familiendatenbasis Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de](https://reader038.vdocuments.site/reader038/viewer/2022102923/55204d6549795902118bb366/html5/thumbnails/10.jpg)
25.10.99 GK Prolog - Syntax, Familiendatenbasis
10
Zahlen
Integers
(Ganze Zahlen)
-2487 -1 0 3 455
Reals
(Fließkommazahlen)
-2487.0 1.34 0.0 .5 122.345e25
![Page 11: Syntax von Prolog & Familiendatenbasis Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de](https://reader038.vdocuments.site/reader038/viewer/2022102923/55204d6549795902118bb366/html5/thumbnails/11.jpg)
25.10.99 GK Prolog - Syntax, Familiendatenbasis
11
Strukturen
Strukturen sind zusammengesetzte Terme und bestehen aus Funktor und einer Folge von Argumenten, die in Klammern eingeschlossen und durch Kommata getrennt werden.
funktor(Arg1,..., Argn)
Funktoren sind Atome, Argumente sind Terme.
![Page 12: Syntax von Prolog & Familiendatenbasis Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de](https://reader038.vdocuments.site/reader038/viewer/2022102923/55204d6549795902118bb366/html5/thumbnails/12.jpg)
25.10.99 GK Prolog - Syntax, Familiendatenbasis
12
Beispiel-Strukturen
mensch(sokrates)
student(name(vorname(berti), nachname(vogts)), matrikelnr(4711))
![Page 13: Syntax von Prolog & Familiendatenbasis Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de](https://reader038.vdocuments.site/reader038/viewer/2022102923/55204d6549795902118bb366/html5/thumbnails/13.jpg)
25.10.99 GK Prolog - Syntax, Familiendatenbasis
13
Operatoren
Die Funktoren von 1- oder 2-stelligen Strukturen können auch als Operatoren definiert sein.
Beispiele: a :- b :- Infixoperator :-(a,b)
a. . Postfixoperator .(a) -235 - Präfixoperator -(235)
![Page 14: Syntax von Prolog & Familiendatenbasis Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de](https://reader038.vdocuments.site/reader038/viewer/2022102923/55204d6549795902118bb366/html5/thumbnails/14.jpg)
25.10.99 GK Prolog - Syntax, Familiendatenbasis
14
Fakten
Fakten sind Prädikate, die mit einem Punkt abgeschlossen sind. Der Funktor darf nicht „:-“ sein.
mensch(sokrates)
mensch(sokrates).
![Page 15: Syntax von Prolog & Familiendatenbasis Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de](https://reader038.vdocuments.site/reader038/viewer/2022102923/55204d6549795902118bb366/html5/thumbnails/15.jpg)
25.10.99 GK Prolog - Syntax, Familiendatenbasis
15
Regeln
Regeln sind 2-stellige Prädikate mit dem Funktor „:-“, die mit einem Punkt abgeschlossen sind.
Das erste Argument (Head) ist ein Prädikat. Das zweite Argument (Body) ist ein Prädikat oder
eine Disjunktion oder Konjunktion von Prädikaten.
Es handelt sich bei :-/2 um ein vordefiniertes Prädikat (builtin), das eine besondere Interpretation hat.
![Page 16: Syntax von Prolog & Familiendatenbasis Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de](https://reader038.vdocuments.site/reader038/viewer/2022102923/55204d6549795902118bb366/html5/thumbnails/16.jpg)
25.10.99 GK Prolog - Syntax, Familiendatenbasis
16
Programme
Programme in Prolog sind Mengen von Klauseln.
Klauseln
Fakten Regeln
![Page 17: Syntax von Prolog & Familiendatenbasis Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de](https://reader038.vdocuments.site/reader038/viewer/2022102923/55204d6549795902118bb366/html5/thumbnails/17.jpg)
Familiendatenbasis
Verwandtschaftsbeziehungen als Anwendungsfeld für Relationen mit
verschiedenen Eigenschaften.
![Page 18: Syntax von Prolog & Familiendatenbasis Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de](https://reader038.vdocuments.site/reader038/viewer/2022102923/55204d6549795902118bb366/html5/thumbnails/18.jpg)
25.10.99 GK Prolog - Syntax, Familiendatenbasis
18
Ein Stammbaum
terachm
sarahf abrahamm nachorm haranm
isaacm milcahf lotm yiscahf
![Page 19: Syntax von Prolog & Familiendatenbasis Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de](https://reader038.vdocuments.site/reader038/viewer/2022102923/55204d6549795902118bb366/html5/thumbnails/19.jpg)
25.10.99 GK Prolog - Syntax, Familiendatenbasis
19
Prolog-Repräsentation
Elternteile
et(terach,abraham). et(terach,nachor). et(terach,haran). et(sarah,isaac). et(abraham,isaac). et(haran,milcah). et(haran,lot). et(haran,yiscah).
Geschlecht
fem(sarah). fem(milcah). fem(yiscah). masc(terach). masc(abraham). masc(nachor). masc(haran). masc(isaac). masc(lot).
![Page 20: Syntax von Prolog & Familiendatenbasis Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de](https://reader038.vdocuments.site/reader038/viewer/2022102923/55204d6549795902118bb366/html5/thumbnails/20.jpg)
25.10.99 GK Prolog - Syntax, Familiendatenbasis
20
Direkte Beziehungen
Vater, Mutter
vater(X,Y):- et(X,Y),
masc(X).
mutter(X,Y):- et(X,Y),
fem(X).
Sohn, Tochter
sohn(X,Y):- et(Y,X),
masc(X).
tochter(X,Y):- et(Y,X),
fem(X).
![Page 21: Syntax von Prolog & Familiendatenbasis Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de](https://reader038.vdocuments.site/reader038/viewer/2022102923/55204d6549795902118bb366/html5/thumbnails/21.jpg)
25.10.99 GK Prolog - Syntax, Familiendatenbasis
21
Indirekte Beziehungen
Großvater
großvater(X,Y):- vater(X,Z), et(Z,Y).
Bereits definierte Relation vater/2 kann wiederverwendet werden. Eine dritte Person Z wird benötigt, um die Beziehung zu vermitteln.
![Page 22: Syntax von Prolog & Familiendatenbasis Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de](https://reader038.vdocuments.site/reader038/viewer/2022102923/55204d6549795902118bb366/html5/thumbnails/22.jpg)
25.10.99 GK Prolog - Syntax, Familiendatenbasis
22
Rekursion
Vorfahr
vorfahr(X,Y):- et(X,Y). vorfahr(X,Y):- et(X,Z), vorfahr(Z,Y).
Das rekursive Prädikat vorfahr/2 berechnet die transitive Hülle des Graphen, der durch das Prädikat et/2 induziert wird.