Summary: Adds an mli and don't expose the internal Analyzer. Reviewed By: ezgicicek Differential Revision: D14258273 fbshipit-source-id: a000e5286master
parent
c2c876d435
commit
52e8f73060
@ -0,0 +1,35 @@
|
||||
(*
|
||||
* Copyright (c) 2019-present, Facebook, Inc.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*)
|
||||
|
||||
open! IStd
|
||||
module LoopHead = Procdesc.Node
|
||||
module LoopHeads = Procdesc.NodeSet
|
||||
|
||||
(** Map control var -> loop head location *)
|
||||
module ControlMap : module type of PrettyPrintable.MakePPMap (Var)
|
||||
|
||||
module GuardNodes : module type of AbstractDomain.FiniteSet (Procdesc.Node)
|
||||
|
||||
(** Map exit node -> loop head set *)
|
||||
module ExitNodeToLoopHeads = Procdesc.NodeMap
|
||||
|
||||
(** Map loop head -> prune nodes in the loop guard *)
|
||||
module LoopHeadToGuardNodes = Procdesc.NodeMap
|
||||
|
||||
type invariant_map
|
||||
|
||||
type loop_control_maps =
|
||||
{ exit_map: LoopHeads.t ExitNodeToLoopHeads.t
|
||||
; loop_head_to_guard_nodes: GuardNodes.t LoopHeadToGuardNodes.t }
|
||||
|
||||
val compute_invariant_map : Procdesc.t -> Tenv.t -> loop_control_maps -> invariant_map
|
||||
|
||||
val compute_control_vars :
|
||||
invariant_map
|
||||
-> LoopInvariant.VarsInLoop.t LoopHeadToGuardNodes.t
|
||||
-> LoopHead.t
|
||||
-> Location.t ControlMap.t
|
Loading…
Reference in new issue