module NodeSet : 
  Stdlib.Set.S
    with type elt = node
    with type t = Stdlib.Set.Make(OT).t
    with type elt = OT.ttype ('edge, 'info, 'cdata) tval empty : ( 'e, 'i, 'd ) tval add_edge : ( 'e, 'i, 'd ) t -> node -> 'e -> node -> ( 'e, 'i, 'd ) tval from_node : ( 'e, 'i, 'd ) t -> node -> (node * 'e) listval mem : ( 'e, 'i, 'd ) t -> node -> boolval del_edge : ( 'e, 'i, 'd ) t -> node -> node -> ( 'e, 'i, 'd ) tval del_nodes : ( 'e, 'i, 'd ) t -> NodeSet.t -> ( 'e, 'i, 'd ) tval all_nodes : ( 'e, 'i, 'd ) t -> NodeSet.tval get_info : ( 'e, 'i, 'd ) t -> node -> 'i optionval set_info : ( 'e, 'i, 'd ) t -> node -> 'i -> ( 'e, 'i, 'd ) tval clear_info : ( 'e, 'i, 'd ) t -> node -> ( 'e, 'i, 'd ) tval create_property : ( 'e, 'i, 'd ) t -> node list -> 'd -> ( 'e, 'i, 'd ) tval del_property : ( 'e, 'i, 'd ) t -> 'd Property.t -> ( 'e, 'i, 'd ) tval iter : 
  ( 'e, 'i, 'd ) t ->
  ( node -> 'd Property.t list -> 'i option -> (node * 'e) list -> unit ) ->
  unit