sig   exception Bitwise_cannot_copy   module type Location_map_bitwise =     sig       type v       type map       type lmap = Top | Map of Lmap_bitwise.Location_map_bitwise.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 : Lmap_bitwise.Location_map_bitwise.map       val pretty_generic_printer :         ?pretty_v:Lmap_bitwise.Location_map_bitwise.v Pretty_utils.formatter ->         ?skip_v:(Lmap_bitwise.Location_map_bitwise.v -> bool) ->         sep:string -> unit -> t Pretty_utils.formatter       val pretty_debug : t Pretty_utils.formatter       val add_binding :         reducing:bool ->         exact:bool ->         t -> Locations.Zone.t -> Lmap_bitwise.Location_map_bitwise.v -> t       val add_binding_loc :         reducing:bool ->         exact:bool ->         t -> Locations.location -> Lmap_bitwise.Location_map_bitwise.v -> t       val add_base :         Base.t -> Lmap_bitwise.Location_map_bitwise.LOffset.t -> t -> t       val remove_base : Base.t -> t -> t       val find : t -> Locations.Zone.t -> Lmap_bitwise.Location_map_bitwise.v       val filter_base : (Base.t -> bool) -> t -> t       val map :         (Lmap_bitwise.Location_map_bitwise.v ->          Lmap_bitwise.Location_map_bitwise.v) ->         t -> t       val fold :         (Locations.Zone.t -> Lmap_bitwise.Location_map_bitwise.v -> '-> 'a) ->         Lmap_bitwise.Location_map_bitwise.map -> '-> 'a       val fold_base :         (Base.t -> Lmap_bitwise.Location_map_bitwise.LOffset.t -> '-> 'a) ->         Lmap_bitwise.Location_map_bitwise.map -> '-> 'a       val fold_fuse_same :         (Locations.Zone.t -> Lmap_bitwise.Location_map_bitwise.v -> '-> 'a) ->         Lmap_bitwise.Location_map_bitwise.map -> '-> 'a       val fold_join_zone :         both:(Int_Intervals.t ->               Lmap_bitwise.Location_map_bitwise.LOffset.t -> 'a) ->         conv:(Base.t -> '-> 'b) ->         empty_map:(Locations.Zone.t -> 'b) ->         join:('-> '-> 'b) ->         empty:'->         Locations.Zone.t -> Lmap_bitwise.Location_map_bitwise.map -> 'b       val map2 :         cache:Hptmap_sig.cache_type ->         symmetric:bool ->         idempotent:bool ->         empty_neutral:bool ->         (Lmap_bitwise.Location_map_bitwise.LOffset.t ->          Lmap_bitwise.Location_map_bitwise.LOffset.t ->          Lmap_bitwise.Location_map_bitwise.LOffset.map2_decide) ->         (Lmap_bitwise.Location_map_bitwise.v ->          Lmap_bitwise.Location_map_bitwise.v ->          Lmap_bitwise.Location_map_bitwise.v) ->         Lmap_bitwise.Location_map_bitwise.map ->         Lmap_bitwise.Location_map_bitwise.map ->         Lmap_bitwise.Location_map_bitwise.map       val shape :         Lmap_bitwise.Location_map_bitwise.map ->         Lmap_bitwise.Location_map_bitwise.LOffset.t Hptmap.Shape(Base.Base).t       val imprecise_write_msg : string Pervasives.ref       val clear_caches : unit -> unit     end   module type With_default =     sig       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 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     end   module Make_bitwise :     functor (V : With_default->       sig         type v = V.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_binding :           reducing:bool -> exact:bool -> t -> Locations.Zone.t -> v -> t         val add_binding_loc :           reducing:bool -> exact:bool -> t -> Locations.location -> v -> t         val add_base : Base.t -> LOffset.t -> t -> t         val remove_base : Base.t -> t -> t         val find : t -> Locations.Zone.t -> v         val filter_base : (Base.t -> bool) -> t -> t         val map : (v -> v) -> 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       end end