:- module test_bitset.
:- pragma termination_info((test_bitset.init) = (builtin.out), finite(5, [no, no]), cannot_loop).
:- pragma termination_info(test_bitset.singleton_set((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(test_bitset.make_singleton_set((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(test_bitset.init((builtin.out)), finite(5, [no, no]), cannot_loop).
:- pragma termination_info(test_bitset.singleton_set((builtin.out), (builtin.in)), infinite, can_loop).
:- pragma termination_info(test_bitset.make_singleton_set((builtin.out), (builtin.in)), infinite, can_loop).
:- pragma termination_info(test_bitset.count((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(test_bitset.is_empty((builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(test_bitset.is_non_empty((builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(test_bitset.is_singleton((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(test_bitset.contains((builtin.in), (builtin.in)), finite(0, [no, no, no]), can_loop).
:- pragma termination_info(test_bitset.member((builtin.in), (builtin.in)), finite(0, [no, no, no]), can_loop).
:- pragma termination_info(test_bitset.member((builtin.out), (builtin.in)), infinite, can_loop).
:- pragma termination_info(test_bitset.equal((builtin.in), (builtin.in)), finite(0, [no, no, no]), cannot_loop).
:- pragma termination_info(test_bitset.subset((builtin.in), (builtin.in)), finite(0, [no, no, no]), can_loop).
:- pragma termination_info(test_bitset.superset((builtin.in), (builtin.in)), finite(0, [no, no, no]), can_loop).
:- pragma termination_info(test_bitset.list_to_set((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(test_bitset.sorted_list_to_set((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(test_bitset.to_sorted_list((builtin.in)) = (builtin.out), finite(-3, [no, yes, no]), can_loop).
:- pragma termination_info(test_bitset.list_to_set((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(test_bitset.sorted_list_to_set((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(test_bitset.to_sorted_list((builtin.in), (builtin.out)), finite(-3, [no, yes, no]), can_loop).
:- pragma termination_info(test_bitset.set_to_bitset((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(test_bitset.bitset_to_set((builtin.in)) = (builtin.out), finite(-2, [no, yes, no]), can_loop).
:- pragma termination_info(test_bitset.from_set((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(test_bitset.to_set((builtin.in)) = (builtin.out), finite(-2, [no, yes, no]), can_loop).
:- pragma termination_info(test_bitset.insert((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(test_bitset.insert_new((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(test_bitset.insert_list((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(test_bitset.delete((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(test_bitset.delete_list((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(test_bitset.remove((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(test_bitset.remove_list((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(test_bitset.remove_least((builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(test_bitset.union((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(test_bitset.union_list((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(test_bitset.intersect((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(test_bitset.intersect_list((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(test_bitset.difference((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(test_bitset.union((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(test_bitset.union_list((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(test_bitset.intersect((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(test_bitset.intersect_list((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(test_bitset.difference((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(test_bitset.divide(builtin.in((pred((builtin.in)) is semidet)), (builtin.in), (builtin.out), (builtin.out)), infinite, can_loop).
:- pragma termination_info(test_bitset.divide_by_set((builtin.in), (builtin.in), (builtin.out), (builtin.out)), infinite, can_loop).
:- pragma termination_info(test_bitset.foldl((pred((builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(test_bitset.foldl((pred((builtin.in), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(test_bitset.foldl((func((builtin.in), (builtin.in)) = (builtin.out) is det), (builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(test_bitset.all_true(builtin.in((pred((builtin.in)) is semidet)), (builtin.in)), infinite, can_loop).
:- pragma termination_info(test_bitset.filter(builtin.in((pred((builtin.in)) is semidet)), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(test_bitset.filter(builtin.in((pred((builtin.in)) is semidet)), (builtin.in), (builtin.out), (builtin.out)), infinite, can_loop).
:- pragma termination_info(test_bitset.check0((builtin.in), (builtin.in), (builtin.out)), finite(0, [no, no, yes, no]), can_loop).
:- pragma termination_info(test_bitset.check1((builtin.in), (builtin.in), (builtin.in), (builtin.out)), finite(0, [no, no, no, yes, no]), can_loop).
:- pragma exceptions(function, (test_bitset.init), 1, 0, may_throw(user_exception)).
:- pragma exceptions(function, (test_bitset.singleton_set), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (test_bitset.make_singleton_set), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.init), 1, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.singleton_set), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.make_singleton_set), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (test_bitset.count), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.is_empty), 1, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.is_non_empty), 1, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.is_singleton), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.contains), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.member), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.member), 2, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.equal), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.subset), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.superset), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (test_bitset.list_to_set), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (test_bitset.sorted_list_to_set), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (test_bitset.to_sorted_list), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.list_to_set), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.sorted_list_to_set), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.to_sorted_list), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (test_bitset.set_to_bitset), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (test_bitset.bitset_to_set), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (test_bitset.from_set), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (test_bitset.to_set), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.insert), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.insert_new), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.insert_list), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.delete), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.delete_list), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.remove), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.remove_list), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.remove_least), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (test_bitset.union), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (test_bitset.union_list), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (test_bitset.intersect), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (test_bitset.intersect_list), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (test_bitset.difference), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.union), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.union_list), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.intersect), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.intersect_list), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.difference), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.divide), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.divide_by_set), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.foldl), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.foldl), 4, 1, may_throw(user_exception)).
:- pragma exceptions(function, (test_bitset.foldl), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.all_true), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (test_bitset.filter), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.filter), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.check0), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (test_bitset.check1), 4, 0, may_throw(user_exception)).
