![]() |
Mathbox for Wolf Lammen |
< Previous
Next >
Nearby theorems |
|
Mirrors > Home > MPE Home > Th. List > Mathboxes > wl-df-clab | Structured version Visualization version GIF version |
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.) |
Ref | Expression |
---|---|
wl-df-clab | ⊢ (𝑥 ∈ {𝑦 ∣ 𝜑} ↔ [𝑥 / 𝑦]𝜑) |
Step | Hyp | Ref | 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 |