10 Prolog Beispiel

10.1 Familienbeziehungen

Die Darstellung von Familienbeziehungen ist eines der klassischen Beispiele für die Anwendung von Prädikatenlogik und wird häufig in Prolog, einer logikbasierten Programmiersprache, verwendet. In diesem Kapitel wird gezeigt, wie man mit Prädikatenlogik eine Wissensbasis über Familienbeziehungen aufbaut und daraus logische Schlussfolgerungen zieht.

10.2 Definition der Wissensbasis in Prolog

In Prolog werden Fakten und Regeln definiert, um Beziehungen innerhalb einer Familie zu modellieren. Dazu werden Prädikate wie elternteil/2, vater/2, mutter/2 und geschwister/2 genutzt.

family.svg
% Fakten
mutter(maria, anna).
mutter(maria, tom).
vater(peter, anna).
vater(peter, tom).
mutter(lisa, lena).
vater(karl, lena).

% Allgemeine Regeln
elternteil(X, Y) :- mutter(X, Y).
elternteil(X, Y) :- vater(X, Y).

geschwister(X, Y) :- 
    elternteil(Z, X),
    elternteil(Z, Y),
    X \= Y.

% Regel zur Großeltern-Beziehung
grosseltern(X, Y) :- 
    elternteil(X, Z), 
    elternteil(Z, Y).

10.2.1 Erklärung der Prädikate

10.3 Beispielhafte Anfragen und Ergebnisse

10.3.1 Wer sind die Eltern von Anna?

?- elternteil(X, anna).
X = maria;
X = peter.

Erklärung: Das System gibt beide Elternteile von anna aus.

10.3.2 Hat Anna Geschwister?

?- geschwister(anna, X).
X = tom.

Erklärung: Da anna und tom dieselben Eltern haben (maria und peter), sind sie Geschwister.

10.3.3 Wer sind die Großeltern von Lena?

?- grosseltern(X, lena).
X = maria;
X = peter.

Erklärung: Die Eltern von lisa sind maria und peter, und lisa ist die Mutter von lena. Somit sind maria und peter die Großeltern von lena.