% Prolog – Rekursion vertauscht
% Untersuche mit trace, weshalb die Suche nicht sinnvoll terminiert.

/** <examples>
?- trace, istVorfahr(willi,valentin).
*/

istSohn(valentin,klaus).
istSohn(klaus,hugo).
istSohn(hugo,willi).

istVorfahr(X,Y) :-
    istSohn(X,Y);
    istVorfahr(X,Z),
    istSohn(Z,Y).
