:- 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, cannot_loop).
:- pragma termination_info(array.init((builtin.in), (builtin.in)) = (array.array_uo), infinite, cannot_loop).
:- pragma termination_info(array.array((builtin.in)) = (array.array_uo), infinite, can_loop).
:- pragma termination_info(array.generate((builtin.in), (builtin.in)) = (array.array_uo), infinite, can_loop).
:- pragma termination_info(array.generate_foldl((builtin.in), builtin.in((pred((builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det)), (array.array_uo), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.generate_foldl((builtin.in), builtin.in((pred((builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is det)), (array.array_uo), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.generate_foldl((builtin.in), builtin.in((pred((builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det)), (array.array_uo), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.generate_foldl((builtin.in), builtin.in((pred((builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet)), (array.array_uo), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.generate_foldl((builtin.in), builtin.in((pred((builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is semidet)), (array.array_uo), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.generate_foldl((builtin.in), builtin.in((pred((builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is semidet)), (array.array_uo), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.min((builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(array.min((builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(array.least_index((builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(array.max((builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(array.max((builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(array.greatest_index((builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(array.size((builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(array.size((builtin.in)) = (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((builtin.in), (builtin.in)), finite(0, [no, no, no]), cannot_loop).
:- pragma termination_info(array.is_empty((builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(array.lookup((builtin.in), (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((builtin.in), (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.set((builtin.in), (builtin.in), (array.array_di), (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((builtin.in), (builtin.in), (array.array_di), (array.array_uo)), infinite, cannot_loop).
:- pragma termination_info(array.unsafe_set((builtin.in), (builtin.in), (array.array_di), (array.array_uo)), infinite, cannot_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((builtin.in), (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), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(array.unsafe_elem((builtin.in), (builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(array.'elem :='((builtin.in), (array.array_di), (builtin.in)) = (array.array_uo), infinite, can_loop).
:- pragma termination_info(array.'unsafe_elem :='((builtin.in), (array.array_di), (builtin.in)) = (array.array_uo), infinite, cannot_loop).
:- pragma termination_info(array.member((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.copy((builtin.in), (array.array_uo)), infinite, cannot_loop).
:- pragma termination_info(array.copy((builtin.in)) = (array.array_uo), infinite, cannot_loop).
:- pragma termination_info(array.resize((builtin.in), (builtin.in), (array.array_di), (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((builtin.in), (array.array_di), (array.array_uo)), infinite, cannot_loop).
:- pragma termination_info(array.shrink((array.array_di), (builtin.in)) = (array.array_uo), infinite, cannot_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.from_reverse_list((builtin.in)) = (array.array_uo), infinite, can_loop).
:- pragma termination_info(array.to_list((builtin.in), (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((builtin.in), (builtin.in), (builtin.in)) = (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((builtin.in), (builtin.in), builtin.in((builtin.comparison_func))) = (builtin.out), infinite, can_loop).
:- pragma termination_info(array.approx_binary_search((array.array_ui), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.approx_binary_search((builtin.in), (array.array_ui), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.binary_search((array.array_ui), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.binary_search((builtin.in), (array.array_ui), (builtin.in), (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.uo), finite(0, [no, no, no, no]), cannot_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), (builtin.in), (builtin.in)) = (builtin.out), 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.foldl((pred((builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.foldl((pred((builtin.in), (builtin.mdi), (builtin.muo)) is det), (builtin.in), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.foldl((pred((builtin.in), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.foldl((pred((builtin.in), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.foldl((pred((builtin.in), (builtin.mdi), (builtin.muo)) is semidet), (builtin.in), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.foldl((pred((builtin.in), (builtin.di), (builtin.uo)) is semidet), (builtin.in), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.foldl2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.foldl2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.foldl2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.foldl2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.foldl2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.foldl2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.foldl3((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.foldl3((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.foldl3((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.foldl3((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.foldl3((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.foldl3((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.foldl4((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.foldl4((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.foldl4((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.foldl4((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.foldl4((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.foldl4((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.foldl5((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.foldl5((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.foldl5((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.foldl5((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.foldl5((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.foldl5((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), 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), (builtin.in), (builtin.di)) = (builtin.uo), infinite, can_loop).
:- pragma termination_info(array.foldr((pred((builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.foldr((pred((builtin.in), (builtin.mdi), (builtin.muo)) is det), (builtin.in), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.foldr((pred((builtin.in), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.foldr((pred((builtin.in), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.foldr((pred((builtin.in), (builtin.mdi), (builtin.muo)) is semidet), (builtin.in), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.foldr((pred((builtin.in), (builtin.di), (builtin.uo)) is semidet), (builtin.in), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.foldr2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.foldr2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.foldr2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.foldr2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.foldr2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.foldr2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.foldr3((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.foldr3((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.foldr3((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.foldr3((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.foldr3((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.foldr3((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.foldr4((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.foldr4((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.foldr4((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.foldr4((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.foldr4((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.foldr4((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.foldr5((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.foldr5((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.foldr5((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.foldr5((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.foldr5((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.foldr5((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.map_foldl(builtin.in((pred((builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det)), (builtin.in), (array.array_uo), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.map_foldl(builtin.in((pred((builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is det)), (builtin.in), (array.array_uo), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.map_foldl(builtin.in((pred((builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det)), (builtin.in), (array.array_uo), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.map_foldl(builtin.in((pred((builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet)), (builtin.in), (array.array_uo), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.map_corresponding_foldl(builtin.in((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det)), (builtin.in), (builtin.in), (array.array_uo), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.map_corresponding_foldl(builtin.in((pred((builtin.in), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is det)), (builtin.in), (builtin.in), (array.array_uo), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.map_corresponding_foldl(builtin.in((pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det)), (builtin.in), (builtin.in), (array.array_uo), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.map_corresponding_foldl(builtin.in((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet)), (builtin.in), (builtin.in), (array.array_uo), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.all_true(builtin.in((pred((builtin.in)) is semidet)), (builtin.in)), infinite, can_loop).
:- pragma termination_info(array.all_false(builtin.in((pred((builtin.in)) is semidet)), (builtin.in)), infinite, can_loop).
:- pragma termination_info(array.append((builtin.in), (builtin.in)) = (array.array_uo), infinite, cannot_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_to_doc((array.array_ui)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(array.dynamic_cast_to_array((builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(array.array_equal((builtin.in), (builtin.in)), finite(0, [no, no, no]), cannot_loop).
:- pragma termination_info(array.array_compare((builtin.uo), (builtin.in), (builtin.in)), finite(0, [no, no, no, no]), cannot_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_init((builtin.in), (builtin.in), (builtin.in)) = (array.array_uo), infinite, cannot_loop).
:- pragma termination_info(array.generate_2((builtin.in), (builtin.in), (builtin.in), (array.array_di)) = (array.array_uo), infinite, can_loop).
:- pragma termination_info(array.generate_foldl_2((builtin.in), (builtin.in), builtin.in((pred((builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det)), (array.array_di), (array.array_uo), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.generate_foldl_2((builtin.in), (builtin.in), builtin.in((pred((builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is det)), (array.array_di), (array.array_uo), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.generate_foldl_2((builtin.in), (builtin.in), builtin.in((pred((builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det)), (array.array_di), (array.array_uo), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.generate_foldl_2((builtin.in), (builtin.in), builtin.in((pred((builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet)), (array.array_di), (array.array_uo), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.generate_foldl_2((builtin.in), (builtin.in), builtin.in((pred((builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is semidet)), (array.array_di), (array.array_uo), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.generate_foldl_2((builtin.in), (builtin.in), builtin.in((pred((builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is semidet)), (array.array_di), (array.array_uo), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.bsearch_2((builtin.in), (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), builtin.in((pred((builtin.in), (builtin.out)) is det)), (builtin.in), (array.array_di), (array.array_uo)), infinite, can_loop).
:- pragma termination_info(array.approx_binary_search_2((builtin.in), (array.array_ui), (builtin.in), (builtin.in), (builtin.in), (builtin.out)), 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.do_foldl_func((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.do_foldl_func((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.do_foldl_pred((pred((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.do_foldl_pred((pred((builtin.in), (builtin.mdi), (builtin.muo)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.do_foldl_pred((pred((builtin.in), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.do_foldl_pred((pred((builtin.in), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.do_foldl_pred((pred((builtin.in), (builtin.mdi), (builtin.muo)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.do_foldl_pred((pred((builtin.in), (builtin.di), (builtin.uo)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.do_foldl2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.do_foldl2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.do_foldl2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.do_foldl2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.do_foldl2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.do_foldl2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.do_foldl3((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.do_foldl3((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.do_foldl3((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.do_foldl3((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.do_foldl3((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.do_foldl3((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.do_foldl4((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.do_foldl4((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.do_foldl4((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.do_foldl4((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.do_foldl4((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.do_foldl4((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.do_foldl5((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.do_foldl5((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.do_foldl5((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.do_foldl5((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.do_foldl5((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.do_foldl5((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.do_foldr_func((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.do_foldr_func((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.do_foldr_pred((pred((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.do_foldr_pred((pred((builtin.in), (builtin.mdi), (builtin.muo)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.do_foldr_pred((pred((builtin.in), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.do_foldr_pred((pred((builtin.in), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.do_foldr_pred((pred((builtin.in), (builtin.mdi), (builtin.muo)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.do_foldr_pred((pred((builtin.in), (builtin.di), (builtin.uo)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.do_foldr2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.do_foldr2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.do_foldr2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.do_foldr2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.do_foldr2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.do_foldr2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.do_foldr3((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.do_foldr3((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.do_foldr3((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.do_foldr3((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.do_foldr3((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.do_foldr3((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.do_foldr4((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.do_foldr4((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.do_foldr4((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.do_foldr4((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.do_foldr4((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.do_foldr4((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.do_foldr5((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.do_foldr5((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.do_foldr5((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.do_foldr5((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.do_foldr5((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.do_foldr5((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.map_foldl_2(builtin.in((pred((builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det)), (builtin.in), (builtin.in), (array.array_di), (array.array_uo), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.map_foldl_2(builtin.in((pred((builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is det)), (builtin.in), (builtin.in), (array.array_di), (array.array_uo), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(array.map_foldl_2(builtin.in((pred((builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det)), (builtin.in), (builtin.in), (array.array_di), (array.array_uo), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.map_foldl_2(builtin.in((pred((builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet)), (builtin.in), (builtin.in), (array.array_di), (array.array_uo), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.map_corresponding_foldl_2(builtin.in((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det)), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (array.array_di), (array.array_uo), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.map_corresponding_foldl_2(builtin.in((pred((builtin.in), (builtin.in), (builtin.out), (builtin.mdi), (builtin.muo)) is det)), (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.map_corresponding_foldl_2(builtin.in((pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det)), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (array.array_di), (array.array_uo), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(array.map_corresponding_foldl_2(builtin.in((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet)), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (array.array_di), (array.array_uo), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(array.do_all_true(builtin.in((pred((builtin.in)) is semidet)), (builtin.in), (builtin.in), (builtin.in)), infinite, can_loop).
:- pragma termination_info(array.do_all_false(builtin.in((pred((builtin.in)) is semidet)), (builtin.in), (builtin.in), (builtin.in)), 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((builtin.in), (builtin.in), (builtin.in)), infinite, can_loop).
:- pragma exceptions(predicate, (array.make_empty_array), 1, 0, will_not_throw).
:- pragma exceptions(function, (array.make_empty_array), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (array.init), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.init), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.array), 2, 0, will_not_throw).
:- pragma exceptions(function, (array.generate), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.generate_foldl), 5, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.generate_foldl), 5, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.generate_foldl), 5, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.generate_foldl), 5, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.generate_foldl), 5, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.generate_foldl), 5, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.min), 2, 0, will_not_throw).
:- pragma exceptions(function, (array.min), 2, 0, will_not_throw).
:- pragma exceptions(function, (array.least_index), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (array.max), 2, 0, will_not_throw).
:- pragma exceptions(function, (array.max), 2, 0, will_not_throw).
:- pragma exceptions(function, (array.greatest_index), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (array.size), 2, 0, will_not_throw).
:- pragma exceptions(function, (array.size), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (array.bounds), 3, 0, will_not_throw).
:- pragma exceptions(predicate, (array.in_bounds), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (array.is_empty), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (array.lookup), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.lookup), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.semidet_lookup), 3, 0, will_not_throw).
:- pragma exceptions(predicate, (array.unsafe_lookup), 3, 0, will_not_throw).
:- pragma exceptions(predicate, (array.set), 4, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.set), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.semidet_set), 4, 0, will_not_throw).
:- pragma exceptions(predicate, (array.unsafe_set), 4, 0, will_not_throw).
:- pragma exceptions(predicate, (array.slow_set), 4, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.slow_set), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.semidet_slow_set), 4, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.elem), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.unsafe_elem), 3, 0, will_not_throw).
:- pragma exceptions(function, (array.'elem :='), 4, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.'unsafe_elem :='), 4, 0, will_not_throw).
:- pragma exceptions(predicate, (array.member), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (array.copy), 2, 0, will_not_throw).
:- pragma exceptions(function, (array.copy), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (array.resize), 4, 0, will_not_throw).
:- pragma exceptions(function, (array.resize), 4, 0, will_not_throw).
:- pragma exceptions(predicate, (array.shrink), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.shrink), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.from_list), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (array.from_list), 2, 0, will_not_throw).
:- pragma exceptions(function, (array.from_reverse_list), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (array.to_list), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.to_list), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.fetch_items), 4, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.fetch_items), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.bsearch), 4, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.bsearch), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.approx_binary_search), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.approx_binary_search), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.binary_search), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.binary_search), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.map), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.map), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.array_compare), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.sort), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.foldl), 4, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.foldl), 4, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl), 4, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl), 4, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl), 4, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl), 4, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl), 4, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl2), 6, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl2), 6, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl2), 6, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl2), 6, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl2), 6, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl2), 6, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl3), 8, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl3), 8, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl3), 8, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl3), 8, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl3), 8, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl3), 8, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl4), 10, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl4), 10, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl4), 10, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl4), 10, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl4), 10, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl4), 10, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl5), 12, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl5), 12, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl5), 12, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl5), 12, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl5), 12, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldl5), 12, 5, may_throw(user_exception)).
:- pragma exceptions(function, (array.foldr), 4, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.foldr), 4, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr), 4, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr), 4, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr), 4, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr), 4, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr), 4, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr2), 6, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr2), 6, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr2), 6, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr2), 6, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr2), 6, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr2), 6, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr3), 8, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr3), 8, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr3), 8, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr3), 8, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr3), 8, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr3), 8, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr4), 10, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr4), 10, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr4), 10, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr4), 10, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr4), 10, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr4), 10, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr5), 12, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr5), 12, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr5), 12, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr5), 12, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr5), 12, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.foldr5), 12, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.map_foldl), 5, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.map_foldl), 5, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.map_foldl), 5, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.map_foldl), 5, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.map_corresponding_foldl), 6, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.map_corresponding_foldl), 6, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.map_corresponding_foldl), 6, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.map_corresponding_foldl), 6, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.all_true), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.all_false), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.append), 3, 0, will_not_throw).
:- pragma exceptions(predicate, (array.random_permutation), 4, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.array_to_doc), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.dynamic_cast_to_array), 2, 0, may_throw(type_exception)).
:- pragma exceptions(predicate, (array.array_equal), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.array_compare), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.bounds_checks), 0, 0, will_not_throw).
:- pragma exceptions(predicate, (array.init_2), 3, 0, will_not_throw).
:- pragma exceptions(function, (array.unsafe_init), 4, 0, will_not_throw).
:- pragma exceptions(function, (array.generate_2), 5, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.generate_foldl_2), 7, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.generate_foldl_2), 7, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.generate_foldl_2), 7, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.generate_foldl_2), 7, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.generate_foldl_2), 7, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.generate_foldl_2), 7, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.bsearch_2), 6, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.map_2), 6, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.approx_binary_search_2), 6, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.permutation_2), 8, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.swap_elems), 4, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.do_foldl_func), 6, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.do_foldl_func), 6, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl_pred), 6, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl_pred), 6, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl_pred), 6, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl_pred), 6, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl_pred), 6, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl_pred), 6, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl2), 8, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl2), 8, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl2), 8, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl2), 8, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl2), 8, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl2), 8, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl3), 10, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl3), 10, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl3), 10, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl3), 10, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl3), 10, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl3), 10, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl4), 12, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl4), 12, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl4), 12, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl4), 12, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl4), 12, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl4), 12, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl5), 14, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl5), 14, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl5), 14, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl5), 14, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl5), 14, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldl5), 14, 5, may_throw(user_exception)).
:- pragma exceptions(function, (array.do_foldr_func), 6, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.do_foldr_func), 6, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr_pred), 6, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr_pred), 6, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr_pred), 6, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr_pred), 6, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr_pred), 6, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr_pred), 6, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr2), 8, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr2), 8, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr2), 8, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr2), 8, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr2), 8, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr2), 8, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr3), 10, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr3), 10, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr3), 10, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr3), 10, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr3), 10, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr3), 10, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr4), 12, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr4), 12, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr4), 12, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr4), 12, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr4), 12, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr4), 12, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr5), 14, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr5), 14, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr5), 14, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr5), 14, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr5), 14, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_foldr5), 14, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.map_foldl_2), 7, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.map_foldl_2), 7, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.map_foldl_2), 7, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.map_foldl_2), 7, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.map_corresponding_foldl_2), 9, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.map_corresponding_foldl_2), 9, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.map_corresponding_foldl_2), 9, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.map_corresponding_foldl_2), 9, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_all_true), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.do_all_false), 4, 0, may_throw(user_exception)).
:- pragma exceptions(function, (array.samsort_subarray), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.samsort_up), 8, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (array.out_of_bounds_error), 3, 0, may_throw(user_exception)).
