
/* pere(pere,enfant) */ 
pere(jean,françois).
pere(pierre,jean).

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

descendant1(Descendant,Ascendant) :- 
  pere(Ascendant,Descendant).
descendant1(Descendant,Ascendant) :- 
  descendant1(Descendant,Enfant),
  pere(Ascendant,Enfant). 
/*
| ?- descendant(D,pierre).

D = jean ? ;

D = françois ? ;

(1 ms) no

 ?- descendant1(D,pierre).

D = jean ? ;

D = françois ? ;

Fatal Error: local stack overflow (size: 16384 Kb, reached: 16384 Kb, environment variable used: LOCALSZ)

*/       
