:- module store.
:- pragma termination_info(store.init((builtin.uo)), infinite, cannot_loop).
:- pragma termination_info(store.new_mutvar((builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, cannot_loop).
:- pragma termination_info(store.copy_mutvar((builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, cannot_loop).
:- pragma termination_info(store.get_mutvar((builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, cannot_loop).
:- pragma termination_info(store.set_mutvar((builtin.in), (builtin.in), (builtin.di), (builtin.uo)), infinite, cannot_loop).
:- pragma termination_info(store.new_cyclic_mutvar((builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(store.new_ref((builtin.di), (builtin.out), (builtin.di), (builtin.uo)), infinite, cannot_loop).
:- pragma termination_info(store.ref_functor((builtin.in), (builtin.out), (builtin.out), (builtin.di), (builtin.uo)), infinite, cannot_loop).
:- pragma termination_info(store.arg_ref((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, cannot_loop).
:- pragma termination_info(store.new_arg_ref((builtin.di), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, cannot_loop).
:- pragma termination_info(store.set_ref((builtin.in), (builtin.in), (builtin.di), (builtin.uo)), infinite, cannot_loop).
:- pragma termination_info(store.set_ref_value((builtin.in), (builtin.di), (builtin.di), (builtin.uo)), infinite, cannot_loop).
:- pragma termination_info(store.copy_ref_value((builtin.in), (builtin.uo), (builtin.di), (builtin.uo)), infinite, cannot_loop).
:- pragma termination_info(store.extract_ref_value((builtin.di), (builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(store.unsafe_arg_ref((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, cannot_loop).
:- pragma termination_info(store.unsafe_new_arg_ref((builtin.di), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, cannot_loop).
:- pragma termination_info(store.store_equal((builtin.in), (builtin.in)), infinite, cannot_loop).
:- pragma termination_info(store.store_compare((builtin.uo), (builtin.in), (builtin.in)), infinite, cannot_loop).
:- pragma termination_info(store.do_init((builtin.uo)), infinite, cannot_loop).
:- pragma termination_info(store.unsafe_new_uninitialized_mutvar((builtin.out), (builtin.di), (builtin.uo)), infinite, cannot_loop).
:- pragma termination_info(store.unsafe_ref_value((builtin.in), (builtin.uo), (builtin.di), (builtin.uo)), infinite, cannot_loop).
:- pragma exceptions(predicate, (store.init), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (store.new_mutvar), 4, 0, will_not_throw).
:- pragma exceptions(predicate, (store.copy_mutvar), 4, 0, will_not_throw).
:- pragma exceptions(predicate, (store.get_mutvar), 4, 0, will_not_throw).
:- pragma exceptions(predicate, (store.set_mutvar), 4, 0, will_not_throw).
:- pragma exceptions(predicate, (store.new_cyclic_mutvar), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (store.new_ref), 4, 0, will_not_throw).
:- pragma exceptions(predicate, (store.ref_functor), 5, 0, will_not_throw).
:- pragma exceptions(predicate, (store.arg_ref), 5, 0, will_not_throw).
:- pragma exceptions(predicate, (store.new_arg_ref), 5, 0, will_not_throw).
:- pragma exceptions(predicate, (store.set_ref), 4, 0, will_not_throw).
:- pragma exceptions(predicate, (store.set_ref_value), 4, 0, will_not_throw).
:- pragma exceptions(predicate, (store.copy_ref_value), 4, 0, will_not_throw).
:- pragma exceptions(predicate, (store.extract_ref_value), 3, 0, will_not_throw).
:- pragma exceptions(predicate, (store.unsafe_arg_ref), 5, 0, will_not_throw).
:- pragma exceptions(predicate, (store.unsafe_new_arg_ref), 5, 0, will_not_throw).
:- pragma exceptions(predicate, (store.store_equal), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (store.store_compare), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (store.do_init), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (store.unsafe_new_uninitialized_mutvar), 3, 0, will_not_throw).
:- pragma exceptions(predicate, (store.unsafe_ref_value), 4, 0, will_not_throw).
