`module L = InferBase.Logging`
`module BoUtils = InferModules.BufferOverrunUtils`
`module Dom = InferModules.BufferOverrunDomain`
`module PO = InferModules.BufferOverrunProofObligations`
`module Sem = InferModules.BufferOverrunSemantics`
`module Trace = InferModules.BufferOverrunTrace`
`module TraceSet = Trace.Set`
`type model_env````=` `{`

`pname : InferIR.Typ.Procname.t;`
`node_hash : int;`
`location : InferBase.Location.t;`
`tenv : InferIR.Tenv.t;`
`ret : (InferIR.Ident.t * InferIR.Typ.t) option;`

`}```
`val mk_model_env : InferIR.Typ.Procname.t ‑> int ‑> InferBase.Location.t ‑> ?⁠ret:(InferIR.Ident.t * InferIR.Typ.t) ‑> InferIR.Tenv.t ‑> model_env`
`type exec_fun``= model_env ‑> Dom.Mem.astate ‑> Dom.Mem.astate```
`type check_fun``= model_env ‑> Dom.Mem.astate ‑> PO.ConditionSet.t ‑> PO.ConditionSet.t```
`type model````=` `{`

`exec : exec_fun;`
`check : check_fun;`

`}```
`type declare_local_fun``= decl_local:BoUtils.Exec.decl_local ‑> model_env ‑> InferModules.AbsLoc.Loc.t ‑> inst_num:int ‑> dimension:int ‑> Dom.Mem.astate ‑> Dom.Mem.astate * int```
`type declare_symbolic_fun``= decl_sym_val:BoUtils.Exec.decl_sym_val ‑> model_env ‑> depth:int ‑> InferModules.AbsLoc.Loc.t ‑> inst_num:int ‑> new_sym_num:InferModules.Itv.Counter.t ‑> new_alloc_num:InferModules.Itv.Counter.t ‑> Dom.Mem.astate ‑> Dom.Mem.astate```
`type typ_model````=` `{`

`declare_local : declare_local_fun;`
`declare_symbolic : declare_symbolic_fun;`

`}```
`val no_check : 'a ‑> 'b ‑> 'c ‑> 'c`
`val get_malloc_info : InferIR.Exp.t ‑> InferIR.Typ.t * InferStdlib.IStd.Int.t option * InferIR.Exp.t * InferIR.Exp.t option`
`val check_alloc_size : InferIR.Exp.t ‑> model_env ‑> InferModules.BufferOverrunDomain.Mem.astate ‑> InferModules__BufferOverrunProofObligations.ConditionWithTrace.t InferStdlib.IStd.List.t ‑> InferModules__BufferOverrunProofObligations.ConditionWithTrace.t InferStdlib.IStd.List.t`
`val set_uninitialized : InferBase.Location.t ‑> InferIR.Typ.t ‑> InferModules.AbsLoc.PowLoc.t ‑> Dom.Mem.t ‑> Dom.Mem.t`
`val malloc : InferIR.Exp.t ‑> model`
`val realloc : InferIR.Exp.t ‑> InferIR.Exp.t ‑> model`
`val placement_new : InferIR.Exp.t ‑> model`
`val inferbo_min : InferIR.Exp.t ‑> InferIR.Exp.t ‑> model`
`val inferbo_set_size : InferIR.Exp.t ‑> InferIR.Exp.t ‑> model`
`val model_by_value : InferModules__BufferOverrunDomain.Val.t ‑> (InferIR.Ident.t * 'a) option ‑> Dom.Mem.t ‑> Dom.Mem.t`
`val by_value : InferModules__BufferOverrunDomain.Val.t ‑> model`
`val bottom : model`
`val infer_print : InferIR.Exp.t ‑> model`
`val get_array_length : InferIR.Exp.t ‑> model`
`val set_array_length : (InferIR.Exp.t * InferIR.Typ.t) ‑> InferIR.Exp.t ‑> model`
`module Split : sig ... end`
`module Boost : sig ... end`
`module Folly : sig ... end`
`module StdArray : sig ... end`
`module Call : sig ... end`
`module TypName : sig ... end`