:- module term.
:- use_module array, bitmap, builtin, construct, deconstruct, enum, int, list, map, private_builtin, require, string, table_builtin, type_desc, univ, version_array.
:- type term.var_supply(T)
	--->	var_supply(int).
:- type term.var(T)
	--->	var(int).
:- instance (enum.enum(term.var(V_1))).
:- pred term.vars_2_list(list.list(term.term(T_1)), list.list(term.var(T_1)), list.list(term.var(T_1))).
:- mode term.vars_2_list((builtin.in), (builtin.in), (builtin.out)) is det.
:- pred term.is_ground_list(list.list(term.term(T_1))).
:- mode term.is_ground_list((builtin.in)) is semidet.
term.get_term_context(Term_3) = Context_4 :-
    ( % disjunction
      Term_3 = term.functor(V_5, V_6, Context_4) : term.term(T_1)
    ;
      Term_3 = term.variable(V_7, Context_4) : term.term(T_1)
    ).
term.try_term_to_type(T_3) = TTTR_4 :-
    term.try_term_to_type(T_3, TTTR_4).
term.term_to_type(Term_3, Val_4) :-
    V_5 = term.ok(Val_4) : term.term_to_type_result(T_2, U_1),
    term.try_term_to_type(Term_3, V_5).
term.det_term_to_type(T1_3) = T2_4 :-
    term.det_term_to_type(T1_3, T2_4).
term.type_to_term(T1_3) = T2_4 :-
    term.type_to_term(T1_3, T2_4).
term.type_to_term(Val_3, Term_4) :-
    univ.type_to_univ(Val_3, Univ_5),
    term.univ_to_term(Univ_5, Term_4).
term.univ_to_term(U_3) = T_4 :-
    term.univ_to_term(U_3, T_4).
term.vars(T_3) = Vs_4 :-
    term.vars(T_3, Vs_4).
term.vars(Term_3, Vars_4) :-
    V_5 = list.[] : list.list(term.var(T_1)),
    term.vars_2(Term_3, V_5, Vars_4).
term.vars_2(T_4, Vs1_5) = Vs2_6 :-
    term.vars_2(T_4, Vs1_5, Vs2_6).
term.vars_list(Ts_3) = Vs_4 :-
    term.vars_list(Ts_3, Vs_4).
term.vars_list(Terms_3, Vars_4) :-
    V_5 = list.[] : list.list(term.var(T_1)),
    term.vars_2_list(Terms_3, V_5, Vars_4).
term.contains_var(term.variable(Var_3, V_4), Var_3).
term.contains_var(term.functor(V_5, Args_6, V_7), Var_8) :-
    term.contains_var_list(Args_6, Var_8).
term.list_subsumes(Terms1_4, Terms2_5, Subst_6) :-
    term.vars_list(Terms2_5, Terms2Vars_7),
    map.init(Subst0_8),
    term.unify_term_list_dont_bind(Terms1_4, Terms2_5, Terms2Vars_7, Subst0_8, Subst_6).
term.substitute(T1_5, V_6, T2_7) = T3_8 :-
    term.substitute(T1_5, V_6, T2_7, T3_8).
term.substitute_list(Ts1_5, V_6, T_7) = Ts2_8 :-
    term.substitute_list(Ts1_5, V_6, T_7, Ts2_8).
term.substitute_corresponding(Vs_5, T1s_6, T_7) = T2_8 :-
    term.substitute_corresponding(Vs_5, T1s_6, T_7, T2_8).
term.substitute_corresponding_list(Vs_5, Ts1_6, Ts2_7) = Ts3_8 :-
    term.substitute_corresponding_list(Vs_5, Ts1_6, Ts2_7, Ts3_8).
term.apply_rec_substitution(T1_4, S_5) = T2_6 :-
    term.apply_rec_substitution(T1_4, S_5, T2_6).
term.apply_rec_substitution_to_list(Ts1_4, S_5) = Ts2_6 :-
    term.apply_rec_substitution_to_list(Ts1_4, S_5, Ts2_6).
