sig
  module MaximalCardinalitySearch :
    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
end