# Module type Set_lang_intf.S_eval

    module type S_eval = sig .. end

    type 'base t

    type set

    type 'a result

    val subst : 'b1 t ->
           f:('b1 -> 'b2 t result) ->
           'b2 t result

    val map : 'b1 t ->
           f:('b1 -> 'b2 result) ->
           'b2 t result

    val specialize : 'b t ->
           f:('b -> set option result) ->
           'b t result

    val eval : 'b t ->
           f:('b -> set result) ->
           set result