sig
  exception Usage_error of string
  val usage : string -> 'a
  module Str : sig type t = string val compare : '-> '-> int end
  module StrSet :
    sig
      type elt = Main.Str.t
      type t = Set.Make(Str).t
      val empty : Main.StrSet.t
      val is_empty : Main.StrSet.t -> bool
      val mem : Main.StrSet.elt -> Main.StrSet.t -> bool
      val add : Main.StrSet.elt -> Main.StrSet.t -> Main.StrSet.t
      val singleton : Main.StrSet.elt -> Main.StrSet.t
      val remove : Main.StrSet.elt -> Main.StrSet.t -> Main.StrSet.t
      val union : Main.StrSet.t -> Main.StrSet.t -> Main.StrSet.t
      val inter : Main.StrSet.t -> Main.StrSet.t -> Main.StrSet.t
      val diff : Main.StrSet.t -> Main.StrSet.t -> Main.StrSet.t
      val compare : Main.StrSet.t -> Main.StrSet.t -> int
      val equal : Main.StrSet.t -> Main.StrSet.t -> bool
      val subset : Main.StrSet.t -> Main.StrSet.t -> bool
      val iter : (Main.StrSet.elt -> unit) -> Main.StrSet.t -> unit
      val fold : (Main.StrSet.elt -> '-> 'a) -> Main.StrSet.t -> '-> 'a
      val for_all : (Main.StrSet.elt -> bool) -> Main.StrSet.t -> bool
      val exists : (Main.StrSet.elt -> bool) -> Main.StrSet.t -> bool
      val filter :
        (Main.StrSet.elt -> bool) -> Main.StrSet.t -> Main.StrSet.t
      val partition :
        (Main.StrSet.elt -> bool) ->
        Main.StrSet.t -> Main.StrSet.t * Main.StrSet.t
      val cardinal : Main.StrSet.t -> int
      val elements : Main.StrSet.t -> Main.StrSet.elt list
      val min_elt : Main.StrSet.t -> Main.StrSet.elt
      val max_elt : Main.StrSet.t -> Main.StrSet.elt
      val choose : Main.StrSet.t -> Main.StrSet.elt
      val split :
        Main.StrSet.elt ->
        Main.StrSet.t -> Main.StrSet.t * bool * Main.StrSet.t
    end
  val add_local_module : Main.StrSet.elt -> unit
  val is_local_module : Main.StrSet.elt -> bool
  val get_genr_interface : unit -> bool
  val set_genr_interface : unit -> unit
  val get_genr_implementation : unit -> bool
  val set_genr_implementation : unit -> unit
  val get_genr_test : unit -> bool
  val set_genr_test : unit -> unit
  val get_seed : unit -> int
  val set_seed : int -> unit
  val get_num_tests : unit -> int
  val set_num_tests : int -> unit
  val get_val_depth : unit -> int
  val set_val_depth : int -> unit
  val get_testing_file_name : unit -> File.file_name
  val set_testing_file_name : File.file_name -> unit
  val get_output_module_implementation_name : unit -> File.file_name
  val set_output_module_implementation_name : File.file_name -> unit
  val get_output_module_interface_name : unit -> File.file_name
  val set_output_module_interface_name : File.file_name -> unit
  val get_output_module_name : unit -> string
  val set_output_module_name : string -> unit
  val get_input_file_name : unit -> File.file_name
  val set_input_file_name : File.file_name -> unit
  val set_implementation_from_file_name : File.file_name -> unit
  val set_output_file_name : File.file_name -> unit
  val check_signature_item : string -> Parsetree.signature_item -> unit
  val check_structure_item : string -> Parsetree.structure_item -> unit
  val check_and_genr_ml :
    bool -> Format.formatter -> Parsetree.structure_item -> unit
  val check_and_genr_mli :
    bool -> Format.formatter -> Parsetree.structure_item -> unit
  val genr_test : int -> Parsetree.structure_item -> Code.structure_item list
  val genr_file :
    (Format.formatter -> unit) ->
    (bool -> Format.formatter -> '-> unit) ->
    'a list -> File.file_name -> unit
  val genr_file_mli : Parsetree.structure_item list -> File.file_name -> unit
  val genr_file_ml : Parsetree.structure_item list -> File.file_name -> unit
  val genr_test_file :
    Parsetree.structure_item list -> File.file_name -> unit
  val genr : File.file_name -> unit
  val umsg : string
  val print_moca_version : string -> 'a
  val print_moca_short_version : unit -> 'a
  val print_moca_full_version : unit -> 'a
  val argspec : (Arg.key * Arg.spec * Arg.doc) list
  val print_usage : unit -> unit
  val main : unit -> 'a
end