Prolog e relacionamento com o ancestral

Preciso escrever um pequeno programa de prólogo que verifique se uma determinada pessoa é ancestral de uma segunda. Estes são os fatos e regras:

mother(tim, anna).
mother(anna, fanny).
mother(daniel, fanny).
mother(celine, gertrude).
father(tim, bernd).
father(anna, ephraim).
father(daniel, ephraim).
father(celine, daniel).

parent(X,Y) :- mother(X,Y).
parent(X,Y) :- father(X,Y).

O teste se uma pessoa é um ancestral de outra pessoa é fácil:

ancestor(X, Y) :- parent(X, Y).
ancestor(X, Y) :- parent(X, Z), ancestor(Z, Y).

Mas agora eu tenho que escrever um método ancestral (X, Y, Z) que também imprima o relacionamento entre duas pessoas. Deve ficar assim

?- ancestor(ephraim, tim, X).
false.
?- ancestor(tim, ephraim, X).
X = father(mother(tim)).

E esse é o problema: não tenho idéia de como fazer isso.

questionAnswers(6)

yourAnswerToTheQuestion