type (#'a:level) elt
type (#'a:level) t
val empty : 'a t
val is_empty : 'a t -> 'a bool
val mem : 'a elt -> 'a t -> 'a bool
val add : 'a elt -> 'a t -> 'a t
val singleton : 'a elt -> 'a t
val remove : 'a elt -> 'a t -> 'a t
val union_ : 'a t -> 'a t -> 'a t
val inter_ : 'a t -> 'a t -> 'a t
val diff : 'a t -> 'a t -> 'a t
val compare : 'a t -> 'a t -> 'a int
val equal : 'a t -> 'a t -> 'a bool
val subset : 'a t -> 'a t -> 'a bool
val iter : ('a elt -{'b | 'c | 'b}-> 'd) -> 'a t -{'b | 'c |}-> unit
with 'a, content('c) < 'b
val fold : ('a elt -{'b | 'c | 'd}-> 'e -{'f | 'c | 'g}-> 'h) ->
'a t -> 'h -{'i | 'c |}-> 'h
with 'a, content('c), 'd, 'g, 'i < 'f
and 'a, content('c), 'd, 'i < 'b
and 'a, 'd, 'g < level('e)
and 'h < 'e
and 'a, 'd, 'g < level('h)
val for_all : ('a elt -{'b | 'c | 'd}-> 'e bool) ->
'a t -{'b | 'c |}-> 'e bool
with 'a, 'd < 'e
and 'a, content('c), 'd < 'b
val exists : ('a elt -{'b | 'c | 'd}-> 'e bool) ->
'a t -{'b | 'c |}-> 'e bool
with 'a, 'd < 'e
and 'a, content('c), 'd < 'b
val filter : ('a elt -{'b | 'c | 'd}-> 'e bool) -> 'a t -{'b | 'c |}-> 'e t
with 'a, 'd < 'e
and 'a, content('c), 'd < 'b
val partition : ('a elt -{'b | 'c | 'd}-> 'e bool) ->
'a t -{'b | 'c |}-> 'e t * 'e t
with 'a, 'd < 'e
and 'a, content('c), 'd < 'b
val cardinal : 'a t -> 'a int
val elements : 'a t -> ('a elt, 'a) list
val min_elt : 'a t -{'b | Not_found: 'b |}-> 'a elt
with 'a < 'b
val max_elt : 'a t -{'b | Not_found: 'b |}-> 'a elt
with 'a < 'b
val choose : 'a t -{'b | Not_found: 'b |}-> 'a elt
with 'a < 'b