Module Offsetmap_lattice_with_isotropy

module Offsetmap_lattice_with_isotropy: sig .. end
Type of the arguments of functor Offsetmap.Make

include Bounded_Join_Semi_Lattice
include With_Top
include With_Widening
include With_Cardinal_One
val is_isotropic : t -> bool
Are the bits independent?
val extract_bits : topify:Origin.kind ->
start:Integer.t -> stop:Integer.t -> size:Integer.t -> t -> bool * t
Extract the bits between start and stop in the value of type t, assuming this value has size bits. Return the corresponding value, and a boolean indicating that an imprecision occurred during the operation. In the latter case, the origin of the imprecision is flagged as having kind topify
val little_endian_merge_bits : topify:Origin.kind ->
conflate_bottom:bool ->
total_length:int -> value:t -> offset:Integer.t -> t -> t
val big_endian_merge_bits : topify:Origin.kind ->
conflate_bottom:bool ->
total_length:int -> length:Integer.t -> value:t -> offset:Integer.t -> t -> t
val merge_neutral_element : t
Value that can be passed to Offsetmap_lattice_with_isotropy.little_endian_merge_bits or Offsetmap_lattice_with_isotropy.big_endian_merge_bits as the starting value. This value must be neutral wrt. concatenation of values.
val topify_with_origin : Origin.t -> t -> t
Force a value to be isotropic, when a loss of imprecision occurs. The resulting value must verify Offsetmap_lattice_with_isotropy.is_isotropic.
val anisotropic_cast : size:Integer.t -> t -> t
Convert the given value so that it fits in size bits.