:- module set. :- use_module bool, builtin, list, private_builtin, require, set_ordlist, set_unordlist, term. :- type (set:set(T)) == (set_ordlist:set_ordlist(T)). set:list_to_set(List_3, Set_4) :- set_ordlist:list_to_set(List_3, Set_4). set:list_to_set(Xs_3) = S_4 :- set:list_to_set(Xs_3, S_4). set:sorted_list_to_set(List_3, Set_4) :- set_ordlist:sorted_list_to_set(List_3, Set_4). set:sorted_list_to_set(Xs_3) = S_4 :- set:sorted_list_to_set(Xs_3, S_4). set:to_sorted_list(Set_3, List_4) :- set_ordlist:to_sorted_list(Set_3, List_4). set:to_sorted_list(S_3) = Xs_4 :- set:to_sorted_list(S_3, Xs_4). set:init(Set_2) :- set_ordlist:init(Set_2). set:init = S_2 :- set:init(S_2). set:singleton_set(Set_3, X_4) :- set_ordlist:singleton_set(Set_3, X_4). set:make_singleton_set(T_3) = S_4 :- set:singleton_set(S_4, T_3). set:equal(SetA_3, SetB_4) :- set_ordlist:equal(SetA_3, SetB_4). set:empty(Set_2) :- set_ordlist:empty(Set_2). set:non_empty(Set_2) :- \+ ( set_ordlist:empty(Set_2) ). set:subset(SetA_3, SetB_4) :- set_ordlist:subset(SetA_3, SetB_4). set:superset(SetA_3, SetB_4) :- set_ordlist:superset(SetA_3, SetB_4). set:member(X_3, Set_4) :- set_ordlist:member(X_3, Set_4). set:is_member(X_4, Set_5, Result_6) :- set_ordlist:is_member(X_4, Set_5, Result_6). set:contains(Set_3, X_4) :- set_ordlist:contains(Set_3, X_4). set:insert(Set0_4, X_5, Set_6) :- set_ordlist:insert(Set0_4, X_5, Set_6). set:insert(S1_4, T_5) = S2_6 :- set:insert(S1_4, T_5, S2_6). set:insert_list(Set0_4, List_5, Set_6) :- set_ordlist:insert_list(Set0_4, List_5, Set_6). set:insert_list(S1_4, Xs_5) = S2_6 :- set:insert_list(S1_4, Xs_5, S2_6). set:delete(Set0_4, X_5, Set_6) :- set_ordlist:delete(Set0_4, X_5, Set_6). set:delete(S1_4, T_5) = S2_6 :- set:delete(S1_4, T_5, S2_6). set:delete_list(Set0_4, List_5, Set_6) :- set_ordlist:delete_list(Set0_4, List_5, Set_6). set:delete_list(S1_4, Xs_5) = S2_6 :- set:delete_list(S1_4, Xs_5, S2_6). set:remove(Set0_4, X_5, Set_6) :- set_ordlist:remove(Set0_4, X_5, Set_6). set:remove_list(Set0_4, List_5, Set_6) :- set_ordlist:remove_list(Set0_4, List_5, Set_6). set:remove_least(Set0_4, X_5, Set_6) :- set_ordlist:remove_least(Set0_4, X_5, Set_6). set:union(SetA_4, SetB_5, Set_6) :- set_ordlist:union(SetA_4, SetB_5, Set_6). set:union(S1_4, S2_5) = S3_6 :- set:union(S1_4, S2_5, S3_6). set:union_list(Sets_3) = HeadVar__2_2 :- HeadVar__2_2 = set_ordlist:union_list(Sets_3). set:power_union(Sets_3, Set_4) :- set_ordlist:power_union(Sets_3, Set_4). set:power_union(SS_3) = S_4 :- set:power_union(SS_3, S_4). set:intersect(SetA_4, SetB_5, Set_6) :- set_ordlist:intersect(SetA_4, SetB_5, Set_6). set:intersect(S1_4, S2_5) = S3_6 :- set:intersect(S1_4, S2_5, S3_6). set:power_intersect(Sets_3, Set_4) :- set_ordlist:power_intersect(Sets_3, Set_4). set:power_intersect(SS_3) = S_4 :- set:power_intersect(SS_3, S_4). set:intersect_list(Sets_3) = HeadVar__2_2 :- HeadVar__2_2 = set_ordlist:intersect_list(Sets_3). set:difference(SetA_4, SetB_5, Set_6) :- set_ordlist:difference(SetA_4, SetB_5, Set_6). set:difference(S1_4, S2_5) = S3_6 :- set:difference(S1_4, S2_5, S3_6). set:count(Set_3, Count_4) :- set_ordlist:count(Set_3, Count_4). set:count(S_3) = N_4 :- set:count(S_3, N_4). set:map(F_4, S1_5) = S2_6 :- S2_6 = set:list_to_set(V_7), V_7 = list:map(F_4, V_8), V_8 = set:to_sorted_list(S1_5). set:filter(P_4, S1_5) = S2_6 :- S2_6 = set:sorted_list_to_set(V_7), V_7 = list:filter(P_4, V_8), V_8 = set:to_sorted_list(S1_5). set:filter_map(PF_4, S1_5) = S2_6 :- S2_6 = set:list_to_set(V_7), V_7 = list:filter_map(PF_4, V_8), V_8 = set:to_sorted_list(S1_5). set:fold(F_5, S_6, A_7) = B_8 :- B_8 = list:foldl(F_5, V_9, A_7), V_9 = set:to_sorted_list(S_6). set:fold(F_5, S_6, DCG_0_7, DCG_1_8) :- V_9 = set:to_sorted_list(S_6), list:foldl(F_5, V_9, DCG_0_7, DCG_1_8). set:divide(P_5, Set_6, TruePart_7, FalsePart_8) :- set_ordlist:divide(P_5, Set_6, TruePart_7, FalsePart_8). :- pragma termination_info(set:list_to_set((builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(set:list_to_set((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(set:sorted_list_to_set((builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(set:sorted_list_to_set((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(set:to_sorted_list((builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(set:to_sorted_list((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(set:init((builtin:uo)), infinite, can_loop). :- pragma termination_info((set:init) = (builtin:out), infinite, can_loop). :- pragma termination_info(set:singleton_set((builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(set:singleton_set((builtin:out), (builtin:in)), infinite, can_loop). :- pragma termination_info(set:make_singleton_set((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(set:equal((builtin:in), (builtin:in)), finite(0, [no, no, no]), can_loop). :- pragma termination_info(set:empty((builtin:in)), finite(0, [no, no]), can_loop). :- pragma termination_info(set:non_empty((builtin:in)), finite(0, [no, no]), can_loop). :- pragma termination_info(set:subset((builtin:in), (builtin:in)), finite(0, [no, no, no]), can_loop). :- pragma termination_info(set:superset((builtin:in), (builtin:in)), finite(0, [no, no, no]), can_loop). :- pragma termination_info(set:member((builtin:in), (builtin:in)), finite(0, [no, no, no]), can_loop). :- pragma termination_info(set:member((builtin:out), (builtin:in)), infinite, can_loop). :- pragma termination_info(set:is_member((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(set:contains((builtin:in), (builtin:in)), finite(0, [no, no, no]), can_loop). :- pragma termination_info(set:insert((builtin:di), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(set:insert((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(set:insert((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(set:insert_list((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(set:insert_list((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(set:delete((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(set:delete((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(set:delete_list((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(set:delete_list((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(set:remove((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(set:remove_list((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(set:remove_least((builtin:in), (builtin:out), (builtin:out)), infinite, can_loop). :- pragma termination_info(set:union((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(set:union((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(set:union_list((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(set:power_union((builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(set:power_union((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(set:intersect((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(set:intersect((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(set:power_intersect((builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(set:power_intersect((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(set:intersect_list((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(set:difference((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(set:difference((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(set:count((builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(set:count((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(set:map((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(set:filter((pred((builtin:in)) is semidet), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(set:filter_map((func((builtin:in)) = (builtin:out) is semidet), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(set:fold((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(set:fold((pred((builtin:in), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(set:fold((pred((builtin:in), (builtin:di), (builtin:uo)) is det), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(set:fold((pred((builtin:in), (builtin:in), (builtin:out)) is semidet), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(set:divide((pred((builtin:in)) is semidet), (builtin:in), (builtin:out), (builtin:out)), infinite, can_loop).