Module BO.ArrayBlk
module ArrInfo : sig ... endinclude Absint.AbstractDomain.MapS with type key = AbsLoc.Allocsite.t and type value = ArrInfo.t
include IStdlib.PrettyPrintable.PPMonoMap
include IStdlib.PrettyPrintable.MonoMap
val empty : tval is_empty : t -> boolval mem : key -> t -> boolval add : key -> value -> t -> tval update : key -> (value option -> value option) -> t -> tval singleton : key -> value -> tval remove : key -> t -> tval merge : (key -> value option -> value option -> value option) -> t -> t -> tval union : (key -> value -> value -> value option) -> t -> t -> tval compare : (value -> value -> int) -> t -> t -> intval equal : (value -> value -> bool) -> t -> t -> boolval iter : (key -> value -> unit) -> t -> unitval fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'aval for_all : (key -> value -> bool) -> t -> boolval exists : (key -> value -> bool) -> t -> boolval filter : (key -> value -> bool) -> t -> tval partition : (key -> value -> bool) -> t -> t * tval cardinal : t -> intval bindings : t -> (key * value) listval min_binding : t -> key * valueval min_binding_opt : t -> (key * value) optionval max_binding : t -> key * valueval max_binding_opt : t -> (key * value) optionval choose : t -> key * valueval choose_opt : t -> (key * value) optionval split : key -> t -> t * value option * tval find : key -> t -> valueval find_opt : key -> t -> value optionval find_first : (key -> bool) -> t -> key * valueval find_first_opt : (key -> bool) -> t -> (key * value) optionval find_last : (key -> bool) -> t -> key * valueval find_last_opt : (key -> bool) -> t -> (key * value) optionval map : (value -> value) -> t -> tval mapi : (key -> value -> value) -> t -> tval is_singleton_or_more : t -> (key * value) IStdlib.IContainer.singleton_or_moreval fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * tval of_seq : (key * value) Stdlib.Seq.t -> t
include IStdlib.PrettyPrintable.PrintableType with type t := t
val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
include Absint.AbstractDomain.WithBottom with type t := t
include Absint.AbstractDomain.S
include Absint.AbstractDomain.NoJoin
include IStdlib.PrettyPrintable.PrintableType
val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
val bottom : tThe bottom value of the domain.
val is_bottom : t -> boolReturn true if this is the bottom value
val compare : t -> t -> intval bot : tval make_c : AbsLoc.Allocsite.t -> offset:Itv.t -> size:Itv.t -> stride:Itv.t -> tMake an array block for C
val make_java : AbsLoc.Allocsite.t -> length:Itv.t -> tMake an array block for Java
val unknown : tval get_pow_loc : t -> AbsLoc.PowLoc.tReturn all allocsites as
PowLoc.t
val is_bot : t -> boolval is_symbolic : t -> boolCheck if there is a symbolic integer value in its offset or size
val lift_cmp_itv : (Itv.t -> Itv.t -> Boolean.t) -> Boolean.EqualOrder.t -> t -> t -> Boolean.tLift a comparison of
Itv.tandLoc.tto that oft. The comparison forItv.tis used for integer values such as offset and size, and the comparison forLoc.tis used for allocsites.
val prune_binop : IR.Binop.t -> t -> t -> tprune_binop bop x yreturns a pruned value ofxbybopandy.
val minus_offset : t -> Itv.t -> tval plus_offset : t -> Itv.t -> tval diff : t -> t -> Itv.tReturn difference of offsets between given array blocks
val normalize : t -> tNormalize all interval values such as offset and size in it. Thus, if an interval value is invalid, the interval value is replaced with bottom.
val subst : t -> Bounds.Bound.eval_sym -> AbsLoc.PowLoc.eval_locpath -> AbsLoc.PowLoc.t * tSubstitute symbolic abstract locations and symbolic interval value in the array block.
eval_symis to get substituted interval values andeval_locpathis to get substituted abstract locaion values. It also returns a set of abstract locations containing non-allocsite locations from the substitution results. Since the key ofArrayBlk.tisAbsLoc.Allocsite.t, they cannot be written in this domain.
val set_length : Itv.t -> t -> tval set_offset : Itv.t -> t -> tval set_stride : Z.t -> t -> tval get_symbols : t -> BO.Symb.SymbolSet.tReturn all symbols for integer values in it