sig   module CardinalEstimate :     sig       type t       val one : Cvalue.CardinalEstimate.t       val pretty : Format.formatter -> Cvalue.CardinalEstimate.t -> unit       val pretty_long_log10 :         Format.formatter -> Cvalue.CardinalEstimate.t -> unit     end   module V :     sig       module M :         sig           type key = Base.t           type t = Locations.Location_Bytes.M.t           val iter : (Base.t -> Ival.t -> unit) -> t -> unit           val find : key -> t -> Ival.t           val fold : (Base.t -> Ival.t -> '-> 'a) -> t -> '-> 'a           val shape : t -> Ival.t Hptmap.Shape(Base.Base).t         end       type t =         Locations.Location_Bytes.t =           Top of Base.SetLattice.t * Origin.t         | Map of M.t       type size_widen_hint = Locations.Location_Bytes.size_widen_hint       type generic_widen_hint = Locations.Location_Bytes.generic_widen_hint       type widen_hint = size_widen_hint * generic_widen_hint       val top : t       val narrow : t -> t -> t       val link : t -> t -> t       val meet : t -> t -> t       val intersects : t -> t -> bool       exception Error_Top       module Set :         sig           type elt = t           type t           val empty : t           val is_empty : t -> bool           val mem : elt -> t -> bool           val add : elt -> t -> t           val singleton : elt -> t           val remove : elt -> t -> t           val union : t -> t -> t           val inter : t -> t -> t           val diff : t -> t -> t           val subset : t -> t -> bool           val iter : (elt -> unit) -> t -> unit           val fold : (elt -> '-> 'a) -> t -> '-> 'a           val for_all : (elt -> bool) -> t -> bool           val exists : (elt -> bool) -> t -> bool           val filter : (elt -> bool) -> t -> t           val partition : (elt -> bool) -> t -> t * t           val cardinal : t -> int           val elements : t -> elt list           val choose : t -> elt           val split : elt -> t -> t * bool * t           val find : elt -> t -> elt           val of_list : elt list -> t           val min_elt : t -> elt           val max_elt : t -> elt           val nearest_elt_le : elt -> t -> elt           val nearest_elt_ge : elt -> t -> elt           val ty : t Type.t           val name : string           val descr : t Descr.t           val packed_descr : Structural_descr.pack           val reprs : t list           val equal : t -> t -> bool           val compare : t -> t -> int           val hash : t -> int           val pretty_code : Format.formatter -> t -> unit           val internal_pretty_code :             Type.precedence -> Format.formatter -> t -> unit           val pretty : Format.formatter -> t -> unit           val varname : t -> string           val mem_project : (Project_skeleton.t -> bool) -> t -> bool           val copy : t -> t         end       module Map :         sig           type key = t           type +'a t           val empty : 'a t           val is_empty : 'a t -> bool           val mem : key -> 'a t -> bool           val add : key -> '-> 'a t -> 'a t           val singleton : key -> '-> 'a t           val remove : key -> 'a t -> 'a t           val merge :             (key -> 'a option -> 'b option -> 'c option) ->             'a t -> 'b t -> 'c t           val compare : ('-> '-> int) -> 'a t -> 'a t -> int           val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool           val iter : (key -> '-> unit) -> 'a t -> unit           val fold : (key -> '-> '-> 'b) -> 'a t -> '-> 'b           val for_all : (key -> '-> bool) -> 'a t -> bool           val exists : (key -> '-> bool) -> 'a t -> bool           val filter : (key -> '-> bool) -> 'a t -> 'a t           val partition : (key -> '-> bool) -> 'a t -> 'a t * 'a t           val cardinal : 'a t -> int           val bindings : 'a t -> (key * 'a) list           val min_binding : 'a t -> key * 'a           val max_binding : 'a t -> key * 'a           val choose : 'a t -> key * 'a           val split : key -> 'a t -> 'a t * 'a option * 'a t           val find : key -> 'a t -> 'a           val map : ('-> 'b) -> 'a t -> 'b t           val mapi : (key -> '-> 'b) -> 'a t -> 'b t           module Key :             sig               type t = key               val ty : t Type.t               val name : string               val descr : t Descr.t               val packed_descr : Structural_descr.pack               val reprs : t list               val equal : t -> t -> bool               val compare : t -> t -> int               val hash : t -> int               val pretty_code : Format.formatter -> t -> unit               val internal_pretty_code :                 Type.precedence -> Format.formatter -> t -> unit               val pretty : Format.formatter -> t -> unit               val varname : t -> string               val mem_project : (Project_skeleton.t -> bool) -> t -> bool               val copy : t -> t             end           module Make :             functor (Data : Datatype.S->               sig                 type t = Data.t t                 val ty : t Type.t                 val name : string                 val descr : t Descr.t                 val packed_descr : Structural_descr.pack                 val reprs : t list                 val equal : t -> t -> bool                 val compare : t -> t -> int                 val hash : t -> int                 val pretty_code : Format.formatter -> t -> unit                 val internal_pretty_code :                   Type.precedence -> Format.formatter -> t -> unit                 val pretty : Format.formatter -> t -> unit                 val varname : t -> string                 val mem_project : (Project_skeleton.t -> bool) -> t -> bool                 val copy : t -> t               end         end       module Hashtbl :         sig           type key = t           type 'a t           val create : int -> 'a t           val clear : 'a t -> unit           val reset : 'a t -> unit           val copy : 'a t -> 'a t           val add : 'a t -> key -> '-> unit           val remove : 'a t -> key -> unit           val find : 'a t -> key -> 'a           val find_all : 'a t -> key -> 'a list           val replace : 'a t -> key -> '-> unit           val mem : 'a t -> key -> bool           val iter : (key -> '-> unit) -> 'a t -> unit           val filter_map_inplace : (key -> '-> 'a option) -> 'a t -> unit           val fold : (key -> '-> '-> 'b) -> 'a t -> '-> 'b           val length : 'a t -> int           val stats : 'a t -> Hashtbl.statistics           val iter_sorted :             ?cmp:(key -> key -> int) -> (key -> '-> unit) -> 'a t -> unit           val fold_sorted :             ?cmp:(key -> key -> int) ->             (key -> '-> '-> 'b) -> 'a t -> '-> 'b           val iter_sorted_by_entry :             cmp:(key * '-> key * '-> int) ->             (key -> '-> unit) -> 'a t -> unit           val fold_sorted_by_entry :             cmp:(key * '-> key * '-> int) ->             (key -> '-> '-> 'b) -> 'a t -> '-> 'b           val iter_sorted_by_value :             cmp:('-> '-> int) -> (key -> '-> unit) -> 'a t -> unit           val fold_sorted_by_value :             cmp:('-> '-> int) ->             (key -> '-> '-> 'b) -> 'a t -> '-> 'b           val structural_descr : Structural_descr.t -> Structural_descr.t           val make_type : 'Type.t -> 'a t Type.t           val memo : 'a t -> key -> (key -> 'a) -> 'a           module Key :             sig               type t = key               val ty : t Type.t               val name : string               val descr : t Descr.t               val packed_descr : Structural_descr.pack               val reprs : t list               val equal : t -> t -> bool               val compare : t -> t -> int               val hash : t -> int               val pretty_code : Format.formatter -> t -> unit               val internal_pretty_code :                 Type.precedence -> Format.formatter -> t -> unit               val pretty : Format.formatter -> t -> unit               val varname : t -> string               val mem_project : (Project_skeleton.t -> bool) -> t -> bool               val copy : t -> t             end           module Make :             functor (Data : Datatype.S->               sig                 type t = Data.t t                 val ty : t Type.t                 val name : string                 val descr : t Descr.t                 val packed_descr : Structural_descr.pack                 val reprs : t list                 val equal : t -> t -> bool                 val compare : t -> t -> int                 val hash : t -> int                 val pretty_code : Format.formatter -> t -> unit                 val internal_pretty_code :                   Type.precedence -> Format.formatter -> t -> unit                 val pretty : Format.formatter -> t -> unit                 val varname : t -> string                 val mem_project : (Project_skeleton.t -> bool) -> t -> bool                 val copy : t -> t               end         end       val singleton_zero : t       val singleton_one : t       val zero_or_one : t       val is_zero : t -> bool       val top_int : t       val top_float : t       val top_single_precision_float : t       val inject : Base.t -> Ival.t -> t       val inject_ival : Ival.t -> t       val inject_float : Fval.F.t -> t       val add : Base.t -> Ival.t -> t -> t       val diff : t -> t -> t       val diff_if_one : t -> t -> t       val shift : Ival.t -> t -> t       val shift_under : Ival.t -> t -> t       val sub_pointwise : ?factor:Int_Base.t -> t -> t -> Ival.t       val topify_arith_origin : t -> t       val topify_misaligned_read_origin : t -> t       val topify_merge_origin : t -> t       val topify_leaf_origin : t -> t       val topify_with_origin_kind : Origin.kind -> t -> t       val inject_top_origin : Origin.t -> Base.Hptset.t -> t       val top_with_origin : Origin.t -> t       val fold_bases : (Base.t -> '-> 'a) -> t -> '-> 'a       val fold_i : (Base.t -> Ival.t -> '-> 'a) -> t -> '-> 'a       val fold_topset_ok : (Base.t -> Ival.t -> '-> 'a) -> t -> '-> 'a       val fold_enum : (t -> '-> 'a) -> t -> '-> 'a       val cached_fold :         cache_name:string ->         temporary:bool ->         f:(Base.t -> Ival.t -> 'a) ->         projection:(Base.t -> Ival.t) ->         joiner:('-> '-> 'a) -> empty:'-> t -> 'a       val filter_base : (Base.t -> bool) -> t -> t       val cardinal_less_than : t -> int -> int       val cardinal : t -> Integer.t option       val find_lonely_key : t -> Base.t * Ival.t       val find_lonely_binding : t -> Base.t * Ival.t       val find : Base.t -> t -> Ival.t       val find_or_bottom : Base.t -> M.t -> Ival.t       val split : Base.t -> t -> Ival.t * t       val get_bases : t -> Base.SetLattice.t       val contains_addresses_of_locals : (M.key -> bool) -> t -> bool       val remove_escaping_locals :         (M.key -> bool) -> t -> Base.SetLattice.t * t       val contains_addresses_of_any_locals : t -> bool       val iter_on_strings :         skip:Base.t option ->         (Base.t -> string -> int -> int -> unit) -> t -> unit       val partially_overlaps : size:Abstract_interp.Int.t -> t -> t -> bool       val is_relationable : t -> bool       val may_reach : Base.t -> t -> bool       val get_garbled_mix : unit -> t list       val clear_garbled_mix : unit -> unit       val do_track_garbled_mix : bool -> unit       val pretty_debug : t Pretty_utils.formatter       val clear_caches : unit -> unit       val ty : t Type.t       val name : string       val descr : t Descr.t       val packed_descr : Structural_descr.pack       val reprs : t list       val equal : t -> t -> bool       val compare : t -> t -> int       val hash : t -> int       val pretty_code : Format.formatter -> t -> unit       val internal_pretty_code :         Type.precedence -> Format.formatter -> t -> unit       val pretty : Format.formatter -> t -> unit       val varname : t -> string       val mem_project : (Project_skeleton.t -> bool) -> t -> bool       val copy : t -> t       val join : t -> t -> t       val is_included : t -> t -> bool       val join_and_is_included : t -> t -> t * bool       val bottom : t       val widen : widen_hint -> t -> t -> t       val cardinal_zero_or_one : t -> bool       val extract_bits :         topify:Origin.kind ->         start:Integer.t -> stop:Integer.t -> size:Integer.t -> t -> bool * t       val little_endian_merge_bits :         topify:Origin.kind ->         conflate_bottom:bool -> 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       val topify_with_origin : Origin.t -> t -> t       val anisotropic_cast : size:Integer.t -> t -> t       val pretty_typ : Cil_types.typ option -> t Pretty_utils.formatter       val is_arithmetic : t -> bool       exception Not_based_on_null       val project_ival : t -> Ival.t       val project_ival_bottom : t -> Ival.t       val is_imprecise : t -> bool       val is_topint : t -> bool       val is_bottom : t -> bool       val is_isotropic : t -> bool       val contains_zero : t -> bool       val contains_non_zero : t -> bool       val of_char : char -> t       val of_int64 : int64 -> t       val compare_min_float : t -> t -> int       val compare_max_float : t -> t -> int       val compare_min_int : t -> t -> int       val compare_max_int : t -> t -> int       val backward_mult_int_left :         right:t -> result:t -> t option Bottom.or_bottom       val backward_comp_int_left : Abstract_interp.Comp.t -> t -> t -> t       val backward_comp_float_left :         Abstract_interp.Comp.t -> bool -> Fval.float_kind -> t -> t -> t       val forward_comp_int :         signed:bool ->         Abstract_interp.Comp.t -> t -> t -> Abstract_interp.Comp.result       val inject_comp_result : Abstract_interp.Comp.result -> t       val inject_int : Abstract_interp.Int.t -> t       val interp_boolean : contains_zero:bool -> contains_non_zero:bool -> t       val cast : size:Abstract_interp.Int.t -> signed:bool -> t -> t * bool       val cast_float :         rounding_mode:Fval.rounding_mode -> t -> bool * bool * t       val cast_double : t -> bool * bool * t       val cast_float_to_int :         signed:bool -> size:int -> t -> bool * bool * (bool * bool) * t       val cast_float_to_int_inverse : single_precision:bool -> t -> t option       val cast_int_to_float : Fval.rounding_mode -> t -> t * bool       val cast_int_to_float_inverse : single_precision:bool -> t -> t option       val add_untyped : factor:Int_Base.t -> t -> t -> t       val add_untyped_under : factor:Int_Base.t -> t -> t -> t       val sub_untyped_pointwise :         ?factor:Int_Base.t -> t -> t -> Ival.t * bool       val mul : t -> t -> t       val div : t -> t -> t       val c_rem : t -> t -> t       val shift_right : t -> t -> t       val shift_left : t -> t -> t       val bitwise_and : signed:bool -> size:int -> t -> t -> t       val bitwise_xor : t -> t -> t       val bitwise_or : t -> t -> t       val bitwise_not : t -> t       val bitwise_not_size : signed:bool -> size:int -> t -> t       val all_values : size:Abstract_interp.Int.t -> t -> bool       val create_all_values : signed:bool -> size:int -> t     end   module V_Or_Uninitialized :     sig       type t =           C_uninit_esc of Cvalue.V.t         | C_uninit_noesc of Cvalue.V.t         | C_init_esc of Cvalue.V.t         | C_init_noesc of Cvalue.V.t       type generic_widen_hint = Locations.Location_Bytes.generic_widen_hint       type size_widen_hint = Locations.Location_Bytes.size_widen_hint       val ty : t Type.t       val name : string       val descr : t Descr.t       val packed_descr : Structural_descr.pack       val reprs : t list       val equal : t -> t -> bool       val compare : t -> t -> int       val hash : t -> int       val pretty_code : Format.formatter -> t -> unit       val internal_pretty_code :         Type.precedence -> Format.formatter -> t -> unit       val pretty : Format.formatter -> t -> unit       val varname : t -> string       val mem_project : (Project_skeleton.t -> bool) -> t -> bool       val copy : t -> t       val join : t -> t -> t       val is_included : t -> t -> bool       val join_and_is_included : t -> t -> t * bool       val bottom : t       type widen_hint = Locations.Location_Bytes.widen_hint       val widen : widen_hint -> t -> t -> t       val cardinal_zero_or_one : t -> bool       val pretty_typ : Cil_types.typ option -> t Pretty_utils.formatter       val is_isotropic : t -> bool       val extract_bits :         topify:Origin.kind ->         start:Integer.t -> stop:Integer.t -> size:Integer.t -> t -> bool * t       val little_endian_merge_bits :         topify:Origin.kind ->         conflate_bottom:bool -> 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       val topify_with_origin : Origin.t -> t -> t       val anisotropic_cast : size:Integer.t -> t -> t       val link : t -> t -> t       val meet : t -> t -> t       val narrow : t -> t -> t       val top : t       val top_opt : t option       val get_v : Cvalue.V_Or_Uninitialized.t -> Cvalue.V.t       val make :         initialized:bool ->         escaping:bool -> Cvalue.V.t -> Cvalue.V_Or_Uninitialized.t       val is_bottom : Cvalue.V_Or_Uninitialized.t -> bool       val is_initialized : Cvalue.V_Or_Uninitialized.t -> bool       val is_noesc : Cvalue.V_Or_Uninitialized.t -> bool       val is_indeterminate : Cvalue.V_Or_Uninitialized.t -> bool       val uninitialized : Cvalue.V_Or_Uninitialized.t       val initialized : Cvalue.V.t -> Cvalue.V_Or_Uninitialized.t       val reduce_by_initializedness :         bool -> Cvalue.V_Or_Uninitialized.t -> Cvalue.V_Or_Uninitialized.t       val reduce_by_danglingness :         bool -> Cvalue.V_Or_Uninitialized.t -> Cvalue.V_Or_Uninitialized.t       val remove_indeterminateness :         Cvalue.V_Or_Uninitialized.t -> Cvalue.V_Or_Uninitialized.t       val unspecify_escaping_locals :         exact:bool ->         (Cvalue.V.M.key -> bool) ->         Cvalue.V_Or_Uninitialized.t ->         Base.SetLattice.t * Cvalue.V_Or_Uninitialized.t       val map :         (Cvalue.V.t -> Cvalue.V.t) ->         Cvalue.V_Or_Uninitialized.t -> Cvalue.V_Or_Uninitialized.t       val map2 :         (Cvalue.V.t -> Cvalue.V.t -> Cvalue.V.t) ->         Cvalue.V_Or_Uninitialized.t ->         Cvalue.V_Or_Uninitialized.t -> Cvalue.V_Or_Uninitialized.t     end   module V_Offsetmap :     sig       type v = V_Or_Uninitialized.t       type widen_hint = V_Or_Uninitialized.generic_widen_hint       type alarm = bool       type t       val pretty_generic :         ?typ:Cil_types.typ ->         ?pretty_v:(Cil_types.typ option -> Format.formatter -> v -> unit) ->         ?skip_v:(v -> bool) ->         ?sep:string -> unit -> Format.formatter -> t -> unit       val create :         size:Abstract_interp.Int.t -> v -> size_v:Abstract_interp.Int.t -> t       val create_isotropic : size:Abstract_interp.Int.t -> v -> t       val of_list :         ((t -> v -> t) -> t -> '-> t) -> '-> Abstract_interp.Int.t -> t       val empty : t       val size_from_validity : Base.validity -> Integer.t Bottom.or_bottom       val iter :         (Abstract_interp.Int.t * Abstract_interp.Int.t ->          v * Abstract_interp.Int.t * Abstract_interp.Rel.t -> unit) ->         t -> unit       val fold :         (Abstract_interp.Int.t * Abstract_interp.Int.t ->          v * Abstract_interp.Int.t * Abstract_interp.Rel.t -> '-> 'a) ->         t -> '-> 'a       val fold_between :         ?direction:[ `LTR | `RTL ] ->         entire:bool ->         Abstract_interp.Int.t * Abstract_interp.Int.t ->         (Abstract_interp.Int.t * Abstract_interp.Int.t ->          v * Abstract_interp.Int.t * Abstract_interp.Rel.t -> '-> 'a) ->         t -> '-> 'a       val iter_on_values : (v -> unit) -> t -> unit       val fold_on_values : (v -> '-> 'a) -> t -> '-> 'a       val map_on_values : (v -> v) -> t -> t       type map2_decide =           ReturnLeft         | ReturnRight         | ReturnConstant of v         | Recurse       val map2_on_values :         Hptmap_sig.cache_type ->         (t -> t -> map2_decide) -> (v -> v -> v) -> t -> t -> t       val ty : t Type.t       val name : string       val descr : t Descr.t       val packed_descr : Structural_descr.pack       val reprs : t list       val equal : t -> t -> bool       val compare : t -> t -> int       val hash : t -> int       val pretty_code : Format.formatter -> t -> unit       val internal_pretty_code :         Type.precedence -> Format.formatter -> t -> unit       val pretty : Format.formatter -> t -> unit       val varname : t -> string       val mem_project : (Project_skeleton.t -> bool) -> t -> bool       val copy : t -> t       val join : t -> t -> t       val is_included : t -> t -> bool       val join_and_is_included : t -> t -> t * bool       val widen : widen_hint -> t -> t -> t       module Make_Narrow :         functor (X : sig val top : v val narrow : v -> v -> v end->           sig val narrow : t -> t -> t end       val find :         validity:Base.validity ->         ?conflate_bottom:bool ->         offsets:Ival.t -> size:Integer.t -> t -> bool * v       val find_imprecise : validity:Base.validity -> t -> v       val find_imprecise_everywhere : t -> v       val copy_slice :         validity:Base.validity ->         offsets:Ival.t -> size:Integer.t -> t -> alarm * t Bottom.or_bottom       val add :         ?exact:bool ->         Abstract_interp.Int.t * Abstract_interp.Int.t ->         v * Abstract_interp.Int.t * Abstract_interp.Rel.t -> t -> t       val update :         ?origin:Origin.t ->         validity:Base.validity ->         exact:bool ->         offsets:Ival.t ->         size:Abstract_interp.Int.t -> v -> t -> alarm * t Bottom.or_bottom       val update_under :         validity:Base.validity ->         exact:bool ->         offsets:Ival.t ->         size:Abstract_interp.Int.t -> v -> t -> alarm * t Bottom.or_bottom       val update_imprecise_everywhere :         validity:Base.validity -> Origin.t -> v -> t -> t Bottom.or_bottom       val paste_slice :         validity:Base.validity ->         exact:bool ->         from:t ->         size:Abstract_interp.Int.t ->         offsets:Ival.t -> t -> alarm * t Bottom.or_bottom       val cardinal_zero_or_one : t -> bool       val is_single_interval : t -> bool       val single_interval_value : t -> v option       val is_same_value : t -> v -> bool       val imprecise_write_msg : string ref       val clear_caches : unit -> unit       val pretty_debug : t Pretty_utils.formatter       val narrow : t -> t -> t Bottom.Type.or_bottom     end   module Default_offsetmap :     sig       val default_offsetmap : Base.t -> Cvalue.V_Offsetmap.t Bottom.or_bottom     end   module Model :     sig       type v = V_Or_Uninitialized.t       type offsetmap = V_Offsetmap.t       type widen_hint_base = V_Or_Uninitialized.generic_widen_hint       type map       type lmap = private Bottom | Top | Map of map       type t = lmap       val ty : t Type.t       val name : string       val descr : t Descr.t       val packed_descr : Structural_descr.pack       val reprs : t list       val equal : t -> t -> bool       val compare : t -> t -> int       val hash : t -> int       val pretty_code : Format.formatter -> t -> unit       val internal_pretty_code :         Type.precedence -> Format.formatter -> t -> unit       val varname : t -> string       val mem_project : (Project_skeleton.t -> bool) -> t -> bool       val copy : t -> t       module Set :         sig           type elt = t           type t           val empty : t           val is_empty : t -> bool           val mem : elt -> t -> bool           val add : elt -> t -> t           val singleton : elt -> t           val remove : elt -> t -> t           val union : t -> t -> t           val inter : t -> t -> t           val diff : t -> t -> t           val subset : t -> t -> bool           val iter : (elt -> unit) -> t -> unit           val fold : (elt -> '-> 'a) -> t -> '-> 'a           val for_all : (elt -> bool) -> t -> bool           val exists : (elt -> bool) -> t -> bool           val filter : (elt -> bool) -> t -> t           val partition : (elt -> bool) -> t -> t * t           val cardinal : t -> int           val elements : t -> elt list           val choose : t -> elt           val split : elt -> t -> t * bool * t           val find : elt -> t -> elt           val of_list : elt list -> t           val min_elt : t -> elt           val max_elt : t -> elt           val nearest_elt_le : elt -> t -> elt           val nearest_elt_ge : elt -> t -> elt           val ty : t Type.t           val name : string           val descr : t Descr.t           val packed_descr : Structural_descr.pack           val reprs : t list           val equal : t -> t -> bool           val compare : t -> t -> int           val hash : t -> int           val pretty_code : Format.formatter -> t -> unit           val internal_pretty_code :             Type.precedence -> Format.formatter -> t -> unit           val pretty : Format.formatter -> t -> unit           val varname : t -> string           val mem_project : (Project_skeleton.t -> bool) -> t -> bool           val copy : t -> t         end       module Map :         sig           type key = t           type +'a t           val empty : 'a t           val is_empty : 'a t -> bool           val mem : key -> 'a t -> bool           val add : key -> '-> 'a t -> 'a t           val singleton : key -> '-> 'a t           val remove : key -> 'a t -> 'a t           val merge :             (key -> 'a option -> 'b option -> 'c option) ->             'a t -> 'b t -> 'c t           val compare : ('-> '-> int) -> 'a t -> 'a t -> int           val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool           val iter : (key -> '-> unit) -> 'a t -> unit           val fold : (key -> '-> '-> 'b) -> 'a t -> '-> 'b           val for_all : (key -> '-> bool) -> 'a t -> bool           val exists : (key -> '-> bool) -> 'a t -> bool           val filter : (key -> '-> bool) -> 'a t -> 'a t           val partition : (key -> '-> bool) -> 'a t -> 'a t * 'a t           val cardinal : 'a t -> int           val bindings : 'a t -> (key * 'a) list           val min_binding : 'a t -> key * 'a           val max_binding : 'a t -> key * 'a           val choose : 'a t -> key * 'a           val split : key -> 'a t -> 'a t * 'a option * 'a t           val find : key -> 'a t -> 'a           val map : ('-> 'b) -> 'a t -> 'b t           val mapi : (key -> '-> 'b) -> 'a t -> 'b t           module Key :             sig               type t = key               val ty : t Type.t               val name : string               val descr : t Descr.t               val packed_descr : Structural_descr.pack               val reprs : t list               val equal : t -> t -> bool               val compare : t -> t -> int               val hash : t -> int               val pretty_code : Format.formatter -> t -> unit               val internal_pretty_code :                 Type.precedence -> Format.formatter -> t -> unit               val pretty : Format.formatter -> t -> unit               val varname : t -> string               val mem_project : (Project_skeleton.t -> bool) -> t -> bool               val copy : t -> t             end           module Make :             functor (Data : Datatype.S->               sig                 type t = Data.t t                 val ty : t Type.t                 val name : string                 val descr : t Descr.t                 val packed_descr : Structural_descr.pack                 val reprs : t list                 val equal : t -> t -> bool                 val compare : t -> t -> int                 val hash : t -> int                 val pretty_code : Format.formatter -> t -> unit                 val internal_pretty_code :                   Type.precedence -> Format.formatter -> t -> unit                 val pretty : Format.formatter -> t -> unit                 val varname : t -> string                 val mem_project : (Project_skeleton.t -> bool) -> t -> bool                 val copy : t -> t               end         end       module Hashtbl :         sig           type key = t           type 'a t           val create : int -> 'a t           val clear : 'a t -> unit           val reset : 'a t -> unit           val copy : 'a t -> 'a t           val add : 'a t -> key -> '-> unit           val remove : 'a t -> key -> unit           val find : 'a t -> key -> 'a           val find_all : 'a t -> key -> 'a list           val replace : 'a t -> key -> '-> unit           val mem : 'a t -> key -> bool           val iter : (key -> '-> unit) -> 'a t -> unit           val filter_map_inplace : (key -> '-> 'a option) -> 'a t -> unit           val fold : (key -> '-> '-> 'b) -> 'a t -> '-> 'b           val length : 'a t -> int           val stats : 'a t -> Hashtbl.statistics           val iter_sorted :             ?cmp:(key -> key -> int) -> (key -> '-> unit) -> 'a t -> unit           val fold_sorted :             ?cmp:(key -> key -> int) ->             (key -> '-> '-> 'b) -> 'a t -> '-> 'b           val iter_sorted_by_entry :             cmp:(key * '-> key * '-> int) ->             (key -> '-> unit) -> 'a t -> unit           val fold_sorted_by_entry :             cmp:(key * '-> key * '-> int) ->             (key -> '-> '-> 'b) -> 'a t -> '-> 'b           val iter_sorted_by_value :             cmp:('-> '-> int) -> (key -> '-> unit) -> 'a t -> unit           val fold_sorted_by_value :             cmp:('-> '-> int) ->             (key -> '-> '-> 'b) -> 'a t -> '-> 'b           val structural_descr : Structural_descr.t -> Structural_descr.t           val make_type : 'Type.t -> 'a t Type.t           val memo : 'a t -> key -> (key -> 'a) -> 'a           module Key :             sig               type t = key               val ty : t Type.t               val name : string               val descr : t Descr.t               val packed_descr : Structural_descr.pack               val reprs : t list               val equal : t -> t -> bool               val compare : t -> t -> int               val hash : t -> int               val pretty_code : Format.formatter -> t -> unit               val internal_pretty_code :                 Type.precedence -> Format.formatter -> t -> unit               val pretty : Format.formatter -> t -> unit               val varname : t -> string               val mem_project : (Project_skeleton.t -> bool) -> t -> bool               val copy : t -> t             end           module Make :             functor (Data : Datatype.S->               sig                 type t = Data.t t                 val ty : t Type.t                 val name : string                 val descr : t Descr.t                 val packed_descr : Structural_descr.pack                 val reprs : t list                 val equal : t -> t -> bool                 val compare : t -> t -> int                 val hash : t -> int                 val pretty_code : Format.formatter -> t -> unit                 val internal_pretty_code :                   Type.precedence -> Format.formatter -> t -> unit                 val pretty : Format.formatter -> t -> unit                 val varname : t -> string                 val mem_project : (Project_skeleton.t -> bool) -> t -> bool                 val copy : t -> t               end         end       exception Error_Top       val pretty : Format.formatter -> t -> unit       val pretty_debug : Format.formatter -> t -> unit       val pretty_filter : Format.formatter -> t -> Locations.Zone.t -> unit       val pretty_diff : Format.formatter -> t -> t -> unit       val top : t       val is_top : t -> bool       val empty_map : t       val is_empty_map : t -> bool       val bottom : t       val is_reachable : t -> bool       val join : t -> t -> t       val is_included : t -> t -> bool       module Make_Narrow :         functor           (X : sig                  val top : v                  val narrow : v -> v -> v                  val bottom_is_strict : bool                end->           sig val narrow : t -> t -> t end       type widen_hint = Base.Set.t * (Base.t -> widen_hint_base)       val widen : widen_hint -> t -> t -> t       val copy_offsetmap :         Locations.Location_Bits.t ->         Integer.t -> t -> bool * offsetmap Bottom.or_bottom       val find_base : Base.t -> t -> offsetmap Bottom.Top.or_top_bottom       val find_base_or_default :         Base.t -> t -> offsetmap Bottom.Top.or_top_bottom       val paste_offsetmap :         reducing:bool ->         from:offsetmap ->         dst_loc:Locations.Location_Bits.t ->         size:Integer.t -> exact:bool -> t -> bool * t       val add_base : Base.t -> offsetmap -> t -> t       val filter_base : (Base.t -> bool) -> t -> t       val filter_by_shape : 'Hptmap.Shape(Base.Base).t -> t -> t       val remove_base : Base.t -> t -> t       val iter : (Base.base -> offsetmap -> unit) -> map -> unit       val fold : (Base.t -> offsetmap -> '-> 'a) -> map -> '-> 'a       val cached_fold :         f:(Base.t -> offsetmap -> 'a) ->         cache_name:string ->         temporary:bool -> joiner:('-> '-> 'a) -> empty:'-> map -> 'a       val cached_map :         f:(Base.t -> offsetmap -> offsetmap) ->         cache:string * int -> temporary:bool -> t -> t       val shape : map -> offsetmap Hptmap.Shape(Base.Base).t       val clear_caches : unit -> unit       type subtree       val comp_prefixes : t -> t -> unit       val find_prefix : t -> Hptmap.prefix -> subtree option       val hash_subtree : subtree -> int       val equal_subtree : subtree -> subtree -> bool       exception Found_prefix of Hptmap.prefix * subtree * subtree       val narrow : t -> t -> t       val find_unspecified :         ?conflate_bottom:bool ->         t -> Locations.location -> bool * Cvalue.V_Or_Uninitialized.t       val find :         ?conflate_bottom:bool -> t -> Locations.location -> bool * Cvalue.V.t       val add_binding :         exact:bool -> t -> Locations.location -> Cvalue.V.t -> bool * t       val add_unsafe_binding :         exact:bool ->         t -> Locations.location -> Cvalue.V_Or_Uninitialized.t -> bool * t       val add_binding_unspecified :         exact:bool ->         t -> Locations.location -> Cvalue.V_Or_Uninitialized.t -> bool * t       val reduce_previous_binding :         t -> Locations.location -> Cvalue.V.t -> t       val reduce_indeterminate_binding :         t -> Locations.location -> Cvalue.V_Or_Uninitialized.t -> t       val reduce_binding : t -> Locations.location -> Cvalue.V.t -> t       val add_initial_binding :         t -> Locations.location -> Cvalue.V_Or_Uninitialized.t -> t       val add_new_base :         Base.t ->         size:Abstract_interp.Int.t ->         Cvalue.V.t -> size_v:Abstract_interp.Int.t -> t -> t       val uninitialize_blocks_locals : Cil_types.block list -> t -> t       val remove_variables : Cil_types.varinfo list -> t -> t       val cardinal_estimate : t -> Cvalue.CardinalEstimate.t     end end