term.apply_substitution(T1_4, S_5) = T2_6 :-
    term.apply_substitution(T1_4, S_5, T2_6).
term.apply_substitution_to_list(Ts1_4, S_5) = Ts2_6 :-
    term.apply_substitution_to_list(Ts1_4, S_5, Ts2_6).
term.occurs_list(list.[Term_4 | Terms_5], Y_6, Bindings_7) :-
    (if
      term.occurs(Term_4, Y_6, Bindings_7)
    then
      true
    else
      term.occurs_list(Terms_5, Y_6, Bindings_7)
    ).
term.relabel_variable(T1_5, V1_6, V2_7) = T2_8 :-
    term.relabel_variable(T1_5, V1_6, V2_7, T2_8).
term.relabel_variables(Ts1_5, V1_6, V2_7) = Ts2_8 :-
    term.relabel_variables(Ts1_5, V1_6, V2_7, Ts2_8).
term.apply_variable_renaming(T1_4, M_5) = T2_6 :-
    term.apply_variable_renaming(T1_4, M_5, T2_6).
term.apply_variable_renaming_to_list(Ts1_4, M_5) = Ts2_6 :-
    term.apply_variable_renaming_to_list(Ts1_4, M_5, Ts2_6).
term.apply_variable_renaming_to_var(M_4, V0_5) = V_6 :-
    term.apply_variable_renaming_to_var(M_4, V0_5, V_6).
term.apply_variable_renaming_to_var(Renaming_4, Var0_5, Var_6) :-
    (if
      map.search(Renaming_4, Var0_5, NewVar_7)
    then
      Var_6 = NewVar_7
    else
      Var_6 = Var0_5
    ).
term.apply_variable_renaming_to_vars(M_4, Vs0_5) = Vs_6 :-
    term.apply_variable_renaming_to_vars(M_4, Vs0_5, Vs_6).
term.is_ground(term.functor(V_2, Args_3, V_4)) :-
    term.is_ground_list(Args_3).
term.init_var_supply = VS_2 :-
    term.init_var_supply(VS_2).
term.init_var_supply(term.var_supply(V_2)) :-
    V_2 = 0 : int.
term.create_var(term.var(V_4), term.var_supply(V0_5), term.var_supply(V_4)) :-
    V_4 = int.(V0_5 + V_6),
    V_6 = 1 : int.
term.var_id(term.var(V_3)) = V_3.
term.var_to_int(V_3) = N_4 :-
    term.var_to_int(V_3, N_4).
term.var_to_int(term.var(Var_3), Var_3).
term.context_line(C_3) = N_4 :-
    term.context_line(C_3, N_4).
term.context_line(term.context(V_3, LineNumber_4), LineNumber_4).
term.context_file(C_3) = S_4 :-
    term.context_file(C_3, S_4).
term.context_file(term.context(FileName_3, V_4), FileName_3).
term.context_init = C_2 :-
    term.context_init(C_2).
term.context_init(term.context(V_2, V_3)) :-
    V_2 = "" : string,
    V_3 = 0 : int.
term.context_init(S_4, N_5) = C_6 :-
    term.context_init(S_4, N_5, C_6).
term.context_init(File_4, LineNumber_5, term.context(File_4, LineNumber_5)).
term.var_list_to_term_list(Vs_3) = Ts_4 :-
    term.var_list_to_term_list(Vs_3, Ts_4).
term.generic_term(V_2).
term.coerce(T1_3) = T2_4 :-
    term.coerce(T1_3, T2_4).
term.coerce_var(V1_3) = V2_4 :-
    term.coerce_var(V1_3, V2_4).
term.coerce_var(term.var(V_3), term.var(V_3)).
term.coerce_var_supply(VS1_3) = VS2_4 :-
    term.coerce_var_supply(VS1_3, VS2_4).
term.coerce_var_supply(term.var_supply(Supply_3), term.var_supply(Supply_3)).
term.var_supply_max_var(term.var_supply(V_3)) = term.var(V_3).
term.var_supply_num_allocated(term.var_supply(V_3)) = V_3.
term.is_ground_list(list.[]).
term.is_ground_list(list.[Term_2 | Terms_3]) :-
    term.is_ground(Term_2),
    term.is_ground_list(Terms_3).
