:- module exception.
:- pragma termination_info(exception.throw((builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(exception.throw((builtin.in)), infinite, cannot_loop).
:- pragma termination_info(exception.try((pred((builtin.out)) is det), builtin.out((exception.cannot_fail))), infinite, can_loop).
:- pragma termination_info(exception.try((pred((builtin.out)) is semidet), (builtin.out)), infinite, can_loop).
:- pragma termination_info(exception.try((pred((builtin.out)) is cc_multi), builtin.out((exception.cannot_fail))), infinite, can_loop).
:- pragma termination_info(exception.try((pred((builtin.out)) is cc_nondet), (builtin.out)), infinite, can_loop).
:- pragma termination_info(exception.try_io((pred((builtin.out), (builtin.di), (builtin.uo)) is det), builtin.out((exception.cannot_fail)), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(exception.try_io((pred((builtin.out), (builtin.di), (builtin.uo)) is cc_multi), builtin.out((exception.cannot_fail)), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(exception.try_store((pred((builtin.out), (builtin.di), (builtin.uo)) is det), builtin.out((exception.cannot_fail)), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(exception.try_store((pred((builtin.out), (builtin.di), (builtin.uo)) is cc_multi), builtin.out((exception.cannot_fail)), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(exception.try_all((pred((builtin.out)) is det), (builtin.out), builtin.out((exception.nil_or_singleton_list))), infinite, can_loop).
:- pragma termination_info(exception.try_all((pred((builtin.out)) is semidet), (builtin.out), builtin.out((exception.nil_or_singleton_list))), infinite, can_loop).
:- pragma termination_info(exception.try_all((pred((builtin.out)) is multi), (builtin.out), (builtin.out)), infinite, can_loop).
:- pragma termination_info(exception.try_all((pred((builtin.out)) is nondet), (builtin.out), (builtin.out)), infinite, can_loop).
:- pragma termination_info(exception.incremental_try_all((pred((builtin.out)) is nondet), (pred((builtin.in), (builtin.di), (builtin.uo)) is det), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(exception.incremental_try_all((pred((builtin.out)) is nondet), (pred((builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(exception.rethrow(builtin.in(bound(exception(ground)))), infinite, cannot_loop).
:- pragma termination_info(exception.rethrow(builtin.in(bound(exception(ground)))) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(exception.finally((pred((builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.out), (pred((builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(exception.finally((pred((builtin.out), (builtin.di), (builtin.uo)) is cc_multi), (builtin.out), (pred((builtin.out), (builtin.di), (builtin.uo)) is cc_multi), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info((exception.throw_if_near_stack_limits), finite(0, []), cannot_loop).
:- pragma termination_info(exception.try_stm(builtin.in((pred((builtin.out), (builtin.di), (builtin.uo)) is det)), builtin.out((exception.cannot_fail)), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(exception.try_stm(builtin.in((pred((builtin.out), (builtin.di), (builtin.uo)) is cc_multi)), builtin.out((exception.cannot_fail)), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(exception.unsafe_try_stm(builtin.in((pred((builtin.out), (builtin.di), (builtin.uo)) is det)), builtin.out((exception.cannot_fail)), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(exception.unsafe_try_stm(builtin.in((pred((builtin.out), (builtin.di), (builtin.uo)) is cc_multi)), builtin.out((exception.cannot_fail)), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(exception.magic_exception_result(builtin.out((exception.cannot_fail))), finite(1, [no]), cannot_loop).
:- pragma termination_info((exception.unreachable), infinite, cannot_loop).
:- pragma termination_info(exception.exc_univ_to_type((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(exception.exc_univ_to_type((builtin.out), (builtin.in)), finite(1, [no, no, yes]), cannot_loop).
:- pragma termination_info(exception.exc_univ_to_type((builtin.uo), (builtin.di)), infinite, cannot_loop).
:- pragma termination_info(exception.exc_univ_value((builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(exception.try_det(builtin.in(bound(exp_detism_det)), (pred((builtin.out)) is det), builtin.out((exception.cannot_fail))), infinite, can_loop).
:- pragma termination_info(exception.try_det(builtin.in(bound(exp_detism_semidet)), (pred((builtin.out)) is semidet), (builtin.out)), infinite, can_loop).
:- pragma termination_info(exception.try_det(builtin.in(bound(exp_detism_cc_multi)), (pred((builtin.out)) is cc_multi), builtin.out((exception.cannot_fail))), infinite, can_loop).
:- pragma termination_info(exception.try_det(builtin.in(bound(exp_detism_cc_nondet)), (pred((builtin.out)) is cc_nondet), (builtin.out)), infinite, can_loop).
:- pragma termination_info(exception.try_io_det(builtin.in(bound(exp_detism_det)), (pred((builtin.out), (builtin.di), (builtin.uo)) is det), builtin.out((exception.cannot_fail)), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(exception.try_io_det(builtin.in(bound(exp_detism_cc_multi)), (pred((builtin.out), (builtin.di), (builtin.uo)) is cc_multi), builtin.out((exception.cannot_fail)), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(exception.try_store_det(builtin.in(bound(exp_detism_det)), (pred((builtin.out), (builtin.di), (builtin.uo)) is det), builtin.out((exception.cannot_fail)), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(exception.try_store_det(builtin.in(bound(exp_detism_cc_multi)), (pred((builtin.out), (builtin.di), (builtin.uo)) is cc_multi), builtin.out((exception.cannot_fail)), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(exception.try_all_det(builtin.in(bound(exp_detism_det)), (pred((builtin.out)) is det), (builtin.out), builtin.out((exception.nil_or_singleton_list))), infinite, can_loop).
:- pragma termination_info(exception.try_all_det(builtin.in(bound(exp_detism_semidet)), (pred((builtin.out)) is semidet), (builtin.out), builtin.out((exception.nil_or_singleton_list))), infinite, can_loop).
:- pragma termination_info(exception.try_all_det(builtin.in(bound(exp_detism_multi)), (pred((builtin.out)) is multi), (builtin.out), (builtin.out)), infinite, can_loop).
:- pragma termination_info(exception.try_all_det(builtin.in(bound(exp_detism_nondet)), (pred((builtin.out)) is nondet), (builtin.out), (builtin.out)), infinite, can_loop).
:- pragma termination_info(exception.get_determinism((pred((builtin.out)) is det), builtin.out(bound(exp_detism_det))), infinite, cannot_loop).
:- pragma termination_info(exception.get_determinism((pred((builtin.out)) is semidet), builtin.out(bound(exp_detism_semidet))), infinite, cannot_loop).
:- pragma termination_info(exception.get_determinism((pred((builtin.out)) is multi), builtin.out(bound(exp_detism_multi))), infinite, cannot_loop).
:- pragma termination_info(exception.get_determinism((pred((builtin.out)) is nondet), builtin.out(bound(exp_detism_nondet))), infinite, cannot_loop).
:- pragma termination_info(exception.get_determinism((pred((builtin.out)) is cc_multi), builtin.out(bound(exp_detism_cc_multi))), infinite, cannot_loop).
:- pragma termination_info(exception.get_determinism((pred((builtin.out)) is cc_nondet), builtin.out(bound(exp_detism_cc_nondet))), infinite, cannot_loop).
:- pragma termination_info(exception.get_determinism_2((pred((builtin.out), (builtin.di), (builtin.uo)) is det), builtin.out(bound(exp_detism_det))), infinite, cannot_loop).
:- pragma termination_info(exception.get_determinism_2((pred((builtin.out), (builtin.di), (builtin.uo)) is cc_multi), builtin.out(bound(exp_detism_cc_multi))), infinite, cannot_loop).
:- pragma termination_info(exception.finally_2((pred((builtin.out), (builtin.di), (builtin.uo)) is det), (pred((builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.out), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(exception.finally_2((pred((builtin.out), (builtin.di), (builtin.uo)) is cc_multi), (pred((builtin.out), (builtin.di), (builtin.uo)) is cc_multi), (builtin.out), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(exception.wrap_success((pred((builtin.out)) is det), (builtin.out)), infinite, can_loop).
:- pragma termination_info(exception.wrap_success((pred((builtin.out)) is semidet), (builtin.out)), infinite, can_loop).
:- pragma termination_info(exception.wrap_success((pred((builtin.out)) is multi), (builtin.out)), infinite, can_loop).
:- pragma termination_info(exception.wrap_success((pred((builtin.out)) is nondet), (builtin.out)), infinite, can_loop).
:- pragma termination_info(exception.wrap_success((pred((builtin.out)) is cc_multi), (builtin.out)), infinite, can_loop).
:- pragma termination_info(exception.wrap_success((pred((builtin.out)) is cc_nondet), (builtin.out)), infinite, can_loop).
:- pragma termination_info(exception.handle_store_result(builtin.in((exception.cannot_fail)), builtin.out((exception.cannot_fail)), (builtin.in), (builtin.uo)), infinite, cannot_loop).
:- pragma termination_info(exception.wrap_exception((builtin.in), (builtin.out)), finite(1, [no, yes, no]), cannot_loop).
:- pragma termination_info(exception.try_stm_det(builtin.in(bound(exp_detism_det)), (pred((builtin.out), (builtin.di), (builtin.uo)) is det), builtin.out((exception.cannot_fail)), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(exception.try_stm_cc_multi(builtin.in(bound(exp_detism_cc_multi)), (pred((builtin.out), (builtin.di), (builtin.uo)) is cc_multi), builtin.out((exception.cannot_fail)), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(exception.handle_stm_result(builtin.in((exception.cannot_fail)), builtin.out((exception.cannot_fail)), (builtin.in), (builtin.uo)), infinite, cannot_loop).
:- pragma termination_info(exception.catch_impl((pred((builtin.out)) is det), builtin.in((exception.handler)), (builtin.out)), infinite, can_loop).
:- pragma termination_info(exception.catch_impl((pred((builtin.out)) is semidet), builtin.in((exception.handler)), (builtin.out)), infinite, can_loop).
:- pragma termination_info(exception.catch_impl((pred((builtin.out)) is cc_multi), builtin.in((exception.handler)), (builtin.out)), infinite, can_loop).
:- pragma termination_info(exception.catch_impl((pred((builtin.out)) is cc_nondet), builtin.in((exception.handler)), (builtin.out)), infinite, can_loop).
:- pragma termination_info(exception.catch_impl((pred((builtin.out)) is multi), builtin.in((exception.handler)), (builtin.out)), infinite, can_loop).
:- pragma termination_info(exception.catch_impl((pred((builtin.out)) is nondet), builtin.in((exception.handler)), (builtin.out)), infinite, can_loop).
:- pragma exceptions(function, (exception.throw), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.throw), 1, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.(try)), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.(try)), 2, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.(try)), 2, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.(try)), 2, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.try_io), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.try_io), 4, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.try_store), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.try_store), 4, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.try_all), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.try_all), 3, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.try_all), 3, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.try_all), 3, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.incremental_try_all), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.incremental_try_all), 4, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.rethrow), 1, 0, may_throw(user_exception)).
:- pragma exceptions(function, (exception.rethrow), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.finally), 6, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.finally), 6, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.throw_if_near_stack_limits), 0, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.try_stm), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.try_stm), 4, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.unsafe_try_stm), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.unsafe_try_stm), 4, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.magic_exception_result), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (exception.unreachable), 0, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.exc_univ_to_type), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.exc_univ_to_type), 2, 1, will_not_throw).
:- pragma exceptions(predicate, (exception.exc_univ_to_type), 2, 2, will_not_throw).
:- pragma exceptions(function, (exception.exc_univ_value), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (exception.try_det), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.try_det), 3, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.try_det), 3, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.try_det), 3, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.try_io_det), 5, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.try_io_det), 5, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.try_store_det), 5, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.try_store_det), 5, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.try_all_det), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.try_all_det), 4, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.try_all_det), 4, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.try_all_det), 4, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.get_determinism), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.get_determinism), 2, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.get_determinism), 2, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.get_determinism), 2, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.get_determinism), 2, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.get_determinism), 2, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.get_determinism_2), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.get_determinism_2), 2, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.finally_2), 6, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.finally_2), 6, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.wrap_success), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.wrap_success), 2, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.wrap_success), 2, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.wrap_success), 2, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.wrap_success), 2, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.wrap_success), 2, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.handle_store_result), 4, 0, will_not_throw).
:- pragma exceptions(predicate, (exception.wrap_exception), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (exception.try_stm_det), 5, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.try_stm_cc_multi), 5, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.handle_stm_result), 4, 0, will_not_throw).
:- pragma exceptions(predicate, (exception.catch_impl), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.catch_impl), 3, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.catch_impl), 3, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.catch_impl), 3, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.catch_impl), 3, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (exception.catch_impl), 3, 5, may_throw(user_exception)).
