module Lm_graph: sig .. end
type 'a t
type 'a node
val create : unit -> 'a t
val add_node : 'a t -> 'a -> 'a node
val add_edge : 'a t -> 'a node -> 'a node -> unit
val delete_node : 'a node -> unit
val delete_edge : 'a node -> 'a node -> unit
val get : 'a node -> 'a
val degree : 'a node -> int
val neighbors : 'a node -> 'a node list
val query : 'a node -> 'a node -> bool
val choose : 'a t -> 'a node
val find : ('a node -> bool) -> 'a t -> 'a node
val list : 'a t -> 'a node list
val iter : ('a node -> unit) -> 'a t -> unit
val fold : ('a -> 'b node -> 'a) -> 'a -> 'b t -> 'a
val filter : ('a node -> bool) -> 'a t -> 'a node list
val dfs_init : 'a t -> unit
val dfs_list : 'a node -> 'a node list
val dfs_list_rev : 'a node -> 'a node list
val dfs_iter : ('a node -> unit) -> 'a node -> unit
val dfs_fold : ('a -> 'b node -> 'a) -> 'a -> 'b node -> 'a