module Location_Bits: sig
.. end
Association between varids and offsets in bits.
Consult the Plugin Development Guide for additional details.
module M: sig
.. end
module Top_Param: Lattice_Set
with type O.elt = Base.t
type
tt =
| |
Top of Top_Param.t * Origin.t |
| |
Map of M.t |
include Datatype.S_with_collections
val top : t
val bottom : t
val find_or_bottom : Base.t -> M.t -> Ival.t
val add_or_bottom : Base.t ->
Ival.t -> M.t -> M.t
val inject : Base.t -> Ival.t -> t
val inject_ival : Ival.t -> t
val join : t -> t -> t
Over-approximation of union.
val link : t -> t -> t
Under_approximation of union.
val narrow : t -> t -> t
Over-approximation of intersection.
val meet : t -> t -> t
Under-approximation of intersection.
val diff : t -> t -> t
Over-approximation of difference. arg2
needs to be exact or an
under_approximation.
val diff_if_one : t -> t -> t
Over-approximation of difference. arg2
can be an
over-approximation.
exception Error_Bottom
exception Error_Top
val find_exclusive : Base.t -> t -> Ival.t
find_exclusive k m
returns v
if m
contains only the binding k
-> v
.
Raises Not_exclusive
otherwise.
val is_relationable : t -> bool
exception Not_all_keys
val get_keys_exclusive : Ival.t -> t -> Base.t list
val intersects : t -> t -> bool
intersects t1 t2
is true iff t1
and t2
have a nonempty
intersection
val inject_top_origin : Origin.t -> Top_Param.O.t -> t
inject_top_origin origin p
creates a top with origin origin
and additional information param
val topify_arith_origin : t -> t
type
widen_hint
val widen : widen_hint -> t -> t -> t
val is_included : t -> t -> bool
val find_lonely_binding : t -> Base.t * Ival.t
val find_lonely_key : t -> Base.t * Ival.t
val cardinal_zero_or_one : t -> bool
val cardinal_less_than : t -> int -> int
val location_shift : Ival.t -> t -> t
val filter_base : (Base.t -> bool) -> t -> t
val fold_i : (Base.t -> Ival.t -> 'a -> 'a) -> t -> 'a -> 'a
val fold_enum : split_non_enumerable:int -> (t -> 'a -> 'a) -> t -> 'a -> 'a
val is_in_set : set:Top_Param.O.t -> Base.t -> bool
val fold_bases : (Base.t -> 'a -> 'a) -> t -> 'a -> 'a
val get_bases : t -> Top_Param.t