sig
  module P :
    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
  module I :
    functor (G : Sig.I->
      sig
        type edgeset = (G.V.t * G.V.t) list
        val md : G.t -> G.t * Md.I.edgeset * G.V.t list
        val triangulate : G.t -> G.t
      end
end