functor
  (X : sig
         type t
         module V : sig type t end
         module E :
           sig
             type t
             val src : Graphviz.Dot.E.t -> Graphviz.Dot.V.t
             val dst : Graphviz.Dot.E.t -> Graphviz.Dot.V.t
           end
         val iter_vertex :
           (Graphviz.Dot.V.t -> unit) -> Graphviz.Dot.t -> unit
         val iter_edges_e :
           (Graphviz.Dot.E.t -> unit) -> Graphviz.Dot.t -> unit
         val graph_attributes :
           Graphviz.Dot.t -> Graphviz.DotAttributes.graph list
         val default_vertex_attributes :
           Graphviz.Dot.t -> Graphviz.DotAttributes.vertex list
         val vertex_name : Graphviz.Dot.V.t -> string
         val vertex_attributes :
           Graphviz.Dot.V.t -> Graphviz.DotAttributes.vertex list
         val get_subgraph :
           Graphviz.Dot.V.t -> Graphviz.DotAttributes.subgraph option
         val default_edge_attributes :
           Graphviz.Dot.t -> Graphviz.DotAttributes.edge list
         val edge_attributes :
           Graphviz.Dot.E.t -> Graphviz.DotAttributes.edge list
       end->
  sig
    val fprint_graph : Format.formatter -> X.t -> unit
    val output_graph : Pervasives.out_channel -> X.t -> unit
  end