Stog library reference documentation : Stog_graph.Make_with_map
functor (P : Map.OrderedType->
  functor (Edge : Map.OrderedType->
    sig
      type key = P.t
      type edge_data = Edge.t
      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