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.


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)"?

  • 1
    @Not_Here yea I am aware of the truth table, probably should have said it, but that feels that it avoids my question than really providing an answer. Jul 2, 2017 at 0:02
  • 2
    Given your edit, it sounds like the real issue isn't with vacuous truths but its an issue with the idea of a material conditional. You can see here for a discussion about conditionals in both logic and natural language and how they relate to each other. If you accept that the truth table explains why its vacuously true but you then say "but why did we choose to make the answer true instead of false" then your issue is with conditionals, not with vacuous truths.
    – Not_Here
    Jul 2, 2017 at 0:16
  • 1
    @Not_Here I think its both but I think the emphasize should be in the vacuousness as my first question was intended cuz as I wrote in my closed sets example, my whole question arose because I naturally (intuitively) thought that since there are no limit points to consider then the set E can't contain any of them so E can't be closed. My confusion arose due to that, not due to the logical implication of table. The logical implication of table is something that you brought up not me and I said that it just seems to me to bring up more questions than answer (and avoid my original question). Jul 2, 2017 at 0:23
  • 3
    The "obsession" with truth table is already in your first example: IF (x in Empty_Set [is true]) THEN ( Zebra(x) is true) Jul 3, 2017 at 10:58
  • 2
    In the end, there are no "vacuous statement" in logic; at least in "elementary" logic, all statements have a definite truth value. The correct use is vacuous truth for a statement that asserts that all members of the empty set have a certain property. The explanation - as you know - relies on the truth-functional definition of conditional ("if..., then..."). Jul 3, 2017 at 11:00

8 Answers 8


We do NOT define vacuous statements as true.

A vacuously true statement is vacuously true.

A "vacuously false" statement is vacuously false; although nobody ever gives this type of statement any thought.

Example: Every element of the empty set is a purple flying elephant.

We agree that this statement is (i) vacuous; it doesn't really say anything meaningful; and (ii) true by the laws of predicate logic. To find it false we must find an element of the empty set that is not a purple flying elephant. Since we can't do that, the statement must be true. Equivalently, "IF x is in the empty set, THEN x is a purple flying elephant." That is true by virtue of the definition of material implication. [Note that every other possible truth value assignment for implication is worse. People who complain about material implication rarely take that into account].

Now since we have cooked up a fine example of a vacuous truth, let's see if we can think of an example of a vacuous falsehood. How about:

It is NOT the case that every element of the empty set is a purple flying elephant.

Since the original statement is true, its negation is False. It still doesn't mean anything, it's vacuous. But it is FALSE. To prove otherwise you'd have to demonstrate an element of the empty set that is something OTHER than a purple flying elephant. But you can't do that!

So this is a vacuous falsehood.

Conclusion: A statement may be vacuous, meaning that it uses a quirk of logic to assert something that makes no real sense, yet it has a perfeclty deterministic truth value. [I'm sure someone can improve on that definition. I'm not sure if there even is a formal definition of "vacuous."]

But given a vacuous statement, it may be true or it may be false.

The reason "vacuous statements" are almost always truths, is simply that we talk about them as a corner case; while never bothering to mention their close relative, the vacuous falsehood.

So this is a paradox of usage. Or perhaps we can call it a convention that leads people to think it's a rule, when in fact it's not.

