Stog library reference documentation : Stog_types.Graph
sig
  type key = elt_id
  type edge_data = edge_type
  type t
  val create : unit -> t
  val marshal : t -> string
  val unmarshal : string -> t
  val succ : t -> key -> (key * edge_data) list
  val pred : t -> key -> (key * edge_data) list
  val add : t -> key * key * edge_data -> t
  val rem : t -> key * key -> (edge_data -> bool) -> t
  val rem_all : t -> key * key -> t
  val isolate : t -> key -> t
  val remove_node : t -> key -> t
  val pred_roots : ?ignore_deps:edge_data list -> t -> key list
  val succ_roots : t -> key list
  val recursive_succs : t -> ?pred:(edge_data -> bool) -> key -> key list
  val recursive_preds : t -> ?pred:(edge_data -> bool) -> key -> key list
  val reverse : t -> t
  val fold_succ :
    t -> (key -> (key * edge_data) list -> '-> 'a) -> '-> 'a
  val fold_pred :
    t -> (key -> (key * edge_data) list -> '-> 'a) -> '-> 'a
  val iter_succ : t -> (key -> (key * edge_data) list -> unit) -> unit
  val iter_pred : t -> (key -> (key * edge_data) list -> unit) -> unit
  val dot_of_graph :
    ?f_edge:(edge_data -> string * (string * string) list) ->
    f_node:(key -> string * string * (string * string) list) -> t -> string
  val nodes_by_pred_order : t -> key list
  val shortest_path :
    t ->
    (t -> key * key -> (float * edge_data) option) ->
    key * key -> (key * edge_data * key) list
end