Legend:
Library
Module
Module type
Parameter
Class
Class type
Bit-lists provide a domain on bit-vectors that represent the known bits sets to 1 and 0, respectively.
This module provides an implementation of bitlists and related operators. The bitlists provided by this module do not have a fixed width, and can represent arbitrary-precision integers.
type t
The type of bitlists.
Bitlists are indexed from the right: the least-significant bit has index 0.
Bitlists include an explanation (that can be recovered through the explanation function). The explanation indicates why the bitlist applies to a value, which must be maintained separately.
The explanation associated with the result of any bitlist operation is the union of the explanations associated with its arguments.
value b returns the value associated with the bitlist b. If the bitlist b is not fully known, then only the known bits (those that are set in bits_known b) are meaningful; unknown bits are set to 0.
intersect b1 b2 returns a new bitlist b that subsumes both b1 and b2. Any explanation justifying that b1 and b2 apply to the same value must have been added to b1 and b2.
Raises Inconsistent if b1 and b2 are not compatible (i.e. there are bits set in one bitlist and cleared in the other).
Shifts to the right. This is an arithmetic shift, equivalent to a division by a power of 2 with rounding towards -oo. The second argument must be nonnegative.