When we say "vacuous" we are almost always referring to some vacuous truth. But it's not logically necessary. It's just a linguistic convention. In any formal setting, if someone referred to a vacuous statement, you would be justified in asking them whether they mean it's vacuously true or vacuously false.

  • after reading your answer after a long time passed (& the wikipedia article), I think what puzzles me the most is that for some reason unknown to me $x \in A : Q(a)$ is interpreted as $\forall x ( x \in A \to Q(a) )$ which seems strange to me. As someone with a very formal logic background in mathematics, the way I view the mathematical world is through the lenses of L-structures. So when someone informally writes $\forall x \in A : Q(a) $ this statement actually doesn't parse to me uniquely as it could mean either $\forall x (\phi^A(x) \to Q(a) )$ or $\forall x Q(a)$ which are very different. Nov 15, 2018 at 4:48
  • 2
    "To find it false we must find an element of the empty set that is not a purple flying elephant. Since we can't do that, the statement must be true." is the point I find disturbing. Fine we cannot find one BUT we also CANNOT find that every elephant of the empty set is pink. So that's FALSE too. I can't seem to find a consistent way to make sense of this. Nov 17, 2018 at 1:47
  • What really upsets me is that when we have a statement like "for all x in A, they have property Qx when Qx" are True when $x \in A = \emptyset$ when that doesn't actually mean anything. You cannot instantiate an object from an empty set. $x \in A$ is False. We cannot instantiate an object of type Void or with a False property. Thats what being False means. Why would we consider that as true? The definition that makes sense to me is leave that undefined. Nov 17, 2018 at 2:09
  • 1
    Of course thats not what happens and I can't understand why its not the case and summoning material implication out of the blue doesn't help. I wish to truly understand why the decision were made the way they were. Nov 17, 2018 at 2:09

Suppose you're trying to solve the following algebra problem in the real numbers:

Find the solutions to x2 = 6x - 11

Your first step to approaching the problem might be to bring everything over to one side to make a quadratic equation:

x2 - 6x + 11 = 0

What is the actual logical justification here? The laws of arithmetic say the following is true:

If x2 = 11 - 6x, then x2 + 6x - 11 = 0.

Do you agree that this is a valid step to make in an argument?

Surprise! This is actually a vacuous statement.

I crafted the above to retain the "if x is in the empty set" flavor. An even simpler example of a vacuous conditional would be

If x = 1, then x + 1 = 2.

Clearly this should be a true statement. But it is a vacuous one in any problem where, for example, x=2.

Vacuous truth is not just an oddity; it is a critical part of reasoning with classical logic that comes up naturally and frequently.

The idea of implication is about what makes for valid reasoning — it is the proposition that a valid argument can proceed from the hypothesis to the conclusion. It has absolutely nothing to do with the question of whether the hypothesis itself can be established.

If you mean to state the proposition that some hypothesis P is true and that some conclusion Q is true, you would say "P and Q", not "if P then Q".


