:- module term. :- use_module array, bool, builtin, char, enum, int, list, map, private_builtin, require, std_util, string. :- type (term:var_supply(T)) ---> var_supply(int) . :- type (term:var(T)) ---> var(int) . :- instance (enum:enum(term : var(_1))). :- pred term:try_term_to_type((bool:bool), (term:term(U_1)), (term:term_to_type_result(T_2, U_1))). :- mode term:try_term_to_type((builtin:in), (builtin:in), (builtin:out)) is det. :- 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_2((list:list((term:term(T_1))))). :- mode term:is_ground_2((builtin:in)) is semidet. term:try_term_to_type(T_3) = TTTR_4 :- term:try_term_to_type(T_3, TTTR_4). term:try_term_to_type(Term_3, Result_4) :- IsAditiTuple_5 = bool:no, term:try_term_to_type(IsAditiTuple_5, Term_3, Result_4). term:term_to_type(Term_3, Val_4) :- V_5 = term:ok(Val_4), 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) :- std_util: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:[], 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:[], term:vars_2_list(Terms_3, V_5, Vars_4). term:contains_var((term:variable(V_3)), V_3). term:contains_var((term:functor(V_4, Args_5, V_6)), V_7) :- term:contains_var_list(Args_5, V_7). 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:is_ground((term:functor(V_2, Args_3, V_4))) :- term:is_ground_2(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. term:create_var((term:var_supply(V0_4)), (term:var(V_5)), (term:var_supply(V_5))) :- V_5 = int:(V0_4 + V_6), V_6 = 1. 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((term:context(V_3, LineNumber_4)), LineNumber_4). term:context_line(C_3) = N_4 :- term:context_line(C_3, N_4). term:context_file((term:context(FileName_3, V_4)), FileName_3). term:context_file(C_3) = S_4 :- term:context_file(C_3, S_4). term:context_init((term:context(V_2, V_3))) :- V_2 = "", V_3 = 0. term:context_init = C_2 :- term:context_init(C_2). term:context_init(File_4, LineNumber_5, (term:context(File_4, LineNumber_5))). term:context_init(S_4, N_5) = C_6 :- term:context_init(S_4, N_5, C_6). term:term_list_to_var_list(Ts_3) = Vs_4 :- term:term_list_to_var_list(Ts_3, Vs_4). 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(A_3, B_4) :- private_builtin:unsafe_type_cast(A_3, B_4). term:coerce(T1_3) = T2_4 :- term:coerce(T1_3, T2_4). term:coerce_var((term:var(V_3)), (term:var(V_3))). term:coerce_var(V1_3) = V2_4 :- term:coerce_var(V1_3, V2_4). term:coerce_var_supply((term:var_supply(Supply_3)), (term:var_supply(Supply_3))). term:coerce_var_supply(VS1_3) = VS2_4 :- term:coerce_var_supply(VS1_3, VS2_4). term:term_to_type_with_int_instead_of_char(Term_3, Val_4) :- IsAditiTuple_5 = bool:yes, V_6 = term:ok(Val_4), term:try_term_to_type(IsAditiTuple_5, Term_3, V_6). term:is_ground_2((list:[])). term:is_ground_2((list:[Term_2 | Terms_3])) :- term:is_ground(Term_2), term:is_ground_2(Terms_3). :- 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(1, [no, yes, no]), cannot_loop). :- pragma termination_info(term:vars((builtin:in), (builtin:out)), finite(1, [no, yes, no]), cannot_loop). :- pragma termination_info(term:vars_2((builtin:in), (builtin:in)) = (builtin:out), finite(1, [no, yes, yes, no]), cannot_loop). :- pragma termination_info(term:vars_2((builtin:in), (builtin:in), (builtin:out)), finite(1, [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(-1, [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(-3, [no, yes, no]), cannot_loop). :- pragma termination_info(term:unify((builtin:in), (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:is_ground((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:in), (builtin:out), (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]), can_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:out), (builtin:in)), finite(0, [no, no, yes]), 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:term_to_type_with_int_instead_of_char((builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(term:compare((builtin:out), (builtin:in), (builtin:in), (builtin:in)), finite(0, [no, no, no, no, no]), can_loop).