sig
  module Make_NtsCfg :
    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_NtsCfg.NtsSys.control
        type anotations = Interproc_driver.Make_NtsCfg.NtsSys.anotations
        type nts_basic_block = {
          mutable head_label : string;
          mutable block : Nts_types.nts_trans_label list list;
          mutable block_succs :
            (Interproc_driver.Make_NtsCfg.nts_basic_block Pervasives.ref *
             Nts_types.nts_trans_label list)
            list option;
        }
        type nts_function_cfg = {
          mutable nts_cfg_name : string;
          mutable cfg_anot : Interproc_driver.Make_NtsCfg.anotations;
          nts_cfg_blocks : (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_NtsCfg.nts_basic_block) Hashtbl.t;
        }
        type nts_functional_program = {
          nts_fun_glob_vars : Nts_types.nts_genrel_var list;
          nts_fun_function_definitions :
            Interproc_driver.Make_NtsCfg.nts_function_cfg list option;
          nts_fun_gvars_init : Nts_types.nts_gen_relation list option;
          nts_fun_function_main :
            Interproc_driver.Make_NtsCfg.nts_function_cfg;
          nts_fun_system_threads : (string * Big_int.big_int) list option;
        }
      end
  module Make :
    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
end