functor (Vocab : Symbols.SYMBOL_SEED->
  functor (Node : X.X_TYPE->
    functor (WordD : Delim.DELIM_TYPE->
      functor (WordSetD : Delim.DELIM_TYPE->
        functor (EdgeD : Delim.DELIM_TYPE->
          functor (NodeSetD : Delim.DELIM_TYPE->
            functor (NodeSetSetD : Delim.DELIM_TYPE->
              functor (EdgeSetD : Delim.DELIM_TYPE->
                functor (D : Delim.DELIM_TYPE->
                  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 : nodeSet -> nodeSet -> 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 -> nodeSet
                    val finals : t -> nodeSet
                    val edges : t -> edgeSet
                    val nodes : t -> 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
                    type node = Node.t
                    type edge
                    type label
                    type word
                    type wordSet
                    type nodeSetSet
                    val is_deterministic : t -> bool
                    val complete_determinize : t -> t
                    val determinize : t -> t
                    val minimize : t -> t
                    val complement : t -> t
                    val print_edgeMap : t -> unit
                    val concat : t -> t -> t
                    val star : t -> t
                    val is_nd : int -> int -> t -> bool
                    val transform : t -> nodeSet -> word -> nodeSet
                    val accepts : t -> string -> bool
                    val accepts_wordSet : t -> wordSet -> wordSet * wordSet
                    val generate : t -> int -> int -> wordSet
                    val generate_p : t -> int -> int -> unit
                    val k_followers : int -> nodeSet -> edgeSet -> wordSet
                    val k_leaders : int -> nodeSet -> edgeSet -> wordSet
                    val print_wordSet : ?oc:out_channel -> wordSet -> unit
                    val extend_pt : t -> word -> t
                    val pt : wordSet -> t
                    val st : wordSet -> t
                    val make_pt : string -> t
                    val make_st : string -> t
                    val extend : t -> word -> t
                    val make_pt2 : string -> t
                    val make_st2 : string -> t
                    val wordSet_of_string : string -> wordSet
                    val make_fin : in_channel -> t
                    val range_fsa : wordSet -> t
                    val make_range_fsa : string -> t
                    val merge1 : t -> nodeSetSet -> t
                    val merge1_ns : t -> nodeSet -> t
                    val merge : t -> (t -> nodeSetSet) -> t
                    val b_successors : t -> nodeSetSet
                    val is_final_eqr : t -> nodeSetSet
                    val is_nonfinal_eqr : t -> nodeSetSet
                    val is_start_eqr : t -> nodeSetSet
                    val is_nonstart_eqr : t -> nodeSetSet
                    val k_leaders_eqr : int -> t -> nodeSetSet
                    val k_followers_eqr : int -> t -> nodeSetSet
                    val jk_nhoods_eqr : int -> int -> t -> nodeSetSet
                  end