module type S =
sig
module G: Graph.S
type t
val empty: G.graph -> G.vertex -> t
val graph : t -> G.graph
val is_empty : t -> bool
val edge_set : t -> G.E.t
val add_first : G.edge -> t -> t
val add_last : t -> G.edge -> t
val first_vertex : t -> G.vertex
val last_vertex : t -> G.vertex
val endpoints : t -> G.vertex * G.vertex
val first_edge : t -> G.edge
val last_edge : t -> G.edge
val remove_first : t -> t
val remove_last : t -> t
val fold : ('a -> G.vertex -> G.edge -> G.vertex -> 'a) -> 'a -> t -> 'a
val fold_backward : (G.vertex -> G.edge -> G.vertex -> 'a -> 'a) -> t -> 'a -> 'a
val concat : t -> t -> t
val rev_concat: t -> t -> t
val reverse : t -> t
end