Users' Mathboxes Mathbox for Wolf Lammen < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >   Mathboxes  >  wl-df-clab Structured version   Visualization version   GIF version

Theorem wl-df-clab 37488
Description: Disclaimer: The material presented here is just my (WL's) personal perception. I am not an expert in this field, so some or all of the text here can be misleading, or outright wrong.

This text should be seen as an exploration, rather than viewing it as set in stone, no doubt or alternatives possible.

We now introduce the notion of class abstraction, which allows us to describe a specific class, in contrast to class variables that can stand for any class indiscriminately.

A new syntactic form is introduced for class abstractions, {𝑦𝜑}, read as "the class of sets 𝑦 such that 𝜑(𝑦)". This form is assigned the type "class" in cab 2717, so it can consistently substitute for a class variable during the syntactic construction process.

**Eliminability**

The axioms ax-wl-cleq 37486 and ax-wl-clel 37487 leave only 𝑥𝐴 unspecified. The definition of this class builder directly corresponds to that expression. When a class abstraction replaces the variable 𝐴 and 𝐵, then 𝐴 = 𝐵 and 𝐴𝐵 can be expressed in terms of these abstractions.

For general eliminability two conditions are needed:

1. Any class builder must replace 𝑥𝐴 with an expression containing no class variables. If necessary, class variables must be eliminated via a finite recursive process.

2. There must only be finitely many class builders. If a class variable could range over infinitely many builders, eliminability would fail, since unknown future builders would always need to be considered.

Condition (2) is met in set.mm by defining no class builder beyond cv 1536 and df-clab 2718. Thus we may assume that a class variable represents either a set variable, or a class abstraction:

a. If it represents a set variable, substitution eliminates it immediately.

b. If it equals a set variable 𝑥, then by cvjust 2734 it can be replaced with {𝑦𝑦𝑥}.

c. If it represents a proper class, then it equals some abstraction {𝑥𝜑}. If 𝜑 contains no class variables, elimination using 𝜑 is possible. The same holds if finite sequence of elimination steps renders 𝜑 free of class variables.

d. It represents a proper class, but 𝜑 in {𝑥𝜑} still contains non-eliminable class variables, then eliminability fails. A simple example is {𝑥𝑥𝐴}. Class variables can only appear in fundamental expressions 𝐴 = 𝐵 or 𝐴𝐵, Both can be reduced to forms involving 𝑧𝐴. Thus, in the expression 𝑧 ∈ {𝑥𝑥𝐴}, we still must eliminate 𝐴. Applying df-clab 2718 reduces it back to 𝑧𝐴, returning us to the starting point.

Case (d) shows that in full generality, a class variable cannot always be eliminated, something Zermelo-Fraenkel set theory (ZF) requires. If the universe contained only finitely many sets, a free class variable 𝐴 could be expressed as a finite disjunction of possiblities, hence eliminable. But in ZF's richer universe, in a definition of an unrestricted class variable 𝐴 = {𝑥𝜑} the variable 𝜑 will contain 𝐴 in some way, violating condition (1) above. Thus constraints are needed. In ZF, any formula containing class variables assumes that non-set class variables can be be replaced by {𝑥𝜑} where 𝜑 itself contains no class variables. There is, however, no way to state this condition in a formal way in set.mm.

Class abstractions themselves, however, can be eliminated, so df-clab is a definition.

**Definition checker**

How can case (d) be avoided? A solution is to restrict generality: require that in the definition of any concrete class abstraction {𝑥𝜑}, the formula 𝜑 is either free of class variables or built only from previously defined constructions. Such a restriction could be part of the definition checker.

In practice, the Metamath definition checker requires definitions to follow the specific pattern "{𝑥𝜑} = ...". Although df-clab 2718 does not conform to this pattern, it nevertheless permits elimination of class abstractions. Eliminability is the essential property of a valid definition, so df-clab 2718 can legitimately be regarded as one.

For further material on the elimination of class abstractions, see BJ's work beginning with eliminable1 36845 and one comment in https://github.com/metamath/set.mm/pull/4971.

(Contributed by Wolf Lammen, 28-Aug-2025.)

Assertion
Ref Expression
wl-df-clab (𝑥 ∈ {𝑦𝜑} ↔ [𝑥 / 𝑦]𝜑)

Proof of Theorem wl-df-clab
StepHypRef Expression
1 df-clab 2718 1 (𝑥 ∈ {𝑦𝜑} ↔ [𝑥 / 𝑦]𝜑)
Colors of variables: wff setvar class
Syntax hints:  wb 206  [wsb 2064  wcel 2108  {cab 2717
This theorem depends on definitions:  df-clab 2718
This theorem is referenced by: (None)
  Copyright terms: Public domain W3C validator