:- module sparse_bitset.
:- pragma termination_info((sparse_bitset.init) = (builtin.out), finite(1, [no, no]), cannot_loop).
:- pragma termination_info(sparse_bitset.init((builtin.out)), finite(1, [no, no]), cannot_loop).
:- pragma termination_info(sparse_bitset.empty((builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(sparse_bitset.empty((builtin.out)), finite(1, [no, no]), cannot_loop).
:- pragma termination_info(sparse_bitset.is_empty((builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(sparse_bitset.is_non_empty((builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(sparse_bitset.equal((builtin.in), (builtin.in)), finite(0, [no, no, no]), cannot_loop).
:- pragma termination_info(sparse_bitset.list_to_set((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(sparse_bitset.list_to_set((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.sorted_list_to_set((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(sparse_bitset.sorted_list_to_set((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.from_set((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(sparse_bitset.to_sorted_list((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(sparse_bitset.to_sorted_list((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.to_set((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(sparse_bitset.make_singleton_set((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(sparse_bitset.singleton_set((builtin.out), (builtin.in)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.is_singleton((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.subset((builtin.in), (builtin.in)), finite(0, [no, no, no]), cannot_loop).
:- pragma termination_info(sparse_bitset.superset((builtin.in), (builtin.in)), finite(0, [no, no, no]), cannot_loop).
:- pragma termination_info(sparse_bitset.contains((builtin.in), (builtin.in)), finite(0, [no, no, no]), can_loop).
:- pragma termination_info(sparse_bitset.member((builtin.in), (builtin.in)), finite(0, [no, no, no]), can_loop).
:- pragma termination_info(sparse_bitset.member((builtin.out), (builtin.in)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.insert((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(sparse_bitset.insert((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.insert_new((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.insert_list((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(sparse_bitset.insert_list((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.delete((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(sparse_bitset.delete((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.delete_list((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(sparse_bitset.delete_list((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.remove((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.remove_list((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.remove_leq((builtin.in), (builtin.in)) = (builtin.out), finite(0, [no, yes, no, no]), can_loop).
:- pragma termination_info(sparse_bitset.remove_leq((builtin.in), (builtin.in), (builtin.out)), finite(0, [no, no, yes, no]), can_loop).
:- pragma termination_info(sparse_bitset.remove_gt((builtin.in), (builtin.in)) = (builtin.out), finite(0, [no, yes, no, no]), can_loop).
:- pragma termination_info(sparse_bitset.remove_gt((builtin.in), (builtin.in), (builtin.out)), finite(0, [no, no, yes, no]), can_loop).
:- pragma termination_info(sparse_bitset.remove_least((builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.union((builtin.in), (builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(sparse_bitset.union((builtin.in), (builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(sparse_bitset.union_list((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(sparse_bitset.union_list((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.intersect((builtin.in), (builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(sparse_bitset.intersect((builtin.in), (builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(sparse_bitset.intersect_list((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(sparse_bitset.intersect_list((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.difference((builtin.in), (builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(sparse_bitset.difference((builtin.in), (builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(sparse_bitset.divide(builtin.in((pred((builtin.in)) is semidet)), (builtin.in), (builtin.out), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.divide_by_set((builtin.in), (builtin.in), (builtin.out), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.count((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldl((builtin.in), (builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldl((pred((builtin.in), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldl((pred((builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldl((pred((builtin.in), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldl((pred((builtin.in), (builtin.in), (builtin.out)) is nondet), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldl((pred((builtin.in), (builtin.di), (builtin.uo)) is cc_multi), (builtin.in), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldl((pred((builtin.in), (builtin.in), (builtin.out)) is cc_multi), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldl2((pred((builtin.in), (builtin.di), (builtin.uo), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.di), (builtin.uo), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldl2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldl2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldl2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldl2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is nondet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldl2((pred((builtin.in), (builtin.di), (builtin.uo), (builtin.di), (builtin.uo)) is cc_multi), (builtin.in), (builtin.di), (builtin.uo), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldl2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is cc_multi), (builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldl2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is cc_multi), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldr((builtin.in), (builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldr((pred((builtin.in), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldr((pred((builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldr((pred((builtin.in), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldr((pred((builtin.in), (builtin.in), (builtin.out)) is nondet), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldr((pred((builtin.in), (builtin.di), (builtin.uo)) is cc_multi), (builtin.in), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldr((pred((builtin.in), (builtin.in), (builtin.out)) is cc_multi), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldr2((pred((builtin.in), (builtin.di), (builtin.uo), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.di), (builtin.uo), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldr2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldr2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldr2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldr2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is nondet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldr2((pred((builtin.in), (builtin.di), (builtin.uo), (builtin.di), (builtin.uo)) is cc_multi), (builtin.in), (builtin.di), (builtin.uo), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldr2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is cc_multi), (builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.foldr2((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is cc_multi), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.all_true(builtin.in((pred((builtin.in)) is semidet)), (builtin.in)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.filter((pred((builtin.in)) is semidet), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(sparse_bitset.filter((pred((builtin.in)) is semidet), (builtin.in), (builtin.out), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldl_pred((pred((builtin.in), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldl_pred((pred((builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldl_pred((pred((builtin.in), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldl_pred((pred((builtin.in), (builtin.in), (builtin.out)) is nondet), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldl_pred((pred((builtin.in), (builtin.di), (builtin.uo)) is cc_multi), (builtin.in), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldl_pred((pred((builtin.in), (builtin.in), (builtin.out)) is cc_multi), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldl2_pred((pred((builtin.in), (builtin.di), (builtin.uo), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.di), (builtin.uo), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldl2_pred((pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldl2_pred((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldl2_pred((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldl2_pred((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is nondet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldl2_pred((pred((builtin.in), (builtin.di), (builtin.uo), (builtin.di), (builtin.uo)) is cc_multi), (builtin.in), (builtin.di), (builtin.uo), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldl2_pred((pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is cc_multi), (builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldl2_pred((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is cc_multi), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldr_pred((pred((builtin.in), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldr_pred((pred((builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldr_pred((pred((builtin.in), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldr_pred((pred((builtin.in), (builtin.in), (builtin.out)) is nondet), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldr_pred((pred((builtin.in), (builtin.di), (builtin.uo)) is cc_multi), (builtin.in), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldr_pred((pred((builtin.in), (builtin.in), (builtin.out)) is cc_multi), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldr2_pred((pred((builtin.in), (builtin.di), (builtin.uo), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.di), (builtin.uo), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldr2_pred((pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldr2_pred((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldr2_pred((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldr2_pred((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is nondet), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldr2_pred((pred((builtin.in), (builtin.di), (builtin.uo), (builtin.di), (builtin.uo)) is cc_multi), (builtin.in), (builtin.di), (builtin.uo), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldr2_pred((pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is cc_multi), (builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.do_foldr2_pred((pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is cc_multi), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.fold_bits((builtin.in), (pred((builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.fold_bits((builtin.in), (pred((builtin.in), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.fold_bits((builtin.in), (pred((builtin.in), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.fold_bits((builtin.in), (pred((builtin.in), (builtin.in), (builtin.out)) is nondet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.fold_bits((builtin.in), (pred((builtin.in), (builtin.di), (builtin.uo)) is cc_multi), (builtin.in), (builtin.in), (builtin.in), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.fold_bits((builtin.in), (pred((builtin.in), (builtin.in), (builtin.out)) is cc_multi), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.fold2_bits((builtin.in), (pred((builtin.in), (builtin.di), (builtin.uo), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.di), (builtin.uo), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.fold2_bits((builtin.in), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.fold2_bits((builtin.in), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.fold2_bits((builtin.in), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.fold2_bits((builtin.in), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is nondet), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.fold2_bits((builtin.in), (pred((builtin.in), (builtin.di), (builtin.uo), (builtin.di), (builtin.uo)) is cc_multi), (builtin.in), (builtin.in), (builtin.in), (builtin.di), (builtin.uo), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.fold2_bits((builtin.in), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)) is cc_multi), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.fold2_bits((builtin.in), (pred((builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)) is cc_multi), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.all_true_node(builtin.in((pred((builtin.in)) is semidet)), (builtin.in)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.all_true_bits(builtin.in((pred((builtin.in)) is semidet)), (builtin.in), (builtin.in), (builtin.in)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.insert_2((builtin.in), (builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(sparse_bitset.insert_new_2((builtin.in), (builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(sparse_bitset.remove_leq_2((builtin.in), (builtin.in)) = (builtin.out), finite(0, [yes, no, no]), cannot_loop).
:- pragma termination_info(sparse_bitset.remove_gt_2((builtin.in), (builtin.in)) = (builtin.out), finite(0, [yes, no, no]), cannot_loop).
:- pragma termination_info(sparse_bitset.list_to_set_2((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(sparse_bitset.sorted_list_to_set_2((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(sparse_bitset.contains_search_nodes((builtin.in), (builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(sparse_bitset.union_2((builtin.in), (builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(sparse_bitset.intersect_2((builtin.in), (builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(sparse_bitset.difference_2((builtin.in), (builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(sparse_bitset.divide_nodes(builtin.in((pred((builtin.in)) is semidet)), (builtin.in), (builtin.out), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.divide_bits(builtin.in((pred((builtin.in)) is semidet)), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.divide_nodes_by_set((builtin.in), (builtin.in), (builtin.out), (builtin.out)), infinite, can_loop).
:- pragma termination_info(sparse_bitset.mask((builtin.in)) = (builtin.out), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(sparse_bitset.make_bitset_elem((builtin.in), (builtin.in)) = (builtin.out), finite(2, [yes, yes, no]), cannot_loop).
:- pragma exceptions(function, (sparse_bitset.init), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (sparse_bitset.init), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (sparse_bitset.empty), 1, 0, may_throw(type_exception)).
:- pragma exceptions(predicate, (sparse_bitset.empty), 1, 1, will_not_throw).
:- pragma exceptions(predicate, (sparse_bitset.is_empty), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (sparse_bitset.is_non_empty), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (sparse_bitset.equal), 2, 0, may_throw(type_exception)).
:- pragma exceptions(function, (sparse_bitset.list_to_set), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.list_to_set), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (sparse_bitset.sorted_list_to_set), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.sorted_list_to_set), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (sparse_bitset.from_set), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (sparse_bitset.to_sorted_list), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.to_sorted_list), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (sparse_bitset.to_set), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (sparse_bitset.make_singleton_set), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.singleton_set), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.is_singleton), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.subset), 2, 0, may_throw(type_exception)).
:- pragma exceptions(predicate, (sparse_bitset.superset), 2, 0, may_throw(type_exception)).
:- pragma exceptions(predicate, (sparse_bitset.contains), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.member), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.member), 2, 1, may_throw(user_exception)).
:- pragma exceptions(function, (sparse_bitset.insert), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.insert), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.insert_new), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (sparse_bitset.insert_list), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.insert_list), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (sparse_bitset.delete), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.delete), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (sparse_bitset.delete_list), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.delete_list), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.remove), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.remove_list), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (sparse_bitset.remove_leq), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.remove_leq), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (sparse_bitset.remove_gt), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.remove_gt), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.remove_least), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (sparse_bitset.union), 3, 0, will_not_throw).
:- pragma exceptions(predicate, (sparse_bitset.union), 3, 0, will_not_throw).
:- pragma exceptions(function, (sparse_bitset.union_list), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (sparse_bitset.union_list), 2, 0, will_not_throw).
:- pragma exceptions(function, (sparse_bitset.intersect), 3, 0, will_not_throw).
:- pragma exceptions(predicate, (sparse_bitset.intersect), 3, 0, will_not_throw).
:- pragma exceptions(function, (sparse_bitset.intersect_list), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (sparse_bitset.intersect_list), 2, 0, will_not_throw).
:- pragma exceptions(function, (sparse_bitset.difference), 3, 0, will_not_throw).
:- pragma exceptions(predicate, (sparse_bitset.difference), 3, 0, will_not_throw).
:- pragma exceptions(predicate, (sparse_bitset.divide), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.divide_by_set), 4, 0, will_not_throw).
:- pragma exceptions(function, (sparse_bitset.count), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (sparse_bitset.foldl), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldl), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldl), 4, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldl), 4, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldl), 4, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldl), 4, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldl), 4, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldl2), 6, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldl2), 6, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldl2), 6, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldl2), 6, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldl2), 6, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldl2), 6, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldl2), 6, 6, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldl2), 6, 7, may_throw(user_exception)).
:- pragma exceptions(function, (sparse_bitset.foldr), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldr), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldr), 4, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldr), 4, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldr), 4, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldr), 4, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldr), 4, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldr2), 6, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldr2), 6, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldr2), 6, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldr2), 6, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldr2), 6, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldr2), 6, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldr2), 6, 6, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.foldr2), 6, 7, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.all_true), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (sparse_bitset.filter), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.filter), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldl_pred), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldl_pred), 4, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldl_pred), 4, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldl_pred), 4, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldl_pred), 4, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldl_pred), 4, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldl2_pred), 6, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldl2_pred), 6, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldl2_pred), 6, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldl2_pred), 6, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldl2_pred), 6, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldl2_pred), 6, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldl2_pred), 6, 6, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldl2_pred), 6, 7, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldr_pred), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldr_pred), 4, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldr_pred), 4, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldr_pred), 4, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldr_pred), 4, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldr_pred), 4, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldr2_pred), 6, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldr2_pred), 6, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldr2_pred), 6, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldr2_pred), 6, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldr2_pred), 6, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldr2_pred), 6, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldr2_pred), 6, 6, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.do_foldr2_pred), 6, 7, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.fold_bits), 7, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.fold_bits), 7, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.fold_bits), 7, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.fold_bits), 7, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.fold_bits), 7, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.fold_bits), 7, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.fold2_bits), 9, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.fold2_bits), 9, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.fold2_bits), 9, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.fold2_bits), 9, 3, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.fold2_bits), 9, 4, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.fold2_bits), 9, 5, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.fold2_bits), 9, 6, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.fold2_bits), 9, 7, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.all_true_node), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.all_true_bits), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.insert_2), 3, 0, will_not_throw).
:- pragma exceptions(predicate, (sparse_bitset.insert_new_2), 3, 0, will_not_throw).
:- pragma exceptions(function, (sparse_bitset.remove_leq_2), 3, 0, will_not_throw).
:- pragma exceptions(function, (sparse_bitset.remove_gt_2), 3, 0, will_not_throw).
:- pragma exceptions(function, (sparse_bitset.list_to_set_2), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (sparse_bitset.sorted_list_to_set_2), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.contains_search_nodes), 2, 0, will_not_throw).
:- pragma exceptions(function, (sparse_bitset.union_2), 3, 0, will_not_throw).
:- pragma exceptions(function, (sparse_bitset.intersect_2), 3, 0, will_not_throw).
:- pragma exceptions(function, (sparse_bitset.difference_2), 3, 0, will_not_throw).
:- pragma exceptions(predicate, (sparse_bitset.divide_nodes), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.divide_bits), 9, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (sparse_bitset.divide_nodes_by_set), 4, 0, will_not_throw).
:- pragma exceptions(function, (sparse_bitset.mask), 2, 0, will_not_throw).
:- pragma exceptions(function, (sparse_bitset.make_bitset_elem), 3, 0, will_not_throw).
