type 'has_oenv t0
= 'has_oenv MemReach.t0 InferModules.AbstractDomain.Types.bottom_lifted
type no_oenv_t
= InferStdlib.GOption.none t0
val bot : t
val init : OndemandEnv.t -> t
val f_lift_default : default:'a -> ('h MemReach.t0 -> 'a) -> 'h t0 -> 'a
val is_stack_loc : InferModules.AbsLoc.Loc.t -> 'a t0 -> bool
val is_rep_multi_loc : InferModules.AbsLoc.Loc.t -> 'a t0 -> bool
val find : InferModules.AbsLoc.Loc.t -> 'a t0 -> Val.t
val find_stack : InferModules.AbsLoc.Loc.t -> 'a t0 -> Val.t
val find_set : ?typ:InferIR.Typ.t -> InferModules.AbsLoc.PowLoc.t -> 'a t0 -> Val.t
val find_opt : InferModules.AbsLoc.Loc.t -> 'a t0 -> Val.t option
val find_alias : InferIR.Ident.t -> 'a t0 -> AliasTarget.t option
val find_simple_alias : InferIR.Ident.t -> 'a t0 -> (InferModules.AbsLoc.Loc.t * InferIR.IntLit.t option) option
val find_ret_alias : 'a t0 -> AliasTarget.t option
val load_alias : InferIR.Ident.t -> AliasTarget.t -> t -> t
val load_simple_alias : InferIR.Ident.t -> InferModules.AbsLoc.Loc.t -> t -> t
val load_empty_alias : InferIR.Ident.t -> InferModules.AbsLoc.Loc.t -> t -> t
val store_simple_alias : InferModules.AbsLoc.Loc.t -> InferIR.Exp.t -> t -> t
val store_empty_alias : Val.t -> InferModules.AbsLoc.Loc.t -> t -> t
val fgets_alias : InferIR.Ident.t -> InferModules.AbsLoc.PowLoc.t -> t -> t
val add_stack_loc : InferModules.AbsLoc.Loc.t -> t -> t
val add_stack : ?represents_multiple_values:bool -> InferModules.AbsLoc.Loc.t -> Val.t -> t -> t
val add_heap : ?represents_multiple_values:bool -> InferModules.AbsLoc.Loc.t -> Val.t -> t -> t
val add_heap_set : ?represents_multiple_values:bool -> InferModules.AbsLoc.PowLoc.t -> Val.t -> t -> t
val add_unknown_from : InferIR.Ident.t -> callee_pname:InferIR.Typ.Procname.t -> location:InferBase.Location.t -> t -> t
val add_unknown : InferIR.Ident.t -> location:InferBase.Location.t -> t -> t
val strong_update : InferModules.AbsLoc.PowLoc.t -> Val.t -> t -> t
val get_reachable_locs_from : (InferIR.Pvar.t * InferIR.Typ.t) list -> InferModules.AbsLoc.PowLoc.t -> 'a t0 -> InferModules.AbsLoc.PowLoc.t
val update_mem : InferModules.AbsLoc.PowLoc.t -> Val.t -> t -> t
val transform_mem : f:(Val.t -> Val.t) -> InferModules.AbsLoc.PowLoc.t -> t -> t
val remove_temps : InferIR.Ident.t list -> t -> t
val set_prune_pairs : PrunePairs.t -> t -> t
val apply_latest_prune : InferIR.Exp.t -> t -> t * PrunePairs.t
val update_latest_prune : updated_locs:InferModules.AbsLoc.PowLoc.t -> InferIR.Exp.t -> InferIR.Exp.t -> t -> t
val get_latest_prune : 'a t0 -> LatestPrune.t
val set_latest_prune : LatestPrune.t -> t -> t
val get_relation : t -> Relation.t
val meet_constraints : Relation.Constraints.t -> t -> t
val is_relation_unsat : InferStdlib.GOption.some t0 -> bool
val store_relation : InferModules.AbsLoc.PowLoc.t -> (Relation.SymExp.t option * Relation.SymExp.t option * Relation.SymExp.t option) -> t -> t
val relation_forget_locs : InferModules.AbsLoc.PowLoc.t -> t -> t
val forget_unreachable_locs : formals:(InferIR.Pvar.t * InferIR.Typ.t) list -> t -> t
val init_param_relation : InferModules.AbsLoc.Loc.t -> t -> t
val init_array_relation : InferModules.AbsLoc.Allocsite.t -> offset_opt:InferModules.Itv.t option -> size:InferModules.Itv.t -> size_exp_opt:Relation.SymExp.t option -> t -> t
val instantiate_relation : Relation.SubstMap.t -> caller:t -> callee:no_oenv_t -> t
val unset_oenv : MemReach.t InferModules.AbstractDomain.Types.bottom_lifted -> MemReach.no_oenv_t InferModules.AbstractDomain.Types.bottom_lifted
val set_first_idx_of_null : InferModules.AbsLoc.Loc.t -> Val.t -> t -> t
val unset_first_idx_of_null : InferModules.AbsLoc.Loc.t -> Val.t -> t -> t
val get_c_strlen : InferModules.AbsLoc.PowLoc.t -> 'a t0 -> Val.t
val pp : Stdlib.Format.formatter -> 'a MemReach.t0 InferModules__AbstractDomain.Types.bottom_lifted -> unit