functor (M : Core.Std.Monad.S->
  sig
    val subst :
      ('b, 'e, 'c) Set_lang.t ->
      f:('-> ('b, 'e, 'c) Set_lang.t M.t) -> ('b, 'e, 'c) Set_lang.t M.t
    val map :
      ('b, 'e, 'c) Set_lang.t ->
      f:('-> 'M.t) -> ('b, 'e, 'c) Set_lang.t M.t
    val specialize :
      ('b, 'e, 'c) Set_lang.t ->
      f:('-> ('e, 'c) Core.Std.Set.t option M.t) ->
      ('b, 'e, 'c) Set_lang.t M.t
    val eval :
      ('b, 'e, 'c) Set_lang.t ->
      f:('-> ('e, 'c) Core.Std.Set.t M.t) -> ('e, 'c) Core.Std.Set.t M.t
  end