-
Notifications
You must be signed in to change notification settings - Fork 100
reason why df-clab, df-cleq and df-clel should be reordered #4993
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Conversation
Added my version of df-clab now. Putting it after df-cleq and df-clel renders some of the text in its description pointless |
Thank you very much for this detailed explanation. I have two remarks |
1/ From ax-wl-cleq-1, point 3:
Ok, "applied to one or more variables" does not use the word "input", which might be more standard, I have no clue. I
describes the "output". 2/ A natural question is why not quantify over classes. My home-brewed answer was so far: That would make classes full scale objects not different from sets any more. We aim at establishing proper set theory where proper classes exist as auxiliary constructs only, at best removable from final results. Nice to learn that there is a theory NBG or KM having a look at quantification over classes. I am afraid my theoretical background does not allow me to elaborate on the consequences more. I often can only work set.mm immanently, I have no time for extensive studies. That finally leads me to the intention of my PR. In my eyes the current order of theorems df-clab, df-cleq and df-clel is awkward and has lead to questionable comments there. I try to give here a precise description of the role these theorems could have, hopefully useful for discussions . Once this PR is accepted, I will open an issue requesting a reorder, and the publicly available contents of this PR might serve as an input for discussions. Should my request find broad acceptance, I will reorder the block of theorems. In the wake comments need to be adjusted. The version I give here is likely not that of the final result, which should be way more concise. |
While we mention NBG and Morse-Kelly in places like https://us.metamath.org/mpeuni/ru.html and https://us.metamath.org/mpeuni/mmset.html#class , I don't think we need to go beyond that kind of brief mention in set.mm. |
I have refrained from commenting so far because I don't think I have a very clear understanding of the issues. I probably don't object to having your perspective in your mathbox, but just sticking something in a mathbox which no one else has read doesn't exactly advance the goal of a discussion.
Totally like the goal of coming up with something concise. One of the things that has made it hard to understand what is really going on with df-clab, df-cleq and df-clel is that I suspect we may have too many words about them (but if we need to remove some words, I don't know which ones!). |
When well-formed formulas are introduced to Metamath at the very beginning, you cannot refer to anything before. You are in a point blank situation. How is bootstrapping accomplished then? You first pimp up your grammar a bit. This includes adding, in Metamath terms variables of wff type, in grammar terms non-terminal symbols, to it. Then you add, in Metamath terms syntax definitions, in grammar terms rewrite rules, for the most primitive and foundational formulas. In Metamath -> and -. are picked for this purpose; they will never be defined. Axioms are instead used to narrow their semantics down to what you want them to be. Definition of <-> follows, a bit weird, because the full range of expressiveness is still missing. Later objects, or classes, are introduced, and again you are in a point blank situation, so how to proceed? Follow the pattern you already developed above! Pimp up the grammar by adding variables for classes. Then add syntax definitions for the most primitive operators e. and =. Use axioms df-cleq and df-clel to narrow their semantics down, so the class versions of ax-7, ax-8, ax-9 and ax-ext hold. Introduce a formula for class abstractions, still a bit weird, because full expressiveness is missing. In df-clab a form was chosen, that smoothly integrates with the above equality and membership, and allows for elimination, a key feature of definitions. That's a short summary of what I've written for my mathbox. Of course additionally taking many details like setvar variables into account. In set.mm definition df-clab is put first instead, This leads to an awkward comment, that has to justify details that later will be expressed by equality and membership anyway. If you think of it as an ordinary definition, it should be added after the axioms, in my view. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It seems merging this means the community will change df-cleq and df-clel in the future. But there are still questions/conversation, so holding off on approving
Up to this point, the only material involving class variables consists | ||
of the syntax definitions ~ wceq and ~ wcel . Axioms are therefore | ||
required to progressively refine the semantics of classes until provable | ||
results coincide with our intended conception of set theory. This | ||
refinement process is explained in Step 4 of ~ ax-wl-cleq-1 . |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A key paragraph here, great explanation
(The other hand was that, the class variable axioms are definitions since class variables are eliminable and the axioms conservative [over the base language])
The following idea/question might give insight:
class x
class { x | ph }
class { x e. A | ph }
class _V
class ...
Above are special cases of class A
: cv, cab, crab, cvv etc. Here cab ≈ df-clab is used as the example. Actually, this special case is general for all valid substitutions of the variables in df-clab. df-clab could be considered to cover multiple cases.
Likewise, df-cleq and df-clel cover multiple cases (well, all cases) of class A
... except for class x
(the hypotheses guarantee that earlier work covers that case). So in a sense, the class variables were partially formed in predicate calculus.
Is this enough? Note that while the concept of classes are still incomplete after predicate calculus, the concept of class abstractions is incomplete until df-clab.
In propositional logic, there was nothing to build off of, a basic new idea was created 'from scratch', so obviously ax-mp to ax-3 are axioms. However ~ cv blurs this line for classes, it is not obvious to me that they are axioms.
Edit: Note that ~ cv counts as material involving -the meaning of- class variables, despite not having class variables A
or B
or C
... At least, describing the special initial cases of ->
and -.
does not seem obviously different than describing the special case ~ cv
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One can even think of formulas describing a completely new type of a class. It is allowed to have several class builders in parallel, although I cannot think of a useful extra one right now.
cv is one of them, df-clab another.
If one starts with set theory with classes right from the beginning, simplifications are possible. We have to accept, though, that we need the setvar to express ideas outside of set theory, built upon universes with other elements. This compromise has its downsides, especially that you have to consider more cases, and definitions extending others.
Here I am too limited in my knowledge to find the ultimate solution. I just provide a suggestion, that others may further elaborate upon.
Maybe a concise presentation of the fundamentals of a Theory of Sets and Classes could be like the following. |
Yes, there might be other class builders. |
I don't know what to do to get this acknowledged as my personal perception on how a new concept like wff is added and how the new concept of objects aka classes can be added in close accordance. Adding a disclaimer like "Don't read any further unless you are told so"? |
If my comment above is false:
then it counts as an approval. Noting other possibilities can also be done by "there are other interpretations" or such. |
This is the part where I lose the argument. The fundamental conceit of set.mm is that it does not aim to define a "set theory with classes", it aims to defines a set theory with sets, subject to the ZFC axioms. As Norm Megill put it himself back in 2021:
In service of this goal, classes in set.mm are not interpreted their own objects with possibly-strange semantics, but simply "wff (meta)variables in disguise". When we write Of course, the Metamath language doesn't care one whit about how we interpret variables of type To put it another way, I disagree with the statement that "In practice, however, the more direct and fruitful approach is not to construct class equality from membership, but to treat equality itself as axiomatic." If we wanted set.mm to no longer describe a theory of sets but a theory of class objects, then we would be better served by an actual theory of classes such as NBG, complete with things like classvars. As it stands, there's no real fruit borne by introducing nebulous class objects that cannot be quantified over. The way I see it, the only real oddity is "If Meanwhile, the second meaning, of how to eliminate an expression, does not really depend on the metalogical behavior of |
Actually, looking at the comments again, another part leaves me scratching my head: you argue that
If you think that |
Thanks for looking into this PR again. I only have limited time to react on it right now, I'll look into it in greater detail later, perhaps during weekend. Still some quick ideas spring to my mind while reading your text. Yes, NM tried to provide a theory that uses classes only as temporary and artificial expressions, as a convenient shorthand in proofs. For all practical purposes this holds in my view, but I see two loopholes.
Yes, the two class builders cv and df-clab need not be the only class builders, there may be multiple more. This is NOT ruled out, maybe not even stated as a desired outcome somewhere. This effects A = B (if you want it to be more than an equivalence relation, but express indistinguishability), that now surprisingly may also be dependent on the color of a class. BJ knew of this loophole as he explicitly states in one of his comments around eliminable1, that he considers classes only in the standard form { x | ph }.
Finally I'd like to point out the goal of my PR here. I don't want to solve all questions around the theory of sets. I want to order three statements as given here: df-cleq, df-clel and df-clab. This reorder leaves the statements intact. It allows for better comments, though, in addition one might turn df-cleq and df-clel into axioms (which they are if x e. A is in principle undefined), but the latter is not mandatory. Since the statements don't change, this reorder does not hinder later modifications discussed elsewhere. And above all: this PR reasons only, based on the current state of affairs. It is in my mathbox, and need not be perfect, or express all the gory details a thorough discussion could uncover. You took your time to read through my PR, and I will do the same with your comments, once I have more time to spend. |
A quote from @LegionMammal978
I remember I first only used "set theory", and later added "with classes", since df-cleq is about classes, which I wanted to point out. Is "set theory with classes" a standing term among experts excluding ZF? If so, I am unaware of it, and I apologize for misleading. Maybe "set theory using a notation of classes" would have been more appropriate. Keep in mind, though, the material given in this PR is NOT a scientific paper fit for any kind of scrutiny. Instead I wanted to give detailed reasons for a particular change, that is NOT fundamental. I deliberately took the freedom and used, for example, "set" as a replacement for "set variable viewed as a class by class builder cv", for the sake of brevity, and under the assumption that the gist of it is most often guessed right. The following citation is from Wikipedia
Judging by the above classes must not appear on the outside in ZF, but internal usage is okay. There is still a bit more to say here, I think. Using axioms in a formal system is a steady process of narrowing down its possibilities. Right in the beginning, the system is open for any future development. At the point where df-cleq is introduced, either coming first, or after df-clab is known, nothing is fixed about the particular set theory you finally want to arrive at. In the comment to df-cleq its perhaps helpful to note the goal, so readers never loose contact to the big picture, but the motivation for narrowing down the formal system is in my experience often resolving a far more local ambiguity. In the case of df-cleq the yet undefined "A = B" should resemble equality by being at least an equivalence relation, and it formally and factually should extend axextb. |
A quote from @LegionMammal978
I am not sure whether proper classes, in a philosophical sense, do not qualify as "objects". Metamath handles formulas, irrespective of any interpretation. A class variable is a very simple formula, the class of all sets a more elaborate one. So why should a formula denoting a class not depict an object, either manifesting an idea, or even an interpretation then? This is perhaps a matter of taste. I personally lean towards speaking of a proper class as an object "of interest". On the other hand there is the ∃𝑥 quantifier that formally applies only to set variables. Does in your mind only something that exists (given the usual interpretation) qualify as an object? Then, strictly speaking, only set variables exist, and hence are objects. The usual notion of equality, besides being an equivalence relation, includes a separate property I know as Leibniz's law. Wikipedia also names it "Axiom of Substitution" (beware it is NOT ax-12): (a = b) => (f(a) = f(b)). f is an arbitrary formula expressing objects based an a variable. In FOL, since you can only substitute one set variable for the other, in essence ax-7 covers Leibniz's law. What I coined indistinguishability goes a bit beyond Leibniz's law: We want well-formed formulas be equivalent, if one is the other with a replaced by b, under the assumption a = b. In Metamath's FOL I know three aspects, or implementations of it:
Again, equality, as explained to the public by Wikipedia, needs this property. So why exactly do you want to allow classes "A = B" to somehow be distinguishable? This is a dangerous path, as it will not meet the expectations of readers. |
Quotes from @LegionMammal978
The way Metamath uses definitions is to my knowledge always the same. It introduces one expression not used before, and explains it fully with previous material. In general the new expression is found on the left hand side of an equation or bi-conditional, its explanation on the right. Even df-bi, not conforming to this, still allows you to fully retrieve the truth table of a bi-conditional. So, one property of definitions is that they render the defined expression eliminable, and that differs it again from axioms. By contrast, df-cleq introduces two undefined expressions, namely A = B and x ∈ A. Both, to my knowledge, stay undefined, which hinders full elimination of both. Of course, one can trace back "A = B" to expressions "x ∈ A", but this is not sufficient. As I stated in one of my answers before, ZF requires you to be able to eliminate both of them. I depicted some problems around eliminating x ∈ A in this answer #4993 (comment). You somehow have to constrain the flexibility of the class variable A and limit it to class builders cv and df-clab. This is either an axiom, or enforced by the verification process of Metamath. And then eliminating class variables in an abstract class opens a can of worms, which I don't see through at the moment.
Okay, it is certainly possible to eliminate "x = A" in df-clel, but that does not look nice. And df-clel does not constrain x ∈ A in any way. It uses it, constraining the only syntactically known A ∈ B, so again it is an axiom, no definition. Anyway, the current version of set.mm introduces df-cleq and df-clel in exactly this order and form, so your critics apply to not only my PR, but also to the original. |
No, I don't think so. Both A = B and A e. B can be traced back to x e. A (by df-cleq and df-clel), that's why a class builder df-clab has its particular form. As for ceqsal1t I think you are right. I tried to tackle the problem of when a class is also a set, and ceqsal1t is not good enough to provide an answer here. It seems E. x x = A is the "set builder". Being able to assign a class to a set variable is a very suggestive solution. Given that x = A is based on x e. A which is not fully defined, the answer to what classes are sets (and exist in ZF) is to some extent open. I can prove ( x = A -> E. y y = A ) with y, A disjoint, and the ax12v2 equivalent ( x = A -> ( ph -> A. y ( y = A -> ph ) ) ). Why am I looking at sets at all? The general equation A = B has two specializations, x = A and x = y. In preparation for a possible new comment to df-cleq I tried to figure out the role these specializations play. For sets A fulfilling E. x x = A all axioms containing = in their formula ax-6, ax-7 ax-8, ax-9 and ax12v2 can be shown to hold. |
First off, I'd like to note that it's not within my power to approve or deny changes to mathboxes. I'm mainly just taking this chance to make my own comments about the reordering proposal. Having thought about it further, I've become sympathetic to your idea that df-clab is 'secondary' to df-cleq and df-clel, and could just as easily be placed after the two. This is mainly because instead of relying on df-clab to eliminate all possible The big problem is, doing it this way would greatly complicate the process of interpreting theorems in set.mm. The ultimate purpose of set.mm (and the Metamath language around it) is that for each Metamath theorem written in set.mm, there is a corresponding theorem scheme written in the language of set theory. For our purposes, the "language of set theory" is an object language with variables For example, dfnul4 But now, let's take the theorem eqid So since cab-based class definitions are quite general and are sufficient to encompass all definable wffs, we might as well insist that cv or cab be the only things that a class can expand to when interpreting a set.mm theorem. Under this model, Of course, this all presupposes that every class is still a "wff in disguise": part of your suggestion is that class variables may be substituted by things that aren't simply a "wff in disguise" in this way, so that they cannot be simply defined as a class abstraction. But this would defeat the entire purpose of having definitions be eliminable, since it would introduce proof steps that cannot be translated into the object language of set theory. This would be especially problematic if it were non-conservative, and it could create new theorems about setvars that could not be proven with set theory alone. Recall that one of the big ideas of set.mm is that "ZFC is all you need!" You describe the philosophy of "narrowing down" new symbols with axioms in Metamath, but this doesn't account for the process of interpreting definitions in an object language, which requires that newly-defined symbols outside the object language be completely eliminable in any wff context. Recall that definitions vs. axioms is entirely foreign to the internal nature of the raw Metamath language. Anyway, to try to respond to your finer points in more detail:
Anything on the Metamath level can have extra grammars with their own properties. We could write something dumb like
This disrespects the logical equivalence
I think that "suggestion" is simply a way to convert 'direct' definitions such as As for "whether all classes have a sensible notation as { x | ph }", we fundamentally can't break that assumption for any class without breaking eliminability into the language of set theory, which is one of the big principles of set.mm. As for countability concerns, it's true that a written class expression can only correspond to a countable number of wffs in the object theory, under the standard interpretation. But a class expression can depend on setvars, such as
I'm no expert either, but it's always important to know whether classes are quantifiable objects (as in NBG), or simply syntax constructions. NBG is actually considered a conservative extension of ZFC, in that all provable statements with only set variables can be proven without class variables. But it also includes new statements such as the Axiom of Global Choice that are not directly eliminable into the language of set theory. Eliminating its usage in proofs takes some advanced metatheoretical rewriting, which is contrary to Metamath's goal of external simplicity. Hence the aversion to non-eliminable class constructions.
Well, back in the day, people wanted to be extremely liberal with what counted as an "object" and what counted as a "set" of objects. To quote a translation of Cantor, "By an 'aggregate' [set] we are to understand any collection into a whole If we want a meaningful axiomatic set theory, we must adopt a domain of discourse, and restrict what objects are sets and what objects can be included in sets. We can indeed think up a collection of "all classes", containing all collections of objects we can think of defining and separating, but there's no way to stuff all its properties into a formal language. (Perhaps we might come up with a few ideas from definiteness and separateness, such as transitivity of equality, but the resulting theory will be woefully incomplete.) In the case of set.mm, we build our theory on the ZFC axioms, whose domain of discourse is the sets alone. We can write theorems talking about individual classes, but only insofar as they are a 'fiction' that can be directly eliminated into definable properties of sets. It's possible to fully add 'class' objects to our domain of discourse, as NBG does, but this would greatly complicate eliminability into ZFC. One of the major points of this project is that "ZFC is enough", and we don't really need class objects for that.
Personally, I like to call this property "indiscernibility of identicals", at least on the semantic level. But to each their own.
I don't. If we're citing Wikipedia, I'll note that a class is "a collection of sets... that can be unambiguously defined by a property that all its members share". In set.mm, I want a class to be specified by its defining property. So if two classes The only way that df-cleq wouldn't fully capture class equality is if class constructions could have non-extensional "colors" on the Metamath level, as you call them. But I do not support those in the general set.mm, since they would break eliminability. (And if you do want tagged classes, there are ways to do that inside the theory.)
How so? If all classes are extensional (as they currently are, under the rules for definitions), then df-cleq is sufficient for eliminating every
As I mentioned above, for each statement involving a class variable
I do not mean to use df-clel to define
I'm only referring to your comment "In practice, however, the more direct and fruitful approach is not to construct class equality from membership, but to treat equality itself as axiomatic." "Treating [class] equality itself as axiomatic" would only be necessary if we added non-extensional class colors, which would break eliminability. |
I am not in favor of adding definitions in the form df-clab is structured. Its structure is a first time problem arising from a limited environment still not very expressive. Its form is motivated by what df-cleq and df-clel do not define themselves, namely the term x e. A. Later one should use equality instead, after the idea of an abstract class is available.
The basic idea of a variable is that it stands for something concrete, though often unspecified. What is the pool of contents, or interpretations, you can substitute variables with? For a class variable class builders make up this pool. It may allow future additions. In such a case you cannot perform a full case study, and a variable remains always, to some extent, undefined. Consequently, elimination of a class variable is impossible (unless you know something about its contents, of course). If you want class variables be eliminable, you first need a limited pool, allowing you to handle each branch individually. Fortunately, in set theory nothing besides cv and df-clab seems necessary. Then the next question about elimination of class variables is: Can all sets be expressed as class abstractions, free of class variables? Using { x | x e. y }, for example? Maybe. Classes? I don't think so. For ZF you should then limit classes to those having a class variable free definition. How is this enforced? Set variables in Metamath have no set builder, so no pool exists. Later on assignment serves this role a bit, but that is not the same. You are unable to eliminate, let alone define, set variables. All of this need not be clarified in the early bootstrapping phase given by the range of df-cleq, df-clel and df-clab. Simply assume the worst case, an unlimited pool, and check the formalism stays valid. Then it will hold, no matter how you later "narrow down" set theory to what you have in mind.
At the time df-cleq is introduced, both A = B and x e. A are just syntactically valid expressions, no definitions given, not even when df-clab is known. x e. A may even have the reverse meaning: A is a member of x, for A not a set (however you find out what a set is). If you can prove all class variables can be replaced with an abstract class, then x e. A has a meaning. But where is the proof? Or axiom? The colors are a sort of academic counter example, that somehow must be ruled out. It seems I am now able to formulate many ideas in a more precise way. In the past I sometimes just felt uneasy, and came up with the "colors" of classes idea for a possible counter example for either having a pool of 3 class builders, or an equality without indistinguishability. Many thanks for your support. The motivation of this PR is to point out all the hidden assumptions behind the definitions and axioms presented in the early phase of set theory, and use them in a rewrite of comments. |
Of course, I'm not in favor of generally adding definitions in that form, no more than I'd be in favor of copying df-bi-style But as long as we can write all those definitions within Metamath, they always tie a class construction to a definable wff that could've been written with cab instead, so we don't gain any expressive power. And if we demand (as we currently do) that all
On the Metamath level, you can substitute a class variable for a cv instance, a cab instance, a defined class construct, or another class variable. On the level of interpretation, we do want elimination of a class variable to be possible, and that's why we do demand that every class definition come back to cv or cab. How do we demand this? With the definition checker. If every class construction after df-clab is defined as
I'm glad we agree there must be a definite pool if we want eliminability. For set.mm, this pool is direct setvars from cv and class abstractions from cab. (During elimination, we technically don't ever need to rewrite a cv setvar as a class abstraction. We only need to know that they're equivalent when we check conservativity.)
I suppose your question is, "If we can define classes in terms of other class variables So then the next question is, what is the relation between substitution and elimination? As I understand it, the important rule is, "If a Metamath statement For instance, let's say that statement As for enforcement, we first enforce with the definition checker that every class construction can be boiled down to cv and cab, so that the only remaining notion on the Metamath level is
When interpreting set.mm variables, we eliminate setvar metavariables into object-language variables
So that is the "pool" we use when eliminating setvars. Of course we can't write these within Metamath, but the Metamath language has no concept of elimination, let alone eliminable and conservative definitions. Definitions are all about the interpretation outside the Metamath language. For class variables, the "pool" for elimination is object-language variables vi and abstractions {vi | 𝜑}, where 𝜑 is an object-language wff. (Or rather, the "pool" for eliminating
Arguably, the "narrowing-down" process for bootstrapping is only needed when we're talking about expressions that exist in the object language. The object language has = and ∈ and variables, so we must add axioms that specify their behavior. On the other hand, class variables and class constructions are supposed to be immediately eliminable from existence, so we specify how to eliminate
Since interpretation occurs outside the Metamath language, we cannot simply write a proof about "meanings" within it. Allegedly, the proof for eliminability comes from Levy and other authors, cited within "The Theory of Classes" on the front page. But the overall proof sketch is not hard to see, it's entirely a matter of syntactic manipulations. Yet this eliminability presupposes that all substitutions of classes are ultimately cv or cab, so that's what we enforce right away with the definition checker, instead of letting everything get "narrowed down" into place. |
I have only little time available, so some quick remarks:
I thought more along the lines { x | x e. A } when you know nothing about A.
I don't want to eliminate set variables. I simply stated they can't be eliminated because there are no objects of type setvar. This was meant as an example of variables without "pool", i.e. set builders. Maybe there is room for discussions, but for me they are elementary, needed for quantification and the simple set model in FOL. I find some remarks of you helpful with respect to the role of substitution. Assignment replaces substitution in the expression x = A, so equality must be well-behaved enough for this purpose. I can prove theorems mimicking axioms using equality in FOL, under the assumption E. x x = A following holds ax-13 is of no interest. This means, all proofs of theorems that replace a setvar y by a class A, carry simply over, if 1. A contains a set; 2. no quantifier is applied to y. I think it is time to rework this PR to use more of the comments here. I need time for it though, and this is limited for me, so perhaps results will need a couple of days. Thanks for your support. |
df-cleq and df-clel are actually axioms. Here is the detailed reason why. In my eyes df-clab is a definition and should follow both df-cleq and df-clel. Both of these axioms prepare the ground why df-clab is defined as it is. A reason for this will follow. For now propose to mark df-cleq and df-clel as axioms.