:- pragma exceptions(function, (term.get_term_context), 2, 0, will_not_throw).
:- pragma exceptions(function, (term.try_term_to_type), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (term.try_term_to_type), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (term.term_to_type), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (term.det_term_to_type), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (term.det_term_to_type), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (term.type_to_term), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (term.type_to_term), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (term.univ_to_term), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (term.univ_to_term), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (term.vars), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (term.vars), 2, 0, will_not_throw).
:- pragma exceptions(function, (term.vars_2), 3, 0, will_not_throw).
:- pragma exceptions(predicate, (term.vars_2), 3, 0, will_not_throw).
:- pragma exceptions(function, (term.vars_list), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (term.vars_list), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (term.contains_var), 2, 0, conditional).
:- pragma exceptions(predicate, (term.contains_var), 2, 1, will_not_throw).
:- pragma exceptions(predicate, (term.contains_var_list), 2, 0, conditional).
:- pragma exceptions(predicate, (term.contains_var_list), 2, 1, will_not_throw).
:- pragma exceptions(predicate, (term.unify_term), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (term.unify_term_list), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (term.unify_term_dont_bind), 5, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (term.unify_term_list_dont_bind), 5, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (term.list_subsumes), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (term.substitute), 4, 0, conditional).
:- pragma exceptions(predicate, (term.substitute), 4, 0, conditional).
:- pragma exceptions(function, (term.substitute_list), 4, 0, conditional).
:- pragma exceptions(predicate, (term.substitute_list), 4, 0, conditional).
:- pragma exceptions(function, (term.substitute_corresponding), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (term.substitute_corresponding), 4, 0, may_throw(user_exception)).
:- pragma exceptions(function, (term.substitute_corresponding_list), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (term.substitute_corresponding_list), 4, 0, may_throw(user_exception)).
:- pragma exceptions(function, (term.apply_rec_substitution), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (term.apply_rec_substitution), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (term.apply_rec_substitution_to_list), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (term.apply_rec_substitution_to_list), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (term.apply_substitution), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (term.apply_substitution), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (term.apply_substitution_to_list), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (term.apply_substitution_to_list), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (term.occurs), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (term.occurs_list), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (term.relabel_variable), 4, 0, conditional).
:- pragma exceptions(predicate, (term.relabel_variable), 4, 0, conditional).
:- pragma exceptions(function, (term.relabel_variables), 4, 0, conditional).
:- pragma exceptions(predicate, (term.relabel_variables), 4, 0, conditional).
:- pragma exceptions(function, (term.apply_variable_renaming), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (term.apply_variable_renaming), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (term.apply_variable_renaming_to_list), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (term.apply_variable_renaming_to_list), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (term.apply_variable_renaming_to_var), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (term.apply_variable_renaming_to_var), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (term.apply_variable_renaming_to_vars), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (term.apply_variable_renaming_to_vars), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (term.is_ground_in_bindings), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (term.is_ground), 1, 0, will_not_throw).
:- pragma exceptions(function, (term.init_var_supply), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (term.init_var_supply), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (term.init_var_supply), 1, 1, will_not_throw).
:- pragma exceptions(predicate, (term.create_var), 3, 0, will_not_throw).
:- pragma exceptions(function, (term.var_id), 2, 0, will_not_throw).
:- pragma exceptions(function, (term.var_to_int), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (term.var_to_int), 2, 0, will_not_throw).
:- pragma exceptions(function, (term.context_line), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (term.context_line), 2, 0, will_not_throw).
:- pragma exceptions(function, (term.context_file), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (term.context_file), 2, 0, will_not_throw).
:- pragma exceptions(function, (term.context_init), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (term.context_init), 1, 0, will_not_throw).
:- pragma exceptions(function, (term.context_init), 3, 0, will_not_throw).
:- pragma exceptions(predicate, (term.context_init), 3, 0, will_not_throw).
:- pragma exceptions(function, (term.term_list_to_var_list), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (term.term_list_to_var_list), 2, 0, will_not_throw).
:- pragma exceptions(function, (term.var_list_to_term_list), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (term.var_list_to_term_list), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (term.generic_term), 1, 0, will_not_throw).
:- pragma exceptions(function, (term.coerce), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (term.coerce), 2, 0, will_not_throw).
:- pragma exceptions(function, (term.coerce_var), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (term.coerce_var), 2, 0, will_not_throw).
:- pragma exceptions(function, (term.coerce_var_supply), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (term.coerce_var_supply), 2, 0, will_not_throw).
:- pragma exceptions(function, (term.var_supply_max_var), 2, 0, will_not_throw).
:- pragma exceptions(function, (term.var_supply_num_allocated), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (term.vars_2_list), 3, 0, will_not_throw).
:- pragma exceptions(predicate, (term.is_ground_list), 1, 0, will_not_throw).
:- pragma termination_info(term.get_term_context((builtin.in)) = (builtin.out), finite(-2, [no, yes, no]), cannot_loop).
:- pragma termination_info(term.try_term_to_type((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(term.try_term_to_type((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(term.term_to_type((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(term.det_term_to_type((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(term.det_term_to_type((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(term.type_to_term((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(term.type_to_term((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(term.univ_to_term((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(term.univ_to_term((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(term.vars((builtin.in)) = (builtin.out), finite(0, [no, yes, no]), cannot_loop).
:- pragma termination_info(term.vars((builtin.in), (builtin.out)), finite(0, [no, yes, no]), cannot_loop).
:- pragma termination_info(term.vars_2((builtin.in), (builtin.in)) = (builtin.out), finite(0, [no, yes, yes, no]), cannot_loop).
:- pragma termination_info(term.vars_2((builtin.in), (builtin.in), (builtin.out)), finite(0, [no, yes, yes, no]), cannot_loop).
:- pragma termination_info(term.vars_list((builtin.in)) = (builtin.out), finite(0, [no, yes, no]), cannot_loop).
:- pragma termination_info(term.vars_list((builtin.in), (builtin.out)), finite(0, [no, yes, no]), cannot_loop).
:- pragma termination_info(term.contains_var((builtin.in), (builtin.in)), finite(0, [no, no, no]), cannot_loop).
:- pragma termination_info(term.contains_var((builtin.in), (builtin.out)), finite(-2, [no, yes, no]), cannot_loop).
:- pragma termination_info(term.contains_var_list((builtin.in), (builtin.in)), finite(0, [no, no, no]), cannot_loop).
:- pragma termination_info(term.contains_var_list((builtin.in), (builtin.out)), finite(-4, [no, yes, no]), cannot_loop).
:- pragma termination_info(term.unify_term((builtin.in), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(term.unify_term_list((builtin.in), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(term.unify_term_dont_bind((builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(term.unify_term_list_dont_bind((builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(term.list_subsumes((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(term.substitute((builtin.in), (builtin.in), (builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(term.substitute((builtin.in), (builtin.in), (builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(term.substitute_list((builtin.in), (builtin.in), (builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(term.substitute_list((builtin.in), (builtin.in), (builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(term.substitute_corresponding((builtin.in), (builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(term.substitute_corresponding((builtin.in), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(term.substitute_corresponding_list((builtin.in), (builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(term.substitute_corresponding_list((builtin.in), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(term.apply_rec_substitution((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(term.apply_rec_substitution((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(term.apply_rec_substitution_to_list((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(term.apply_rec_substitution_to_list((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(term.apply_substitution((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(term.apply_substitution((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(term.apply_substitution_to_list((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(term.apply_substitution_to_list((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(term.occurs((builtin.in), (builtin.in), (builtin.in)), finite(0, [no, no, no, no]), can_loop).
:- pragma termination_info(term.occurs_list((builtin.in), (builtin.in), (builtin.in)), finite(0, [no, no, no, no]), can_loop).
:- pragma termination_info(term.relabel_variable((builtin.in), (builtin.in), (builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(term.relabel_variable((builtin.in), (builtin.in), (builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(term.relabel_variables((builtin.in), (builtin.in), (builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(term.relabel_variables((builtin.in), (builtin.in), (builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(term.apply_variable_renaming((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(term.apply_variable_renaming((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(term.apply_variable_renaming_to_list((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(term.apply_variable_renaming_to_list((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(term.apply_variable_renaming_to_var((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(term.apply_variable_renaming_to_var((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(term.apply_variable_renaming_to_vars((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(term.apply_variable_renaming_to_vars((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(term.is_ground_in_bindings((builtin.in), (builtin.in)), finite(0, [no, no, no]), can_loop).
:- pragma termination_info(term.is_ground((builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info((term.init_var_supply) = (builtin.out), finite(1, [no, no]), cannot_loop).
:- pragma termination_info(term.init_var_supply((builtin.out)), finite(1, [no, no]), cannot_loop).
:- pragma termination_info(term.init_var_supply((builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(term.create_var((builtin.out), (builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(term.var_id((builtin.in)) = (builtin.out), finite(-1, [no, yes, no]), cannot_loop).
:- pragma termination_info(term.var_to_int((builtin.in)) = (builtin.out), finite(-1, [no, yes, no]), cannot_loop).
:- pragma termination_info(term.var_to_int((builtin.in), (builtin.out)), finite(-1, [no, yes, no]), cannot_loop).
:- pragma termination_info(term.context_line((builtin.in)) = (builtin.out), finite(-2, [yes, no]), cannot_loop).
:- pragma termination_info(term.context_line((builtin.in), (builtin.out)), finite(-2, [yes, no]), cannot_loop).
:- pragma termination_info(term.context_file((builtin.in)) = (builtin.out), finite(-2, [yes, no]), cannot_loop).
:- pragma termination_info(term.context_file((builtin.in), (builtin.out)), finite(-2, [yes, no]), cannot_loop).
:- pragma termination_info((term.context_init) = (builtin.out), finite(2, [no]), cannot_loop).
:- pragma termination_info(term.context_init((builtin.out)), finite(2, [no]), cannot_loop).
:- pragma termination_info(term.context_init((builtin.in), (builtin.in)) = (builtin.out), finite(2, [yes, yes, no]), cannot_loop).
:- pragma termination_info(term.context_init((builtin.in), (builtin.in), (builtin.out)), finite(2, [yes, yes, no]), cannot_loop).
:- pragma termination_info(term.term_list_to_var_list((builtin.in)) = (builtin.out), finite(0, [no, yes, no]), can_loop).
:- pragma termination_info(term.term_list_to_var_list((builtin.in), (builtin.out)), finite(0, [no, yes, no]), cannot_loop).
:- pragma termination_info(term.var_list_to_term_list((builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(term.var_list_to_term_list((builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(term.generic_term((builtin.in)), finite(0, [no]), cannot_loop).
:- pragma termination_info(term.coerce((builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(term.coerce((builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(term.coerce_var((builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(term.coerce_var((builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(term.coerce_var_supply((builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(term.coerce_var_supply((builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(term.var_supply_max_var((builtin.in)) = (builtin.out), finite(0, [no, yes, no]), cannot_loop).
:- pragma termination_info(term.var_supply_num_allocated((builtin.in)) = (builtin.out), finite(-1, [no, yes, no]), cannot_loop).
:- pragma termination_info(term.vars_2_list((builtin.in), (builtin.in), (builtin.out)), finite(0, [no, yes, yes, no]), cannot_loop).
:- pragma termination_info(term.is_ground_list((builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(term.'ClassMethod_for_enum__enum____term__var__arity1______enum__to_int_1'((builtin.in)) = (builtin.out), finite(-1, [no, yes, no]), cannot_loop).
:- pragma termination_info(term.'ClassMethod_for_enum__enum____term__var__arity1______enum__from_int_1'((builtin.in)) = (builtin.out), finite(1, [no, yes, no]), cannot_loop).
