:- module require.
:- use_module builtin, exception, list, private_builtin, string, type_desc.
require.sorry(Module_4, What_5) = V_6 :-
    require.sorry(Module_4, What_5).
require.sorry(Module_5, Proc_6, What_7) = V_8 :-
    require.sorry(Module_5, Proc_6, What_7).
require.unexpected(Module_4, What_5) = V_6 :-
    require.unexpected(Module_4, What_5).
require.unexpected(Module_5, Proc_6, What_7) = V_8 :-
    require.unexpected(Module_5, Proc_6, What_7).
require.require(Goal_3, Message_4) :-
    (if
      call(Goal_3)
    then
      true
    else
      require.error(Message_4)
    ).
require.expect(Goal_4, Module_5, Message_6) :-
    (if
      call(Goal_4)
    then
      true
    else
      require.unexpected(Module_5, Message_6)
    ).
require.expect(Goal_5, Module_6, Proc_7, Message_8) :-
    (if
      call(Goal_5)
    then
      true
    else
      require.unexpected(Module_6, Proc_7, Message_8)
    ).
require.expect_not(Goal_4, Module_5, Message_6) :-
    (if
      call(Goal_4)
    then
      require.unexpected(Module_5, Message_6)
    else
      true
    ).
require.expect_not(Goal_5, Module_6, Proc_7, Message_8) :-
    (if
      call(Goal_5)
    then
      require.unexpected(Module_6, Proc_7, Message_8)
    else
      true
    ).
:- pragma exceptions(predicate, (require.error), 1, 0, may_throw(user_exception)).
:- pragma exceptions(function, (require.func_error), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (require.sorry), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (require.sorry), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (require.sorry), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (require.sorry), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (require.unexpected), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (require.unexpected), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (require.unexpected), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (require.unexpected), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (require.require), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (require.expect), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (require.expect), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (require.expect_not), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (require.expect_not), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (require.report_lookup_error), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (require.report_lookup_error), 3, 0, may_throw(user_exception)).
:- pragma termination_info(require.error((builtin.in)), infinite, cannot_loop).
:- pragma termination_info(require.func_error((builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(require.sorry((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(require.sorry((builtin.in), (builtin.in)), infinite, can_loop).
:- pragma termination_info(require.sorry((builtin.in), (builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(require.sorry((builtin.in), (builtin.in), (builtin.in)), infinite, can_loop).
:- pragma termination_info(require.unexpected((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(require.unexpected((builtin.in), (builtin.in)), infinite, can_loop).
:- pragma termination_info(require.unexpected((builtin.in), (builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(require.unexpected((builtin.in), (builtin.in), (builtin.in)), infinite, can_loop).
:- pragma termination_info(require.require(((pred) is semidet), (builtin.in)), infinite, can_loop).
:- pragma termination_info(require.expect(((pred) is semidet), (builtin.in), (builtin.in)), infinite, can_loop).
:- pragma termination_info(require.expect(((pred) is semidet), (builtin.in), (builtin.in), (builtin.in)), infinite, can_loop).
:- pragma termination_info(require.expect_not(((pred) is semidet), (builtin.in), (builtin.in)), infinite, can_loop).
:- pragma termination_info(require.expect_not(((pred) is semidet), (builtin.in), (builtin.in), (builtin.in)), infinite, can_loop).
:- pragma termination_info(require.report_lookup_error((builtin.in), (builtin.in)), infinite, can_loop).
:- pragma termination_info(require.report_lookup_error((builtin.in), (builtin.in), (builtin.unused)), infinite, can_loop).
