ancestor-of(High,Low) :- parent-of(High,Low). ancestor-of(High,Low) :- parent-of(High,Middle), ancestor-of(Middle,Low). [debug] ?- trace. Yes [trace] ?- ancestor-of(me,X). Call: (7) ancestor-of(me, _G287) ? creep Call: (8) parent-of(me, _G287) ? creep Call: (9) child(me, _G287) ? creep Exit: (9) child(me, bob) ? creep Exit: (8) parent-of(me, bob) ? creep Exit: (7) ancestor-of(me, bob) ? creep X = bob ; Fail: (9) child(me, _G287) ? creep Redo: (8) parent-of(me, _G287) ? creep Call: (9) spouse(me, _G350) ? creep Exit: (9) spouse(me, mary) ? creep Call: (9) child(mary, _G287) ? creep Exit: (9) child(mary, bob) ? creep Exit: (8) parent-of(me, bob) ? creep Exit: (7) ancestor-of(me, bob) ? creep X = bob ; Redo: (9) child(mary, _G287) ? creep Exit: (9) child(mary, sally) ? creep Exit: (8) parent-of(me, sally) ? creep Exit: (7) ancestor-of(me, sally) ? creep X = sally ; Fail: (9) child(mary, _G287) ? creep Fail: (9) spouse(me, _G350) ? creep Fail: (8) parent-of(me, _G287) ? creep Redo: (7) ancestor-of(me, _G287) ? creep Call: (8) parent-of(me, _G343) ? creep Call: (9) child(me, _G343) ? creep Exit: (9) child(me, bob) ? creep Exit: (8) parent-of(me, bob) ? creep Call: (8) ancestor-of(bob, _G287) ? creep Call: (9) parent-of(bob, _G287) ? creep Call: (10) child(bob, _G287) ? creep Fail: (10) child(bob, _G287) ? creep Redo: (9) parent-of(bob, _G287) ? creep Call: (10) spouse(bob, _G356) ? creep Fail: (10) spouse(bob, _G356) ? creep Fail: (9) parent-of(bob, _G287) ? creep Redo: (8) ancestor-of(bob, _G287) ? creep Call: (9) parent-of(bob, _G349) ? creep Call: (10) child(bob, _G349) ? creep Fail: (10) child(bob, _G349) ? creep Redo: (9) parent-of(bob, _G349) ? creep Call: (10) spouse(bob, _G356) ? creep Fail: (10) spouse(bob, _G356) ? creep Fail: (9) parent-of(bob, _G349) ? creep Fail: (8) ancestor-of(bob, _G287) ? creep Fail: (9) child(me, _G343) ? creep Redo: (8) parent-of(me, _G343) ? creep Call: (9) spouse(me, _G350) ? creep Exit: (9) spouse(me, mary) ? creep Call: (9) child(mary, _G343) ? creep Exit: (9) child(mary, bob) ? creep Exit: (8) parent-of(me, bob) ? creep Call: (8) ancestor-of(bob, _G287) ? creep Call: (9) parent-of(bob, _G287) ? creep Call: (10) child(bob, _G287) ? creep Fail: (10) child(bob, _G287) ? creep Redo: (9) parent-of(bob, _G287) ? creep Call: (10) spouse(bob, _G356) ? creep Fail: (10) spouse(bob, _G356) ? creep Fail: (9) parent-of(bob, _G287) ? creep Redo: (8) ancestor-of(bob, _G287) ? creep Call: (9) parent-of(bob, _G349) ? creep Call: (10) child(bob, _G349) ? creep Fail: (10) child(bob, _G349) ? creep Redo: (9) parent-of(bob, _G349) ? creep Call: (10) spouse(bob, _G356) ? creep Fail: (10) spouse(bob, _G356) ? creep Fail: (9) parent-of(bob, _G349) ? creep Fail: (8) ancestor-of(bob, _G287) ? creep Redo: (9) child(mary, _G343) ? creep Exit: (9) child(mary, sally) ? creep Exit: (8) parent-of(me, sally) ? creep Call: (8) ancestor-of(sally, _G287) ? creep Call: (9) parent-of(sally, _G287) ? creep Call: (10) child(sally, _G287) ? creep Exit: (10) child(sally, bill) ? creep Exit: (9) parent-of(sally, bill) ? creep Exit: (8) ancestor-of(sally, bill) ? creep Exit: (7) ancestor-of(me, bill) ? creep X = bill ; Fail: (10) child(sally, _G287) ? creep Redo: (9) parent-of(sally, _G287) ? creep Call: (10) spouse(sally, _G356) ? creep Exit: (10) spouse(sally, dad) ? creep Call: (10) child(dad, _G287) ? creep Exit: (10) child(dad, me) ? creep Exit: (9) parent-of(sally, me) ? creep Exit: (8) ancestor-of(sally, me) ? creep Exit: (7) ancestor-of(me, me) ? creep X = me ; Redo: (10) child(dad, _G287) ? creep Exit: (10) child(dad, bill) ? creep Exit: (9) parent-of(sally, bill) ? creep Exit: (8) ancestor-of(sally, bill) ? creep Exit: (7) ancestor-of(me, bill) ? creep X = bill ; Fail: (10) child(dad, _G287) ? creep Fail: (10) spouse(sally, _G356) ? creep Fail: (9) parent-of(sally, _G287) ? creep Redo: (8) ancestor-of(sally, _G287) ? creep Call: (9) parent-of(sally, _G349) ? creep Call: (10) child(sally, _G349) ? creep Exit: (10) child(sally, bill) ? creep Exit: (9) parent-of(sally, bill) ? creep Call: (9) ancestor-of(bill, _G287) ? creep Call: (10) parent-of(bill, _G287) ? creep Call: (11) child(bill, _G287) ? creep Fail: (11) child(bill, _G287) ? creep Redo: (10) parent-of(bill, _G287) ? creep Call: (11) spouse(bill, _G362) ? creep Fail: (11) spouse(bill, _G362) ? creep Fail: (10) parent-of(bill, _G287) ? creep Redo: (9) ancestor-of(bill, _G287) ? creep Call: (10) parent-of(bill, _G355) ? creep Call: (11) child(bill, _G355) ? creep Fail: (11) child(bill, _G355) ? creep Redo: (10) parent-of(bill, _G355) ? creep Call: (11) spouse(bill, _G362) ? creep Fail: (11) spouse(bill, _G362) ? creep Fail: (10) parent-of(bill, _G355) ? creep Fail: (9) ancestor-of(bill, _G287) ? creep Fail: (10) child(sally, _G349) ? creep Redo: (9) parent-of(sally, _G349) ? creep Call: (10) spouse(sally, _G356) ? creep Exit: (10) spouse(sally, dad) ? creep Call: (10) child(dad, _G349) ? creep Exit: (10) child(dad, me) ? creep Exit: (9) parent-of(sally, me) ? creep Call: (9) ancestor-of(me, _G287) ? creep Call: (10) parent-of(me, _G287) ? creep Call: (11) child(me, _G287) ? creep Exit: (11) child(me, bob) ? creep Exit: (10) parent-of(me, bob) ? creep Exit: (9) ancestor-of(me, bob) ? creep Exit: (8) ancestor-of(sally, bob) ? creep Exit: (7) ancestor-of(me, bob) ? creep X = bob ; Fail: (11) child(me, _G287) ?