`sig
type set
type 'base t
val base : 'base -> 'base Set_lang_intf.S_lang.t
val set : Set_lang_intf.S_lang.set -> 'a Set_lang_intf.S_lang.t
val inter2 :
'b Set_lang_intf.S_lang.t ->
'b Set_lang_intf.S_lang.t -> 'b Set_lang_intf.S_lang.t
val union2 :
'b Set_lang_intf.S_lang.t ->
'b Set_lang_intf.S_lang.t -> 'b Set_lang_intf.S_lang.t
val diff :
'b Set_lang_intf.S_lang.t ->
'b Set_lang_intf.S_lang.t -> 'b Set_lang_intf.S_lang.t
val union : 'b Set_lang_intf.S_lang.t list -> 'b Set_lang_intf.S_lang.t
val inter :
'b Set_lang_intf.S_lang.t * 'b Set_lang_intf.S_lang.t list ->
'b Set_lang_intf.S_lang.t
val inter_list :
'b Set_lang_intf.S_lang.t list ->
'b Set_lang_intf.S_lang.t Core.Std.Or_error.t
val inter_list_exn :
'b Set_lang_intf.S_lang.t list -> 'b Set_lang_intf.S_lang.t
val values : 'base Set_lang_intf.S_lang.t -> 'base list
val constant_value :
'a Set_lang_intf.S_lang.t -> Set_lang_intf.S_lang.set option
val subst : 'b1 t -> f:('b1 -> 'b2 t value) -> 'b2 t value
val map : 'b1 t -> f:('b1 -> 'b2 value) -> 'b2 t value
val specialize : 'b t -> f:('b -> set option value) -> 'b t value
val eval : 'b t -> f:('b -> set value) -> set 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 option M.t) -> 'b t M.t
val eval : 'b t -> f:('b -> set M.t) -> set M.t
end
end`