:- module map. :- use_module assoc_list, builtin, list, private_builtin, require, set, std_util, string, term, tree234. :- pred map:assoc_list_member(K_1, V_2, (list:list((std_util:pair(K_1, V_2))))). :- mode map:assoc_list_member((builtin:in), (builtin:out), (builtin:in)) is nondet. :- mode map:assoc_list_member((builtin:out), (builtin:in), (builtin:in)) is nondet. :- mode map:assoc_list_member((builtin:in), (builtin:in), (builtin:in)) is semidet. :- pred map:overlay_2((list:list((std_util:pair(K_1, V_2)))), (tree234:tree234(K_1, V_2)), (tree234:tree234(K_1, V_2))). :- mode map:overlay_2((builtin:in), (builtin:in), (builtin:out)) is det. :- pragma type_spec((map:overlay_2)/3, (K_1 = (term:var(V_9))), (map:'TypeSpecOf__pred_or_func__overlay_2__[K = var(V_2)]')). :- pred map:select_2((list:list(K_1)), (tree234:tree234(K_1, V_2)), (tree234:tree234(K_1, V_2)), (tree234:tree234(K_1, V_2))). :- mode map:select_2((builtin:in), (builtin:in), (builtin:in), (builtin:out)) is det. :- pragma type_spec((map:select_2)/4, (K_1 = (term:var(V_9))), (map:'TypeSpecOf__pred_or_func__select_2__[K = var(V_2)]')). :- pred map:intersect_2((list:list((std_util:pair(K_1, V_2)))), (list:list((std_util:pair(K_1, V_2)))), pred(V_2, V_2, V_2), (tree234:tree234(K_1, V_2)), (tree234:tree234(K_1, V_2))). :- mode map:intersect_2((builtin:in), (builtin:in), (pred((builtin:in), (builtin:in), (builtin:out)) is semidet), (builtin:in), (builtin:out)) is semidet. :- mode map:intersect_2((builtin:in), (builtin:in), (pred((builtin:in), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:out)) is det. :- pred map:union_2((list:list((std_util:pair(K_1, V_2)))), (list:list((std_util:pair(K_1, V_2)))), pred(V_2, V_2, V_2), (tree234:tree234(K_1, V_2)), (tree234:tree234(K_1, V_2))). :- mode map:union_2((builtin:in), (builtin:in), (pred((builtin:in), (builtin:in), (builtin:out)) is semidet), (builtin:in), (builtin:out)) is semidet. :- mode map:union_2((builtin:in), (builtin:in), (pred((builtin:in), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:out)) is det. map:init(M_2) :- tree234:init(M_2). map:init = M_2 :- map:init(M_2). map:is_empty(M_2) :- tree234:is_empty(M_2). map:contains(Map_3, K_4) :- map:search(Map_3, K_4, V_5). map:member(Map_4, K_5, V_6) :- tree234:member(Map_4, K_5, V_6). map:search(Map_4, K_5, V_6) :- tree234:search(Map_4, K_5, V_6). map:search(M_4, K_5) = V_6 :- map:search(M_4, K_5, V_6). map:lookup(M_4, K_5) = V_6 :- map:lookup(M_4, K_5, V_6). map:lower_bound_search(Map_5, SearchK_6, K_7, V_8) :- tree234:lower_bound_search(Map_5, SearchK_6, K_7, V_8). map:upper_bound_search(Map_5, SearchK_6, K_7, V_8) :- tree234:upper_bound_search(Map_5, SearchK_6, K_7, V_8). map:inverse_search(Map_4, V_5, K_6) :- tree234:tree234_to_assoc_list(Map_4, AssocList_7), map:assoc_list_member(K_6, V_5, AssocList_7). map:insert(Map0_5, K_6, V_7, Map_8) :- tree234:insert(Map0_5, K_6, V_7, Map_8). map:insert(M1_5, K_6, V_7) = M2_8 :- map:insert(M1_5, K_6, V_7, M2_8). map:det_insert(M1_5, K_6, V_7) = M2_8 :- map:det_insert(M1_5, K_6, V_7, M2_8). map:det_insert_from_corresponding_lists(M1_5, Ks_6, Vs_7) = M2_8 :- map:det_insert_from_corresponding_lists(M1_5, Ks_6, Vs_7, M2_8). map:det_insert_from_assoc_list(M1_4, AL_5) = M2_6 :- map:det_insert_from_assoc_list(M1_4, AL_5, M2_6). map:set_from_corresponding_lists(M1_5, Ks_6, Vs_7) = M2_8 :- map:set_from_corresponding_lists(M1_5, Ks_6, Vs_7, M2_8). map:set_from_assoc_list(M1_4, AL_5) = M2_6 :- map:set_from_assoc_list(M1_4, AL_5, M2_6). map:update(Map0_5, K_6, V_7, Map_8) :- tree234:update(Map0_5, K_6, V_7, Map_8). map:update(M1_5, K_6, V_7) = M2_8 :- map:update(M1_5, K_6, V_7, M2_8). map:det_update(M1_5, K_6, V_7) = M2_8 :- map:det_update(M1_5, K_6, V_7, M2_8). map:set(Map0_5, K_6, V_7, Map_8) :- tree234:set(Map0_5, K_6, V_7, Map_8). map:set(M1_5, K_6, V_7) = M2_8 :- map:set(M1_5, K_6, V_7, M2_8). map:keys(Map_3, KeyList_4) :- tree234:keys(Map_3, KeyList_4). map:keys(M_3) = Ks_4 :- map:keys(M_3, Ks_4). map:sorted_keys(Map_3, KeyList_4) :- tree234:keys(Map_3, KeyList_4). map:sorted_keys(M_3) = Ks_4 :- map:sorted_keys(M_3, Ks_4). map:values(Map_3, KeyList_4) :- tree234:values(Map_3, KeyList_4). map:values(M_3) = Vs_4 :- map:values(M_3, Vs_4). map:to_assoc_list(M_3, L_4) :- tree234:tree234_to_assoc_list(M_3, L_4). map:to_assoc_list(M_3) = AL_4 :- map:to_assoc_list(M_3, AL_4). map:to_sorted_assoc_list(M_3, L_4) :- tree234:tree234_to_assoc_list(M_3, L_4). map:to_sorted_assoc_list(M_3) = AL_4 :- map:to_sorted_assoc_list(M_3, AL_4). map:from_assoc_list(L_3, M_4) :- tree234:assoc_list_to_tree234(L_3, M_4). map:from_assoc_list(AL_3) = M_4 :- map:from_assoc_list(AL_3, M_4). map:from_sorted_assoc_list(L_3, M_4) :- tree234:assoc_list_to_tree234(L_3, M_4). map:from_sorted_assoc_list(AL_3) = M_4 :- map:from_sorted_assoc_list(AL_3, M_4). map:delete(Map0_4, Key_5, Map_6) :- tree234:delete(Map0_4, Key_5, Map_6). map:delete(M1_4, K_5) = M2_6 :- map:delete(M1_4, K_5, M2_6). map:delete_list(M1_4, Ks_5) = M2_6 :- map:delete_list(M1_4, Ks_5, M2_6). map:remove(Map0_5, Key_6, Value_7, Map_8) :- tree234:remove(Map0_5, Key_6, Value_7, Map_8). map:count(Map_3, Count_4) :- tree234:count(Map_3, Count_4). map:count(M_3) = N_4 :- map:count(M_3, N_4). map:from_corresponding_lists(Keys_4, Values_5, Map_6) :- assoc_list:from_corresponding_lists(Keys_4, Values_5, AssocList_7), tree234:assoc_list_to_tree234(AssocList_7, Map_6). map:from_corresponding_lists(Ks_4, Vs_5) = M_6 :- map:from_corresponding_lists(Ks_4, Vs_5, M_6). map:merge(M0_4, M1_5, M_6) :- map:to_assoc_list(M0_4, ML0_7), map:to_assoc_list(M1_5, ML1_8), list:merge(ML0_7, ML1_8, ML_9), map:from_sorted_assoc_list(ML_9, M_6). map:merge(M1_4, M2_5) = M3_6 :- map:merge(M1_4, M2_5, M3_6). map:overlay(Map0_4, Map1_5, Map_6) :- map:to_assoc_list(Map1_5, AssocList_7), map:overlay_2(AssocList_7, Map0_4, Map_6). map:overlay(M1_4, M2_5) = M3_6 :- map:overlay(M1_4, M2_5, M3_6). map:select(Original_4, KeySet_5, NewMap_6) :- set:to_sorted_list(KeySet_5, KeyList_7), map:init(NewMap0_8), map:select_2(KeyList_7, Original_4, NewMap0_8, NewMap_6). map:select(M1_4, S_5) = M2_6 :- map:select(M1_4, S_5, M2_6). map:apply_to_list(Ks_4, M_5) = Vs_6 :- map:apply_to_list(Ks_4, M_5, Vs_6). map:optimize(Map_3, Map_3). map:optimize(M1_3) = M2_4 :- map:optimize(M1_3, M2_4). map:remove_smallest(Map0_5, K_6, V_7, Map_8) :- tree234:remove_smallest(Map0_5, K_6, V_7, Map_8). map:foldl(Pred_5, Map_6, Acc0_7, Acc_8) :- tree234:foldl(Pred_5, Map_6, Acc0_7, Acc_8). map:foldl(F_5, M_6, A_7) = B_8 :- P_9 = (pred(V_17::(builtin:in), V_16::(builtin:in), V_15::(builtin:in), V_14::(builtin:out)) is det :- some [] ( V_17 = W_18, V_16 = X_19, V_15 = Y_20, V_14 = Z_21, Z_21 = apply(F_5, W_18, X_19, Y_20) ) ), map:foldl(P_9, M_6, A_7, B_8). map:foldl2(Pred_7, Map_8, Acc0_9, Acc_10, DCG_0_11, DCG_1_12) :- tree234:foldl2(Pred_7, Map_8, Acc0_9, Acc_10, DCG_0_11, DCG_1_12). map:map_values(Pred_4, Map0_5, Map_6) :- tree234:map_values(Pred_4, Map0_5, Map_6). map:map_values(F_4, M1_5) = M2_6 :- P_7 = (pred(V_13::(builtin:in), V_12::(builtin:in), V_11::(builtin:out)) is det :- some [] ( V_13 = X_14, V_12 = Y_15, V_11 = Z_16, Z_16 = apply(F_4, X_14, Y_15) ) ), map:map_values(P_7, M1_5, M2_6). map:map_foldl(Pred_6, Map0_7, Map_8, Acc0_9, Acc_10) :- tree234:map_foldl(Pred_6, Map0_7, Map_8, Acc0_9, Acc_10). map:intersect(CommonPred_5, Map1_6, Map2_7, Common_8) :- map:to_sorted_assoc_list(Map1_6, AssocList1_9), map:to_sorted_assoc_list(Map2_7, AssocList2_10), map:init(Common0_11), map:intersect_2(AssocList1_9, AssocList2_10, CommonPred_5, Common0_11, Common_8). map:intersect(F_5, M1_6, M2_7) = M3_8 :- P_9 = (pred(V_15::(builtin:in), V_14::(builtin:in), V_13::(builtin:out)) is det :- some [] ( V_15 = X_16, V_14 = Y_17, V_13 = Z_18, Z_18 = apply(F_5, X_16, Y_17) ) ), map:intersect(P_9, M1_6, M2_7, M3_8). map:det_intersect(CommonPred_5, Map1_6, Map2_7, Common_8) :- (if map:intersect(CommonPred_5, Map1_6, Map2_7, CommonPrime_9) then Common_8 = CommonPrime_9 else V_10 = "map__det_intersect: map__intersect failed", require:error(V_10) ). map:det_intersect(PF_5, M1_6, M2_7) = M3_8 :- P_9 = (pred(V_15::(builtin:in), V_14::(builtin:in), V_13::(builtin:out)) is semidet :- some [] ( V_15 = X_16, V_14 = Y_17, V_13 = Z_18, Z_18 = apply(PF_5, X_16, Y_17) ) ), map:det_intersect(P_9, M1_6, M2_7, M3_8). map:union(CommonPred_5, Map1_6, Map2_7, Common_8) :- map:to_sorted_assoc_list(Map1_6, AssocList1_9), map:to_sorted_assoc_list(Map2_7, AssocList2_10), map:init(Common0_11), map:union_2(AssocList1_9, AssocList2_10, CommonPred_5, Common0_11, Common_8). map:union(F_5, M1_6, M2_7) = M3_8 :- P_9 = (pred(V_15::(builtin:in), V_14::(builtin:in), V_13::(builtin:out)) is det :- some [] ( V_15 = X_16, V_14 = Y_17, V_13 = Z_18, Z_18 = apply(F_5, X_16, Y_17) ) ), map:union(P_9, M1_6, M2_7, M3_8). map:det_union(CommonPred_5, Map1_6, Map2_7, Union_8) :- (if map:union(CommonPred_5, Map1_6, Map2_7, UnionPrime_9) then Union_8 = UnionPrime_9 else V_10 = "map__det_union: map__union failed", require:error(V_10) ). map:det_union(F_5, M1_6, M2_7) = M3_8 :- P_9 = (pred(V_15::(builtin:in), V_14::(builtin:in), V_13::(builtin:out)) is semidet :- some [] ( V_15 = X_16, V_14 = Y_17, V_13 = Z_18, Z_18 = apply(F_5, X_16, Y_17) ) ), map:det_union(P_9, M1_6, M2_7, M3_8). map:elem(Key_4, Map_5) = HeadVar__3_3 :- HeadVar__3_3 = map:search(Map_5, Key_4). map:det_elem(Key_4, Map_5) = HeadVar__3_3 :- HeadVar__3_3 = map:lookup(Map_5, Key_4). map:'elem :='(Key_5, Map_6, Value_7) = HeadVar__4_4 :- HeadVar__4_4 = map:set(Map_6, Key_5, Value_7). map:'det_elem :='(Key_5, Map_6, Value_7) = HeadVar__4_4 :- HeadVar__4_4 = map:det_update(Map_6, Key_5, Value_7). map:intersect_2(AssocList1_6, AssocList2_7, CommonPred_8, Common0_9, Common_10) :- ( % disjunction AssocList1_6 = list:[], AssocList2_7 = list:[], Common_10 = Common0_9 ; AssocList1_6 = list:[V_11 | V_12], AssocList2_7 = list:[], Common_10 = Common0_9 ; AssocList1_6 = list:[], AssocList2_7 = list:[V_13 | V_14], Common_10 = Common0_9 ; AssocList1_6 = list:[V_24 | AssocTail1_17], V_24 = std_util:(Key1_15 - Value1_16), AssocList2_7 = list:[V_25 | AssocTail2_20], V_25 = std_util:(Key2_18 - Value2_19), builtin:compare(R_21, Key1_15, Key2_18), ( % disjunction R_21 = builtin:(=), call(CommonPred_8, Value1_16, Value2_19, Value_22), map:det_insert(Common0_9, Key1_15, Value_22, Common1_23), map:intersect_2(AssocTail1_17, AssocTail2_20, CommonPred_8, Common1_23, Common_10) ; R_21 = builtin:(<), map:intersect_2(AssocTail1_17, AssocList2_7, CommonPred_8, Common0_9, Common_10) ; R_21 = builtin:(>), map:intersect_2(AssocList1_6, AssocTail2_20, CommonPred_8, Common0_9, Common_10) ) ). map:union_2(AssocList1_6, AssocList2_7, CommonPred_8, Common0_9, Common_10) :- ( % disjunction AssocList1_6 = list:[], AssocList2_7 = list:[], Common_10 = Common0_9 ; AssocList1_6 = list:[V_11 | V_12], AssocList2_7 = list:[], map:det_insert_from_assoc_list(Common0_9, AssocList1_6, Common_10) ; AssocList1_6 = list:[], AssocList2_7 = list:[V_13 | V_14], map:det_insert_from_assoc_list(Common0_9, AssocList2_7, Common_10) ; AssocList1_6 = list:[V_24 | AssocTail1_17], V_24 = std_util:(Key1_15 - Value1_16), AssocList2_7 = list:[V_25 | AssocTail2_20], V_25 = std_util:(Key2_18 - Value2_19), builtin:compare(R_21, Key1_15, Key2_18), ( % disjunction R_21 = builtin:(=), call(CommonPred_8, Value1_16, Value2_19, Value_22), map:det_insert(Common0_9, Key1_15, Value_22, Common1_23), map:union_2(AssocTail1_17, AssocTail2_20, CommonPred_8, Common1_23, Common_10) ; R_21 = builtin:(<), map:det_insert(Common0_9, Key1_15, Value1_16, Common1_26), map:union_2(AssocTail1_17, AssocList2_7, CommonPred_8, Common1_26, Common_10) ; R_21 = builtin:(>), map:det_insert(Common0_9, Key2_18, Value2_19, Common1_27), map:union_2(AssocList1_6, AssocTail2_20, CommonPred_8, Common1_27, Common_10) ) ). :- pragma termination_info(map:init((builtin:uo)), infinite, can_loop). :- pragma termination_info((map:init) = (builtin:uo), infinite, can_loop). :- pragma termination_info(map:is_empty((builtin:in)), finite(0, [no, no, no]), can_loop). :- pragma termination_info(map:contains((builtin:in), (builtin:in)), finite(0, [no, no, no, no]), can_loop). :- pragma termination_info(map:member((builtin:in), (builtin:out), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:search((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:search((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:lookup((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:lookup((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:lower_bound_search((builtin:in), (builtin:in), (builtin:out), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:lower_bound_lookup((builtin:in), (builtin:in), (builtin:out), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:upper_bound_search((builtin:in), (builtin:in), (builtin:out), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:upper_bound_lookup((builtin:in), (builtin:in), (builtin:out), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:inverse_search((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:insert((builtin:in), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:insert((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:det_insert((builtin:in), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:det_insert((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:det_insert_from_corresponding_lists((builtin:in), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:det_insert_from_corresponding_lists((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:det_insert_from_assoc_list((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:det_insert_from_assoc_list((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:set_from_corresponding_lists((builtin:in), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:set_from_corresponding_lists((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:set_from_assoc_list((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:set_from_assoc_list((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:update((builtin:in), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:update((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:det_update((builtin:in), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:det_update((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:set((builtin:di), (builtin:di), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(map:set((builtin:in), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:set((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:keys((builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:keys((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:sorted_keys((builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:sorted_keys((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:values((builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:values((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:to_assoc_list((builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:to_assoc_list((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:to_sorted_assoc_list((builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:to_sorted_assoc_list((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:from_assoc_list((builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:from_assoc_list((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:from_sorted_assoc_list((builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:from_sorted_assoc_list((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:delete((builtin:di), (builtin:in), (builtin:uo)), infinite, can_loop). :- pragma termination_info(map:delete((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:delete((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:delete_list((builtin:di), (builtin:in), (builtin:uo)), infinite, can_loop). :- pragma termination_info(map:delete_list((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:delete_list((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:remove((builtin:in), (builtin:in), (builtin:out), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:det_remove((builtin:in), (builtin:in), (builtin:out), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:count((builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:count((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:from_corresponding_lists((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:from_corresponding_lists((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:merge((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:merge((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:overlay((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:overlay((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:select((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:select((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:apply_to_list((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:apply_to_list((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:optimize((builtin:in), (builtin:out)), finite(0, [no, no, yes, no]), cannot_loop). :- pragma termination_info(map:optimize((builtin:in)) = (builtin:out), finite(0, [no, no, yes, no]), cannot_loop). :- pragma termination_info(map:remove_smallest((builtin:in), (builtin:out), (builtin:out), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:foldl((pred((builtin:in), (builtin:in), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:foldl((pred((builtin:in), (builtin:in), (builtin:in), (builtin:out)) is semidet), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:foldl((pred((builtin:in), (builtin:in), (builtin:di), (builtin:uo)) is det), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(map:foldl((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:foldl2((pred((builtin:in), (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(map:foldl2((pred((builtin:in), (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(map:foldl2((pred((builtin:in), (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(map:foldl2((pred((builtin:in), (builtin:in), (builtin:di), (builtin:uo), (builtin:di), (builtin:uo)) is det), (builtin:in), (builtin:di), (builtin:uo), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(map:map_values((pred((builtin:in), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:map_values((pred((builtin:in), (builtin:in), (builtin:out)) is semidet), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:map_values((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:map_foldl((pred((builtin:in), (builtin:in), (builtin:out), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:out), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:map_foldl((pred((builtin:in), (builtin:in), (builtin:out), (builtin:in), (builtin:out)) is semidet), (builtin:in), (builtin:out), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:intersect((pred((builtin:in), (builtin:in), (builtin:out)) is semidet), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:intersect((pred((builtin:in), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:intersect((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:det_intersect((pred((builtin:in), (builtin:in), (builtin:out)) is semidet), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:det_intersect((func((builtin:in), (builtin:in)) = (builtin:out) is semidet), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:union((pred((builtin:in), (builtin:in), (builtin:out)) is semidet), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:union((pred((builtin:in), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:union((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:det_union((pred((builtin:in), (builtin:in), (builtin:out)) is semidet), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(map:det_union((func((builtin:in), (builtin:in)) = (builtin:out) is semidet), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:elem((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:det_elem((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:'elem :='((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(map:'det_elem :='((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop).