Vacuous truth
In mathematics and logic, a vacuous truth is a conditional or universal statement that is true because the antecedent cannot be satisfied.
It is sometimes said that a statement is vacuously true because it does not really say anything. For example, the statement "all cell phones in the room are turned off" will be true when no cell phones are present in the room. In this case, the statement "all cell phones in the room are turned on" would also be vacuously true, as would the conjunction of the two: "all cell phones in the room are turned on and all cell phones in the room are turned off", which would otherwise be incoherent and false.
More formally, a relatively well-defined usage refers to a conditional statement with a false antecedent. One example of such a statement is "if Tokyo is in Spain, then the Eiffel Tower is in Bolivia".
Definitions
These statements are considered vacuous truths because the fact that the antecedent is false prevents using the statement to infer anything about the truth value of the consequent. In essence, a conditional statement that is based on the material conditional, is true when the antecedent is false regardless of whether the conclusion or consequent is true or false because the material conditional is defined in that way.Examples common to everyday speech include conditional phrases used as idioms of improbability like "when hell freezes over ..." and "when pigs can fly ...", indicating that not before the given condition is met will the speaker accept some respective proposition.
In pure mathematics, vacuously true statements are not generally of interest by themselves, but they frequently arise as the base case of proofs by mathematical induction. This notion has relevance in pure mathematics, as well as in any other field that uses classical logic.
Outside of mathematics, statements in the form of a vacuous truth, while logically valid, can nevertheless be misleading. Such statements make reasonable assertions about qualified objects which do not actually exist. For example, a child might truthfully tell their parent "I ate every vegetable on my plate", when there were no vegetables on the child's plate to begin with. In this case, the parent can believe that the child has actually eaten some vegetables, even though that is not true.
Scope of the concept
A statement is "vacuously true" if it resembles a material conditional statement, where the antecedent is known to be false.Vacuously true statements that can be reduced to this basic form include the following universally quantified statements:
- , where it is the case that.
- , where the set is empty.
- * This logical form can be converted to the material conditional form in order to easily identify the antecedent. For the above example "all cell phones in the room are turned off", it can be formally written as where is the set of all cell phones in the room and is " is turned off". This can be written to a material conditional statement where is the set of all things in the room, the antecedent is " is a cell phone", and the consequent is " is turned off".
- , where the symbol is restricted to a type that has no representatives.
Other non-classical logics, such as relevance logic, may attempt to avoid vacuous truths by using alternative conditionals.
In computer programming
Many programming environments have a mechanism for querying if every item in a collection of items satisfies some predicate. It is common for such a query to always evaluate as true for an empty collection. For example:- In JavaScript, the array method
everyexecutes a provided callback function once for each element present in the array, only stopping it finds an element where the callback function returns false. Notably, calling theeverymethod on an empty array will return true for any condition. - In Python, the built-in
allfunction returnsTrueonly when all of the elements of an iterable areTrueor the iterable is empty:allTrue; allFalse; allTrue. A less ambiguous way to express this is to sayallreturns True when none of the elements areFalse. - In Rust, the
Iterator::allfunction accepts an iterator and a predicate and returnstrueonly when the predicate returnstruefor all items produced by the iterator, or if the iterator produces no items. - In SQL, the function, the function
ANY_VALUEcan differ depending on the RDBMS's behaviour relating NULLs to vacuous truth. Some RDBMS might returnnulleven if there are non-nullvalues. Some DBMS might not allow for its use infilteroroverclauses. - In Kotlin, the collection method
allreturnstruewhen the collection is empty. - In C#, the Linq method
Allreturnstruewhen the collection is empty. - In C++, the
std::all_offunction template returnstruefor an empty collection. - In Agda, an empty type is 'false' at the type level, following the Curry–Howard correspondence. A parameter of such a type can be matched against an 'absurd' pattern and an equation containing such a pattern has no right hand side. The principle of ex falso quodlibet can be defined this way as a function
efq : ∀ → ⊥ → a. The functionefqis then a proof of the vacuously true proposition⊥ → afor every propositiona. For example, it is a proof of⊥ → ⊥.Examples
- "For any integer x, if then." – This statement is true non-vacuously, but some of its implications are only vacuously true: for example, when x is the integer 2, the statement implies the vacuous truth that "if then ".
- "All my children are goats" is a vacuous truth when spoken by someone without children. Similarly, "None of my children is a goat" would also be a vacuous truth when spoken by the same person.