## Parameters

`module S : Stdlib.Set.S`
`module HM : HM`

## Signature

`type vertex = HM.key`
`val is_directed : bool`
`val empty : 'a HM.return`
`val create : ?size:int -> unit -> 'a HM.t`
`val clear : 'a HM.t -> unit`
`val is_empty : 'a HM.t -> bool`
`val copy : 'a HM.t -> 'a HM.t`
`val nb_vertex : 'a HM.t -> int`
`val nb_edges : ('a * S.t) HM.t -> int`
`val out_degree : ('a * S.t) HM.t -> HM.key -> int`
`val mem_vertex : 'a HM.t -> HM.key -> bool`
`val unsafe_add_vertex : (S.t * S.t) HM.t -> HM.key -> (S.t * S.t) HM.t`
`val add_vertex : (S.t * S.t) HM.t -> HM.key -> (S.t * S.t) HM.t`
`val iter_vertex : (HM.key -> unit) -> 'a HM.t -> unit`
`val fold_vertex : (HM.key -> 'a -> 'a) -> 'b HM.t -> 'a -> 'a`