:- module rbtree. :- pragma termination_info(rbtree:init((builtin:uo)), finite(0, [no, no, no]), cannot_loop). :- pragma termination_info((rbtree:init) = (builtin:out), finite(0, [no, no, no]), cannot_loop). :- pragma termination_info(rbtree:is_empty((builtin:in)), finite(0, [no, no, no]), cannot_loop). :- pragma termination_info(rbtree:insert((builtin:in), (builtin:in), (builtin:in), (builtin:out)), finite(4, [no, no, yes, yes, yes, no]), can_loop). :- pragma termination_info(rbtree:update((builtin:in), (builtin:in), (builtin:in), (builtin:out)), finite(0, [no, no, yes, yes, yes, no]), cannot_loop). :- pragma termination_info(rbtree:set((builtin:di), (builtin:di), (builtin:di), (builtin:uo)), finite(4, [no, no, yes, yes, yes, no]), can_loop). :- pragma termination_info(rbtree:set((builtin:in), (builtin:in), (builtin:in), (builtin:out)), finite(4, [no, no, yes, yes, yes, no]), can_loop). :- pragma termination_info(rbtree:set((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), finite(4, [no, no, yes, yes, yes, no]), can_loop). :- pragma termination_info(rbtree:insert_duplicate((builtin:in), (builtin:in), (builtin:in), (builtin:out)), finite(4, [no, no, yes, yes, yes, no]), can_loop). :- pragma termination_info(rbtree:insert_duplicate((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), finite(4, [no, no, yes, yes, yes, no]), can_loop). :- pragma termination_info(rbtree:member((builtin:in), (builtin:out), (builtin:out)), finite(-4, [no, no, yes, no, no]), cannot_loop). :- pragma termination_info(rbtree:search((builtin:in), (builtin:in), (builtin:out)), finite(-4, [no, no, yes, no, no]), cannot_loop). :- pragma termination_info(rbtree:lookup((builtin:in), (builtin:in), (builtin:out)), finite(-4, [no, no, yes, no, no]), can_loop). :- pragma termination_info(rbtree:lookup((builtin:in), (builtin:in)) = (builtin:out), finite(-4, [no, no, yes, no, no]), can_loop). :- pragma termination_info(rbtree:lower_bound_search((builtin:in), (builtin:in), (builtin:out), (builtin:out)), finite(-4, [no, no, yes, no, no, no]), cannot_loop). :- pragma termination_info(rbtree:lower_bound_lookup((builtin:in), (builtin:in), (builtin:out), (builtin:out)), finite(-4, [no, no, yes, no, no, no]), can_loop). :- pragma termination_info(rbtree:upper_bound_search((builtin:in), (builtin:in), (builtin:out), (builtin:out)), finite(-4, [no, no, yes, no, no, no]), cannot_loop). :- pragma termination_info(rbtree:upper_bound_lookup((builtin:in), (builtin:in), (builtin:out), (builtin:out)), finite(-4, [no, no, yes, no, no, no]), can_loop). :- pragma termination_info(rbtree:delete((builtin:di), (builtin:in), (builtin:uo)), finite(0, [no, no, yes, no, no]), cannot_loop). :- pragma termination_info(rbtree:delete((builtin:in), (builtin:in), (builtin:out)), finite(0, [no, no, yes, no, no]), cannot_loop). :- pragma termination_info(rbtree:delete((builtin:in), (builtin:in)) = (builtin:out), finite(0, [no, no, yes, no, no]), cannot_loop). :- pragma termination_info(rbtree:remove((builtin:di), (builtin:in), (builtin:uo), (builtin:uo)), finite(-1, [no, no, yes, no, no, no]), cannot_loop). :- pragma termination_info(rbtree:remove((builtin:in), (builtin:in), (builtin:out), (builtin:out)), finite(-1, [no, no, yes, no, no, no]), cannot_loop). :- pragma termination_info(rbtree:remove((builtin:in), (builtin:in), (builtin:out)), finite(-1, [no, no, yes, no, no]), cannot_loop). :- pragma termination_info(rbtree:remove_smallest((builtin:di), (builtin:uo), (builtin:uo), (builtin:uo)), finite(-4, [no, no, yes, no, no, no]), cannot_loop). :- pragma termination_info(rbtree:remove_smallest((builtin:in), (builtin:out), (builtin:out), (builtin:out)), finite(-4, [no, no, yes, no, no, no]), cannot_loop). :- pragma termination_info(rbtree:remove_largest((builtin:di), (builtin:uo), (builtin:uo), (builtin:uo)), finite(-4, [no, no, yes, no, no, no]), cannot_loop). :- pragma termination_info(rbtree:remove_largest((builtin:in), (builtin:out), (builtin:out), (builtin:out)), finite(-4, [no, no, yes, no, no, no]), cannot_loop). :- pragma termination_info(rbtree:keys((builtin:in), (builtin:out)), finite(0, [no, no, yes, no]), cannot_loop). :- pragma termination_info(rbtree:keys((builtin:in)) = (builtin:out), finite(0, [no, no, yes, no]), cannot_loop). :- pragma termination_info(rbtree:values((builtin:in), (builtin:out)), finite(0, [no, no, yes, no]), cannot_loop). :- pragma termination_info(rbtree:values((builtin:in)) = (builtin:out), finite(0, [no, no, yes, no]), cannot_loop). :- pragma termination_info(rbtree:count((builtin:in), (builtin:out)), finite(0, [no, no, no, no]), cannot_loop). :- pragma termination_info(rbtree:count((builtin:in)) = (builtin:out), finite(0, [no, no, no, no]), cannot_loop). :- pragma termination_info(rbtree:assoc_list_to_rbtree((builtin:in), (builtin:out)), finite(0, [no, no, yes, no]), can_loop). :- pragma termination_info(rbtree:assoc_list_to_rbtree((builtin:in)) = (builtin:out), finite(0, [no, no, yes, no]), can_loop). :- pragma termination_info(rbtree:rbtree_to_assoc_list((builtin:in), (builtin:out)), finite(0, [no, no, yes, no]), cannot_loop). :- pragma termination_info(rbtree:rbtree_to_assoc_list((builtin:in)) = (builtin:out), finite(0, [no, no, yes, no]), cannot_loop). :- pragma termination_info(rbtree:foldl((pred((builtin:in), (builtin:in), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(rbtree:foldl((pred((builtin:in), (builtin:in), (builtin:in), (builtin:out)) is semidet), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(rbtree:foldl((pred((builtin:in), (builtin:in), (builtin:di), (builtin:uo)) is det), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(rbtree:foldl((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(rbtree:map_values((pred((builtin:in), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(rbtree:map_values((pred((builtin:in), (builtin:in), (builtin:out)) is semidet), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(rbtree:map_values((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(rbtree:delete_2((builtin:di), (builtin:in), (builtin:in), (builtin:uo), (builtin:uo)), finite(0, [no, no, yes, no, no, no, no]), cannot_loop). :- pragma termination_info(rbtree:delete_2((builtin:di), (builtin:in), builtin:in(bound(no)), (builtin:uo), (builtin:uo)), finite(0, [no, no, yes, no, no, no, no]), cannot_loop). :- pragma termination_info(rbtree:delete_2((builtin:in), (builtin:in), (builtin:in), (builtin:out), (builtin:out)), finite(0, [no, no, yes, no, no, no, no]), cannot_loop). :- pragma termination_info(rbtree:delete_2((builtin:in), (builtin:in), builtin:in(bound(no)), (builtin:out), (builtin:out)), finite(0, [no, no, yes, no, no, no, no]), cannot_loop).