module Domain: GSet.S
with type element = key
Elements are assumed to have a natural total order.
type
element
Sets.
type
t
The empty set.
val empty : t
is_empty s
tells whether s
is the empty set.
val is_empty : t -> bool
singleton x
returns a singleton set containing x
as its only
element.
val singleton : element -> t
cardinal s
returns the cardinal of s
.
val cardinal : t -> int
choose s
returns an arbitrarily chosen element of s
, if s
is nonempty, and raises Not_found
otherwise.
val choose : t -> element
mem x s
returns true
if and only if x
appears in the set
s
.
val mem : element -> t -> bool
add x s
returns a set whose elements are all elements of s
,
plus x
.
val add : element -> t -> t
remove x s
returns a set whose elements are all elements of
s
, except x
.
val remove : element -> t -> t
union s1 s2
returns the union of the sets s1
and s2
.
val union : t -> t -> t
val diff : t -> t -> t
inter s t
returns the set intersection of s
and t
, that is,
$s\cap t$.
val inter : t -> t -> t
disjoint s1 s2
returns true
if and only if the sets s1
and
s2
are disjoint, i.e. iff their intersection is empty.
val disjoint : t -> t -> bool
iter f s
invokes f x
, in turn, for each element x
of the
set s
. Elements are presented to f
in increasing order.
val iter : (element -> unit) -> t -> unit
fold f s seed
invokes f x accu
, in turn, for each element x
of the set s
. Elements are presented to f
in increasing
order. The initial value of accu
is seed
; then, at each new
call, its value is the value returned by the previous invocation
of f
. The value returned by fold
is the final value of
accu
. In other words, if $s = { x_1, x_2, \ldots, x_n }$,
where $x_1 < x_2 < \ldots < x_n$, then fold f s seed
computes
$(f
\,x_n\,\ldots\,(f
\,x_2\,(f
\,x_1\,seed
))\ldots)$.
val fold : (element -> 'b -> 'b) -> t -> 'b -> 'b
elements s
is a list of all elements in the set s
.
val elements : t -> element list
compare
is an ordering over sets.
val compare : t -> t -> int
equal
implements equality over sets.
val equal : t -> t -> bool
subset
implements the subset predicate over sets.
val subset : t -> t -> bool