sig
  type t
  module V : Sig.COMPARABLE
  type vertex = V.t
  module E :
    sig
      type t
      val compare : t -> t -> int
      type vertex = vertex
      val src : t -> vertex
      val dst : t -> vertex
      type label
      val create : vertex -> label -> vertex -> t
      val label : t -> label
    end
  type edge = Contraction.G.E.t
  val empty : Contraction.G.t
  val add_edge_e : Contraction.G.t -> Contraction.G.edge -> Contraction.G.t
  val fold_edges_e :
    (Contraction.G.edge -> '-> 'a) -> Contraction.G.t -> '-> 'a
  val fold_vertex :
    (Contraction.G.vertex -> '-> 'a) -> Contraction.G.t -> '-> 'a
end