ancestor(X,A) :- parent(X,A). ancestor(X,A) :- parent(P,X), ancestor(P,A). parent(a,b). parent(b,c).
Q : ancestor(X,A)
A : X = b, A = a
X = c, A = b,
X = c, A = a
no more solutions
If the ancestor relation is defined differently :
ancestor(X,A) :- ancestor(P, A), parent(P,X). ancestor(X,A) :- parent(A,X). parent(a,b). parent(b,c).
Q : ancestor(X,A)
A : (WAIT!)