Merged from branch stable-succint-refactor
[SXSI/xpathcomp.git] / finiteCofinite.mli
1 exception InfiniteSet
2
3 module type S =
4   sig
5     type elt
6     type t
7     val empty : t
8     val any : t
9     val is_empty : t -> bool
10     val is_any : t -> bool
11     val is_finite : t -> bool
12     val kind : t -> [ `Cofinite | `Finite ]
13     val singleton : elt -> t
14     val mem : elt -> t -> bool
15     val add : elt -> t -> t
16     val remove : elt -> t -> t
17     val cup : t -> t -> t
18     val cap : t -> t -> t
19     val diff : t -> t -> t
20     val neg : t -> t
21     val compare : t -> t -> int
22     val subset : t -> t -> bool
23     val kind_split : t list -> t * t
24     val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
25     val for_all : (elt -> bool) -> t -> bool
26     val exists : (elt -> bool) -> t -> bool
27     val filter : (elt -> bool) -> t -> t
28     val partition : (elt -> bool) -> t -> t * t
29     val cardinal : t -> int
30     val elements : t -> elt list
31     val from_list : elt list -> t
32     val choose : t -> elt
33     val hash : t -> int
34     val equal : t -> t -> bool
35   end
36
37 module Make :  functor (E : Sigs.Set) -> S with type elt = E.elt
38