--
You received this message because you are subscribed to the Google Groups "Metamath" group.
To unsubscribe from this group and stop receiving emails from it, send an email to metamath+unsubscribe@googlegroups.com.
To post to this group, send email to meta...@googlegroups.com.
Visit this group at https://groups.google.com/group/metamath.
For more options, visit https://groups.google.com/d/optout.
It is true that this theorem is not in set.mm, and I think it is a good standalone theorem, possibly as a replacement for ru (i.e. reproving ru as a corollary). I also once proposed it as a replacement for df-undef, but there isn't any real reason to use it (the rank of the set is a bit lower? It's a longer formula), and it doesn't really matter for most applications of df-undef how it is defined.
It is worthwhile also to point out that the ~P U. A e/ A proof generalizes to ~P ... ~P U. A e/ A, while the Russell class doesn't (although you can do it with repeated applications of the Russell construction on a union of everything you want to avoid, with a little work). This is used, for example, to define the elements +oo and -oo so that they are distinct from each other and not in CC.
I don't see a good argument for the Russell class as a definition though. It doesn't actually appear anywhere - ru itself is sort of an endpoint theorem, it never gets used AFAIK.
Even df-undef is rarely used, and you only need a few key theorems in this area before you have more set-avoiding than you could ever need. If anything was to get a definition, I would suggest something like disjenex, which gives a bit more parametric control over what to avoid and how many elements you want. (I originally formulated that theorem and its corollaries for doing field extensions, so that you can do a construction over another structure, and then re-situate it as a superset of the old structure, which would allow things like the real numbers construction in which NN0 = om.)I would like to introduce df-riota earlier, but I would prefer to do it by removing the dependence on df-undef entirely. I've argued before on this list about replacing the definition of df-riota to return (/) instead of Undef when it is not unique. It's an out of domain thing anyway, and the empty set is much more likely to make "coincidentally true" theorems, while Undef is almost adversarially avoiding such things.
I would like to introduce df-riota earlier, but I would prefer to do it by removing the dependence on df-undef entirely. I've argued before on this list about replacing the definition of df-riota to return (/) instead of Undef when it is not unique. It's an out of domain thing anyway, and the empty set is much more likely to make "coincidentally true" theorems, while Undef is almost adversarially avoiding such things.I'm not sure (/) is a good idea. And the fact that it makes more theorems coincidentally, or accidentally, true is a drawback, to me. I'll look for your earlier posts.
Mario, your comments are exactly to the point. We working mathematicians don't like junk theorems ;) and mathematical thinking is fundamentally typed. That's why I want to avoid junk / accidentally true theorems.
And the phrase "x \in \R implies 1/(1/x) = x" bothers me (I would have removed points to my students for that!). As you say, as we add layers of abstraction, we rapidly encounter fewer junk theorems, but still. I'm afraid I would have liked to enforce something beyond a gentleman's agreement, to use your words!
Mario, your comments are exactly to the point. We working mathematicians don't like junk theorems ;) and mathematical thinking is fundamentally typed. That's why I want to avoid junk / accidentally true theorems. And the phrase "x \in \R implies 1/(1/x) = x" bothers me (I would have removed points to my students for that!). As you say, as we add layers of abstraction, we rapidly encounter fewer junk theorems, but still. I'm afraid I would have liked to enforce something beyond a gentleman's agreement, to use your words!
Anyway, there was an interesting discussion a few years ago on this topic (the first three answers are interesting):
https://mathoverflow.net/questions/90820/set-theories-without-junk-theorems
On Sunday, September 10, 2017 at 12:43:25 AM UTC+2, Mario Carneiro wrote:On Sat, Sep 9, 2017 at 5:20 PM, Benoit <benoit...@gmail.com> wrote:I would like to introduce df-riota earlier, but I would prefer to do it by removing the dependence on df-undef entirely. I've argued before on this list about replacing the definition of df-riota to return (/) instead of Undef when it is not unique. It's an out of domain thing anyway, and the empty set is much more likely to make "coincidentally true" theorems, while Undef is almost adversarially avoiding such things.
That's an interesting read. In set.mm, we more or less do this:1. For ordinal numbers, we treat them as if they _are_ their definitions, leading to examples like 1o e. 2o, and we exploit such "junk" theorems freely. Books about ordinals tend to do this also, e.g. Enderton's Elements of Set Theory. Indeed, it seems that von Neumann ordinals were invented so that such "junk" theorems can be used as shortcuts. Although we call the finite ordinals om the "natural numbers" in keeping with literature terminology, it is clear that these aren't the natural numbers NN0 used in ordinary math (they can't be mixed with real numbers in expressions, for example).
2. For complex numbers, we isolate their construction from their properties by restricting our use to their axioms and disallowing direct use of their construction. As long as we are careful with definitions, there are very few "junk" theorems. For example, we could protect df-div from casual usage of the out-of-domain case by restricting usage to divval only. In a couple of cases in the past, I rejected omitting an "A e. CC" antecedent that became redundant due to "junk" behavior".
In this sense, should we consider as "junk theorems" - and therefore tag them as "new usage is discouraged" - those which use the fact that the value of a function is (/) outside of its domain?
I'm thinking about ~ fvprc , ~ fvrn0, ~ ndmfv, ~ fv01, ~ nfunsn, etc. Those theorems are actually used a lot throughout set.mm. What shall I think about those theorems which are derived from them?
On 11/09/2017 02:53, David A. Wheeler wrote:
On September 10, 2017 12:53:34 PM EDT, Benoit <benoit...@gmail.com> wrote:
By "protecting", you mean adding a "new usage is discouraged", is thatI don't know if that is what he had in mind, but that is certainly what I have in mind. Being able to say that new usage is discouraged is useful. It means that you can devise arbitrary encapsulations of properties, allowing reuse of the properties, while simultaneously hiding the details of the construction. It also means that if you really do need to access something else, you are warned but you can still do it.
correct? In the analogy with programming in the mathoverflow answer,
this
would be a kind of encapsulation, like the "private" keyword in java,
if
I'm not mistaken.
I don't recall the terminology being used often in this forum, but I like to think of these hidden constructions as a "witness". That is, the witness shows an example of how one might construct something, and the "new usage is discouraged" marking prevents arbitrary theorems from depending on the unnecessary details.
Of course, that means that if you really do want to break the encapsulation you can easily do so. But at least it cannot be accidental, and it is something that is immediately flagged for others to review.
--- David A.Wheeler
I have pretty strong feelings about the way this should be handled, and have tried to prototype it in Ghilbert, but getting it right is not easy. I feel there should be a module structure, with clearly defined interfaces at the modules. The "axioms for complex numbers" (http://us.metamath.org/mpegif/mmcomplex.html#axioms) are a pretty good look at what such an interface would look like.Then, theorems proved using the interface would be _portable_ to not just one, but potentially multiple constructions, as long as they can satisfy the interface.
In the case of the ordinals, A ⊆ succ(A) etc could be part of an interface designed to make such theorems convenient. Of course, the construction would need to have a strong enough set theory to be able to provide this interface - certainly not trivial for axiomatic systems other than ZFC, but probably doable.I'm still very much wrestling with the question of how to handle types in such interfaces. I think the most general approach would be to have a predicate that says that the value is "in domain," which corresponds loosely to a typing judgment, and which concrete interpretation in a ZFC world would be element in the set. I'll use the type notation ":" but with some uneasiness.
For functions of type ℂ → ℂ (such as, say, unary negation), there would be inference rules of the form from φ → A : ℂ deduce φ → -A : ℂ. However, for division, it would look more like:φ → A : ℂφ → B : ℂφ → B ≠ 0 → (A / B) : ℂThis can be satisfied in all reasonable constructions of divison - those in which the result is the empty set, those in which it's 0, those in which it's guaranteed to be some complex number but not specified which one (the most common behavior in HOL, for which this is the behavior of epsilon choice with an everywhere-false predicate), those in which there's a designated "bottom" value of a domain, etc.A proof which is written in terms of this interface would be portable across all such constructions. Thus I think the technique has strong potential to get rid of "junk theorems".
To me, proving the negation of A / 0 : ℂ is a junk theorem of a different sort, because it can't be satisfied in logics that prefer functions to be totally typed, notably HOL.
On Mon, Sep 11, 2017 at 12:45 PM, Mario Carneiro wrote:
>
>
> On Mon, Sep 11, 2017 at 11:54 AM, Thierry Arnoux
> wrote:
>>
>> In this sense, should we consider as "junk theorems" - and therefore tag
>> them as "new usage is discouraged" - those which use the fact that the value
>> of a function is (/) outside of its domain?
>
>
> I think - I'm not sure how practicable this is, but it sounds like a
> reasonable idea. Even if there are a lot of theorems using these newly
> discouraged theorems, it is only a one-time change to the discouraged file,
> as long as the list of theorems doesn't continue to grow (this is the
> practicability assumption).
If you make this rule, I will ignore it.
The thing I see missing from these "axioms" for division is that they do not rule out the possibility that A / 0 is a complex number. I find this to be important in showing properly that certain problems (e.g. equations) do not have solutions.
As much as we would like to have an answer for "what's 1 divided by 0?" it's sadly impossible to have an answer. The reason, in short, is that whatever we may answer, we will then have to agree that that answer times 0 equals to 1, and that cannot be true, because anything times 0 is 0.
Norm