:- module stack. :- pragma termination_info(stack:init((builtin:out)), finite(0, [no, no]), cannot_loop). :- pragma termination_info((stack:init) = (builtin:out), finite(0, [no, no]), cannot_loop). :- pragma termination_info(stack:is_empty((builtin:in)), finite(0, [no, no]), cannot_loop). :- pragma termination_info(stack:is_full((builtin:in)), finite(0, [no, no]), cannot_loop). :- pragma termination_info(stack:push((builtin:in), (builtin:in), (builtin:out)), finite(2, [no, yes, yes, no]), cannot_loop). :- pragma termination_info(stack:push((builtin:in), (builtin:in)) = (builtin:out), finite(2, [no, yes, yes, no]), cannot_loop). :- pragma termination_info(stack:push_list((builtin:in), (builtin:in), (builtin:out)), finite(0, [no, yes, yes, no]), can_loop). :- pragma termination_info(stack:push_list((builtin:in), (builtin:in)) = (builtin:out), finite(0, [no, yes, yes, no]), can_loop). :- pragma termination_info(stack:top((builtin:in), (builtin:out)), finite(-2, [no, yes, no]), cannot_loop). :- pragma termination_info(stack:top_det((builtin:in), (builtin:out)), finite(-2, [no, yes, no]), can_loop). :- pragma termination_info(stack:top_det((builtin:in)) = (builtin:out), finite(-2, [no, yes, no]), can_loop). :- pragma termination_info(stack:pop((builtin:in), (builtin:out), (builtin:out)), finite(-2, [no, yes, no, no]), cannot_loop). :- pragma termination_info(stack:pop_det((builtin:in), (builtin:out), (builtin:out)), finite(-2, [no, yes, no, no]), can_loop). :- pragma termination_info(stack:depth((builtin:in), (builtin:out)), finite(0, [no, no, no]), cannot_loop). :- pragma termination_info(stack:depth((builtin:in)) = (builtin:out), finite(0, [no, no, no]), cannot_loop).