sig
  val set_command : string -> unit
  module Attributes :
    sig
      type graph =
        [ `Center of bool
        | `Fontcolor of Avl_graphviz.color
        | `Fontname of string
        | `Fontsize of int
        | `Label of string
        | `Margin of float * float
        | `Orientation of [ `Landscape | `Portrait]
        | `Overlap of bool
        | `Page of float * float
        | `Pagedir of [ `LeftToRight | `TopToBottom]
        | `Sep of float
        | `Size of float * float
        | `Spline of bool
        | `Start of int]
      and node =
        [ `Color of Avl_graphviz.color
        | `Fontcolor of Avl_graphviz.color
        | `Fontname of string
        | `Fontsize of int
        | `Height of float
        | `Label of string
        | `Orientation of float
        | `Peripheries of int
        | `Pos of float * float
        | `Regular of bool
        | `Shape of
            [ `Box
            | `Circle
            | `Diamond
            | `Doublecircle
            | `Ellipse
            | `Plaintext
            | `Polygon of int * float
            | `Record]
        | `Style of [ `Bold | `Dashed | `Dotted | `Filled | `Invis | `Solid]
        | `Width of float]
      and edge =
        [ `Color of Avl_graphviz.color
        | `Decorate of bool
        | `Dir of [ `Back | `Both | `Forward | `None]
        | `Fontcolor of Avl_graphviz.color
        | `Fontname of string
        | `Fontsize of int
        | `Id of string
        | `Label of string
        | `Labelfontcolor of Avl_graphviz.color
        | `Labelfontname of string
        | `Labelfontsize of int
        | `Len of float
        | `Style of [ `Bold | `Dashed | `Dotted | `Invis | `Solid]
        | `Weight of float]
    end
  module type INPUT =
    sig
      type graph
      and node
      and edge
      val iter_nodes :
        (Avl_graphviz.Neato.INPUT.node -> unit) ->
        Avl_graphviz.Neato.INPUT.graph -> unit
      val iter_edges :
        (Avl_graphviz.Neato.INPUT.edge -> unit) ->
        Avl_graphviz.Neato.INPUT.graph -> unit
      val graph_attributes :
        Avl_graphviz.Neato.INPUT.graph ->
        Avl_graphviz.Neato.Attributes.graph list
      val default_node_attributes :
        Avl_graphviz.Neato.INPUT.graph ->
        Avl_graphviz.Neato.Attributes.node list
      val default_edge_attributes :
        Avl_graphviz.Neato.INPUT.graph ->
        Avl_graphviz.Neato.Attributes.edge list
      val node_name : Avl_graphviz.Neato.INPUT.node -> string
      val node_attributes :
        Avl_graphviz.Neato.INPUT.node ->
        Avl_graphviz.Neato.Attributes.node list
      val edge_head :
        Avl_graphviz.Neato.INPUT.edge -> Avl_graphviz.Neato.INPUT.node
      val edge_tail :
        Avl_graphviz.Neato.INPUT.edge -> Avl_graphviz.Neato.INPUT.node
      val edge_attributes :
        Avl_graphviz.Neato.INPUT.edge ->
        Avl_graphviz.Neato.Attributes.edge list
    end
  module Make :
    functor (X : INPUT->
      sig
        exception Error of string
        val handle_error : ('-> 'b) -> '-> 'b
        val fprint_graph : Format.formatter -> X.graph -> unit
        val output_graph : Pervasives.out_channel -> X.graph -> unit
        val run_graph :
          [ `Gif | `HpGl | `Imap | `Ismap | `Mif | `Plain | `PostScript->
          (Pervasives.in_channel -> 'a) -> X.graph -> 'a
      end
end