sig
  type t
  val name : string
  val compare : t -> t -> int
  val pair : t -> t -> t
  val of_string : string -> t
  val to_string : t -> string
  val print : ?oc:out_channel -> t -> unit
  val print_ : ?oc:out_channel -> t -> unit
  type nodeSet
  type edgeSet
  val empty : t
  val make :
    Machines.MACHINE_TYPE.nodeSet ->
    Machines.MACHINE_TYPE.nodeSet -> Machines.MACHINE_TYPE.edgeSet -> t
  val of_file : string -> t
  val to_file : string -> t -> unit
  val to_dotstring :
    ?size:string ->
    ?rd:string -> ?shape:string -> ?fs:string -> string -> t -> string
  val to_dotfile :
    ?size:string ->
    ?rd:string ->
    ?shape:string -> ?fs:string -> string -> string -> t -> unit
  val report : t -> unit
  val starts : t -> Machines.MACHINE_TYPE.nodeSet
  val finals : t -> Machines.MACHINE_TYPE.nodeSet
  val edges : t -> Machines.MACHINE_TYPE.edgeSet
  val nodes : t -> Machines.MACHINE_TYPE.nodeSet
  val is_cyclic : t -> bool
  val is_stripped : t -> bool
  val are_isomorphic : t -> t -> bool
  val equal : t -> t -> bool
  val reverse : t -> t
  val trim : t -> t
  val rename : t -> t
  val rename_n : int -> t -> t
  val inter : t -> t -> t
  val union : t -> t -> t
end