sig
  type color = int
  and arrow_style =
    [ `Dot | `Inv | `Invdot | `Invodot | `None | `Normal | `Odot]
  module CommonAttributes :
    sig
      type graph =
        [ `Center of bool
        | `Fontcolor of Avl_graphviz.color
        | `Fontname of string
        | `Fontsize of int
        | `Label of string
        | `Orientation of [ `Landscape | `Portrait]
        | `Page of float * float
        | `Pagedir of [ `LeftToRight | `TopToBottom]
        | `Size of float * float]
      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
        | `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
        | `Label of string
        | `Labelfontcolor of Avl_graphviz.color
        | `Labelfontname of string
        | `Labelfontsize of int
        | `Style of [ `Bold | `Dashed | `Dotted | `Invis | `Solid]]
    end
  module Dot :
    sig
      val set_command : string -> unit
      module Attributes :
        sig
          type graph =
            [ `Bgcolor of Avl_graphviz.color
            | `Center of bool
            | `Comment of string
            | `Concentrate of bool
            | `Fontcolor of Avl_graphviz.color
            | `Fontname of string
            | `Fontpath of string
            | `Fontsize of int
            | `Label of string
            | `Layers of string list
            | `Margin of float
            | `Mclimit of float
            | `Nodesep of float
            | `Nslimit of int
            | `Nslimit1 of int
            | `Orientation of [ `Landscape | `Portrait]
            | `Page of float * float
            | `Pagedir of [ `LeftToRight | `TopToBottom]
            | `Quantum of float
            | `Rankdir of [ `LeftToRight | `TopToBottom]
            | `Ranksep of float
            | `Ratio of [ `Auto | `Compress | `Fill | `Float of float]
            | `Samplepoints of int
            | `Size of float * float
            | `Url of string]
          and node =
            [ `Color of Avl_graphviz.color
            | `Comment of string
            | `Distortion of float
            | `Fillcolor of Avl_graphviz.color
            | `Fixedsize of bool
            | `Fontcolor of Avl_graphviz.color
            | `Fontname of string
            | `Fontsize of int
            | `Height of float
            | `Label of string
            | `Layer of string
            | `Orientation of float
            | `Peripheries of int
            | `Regular of bool
            | `Shape of
                [ `Box
                | `Circle
                | `Diamond
                | `Doublecircle
                | `Ellipse
                | `Plaintext
                | `Polygon of int * float
                | `Record]
            | `Style of
                [ `Bold | `Dashed | `Dotted | `Filled | `Invis | `Solid]
            | `Url of string
            | `Width of float
            | `Z of float]
          and edge =
            [ `Arrowhead of Avl_graphviz.arrow_style
            | `Arrowsize of float
            | `Arrowtail of Avl_graphviz.arrow_style
            | `Color of Avl_graphviz.color
            | `Comment of string
            | `Constraints of bool
            | `Decorate of bool
            | `Dir of [ `Back | `Both | `Forward | `None]
            | `Fontcolor of Avl_graphviz.color
            | `Fontname of string
            | `Fontsize of int
            | `Headlabel of string
            | `Headport of [ `E | `N | `NE | `NW | `S | `SE | `SW | `W]
            | `Headurl of string
            | `Label of string
            | `Labelangle of float
            | `Labeldistance of float
            | `Labelfloat of bool
            | `Labelfontcolor of Avl_graphviz.color
            | `Labelfontname of string
            | `Labelfontsize of int
            | `Layer of string
            | `Minlen of int
            | `Samehead of string
            | `Sametail of string
            | `Style of [ `Bold | `Dashed | `Dotted | `Invis | `Solid]
            | `Taillabel of string
            | `Tailport of [ `E | `N | `NE | `NW | `S | `SE | `SW | `W]
            | `Tailurl of string
            | `Weight of int]
        end
      module type INPUT =
        sig
          type graph
          and node
          and edge
          val iter_nodes :
            (Avl_graphviz.Dot.INPUT.node -> unit) ->
            Avl_graphviz.Dot.INPUT.graph -> unit
          val iter_edges :
            (Avl_graphviz.Dot.INPUT.edge -> unit) ->
            Avl_graphviz.Dot.INPUT.graph -> unit
          val graph_attributes :
            Avl_graphviz.Dot.INPUT.graph ->
            Avl_graphviz.Dot.Attributes.graph list
          val default_node_attributes :
            Avl_graphviz.Dot.INPUT.graph ->
            Avl_graphviz.Dot.Attributes.node list
          val default_edge_attributes :
            Avl_graphviz.Dot.INPUT.graph ->
            Avl_graphviz.Dot.Attributes.edge list
          val node_name : Avl_graphviz.Dot.INPUT.node -> string
          val node_attributes :
            Avl_graphviz.Dot.INPUT.node ->
            Avl_graphviz.Dot.Attributes.node list
          val edge_head :
            Avl_graphviz.Dot.INPUT.edge -> Avl_graphviz.Dot.INPUT.node
          val edge_tail :
            Avl_graphviz.Dot.INPUT.edge -> Avl_graphviz.Dot.INPUT.node
          val edge_attributes :
            Avl_graphviz.Dot.INPUT.edge ->
            Avl_graphviz.Dot.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
  module Neato :
    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
end