Implementation of Abstraction Functions
val abstract : InferIR.Typ.Procname.t ‑> InferIR.Tenv.t ‑> InferModules.Prop.normal InferModules.Prop.t ‑> InferModules.Prop.normal InferModules.Prop.tAbstract a proposition.
val abstract_junk : InferIR.Typ.Procname.t ‑> InferIR.Tenv.t ‑> InferModules.Prop.normal InferModules.Prop.t ‑> InferModules.Prop.normal InferModules.Prop.tCheck whether the prop contains junk.
If it does, and Config.allowleak is true, remove the junk,
otherwise raise a Leak exception.
val abstract_no_symop : InferIR.Typ.Procname.t ‑> InferIR.Tenv.t ‑> InferModules.Prop.normal InferModules.Prop.t ‑> InferModules.Prop.normal InferModules.Prop.tAbstract a proposition but don't pay a SymOp
val lifted_abstract : InferIR.Typ.Procname.t ‑> InferIR.Tenv.t ‑> InferModules.Propset.t ‑> InferModules.Propset.tAbstract each proposition in propset
val remove_redundant_array_elements : InferIR.Typ.Procname.t ‑> InferIR.Tenv.t ‑> InferModules.Prop.normal InferModules.Prop.t ‑> InferModules.Prop.normal InferModules.Prop.tRemove redundant elements in an array, and check for junk afterwards