functor (G : Sig.P->
  sig
    type edgeset = (G.V.t * G.V.t) list
    val md : G.t -> G.t * Md.P.edgeset * G.V.t list
    val triangulate : G.t -> G.t
  end