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