:- module array. :- pragma termination_info(array:make_empty_array((array:array_uo)), infinite, cannot_loop). :- pragma termination_info((array:make_empty_array) = (array:array_uo), infinite, cannot_loop). :- pragma termination_info(array:init((builtin:in), (builtin:in), (array:array_uo)), infinite, can_loop). :- pragma termination_info(array:init((builtin:in), (builtin:in)) = (array:array_uo), infinite, can_loop). :- pragma termination_info(array:array((builtin:in)) = (array:array_uo), infinite, can_loop). :- pragma termination_info(array:min((array:array_ui), (builtin:out)), infinite, cannot_loop). :- pragma termination_info(array:min((builtin:in), (builtin:out)), infinite, cannot_loop). :- pragma termination_info(array:min((array:array_ui)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(array:min((builtin:in)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(array:max((array:array_ui), (builtin:out)), infinite, cannot_loop). :- pragma termination_info(array:max((builtin:in), (builtin:out)), infinite, cannot_loop). :- pragma termination_info(array:max((array:array_ui)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(array:max((builtin:in)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(array:size((array:array_ui), (builtin:out)), infinite, cannot_loop). :- pragma termination_info(array:size((builtin:in), (builtin:out)), infinite, cannot_loop). :- pragma termination_info(array:size((array:array_ui)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(array:size((builtin:in)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(array:bounds((array:array_ui), (builtin:out), (builtin:out)), infinite, cannot_loop). :- pragma termination_info(array:bounds((builtin:in), (builtin:out), (builtin:out)), infinite, cannot_loop). :- pragma termination_info(array:in_bounds((array:array_ui), (builtin:in)), finite(0, [no, no, no]), cannot_loop). :- pragma termination_info(array:in_bounds((builtin:in), (builtin:in)), finite(0, [no, no, no]), cannot_loop). :- pragma termination_info(array:lookup((array:array_ui), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(array:lookup((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(array:lookup((array:array_ui), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(array:lookup((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(array:semidet_lookup((array:array_ui), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(array:semidet_lookup((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(array:set((array:array_di), (builtin:in), (builtin:in), (array:array_uo)), infinite, can_loop). :- pragma termination_info(array:set((array:array_di), (builtin:in), (builtin:in)) = (array:array_uo), infinite, can_loop). :- pragma termination_info(array:semidet_set((array:array_di), (builtin:in), (builtin:in), (array:array_uo)), infinite, can_loop). :- pragma termination_info(array:slow_set((array:array_ui), (builtin:in), (builtin:in), (array:array_uo)), infinite, can_loop). :- pragma termination_info(array:slow_set((builtin:in), (builtin:in), (builtin:in), (array:array_uo)), infinite, can_loop). :- pragma termination_info(array:slow_set((array:array_ui), (builtin:in), (builtin:in)) = (array:array_uo), infinite, can_loop). :- pragma termination_info(array:slow_set((builtin:in), (builtin:in), (builtin:in)) = (array:array_uo), infinite, can_loop). :- pragma termination_info(array:semidet_slow_set((array:array_ui), (builtin:in), (builtin:in), (array:array_uo)), infinite, can_loop). :- pragma termination_info(array:semidet_slow_set((builtin:in), (builtin:in), (builtin:in), (array:array_uo)), infinite, can_loop). :- pragma termination_info(array:elem((builtin:in), (array:array_ui)) = (builtin:out), infinite, can_loop). :- pragma termination_info(array:elem((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(array:'elem :='((builtin:in), (array:array_di), (builtin:in)) = (array:array_uo), infinite, can_loop). :- pragma termination_info(array:copy((array:array_ui), (array:array_uo)), infinite, cannot_loop). :- pragma termination_info(array:copy((builtin:in), (array:array_uo)), infinite, cannot_loop). :- pragma termination_info(array:copy((array:array_ui)) = (array:array_uo), infinite, cannot_loop). :- pragma termination_info(array:copy((builtin:in)) = (array:array_uo), infinite, cannot_loop). :- pragma termination_info(array:resize((array:array_di), (builtin:in), (builtin:in), (array:array_uo)), infinite, cannot_loop). :- pragma termination_info(array:resize((array:array_di), (builtin:in), (builtin:in)) = (array:array_uo), infinite, cannot_loop). :- pragma termination_info(array:shrink((array:array_di), (builtin:in), (array:array_uo)), infinite, can_loop). :- pragma termination_info(array:shrink((array:array_di), (builtin:in)) = (array:array_uo), infinite, can_loop). :- pragma termination_info(array:from_list((builtin:in), (array:array_uo)), infinite, can_loop). :- pragma termination_info(array:from_list((builtin:in)) = (array:array_uo), infinite, can_loop). :- pragma termination_info(array:to_list((array:array_ui), (builtin:out)), infinite, can_loop). :- pragma termination_info(array:to_list((builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(array:to_list((array:array_ui)) = (builtin:out), infinite, can_loop). :- pragma termination_info(array:to_list((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(array:fetch_items((builtin:in), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(array:fetch_items((array:array_ui), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(array:fetch_items((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(array:bsearch((array:array_ui), (builtin:in), builtin:in((builtin:comparison_pred)), (builtin:out)), infinite, can_loop). :- pragma termination_info(array:bsearch((builtin:in), (builtin:in), builtin:in((builtin:comparison_pred)), (builtin:out)), infinite, can_loop). :- pragma termination_info(array:bsearch((array:array_ui), (builtin:in), builtin:in((builtin:comparison_func))) = (builtin:out), infinite, can_loop). :- pragma termination_info(array:bsearch((builtin:in), (builtin:in), builtin:in((builtin:comparison_func))) = (builtin:out), infinite, can_loop). :- pragma termination_info(array:map((pred((builtin:in), (builtin:out)) is det), (array:array_di), (array:array_uo)), infinite, can_loop). :- pragma termination_info(array:map((func((builtin:in)) = (builtin:out) is det), (array:array_di)) = (array:array_uo), infinite, can_loop). :- pragma termination_info(array:array_compare((builtin:in), (builtin:in)) = (builtin:out), finite(0, [no, no, no, no]), can_loop). :- pragma termination_info(array:sort((array:array_di)) = (array:array_uo), infinite, can_loop). :- pragma termination_info(array:foldl((func((builtin:in), (builtin:in)) = (builtin:out) is det), (array:array_ui), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(array:foldl((func((builtin:in), (builtin:in)) = (builtin:out) is det), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(array:foldl((func((builtin:in), (builtin:di)) = (builtin:uo) is det), (array:array_ui), (builtin:di)) = (builtin:uo), infinite, can_loop). :- pragma termination_info(array:foldl((func((builtin:in), (builtin:di)) = (builtin:uo) is det), (builtin:in), (builtin:di)) = (builtin:uo), infinite, can_loop). :- pragma termination_info(array:foldr((func((builtin:in), (builtin:in)) = (builtin:out) is det), (array:array_ui), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(array:foldr((func((builtin:in), (builtin:in)) = (builtin:out) is det), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(array:foldr((func((builtin:in), (builtin:di)) = (builtin:uo) is det), (array:array_ui), (builtin:di)) = (builtin:uo), infinite, can_loop). :- pragma termination_info(array:foldr((func((builtin:in), (builtin:di)) = (builtin:uo) is det), (builtin:in), (builtin:di)) = (builtin:uo), infinite, can_loop). :- pragma termination_info(array:random_permutation((array:array_di), (array:array_uo), (builtin:mdi), (builtin:muo)), infinite, can_loop). :- pragma termination_info(array:array_equal((builtin:in), (builtin:in)), finite(0, [no, no, no]), can_loop). :- pragma termination_info(array:array_compare((builtin:out), (builtin:in), (builtin:in)), finite(0, [no, no, no, no]), can_loop). :- pragma termination_info(array:equal_elements((builtin:in), (builtin:in), (builtin:in), (builtin:in)), finite(0, [no, no, no, no, no]), can_loop). :- pragma termination_info((array:bounds_checks), finite(0, []), cannot_loop). :- pragma termination_info(array:init_2((builtin:in), (builtin:in), (array:array_uo)), infinite, cannot_loop). :- pragma termination_info(array:unsafe_lookup((array:array_ui), (builtin:in), (builtin:out)), infinite, cannot_loop). :- pragma termination_info(array:unsafe_lookup((builtin:in), (builtin:in), (builtin:out)), infinite, cannot_loop). :- pragma termination_info(array:unsafe_set((array:array_di), (builtin:in), (builtin:in), (array:array_uo)), infinite, cannot_loop). :- pragma termination_info(array:bsearch_2((builtin:in), (builtin:in), (builtin:in), (builtin:in), (pred((builtin:in), (builtin:in), (builtin:out)) is det), (builtin:out)), infinite, can_loop). :- pragma termination_info(array:map_2((builtin:in), (builtin:in), (pred((builtin:in), (builtin:out)) is det), (builtin:in), (array:array_di), (array:array_uo)), infinite, can_loop). :- pragma termination_info(array:permutation_2((builtin:in), (builtin:in), (builtin:in), (builtin:in), (array:array_di), (array:array_uo), (builtin:mdi), (builtin:muo)), infinite, can_loop). :- pragma termination_info(array:swap_elems((array:array_di), (builtin:in), (builtin:in)) = (array:array_uo), infinite, can_loop). :- pragma termination_info(array:foldl_0((func((builtin:in), (builtin:in)) = (builtin:out) is det), (array:array_ui), (builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(array:foldl_0((func((builtin:in), (builtin:in)) = (builtin:out) is det), (builtin:in), (builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(array:foldl_0((func((builtin:in), (builtin:di)) = (builtin:uo) is det), (array:array_ui), (builtin:di), (builtin:in), (builtin:in)) = (builtin:uo), infinite, can_loop). :- pragma termination_info(array:foldl_0((func((builtin:in), (builtin:di)) = (builtin:uo) is det), (builtin:in), (builtin:di), (builtin:in), (builtin:in)) = (builtin:uo), infinite, can_loop). :- pragma termination_info(array:foldr_0((func((builtin:in), (builtin:in)) = (builtin:out) is det), (array:array_ui), (builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(array:foldr_0((func((builtin:in), (builtin:in)) = (builtin:out) is det), (builtin:in), (builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(array:foldr_0((func((builtin:in), (builtin:di)) = (builtin:uo) is det), (array:array_ui), (builtin:di), (builtin:in), (builtin:in)) = (builtin:uo), infinite, can_loop). :- pragma termination_info(array:foldr_0((func((builtin:in), (builtin:di)) = (builtin:uo) is det), (builtin:in), (builtin:di), (builtin:in), (builtin:in)) = (builtin:uo), infinite, can_loop). :- pragma termination_info(array:samsort_subarray((array:array_di), (builtin:in), (builtin:in)) = (array:array_uo), infinite, can_loop). :- pragma termination_info(array:samsort_up((builtin:in), (array:array_di), (array:array_uo), (array:array_di), (array:array_uo), (builtin:in), (builtin:in), (builtin:in)), infinite, can_loop). :- pragma termination_info(array:out_of_bounds_error((array:array_ui), (builtin:in), (builtin:in)), infinite, can_loop). :- pragma termination_info(array:out_of_bounds_error((builtin:in), (builtin:in), (builtin:in)), infinite, can_loop).