Functor Nts_functor.Make

module Make: 
functor (Param : NTS_PARAM) -> sig .. end
Signature definition of the Make functor. Types are abstracts.
Parameters:
Param : NTS_PARAM

type anotations 
Type for anotations
type control = 
| Nts_State of Param.t
Type of a control state
type transitions_container 
Type used to encode transitions between control states
type states_container 
type inv_relation_container 
Type used to encode the inverse of the unlabelled successor relation transition
val fold_states_containers : states_container ->
('a -> control -> 'a) -> 'a -> 'a
'a is the type of the folded value. A nts transition is defined by a tuple of type ( control * nts_gen_rel list * control ). A function of type ('a -> control -> nts_gen_rel list-> control -> 'a ) is required by this folder. e.g : type 'a = string for any pretty printting.
val fold_transitions_container : transitions_container ->
('a ->
control ->
Nts_types.nts_trans_label list -> control -> 'a) ->
'a -> 'a
In this implementation, transc has type (control,(control, nts_gen_rel list) t ) t.
val add_transition_to_container : transitions_container ->
control ->
Nts_types.nts_trans_label list -> control -> unit
val iter_transitions_container : transitions_container ->
(control ->
Nts_types.nts_trans_label list -> control -> unit) ->
unit
val iter_state_container : states_container ->
(control -> unit) -> unit
val is_state_in_inv_relation : inv_relation_container -> control -> bool
val is_state_in_transition_container : control -> transitions_container -> bool
type nts_automaton = {
   mutable nts_automata_name :string;
   mutable anot :anotations;
   init_states :states_container;
   final_states :states_container;
   error_states :states_container;
   input_vars :Nts_types.nts_genrel_var list;
   output_vars :Nts_types.nts_genrel_var list;
   local_vars :Nts_types.nts_genrel_var list;
   transitions :transitions_container;
}
counter automata with inputs and output variables and hierachical calls enabled.
type nts_system = {
   nts_system_name :string;
   nts_global_vars :Nts_types.nts_genrel_var list;
   nts_automata :(string, nts_automaton) Hashtbl.t;
   nts_gvars_init :Nts_types.nts_gen_relation list option;
   nts_system_threads :(string * Big_int.big_int) list option;
}
Hierarchical numerical transition systems type definition
type num_subrel_in_cautomaton = {
   subrel_root :control;
   sub_vertices :states_container;
   sub_transitions :transitions_container;
}
Subrelation type definition.
val is_state_in_cautomaton : control -> nts_automaton -> bool
val pprint_control : control -> string
val anot_parser : unit -> anotations
val states_container_of_states_list : control list -> states_container
val transitions_container_of_trans_list : (control * control *
Nts_types.nts_trans_label list)
list -> transitions_container
val control_of_id_param : Param.t -> control
Creates a control state type value from an identifier value.
val out_degree_of_control_state : control -> nts_automaton -> int
Number of outgoing transition of a control state
val in_degree_of_control_state : control -> inv_relation_container -> int
Number of incoming transitions in a control state
val get_varinfo_by_optname : nts_system ->
string option -> string -> Nts_types.nts_genrel_var option
val get_varinfo_by_optcautomaton : nts_system ->
nts_automaton option ->
string -> Nts_types.nts_genrel_var option
val is_error_state : nts_automaton -> control -> bool
val is_initial_state : nts_automaton -> control -> bool
val is_final_state : nts_automaton -> control -> bool
val get_transition_from : nts_automaton ->
control ->
control -> Nts_types.nts_trans_label list list option
val get_successor_of : nts_automaton ->
control -> states_container
val get_one_state : states_container -> control option
val is_successor_of : nts_automaton ->
control -> control -> bool
returns true iff the third argument is a successor of the second one in the automaton provided as first argument.
val get_one_transition : nts_automaton ->
control ->
control * Nts_types.nts_trans_label list
Picks an outing transiton from control in the automaton
val pprint_inputvars : nts_automaton -> string
val pprint_outputvars : nts_automaton -> string
val pprint_localvars : nts_automaton -> string
val nt_system_var_cleaner : nts_system -> nts_system
computes a numerical transition system in which all local variables list of each automaton has been cleared of non used varibles
val nt_system_uncalled_subsystem_cleaner : nts_system -> nts_system
Returns a nts system where all subsystems that does not appear in a call are removed.
val pprint_to_nts : nts_automaton -> string
This function pretty prints a nts subsystem.
val pprint_nts : nts_system -> string
This function pretty prints a hierarchical transition system.
val get_cautomaton_by_name : nts_system -> string -> nts_automaton
val pprint_transitions : string -> nts_automaton -> string
val compute_pred_relation : nts_automaton -> inv_relation_container
Compute the set of one step predecessors of all control states
val subgraph_between : nts_automaton ->
control ->
control -> num_subrel_in_cautomaton
Computes the subgraph between two control states
val subgraph_between_cond_on_edges : (control ->
Nts_types.nts_trans_label list -> control -> bool) ->
nts_automaton ->
control ->
control -> num_subrel_in_cautomaton
Computes the subgraph between two control states where each transition lable complies with the function provided as first parameter.
val pprint_subgraph_transitions : num_subrel_in_cautomaton -> string
Pretty prints a subgraph using the nts syntax on control states and labels
val cautomaton_of_subrelation_cautomaton : string ->
nts_automaton ->
num_subrel_in_cautomaton -> nts_automaton
Creates a new couter automaton, using the definition of a cautomaton -2nd argument- and a subrelation -3rd argument, and call it using the name provided in the first argument.
val cautomaton_of_transitions_container : string ->
nts_automaton ->
transitions_container -> nts_automaton
Creates a subsystem from a nts_automaton and a transition container.
type nts_type_basic_block = 
| Nts_branching_block
| Nts_standard_block
Types and functions used to generate a control flow graph from the numerical transition system description
type nts_basic_block = {
   block_head_label :string;
   block_head_state :control;
   block_type :nts_type_basic_block;
   mutable block :(control * Nts_types.nts_trans_label list *
control)
list
;
(*Current control state, nts_trans_label_list corresponds to what changes/is called before transiting*)
   mutable block_succs :(nts_basic_block Pervasives.ref *
Nts_types.nts_trans_label list)
list option
;
(*transitions between blocks. Nexts blocks and the transisions being described. None is in the case the last control state is an error state. It's also a convenience for the buiding process.*)
}
Type definition for block encoding. Here, a basic block is defined using a label, a head control state, a sequence of transition and a set of successor, coded as (blocks references * transition labels).
type nts_automaton_cfg = {
   mutable nts_cfg_name :string;
   mutable cfg_anot :anotations;
   nts_cfg_init_block :(string, nts_basic_block) Hashtbl.t;
   nts_cfg_final_block :(string, nts_basic_block) Hashtbl.t;
   nts_cfg_error_block :(string, nts_basic_block) Hashtbl.t;
   nts_input_vars :Nts_types.nts_genrel_var list;
   nts_output_vars :Nts_types.nts_genrel_var list;
   nts_local_vars :Nts_types.nts_genrel_var list;
   nts_blocks_transitions :(string, nts_basic_block) Hashtbl.t;
}
Block encoding of a subsystem.
val get_last_control_state_of_bblock : nts_basic_block -> control
val blocks_compression_of_nts_automaton : nts_automaton -> nts_automaton_cfg
Computes the block encoding of a transition system.