trace.pl
% warm_blooded/1
warm_blooded(penguin).
warm_blooded(human).
% produce_milk/1
produce_milk(penguin).
produce_milk(human).
% have_feather/1
have_feather(penguin).
% have_hair/1
have_hair(human).
% mammal/1
mammal(X) :-
warm_blooded(X),
produce_milk(X),
have_hair(X).
/* EXAMPLE: using trace in interactive mode */
?- trace.
% true.
% [trace] ?- mammal(human).
% Call: (8) mammal(human) ? creep
% Call: (9) warm_blooded(human) ? creep
% Exit: (9) warm_blooded(human) ? creep
% Call: (9) produce_milk(human) ? creep
% Exit: (9) produce_milk(human) ? creep
% Call: (9) have_hair(human) ? creep
% Exit: (9) have_hair(human) ? creep
% Exit: (8) mammal(human) ? creep
% true.
% [trace] ?- mammal(penguin).
% Call: (8) mammal(penguin) ? creep
% Call: (9) warm_blooded(penguin) ? creep
% Exit: (9) warm_blooded(penguin) ? creep
% Call: (9) produce_milk(penguin) ? creep
% Exit: (9) produce_milk(penguin) ? creep
% Call: (9) have_hair(penguin) ? creep
% Fail: (9) have_hair(penguin) ? creep
% Fail: (8) mammal(penguin) ? creep
% false.