sig
  val attrvertex :
    ('a, 'b) SHGraph.compare ->
    ('a, 'c, 'd, 'e, 'f) SHGraph.graph -> 'a -> 'd
  val attrhedge :
    ('a, 'b) SHGraph.compare ->
    ('c, 'b, 'd, 'e, 'f) SHGraph.graph -> 'b -> 'e
  val is_vertex :
    ('a, 'b) SHGraph.compare ->
    ('a, 'c, 'd, 'e, 'f) SHGraph.graph -> 'a -> bool
  val is_hedge :
    ('a, 'b) SHGraph.compare ->
    ('c, 'b, 'd, 'e, 'f) SHGraph.graph -> 'b -> bool
  val succhedge :
    ('a, 'b) SHGraph.compare ->
    ('a, 'c, 'd, 'e, 'f) SHGraph.graph -> 'a -> 'c Sette.t
  val predhedge :
    ('a, 'b) SHGraph.compare ->
    ('a, 'c, 'd, 'e, 'f) SHGraph.graph -> 'a -> 'c Sette.t
  val succvertex :
    ('a, 'b) SHGraph.compare ->
    ('c, 'b, 'd, 'e, 'f) SHGraph.graph -> 'b -> 'c array
  val predvertex :
    ('a, 'b) SHGraph.compare ->
    ('c, 'b, 'd, 'e, 'f) SHGraph.graph -> 'b -> 'c array
  val succ_vertex :
    ('a, 'b) SHGraph.compare ->
    ('a, 'b, 'c, 'd, 'e) SHGraph.graph -> 'a -> 'a Sette.t
  val pred_vertex :
    ('a, 'b) SHGraph.compare ->
    ('a, 'b, 'c, 'd, 'e) SHGraph.graph -> 'a -> 'a Sette.t
  val add_vertex :
    ('a, 'b) SHGraph.compare ->
    ('a, 'c, 'd, 'e, 'f) SHGraph.graph -> 'a -> 'd -> unit
  val add_hedge :
    ('a, 'b) SHGraph.compare ->
    ('a, 'b, 'c, 'd, 'e) SHGraph.graph ->
    'b -> 'd -> pred:'a array -> succ:'a array -> unit
  val replace_attrvertex :
    ('a, 'b) SHGraph.compare ->
    ('a, 'c, 'd, 'e, 'f) SHGraph.graph -> 'a -> 'd -> unit
  val replace_attrhedge :
    ('a, 'b) SHGraph.compare ->
    ('a, 'b, 'c, 'd, 'e) SHGraph.graph -> 'b -> 'd -> unit
  val remove_hedge :
    ('a, 'b) SHGraph.compare ->
    ('a, 'b, 'c, 'd, 'e) SHGraph.graph -> 'b -> unit
  val remove_vertex :
    ('a, 'b) SHGraph.compare ->
    ('a, 'b, 'c, 'd, 'e) SHGraph.graph -> 'a -> unit
  val topological_sort :
    ('a, 'b) SHGraph.compare ->
    ?priority:'b SHGraph.priority ->
    ('a, 'b, 'c, 'd, 'e) SHGraph.t -> 'a -> 'a list
  val topological_sort_multi :
    ('a, 'b) SHGraph.compare ->
    'a ->
    'b ->
    ?priority:'b SHGraph.priority ->
    ('a, 'b, 'c, 'd, 'e) SHGraph.t -> 'a Sette.t -> 'a list
  val reachable :
    ('a, 'b) SHGraph.compare ->
    ?filter:('b -> bool) ->
    ('a, 'b, 'c, 'd, 'e) SHGraph.t -> 'a -> 'a Sette.t * 'b Sette.t
  val reachable_multi :
    ('a, 'b) SHGraph.compare ->
    'a ->
    'b ->
    ?filter:('b -> bool) ->
    ('a, 'b, 'c, 'd, 'e) SHGraph.t -> 'a Sette.t -> 'a Sette.t * 'b Sette.t
  val cfc :
    ('a, 'b) SHGraph.compare ->
    ?priority:'b SHGraph.priority ->
    ('a, 'b, 'c, 'd, 'e) SHGraph.graph -> 'a -> 'a list list
  val cfc_multi :
    ('a, 'b) SHGraph.compare ->
    ?priority:'b SHGraph.priority ->
    'a ->
    'b -> ('a, 'b, 'c, 'd, 'e) SHGraph.graph -> 'a Sette.t -> 'a list list
  val scfc :
    ('a, 'b) SHGraph.compare ->
    ?priority:'b SHGraph.priority ->
    ('a, 'b, 'c, 'd, 'e) SHGraph.graph -> 'a -> (unit, 'a) Ilist.t
  val scfc_multi :
    ('a, 'b) SHGraph.compare ->
    'a ->
    'b ->
    ?priority:'b SHGraph.priority ->
    ('a, 'b, 'c, 'd, 'e) SHGraph.graph -> 'a Sette.t -> (unit, 'a) Ilist.t
  val print :
    ('a, 'b) SHGraph.compare ->
    (Format.formatter -> 'a -> unit) ->
    (Format.formatter -> 'b -> unit) ->
    (Format.formatter -> 'c -> unit) ->
    (Format.formatter -> 'd -> unit) ->
    (Format.formatter -> 'e -> unit) ->
    Format.formatter -> ('a, 'b, 'c, 'd, 'e) SHGraph.graph -> unit
  val min :
    ('a, 'b) SHGraph.compare ->
    ('a, 'c, 'd, 'e, 'f) SHGraph.graph -> 'a Sette.t
  val max :
    ('a, 'b) SHGraph.compare ->
    ('a, 'c, 'd, 'e, 'f) SHGraph.graph -> 'a Sette.t
end