sig
exception UnboundVarName of string
exception No_such_counter_automata_in_nts_system of string * string
module type NTS_PARAM =
sig
type t
type anot_type
val anot_parser : unit -> Nts_functor.NTS_PARAM.anot_type
val pprint_keyid : Nts_functor.NTS_PARAM.t -> string
val key_val_of_string : string -> Nts_functor.NTS_PARAM.t
val compare_keyid :
Nts_functor.NTS_PARAM.t -> Nts_functor.NTS_PARAM.t -> int
val pprint_anot : Nts_functor.NTS_PARAM.anot_type -> string
end
module Make :
functor (Param : NTS_PARAM) ->
sig
type anotations
type control = Nts_State of Param.t
type transitions_container
type states_container
type inv_relation_container
val fold_states_containers :
Nts_functor.Make.states_container ->
('a -> Nts_functor.Make.control -> 'a) -> 'a -> 'a
val fold_transitions_container :
Nts_functor.Make.transitions_container ->
('a ->
Nts_functor.Make.control ->
Nts_types.nts_trans_label list -> Nts_functor.Make.control -> 'a) ->
'a -> 'a
val add_transition_to_container :
Nts_functor.Make.transitions_container ->
Nts_functor.Make.control ->
Nts_types.nts_trans_label list -> Nts_functor.Make.control -> unit
val iter_transitions_container :
Nts_functor.Make.transitions_container ->
(Nts_functor.Make.control ->
Nts_types.nts_trans_label list -> Nts_functor.Make.control -> unit) ->
unit
val iter_state_container :
Nts_functor.Make.states_container ->
(Nts_functor.Make.control -> unit) -> unit
val is_state_in_inv_relation :
Nts_functor.Make.inv_relation_container ->
Nts_functor.Make.control -> bool
val is_state_in_transition_container :
Nts_functor.Make.control ->
Nts_functor.Make.transitions_container -> bool
type nts_automaton = {
mutable nts_automata_name : string;
mutable anot : Nts_functor.Make.anotations;
init_states : Nts_functor.Make.states_container;
final_states : Nts_functor.Make.states_container;
error_states : Nts_functor.Make.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 : Nts_functor.Make.transitions_container;
}
type nts_system = {
nts_system_name : string;
nts_global_vars : Nts_types.nts_genrel_var list;
nts_automata : (string, Nts_functor.Make.nts_automaton) Hashtbl.t;
nts_gvars_init : Nts_types.nts_gen_relation list option;
nts_system_threads : (string * Big_int.big_int) list option;
}
type num_subrel_in_cautomaton = {
subrel_root : Nts_functor.Make.control;
sub_vertices : Nts_functor.Make.states_container;
sub_transitions : Nts_functor.Make.transitions_container;
}
val is_state_in_cautomaton :
Nts_functor.Make.control -> Nts_functor.Make.nts_automaton -> bool
val pprint_control : Nts_functor.Make.control -> string
val anot_parser : unit -> Nts_functor.Make.anotations
val states_container_of_states_list :
Nts_functor.Make.control list -> Nts_functor.Make.states_container
val transitions_container_of_trans_list :
(Nts_functor.Make.control * Nts_functor.Make.control *
Nts_types.nts_trans_label list)
list -> Nts_functor.Make.transitions_container
val control_of_id_param : Param.t -> Nts_functor.Make.control
val out_degree_of_control_state :
Nts_functor.Make.control -> Nts_functor.Make.nts_automaton -> int
val in_degree_of_control_state :
Nts_functor.Make.control ->
Nts_functor.Make.inv_relation_container -> int
val get_varinfo_by_optname :
Nts_functor.Make.nts_system ->
string option -> string -> Nts_types.nts_genrel_var option
val get_varinfo_by_optcautomaton :
Nts_functor.Make.nts_system ->
Nts_functor.Make.nts_automaton option ->
string -> Nts_types.nts_genrel_var option
val is_error_state :
Nts_functor.Make.nts_automaton -> Nts_functor.Make.control -> bool
val is_initial_state :
Nts_functor.Make.nts_automaton -> Nts_functor.Make.control -> bool
val is_final_state :
Nts_functor.Make.nts_automaton -> Nts_functor.Make.control -> bool
val get_transition_from :
Nts_functor.Make.nts_automaton ->
Nts_functor.Make.control ->
Nts_functor.Make.control ->
Nts_types.nts_trans_label list list option
val get_successor_of :
Nts_functor.Make.nts_automaton ->
Nts_functor.Make.control -> Nts_functor.Make.states_container
val get_one_state :
Nts_functor.Make.states_container ->
Nts_functor.Make.control option
val is_successor_of :
Nts_functor.Make.nts_automaton ->
Nts_functor.Make.control -> Nts_functor.Make.control -> bool
val get_one_transition :
Nts_functor.Make.nts_automaton ->
Nts_functor.Make.control ->
Nts_functor.Make.control * Nts_types.nts_trans_label list
val pprint_inputvars : Nts_functor.Make.nts_automaton -> string
val pprint_outputvars : Nts_functor.Make.nts_automaton -> string
val pprint_localvars : Nts_functor.Make.nts_automaton -> string
val nt_system_var_cleaner :
Nts_functor.Make.nts_system -> Nts_functor.Make.nts_system
val nt_system_uncalled_subsystem_cleaner :
Nts_functor.Make.nts_system -> Nts_functor.Make.nts_system
val pprint_to_nts : Nts_functor.Make.nts_automaton -> string
val pprint_nts : Nts_functor.Make.nts_system -> string
val get_cautomaton_by_name :
Nts_functor.Make.nts_system ->
string -> Nts_functor.Make.nts_automaton
val pprint_transitions :
string -> Nts_functor.Make.nts_automaton -> string
val compute_pred_relation :
Nts_functor.Make.nts_automaton ->
Nts_functor.Make.inv_relation_container
val subgraph_between :
Nts_functor.Make.nts_automaton ->
Nts_functor.Make.control ->
Nts_functor.Make.control ->
Nts_functor.Make.num_subrel_in_cautomaton
val subgraph_between_cond_on_edges :
(Nts_functor.Make.control ->
Nts_types.nts_trans_label list -> Nts_functor.Make.control -> bool) ->
Nts_functor.Make.nts_automaton ->
Nts_functor.Make.control ->
Nts_functor.Make.control ->
Nts_functor.Make.num_subrel_in_cautomaton
val pprint_subgraph_transitions :
Nts_functor.Make.num_subrel_in_cautomaton -> string
val cautomaton_of_subrelation_cautomaton :
string ->
Nts_functor.Make.nts_automaton ->
Nts_functor.Make.num_subrel_in_cautomaton ->
Nts_functor.Make.nts_automaton
val cautomaton_of_transitions_container :
string ->
Nts_functor.Make.nts_automaton ->
Nts_functor.Make.transitions_container ->
Nts_functor.Make.nts_automaton
type nts_type_basic_block = Nts_branching_block | Nts_standard_block
type nts_basic_block = {
block_head_label : string;
block_head_state : Nts_functor.Make.control;
block_type : Nts_functor.Make.nts_type_basic_block;
mutable block :
(Nts_functor.Make.control * Nts_types.nts_trans_label list *
Nts_functor.Make.control)
list;
mutable block_succs :
(Nts_functor.Make.nts_basic_block Pervasives.ref *
Nts_types.nts_trans_label list)
list option;
}
type nts_automaton_cfg = {
mutable nts_cfg_name : string;
mutable cfg_anot : Nts_functor.Make.anotations;
nts_cfg_init_block :
(string, Nts_functor.Make.nts_basic_block) Hashtbl.t;
nts_cfg_final_block :
(string, Nts_functor.Make.nts_basic_block) Hashtbl.t;
nts_cfg_error_block :
(string, Nts_functor.Make.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_functor.Make.nts_basic_block) Hashtbl.t;
}
val get_last_control_state_of_bblock :
Nts_functor.Make.nts_basic_block -> Nts_functor.Make.control
val blocks_compression_of_nts_automaton :
Nts_functor.Make.nts_automaton ->
Nts_functor.Make.nts_automaton_cfg
end
end