
/* pere(pere,enfant) */ 
pere(pierre,francois).
pere(pierre,jean).
pere(andre,rose).
pere(jean,bastien).
pere(jean,rudolph).
pere(rudolph,gwendoline).

/* mere(mere,enfant) */ 
mere(mathilde,francois).
mere(mathilde,rose).
mere(rose,bastien).
mere(rose,rudolph).

parent(Parent,Enfant) :- mere(Parent,Enfant).
parent(Parent,Enfant) :- pere(Parent,Enfant).

descendant(Descendant,Ascendant) :- 
  parent(Ascendant,Descendant).
descendant(Descendant,Ascendant) :- 
  parent(Ascendant,Enfant),
  descendant(Descendant,Enfant).


/*
| ?- descendant(rose,D).

D = mathilde ? Action (";" for more choices, otherwise <return>): ;

D = andre ? ;

no  

| ?-  descendant(A,andre).

A = rose ? ;

A = bastien ? ;

A = rudolph ? ;

A = gwendoline ? ;

no        
*/       
