**Compound Type Specifier Kind:**

Predicating.

**Compound Type Specifier Syntax:**

**satisfies** *predicate-name*

**Compound Type Specifier Arguments:**

*predicate-name*---a *symbol*.

**Compound Type Specifier Description:**

This denotes the set of all *objects* that satisfy the *predicate* *predicate-name*, which must be a *symbol* whose global *function* definition is a one-argument predicate. A name is required for *predicate-name*; *lambda expressions* are not allowed. For example, the *type specifier* `(and integer (satisfies evenp))` denotes the set of all even integers. The form `(typep `*x*` '(satisfies `*p*`))` is equivalent to `(if (`*p*` `*x*`) t nil)`.

The argument is required. The *symbol* ***** can be the argument, but it denotes itself (the *symbol* *****), and does not represent an unspecified value.

The symbol **satisfies** is not valid as a *type specifier*.

The following X3J13 cleanup issue,