module type OrderedType = Set.OrderedType module type S = sig type label type ('v, 'e) t type 'v vertex := label * 'v type 'e edge := label * label * 'e val make: 'v vertex list -> 'e edge list -> ('v, 'e) t val make': label list -> 'e edge list -> (label, 'e) t val make_e: 'e edge list -> (label, 'e) t val count_vertices: ('v, 'e) t -> int val count_edges: ('v, 'e) t -> int val rev: ('v, 'e) t -> ('v, 'e) t val iter_dfs: ('v -> 'v -> 'e -> unit) -> ('v, 'e) t -> label -> unit end