sig
type 'a t
val empty : unit -> 'a Graph1.t
val clear : 'a Graph1.t -> unit
val copy : 'a Graph1.t -> 'a Graph1.t
val add_edge : 'a Graph1.t -> 'a -> 'a -> unit
val add_vertex : 'a Graph1.t -> 'a -> unit
val add_adjacency_list : 'a Graph1.t -> 'a -> 'a list -> unit
val from_list : 'a Graph1.t -> ('a * 'a) list -> unit
val adjacent_vertices : 'a Graph1.t -> 'a -> 'a list
val dfs1 : 'a Graph1.t -> ('a * int * int * int) list
val top_sort : 'a Graph1.t -> 'a list
val reachable : 'a Graph1.t -> 'a -> 'a list
val out_degree : 'a Graph1.t -> 'a -> int
val in_degree : 'a Graph1.t -> 'a -> int
val edges : 'a Graph1.t -> ('a * 'a) list
val vertices : 'a Graph1.t -> 'a list
val transpose : 'a Graph1.t -> 'a Graph1.t
end