module Fcl_setDomain:sig
..end
module S:sig
..end
Implementation of sets of integers.
typeelt =
S.t
Type of elements of set domains. They are sets themselves.
type
t
Type of finite domains of integer sets: a domain is a powerset lattice of sets bounded by definite elements or glb (Greater Lower Bound) and possible elements or lub (Lower Upper Bounds). The glb is a subset of the lub. Note that the empty domain cannot be represented.
val elt_of_list : int list -> elt
Creates a set from a list of integers.
val interval : elt -> elt -> t
interval glb lub
builds the domain of sets greater than glb
and
smaller than lub
. An Invalid_argument
exception is raised if glb
is not a subset of lub
.
val size : t -> int
size d
returns |glb(d)|-|lub(d)|+1, i.e. the height of the lattice,
not its number of elements.
val min : t -> elt
val max : t -> elt
val min_max : t -> elt * elt
Access to glb and lub.
val fprint_elt : Stdlib.out_channel -> elt -> unit
val fprint : Stdlib.out_channel -> t -> unit
Pretty printing of elements and domains.
val mem : elt -> t -> bool
mem x d
tests whether x
belongs to the domain d
.
val included : t -> t -> bool
included d1 d2
tests whether the domain d1
is included in d2
,
i.e. glb(d2
) included in glb(d1
) and lub(d1
) included in lub(d2
).
val iter : (elt -> 'a) -> t -> 'a
Iteration on values of the domain. Exponential with the size
of the domain.
val values : t -> elt list
Returns values of a domain. Exponential with the size
of the
domain.