:- module ops. :- use_module builtin, private_builtin. :- type (ops:mercury_op_table) ---> mercury_op_table . :- type (ops:category) ---> before ; after . :- instance (ops:op_table(ops : mercury_op_table)) where [ pred((ops:lookup_infix_op)/5) is (ops:lookup_mercury_infix_op), pred((ops:lookup_operator_term)/4) is (ops:lookup_mercury_operator_term), pred((ops:lookup_prefix_op)/4) is (ops:lookup_mercury_prefix_op), pred((ops:lookup_binary_prefix_op)/5) is (ops:lookup_mercury_binary_prefix_op), pred((ops:lookup_postfix_op)/4) is (ops:lookup_mercury_postfix_op), pred((ops:lookup_op)/2) is (ops:lookup_mercury_op), func((ops:max_priority)/1) is (ops:mercury_max_priority), func((ops:arg_priority)/1) is (ops:mercury_arg_priority) ]. :- pred ops:lookup_mercury_infix_op((ops:mercury_op_table), string, int, (ops:assoc), (ops:assoc)). :- mode ops:lookup_mercury_infix_op((builtin:in), (builtin:in), (builtin:out), (builtin:out), (builtin:out)) is semidet. :- pred ops:lookup_mercury_operator_term((ops:mercury_op_table), int, (ops:assoc), (ops:assoc)). :- mode ops:lookup_mercury_operator_term((builtin:in), (builtin:out), (builtin:out), (builtin:out)) is det. :- pred ops:lookup_mercury_prefix_op((ops:mercury_op_table), string, int, (ops:assoc)). :- mode ops:lookup_mercury_prefix_op((builtin:in), (builtin:in), (builtin:out), (builtin:out)) is semidet. :- pred ops:lookup_mercury_binary_prefix_op((ops:mercury_op_table), string, int, (ops:assoc), (ops:assoc)). :- mode ops:lookup_mercury_binary_prefix_op((builtin:in), (builtin:in), (builtin:out), (builtin:out), (builtin:out)) is semidet. :- pred ops:lookup_mercury_postfix_op((ops:mercury_op_table), string, int, (ops:assoc)). :- mode ops:lookup_mercury_postfix_op((builtin:in), (builtin:in), (builtin:out), (builtin:out)) is semidet. :- pred ops:lookup_mercury_op((ops:mercury_op_table), string). :- mode ops:lookup_mercury_op((builtin:in), (builtin:in)) is semidet. :- func ops:mercury_max_priority((ops:mercury_op_table)) = int. :- mode ops:mercury_max_priority((builtin:in)) = (builtin:out) is det. :- func ops:mercury_arg_priority((ops:mercury_op_table)) = int. :- mode ops:mercury_arg_priority((builtin:in)) = (builtin:out) is det. ops:init_mercury_op_table = (ops:mercury_op_table). ops:init_op_table((ops:mercury_op_table)). ops:init_op_table = (ops:mercury_op_table). :- pragma termination_info(ops:lookup_infix_op((builtin:in), (builtin:in), (builtin:out), (builtin:out), (builtin:out)), infinite, can_loop). :- pragma termination_info(ops:lookup_operator_term((builtin:in), (builtin:out), (builtin:out), (builtin:out)), infinite, can_loop). :- pragma termination_info(ops:lookup_prefix_op((builtin:in), (builtin:in), (builtin:out), (builtin:out)), infinite, can_loop). :- pragma termination_info(ops:lookup_binary_prefix_op((builtin:in), (builtin:in), (builtin:out), (builtin:out), (builtin:out)), infinite, can_loop). :- pragma termination_info(ops:lookup_postfix_op((builtin:in), (builtin:in), (builtin:out), (builtin:out)), infinite, can_loop). :- pragma termination_info(ops:lookup_op((builtin:in), (builtin:in)), infinite, can_loop). :- pragma termination_info(ops:max_priority((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(ops:arg_priority((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info((ops:init_mercury_op_table) = (builtin:uo), finite(0, [no]), cannot_loop). :- pragma termination_info(ops:op_specifier_to_class((builtin:in), (builtin:out)), finite(2, [no, no]), cannot_loop). :- pragma termination_info(ops:init_op_table((builtin:uo)), finite(0, [no]), cannot_loop). :- pragma termination_info((ops:init_op_table) = (builtin:out), finite(0, [no]), cannot_loop).