% likeable.pl likes(eve, pie). likes(al, eve). likes(eve, tom). likes(eve, eve). food(apple). food(pie). person(tom). liked(V) :- likes(W,V). likeable(V) :- likes(W,V), person(V). /* Example run: % prolog SICStus 3.7: Tue Sep 08 19:55:50 MET DST 1998 Licensed to cs.rutgers.edu | ?- [likeable]. {consulting likeable.pl...} {Warning: [W] - singleton variables in liked/1 in lines 10-12} {Warning: [W] - singleton variables in likeable/1 in lines 12-14} {likeable.pl consulted, 0 msec 1992 bytes} yes | ?- likeable(A). A = tom ? ; no | ?- trace. {The debugger will first creep -- showing everything (trace)} yes {trace} | ?- likeable(A). 1 1 Call: likeable(_246) ? 2 2 Call: likes(_740,_246) ? ? 2 2 Exit: likes(eve,pie) ? 3 2 Call: person(pie) ? 3 2 Fail: person(pie) ? 2 2 Redo: likes(eve,pie) ? ? 2 2 Exit: likes(al,eve) ? 3 2 Call: person(eve) ? 3 2 Fail: person(eve) ? 2 2 Redo: likes(al,eve) ? ? 2 2 Exit: likes(eve,tom) ? 3 2 Call: person(tom) ? 3 2 Exit: person(tom) ? ? 1 1 Exit: likeable(tom) ? A = tom ? ; 1 1 Redo: likeable(tom) ? 2 2 Redo: likes(eve,tom) ? 2 2 Exit: likes(eve,eve) ? 3 2 Call: person(eve) ? 3 2 Fail: person(eve) ? 1 1 Fail: likeable(_246) ? no {trace} | ?- halt. */