:- module std_util. :- use_module bool, builtin, construct, deconstruct, int, list, private_builtin, require, set, string, type_desc. :- type (std_util:univ) ---> some [T] (univ_cons(T)) . :- type (std_util:trail_ptr) ---> trail_ptr((builtin:c_pointer)) . :- type (std_util:mutvar(T)) ---> mutvar((builtin:c_pointer)) . :- type (std_util:heap_ptr) == (private_builtin:heap_pointer). :- pragma foreign_import_module("C", std_util). :- pred std_util:builtin_aggregate((pred T_1), pred(T_1, U_2, U_2), U_2, U_2). :- mode std_util:builtin_aggregate((pred((builtin:out)) is multi), (pred((builtin:in), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:out)) is det. :- mode std_util:builtin_aggregate((pred((builtin:out)) is multi), (pred((builtin:in), (builtin:di), (builtin:uo)) is det), (builtin:di), (builtin:uo)) is det. :- mode std_util:builtin_aggregate((pred((builtin:out)) is multi), (pred((builtin:in), (builtin:di), (builtin:uo)) is cc_multi), (builtin:di), (builtin:uo)) is det. :- mode std_util:builtin_aggregate((pred((builtin:muo)) is multi), (pred((builtin:mdi), (builtin:di), (builtin:uo)) is det), (builtin:di), (builtin:uo)) is det. :- mode std_util:builtin_aggregate((pred((builtin:out)) is nondet), (pred((builtin:in), (builtin:di), (builtin:uo)) is det), (builtin:di), (builtin:uo)) is det. :- mode std_util:builtin_aggregate((pred((builtin:out)) is nondet), (pred((builtin:in), (builtin:di), (builtin:uo)) is cc_multi), (builtin:di), (builtin:uo)) is det. :- mode std_util:builtin_aggregate((pred((builtin:out)) is nondet), (pred((builtin:in), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:out)) is det. :- mode std_util:builtin_aggregate((pred((builtin:muo)) is nondet), (pred((builtin:mdi), (builtin:di), (builtin:uo)) is det), (builtin:di), (builtin:uo)) is det. :- pragma promise_pure((std_util:builtin_aggregate)/4). :- pred std_util:builtin_solutions((pred T_1), (list:list(T_1))). :- mode std_util:builtin_solutions((pred((builtin:out)) is multi), (builtin:out)) is det. :- mode std_util:builtin_solutions((pred((builtin:out)) is nondet), (builtin:out)) is det. :- pred std_util:cons(T_1, (list:list(T_1)), (list:list(T_1))). :- mode std_util:cons((builtin:in), (builtin:in), (builtin:out)) is det. std_util:univ_to_type(Univ_3, X_4) :- std_util:type_to_univ(X_4, Univ_3). std_util:univ(X_3) = Univ_4 :- std_util:type_to_univ(X_3, Univ_4). std_util:univ_type(Univ_3) = HeadVar__2_2 :- HeadVar__2_2 = type_desc:type_of(V_4), V_4 = std_util:univ_value(Univ_3). std_util:univ_value((std_util:univ_cons(X_3))) = X_3. std_util:map_maybe(V_4, (std_util:no), (std_util:no)). std_util:map_maybe(P_5, (std_util:yes(T0_6)), (std_util:yes(T_7))) :- call(P_5, T0_6, T_7). std_util:map_maybe(V_4, (std_util:no)) = (std_util:no). std_util:map_maybe(F_5, (std_util:yes(T_6))) = (std_util:yes(V_7)) :- V_7 = apply(F_5, T_6). std_util:fold_maybe(P_5, (std_util:yes(Value_6)), Acc0_7, Acc_8) :- call(P_5, Value_6, Acc0_7, Acc_8). std_util:fold_maybe(V_9, (std_util:no), Acc_10, Acc_10). std_util:fold_maybe(F_5, (std_util:yes(Value_6)), Acc0_7) = HeadVar__4_4 :- HeadVar__4_4 = apply(F_5, Value_6, Acc0_7). std_util:fold_maybe(V_8, (std_util:no), Acc_9) = Acc_9. std_util:map_fold_maybe(V_6, (std_util:no), (std_util:no), Acc_7, Acc_7). std_util:map_fold_maybe(P_8, (std_util:yes(T0_9)), (std_util:yes(T_10)), Acc0_11, Acc_12) :- call(P_8, T0_9, T_10, Acc0_11, Acc_12). std_util:map_fold2_maybe(V_8, (std_util:no), (std_util:no), A_9, A_9, B_10, B_10). std_util:map_fold2_maybe(P_11, (std_util:yes(T0_12)), (std_util:yes(T_13)), A0_14, A_15, B0_16, B_17) :- call(P_11, T0_12, T_13, A0_14, A_15, B0_16, B_17). std_util:fst(P_3, X_4) :- X_4 = std_util:fst(P_3). std_util:fst((std_util:(X_3 - _Y_4))) = X_3. std_util:snd(P_3, X_4) :- X_4 = std_util:snd(P_3). std_util:snd((std_util:(_X_3 - Y_4))) = Y_4. std_util:pair(X_4, Y_5) = (std_util:(X_4 - Y_5)). std_util:solutions(Pred_3, List_4) :- std_util:builtin_solutions(Pred_3, UnsortedList_5), list:sort_and_remove_dups(UnsortedList_5, List_4). std_util:solutions(P_3) = S_4 :- std_util:solutions(P_3, S_4). std_util:solutions_set(Pred_3, Set_4) :- std_util:builtin_solutions(Pred_3, List_5), set:list_to_set(List_5, Set_4). std_util:solutions_set(P_3) = S_4 :- std_util:solutions_set(P_3, S_4). std_util:unsorted_solutions(Pred_3, List_4) :- std_util:builtin_solutions(Pred_3, UnsortedList_5), std_util:cc_multi_equal(UnsortedList_5, List_4). std_util:aggregate(P_5, F_6, Acc0_7) = Acc_8 :- V_12 = (pred(V_15::(builtin:in), V_14::(builtin:in), V_13::(builtin:out)) is det :- some [] ( V_15 = X_16, V_14 = A0_17, V_13 = A_18, A_18 = apply(F_6, X_16, A0_17) ) ), std_util:aggregate(P_5, V_12, Acc0_7, Acc_8). std_util:aggregate(Generator_5, Accumulator_6, Acc0_7, Acc_8) :- std_util:solutions(Generator_5, Solutions_9), list:foldl(Accumulator_6, Solutions_9, Acc0_7, Acc_8). std_util:aggregate2(Generator_7, Accumulator_8, Acc0_9, Acc_10, DCG_0_12, DCG_1_13) :- std_util:solutions(Generator_7, Solutions_11), list:foldl2(Accumulator_8, Solutions_11, Acc0_9, Acc_10, DCG_0_12, DCG_1_13). std_util:unsorted_aggregate(Generator_5, Accumulator_6, Acc0_7, Acc_8) :- std_util:builtin_aggregate(Generator_5, Accumulator_6, Acc0_7, Acc1_9), std_util:cc_multi_equal(Acc1_9, Acc_8). std_util:compose(F_5, G_6, X_7) = HeadVar__4_4 :- HeadVar__4_4 = apply(F_5, V_8), V_8 = apply(G_6, X_7). std_util:converse(F_5, X_6, Y_7) = HeadVar__4_4 :- HeadVar__4_4 = apply(F_5, Y_7, X_6). std_util:pow(F_5, N_6, X_7) = HeadVar__4_4 :- (if N_6 = 0 then HeadVar__4_4 = X_7 else HeadVar__4_4 = std_util:pow(F_5, V_8, V_9), V_8 = int:(N_6 - V_10), V_10 = 1, V_9 = apply(F_5, X_7) ). std_util:id(X_3) = X_3. std_util:maybe_pred(Pred_4, X_5, Y_6) :- (if call(Pred_4, X_5, Z_7) then Y_6 = std_util:yes(Z_7) else Y_6 = std_util:no ). std_util:maybe_func(PF_4, X_5) = HeadVar__3_3 :- (if Y_6 = apply(PF_4, X_5) then HeadVar__3_3 = std_util:yes(Y_6) else HeadVar__3_3 = std_util:no ). std_util:isnt(P_3, X_4) :- \+ ( call(P_3, X_4) ). :- pragma foreign_proc("C", std_util:semidet_succeed, [will_not_call_mercury, thread_safe, not_tabled_for_io, promise_pure], "SUCCESS_INDICATOR = MR_TRUE;"). :- pragma foreign_proc("C", std_util:semidet_fail, [will_not_call_mercury, thread_safe, not_tabled_for_io, promise_pure], "SUCCESS_INDICATOR = MR_FALSE;"). :- pragma promise_pure((std_util:cc_multi_equal)/2). :- pragma foreign_proc("C", std_util:cc_multi_equal(X :: (builtin:di), Y :: (builtin:uo)), [will_not_call_mercury, thread_safe, not_tabled_for_io, promise_pure], "Y = X;"). :- pragma foreign_proc("C", std_util:cc_multi_equal(X :: (builtin:in), Y :: (builtin:out)), [will_not_call_mercury, thread_safe, not_tabled_for_io, promise_pure], "Y = X;"). std_util:type_of(Value_3) = HeadVar__2_2 :- HeadVar__2_2 = type_desc:type_of(Value_3). std_util:has_type(Arg_3, TypeInfo_4) :- type_desc:has_type(Arg_3, TypeInfo_4). std_util:type_name(Type_3) = HeadVar__2_2 :- HeadVar__2_2 = type_desc:type_name(Type_3). std_util:type_ctor_and_args(TypeDesc_4, TypeCtorDesc_5, ArgTypes_6) :- type_desc:type_ctor_and_args(TypeDesc_4, TypeCtorDesc_5, ArgTypes_6). std_util:type_ctor(TypeInfo_3) = HeadVar__2_2 :- HeadVar__2_2 = type_desc:type_ctor(TypeInfo_3). std_util:type_args(Type_3) = HeadVar__2_2 :- HeadVar__2_2 = type_desc:type_args(Type_3). std_util:type_ctor_name(TypeCtor_3) = HeadVar__2_2 :- HeadVar__2_2 = type_desc:type_ctor_name(TypeCtor_3). std_util:type_ctor_module_name(TypeCtor_3) = HeadVar__2_2 :- HeadVar__2_2 = type_desc:type_ctor_module_name(TypeCtor_3). std_util:type_ctor_arity(TypeCtor_3) = HeadVar__2_2 :- HeadVar__2_2 = type_desc:type_ctor_arity(TypeCtor_3). std_util:type_ctor_name_and_arity(TypeCtorDesc_5, TypeCtorModuleName_6, TypeCtorName_7, TypeCtorArity_8) :- type_desc:type_ctor_name_and_arity(TypeCtorDesc_5, TypeCtorModuleName_6, TypeCtorName_7, TypeCtorArity_8). std_util:make_type(TypeCtorDesc_4, ArgTypes_5) = HeadVar__3_3 :- HeadVar__3_3 = type_desc:make_type(TypeCtorDesc_4, ArgTypes_5). std_util:det_make_type(TypeCtor_4, ArgTypes_5) = HeadVar__3_3 :- HeadVar__3_3 = type_desc:det_make_type(TypeCtor_4, ArgTypes_5). std_util:num_functors(TypeInfo_3) = HeadVar__2_2 :- HeadVar__2_2 = construct:num_functors(TypeInfo_3). std_util:get_functor(TypeDesc_6, FunctorNumber_7, FunctorName_8, Arity_9, TypeInfoList_10) :- construct:get_functor(TypeDesc_6, FunctorNumber_7, FunctorName_8, Arity_9, TypeInfoList_10). std_util:get_functor(TypeDesc_7, FunctorNumber_8, FunctorName_9, Arity_10, TypeInfoList_11, ArgNameList_12) :- construct:get_functor(TypeDesc_7, FunctorNumber_8, FunctorName_9, Arity_10, TypeInfoList_11, ArgNameList_12). std_util:get_functor_ordinal(TypeDesc_4, FunctorNumber_5, Ordinal_6) :- construct:get_functor_ordinal(TypeDesc_4, FunctorNumber_5, Ordinal_6). std_util:construct(TypeDesc_5, FunctorNumber_6, ArgList_7) = HeadVar__4_4 :- HeadVar__4_4 = construct:construct(TypeDesc_5, FunctorNumber_6, ArgList_7). std_util:construct_tuple(Args_3) = HeadVar__2_2 :- HeadVar__2_2 = construct:construct_tuple(Args_3). std_util:functor(Term_4, Functor_5, Arity_6) :- V_7 = deconstruct:canonicalize, deconstruct:functor(Term_4, V_7, Functor_5, Arity_6). std_util:functor_cc(Term_4, Functor_5, Arity_6) :- V_7 = deconstruct:include_details_cc, deconstruct:functor(Term_4, V_7, Functor_5, Arity_6). std_util:arg(Term_4, Index_5) = Argument_6 :- V_8 = deconstruct:canonicalize, deconstruct:arg(Term_4, V_8, Index_5, Argument0_7), private_builtin:typed_unify(Argument0_7, Argument_6). std_util:argument(Term_4, Index_5) = ArgumentUniv_6 :- V_8 = deconstruct:canonicalize, deconstruct:arg(Term_4, V_8, Index_5, Argument_7), std_util:type_to_univ(Argument_7, ArgumentUniv_6). std_util:argument_cc(Term_4, Index_5, ArgumentUniv_6) :- V_8 = deconstruct:include_details_cc, deconstruct:arg(Term_4, V_8, Index_5, Argument_7), std_util:type_to_univ(Argument_7, ArgumentUniv_6). std_util:named_argument(Term_4, Name_5) = ArgumentUniv_6 :- V_8 = deconstruct:canonicalize, deconstruct:named_arg(Term_4, V_8, Name_5, Argument_7), std_util:type_to_univ(Argument_7, ArgumentUniv_6). std_util:named_argument_cc(Term_4, Name_5, ArgumentUniv_6) :- V_8 = deconstruct:include_details_cc, deconstruct:named_arg(Term_4, V_8, Name_5, Argument_7), std_util:type_to_univ(Argument_7, ArgumentUniv_6). std_util:det_argument(Type_4, Index_5) = ArgumentUniv_6 :- V_8 = deconstruct:canonicalize, deconstruct:det_arg(Type_4, V_8, Index_5, Argument_7), std_util:type_to_univ(Argument_7, ArgumentUniv_6). std_util:det_argument_cc(Type_4, Index_5, ArgumentUniv_6) :- V_8 = deconstruct:include_details_cc, deconstruct:det_arg(Type_4, V_8, Index_5, Argument_7), std_util:type_to_univ(Argument_7, ArgumentUniv_6). std_util:det_named_argument(Type_4, Name_5) = ArgumentUniv_6 :- V_8 = deconstruct:canonicalize, deconstruct:det_named_arg(Type_4, V_8, Name_5, Argument_7), std_util:type_to_univ(Argument_7, ArgumentUniv_6). std_util:det_named_argument_cc(Type_4, Name_5, ArgumentUniv_6) :- V_8 = deconstruct:include_details_cc, deconstruct:det_named_arg(Type_4, V_8, Name_5, Argument_7), std_util:type_to_univ(Argument_7, ArgumentUniv_6). std_util:deconstruct(Term_5, Functor_6, Arity_7, Arguments_8) :- V_9 = deconstruct:canonicalize, deconstruct:deconstruct(Term_5, V_9, Functor_6, Arity_7, Arguments_8). std_util:deconstruct_cc(Term_5, Functor_6, Arity_7, Arguments_8) :- V_9 = deconstruct:include_details_cc, deconstruct:deconstruct(Term_5, V_9, Functor_6, Arity_7, Arguments_8). std_util:limited_deconstruct(Term_6, MaxArity_7, Functor_8, Arity_9, Arguments_10) :- V_11 = deconstruct:canonicalize, deconstruct:limited_deconstruct(Term_6, V_11, MaxArity_7, Functor_8, Arity_9, Arguments_10). std_util:limited_deconstruct_cc(Term_6, MaxArity_7, Functor_8, Arity_9, Arguments_10) :- V_11 = deconstruct:include_details_cc, deconstruct:limited_deconstruct(Term_6, V_11, MaxArity_7, Functor_8, Arity_9, Arguments_10). std_util:dynamic_cast(X_3, Y_4) :- V_5 = std_util:univ(X_3), std_util:univ_to_type(V_5, Y_4). std_util:builtin_solutions(Generator_3, UnsortedList_4) :- V_5 = std_util:cons, V_6 = list:[], std_util:builtin_aggregate(Generator_3, V_5, V_6, UnsortedList_4). std_util:cons(H_4, T_5, (list:[H_4 | T_5])). :- pragma termination_info(std_util:type_to_univ((builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(std_util:type_to_univ((builtin:in), (builtin:out)), infinite, cannot_loop). :- pragma termination_info(std_util:type_to_univ((builtin:out), (builtin:in)), infinite, can_loop). :- pragma termination_info(std_util:univ_to_type((builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:univ_to_type((builtin:out), (builtin:in)), infinite, cannot_loop). :- pragma termination_info(std_util:univ_to_type((builtin:uo), (builtin:di)), infinite, cannot_loop). :- pragma termination_info(std_util:univ((builtin:in)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(std_util:univ((builtin:di)) = (builtin:uo), infinite, cannot_loop). :- pragma termination_info(std_util:univ((builtin:out)) = (builtin:in), infinite, can_loop). :- pragma termination_info(std_util:det_univ_to_type((builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:univ_type((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:univ_value((builtin:in)) = (builtin:out), finite(-1, [no, yes, no]), cannot_loop). :- pragma termination_info(std_util:map_maybe((pred((builtin:in), (builtin:out)) is det), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:map_maybe((pred((builtin:in), (builtin:out)) is semidet), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:map_maybe((pred((builtin:in), (builtin:out)) is multi), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:map_maybe((pred((builtin:in), (builtin:out)) is nondet), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:map_maybe((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:fold_maybe((pred((builtin:in), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:fold_maybe((pred((builtin:in), (builtin:in), (builtin:out)) is semidet), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:fold_maybe((pred((builtin:in), (builtin:di), (builtin:uo)) is det), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(std_util:fold_maybe((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:map_fold_maybe((pred((builtin:in), (builtin:out), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:out), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:map_fold_maybe((pred((builtin:in), (builtin:out), (builtin:di), (builtin:uo)) is det), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(std_util:map_fold2_maybe((pred((builtin:in), (builtin:out), (builtin:in), (builtin:out), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:out), (builtin:in), (builtin:out), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:map_fold2_maybe((pred((builtin:in), (builtin:out), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)) is det), (builtin:in), (builtin:out), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(std_util:fst((builtin:in), (builtin:out)), finite(-2, [no, no, yes, no]), cannot_loop). :- pragma termination_info(std_util:fst((builtin:in)) = (builtin:out), finite(-2, [no, no, yes, no]), cannot_loop). :- pragma termination_info(std_util:snd((builtin:in), (builtin:out)), finite(-2, [no, no, yes, no]), cannot_loop). :- pragma termination_info(std_util:snd((builtin:in)) = (builtin:out), finite(-2, [no, no, yes, no]), cannot_loop). :- pragma termination_info(std_util:pair((builtin:in), (builtin:in)) = (builtin:out), finite(2, [no, no, yes, yes, no]), cannot_loop). :- pragma termination_info(std_util:solutions((pred((builtin:out)) is multi), builtin:out((list:non_empty_list))), infinite, can_loop). :- pragma termination_info(std_util:solutions((pred((builtin:out)) is nondet), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:solutions((pred((builtin:out)) is multi)) = builtin:out((list:non_empty_list)), infinite, can_loop). :- pragma termination_info(std_util:solutions((pred((builtin:out)) is nondet)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:solutions_set((pred((builtin:out)) is multi), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:solutions_set((pred((builtin:out)) is nondet), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:solutions_set((pred((builtin:out)) is multi)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:solutions_set((pred((builtin:out)) is nondet)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:unsorted_solutions((pred((builtin:out)) is multi), builtin:out((list:non_empty_list))), infinite, can_loop). :- pragma termination_info(std_util:unsorted_solutions((pred((builtin:out)) is nondet), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:aggregate((pred((builtin:out)) is multi), (func((builtin:in), (builtin:in)) = (builtin:out) is det), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:aggregate((pred((builtin:out)) is nondet), (func((builtin:in), (builtin:in)) = (builtin:out) is det), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:aggregate((pred((builtin:out)) is multi), (pred((builtin:in), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:aggregate((pred((builtin:out)) is multi), (pred((builtin:in), (builtin:di), (builtin:uo)) is det), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(std_util:aggregate((pred((builtin:out)) is nondet), (pred((builtin:in), (builtin:di), (builtin:uo)) is det), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(std_util:aggregate((pred((builtin:out)) is nondet), (pred((builtin:in), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:aggregate2((pred((builtin:out)) is multi), (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(std_util:aggregate2((pred((builtin:out)) is multi), (pred((builtin:in), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)) is det), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(std_util:aggregate2((pred((builtin:out)) is nondet), (pred((builtin:in), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)) is det), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(std_util:aggregate2((pred((builtin:out)) is nondet), (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(std_util:unsorted_aggregate((pred((builtin:out)) is multi), (pred((builtin:in), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:unsorted_aggregate((pred((builtin:out)) is multi), (pred((builtin:in), (builtin:di), (builtin:uo)) is det), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(std_util:unsorted_aggregate((pred((builtin:out)) is multi), (pred((builtin:in), (builtin:di), (builtin:uo)) is cc_multi), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(std_util:unsorted_aggregate((pred((builtin:muo)) is multi), (pred((builtin:mdi), (builtin:di), (builtin:uo)) is det), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(std_util:unsorted_aggregate((pred((builtin:out)) is nondet), (pred((builtin:in), (builtin:di), (builtin:uo)) is det), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(std_util:unsorted_aggregate((pred((builtin:out)) is nondet), (pred((builtin:in), (builtin:di), (builtin:uo)) is cc_multi), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(std_util:unsorted_aggregate((pred((builtin:out)) is nondet), (pred((builtin:in), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:unsorted_aggregate((pred((builtin:muo)) is nondet), (pred((builtin:mdi), (builtin:di), (builtin:uo)) is det), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(std_util:do_while((pred((builtin:out)) is multi), (pred((builtin:in), (builtin:out), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:do_while((pred((builtin:out)) is multi), (pred((builtin:in), (builtin:out), (builtin:di), (builtin:uo)) is det), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(std_util:do_while((pred((builtin:out)) is multi), (pred((builtin:in), (builtin:out), (builtin:di), (builtin:uo)) is cc_multi), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(std_util:do_while((pred((builtin:out)) is nondet), (pred((builtin:in), (builtin:out), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:do_while((pred((builtin:out)) is nondet), (pred((builtin:in), (builtin:out), (builtin:di), (builtin:uo)) is det), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(std_util:do_while((pred((builtin:out)) is nondet), (pred((builtin:in), (builtin:out), (builtin:di), (builtin:uo)) is cc_multi), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(std_util:compose((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:converse((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:pow((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:id((builtin:in)) = (builtin:out), finite(0, [no, yes, no]), cannot_loop). :- pragma termination_info(std_util:maybe_pred((pred((builtin:in), (builtin:out)) is semidet), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:maybe_func((func((builtin:in)) = (builtin:out) is semidet), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:isnt((pred((builtin:in)) is semidet), (builtin:in)), infinite, can_loop). :- pragma termination_info((std_util:semidet_succeed), finite(0, []), cannot_loop). :- pragma termination_info((std_util:semidet_fail), finite(0, []), cannot_loop). :- pragma termination_info(std_util:cc_multi_equal((builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(std_util:cc_multi_equal((builtin:in), (builtin:out)), infinite, cannot_loop). :- pragma termination_info(std_util:type_of((builtin:unused)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:has_type((builtin:unused), (builtin:in)), infinite, can_loop). :- pragma termination_info(std_util:type_name((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:type_ctor_and_args((builtin:in), (builtin:out), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:type_ctor((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:type_args((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:type_ctor_name((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:type_ctor_module_name((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:type_ctor_arity((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:type_ctor_name_and_arity((builtin:in), (builtin:out), (builtin:out), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:make_type((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:make_type((builtin:out), (builtin:out)) = (builtin:in), infinite, can_loop). :- pragma termination_info(std_util:det_make_type((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:num_functors((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:get_functor((builtin:in), (builtin:in), (builtin:out), (builtin:out), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:get_functor((builtin:in), (builtin:in), (builtin:out), (builtin:out), (builtin:out), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:get_functor_ordinal((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:construct((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:construct_tuple((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:functor((builtin:in), (builtin:out), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:functor_cc((builtin:in), (builtin:out), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:arg((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:arg_cc((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:argument((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:argument_cc((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:named_argument((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:named_argument_cc((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:det_arg((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:det_arg_cc((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:det_argument((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:det_argument_cc((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:det_named_argument((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(std_util:det_named_argument_cc((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:deconstruct((builtin:in), (builtin:out), (builtin:out), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:deconstruct_cc((builtin:in), (builtin:out), (builtin:out), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:limited_deconstruct((builtin:in), (builtin:in), (builtin:out), (builtin:out), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:limited_deconstruct_cc((builtin:in), (builtin:in), (builtin:out), (builtin:out), (builtin:out)), infinite, can_loop). :- pragma termination_info(std_util:dynamic_cast((builtin:in), (builtin:out)), infinite, can_loop).