An ``abbreviating'' type specifier is one that describes a subtype for which it is in principle possible to enumerate the elements, but for which in practice it is impractical to do so.
A ``specializing'' type specifier is one that describes a subtype by restricting the type of one or more components of the type, such as element type or complex part type.
A ``predicating'' type specifier is one that describes a subtype containing only those objects that satisfy a given predicate.
A ``combining'' type specifier is one that describes a subtype in a compositional way, using combining operations (such as ``and,'' ``or,'' and ``not'') on other types.