sig
module Set : Core.Std.Set.S
type 'base t = ('base, Set.t) Raw.t
val base : 'base -> 'base t
val set : Set.t -> 'a t
val inter2 : 'b t -> 'b t -> 'b t
val union2 : 'b t -> 'b t -> 'b t
val diff : 'b t -> 'b t -> 'b t
val union : 'b t list -> 'b t
val inter : 'b t * 'b t list -> 'b t
val inter_list : 'b t list -> 'b t Core.Std.Or_error.t
val inter_list_exn : 'b t list -> 'b t
val values : 'base t -> 'base list
val constant_value : 'a t -> Set.t option
val subst :
'b1 t ->
f:('b1 -> 'b2 t Set_lang_intf.value) -> 'b2 t Set_lang_intf.value
val map :
'b1 t -> f:('b1 -> 'b2 Set_lang_intf.value) -> 'b2 t Set_lang_intf.value
val specialize :
'b t ->
f:('b -> Set.t option Set_lang_intf.value) -> 'b t Set_lang_intf.value
val eval :
'b t -> f:('b -> Set.t Set_lang_intf.value) -> Set.t Set_lang_intf.value
module Make_monadic_eval :
functor (M : Core.Std.Monad.S) ->
sig
val subst : 'b1 t -> f:('b1 -> 'b2 t M.t) -> 'b2 t M.t
val map : 'b1 t -> f:('b1 -> 'b2 M.t) -> 'b2 t M.t
val specialize : 'b t -> f:('b -> Set.t option M.t) -> 'b t M.t
val eval : 'b t -> f:('b -> Set.t M.t) -> Set.t M.t
end
val t_of_sexp : (Sexplib.Sexp.t -> 'base) -> Sexplib.Sexp.t -> 'base t
val sexp_of_t : ('base -> Sexplib.Sexp.t) -> 'base t -> Sexplib.Sexp.t
val compare : ('base -> 'base -> int) -> 'base t -> 'base t -> int
end