sig   module Deps :     sig       type deps = { data : Locations.Zone.t; indirect : Locations.Zone.t; }       val bottom : Function_Froms.Deps.deps       val top : Function_Froms.Deps.deps       val join :         Function_Froms.Deps.deps ->         Function_Froms.Deps.deps -> Function_Froms.Deps.deps       val to_zone : Function_Froms.Deps.deps -> Locations.Zone.t       val add_data_dep :         Function_Froms.Deps.deps ->         Locations.Zone.t -> Function_Froms.Deps.deps       val add_indirect_dep :         Function_Froms.Deps.deps ->         Locations.Zone.t -> Function_Froms.Deps.deps       val from_data_deps : Locations.Zone.t -> Function_Froms.Deps.deps       val from_indirect_deps : Locations.Zone.t -> Function_Froms.Deps.deps       val map :         (Locations.Zone.t -> Locations.Zone.t) ->         Function_Froms.Deps.deps -> Function_Froms.Deps.deps       type t = deps       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 pretty_precise : Format.formatter -> t -> unit     end   module DepsOrUnassigned :     sig       type deps_or_unassigned =           DepsBottom         | Unassigned         | AssignedFrom of Function_Froms.Deps.t         | MaybeAssignedFrom of Function_Froms.Deps.t       type t = deps_or_unassigned       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 top : t       val narrow : t -> t -> t       val default : t       val subst : (Function_Froms.Deps.t -> Function_Froms.Deps.t) -> t -> t       val extract_data : t -> Locations.Zone.t       val extract_indirect : t -> Locations.Zone.t       val may_be_unassigned : t -> bool       val compose : t -> t -> t       val pretty_precise : Format.formatter -> t -> unit       val to_zone : t -> Locations.Zone.t       val to_deps : t -> Function_Froms.Deps.deps     end   module Memory :     sig       type v = DepsOrUnassigned.t       type map       type lmap = Top | Map of map | Bottom       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 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 top : t       module LOffset :         sig           type v = v           type 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 varname : t -> string           val mem_project : (Project_skeleton.t -> bool) -> t -> bool           val copy : t -> t           type intervals = Int_Intervals.t           val pretty : t Pretty_utils.formatter           val pretty_generic :             ?typ:Cil_types.typ ->             ?pretty_v:(Format.formatter -> v -> unit) ->             ?skip_v:(v -> bool) ->             ?sep:string -> unit -> Format.formatter -> t -> unit           val pretty_debug : t Pretty_utils.formatter           val join : t -> t -> t           val is_included : t -> t -> bool           val find : Int_Intervals_sig.itv -> t -> v           val find_iset : validity:Base.validity -> intervals -> t -> v           val add_binding_intervals :             validity:Base.validity ->             exact:bool -> intervals -> v -> t -> t Bottom.or_bottom           val add_binding_ival :             validity:Base.validity ->             exact:bool ->             Ival.t -> size:Int_Base.t -> v -> t -> t Bottom.or_bottom           val create : size:Integer.t -> v -> t           val empty : t           val size_from_validity :             Base.validity -> Integer.t Bottom.or_bottom           val map : (v -> v) -> t -> t           type map2_decide =               ReturnLeft             | ReturnRight             | ReturnConstant of v             | Recurse           val map2 :             Hptmap_sig.cache_type ->             (t -> t -> map2_decide) -> (v -> v -> v) -> t -> t -> t           val fold : (intervals -> v -> '-> 'a) -> t -> '-> 'a           val fold_fuse_same : (intervals -> v -> '-> 'a) -> t -> '-> 'a           val fold_itv :             ?direction:[ `LTR | `RTL ] ->             entire:bool ->             (Int_Intervals_sig.itv -> v -> '-> 'a) ->             Int_Intervals_sig.itv -> t -> '-> 'a           val fold_join_itvs :             cache:Hptmap_sig.cache_type ->             (Integer.t -> Integer.t -> v -> 'a) ->             ('-> '-> 'a) -> '-> intervals -> t -> 'a           val is_single_interval : t -> bool           val single_interval_value : t -> v option           val is_same_value : t -> v -> bool           val clear_caches : unit -> unit           val imprecise_write_msg : string ref         end       val is_empty : t -> bool       val is_bottom : t -> bool       val empty : t       val empty_map : map       val pretty_generic_printer :         ?pretty_v:v Pretty_utils.formatter ->         ?skip_v:(v -> bool) -> sep:string -> unit -> t Pretty_utils.formatter       val pretty_debug : t Pretty_utils.formatter       val add_base : Base.t -> LOffset.t -> t -> t       val remove_base : Base.t -> t -> t       val filter_base : (Base.t -> bool) -> t -> t       val fold : (Locations.Zone.t -> v -> '-> 'a) -> map -> '-> 'a       val fold_base : (Base.t -> LOffset.t -> '-> 'a) -> map -> '-> 'a       val fold_fuse_same :         (Locations.Zone.t -> v -> '-> 'a) -> map -> '-> 'a       val fold_join_zone :         both:(Int_Intervals.t -> LOffset.t -> 'a) ->         conv:(Base.t -> '-> 'b) ->         empty_map:(Locations.Zone.t -> 'b) ->         join:('-> '-> 'b) -> empty:'-> Locations.Zone.t -> map -> 'b       val map2 :         cache:Hptmap_sig.cache_type ->         symmetric:bool ->         idempotent:bool ->         empty_neutral:bool ->         (LOffset.t -> LOffset.t -> LOffset.map2_decide) ->         (v -> v -> v) -> map -> map -> map       val shape : map -> LOffset.t Hptmap.Shape(Base.Base).t       val imprecise_write_msg : string ref       val clear_caches : unit -> unit       val pretty_ind_data : Format.formatter -> t -> unit       val find : t -> Locations.Zone.t -> Locations.Zone.t       val find_precise : t -> Locations.Zone.t -> Function_Froms.Deps.t       val add_binding :         exact:bool -> t -> Locations.Zone.t -> Function_Froms.Deps.t -> t       val add_binding_loc :         exact:bool -> t -> Locations.location -> Function_Froms.Deps.t -> t       val add_binding_precise_loc :         exact:bool ->         t -> Precise_locs.precise_location -> Function_Froms.Deps.t -> t       val bind_var : Cil_types.varinfo -> Function_Froms.Deps.t -> t -> t       val unbind_var : Cil_types.varinfo -> t -> t       val map :         (Function_Froms.DepsOrUnassigned.t ->          Function_Froms.DepsOrUnassigned.t) ->         t -> t       val compose : t -> t -> t       val substitute : t -> Function_Froms.Deps.t -> Function_Froms.Deps.t       type return = Function_Froms.Deps.t       val default_return : Function_Froms.Memory.return       val top_return : Function_Froms.Memory.return       val top_return_size : Int_Base.t -> Function_Froms.Memory.return       val add_to_return :         ?start:int ->         size:Int_Base.t ->         ?m:Function_Froms.Memory.return ->         Function_Froms.Deps.t -> Function_Froms.Memory.return       val collapse_return :         Function_Froms.Memory.return -> Function_Froms.Deps.t     end   type froms = {     deps_return : Function_Froms.Memory.return;     deps_table : Function_Froms.Memory.t;   }   type t = froms   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 :     Function_Froms.froms -> Function_Froms.froms -> Function_Froms.froms   val top : Function_Froms.froms   val pretty_with_type :     Cil_types.typ -> Function_Froms.froms Pretty_utils.formatter   val pretty_with_type_indirect :     Cil_types.typ -> Function_Froms.froms Pretty_utils.formatter   val outputs : Function_Froms.froms -> Locations.Zone.t   val inputs : ?include_self:bool -> Function_Froms.froms -> Locations.Zone.t end