If the desired value is larger than the maximum, the maximum is taken. Finally, if the desired value is either 0 or the atom unlimited the limit is set to its maximum. Trim stack is a relatively cheap call. It can be used to release memory resources in a backtracking loop, where the iterations require typically seconds of execution time and very different, potentionally large, amounts of stack space. The prolog top level loop is written this way, reclaiming memory resources after every user query.
Stack is one of local , global , trail , argument or lock .
Old is first unified with the current value. 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.