StrategyA strategy returns an Analysis.param option which is None if done. It takes
bool pairs with the scopes sorted in topological order, starting from the top-most one. Booleans indicate whether the corresponding system can be abstracted.module A = Analysistype info = {opacity : Opacity.t;Whether the node should be always abstracted by its contract, never, or sometimes
*)has_contract : bool;Does the system have a contract?
*)has_impl : bool;Does the system have an implementation?
*)has_modes : bool;Does the system have modes?
*)}Information used by the strategy module.
val next_monolithic_analysis :
A.results ->
(Scope.t * info) list ->
(Scope.t * info) list ->
A.param optionTakes some results and some information about (sub)systems, and returns the next monolithic analysis to perform, if any. The information it takes is
val next_modular_analysis :
A.results ->
(Scope.t -> (Scope.t * info) list) ->
(Scope.t * info) list ->
A.param optionTakes some results and some information about (sub)systems, and returns the next modular analysis to perform, if any. The information it takes is
val is_candidate_for_analysis : info -> boolTakes information about a (sub)system, and returns whether the subsystem is candidate for analysis