:- module string. :- pragma termination_info(string:length((builtin:in)) = (builtin:uo), infinite, cannot_loop). :- pragma termination_info(string:length((builtin:in), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(string:length((builtin:ui), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(string:append((builtin:in), (builtin:in)) = (builtin:uo), infinite, cannot_loop). :- pragma termination_info(string:append((builtin:in), (builtin:in), (builtin:in)), finite(0, [no, no, no]), cannot_loop). :- pragma termination_info(string:append((builtin:in), (builtin:uo), (builtin:in)), infinite, cannot_loop). :- pragma termination_info(string:append((builtin:in), (builtin:in), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(string:append((builtin:out), (builtin:out), (builtin:in)), infinite, can_loop). :- pragma termination_info(string:'++'((builtin:in), (builtin:in)) = (builtin:uo), infinite, cannot_loop). :- pragma termination_info(string:remove_suffix((builtin:in), (builtin:in), (builtin:out)), infinite, cannot_loop). :- pragma termination_info(string:prefix((builtin:in), (builtin:in)), finite(0, [no, no]), can_loop). :- pragma termination_info(string:prefix((builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:suffix((builtin:in), (builtin:in)), finite(0, [no, no]), can_loop). :- pragma termination_info(string:suffix((builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:char_to_string((builtin:in)) = (builtin:uo), infinite, cannot_loop). :- pragma termination_info(string:char_to_string((builtin:in), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(string:char_to_string((builtin:out), (builtin:in)), infinite, cannot_loop). :- pragma termination_info(string:int_to_string((builtin:in)) = (builtin:uo), infinite, can_loop). :- pragma termination_info(string:int_to_string((builtin:in), (builtin:uo)), infinite, can_loop). :- pragma termination_info(string:int_to_base_string((builtin:in), (builtin:in)) = (builtin:uo), infinite, can_loop). :- pragma termination_info(string:int_to_base_string((builtin:in), (builtin:in), (builtin:uo)), infinite, can_loop). :- pragma termination_info(string:float_to_string((builtin:in)) = (builtin:uo), infinite, cannot_loop). :- pragma termination_info(string:float_to_string((builtin:in), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(string:first_char((builtin:in), (builtin:in), (builtin:in)), finite(0, [no, no, no]), cannot_loop). :- pragma termination_info(string:first_char((builtin:in), (builtin:uo), (builtin:in)), infinite, cannot_loop). :- pragma termination_info(string:first_char((builtin:in), (builtin:in), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(string:first_char((builtin:in), (builtin:uo), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(string:first_char((builtin:uo), (builtin:in), (builtin:in)), infinite, cannot_loop). :- pragma termination_info(string:replace((builtin:in), (builtin:in), (builtin:in), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(string:replace_all((builtin:in), (builtin:in), (builtin:in)) = (builtin:uo), infinite, can_loop). :- pragma termination_info(string:replace_all((builtin:in), (builtin:in), (builtin:in), (builtin:uo)), infinite, can_loop). :- pragma termination_info(string:to_lower((builtin:in)) = (builtin:uo), infinite, cannot_loop). :- pragma termination_info(string:to_lower((builtin:in), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(string:to_lower((builtin:in), (builtin:in)), finite(0, [no, no]), cannot_loop). :- pragma termination_info(string:to_upper((builtin:in)) = (builtin:uo), infinite, cannot_loop). :- pragma termination_info(string:to_upper((builtin:in), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(string:to_upper((builtin:in), (builtin:in)), finite(0, [no, no]), cannot_loop). :- pragma termination_info(string:capitalize_first((builtin:in)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(string:capitalize_first((builtin:in), (builtin:out)), infinite, cannot_loop). :- pragma termination_info(string:uncapitalize_first((builtin:in)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(string:uncapitalize_first((builtin:in), (builtin:out)), infinite, cannot_loop). :- pragma termination_info(string:to_char_list((builtin:in)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(string:to_char_list((builtin:in), (builtin:out)), infinite, cannot_loop). :- pragma termination_info(string:to_char_list((builtin:uo), (builtin:in)), infinite, cannot_loop). :- pragma termination_info(string:from_char_list((builtin:in)) = (builtin:uo), infinite, cannot_loop). :- pragma termination_info(string:from_char_list((builtin:in), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(string:from_char_list((builtin:out), (builtin:in)), infinite, cannot_loop). :- pragma termination_info(string:from_rev_char_list((builtin:in)) = (builtin:uo), infinite, cannot_loop). :- pragma termination_info(string:from_rev_char_list((builtin:in), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(string:det_to_int((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(string:to_int((builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:base_string_to_int((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:det_base_string_to_int((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(string:to_float((builtin:in), (builtin:out)), infinite, cannot_loop). :- pragma termination_info(string:is_alpha((builtin:in)), infinite, can_loop). :- pragma termination_info(string:is_alpha_or_underscore((builtin:in)), infinite, can_loop). :- pragma termination_info(string:is_alnum_or_underscore((builtin:in)), infinite, can_loop). :- pragma termination_info(string:pad_left((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(string:pad_left((builtin:in), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:pad_right((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(string:pad_right((builtin:in), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:duplicate_char((builtin:in), (builtin:in)) = (builtin:uo), infinite, can_loop). :- pragma termination_info(string:duplicate_char((builtin:in), (builtin:in), (builtin:uo)), infinite, can_loop). :- pragma termination_info(string:contains_char((builtin:in), (builtin:in)), finite(0, [no, no]), cannot_loop). :- pragma termination_info(string:index((builtin:in), (builtin:in), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(string:index_det((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(string:index_det((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:unsafe_index((builtin:in), (builtin:in)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(string:unsafe_index((builtin:in), (builtin:in), (builtin:out)), infinite, cannot_loop). :- pragma termination_info(string:set_char((builtin:in), (builtin:in), (builtin:in), (builtin:out)), infinite, cannot_loop). :- pragma termination_info(string:set_char_det((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(string:set_char_det((builtin:in), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:unsafe_set_char((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(string:unsafe_set_char((builtin:in), (builtin:in), (builtin:in), (builtin:out)), infinite, cannot_loop). :- pragma termination_info(string:foldl((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(string:foldl((pred((builtin:in), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:foldl((pred((builtin:in), (builtin:di), (builtin:uo)) is det), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(string:foldl((pred((builtin:in), (builtin:in), (builtin:out)) is semidet), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:foldl((pred((builtin:in), (builtin:in), (builtin:out)) is nondet), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:foldl((pred((builtin:in), (builtin:in), (builtin:out)) is multi), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:foldl_substring((builtin:in), (builtin:in), (builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(string:foldl_substring((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(string:foldl_substring((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(string:foldl_substring((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(string:foldl_substring((pred((builtin:in), (builtin:in), (builtin:out)) is nondet), (builtin:in), (builtin:in), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:foldl_substring((pred((builtin:in), (builtin:in), (builtin:out)) is multi), (builtin:in), (builtin:in), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:foldr((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(string:foldr((pred((builtin:in), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:foldr((pred((builtin:in), (builtin:di), (builtin:uo)) is det), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(string:foldr((pred((builtin:in), (builtin:in), (builtin:out)) is semidet), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:foldr((pred((builtin:in), (builtin:in), (builtin:out)) is nondet), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:foldr((pred((builtin:in), (builtin:in), (builtin:out)) is multi), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:foldr_substring((builtin:in), (builtin:in), (builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(string:foldr_substring((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(string:foldr_substring((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(string:foldr_substring((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(string:foldr_substring((pred((builtin:in), (builtin:in), (builtin:out)) is nondet), (builtin:in), (builtin:in), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:foldr_substring((pred((builtin:in), (builtin:in), (builtin:out)) is multi), (builtin:in), (builtin:in), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:words((pred((builtin:in)) is semidet), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(string:words((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(string:split((builtin:in), (builtin:in), (builtin:uo), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(string:left((builtin:in), (builtin:in)) = (builtin:uo), infinite, cannot_loop). :- pragma termination_info(string:left((builtin:in), (builtin:in), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(string:right((builtin:in), (builtin:in)) = (builtin:uo), infinite, cannot_loop). :- pragma termination_info(string:right((builtin:in), (builtin:in), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(string:substring((builtin:in), (builtin:in), (builtin:in)) = (builtin:uo), infinite, cannot_loop). :- pragma termination_info(string:substring((builtin:in), (builtin:in), (builtin:in), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(string:unsafe_substring((builtin:in), (builtin:in), (builtin:in)) = (builtin:uo), infinite, cannot_loop). :- pragma termination_info(string:unsafe_substring((builtin:in), (builtin:in), (builtin:in), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(string:append_list((builtin:in)) = (builtin:uo), infinite, cannot_loop). :- pragma termination_info(string:append_list((builtin:in), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(string:join_list((builtin:in), (builtin:in)) = (builtin:uo), infinite, cannot_loop). :- pragma termination_info(string:hash((builtin:in)) = (builtin:out), finite(0, [no, no]), can_loop). :- pragma termination_info(string:hash((builtin:in), (builtin:out)), finite(0, [no, no]), can_loop). :- pragma termination_info(string:sub_string_search((builtin:in), (builtin:in), (builtin:out)), infinite, cannot_loop). :- pragma termination_info(string:format((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(string:format((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:find_all_sub_charlist((builtin:in), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:find_sub_charlist((builtin:in), (builtin:in), (builtin:out), (builtin:out)), finite(0, [yes, no, no, no]), cannot_loop). :- pragma termination_info(string:foldl_substring_2((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(string:foldl_substring_2((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(string:foldl_substring_2((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(string:foldl_substring_2((pred((builtin:in), (builtin:in), (builtin:out)) is nondet), (builtin:in), (builtin:in), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:foldl_substring_2((pred((builtin:in), (builtin:in), (builtin:out)) is multi), (builtin:in), (builtin:in), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:foldr_substring_2((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(string:foldr_substring_2((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(string:foldr_substring_2((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(string:foldr_substring_2((pred((builtin:in), (builtin:in), (builtin:out)) is nondet), (builtin:in), (builtin:in), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:foldr_substring_2((pred((builtin:in), (builtin:in), (builtin:out)) is multi), (builtin:in), (builtin:in), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(string:char_list_to_upper((builtin:in), (builtin:out)), finite(0, [yes, no]), cannot_loop). :- pragma termination_info(string:char_list_to_lower((builtin:in), (builtin:out)), finite(0, [yes, no]), cannot_loop). :- pragma termination_info(string:all_match((pred((builtin:in)) is semidet), (builtin:in)), infinite, can_loop). :- pragma termination_info(string:all_match_2((builtin:in), (pred((builtin:in)) is semidet), (builtin:in)), infinite, can_loop). :- pragma termination_info(string:hash_2((builtin:in), (builtin:in), (builtin:in), (builtin:in), (builtin:out)), finite(0, [no, no, no, yes, no]), can_loop). :- pragma termination_info(string:combine_hash((builtin:in), (builtin:in), (builtin:out)), finite(0, [no, no, no]), cannot_loop). :- pragma termination_info(string:words_2((pred((builtin:in)) is semidet), (builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(string:preceding_boundary((pred((builtin:in)) is semidet), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop).