Mathematical construct, the extension of a predicate, that is, all things with a given property. Given a predicate *A*`(x)`, we can write `{ x | `*A*`(x)}` to mean "The class of all **x** such that *A*`(x)` is true."

An object is an element of a class if it satisfies the predicate that defines it. Classes may **not** be considered as elements of classes or sets; only sets may be. If a given set has the same elements as a given class, then the set is said to *represent* the class; a large portion of set theory is dedicated to determining which classes are represented by sets.

Some examples of classes include:

In the early 1900s, several paradoxes arose which cast the validity of set theory into question. The most famous of these is Russell's Paradox, which occurs if you allow the class of all sets which do not contain themselves as elements to be represented by a set. The class of all sets cannot be represented by a set, otherwise the class that results in Russell's paradox would have to be. In general, if **{x|***A*(x)} is represented by a set, then **{x|~***A*(x)} *cannot* be, otherwise, the union of those two sets would be a set representing the class of all sets. Of course, this does not exhaust the classes that are not represented by sets!

Bertrand Russell and Alfred North Whitehead, in their Principia Mathematica, introduced a system known as type theory which avoided these paradoxes. However this system was unsatisfyingly complex. And so type theory was eventually simplified into the distinction between classes and sets.