Up

module Set_lang

: sig
#
module Raw : sig
#
type ('base, 'set) t = private
# | Base of 'base
# | Set of 'set
# | Union of ('base, 'set) t * ('base, 'set) t
# | Inter of ('base, 'set) t * ('base, 'set) t
# | Diff of ('base, 'set) t * ('base, 'set) t
#
val compare : ('base -> 'base -> int) -> ('set -> 'set -> int) -> ('base, 'set) t -> ('base, 'set) t -> int
end
#
type ('base, 'elt, 'cmp) t = ('base, ('elt, 'cmp) Core.Std.Set.t) Raw.t
#
val base : 'base -> ('base, _, _) t
#
val set : ('elt, 'cmp) Core.Std.Set.t -> (_, 'elt, 'cmp) t
#
val inter2 : ('b, 'e, 'c) t -> ('b, 'e, 'c) t -> ('b, 'e, 'c) t
#
val union2 : ('b, 'e, 'c) t -> ('b, 'e, 'c) t -> ('b, 'e, 'c) t
#
val diff : ('b, 'e, 'c) t -> ('b, 'e, 'c) t -> ('b, 'e, 'c) t
#
val union : ('b, 'e, 'c) t * ('b, 'e, 'c) t list -> ('b, 'e, 'c) t
#
val inter : ('b, 'e, 'c) t * ('b, 'e, 'c) t list -> ('b, 'e, 'c) t
#
val union_list : ('b, 'e, 'c) t list -> ('b, 'e, 'c) t Core.Std.Or_error.t
#
val inter_list : ('b, 'e, 'c) t list -> ('b, 'e, 'c) t Core.Std.Or_error.t
#
val union_list_exn : ('b, 'e, 'c) t list -> ('b, 'e, 'c) t
#
val inter_list_exn : ('b, 'e, 'c) t list -> ('b, 'e, 'c) t
#
val values : ('base, _, _) t -> 'base list
#
val constant_value : (_, 'elt, 'cmp) t -> ('elt, 'cmp) Core.Std.Set.t option
#
val subst : ('b1, 'e, 'c) t -> f:('b1 -> ('b2, 'e, 'c) t) -> ('b2, 'e, 'c) t
#
val map : ('b1, 'e, 'c) t -> f:('b1 -> 'b2) -> ('b2, 'e, 'c) t
#
val specialize : ('b, 'e, 'c) t -> f:('b -> ('e, 'c) Core.Std.Set.t option) -> ('b, 'e, 'c) t
#
val eval : ('b, 'e, 'c) t -> f:('b -> ('e, 'c) Core.Std.Set.t) -> ('e, 'c) Core.Std.Set.t
#
val invariant : ('base, 'elt, 'cmp) t -> unit
#
module Make_monadic_eval : functor (M : Core.Std.Monad.S) -> sig
#
val subst : ('b, 'e, 'c) t -> f:('b -> ('b, 'e, 'c) t M.t) -> ('b, 'e, 'c) t M.t
#
val map : ('b, 'e, 'c) t -> f:('b -> 'b M.t) -> ('b, 'e, 'c) t M.t
#
val specialize : ('b, 'e, 'c) t -> f:('b -> ('e, 'c) Core.Std.Set.t option M.t) -> ('b, 'e, 'c) t M.t
#
val eval : ('b, 'e, 'c) t -> f:('b -> ('e, 'c) Core.Std.Set.t M.t) -> ('e, 'c) Core.Std.Set.t M.t
end
#
module type S = Set_lang_intf.S with module Raw := Raw
#
module type S_binable = Set_lang_intf.S_binable with module Raw := Raw
#
module Make : functor (Elt : Core.Std.Comparable.S) -> S with module Set = Elt.Set
#
module Make_binable : functor (Elt : Core.Std.Comparable.S_binable) -> S_binable with module Set = Elt.Set
#
val compare : ('base -> 'base -> int) -> ('elt -> 'elt -> int) -> ('cmp -> 'cmp -> int) -> ('base, 'elt, 'cmp) t -> ('base, 'elt, 'cmp) t -> int
end