There are now over 125 answers to various questions that might be of interest to beginning/intermediate logic students at the Logical snippets page. Do please spread the word to those who might find something useful here!
(And if anyone can think of a nicer title than the uninspired ‘Logical snippets’ then I’d be very pleased to hear it!)
I’m intrigued by the snippet on Why suppose there is such a set as the empty set?.
At first, I agreed with you about what the OP was asking, but when I looked at the question afresh today, it struck me that it might actually be about something else. Rather than asking how can there even be such a thing as an empty set, it looked like it instead might be asking how there can be only one empty set, rather than an empty set of cups, and empty set of pens, and so on.
There’s some support for this alternative view in the OP’s comment on Deven Ware’s answer, where the puzzlement seems to be about how the empty set can be a subset of a set of pens and of a set of men when “what is common between pens and men”.
It’s also a question that makes sense from a programming languages point of view, while asking how there can even be such a thing as the empty set doesn’t.
I don’t mean it doesn’t make sense because there’s no such question that’s coherent and meaningful. I mean it doesn’t make sense because no one seems actually to have that problem. I don’t think I’ve ever seen anyone who was very puzzled, when learning a programming language, about how there can even be an empty string, list, set, or collection.
Indeed, there’s so little puzzlement about it that I find it strange that some people have a big problem with the the idea of an empty set in mathematics. It can be argued that sets in maths are different from the sets, lists, strings, etc in programming languages, but I don’t think those differences can really make much difference. If there’s a big conceptual problem in the maths case, there ought at least to be a moderately large one in the other case too.
However, the lists, sets, and other ‘collections’ in programming languages often have an element type as part of what those collections are. A set might be a set-of-pens, for example, or a set-of-cups, as a kind of set. It’s not a “set of pens” just because the things in it happen to be pens, and it would still be a set-of-pens even if empty. (There are some complications about when and whether such empty sets are “the same”, but I don’t think they make much difference at this point.)
The collections we have in ordinary life can seem like that too. Perhaps Sir John Soan had a collection so varied that it didn’t make sense to give it an element type, but most collections are collections of some particular type of thing: a pen collection, coin collection, stamp collection, and so on. Now suppose I have a pen collection and a coin collection, and I fall on hard times and decide to sell those pens and coins. I might feel I still had a pen collection, and a coin collection, and hope to repopulate them some day; but it would be strange to say the two collections had become the same collection as soon as I’d sold the last of the pens and coins.
So ordinarily the available options seem to be that either the collections cease to exist when they become empty, so that it makes no sense to ask whether they’re the same, or else they continue to exist as two, distinct collections. If that’s how someone thinks about sets, then the way sets are understood in mathematics can need some explanation.
(It may be tempting to think that this means the ‘untyped’ nature of mathematical sets makes them problematic and puzzling, so that we ought to be wondering how there can even be an empty set like that. But I don’t think that’s right either. Plenty of programming languages have lists, sets, and so on that don’t have element types are part of what they are. If they’re a “set of pens”, it’s just because they’re a set whose elements all happen to be pens, as in the mathematical notion. Yet I still don’t think I’ve ever seen anyone who was very puzzled, when learning such a programming language, about how there can be an empty list, set, etc.)