sig
  module P :
    functor (G : Sig.P->
      sig
        type edgelist = (G.V.t * G.V.t) list
        val mcsm :
          G.t ->
          (int * G.V.t) list * Mcs_m.MaximalCardinalitySearch.P.edgelist
        val triangulate : G.t -> G.t
      end
  module I :
    functor (Gr : Sig.I->
      sig
        type edgelist = (Gr.V.t * Gr.V.t) list
        val mcsm :
          Gr.t ->
          (int * Gr.V.t) list * Mcs_m.MaximalCardinalitySearch.I.edgelist
        val triangulate : Gr.t -> unit
      end
end