Module SubSystem

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
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