:- module set_tree234.
:- use_module bool, builtin, int, list, private_builtin, require, set, table_builtin, term.
:- type set_tree234.set_tree234(T)
	--->	empty 
	;	two(T, set_tree234.set_tree234(T), set_tree234.set_tree234(T))
	;	three(T, T, set_tree234.set_tree234(T), set_tree234.set_tree234(T), set_tree234.set_tree234(T))
	;	four(T, T, T, set_tree234.set_tree234(T), set_tree234.set_tree234(T), set_tree234.set_tree234(T), set_tree234.set_tree234(T)).
:- inst (set_tree234.four(E, T)) == bound(four(E, E, E, T, T, T, T)).
:- inst (set_tree234.three(E, T)) == bound(three(E, E, T, T, T)).
:- inst (set_tree234.two(E, T)) == bound(two(E, T, T)).
:- mode (set_tree234.in_four) == builtin.in(set_tree234.four(ground, ground)).
:- mode (set_tree234.in_three) == builtin.in(set_tree234.three(ground, ground)).
:- mode (set_tree234.in_two) == builtin.in(set_tree234.two(ground, ground)).
:- mode (set_tree234.out_two) == builtin.out(set_tree234.two(ground, ground)).
:- pred set_tree234.list_to_set_2(list.list(E_1), set_tree234.set_tree234(E_1), set_tree234.set_tree234(E_1)).
:- mode set_tree234.list_to_set_2((builtin.in), (builtin.in), (builtin.out)) is det.
:- pred set_tree234.to_sorted_list_2(set_tree234.set_tree234(T_1), list.list(T_1), list.list(T_1)).
:- mode set_tree234.to_sorted_list_2((builtin.in), (builtin.in), (builtin.out)) is det.
:- pred set_tree234.delete_2(T_1, set_tree234.set_tree234(T_1), set_tree234.set_tree234(T_1), bool.bool).
:- mode set_tree234.delete_2((builtin.in), (builtin.in), (builtin.out), (builtin.out)) is det.
:- pred set_tree234.remove_2(T_1, set_tree234.set_tree234(T_1), set_tree234.set_tree234(T_1), bool.bool).
:- mode set_tree234.remove_2((builtin.in), (builtin.in), (builtin.out), (builtin.out)) is semidet.
:- pred set_tree234.remove_least_2(set_tree234.set_tree234(E_1), E_1, set_tree234.set_tree234(E_1), bool.bool).
:- mode set_tree234.remove_least_2((builtin.in), (builtin.out), (builtin.out), (builtin.out)) is semidet.
:- pred set_tree234.power_union_2(set_tree234.set_tree234(set_tree234.set_tree234(T_1)), set_tree234.set_tree234(T_1), set_tree234.set_tree234(T_1)).
:- mode set_tree234.power_union_2((builtin.in), (builtin.in), (builtin.out)) is det.
:- func set_tree234.intersect_list_2(set_tree234.set_tree234(T_1), list.list(set_tree234.set_tree234(T_1))) = set_tree234.set_tree234(T_1).
:- mode set_tree234.intersect_list_2((builtin.in), (builtin.in)) = (builtin.out) is det.
:- pred set_tree234.difference_2(set_tree234.set_tree234(T_1), set_tree234.set_tree234(T_1), set_tree234.set_tree234(T_1)).
:- mode set_tree234.difference_2((builtin.in), (builtin.in), (builtin.out)) is det.
:- pred set_tree234.map_pred(pred(T1_1, T2_2), set_tree234.set_tree234(T1_1), list.list(T2_2), list.list(T2_2)).
:- mode set_tree234.map_pred(builtin.in((pred((builtin.in), (builtin.out)) is det)), (builtin.in), (builtin.in), (builtin.out)) is det.
:- pred set_tree234.map_func(((func T1_1) = T2_2), set_tree234.set_tree234(T1_1), list.list(T2_2), list.list(T2_2)).
:- mode set_tree234.map_func(builtin.in((func((builtin.in)) = (builtin.out) is det)), (builtin.in), (builtin.in), (builtin.out)) is det.
:- pred set_tree234.filter_map_pred(pred(T1_1, T2_2), set_tree234.set_tree234(T1_1), list.list(T2_2), list.list(T2_2)).
:- mode set_tree234.filter_map_pred(builtin.in((pred((builtin.in), (builtin.out)) is semidet)), (builtin.in), (builtin.in), (builtin.out)) is det.
:- pred set_tree234.filter_map_func(((func T1_1) = T2_2), set_tree234.set_tree234(T1_1), list.list(T2_2), list.list(T2_2)).
:- mode set_tree234.filter_map_func(builtin.in((func((builtin.in)) = (builtin.out) is semidet)), (builtin.in), (builtin.in), (builtin.out)) is det.
:- pred set_tree234.divide_2((pred T_1), set_tree234.set_tree234(T_1), set_tree234.set_tree234(T_1), set_tree234.set_tree234(T_1), set_tree234.set_tree234(T_1), set_tree234.set_tree234(T_1)).
:- mode set_tree234.divide_2(builtin.in((pred((builtin.in)) is semidet)), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det.
set_tree234.init = set_tree234.empty.
set_tree234.singleton_set(X_3, set_tree234.two(X_3, V_4, V_5)) :-
    V_4 = set_tree234.empty : set_tree234.set_tree234(T_1),
    V_5 = set_tree234.empty : set_tree234.set_tree234(T_1).
set_tree234.make_singleton_set(X_3) = set_tree234.two(X_3, V_4, V_5) :-
    V_4 = set_tree234.empty : set_tree234.set_tree234(T_1),
    V_5 = set_tree234.empty : set_tree234.set_tree234(T_1).
set_tree234.is_singleton(set_tree234.two(X_3, V_4, V_5), X_3) :-
    V_4 = set_tree234.empty : set_tree234.set_tree234(T_1),
    V_5 = set_tree234.empty : set_tree234.set_tree234(T_1).
set_tree234.empty(set_tree234.empty).
set_tree234.is_empty(set_tree234.empty).
set_tree234.non_empty(set_tree234.two(V_2, V_3, V_4)).
set_tree234.non_empty(set_tree234.three(V_5, V_6, V_7, V_8, V_9)).
set_tree234.non_empty(set_tree234.four(V_10, V_11, V_12, V_13, V_14, V_15, V_16)).
set_tree234.is_non_empty(set_tree234.two(V_2, V_3, V_4)).
set_tree234.is_non_empty(set_tree234.three(V_5, V_6, V_7, V_8, V_9)).
set_tree234.is_non_empty(set_tree234.four(V_10, V_11, V_12, V_13, V_14, V_15, V_16)).
set_tree234.is_member(T_4, E_5) = R_6 :-
    set_tree234.is_member(T_4, E_5, R_6).
set_tree234.contains(T_3, E_4) :-
    V_5 = bool.yes : bool.bool,
    set_tree234.is_member(T_3, E_4, V_5).
set_tree234.list_to_set(List_3) = Tree_4 :-
    V_5 = set_tree234.empty : set_tree234.set_tree234(T_1),
    set_tree234.list_to_set_2(List_3, V_5, Tree_4).
set_tree234.list_to_set(List_3, Tree_4) :-
    V_5 = set_tree234.empty : set_tree234.set_tree234(T_1),
    set_tree234.list_to_set_2(List_3, V_5, Tree_4).
set_tree234.from_list(List_3) = HeadVar__2_2 :-
    HeadVar__2_2 = set_tree234.list_to_set(List_3).
set_tree234.from_list(List_3, Tree_4) :-
    Tree_4 = set_tree234.list_to_set(List_3).
set_tree234.sorted_list_to_set(List_3) = Tree_4 :-
    V_5 = set_tree234.empty : set_tree234.set_tree234(T_1),
    set_tree234.list_to_set_2(List_3, V_5, Tree_4).
set_tree234.sorted_list_to_set(List_3, Tree_4) :-
    V_5 = set_tree234.empty : set_tree234.set_tree234(T_1),
    set_tree234.list_to_set_2(List_3, V_5, Tree_4).
set_tree234.from_set(Set_3) = HeadVar__2_2 :-
    HeadVar__2_2 = set_tree234.sorted_list_to_set(V_4),
    V_4 = set.to_sorted_list(Set_3).
set_tree234.to_sorted_list(Tree_3) = List_4 :-
    V_5 = list.[] : list.list(T_1),
    set_tree234.to_sorted_list_2(Tree_3, V_5, List_4).
set_tree234.to_sorted_list(Tree_3, List_4) :-
    V_5 = list.[] : list.list(T_1),
    set_tree234.to_sorted_list_2(Tree_3, V_5, List_4).
set_tree234.to_set(Tree_3) = HeadVar__2_2 :-
    HeadVar__2_2 = set.sorted_list_to_set(V_4),
    V_4 = set_tree234.to_sorted_list(Tree_3).
set_tree234.equal(SetA_3, SetB_4) :-
    set_tree234.to_sorted_list(SetA_3, ListA_5),
    set_tree234.to_sorted_list(SetB_4, ListB_6),
    ListA_5 = ListB_6.
set_tree234.superset(SuperSet_3, Set_4) :-
    set_tree234.subset(Set_4, SuperSet_3).
set_tree234.insert(E_4, Tin_5) = Tout_6 :-
    set_tree234.insert(E_4, Tin_5, Tout_6).
set_tree234.insert_list(Es_4, Set0_5) = Set_6 :-
    set_tree234.insert_list(Es_4, Set0_5, Set_6).
set_tree234.delete(E_4, Tin_5) = Tout_6 :-
    set_tree234.delete(E_4, Tin_5, Tout_6).
set_tree234.delete(E_4, Tin_5, Tout_6) :-
    set_tree234.delete_2(E_4, Tin_5, Tout_6, V_7).
set_tree234.delete_list(SetA_4, SetB_5) = Set_6 :-
    set_tree234.delete_list(SetA_4, SetB_5, Set_6).
set_tree234.remove(E_4, Tin_5, Tout_6) :-
    set_tree234.remove_2(E_4, Tin_5, Tout_6, V_7).
set_tree234.remove_least(E_4, Tin_5, Tout_6) :-
    set_tree234.remove_least_2(Tin_5, E_4, Tout_6, V_7).
set_tree234.union(SetA_4, SetB_5) = Set_6 :-
    set_tree234.union(SetA_4, SetB_5, Set_6).
set_tree234.union_list(Sets_3) = Union_4 :-
    set_tree234.union_list(Sets_3, Union_4).
set_tree234.power_union(Sets_3) = Union_4 :-
    set_tree234.power_union(Sets_3, Union_4).
set_tree234.power_union(Sets_3, Union_4) :-
    V_5 = set_tree234.empty : set_tree234.set_tree234(T_1),
    set_tree234.power_union_2(Sets_3, V_5, Union_4).
set_tree234.intersect(SetA_4, SetB_5) = Set_6 :-
    set_tree234.intersect(SetA_4, SetB_5, Set_6).
set_tree234.power_intersect(Sets_3) = Intersect_4 :-
    set_tree234.power_intersect(Sets_3, Intersect_4).
set_tree234.power_intersect(Sets_3, Intersect_4) :-
    Intersect_4 = set_tree234.intersect_list(V_5),
    V_5 = set_tree234.to_sorted_list(Sets_3).
set_tree234.intersect_list(Sets_3) = Intersect_4 :-
    set_tree234.intersect_list(Sets_3, Intersect_4).
set_tree234.intersect_list(list.[], set_tree234.empty).
set_tree234.intersect_list(list.[Set_3 | Sets_4], Intersect_5) :-
    Intersect_5 = set_tree234.intersect_list_2(Set_3, Sets_4).
set_tree234.difference(SetA_4, SetB_5) = Diff_6 :-
    set_tree234.difference(SetA_4, SetB_5, Diff_6).
set_tree234.difference(SetA_4, SetB_5, Diff_6) :-
    set_tree234.difference_2(SetB_5, SetA_4, Diff_6).
set_tree234.map(Func_4, SetA_5) = SetB_6 :-
    V_8 = list.[] : list.list(T2_2),
    set_tree234.map_func(Func_4, SetA_5, V_8, ListB_7),
    SetB_6 = set_tree234.list_to_set(ListB_7).
set_tree234.map(Pred_4, SetA_5, SetB_6) :-
    V_8 = list.[] : list.list(T2_2),
    set_tree234.map_pred(Pred_4, SetA_5, V_8, ListB_7),
    SetB_6 = set_tree234.list_to_set(ListB_7).
set_tree234.filter_map(Pred_4, SetA_5, SetB_6) :-
    V_8 = list.[] : list.list(T2_2),
    set_tree234.filter_map_pred(Pred_4, SetA_5, V_8, ListB_7),
    SetB_6 = set_tree234.list_to_set(ListB_7).
set_tree234.filter_map(Func_4, SetA_5) = SetB_6 :-
    V_8 = list.[] : list.list(T2_2),
    set_tree234.filter_map_func(Func_4, SetA_5, V_8, ListB_7),
    SetB_6 = set_tree234.list_to_set(ListB_7).
set_tree234.fold(Func_5, Tree_6, A0_7) = HeadVar__4_4 :-
    HeadVar__4_4 = set_tree234.foldl(Func_5, Tree_6, A0_7).
set_tree234.fold(Pred_5, Tree_6, STATE_VARIABLE_A_0_8, STATE_VARIABLE_A_9) :-
    set_tree234.foldl(Pred_5, Tree_6, STATE_VARIABLE_A_0_8, STATE_VARIABLE_A_9).
set_tree234.fold2(Pred_7, Tree_8, STATE_VARIABLE_A_0_11, STATE_VARIABLE_A_12, STATE_VARIABLE_B_0_13, STATE_VARIABLE_B_14) :-
    set_tree234.foldl2(Pred_7, Tree_8, STATE_VARIABLE_A_0_11, STATE_VARIABLE_A_12, STATE_VARIABLE_B_0_13, STATE_VARIABLE_B_14).
set_tree234.fold3(Pred_9, Tree_10, STATE_VARIABLE_A_0_14, STATE_VARIABLE_A_15, STATE_VARIABLE_B_0_16, STATE_VARIABLE_B_17, STATE_VARIABLE_C_0_18, STATE_VARIABLE_C_19) :-
    set_tree234.foldl3(Pred_9, Tree_10, STATE_VARIABLE_A_0_14, STATE_VARIABLE_A_15, STATE_VARIABLE_B_0_16, STATE_VARIABLE_B_17, STATE_VARIABLE_C_0_18, STATE_VARIABLE_C_19).
set_tree234.fold4(Pred_11, Tree_12, STATE_VARIABLE_A_0_17, STATE_VARIABLE_A_18, STATE_VARIABLE_B_0_19, STATE_VARIABLE_B_20, STATE_VARIABLE_C_0_21, STATE_VARIABLE_C_22, STATE_VARIABLE_D_0_23, STATE_VARIABLE_D_24) :-
    set_tree234.foldl4(Pred_11, Tree_12, STATE_VARIABLE_A_0_17, STATE_VARIABLE_A_18, STATE_VARIABLE_B_0_19, STATE_VARIABLE_B_20, STATE_VARIABLE_C_0_21, STATE_VARIABLE_C_22, STATE_VARIABLE_D_0_23, STATE_VARIABLE_D_24).
set_tree234.fold5(Pred_13, Tree_14, STATE_VARIABLE_A_0_20, STATE_VARIABLE_A_21, STATE_VARIABLE_B_0_22, STATE_VARIABLE_B_23, STATE_VARIABLE_C_0_24, STATE_VARIABLE_C_25, STATE_VARIABLE_D_0_26, STATE_VARIABLE_D_27, STATE_VARIABLE_E_0_28, STATE_VARIABLE_E_29) :-
    set_tree234.foldl5(Pred_13, Tree_14, STATE_VARIABLE_A_0_20, STATE_VARIABLE_A_21, STATE_VARIABLE_B_0_22, STATE_VARIABLE_B_23, STATE_VARIABLE_C_0_24, STATE_VARIABLE_C_25, STATE_VARIABLE_D_0_26, STATE_VARIABLE_D_27, STATE_VARIABLE_E_0_28, STATE_VARIABLE_E_29).
set_tree234.fold6(Pred_15, Tree_16, STATE_VARIABLE_A_0_23, STATE_VARIABLE_A_24, STATE_VARIABLE_B_0_25, STATE_VARIABLE_B_26, STATE_VARIABLE_C_0_27, STATE_VARIABLE_C_28, STATE_VARIABLE_D_0_29, STATE_VARIABLE_D_30, STATE_VARIABLE_E_0_31, STATE_VARIABLE_E_32, STATE_VARIABLE_F_0_33, STATE_VARIABLE_F_34) :-
    set_tree234.foldl6(Pred_15, Tree_16, STATE_VARIABLE_A_0_23, STATE_VARIABLE_A_24, STATE_VARIABLE_B_0_25, STATE_VARIABLE_B_26, STATE_VARIABLE_C_0_27, STATE_VARIABLE_C_28, STATE_VARIABLE_D_0_29, STATE_VARIABLE_D_30, STATE_VARIABLE_E_0_31, STATE_VARIABLE_E_32, STATE_VARIABLE_F_0_33, STATE_VARIABLE_F_34).
set_tree234.all_true(Pred_3, T_4) :-
    ( % disjunction
      T_4 = set_tree234.empty : set_tree234.set_tree234(T_1)
    ;
      T_4 = set_tree234.two(E0_5, T0_6, T1_7) : set_tree234.set_tree234(T_1),
      set_tree234.all_true(Pred_3, T0_6),
      call(Pred_3, E0_5),
      set_tree234.all_true(Pred_3, T1_7)
    ;
      T_4 = set_tree234.three(E0_12, E1_8, T0_13, T1_14, T2_9) : set_tree234.set_tree234(T_1),
      set_tree234.all_true(Pred_3, T0_13),
      call(Pred_3, E0_12),
      set_tree234.all_true(Pred_3, T1_14),
      call(Pred_3, E1_8),
      set_tree234.all_true(Pred_3, T2_9)
    ;
      T_4 = set_tree234.four(E0_15, E1_18, E2_10, T0_16, T1_17, T2_19, T3_11) : set_tree234.set_tree234(T_1),
      set_tree234.all_true(Pred_3, T0_16),
      call(Pred_3, E0_15),
      set_tree234.all_true(Pred_3, T1_17),
      call(Pred_3, E1_18),
      set_tree234.all_true(Pred_3, T2_19),
      call(Pred_3, E2_10),
      set_tree234.all_true(Pred_3, T3_11)
    ).
set_tree234.filter(Pred_4, Set_5) = TrueSet_6 :-
    set_tree234.divide(Pred_4, Set_5, TrueSet_6, _FalseSet_7).
set_tree234.filter(Pred_4, Set_5, TrueSet_6) :-
    set_tree234.divide(Pred_4, Set_5, TrueSet_6, _FalseSet_7).
set_tree234.filter(Pred_5, Set_6, TrueSet_7, FalseSet_8) :-
    set_tree234.divide(Pred_5, Set_6, TrueSet_7, FalseSet_8).
set_tree234.divide(Pred_5, Set_6, TrueSet_7, FalseSet_8) :-
    V_9 = set_tree234.empty : set_tree234.set_tree234(T_1),
    V_10 = set_tree234.empty : set_tree234.set_tree234(T_1),
    set_tree234.divide_2(Pred_5, Set_6, V_9, TrueSet_7, V_10, FalseSet_8).
set_tree234.divide_by_set(DivideBySet_5, Set_6, TrueSet_7, FalseSet_8) :-
    V_9 = set_tree234.contains(DivideBySet_5) : (pred T_1),
    set_tree234.divide(V_9, Set_6, TrueSet_7, FalseSet_8).
:- pragma exceptions(function, (set_tree234.init), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (set_tree234.singleton_set), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (set_tree234.singleton_set), 2, 1, will_not_throw).
:- pragma exceptions(function, (set_tree234.make_singleton_set), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (set_tree234.is_singleton), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (set_tree234.empty), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (set_tree234.is_empty), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (set_tree234.non_empty), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (set_tree234.is_non_empty), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (set_tree234.member), 2, 0, conditional).
:- pragma exceptions(predicate, (set_tree234.member), 2, 1, will_not_throw).
:- pragma exceptions(function, (set_tree234.is_member), 3, 0, conditional).
:- pragma exceptions(predicate, (set_tree234.is_member), 3, 0, conditional).
:- pragma exceptions(predicate, (set_tree234.contains), 2, 0, conditional).
:- pragma exceptions(function, (set_tree234.list_to_set), 2, 0, conditional).
:- pragma exceptions(predicate, (set_tree234.list_to_set), 2, 0, conditional).
:- pragma exceptions(function, (set_tree234.from_list), 2, 0, conditional).
:- pragma exceptions(predicate, (set_tree234.from_list), 2, 0, conditional).
:- pragma exceptions(function, (set_tree234.sorted_list_to_set), 2, 0, conditional).
:- pragma exceptions(predicate, (set_tree234.sorted_list_to_set), 2, 0, conditional).
:- pragma exceptions(function, (set_tree234.from_set), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (set_tree234.to_sorted_list), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (set_tree234.to_sorted_list), 2, 0, will_not_throw).
:- pragma exceptions(function, (set_tree234.to_set), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.equal), 2, 0, conditional).
:- pragma exceptions(predicate, (set_tree234.subset), 2, 0, conditional).
:- pragma exceptions(predicate, (set_tree234.superset), 2, 0, conditional).
:- pragma exceptions(function, (set_tree234.insert), 3, 0, conditional).
:- pragma exceptions(predicate, (set_tree234.insert), 3, 0, conditional).
:- pragma exceptions(predicate, (set_tree234.insert_new), 3, 0, conditional).
:- pragma exceptions(function, (set_tree234.insert_list), 3, 0, conditional).
:- pragma exceptions(predicate, (set_tree234.insert_list), 3, 0, conditional).
:- pragma exceptions(function, (set_tree234.delete), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.delete), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (set_tree234.delete_list), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.delete_list), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.remove), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.remove_list), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.remove_least), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (set_tree234.union), 3, 0, conditional).
:- pragma exceptions(predicate, (set_tree234.union), 3, 0, conditional).
:- pragma exceptions(function, (set_tree234.union_list), 2, 0, conditional).
:- pragma exceptions(predicate, (set_tree234.union_list), 2, 0, conditional).
:- pragma exceptions(function, (set_tree234.power_union), 2, 0, conditional).
:- pragma exceptions(predicate, (set_tree234.power_union), 2, 0, conditional).
:- pragma exceptions(function, (set_tree234.intersect), 3, 0, conditional).
:- pragma exceptions(predicate, (set_tree234.intersect), 3, 0, conditional).
:- pragma exceptions(function, (set_tree234.power_intersect), 2, 0, conditional).
:- pragma exceptions(predicate, (set_tree234.power_intersect), 2, 0, conditional).
:- pragma exceptions(function, (set_tree234.intersect_list), 2, 0, conditional).
:- pragma exceptions(predicate, (set_tree234.intersect_list), 2, 0, conditional).
:- pragma exceptions(function, (set_tree234.difference), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.difference), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (set_tree234.count), 2, 0, will_not_throw).
:- pragma exceptions(function, (set_tree234.map), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.map), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.filter_map), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (set_tree234.filter_map), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (set_tree234.fold), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold), 4, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold), 4, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold), 4, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold), 4, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold), 4, 5, may_throw(user_exception)).
:- pragma exceptions(function, (set_tree234.foldl), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl), 4, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl), 4, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl), 4, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl), 4, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl), 4, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold2), 6, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold2), 6, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold2), 6, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold2), 6, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold2), 6, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold2), 6, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl2), 6, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl2), 6, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl2), 6, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl2), 6, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl2), 6, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl2), 6, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold3), 8, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold3), 8, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold3), 8, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold3), 8, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold3), 8, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold3), 8, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl3), 8, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl3), 8, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl3), 8, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl3), 8, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl3), 8, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl3), 8, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold4), 10, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold4), 10, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold4), 10, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold4), 10, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold4), 10, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold4), 10, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl4), 10, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl4), 10, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl4), 10, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl4), 10, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl4), 10, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl4), 10, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold5), 12, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold5), 12, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold5), 12, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold5), 12, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold5), 12, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold5), 12, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl5), 12, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl5), 12, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl5), 12, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl5), 12, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl5), 12, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl5), 12, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold6), 14, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold6), 14, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold6), 14, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold6), 14, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold6), 14, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.fold6), 14, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl6), 14, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl6), 14, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl6), 14, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl6), 14, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl6), 14, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.foldl6), 14, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.all_true), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (set_tree234.filter), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.filter), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.filter), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.divide), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.divide_by_set), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.list_to_set_2), 3, 0, conditional).
:- pragma exceptions(predicate, (set_tree234.to_sorted_list_2), 3, 0, will_not_throw).
:- pragma exceptions(predicate, (set_tree234.delete_2), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.remove_2), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.remove_least_2), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.power_union_2), 3, 0, conditional).
:- pragma exceptions(function, (set_tree234.intersect_list_2), 3, 0, conditional).
:- pragma exceptions(predicate, (set_tree234.difference_2), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.map_pred), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.map_func), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.filter_map_pred), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.filter_map_func), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (set_tree234.divide_2), 6, 0, may_throw(user_exception)).
:- pragma termination_info((set_tree234.init) = (builtin.out), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(set_tree234.singleton_set((builtin.in), (builtin.out)), finite(3, [no, yes, no]), cannot_loop).
:- pragma termination_info(set_tree234.singleton_set((builtin.out), (builtin.in)), finite(-3, [no, no, yes]), cannot_loop).
:- pragma termination_info(set_tree234.make_singleton_set((builtin.in)) = (builtin.out), finite(3, [no, yes, no]), cannot_loop).
:- pragma termination_info(set_tree234.is_singleton((builtin.in), (builtin.out)), finite(-3, [no, yes, no]), cannot_loop).
:- pragma termination_info(set_tree234.empty((builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(set_tree234.is_empty((builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(set_tree234.non_empty((builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(set_tree234.is_non_empty((builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(set_tree234.member((builtin.in), (builtin.in)), finite(0, [no, no, no]), cannot_loop).
:- pragma termination_info(set_tree234.member((builtin.out), (builtin.in)), finite(-3, [no, no, yes]), cannot_loop).
:- pragma termination_info(set_tree234.is_member((builtin.in), (builtin.in)) = (builtin.out), finite(0, [no, no, no, no]), cannot_loop).
:- pragma termination_info(set_tree234.is_member((builtin.in), (builtin.in), (builtin.out)), finite(0, [no, no, no, no]), cannot_loop).
:- pragma termination_info(set_tree234.contains((builtin.in), (builtin.in)), finite(0, [no, no, no]), cannot_loop).
:- pragma termination_info(set_tree234.list_to_set((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(set_tree234.list_to_set((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.from_list((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(set_tree234.from_list((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.sorted_list_to_set((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(set_tree234.sorted_list_to_set((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.from_set((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(set_tree234.to_sorted_list((builtin.in)) = (builtin.out), finite(0, [no, yes, no]), cannot_loop).
:- pragma termination_info(set_tree234.to_sorted_list((builtin.in), (builtin.out)), finite(0, [no, yes, no]), cannot_loop).
:- pragma termination_info(set_tree234.to_set((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(set_tree234.equal((builtin.in), (builtin.in)), finite(0, [no, no, no]), cannot_loop).
:- pragma termination_info(set_tree234.subset((builtin.in), (builtin.in)), finite(0, [no, no, no]), cannot_loop).
:- pragma termination_info(set_tree234.superset((builtin.in), (builtin.in)), finite(0, [no, no, no]), cannot_loop).
:- pragma termination_info(set_tree234.insert((builtin.in), (builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(set_tree234.insert((builtin.in), (builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(set_tree234.insert_new((builtin.in), (builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(set_tree234.insert_list((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(set_tree234.insert_list((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.delete((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(set_tree234.delete((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.delete_list((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(set_tree234.delete_list((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.remove((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.remove_list((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.remove_least((builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.union((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(set_tree234.union((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.union_list((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(set_tree234.union_list((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.power_union((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(set_tree234.power_union((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.intersect((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(set_tree234.intersect((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.power_intersect((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(set_tree234.power_intersect((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.intersect_list((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(set_tree234.intersect_list((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.difference((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(set_tree234.difference((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.count((builtin.in)) = (builtin.out), finite(0, [no, no, no]), cannot_loop).
:- pragma termination_info(set_tree234.map((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(set_tree234.map(builtin.in((pred((builtin.in), (builtin.out)) is det)), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.filter_map(builtin.in((pred((builtin.in), (builtin.out)) is semidet)), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.filter_map((func((builtin.in)) = (builtin.out) is semidet), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(set_tree234.fold((builtin.in), (builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(set_tree234.fold((pred((builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.fold((pred((builtin.in), (builtin.mdi), (builtin.muo)) is det), (builtin.in), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(set_tree234.fold((pred((builtin.in), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(set_tree234.fold((pred((builtin.in), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.fold((pred((builtin.in), (builtin.mdi), (builtin.muo)) is semidet), (builtin.in), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(set_tree234.fold((pred((builtin.in), (builtin.di), (builtin.uo)) is semidet), (builtin.in), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(set_tree234.foldl((builtin.in), (builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(set_tree234.foldl((pred((builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.foldl((pred((builtin.in), (builtin.mdi), (builtin.muo)) is det), (builtin.in), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(set_tree234.foldl((pred((builtin.in), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(set_tree234.foldl((pred((builtin.in), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.foldl((pred((builtin.in), (builtin.mdi), (builtin.muo)) is semidet), (builtin.in), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(set_tree234.foldl((pred((builtin.in), (builtin.di), (builtin.uo)) is semidet), (builtin.in), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(set_tree234.fold2((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(set_tree234.fold2((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(set_tree234.fold2((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(set_tree234.fold2((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(set_tree234.fold2((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(set_tree234.fold2((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(set_tree234.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(set_tree234.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(set_tree234.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(set_tree234.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(set_tree234.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(set_tree234.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(set_tree234.fold3((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(set_tree234.fold3((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(set_tree234.fold3((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(set_tree234.fold3((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(set_tree234.fold3((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(set_tree234.fold3((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(set_tree234.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(set_tree234.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(set_tree234.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(set_tree234.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(set_tree234.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(set_tree234.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(set_tree234.fold4((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(set_tree234.fold4((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(set_tree234.fold4((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(set_tree234.fold4((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(set_tree234.fold4((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(set_tree234.fold4((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(set_tree234.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(set_tree234.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(set_tree234.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(set_tree234.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(set_tree234.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(set_tree234.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(set_tree234.fold5((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(set_tree234.fold5((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(set_tree234.fold5((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(set_tree234.fold5((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(set_tree234.fold5((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(set_tree234.fold5((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(set_tree234.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(set_tree234.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(set_tree234.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(set_tree234.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(set_tree234.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(set_tree234.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(set_tree234.fold6((pred((builtin.in), (builtin.in), (builtin.out), (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), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.fold6((pred((builtin.in), (builtin.in), (builtin.out), (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.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(set_tree234.fold6((pred((builtin.in), (builtin.in), (builtin.out), (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.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(set_tree234.fold6((pred((builtin.in), (builtin.in), (builtin.out), (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), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.fold6((pred((builtin.in), (builtin.in), (builtin.out), (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.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(set_tree234.fold6((pred((builtin.in), (builtin.in), (builtin.out), (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.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(set_tree234.foldl6((pred((builtin.in), (builtin.in), (builtin.out), (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), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.foldl6((pred((builtin.in), (builtin.in), (builtin.out), (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.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(set_tree234.foldl6((pred((builtin.in), (builtin.in), (builtin.out), (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.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(set_tree234.foldl6((pred((builtin.in), (builtin.in), (builtin.out), (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), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.foldl6((pred((builtin.in), (builtin.in), (builtin.out), (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.in), (builtin.out), (builtin.mdi), (builtin.muo)), infinite, can_loop).
:- pragma termination_info(set_tree234.foldl6((pred((builtin.in), (builtin.in), (builtin.out), (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.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(set_tree234.all_true(builtin.in((pred((builtin.in)) is semidet)), (builtin.in)), infinite, can_loop).
:- pragma termination_info(set_tree234.filter(builtin.in((pred((builtin.in)) is semidet)), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(set_tree234.filter(builtin.in((pred((builtin.in)) is semidet)), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.filter(builtin.in((pred((builtin.in)) is semidet)), (builtin.in), (builtin.out), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.divide(builtin.in((pred((builtin.in)) is semidet)), (builtin.in), (builtin.out), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.divide_by_set((builtin.in), (builtin.in), (builtin.out), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.list_to_set_2((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.to_sorted_list_2((builtin.in), (builtin.in), (builtin.out)), finite(0, [no, yes, yes, no]), cannot_loop).
:- pragma termination_info(set_tree234.delete_2((builtin.in), (builtin.in), (builtin.out), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.remove_2((builtin.in), (builtin.in), (builtin.out), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.remove_least_2((builtin.in), (builtin.out), (builtin.out), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.power_union_2((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.intersect_list_2((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(set_tree234.difference_2((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.map_pred(builtin.in((pred((builtin.in), (builtin.out)) is det)), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.map_func(builtin.in((func((builtin.in)) = (builtin.out) is det)), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.filter_map_pred(builtin.in((pred((builtin.in), (builtin.out)) is semidet)), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.filter_map_func(builtin.in((func((builtin.in)) = (builtin.out) is semidet)), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(set_tree234.divide_2(builtin.in((pred((builtin.in)) is semidet)), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
