functor (Param : Nts_functor.NTS_PARAM->
  sig
    module NtsSys :
      sig
        type anotations = Nts_functor.Make(Param).anotations
        type control = Nts_functor.Make(Param).control
        type nts_automaton = Nts_functor.Make(Param).nts_automaton
        type nts_system = Nts_functor.Make(Param).nts_system
      end
    type control = Interproc_driver.Make.NtsSys.control
    type anotations = Interproc_driver.Make.NtsSys.anotations
    type nts_basic_block = {
      mutable head_label : string;
      mutable block :
        (Interproc_driver.Make.control * Nts_types.nts_trans_label list) list;
      mutable block_succs :
        (Interproc_driver.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 : Interproc_driver.Make.anotations;
      nts_cfg_init_block : (string, unit) Hashtbl.t;
      nts_cfg_final_block : (string, unit) Hashtbl.t;
      nts_cfg_error_block : (string, unit) 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, Interproc_driver.Make.nts_basic_block) Hashtbl.t;
    }
  end