functor (M : Core.Std.Monad.S) ->
  sig
    val subst :
      ('b, 'e, 'c) Set_lang.t ->
      f:('b -> ('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:('b -> 'b M.t) -> ('b, 'e, 'c) Set_lang.t M.t
    val specialize :
      ('b, 'e, 'c) Set_lang.t ->
      f:('b -> ('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:('b -> ('e, 'c) Core.Std.Set.t M.t) -> ('e, 'c) Core.Std.Set.t M.t
  end