Module SubSystem

module SubSystem: sig .. end
Abstract system

The functions and data types of this module are polymorphic in the actual source of the input system. See functions in InputSystem to delegate to concrete implementations of an input format.

A system is a set of subsystems, identified by a unique scope and containing instances of one other in a directed acyclic manner. Each system has at least an implementation or a contract, it may have both.
Author(s): Christoph Sticksel


type 'a t = {
   scope : Scope.t;
   source : 'a;
   has_contract : bool;
   has_modes : bool;
   has_impl : bool;
   subsystems : 'a t list;
}
A system parameterized by its actual source
val strategy_info_of : 'a t -> Strategy.info
Strategy info of a subsystem.
val all_subsystems : 'a t -> 'a t list
Return all subsystems in topological order with the top system at the head of the list
val find_subsystem : 'a t -> Scope.t -> 'a t
Return the subsystem of the given scope

Raise Not_found if there is no subsystem of that scope