functor
  (G_Init : sig
              type t
              module V : Sig.HASHABLE
              val fold_vertex :
                (V.t -> '-> 'a) -> Gmap.Vertex.t -> '-> 'a
            end->
  functor
    (G_Dest : sig
                type t
                type vertex
                val empty : unit -> Gmap.Vertex.t
                val add_vertex :
                  Gmap.Vertex.t -> Gmap.Vertex.vertex -> Gmap.Vertex.t
              end->
    sig val map : (G_Init.V.t -> G_Dest.vertex) -> G_Init.t -> G_Dest.t end