% Prolog – Stammbaum: Rekursion und Backtracking

elternteil(anna, ben).
elternteil(anna, elsa).
elternteil(ben, clara).
elternteil(clara, david).
elternteil(elsa, felix).

kind(Kind, Elternteil) :-
    elternteil(Elternteil, Kind).

grosselternteil(Gross, Enkel) :-
    elternteil(Gross, Eltern),
    elternteil(Eltern, Enkel).

% Basisfall zuerst, Rekursion danach.
vorfahr(Vorfahr, Person) :-
    elternteil(Vorfahr, Person).

vorfahr(Vorfahr, Person) :-
    elternteil(Vorfahr, Zwischenperson),
    vorfahr(Zwischenperson, Person).

nachfahr(Nachfahr, Vorfahr) :-
    vorfahr(Vorfahr, Nachfahr).

/** <examples>
?- kind(clara, ben).
?- grosselternteil(ben, david).
?- vorfahr(ben, david).
*/
