**Description: **This syntax construction
states that a variable *x*,
which has been
declared to be a setvar variable by $f statement vx, is also a class
expression. This can be justified informally as follows. We know that
the class builder {*y* ∣ *y* ∈ *x*} is
a class by cab 2339. Since (when
*y* is distinct from *x*) we have *x* = {*y* ∣ *y* ∈ *x*} by
cvjust 2348, we can argue that the syntax "class *x* " can be viewed as
an abbreviation for "class
{*y* ∣ *y* ∈ *x*}". See the discussion
under the definition of class in [Jech] p. 4
showing that "Every set can
be considered to be a class."
While it is tempting and perhaps occasionally useful to view cv 1641 as a
"type conversion" from a setvar variable to a class variable,
keep in mind
that cv 1641 is intrinsically no different from any other
class-building
syntax such as cab 2339, cun 3207, or c0 3550.
For a general discussion of the theory of classes and the role of cv 1641,
see http://us.metamath.org/mpeuni/mmset.html#class.
(The description above applies to set theory, not predicate calculus. The
purpose of introducing class *x* here, and not in set theory where it
belongs, is to allow us to express i.e. "prove" the weq 1643 of
predicate
calculus from the wceq 1642 of set theory, so that we don't
"overload" the
= connective with two syntax definitions. This is done to
prevent
ambiguity that would complicate some Metamath
parsers.) |