i

Zusammengesetzte Terme

Beschreibung von Objekten mit komplexeren Einheiten

Objekte einer vorgegebenen Miniwelt können auch mit Hilfe komplexerer Einheiten dargestellt werden. Zunächst zwei Beispiele:

Beispiel: Darstellung des Datums 13.06.2011 - Version 1

geburtstag(datum(13,6,2011)).

Beispiel: Darstellung des Datums 13.06. eine beliebigen Jahres - Version 2

geburtstag(date(y(2011),m(june),d(13))).

Die benutzten Darstellungen datum(13,6,2011) und date(y(2011),m(june),d(13)) verwenden neben Konstanten (wie 6 oder june) zusätzlich Funktionssymbole (wie datum oder y). Die Funktionssymbole dienen dazu, aus den elementaren Bausteinen größere Einheiten zu bilden und die Einheiten mit geeigneten Bezeichnern zu beschreiben.

Beachte, dass in solchen komplexeren Einheiten auch Variablen vorkommen können, wie das folgende Beispiel zeigt.

Beispiel: Darstellung des Datums 13.06. eines beliebigen Jahres

geburtstag(datum(13,6,Jahr)).

Terme

Terme werden mit Hilfe von Konstanten, Variablen und Funktionssymbolen aufgebaut. Die Menge der Terme lässt sich so charakterisieren: Alle Konstanten und Variablen sind Terme. Wenn f ein n-stelliges Funktionssymbol ist und t1 ... tn Terme sind, dann ist auch f(t1 ... tn) ein Term.

Beachte den Unterschied zwischen einem Funktionssymbol (wie z.B. datum in der Wissensbasis oben) und einem Prädikatssymbol (wie z.B. geburtstag in der Wissensbasis oben).

Funktionssymbole werden zur Beschreibung von Objekten benutzt. Ein Term (funktionaler Ausdruck) mit Funktionssymbolen kann Ergebnis einer Anfrage sein und somit ein Objekt darstellen. Das folgende Beispiel zeigt einen solchen Fall.

Wissensbasis:

geburtstag(datum(13,6,Jahr)).

Anfrage:

?- geburtstag(X).

X = datum(13, 6, 2011) ;

No

Prädikatssymbole werden dagegen zur Beschreibung von Sachverhalten benutzt. Ein prädikativer Ausdruck kann (bei passender Belegung der darin vorkommenden Variablen) in Bezug auf die Wissensbasis wahr oder falsch sein.

Listen als Terme

Listen werden in Prolog ebenfalls als Terme behandelt.

Zur Darstestellung von Listen benutzt man normalerweise die Notation mit eckigen Klammern. So sind [], [a], [a, b] und [a, [1, 2], [], [d]] Beispiele für Listen.

Intern benutzt Prolog eine andere Darstellung. Die folgenden Abfragen mit dem vordefinierten display-Prädikat verdeutlichen die hier verwendete Punktnotation.

?- display([]).
[]

Yes
?- display([a]).
.(a, [])

Yes
?- display([a, b]).
.(a, .(b, []))

Yes
?- display([a, [1, 2], [], [d]]).
.(a, .(.(1, .(2, [])), .([], .(.(d, []), []))))

Yes

Diese Punktnotation zeigt, dass Listen letztlich zusammengesetzte Einheiten sind, die den Punkt . als Funktionssymbol zum Aufbau der Terme benutzen.

Suche

v
8.3.3.1.3
www.inf-schule.de/deklarativ/logischeprogrammierung/datenverwaltung/station_terme/station_terme
www.inf-schule.de/8.3.3.1.3
www.inf-schule.de/@/page/JpI0K3o94vtX1gFJ

Rückmeldung geben