sig
module type G =
sig
type t
module V : Sig.COMPARABLE
type vertex = V.t
module E :
sig
type t
val compare : t -> t -> int
type vertex = vertex
val src : t -> vertex
val dst : t -> vertex
type label
val create : vertex -> label -> vertex -> t
val label : t -> label
end
type edge = Contraction.G.E.t
val empty : Contraction.G.t
val add_edge_e :
Contraction.G.t -> Contraction.G.edge -> Contraction.G.t
val fold_edges_e :
(Contraction.G.edge -> 'a -> 'a) -> Contraction.G.t -> 'a -> 'a
val fold_vertex :
(Contraction.G.vertex -> 'a -> 'a) -> Contraction.G.t -> 'a -> 'a
end
module Make :
functor (G : G) ->
sig
val contract :
(Contraction.G.E.t -> bool) -> Contraction.G.t -> Contraction.G.t
end
end