sig
  type graph =
      [ `Center of bool
      | `Fontcolor of Graphviz.color
      | `Fontname of string
      | `Fontsize of int
      | `Label of string
      | `Margin of float * float
      | `OrderingOut
      | `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 ]
  type vertex =
      [ `Color of Graphviz.color
      | `Fontcolor of 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 ]
  type edge =
      [ `Color of Graphviz.color
      | `Decorate of bool
      | `Dir of [ `Back | `Both | `Forward | `None ]
      | `Fontcolor of Graphviz.color
      | `Fontname of string
      | `Fontsize of int
      | `Id of string
      | `Label of string
      | `Labelfontcolor of Graphviz.color
      | `Labelfontname of string
      | `Labelfontsize of int
      | `Len of float
      | `Style of [ `Bold | `Dashed | `Dotted | `Invis | `Solid ]
      | `Weight of float ]
  type subgraph = {
    sg_name : string;
    sg_attributes : Graphviz.NeatoAttributes.vertex list;
  }
end