Apologies in advance... the following is going to contain mathematical 
jargon and pedantry. Run now while you still can *wink*


On Tue, Mar 24, 2020 at 12:56:55AM -0700, Andrew Barnert wrote:
> >>> On Mar 23, 2020, at 19:52, Steven D'Aprano <st...@pearwood.info> wrote:
> >> On Mon, Mar 23, 2020 at 06:03:06PM -0700, Andrew Barnert wrote:
> >> The existing methods are named issubset and issuperset (and
> >> isdisjoint, which doesn’t have an operator near-equivalent). Given
> >> that, would you still want equals instead of isequal or something?
> > 
> > Oops! I mean, aha, you passed my test to see if you were paying 
> > attention, well done!
> > 
> > *wink*
> > 
> > I would be satisfied by "isequal", if the method were needed.
> > 
> > 
> >> So, I’d rather have an uglier, more explicit, and more obviously
> >> specific-to-set name like iscoextensive. Sure, not everyone will know
> >> what “coextensive” means
> > 
> > That's an unnecessary use of jargon
> 
> As far as I’m aware (and your MathWorld search bears this out), 
> “coextensive” isn’t mathematical jargon.

No, it's definitely mathematical jargon, but *really* specialised. As 
far as I can tell, it's only used by people working on the foundations 
of logic and set theory. I haven't come across it elsewhere.

For example:

https://books.google.com.au/books?id=wEa9DwAAQBAJ&pg=PA284&lpg=PA284&dq=math+coextensive+set+difference+with+equality&source=bl&ots=y-jmrSTxC8&sig=ACfU3U18oCjeXSfwwqML1zuVWwbSJdeZ2Q&hl=en&sa=X&ved=2ahUKEwjqzfGBhbLoAhUOzDgGHfqSAbIQ6AEwAHoECAkQAQ#v=onepage&q=math%20coextensive%20set%20difference%20with%20equality&f=false

"Introduction To Discrete Mathematics Via Logic And Proof" by Calvin 
Jongsma, on pages 283-4, it says:

    First-Order Logic already has a fixed, standard notation of 
    identity governed by rules of inference. S = T logically implies
    (∀x)(x∈S ↔ x∈T) [...] Thus identical sets must contain exactly
    the same elements. However we can't turn this claim around and 
    say that sets having the same elements are identical -- 
    *set equality for coextensive sets doesn't follow from logic alone.*
    We'll therefore postulate this as an axiom, using the formal 
    notation of FOL.

    Axiom 5.3.1: Axiom of Extensionality
    ∀x(x∈S ↔ x∈T) → S = T

    The crierion for equal sets (see Definition 4.1.1 follows 
    immediately:

    Proposition 5.3.1: Equal Sets
    S = T ↔ ∀x(x∈S ↔ x∈T)


Apologies to everyone who got lost reading that :-)

In the above quote, "identity" should be read as "equality". The 
emphasised clause "set equality for coextensive sets..." is in the 
original. The upside down A ∀ means "for all", the rounded E ∈ means 
"element of".

So translated into English, what the author is saying is that he has a 
concept of two sets being equal, S = T. He has another concept of two 
sets being coextensive, namely, that for each element in S, it is also 
in T, and vice versa. He then says that if two sets are identical 
(equal), then logically they must also be coextensive, but to go the 
other way (coextensive implies equality) we have to make it part of the 
definition.

That's a long-winded, pedantic and precise way of saying that two sets 
are equal if, and only if, they have precisely the same elements as each 
other, by definition.


> I chose it because of its ordinary (if not super-common) English 
> meaning.

Oh.

Well, you outsmarted me, or perhaps outdumbed me *smiles* because it 
definitely is a term from mathematics, whether you knew it or not.

I thought that you were referring to the mathematical usage.

As far as the non-mathematical meaning:

    being of equal extent or scope or duration;
    having the same spatial limits or boundaries;

I think we would be justified as reading `A.iscoextensive(B)` in one of 
two ways:

    len(A) == len(B)
    (min(A), max(A)) == (min(B), max(B))

but not necessarily as equal.

Why not equal? Consider somebody who started a project on the day of the 
Olypics Opening Ceremony, and finished the project on the day of the 
Closing Ceremony. We can say that the project and the Olympics were 
coextensive, but we can't necessarily say that they were equal or the 
same thing, or that the project was the Olympics.


[...]
> Sure, but in math, just as in Python, a set is never equal to a list 
> (with a tiny foundations asterisk that isn’t relevant, but I’ll 
> mention it below).

Well, yes and no.

In Python, just as in mathematics, a set is never a superset or subset 
of a list either, and yet in Python we have a set method which quite 
happily says that a set can be a superset or subset (or equal to) a 
list:

    {1, 2}.issubset([2, 1])  # Returns True

We understand that, unlike the operators `<` and `<=`, the issubset 
method is happy to (conceptually) coerce the list into a set.


> So when mathematicians want to say a set is equal to a list… well, 
> they just don’t say that, because it isn’t true, and usually isn’t 
> even a meaningful question in the first place.

Don't you think that there is a sense in which the Natural numbers ℕ {0, 
1, 2, 3, ...} and the sequence (0, 1, 2, 3, ...) are "the same thing"?

We even talk about ℕ having successor and predecessor functions, which 
implies a natural order to the set.


> > The foundations of mathematics is one of those things which are 
> > extremely over-represented on the Internet
> 
> Well, you’re the only one who brought up foundations here, and in the 
> same email where you’re railing against people talking about 
> foundations on the internet, so I’m not sure what the point is.

Because I genuinely thought you intended to refer to the mathematical 
jargon, I didn't imagine you just got lucky.


> My guess is that you saw Greg, Marc-Andre, etc. talking about sets in 
> mathematics and naturally thought “oh no, here comes irrelevant 
> mathematical logic”,

*blink*

Um, are you confusing me with someone else? Is there something I've said 
that leads you to the conclusion that I think that being mathematical 
and logical is irrelevant?


> but there isn’t any; the reason sets came up is 
> that we’re talking about set operations on Python set objects, and 
> it’s pretty hard to talk about what issubset means/should mean without 
> talking about sets.

Oh well I'm glad you set me straight.


-- 
Steven
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/OD3MF6HI2AVVB4B76HBFDYITN2HTUUAZ/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to