functor (PE : sig val edge_txt : Cil2cfg.edge -> string end->
  sig
    type t = Cil2cfg.CFG.t * (Cil2cfg.edge -> string)
    module V :
      sig
        type t = VL.t
        val compare : t -> t -> int
        val hash : t -> int
        val equal : t -> t -> bool
        type label = VL.t
        val create : label -> t
        val label : t -> label
      end
    module E :
      sig
        type t = VL.t * EL.t * VL.t
        val compare : t -> t -> int
        type vertex = CFG.vertex
        val src : t -> vertex
        val dst : t -> vertex
        type label = EL.t
        val create : vertex -> label -> vertex -> t
        val label : t -> label
      end
    val iter_edges_e :
      (Cil2cfg.CFG.edge -> unit) -> Cil2cfg.CFG.t * '-> unit
    val iter_vertex :
      (Cil2cfg.CFG.vertex -> unit) -> Cil2cfg.CFG.t * '-> unit
    val graph_attributes : '-> 'b list
    val pretty_raw_stmt : Cil_types.stmt -> string
    val vertex_name : Cil2cfg.node_info -> string
    val vertex_attributes :
      Cil2cfg.Printer.V.t ->
      [> `Color of int
       | `Label of string
       | `Shape of [> `Box | `Diamond | `Doublecircle ]
       | `Style of [> `Filled ] list ]
      list
    val default_vertex_attributes : '-> 'b list
    val edge_attributes :
      Cil2cfg.edge ->
      [> `Color of int
       | `Constraint of bool
       | `Label of string
       | `Style of [> `Bold | `Dashed | `Dotted ] list ]
      list
    val default_edge_attributes : '-> 'b list
    val get_subgraph :
      Cil2cfg.Printer.V.t -> Graph.Graphviz.DotAttributes.subgraph option
  end