sig
  module Make :
    functor (Param : Nts_functor.NTS_PARAM->
      sig
        module NFParam :
          sig
            type anotations = Nts_functor.Make(Param).anotations
            type control =
              Nts_functor.Make(Param).control =
                Nts_State of Param.t
            type transitions_container =
                Nts_functor.Make(Param).transitions_container
            type states_container = Nts_functor.Make(Param).states_container
            type inv_relation_container =
                Nts_functor.Make(Param).inv_relation_container
            val fold_states_containers :
              Expand_eldarica_compressed_bloc.Make.NFParam.states_container ->
              ('->
               Expand_eldarica_compressed_bloc.Make.NFParam.control -> 'a) ->
              '-> 'a
            val fold_transitions_container :
              Expand_eldarica_compressed_bloc.Make.NFParam.transitions_container ->
              ('->
               Expand_eldarica_compressed_bloc.Make.NFParam.control ->
               Nts_types.nts_trans_label list ->
               Expand_eldarica_compressed_bloc.Make.NFParam.control -> 'a) ->
              '-> 'a
            val add_transition_to_container :
              Expand_eldarica_compressed_bloc.Make.NFParam.transitions_container ->
              Expand_eldarica_compressed_bloc.Make.NFParam.control ->
              Nts_types.nts_trans_label list ->
              Expand_eldarica_compressed_bloc.Make.NFParam.control -> unit
            val iter_transitions_container :
              Expand_eldarica_compressed_bloc.Make.NFParam.transitions_container ->
              (Expand_eldarica_compressed_bloc.Make.NFParam.control ->
               Nts_types.nts_trans_label list ->
               Expand_eldarica_compressed_bloc.Make.NFParam.control -> unit) ->
              unit
            val iter_state_container :
              Expand_eldarica_compressed_bloc.Make.NFParam.states_container ->
              (Expand_eldarica_compressed_bloc.Make.NFParam.control -> unit) ->
              unit
            val is_state_in_inv_relation :
              Expand_eldarica_compressed_bloc.Make.NFParam.inv_relation_container ->
              Expand_eldarica_compressed_bloc.Make.NFParam.control -> bool
            val is_state_in_transition_container :
              Expand_eldarica_compressed_bloc.Make.NFParam.control ->
              Expand_eldarica_compressed_bloc.Make.NFParam.transitions_container ->
              bool
            type nts_automaton =
              Nts_functor.Make(Param).nts_automaton = {
              mutable nts_automata_name : string;
              mutable anot :
                Expand_eldarica_compressed_bloc.Make.NFParam.anotations;
              init_states :
                Expand_eldarica_compressed_bloc.Make.NFParam.states_container;
              final_states :
                Expand_eldarica_compressed_bloc.Make.NFParam.states_container;
              error_states :
                Expand_eldarica_compressed_bloc.Make.NFParam.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 :
                Expand_eldarica_compressed_bloc.Make.NFParam.transitions_container;
            }
            type nts_system =
              Nts_functor.Make(Param).nts_system = {
              nts_system_name : string;
              nts_global_vars : Nts_types.nts_genrel_var list;
              nts_automata :
                (string,
                 Expand_eldarica_compressed_bloc.Make.NFParam.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 =
              Nts_functor.Make(Param).num_subrel_in_cautomaton = {
              subrel_root :
                Expand_eldarica_compressed_bloc.Make.NFParam.control;
              sub_vertices :
                Expand_eldarica_compressed_bloc.Make.NFParam.states_container;
              sub_transitions :
                Expand_eldarica_compressed_bloc.Make.NFParam.transitions_container;
            }
            val is_state_in_cautomaton :
              Expand_eldarica_compressed_bloc.Make.NFParam.control ->
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_automaton ->
              bool
            val pprint_control :
              Expand_eldarica_compressed_bloc.Make.NFParam.control -> string
            val anot_parser :
              unit -> Expand_eldarica_compressed_bloc.Make.NFParam.anotations
            val states_container_of_states_list :
              Expand_eldarica_compressed_bloc.Make.NFParam.control list ->
              Expand_eldarica_compressed_bloc.Make.NFParam.states_container
            val transitions_container_of_trans_list :
              (Expand_eldarica_compressed_bloc.Make.NFParam.control *
               Expand_eldarica_compressed_bloc.Make.NFParam.control *
               Nts_types.nts_trans_label list)
              list ->
              Expand_eldarica_compressed_bloc.Make.NFParam.transitions_container
            val control_of_id_param :
              Param.t -> Expand_eldarica_compressed_bloc.Make.NFParam.control
            val out_degree_of_control_state :
              Expand_eldarica_compressed_bloc.Make.NFParam.control ->
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_automaton ->
              int
            val get_varinfo_by_optname :
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_system ->
              string option -> string -> Nts_types.nts_genrel_var option
            val get_varinfo_by_optcautomaton :
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_system ->
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_automaton
              option -> string -> Nts_types.nts_genrel_var option
            val is_error_state :
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_automaton ->
              Expand_eldarica_compressed_bloc.Make.NFParam.control -> bool
            val is_initial_state :
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_automaton ->
              Expand_eldarica_compressed_bloc.Make.NFParam.control -> bool
            val is_final_state :
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_automaton ->
              Expand_eldarica_compressed_bloc.Make.NFParam.control -> bool
            val get_transition_from :
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_automaton ->
              Expand_eldarica_compressed_bloc.Make.NFParam.control ->
              Expand_eldarica_compressed_bloc.Make.NFParam.control ->
              Nts_types.nts_trans_label list list option
            val get_successor_of :
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_automaton ->
              Expand_eldarica_compressed_bloc.Make.NFParam.control ->
              Expand_eldarica_compressed_bloc.Make.NFParam.states_container
            val get_one_state :
              Expand_eldarica_compressed_bloc.Make.NFParam.states_container ->
              Expand_eldarica_compressed_bloc.Make.NFParam.control option
            val is_successor_of :
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_automaton ->
              Expand_eldarica_compressed_bloc.Make.NFParam.control ->
              Expand_eldarica_compressed_bloc.Make.NFParam.control -> bool
            val get_one_transition :
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_automaton ->
              Expand_eldarica_compressed_bloc.Make.NFParam.control ->
              Expand_eldarica_compressed_bloc.Make.NFParam.control *
              Nts_types.nts_trans_label list
            val pprint_inputvars :
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_automaton ->
              string
            val pprint_outputvars :
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_automaton ->
              string
            val pprint_localvars :
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_automaton ->
              string
            val nt_system_var_cleaner :
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_system ->
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_system
            val nt_system_uncalled_subsystem_cleaner :
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_system ->
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_system
            val pprint_to_nts :
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_automaton ->
              string
            val pprint_nts :
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_system ->
              string
            val get_cautomaton_by_name :
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_system ->
              string ->
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_automaton
            val pprint_transitions :
              string ->
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_automaton ->
              string
            val compute_pred_relation :
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_automaton ->
              Expand_eldarica_compressed_bloc.Make.NFParam.inv_relation_container
            val subgraph_between :
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_automaton ->
              Expand_eldarica_compressed_bloc.Make.NFParam.control ->
              Expand_eldarica_compressed_bloc.Make.NFParam.control ->
              Expand_eldarica_compressed_bloc.Make.NFParam.num_subrel_in_cautomaton
            val pprint_subgraph_transitions :
              Expand_eldarica_compressed_bloc.Make.NFParam.num_subrel_in_cautomaton ->
              string
            val cautomaton_of_subrelation_cautomaton :
              string ->
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_automaton ->
              Expand_eldarica_compressed_bloc.Make.NFParam.num_subrel_in_cautomaton ->
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_automaton
            val cautomaton_of_transitions_container :
              string ->
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_automaton ->
              Expand_eldarica_compressed_bloc.Make.NFParam.transitions_container ->
              Expand_eldarica_compressed_bloc.Make.NFParam.nts_automaton
          end
        val nts_out_trace :
          Expand_eldarica_compressed_bloc.Make.NFParam.nts_system ->
          Expand_eldarica_compressed_bloc.Make.NFParam.nts_system ->
          Trace_types.sys_control list ->
          Expand_eldarica_compressed_bloc.Make.NFParam.nts_system
      end
end