Module Subset

Implementattion of mutable sets via subset constraints

type 'a elts =
| Finite of 'a list
| CoFinite of 'a list
type 'a set = {
mutable set : 'a elts;(*

The current value of the set.

*)
mutable frozen : bool;(*

if true, the set is frozen and will not change anymore

*)
}
val create : 'a list -> 'a set
val test : ('a -> 'a -> bool) -> 'a set -> 'a list -> bool

test if a set is contained in a list for the given equality. if the set is not frozen, it will decrease

val is_empty : 'a set -> bool

check if a set is empty

val get : 'a set -> 'a list

get the current value of a set and froze it

val unsafe_get : 'a set -> 'a list

get the current value of a set without frozing it. should only be used for printing. Return for CoFinite