:- module exception. :- pragma termination_info(exception:throw((builtin:in)), infinite, can_loop). :- pragma termination_info(exception:throw((builtin:in)) = (builtin:out), infinite, can_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((exception:try_all_det))), infinite, can_loop). :- pragma termination_info(exception:try_all((pred((builtin:out)) is semidet), builtin:out((exception:try_all_semidet))), infinite, can_loop). :- pragma termination_info(exception:try_all((pred((builtin:out)) is multi), builtin:out((exception:try_all_multi))), infinite, can_loop). :- pragma termination_info(exception:try_all((pred((builtin:out)) is nondet), builtin:out((exception:try_all_nondet))), 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, can_loop). :- pragma termination_info(exception:rethrow(builtin:in(bound(exception(ground)))) = (builtin:out), infinite, can_loop). :- pragma termination_info(exception:try(builtin:in(bound(det)), (pred((builtin:out)) is det), builtin:out((exception:cannot_fail))), infinite, can_loop). :- pragma termination_info(exception:try(builtin:in(bound(semidet)), (pred((builtin:out)) is semidet), (builtin:out)), infinite, can_loop). :- pragma termination_info(exception:try(builtin:in(bound(cc_multi)), (pred((builtin:out)) is cc_multi), builtin:out((exception:cannot_fail))), infinite, can_loop). :- pragma termination_info(exception:try(builtin:in(bound(cc_nondet)), (pred((builtin:out)) is cc_nondet), (builtin:out)), infinite, can_loop). :- pragma termination_info(exception:try_io(builtin:in(bound(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(builtin:in(bound(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(builtin:in(bound(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(builtin:in(bound(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(builtin:in(bound(det)), (pred((builtin:out)) is det), builtin:out((exception:try_all_det))), infinite, can_loop). :- pragma termination_info(exception:try_all(builtin:in(bound(semidet)), (pred((builtin:out)) is semidet), builtin:out((exception:try_all_semidet))), infinite, can_loop). :- pragma termination_info(exception:try_all(builtin:in(bound(multi)), (pred((builtin:out)) is multi), builtin:out((exception:try_all_multi))), infinite, can_loop). :- pragma termination_info(exception:try_all(builtin:in(bound(nondet)), (pred((builtin:out)) is nondet), builtin:out((exception:try_all_nondet))), infinite, can_loop). :- pragma termination_info(exception:get_determinism((pred((builtin:out)) is det), builtin:out(bound(det))), infinite, can_loop). :- pragma termination_info(exception:get_determinism((pred((builtin:out)) is semidet), builtin:out(bound(semidet))), infinite, can_loop). :- pragma termination_info(exception:get_determinism((pred((builtin:out)) is multi), builtin:out(bound(multi))), infinite, can_loop). :- pragma termination_info(exception:get_determinism((pred((builtin:out)) is nondet), builtin:out(bound(nondet))), infinite, can_loop). :- pragma termination_info(exception:get_determinism((pred((builtin:out)) is cc_multi), builtin:out(bound(cc_multi))), infinite, can_loop). :- pragma termination_info(exception:get_determinism((pred((builtin:out)) is cc_nondet), builtin:out(bound(cc_nondet))), infinite, can_loop). :- pragma termination_info(exception:get_determinism_2((pred((builtin:out), (builtin:di), (builtin:uo)) is det), builtin:out(bound(det))), infinite, can_loop). :- pragma termination_info(exception:get_determinism_2((pred((builtin:out), (builtin:di), (builtin:uo)) is cc_multi), builtin:out(bound(cc_multi))), 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:wrap_success_or_failure((pred((builtin:out)) is det), (builtin:out)), infinite, can_loop). :- pragma termination_info(exception:wrap_success_or_failure((pred((builtin:out)) is semidet), (builtin:out)), infinite, can_loop). :- pragma termination_info(exception:wrap_success_or_failure((pred((builtin:out)) is multi), (builtin:out)), infinite, can_loop). :- pragma termination_info(exception:wrap_success_or_failure((pred((builtin:out)) is nondet), (builtin:out)), infinite, can_loop). :- pragma termination_info(exception:wrap_success_or_failure((pred((builtin:out)) is cc_multi), (builtin:out)), infinite, can_loop). :- pragma termination_info(exception:wrap_success_or_failure((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, can_loop). :- pragma termination_info(exception:very_unsafe_perform_io((pred((builtin:out), (builtin:di), (builtin:uo)) is det), (builtin:out)), infinite, can_loop). :- pragma termination_info(exception:very_unsafe_perform_io((pred((builtin:out), (builtin:di), (builtin:uo)) is cc_multi), (builtin:out)), infinite, can_loop). :- pragma termination_info(exception:wrap_exception((builtin:in), (builtin:out)), finite(1, [no, yes, no]), 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).