functor (G : Sig.P->
  sig
    type graph = G.t
    type edge_label = G.E.label
    val merge_vertex : graph -> G.vertex list -> graph
    val merge_edges_e :
      ?src:G.vertex -> ?dst:G.vertex -> graph -> G.edge list -> graph
    val merge_edges_with_label :
      ?src:G.vertex ->
      ?dst:G.vertex -> ?label:edge_label -> graph -> edge_label -> graph
    val merge_isolabelled_edges : graph -> graph
    val merge_ends :
      ?strict:bool -> ?specified_vertex:G.vertex -> graph -> graph
    val merge_starts :
      ?strict:bool -> ?specified_vertex:G.vertex -> graph -> graph
    val merge_scc :
      ?loop_killer:bool ->
      ?specified_vertex:(G.vertex list -> G.vertex) -> graph -> graph
  end