I find it helpful to think of this issue using the traditional "square of opposition". According to it, we have amongst others (see https://plato.stanford.edu/entries/square/ for a full explanation and a diagram of the whole square) the following theses:

(1) "All Fs are G" entails "Some Fs are G"

(2) "No F is G" is equivalent to "All Fs are not G".

When there are some Fs, all is well with the traditional square.

But when there are no Fs, we cannot keep both (1) and (2). Why not? Suppose there are no Fs. Then "No F is G" is true, so according to (2) "all Fs are not G" is true. But then according to (1) "some F is not G" is true. But from this it follows that there are Fs after all.

The modern solution to this problem is to reject (1) and keep (2). It follows that if there are no Fs, then we have for every G that "no F is not G" is true and so from (2) that for every G whatsoever "every F is G" is true, which is the conclusion that you rightly find counterintuitive.

We could have opted for a solution that rejects (2) instead of (1). But there isn't a solution which keeps every aspect of the traditional square of opposition. Since the traditional square is intuitive, there isn't a solution which doesn't have counterintuitive consequences somewhere.


We consider ⱯxϵS P(x) ↔ ¬ƎxϵS ¬P(x) to hold for all sets, including the empty set; or equivalently ¬ⱯxϵS P(x) ↔ ƎxϵS ¬P(x) . Therefore, a universal statement is only falsified by demonstrating the existance of a counter example.

You can never do this for a universal statement restricted to an empty set, because nothing exists inside the empty set. Thus ¬ƎxϵՓ ¬P(x) is considered vaccuously false.

Hence ⱯxϵՓ P(x) is true for any P because there can be no counterexample in the emptyset.


"Every element of the empty set is equivalent to a zebra" doesn't make statements about non-existing elements, it makes statements about no elements at all. That's a difference. When you say "statement about a non-existing element", you pretend that there is an element with the property "non-existing". But there are no non-existing elements.

Logic must behave in a reasonable way. Think of any set, for example the set S with the elements 1, the empty set, a gnu, and a zebra. The statement "every element of S is a zebra" is clearly false - 3 out of four elements are not zebras.

What happens when we remove elements? Removing elements may make the statement true. If we remove the 1, the empty set, and the gnu, then the statement can change from "No" to "Yes", it cannot cannot change otherwise. So if we have only the zebra left, then removing that zebra may change the statement "every element of S is a zebra" from false to true but not from true to false. Therefore a statement about all elements of the empty set must be true.


When discussing universal or existential quantifiers in first order logic, the variable bound by those quantifiers refers to members of a domain. The authors of forallx state something important about the number of elements in a domain: (page 160)

A domain must have at least one member.

The domain is not empty.

This raises concerns about existence. Why should we assume something exists? If we say for all x in a domain the predict P holds, that is, all x have that property, this implies that there exists at least one something in the domain for which P(x) is true.

For those who want to restrict the claims of existence, there is free logic. For those who don't mind these claims, and who find this definition satisfactory, this resolves part of the OP's problem at least as it is described by this example:

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

By definition the domain cannot be empty, so claiming "x in Empty_Set" is not permitted. The variable x has to be a member of a non-empty domain, say, all of the animals currently in my house (where there are no zebras).

This brings up the next concern where the idea of vacuous statements have some use-value. Although domains must be non-empty, predicates could be empty as they would be in this example since none of the animals in my house are zebras.

Continuing with this example, let Cat be the predicate that describes the animal in my house who is a cat. Then the following would be vacuously true:

For all x in the domain of animals in my house, if Zebra(x) then Cat(x).

Since Zebra(x) is false for all x in the domain, it is an empty predicate given this domain. Therefore the conditional is vacuously true.

A possible way around some of these vacuously true conditionals would be to look at relevance logic "requiring the antecedent and consequent of implications to be relevantly related" if this use of a statement being vacuously true raises problems.

Let's consider some final concerns the OP raises:

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)"?

Given that the domain, A, cannot be empty, the first statement perhaps is better symbolized as "∀x∈A(Qx)" and the second as "∃x∈A(Qx)" if one wants to explicitly note the domain.


"Free logic", Wikipedia https://en.wikipedia.org/wiki/Free_logic

P. D. Magnus, Tim Button with additions by J. Robert Loftis remixed and revised by Aaron Thomas-Bolduc, Richard Zach, forallx Calgary Remix: An Introduction to Formal Logic, Winter 2018. http://forallx.openlogicproject.org/

"Relevance logic", Wikipedia https://en.wikipedia.org/wiki/Relevance_logic


Because that way we have one quarter as many deduction rules as Aristotle had. You have two options. Both make equally little sense, one makes the formalism four times more efficient. Make a choice.

Also 'we' didn't make this decision, we all followed one person who made it: George Boole. This is why we call this Boolean logic.

Aristotle handled four kinds of quantification because he did not want to make this kind of artificial imposition. But Boole notice that disjunction was something like addition, and conjunction was something like multiplication. We can't make disjunction exactly like addition, but we can, with this silly convention make conjunction exactly like multiplication. The good qualities that multiplication has pay off in allowing more concise statements about conjunction than disjunction.

Once you have chosen to see disjunction this way, universal quantification follows suit, and the two fit together the same way simple and infinite products do. Again, more special cases disappear. So Boole's logic looks better, it is easier to keep track of, and we kept it.


In general, the principle of vacuous truth can be stated as:

A => [~A => B] for any logical propositions A and B

Here is the truth table:

enter image description here

Following is a formal proof using a form of natural deduction. It uses the principles of conditional proof (lines 7-8), proof by contradiction (line 5) and the elimination of double negation (line 6):

enter image description here

In your example, you have A = 'x not in Empty Set', and B = 'Zebra(x).' The resulting implication will always be be true (a tautology), but you will not be able to infer from it that Zebra(x) is true since its immediate antecedent (~A) will be be false given that A is true.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .