functor (Gf : Sig.G->
  functor (Gt : Sig.I->
    functor
      (M : sig
             val vertex : Gt.t -> Gf.V.t -> Gt.V.t
             val edge : Gt.t -> Gt.V.t -> Gt.V.t -> unit
           end->
      sig val copy : Gf.t -> Gt.t end