Zdroj


% rodice(Otec, Matka, Dite)

rodice(jiri, marie, jan).
rodice(jiri, marie, tomas).
rodice(jiri, marie, eva).

rodice(michal, vera, pavel).
rodice(michal, vera, hana).

rodice(jan, alena, karel).
rodice(pavel, eva, jana).


% z databaze: kazda matka je zena
zena(X):- rodice(_,X,_).

% dospecifikujeme pro ostatni
zena(eva).
zena(hana).
zena(jana).


% S je sestra od X
sestra(S, X) :- rodice(Y,Z,S), rodice(Y,Z,X), zena(S), S\==X.


% R je rodic od D
rodic(R, D) :- rodice(R, _, D).
rodic(R, D) :- rodice(_, R, D).


% P je prarodic od V
prarodic(P, V) :- rodic(P, X), rodic(X, V).


% P je libovne vzdaleny potomek X
potomek(P, X) :- rodic(X, P).
potomek(P, X) :- rodic(Y, P), potomek(Y, X).

Dotazy


?- zena(X).
X = marie ;
X = marie ;
X = marie ;
X = vera ;
X = vera ;
X = alena ;
X = eva ;
X = eva ;
X = hana ;
X = jana.
% nektere vysledky lze odvodit vice zpusoby

?- sestra(S, tomas).
S = eva ;
S = eva ;
false.

?- potomek(X, jiri).
X = karel ;
X = jana ;
X = jan ;
X = tomas ;
X = eva ;
false.