Module InferModules.LoopInvariant
module InvariantVars : module type of sig ... endmodule VarsInLoop : module type of sig ... endmodule LoopNodes : module type of sig ... endmodule VarSet : module type of sig ... endmodule LoopHeadToLoopNodes = InferIR.Procdesc.NodeMapMap loop header node -> all nodes in the loop
module LoopHeadToInvVars = InferIR.Procdesc.NodeMapMap loop head -> invariant vars in loop
type invariant_map= VarsInLoop.t InferIR.Procdesc.NodeMap.t
val get_inv_vars_in_loop : InferIR.Tenv.t -> ReachingDefs.invariant_map -> is_pure_by_default:bool -> get_callee_purity:(InferIR.Typ.Procname.t -> PurityDomain.ModifiedParamIndices.t AbstractDomain.Types.top_lifted InferStdlib.IStd.sexp_option) -> InferIR.Procdesc.Node.t -> LoopNodes.t -> VarSet.tval get_loop_inv_var_map : InferIR.Tenv.t -> (InferIR.Typ.Procname.t -> PurityDomain.ModifiedParamIndices.t AbstractDomain.Types.top_lifted InferStdlib.IStd.sexp_option) -> ReachingDefs.invariant_map -> LoopNodes.t LoopHeadToInvVars.t -> invariant_map