Module type Sig.BITVECTOR_LATTICE
A full bitvector lattice, combining core operations and queries. Also allows conversion to standard domains like known-bits or intervals.
include BITVECTOR_LATTICE_NO_CONVERSION
include Datatype_sig.S
Any notion of equality is allowed, as long as it is an equivalence relation, and that if a == b, then equal a b.
val hash : t -> inthash requires that equal values have the same hash.
val bottom : size:Units.In_bits.t -> tval is_bottom : size:Units.In_bits.t -> t -> boolval top : size:Units.In_bits.t -> tval inter : size:Units.In_bits.t -> t -> t -> tval join : size:Units.In_bits.t -> t -> t -> tval pretty : size:Units.In_bits.t -> Stdlib.Format.formatter -> t -> unitval widen : size:Units.In_bits.t -> previous:t -> t -> tval includes : size:Units.In_bits.t -> t -> t -> boolval includes_or_widen : size:Units.In_bits.t -> previous:t -> t -> bool * tval singleton : size:Units.In_bits.t -> Z.t -> tinclude BITVECTOR_QUERIES with type t := t
val is_singleton : size:Units.In_bits.t -> t -> Z.t optionval is_empty : size:Units.In_bits.t -> t -> boolTrue if the binary cannot be concretized into any value.
val fold_crop_signed :
size:Units.In_bits.t ->
t ->
inf:Z.t ->
sup:Z.t ->
'a ->
(Z.t -> 'a -> 'a) ->
'aFold on all integers contained in either the signed or unsigned representation of a binary.
val fold_crop_unsigned :
size:Units.In_bits.t ->
t ->
inf:Z.t ->
sup:Z.t ->
'a ->
(Z.t -> 'a -> 'a) ->
'aval to_known_bits : size:Units.In_bits.t -> t -> Z.t * Z.tval to_unsigned_interval : size:Units.In_bits.t -> t -> Z.t * Z.tval to_signed_interval : size:Units.In_bits.t -> t -> Z.t * Z.t