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