:- module bitmap.
:- pragma termination_info(bitmap.init((builtin.in), (builtin.in)) = (bitmap.bitmap_uo), infinite, can_loop).
:- pragma termination_info(bitmap.init((builtin.in)) = (bitmap.bitmap_uo), infinite, can_loop).
:- pragma termination_info(bitmap.copy((builtin.in)) = (bitmap.bitmap_uo), infinite, cannot_loop).
:- pragma termination_info(bitmap.resize((bitmap.bitmap_di), (builtin.in), (builtin.in)) = (bitmap.bitmap_uo), infinite, can_loop).
:- pragma termination_info(bitmap.shrink_without_copying((bitmap.bitmap_di), (builtin.in)) = (bitmap.bitmap_uo), infinite, can_loop).
:- pragma termination_info(bitmap.in_range((builtin.in), (builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(bitmap.byte_in_range((builtin.in), (builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(bitmap.num_bits((builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(bitmap.num_bytes((builtin.in)) = (builtin.out), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(bitmap.det_num_bytes((builtin.in)) = (builtin.out), finite(0, [no, no]), cannot_loop).
:- pragma termination_info((bitmap.bits_per_byte) = (builtin.out), finite(0, [no]), cannot_loop).
:- pragma termination_info(bitmap.bit((builtin.in), (builtin.in)) = (builtin.out), finite(0, [no, no, no]), can_loop).
:- pragma termination_info(bitmap.unsafe_bit((builtin.in), (builtin.in)) = (builtin.out), finite(0, [no, no, no]), cannot_loop).
:- pragma termination_info(bitmap.'bit :='((builtin.in), (bitmap.bitmap_di), (builtin.in)) = (bitmap.bitmap_uo), infinite, can_loop).
:- pragma termination_info(bitmap.'unsafe_bit :='((builtin.in), (bitmap.bitmap_di), (builtin.in)) = (bitmap.bitmap_uo), infinite, cannot_loop).
:- pragma termination_info(bitmap.bits((builtin.in), (builtin.in), (builtin.in)) = (builtin.out), finite(0, [no, no, no, no]), can_loop).
:- pragma termination_info(bitmap.unsafe_bits((builtin.in), (builtin.in), (builtin.in)) = (builtin.out), finite(0, [no, no, no, no]), can_loop).
:- pragma termination_info(bitmap.'bits :='((builtin.in), (builtin.in), (bitmap.bitmap_di), (builtin.in)) = (bitmap.bitmap_uo), infinite, can_loop).
:- pragma termination_info(bitmap.'unsafe_bits :='((builtin.in), (builtin.in), (bitmap.bitmap_di), (builtin.in)) = (bitmap.bitmap_uo), infinite, can_loop).
:- pragma termination_info(bitmap.byte((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(bitmap.unsafe_byte((builtin.in), (builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(bitmap.'byte :='((builtin.in), (bitmap.bitmap_di), (builtin.in)) = (bitmap.bitmap_uo), infinite, can_loop).
:- pragma termination_info(bitmap.'unsafe_byte :='((builtin.in), (bitmap.bitmap_di), (builtin.in)) = (bitmap.bitmap_uo), infinite, cannot_loop).
:- pragma termination_info(bitmap.slice((builtin.in), (builtin.in), (builtin.in)) = (builtin.out), finite(3, [yes, yes, yes, no]), can_loop).
:- pragma termination_info(bitmap.byte_slice((builtin.in), (builtin.in), (builtin.in)) = (builtin.out), finite(3, [yes, no, no, no]), can_loop).
:- pragma termination_info(bitmap.slice_bitmap((builtin.in)) = (builtin.out), finite(-3, [yes, no]), cannot_loop).
:- pragma termination_info(bitmap.slice_start_bit_index((builtin.in)) = (builtin.out), finite(-3, [yes, no]), cannot_loop).
:- pragma termination_info(bitmap.slice_num_bits((builtin.in)) = (builtin.out), finite(-3, [yes, no]), cannot_loop).
:- pragma termination_info(bitmap.slice_start_byte_index((builtin.in)) = (builtin.out), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(bitmap.slice_num_bytes((builtin.in)) = (builtin.out), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(bitmap.flip((bitmap.bitmap_di), (builtin.in)) = (bitmap.bitmap_uo), infinite, can_loop).
:- pragma termination_info(bitmap.unsafe_flip((bitmap.bitmap_di), (builtin.in)) = (bitmap.bitmap_uo), infinite, cannot_loop).
:- pragma termination_info(bitmap.complement((bitmap.bitmap_di)) = (bitmap.bitmap_uo), infinite, can_loop).
:- pragma termination_info(bitmap.union((builtin.in), (bitmap.bitmap_di)) = (bitmap.bitmap_uo), infinite, can_loop).
:- pragma termination_info(bitmap.intersect((builtin.in), (bitmap.bitmap_di)) = (bitmap.bitmap_uo), infinite, can_loop).
:- pragma termination_info(bitmap.difference((builtin.in), (bitmap.bitmap_di)) = (bitmap.bitmap_uo), infinite, can_loop).
:- pragma termination_info(bitmap.xor((builtin.in), (bitmap.bitmap_di)) = (bitmap.bitmap_uo), infinite, can_loop).
:- pragma termination_info(bitmap.append_list((builtin.in)) = (bitmap.bitmap_uo), infinite, can_loop).
:- pragma termination_info(bitmap.copy_bits((builtin.in), (builtin.in), (bitmap.bitmap_di), (builtin.in), (builtin.in)) = (bitmap.bitmap_uo), infinite, can_loop).
:- pragma termination_info(bitmap.copy_bits_in_bitmap((bitmap.bitmap_di), (builtin.in), (builtin.in), (builtin.in)) = (bitmap.bitmap_uo), infinite, can_loop).
:- pragma termination_info(bitmap.copy_bytes((builtin.in), (builtin.in), (bitmap.bitmap_di), (builtin.in), (builtin.in)) = (bitmap.bitmap_uo), infinite, cannot_loop).
:- pragma termination_info(bitmap.copy_bytes_in_bitmap((bitmap.bitmap_di), (builtin.in), (builtin.in), (builtin.in)) = (bitmap.bitmap_uo), infinite, cannot_loop).
:- pragma termination_info(bitmap.to_string((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(bitmap.from_string((builtin.in)) = (bitmap.bitmap_uo), infinite, can_loop).
:- pragma termination_info(bitmap.to_byte_string((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(bitmap.hash((builtin.in)) = (builtin.out), finite(0, [no, no]), can_loop).
:- pragma termination_info(bitmap.set((bitmap.bitmap_di), (builtin.in)) = (bitmap.bitmap_uo), infinite, can_loop).
:- pragma termination_info(bitmap.clear((bitmap.bitmap_di), (builtin.in)) = (bitmap.bitmap_uo), infinite, can_loop).
:- pragma termination_info(bitmap.is_set((builtin.in), (builtin.in)), finite(0, [no, no]), can_loop).
:- pragma termination_info(bitmap.is_clear((builtin.in), (builtin.in)), finite(0, [no, no]), can_loop).
:- pragma termination_info(bitmap.unsafe_set((bitmap.bitmap_di), (builtin.in)) = (bitmap.bitmap_uo), infinite, cannot_loop).
:- pragma termination_info(bitmap.unsafe_clear((bitmap.bitmap_di), (builtin.in)) = (bitmap.bitmap_uo), infinite, cannot_loop).
:- pragma termination_info(bitmap.unsafe_set((builtin.in), (bitmap.bitmap_di), (bitmap.bitmap_uo)), infinite, cannot_loop).
:- pragma termination_info(bitmap.unsafe_clear((builtin.in), (bitmap.bitmap_di), (bitmap.bitmap_uo)), infinite, cannot_loop).
:- pragma termination_info(bitmap.unsafe_flip((builtin.in), (bitmap.bitmap_di), (bitmap.bitmap_uo)), infinite, cannot_loop).
:- pragma termination_info(bitmap.unsafe_is_set((builtin.in), (builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(bitmap.unsafe_is_clear((builtin.in), (builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(bitmap.set((builtin.in), (bitmap.bitmap_di), (bitmap.bitmap_uo)), infinite, can_loop).
:- pragma termination_info(bitmap.clear((builtin.in), (bitmap.bitmap_di), (bitmap.bitmap_uo)), infinite, can_loop).
:- pragma termination_info(bitmap.flip((builtin.in), (bitmap.bitmap_di), (bitmap.bitmap_uo)), infinite, can_loop).
:- pragma termination_info(bitmap.throw_bounds_error((builtin.in), (builtin.in), (builtin.in), (builtin.in)), infinite, can_loop).
:- pragma termination_info(bitmap.clear_filler_bits((bitmap.bitmap_di)) = (bitmap.bitmap_uo), infinite, cannot_loop).
:- pragma termination_info(bitmap.set_trailing_bits_in_byte((bitmap.bitmap_di), (builtin.in), (builtin.in)) = (bitmap.bitmap_uo), infinite, cannot_loop).
:- pragma termination_info(bitmap.extract_bits_from_bytes((builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.in), (builtin.out)), finite(0, [no, no, no, no, yes, no]), can_loop).
:- pragma termination_info(bitmap.set_bits_in_bytes((builtin.in), (builtin.in), (builtin.in), (builtin.in), (bitmap.bitmap_di), (bitmap.bitmap_uo)), infinite, can_loop).
:- pragma termination_info(bitmap.quotient_bits_per_byte_with_rem_zero((builtin.in), (builtin.in)) = (builtin.out), finite(0, [no, no, no]), cannot_loop).
:- pragma termination_info(bitmap.complement_2((builtin.in), (bitmap.bitmap_di)) = (bitmap.bitmap_uo), infinite, can_loop).
:- pragma termination_info(bitmap.zip((func((builtin.in), (builtin.in)) = (builtin.out) is det), (builtin.in), (bitmap.bitmap_di)) = (bitmap.bitmap_uo), infinite, can_loop).
:- pragma termination_info(bitmap.zip2((builtin.in), (func((builtin.in), (builtin.in)) = (builtin.out) is det), (builtin.in), (bitmap.bitmap_di)) = (bitmap.bitmap_uo), infinite, can_loop).
:- pragma termination_info(bitmap.copy_bits((builtin.in), (builtin.in), (builtin.in), (bitmap.bitmap_di), (builtin.in), (builtin.in)) = (bitmap.bitmap_uo), infinite, can_loop).
:- pragma termination_info(bitmap.copy_bytes((builtin.in), (builtin.in), (builtin.in), (bitmap.bitmap_di), (builtin.in), (builtin.in)) = (bitmap.bitmap_uo), infinite, cannot_loop).
:- pragma termination_info(bitmap.bitmap_to_byte_strings((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(bitmap.bitmap_to_byte_strings((builtin.in), (builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(bitmap.bitmap_equal((builtin.in), (builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(bitmap.bitmap_compare((builtin.uo), (builtin.in), (builtin.in)), infinite, cannot_loop).
:- pragma termination_info(bitmap.byte_index_for_bit((builtin.in)) = (builtin.out), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(bitmap.bit_index_in_byte((builtin.in)) = (builtin.out), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(bitmap.bitmask((builtin.in)) = (builtin.out), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(bitmap.throw_bounds_error((builtin.in), (builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(bitmap.throw_bitmap_error((builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(bitmap.throw_bitmap_error((builtin.in)), infinite, cannot_loop).
:- pragma exceptions(function, (bitmap.init), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.init), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.copy), 2, 0, will_not_throw).
:- pragma exceptions(function, (bitmap.resize), 4, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.shrink_without_copying), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (bitmap.in_range), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (bitmap.byte_in_range), 2, 0, will_not_throw).
:- pragma exceptions(function, (bitmap.num_bits), 2, 0, will_not_throw).
:- pragma exceptions(function, (bitmap.num_bytes), 2, 0, will_not_throw).
:- pragma exceptions(function, (bitmap.det_num_bytes), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.bits_per_byte), 1, 0, will_not_throw).
:- pragma exceptions(function, (bitmap.bit), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.unsafe_bit), 3, 0, will_not_throw).
:- pragma exceptions(function, (bitmap.'bit :='), 4, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.'unsafe_bit :='), 4, 0, will_not_throw).
:- pragma exceptions(function, (bitmap.bits), 4, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.unsafe_bits), 4, 0, will_not_throw).
:- pragma exceptions(function, (bitmap.'bits :='), 5, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.'unsafe_bits :='), 5, 0, will_not_throw).
:- pragma exceptions(function, (bitmap.byte), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.unsafe_byte), 3, 0, will_not_throw).
:- pragma exceptions(function, (bitmap.'byte :='), 4, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.'unsafe_byte :='), 4, 0, will_not_throw).
:- pragma exceptions(function, (bitmap.slice), 4, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.byte_slice), 4, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.slice_bitmap), 2, 0, will_not_throw).
:- pragma exceptions(function, (bitmap.slice_start_bit_index), 2, 0, will_not_throw).
:- pragma exceptions(function, (bitmap.slice_num_bits), 2, 0, will_not_throw).
:- pragma exceptions(function, (bitmap.slice_start_byte_index), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.slice_num_bytes), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.flip), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.unsafe_flip), 3, 0, will_not_throw).
:- pragma exceptions(function, (bitmap.complement), 2, 0, will_not_throw).
:- pragma exceptions(function, (bitmap.union), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.intersect), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.difference), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.xor), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.append_list), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.copy_bits), 6, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.copy_bits_in_bitmap), 5, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.copy_bytes), 6, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.copy_bytes_in_bitmap), 5, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.to_string), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.from_string), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.to_byte_string), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.hash), 2, 0, will_not_throw).
:- pragma exceptions(function, (bitmap.set), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.clear), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (bitmap.is_set), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (bitmap.is_clear), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.unsafe_set), 3, 0, will_not_throw).
:- pragma exceptions(function, (bitmap.unsafe_clear), 3, 0, will_not_throw).
:- pragma exceptions(predicate, (bitmap.unsafe_set), 3, 0, will_not_throw).
:- pragma exceptions(predicate, (bitmap.unsafe_clear), 3, 0, will_not_throw).
:- pragma exceptions(predicate, (bitmap.unsafe_flip), 3, 0, will_not_throw).
:- pragma exceptions(predicate, (bitmap.unsafe_is_set), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (bitmap.unsafe_is_clear), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (bitmap.set), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (bitmap.clear), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (bitmap.flip), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (bitmap.throw_bounds_error), 4, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.clear_filler_bits), 2, 0, will_not_throw).
:- pragma exceptions(function, (bitmap.set_trailing_bits_in_byte), 4, 0, will_not_throw).
:- pragma exceptions(predicate, (bitmap.extract_bits_from_bytes), 6, 0, will_not_throw).
:- pragma exceptions(predicate, (bitmap.set_bits_in_bytes), 6, 0, will_not_throw).
:- pragma exceptions(function, (bitmap.quotient_bits_per_byte_with_rem_zero), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.complement_2), 3, 0, will_not_throw).
:- pragma exceptions(function, (bitmap.zip), 4, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.zip2), 5, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.copy_bits), 7, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.copy_bytes), 7, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.bitmap_to_byte_strings), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.bitmap_to_byte_strings), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (bitmap.bitmap_equal), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (bitmap.bitmap_compare), 3, 0, will_not_throw).
:- pragma exceptions(function, (bitmap.byte_index_for_bit), 2, 0, will_not_throw).
:- pragma exceptions(function, (bitmap.bit_index_in_byte), 2, 0, will_not_throw).
:- pragma exceptions(function, (bitmap.bitmask), 2, 0, will_not_throw).
:- pragma exceptions(function, (bitmap.throw_bounds_error), 4, 0, may_throw(user_exception)).
:- pragma exceptions(function, (bitmap.throw_bitmap_error), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (bitmap.throw_bitmap_error), 1, 0, may_throw(user_exception)).
