loop :-
        generator,
            trim_stacks,
            potentially_expensive_operation,
        stop_condition, !.
The prolog top level loop is written this way, reclaiming memory resources after every user query.
local, global, trail 
or argument. The table below describes the Key/Value 
pairs. Old is first unified with the current value.
| limit | Maximum size of the stack in bytes | 
| min_free | Minimum free space at entry of foreign predicate | 
This predicate is currently only available on versions that use the stack-shifter to enlarge the runtime stacks when necessary. It's definition is subject to change.