           *--------------------------------------*
   Call    |                                      |    Exit
---------> +  descendant(X,Y) :- offspring(X,Y).  + --------->
           |                                      |
           |  descendant(X,Y) :-                  |
<--------- +     offspring(X,Z), descendant(Z,Y). + <---------
   Fail    |                                      |    Redo
           *--------------------------------------*
