Usage:
not_deeper_than(Deep), goal.
Restricts the stack size. If the stack size at the moment of execution of not_deeper_than(Deep) is S then the stack is restricted by S+Deep. All answers and branches of the Proof Tree which fill the stack more than S+Deep will be cut. This mean that will be given only that answers of goal which need less than Deep steps (of course, here we don't count the steps which you lose in backtracking).
You can use this predicate for goals which are cycling. For example, when you prove theorems.
Example:
?- not_deeper_than(10), p(X), write(X), nl.
p(f(X)) :- p(X).
p(a).
This program will search for answers of goal which have a proof tree with less than ten knots.