I have been trying to understand why implications about the empty set are treated as "true". It seems to me intuitively that vacuous statements should be false.

For example consider the sentence:

Every element of the empty set is equivalent to a zebra.

or

IF ( x in Empty_Set ) THEN ( Zebra(x) ) is true.

Thinking as a computer scientist/mathematician, Zebra(x) means the function that returns True when x is a zebra (and we are trying to decide what to return when called with an empty argument essentially).

To me it seems really odd to think of a non existing element as having a property (in this case the property zebra) if I were abstractly thinking about an element that does not exists (i.e. in this case x is sort of the equivalent of the empty element or just "nothing" or just calling Zebra with no argument). Then obviously nothing has no property at all since if it did it would be something. In particular it's not a Zebra. Therefore, it makes sense to me that Zebra() should return a logical value of False when asked about non existent elements, i.e. of course nothing is not a zebra. Therefore the whole implication should be false, because it seems illogical to conclude that nothing (or any element of the empty set) should be considered a Zebra.

However, it seems that logicians and mathematicians disagree with me and I really wish to understand why because this is proving to be something very difficult for me to accept intuitively and it is becoming a major obstacle in my studies of mathematical proofs and logic. I wish to get rid of this confusion and wrong intuition once and for all by understanding why the opposite definition is true:

Why is it that when considering implication and properties of elements from the empty set that we decided that such statements are vacuously true (i.e. "obviously" true? It's definitively not "obvious" and this should be justified clearly.

Just for a fun comment, this issue came up for me when considering if a finite non empty set is a closed set. A closed set is one with all of its limit points. Since it had no limit points then it can’t contain any limit points (since there isn't any limit point to consider!) Thus it means it's not a closed set. Which seems to me to be intuitively true, however, this is not how mathematics works for some reason.

Also it seems that from false premises we can conclude anything to be true (for some reason unknown to me). Is this the reason why any consideration with the empty set is treat as "vacuously true"?

As another side comment (since there has been some obsession/fixation of the truth table stuff) maybe I can clarify how that's what I feel is a bit different.

Say that x = None where None is the representation of nothing (not in the same way as in coding, since the empty set would be equal to {None} the set with None. {None} = {}. In this case my above implications make more sense:

IF ( None ) THEN (Zebra(None))

where Zebra(None) = Zebra(). So the first part of the statement isn't just "false" (which feels that avoids my question). For me it seems more logical to conclude that nothing doesn't have a property (this case the Zebra property) rather than just having it be true. I hope this clarifies my confusion.

As a side comment, yes I have seen truth tables and essentially that just shows me that "that is the answer we chose", i.e. it just shows what the definition is, rather than explain why the definition was chosen that way. I think I am more interested in the later, the why. Maybe any other definition breaks mathematics in some weird way. Also, I really intended to keep my question focused on vacuousness, since that's what my brain intuitively/naturally got confused, so I am not sure if shifting to something else will fix that.

I just want to emphasize the definition of the truth table for material implication is NOT the problem. I understand that.

Why do we translate the informal statement "forall x in A such that Qx" to the formal statement "∀x(x∈A → Qx)"? How do we translate "there exists an x in A such that Qx"? Is it just "∃x(x∈A → Qx)"?