:- module solutions.
:- pragma termination_info(solutions.solutions((pred((builtin.out)) is multi), builtin.out((list.non_empty_list))), infinite, can_loop).
:- pragma termination_info(solutions.solutions((pred((builtin.out)) is nondet), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.solutions((pred((builtin.out)) is multi)) = builtin.out((list.non_empty_list)), infinite, can_loop).
:- pragma termination_info(solutions.solutions((pred((builtin.out)) is nondet)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(solutions.solutions_set((pred((builtin.out)) is multi)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(solutions.solutions_set((pred((builtin.out)) is nondet)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(solutions.solutions_set((pred((builtin.out)) is multi), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.solutions_set((pred((builtin.out)) is nondet), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.unsorted_solutions((pred((builtin.out)) is multi), builtin.out((list.non_empty_list))), infinite, can_loop).
:- pragma termination_info(solutions.unsorted_solutions((pred((builtin.out)) is nondet), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.aggregate((pred((builtin.out)) is multi), (func((builtin.in), (builtin.in)) = (builtin.out) is det), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(solutions.aggregate((pred((builtin.out)) is nondet), (func((builtin.in), (builtin.in)) = (builtin.out) is det), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(solutions.aggregate((pred((builtin.out)) is multi), (pred((builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.aggregate((pred((builtin.out)) is multi), (pred((builtin.in), (builtin.di), (builtin.uo)) is det), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.aggregate((pred((builtin.out)) is nondet), (pred((builtin.in), (builtin.di), (builtin.uo)) is det), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.aggregate((pred((builtin.out)) is nondet), (pred((builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.aggregate2((pred((builtin.out)) is multi), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.aggregate2((pred((builtin.out)) is multi), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.aggregate2((pred((builtin.out)) is nondet), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.aggregate2((pred((builtin.out)) is nondet), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.unsorted_aggregate((pred((builtin.out)) is multi), (pred((builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.unsorted_aggregate((pred((builtin.out)) is multi), (pred((builtin.in), (builtin.in), (builtin.out)) is cc_multi), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.unsorted_aggregate((pred((builtin.out)) is multi), (pred((builtin.in), (builtin.di), (builtin.uo)) is det), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.unsorted_aggregate((pred((builtin.out)) is multi), (pred((builtin.in), (builtin.di), (builtin.uo)) is cc_multi), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.unsorted_aggregate((pred((builtin.muo)) is multi), (pred((builtin.mdi), (builtin.di), (builtin.uo)) is det), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.unsorted_aggregate((pred((builtin.out)) is nondet), (pred((builtin.in), (builtin.di), (builtin.uo)) is det), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.unsorted_aggregate((pred((builtin.out)) is nondet), (pred((builtin.in), (builtin.di), (builtin.uo)) is cc_multi), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.unsorted_aggregate((pred((builtin.out)) is nondet), (pred((builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.unsorted_aggregate((pred((builtin.out)) is nondet), (pred((builtin.in), (builtin.in), (builtin.out)) is cc_multi), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.unsorted_aggregate((pred((builtin.muo)) is nondet), (pred((builtin.mdi), (builtin.di), (builtin.uo)) is det), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.unsorted_aggregate2((pred((builtin.out)) is multi), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.unsorted_aggregate2((pred((builtin.out)) is multi), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is cc_multi), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.unsorted_aggregate2((pred((builtin.out)) is multi), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.unsorted_aggregate2((pred((builtin.out)) is multi), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is cc_multi), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.unsorted_aggregate2((pred((builtin.out)) is nondet), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.unsorted_aggregate2((pred((builtin.out)) is nondet), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is cc_multi), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.unsorted_aggregate2((pred((builtin.out)) is nondet), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.unsorted_aggregate2((pred((builtin.out)) is nondet), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is cc_multi), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.do_while((pred((builtin.out)) is multi), (pred((builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.do_while((pred((builtin.out)) is multi), (pred((builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.do_while((pred((builtin.out)) is multi), (pred((builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is cc_multi), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.do_while((pred((builtin.out)) is nondet), (pred((builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.do_while((pred((builtin.out)) is nondet), (pred((builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.do_while((pred((builtin.out)) is nondet), (pred((builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is cc_multi), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.builtin_solutions((pred((builtin.out)) is multi), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.builtin_solutions((pred((builtin.out)) is nondet), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.builtin_aggregate((pred((builtin.out)) is multi), (pred((builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.builtin_aggregate((pred((builtin.out)) is multi), (pred((builtin.in), (builtin.di), (builtin.uo)) is det), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.builtin_aggregate((pred((builtin.out)) is multi), (pred((builtin.in), (builtin.in), (builtin.out)) is cc_multi), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.builtin_aggregate((pred((builtin.out)) is multi), (pred((builtin.in), (builtin.di), (builtin.uo)) is cc_multi), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.builtin_aggregate((pred((builtin.muo)) is multi), (pred((builtin.mdi), (builtin.di), (builtin.uo)) is det), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.builtin_aggregate((pred((builtin.out)) is nondet), (pred((builtin.in), (builtin.di), (builtin.uo)) is det), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.builtin_aggregate((pred((builtin.out)) is nondet), (pred((builtin.in), (builtin.di), (builtin.uo)) is cc_multi), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.builtin_aggregate((pred((builtin.out)) is nondet), (pred((builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.builtin_aggregate((pred((builtin.out)) is nondet), (pred((builtin.in), (builtin.in), (builtin.out)) is cc_multi), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.builtin_aggregate((pred((builtin.muo)) is nondet), (pred((builtin.mdi), (builtin.di), (builtin.uo)) is det), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.builtin_aggregate2((pred((builtin.out)) is multi), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.builtin_aggregate2((pred((builtin.out)) is multi), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is cc_multi), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.builtin_aggregate2((pred((builtin.out)) is multi), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.builtin_aggregate2((pred((builtin.out)) is multi), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is cc_multi), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.builtin_aggregate2((pred((builtin.out)) is nondet), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.builtin_aggregate2((pred((builtin.out)) is nondet), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is cc_multi), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(solutions.builtin_aggregate2((pred((builtin.out)) is nondet), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(solutions.builtin_aggregate2((pred((builtin.out)) is nondet), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is cc_multi), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma exceptions(predicate, (solutions.solutions), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.solutions), 2, 1, may_throw(user_exception)).
:- pragma exceptions(function, (solutions.solutions), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (solutions.solutions), 2, 1, may_throw(user_exception)).
:- pragma exceptions(function, (solutions.solutions_set), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (solutions.solutions_set), 2, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.solutions_set), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.solutions_set), 2, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.unsorted_solutions), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.unsorted_solutions), 2, 1, may_throw(user_exception)).
:- pragma exceptions(function, (solutions.aggregate), 4, 0, may_throw(user_exception)).
:- pragma exceptions(function, (solutions.aggregate), 4, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.aggregate), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.aggregate), 4, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.aggregate), 4, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.aggregate), 4, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.aggregate2), 6, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.aggregate2), 6, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.aggregate2), 6, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.aggregate2), 6, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.unsorted_aggregate), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.unsorted_aggregate), 4, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.unsorted_aggregate), 4, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.unsorted_aggregate), 4, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.unsorted_aggregate), 4, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.unsorted_aggregate), 4, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.unsorted_aggregate), 4, 6, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.unsorted_aggregate), 4, 7, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.unsorted_aggregate), 4, 8, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.unsorted_aggregate), 4, 9, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.unsorted_aggregate2), 6, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.unsorted_aggregate2), 6, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.unsorted_aggregate2), 6, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.unsorted_aggregate2), 6, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.unsorted_aggregate2), 6, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.unsorted_aggregate2), 6, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.unsorted_aggregate2), 6, 6, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.unsorted_aggregate2), 6, 7, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.do_while), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.do_while), 4, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.do_while), 4, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.do_while), 4, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.do_while), 4, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.do_while), 4, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.builtin_solutions), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.builtin_solutions), 2, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.builtin_aggregate), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.builtin_aggregate), 4, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.builtin_aggregate), 4, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.builtin_aggregate), 4, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.builtin_aggregate), 4, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.builtin_aggregate), 4, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.builtin_aggregate), 4, 6, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.builtin_aggregate), 4, 7, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.builtin_aggregate), 4, 8, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.builtin_aggregate), 4, 9, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.builtin_aggregate2), 6, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.builtin_aggregate2), 6, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.builtin_aggregate2), 6, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.builtin_aggregate2), 6, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.builtin_aggregate2), 6, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.builtin_aggregate2), 6, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.builtin_aggregate2), 6, 6, may_throw(user_exception)).
:- pragma exceptions(predicate, (solutions.builtin_aggregate2), 6, 7, may_throw(user_exception)).
