Conditional statement which is true because the antecedent cannot be satisfied
In mathematics and logic, a vacuous truth is a conditional or universalstatement (a universal statement that can be converted to a conditional statement) that is true because the antecedent cannot be satisfied.[1]
It is sometimes said that a statement is vacuously true because it does not really say anything.[2] 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 turned off", which would otherwise be incoherent and false.
More formally, a relatively well-defined usage refers to a conditional statement (or a universal conditional statement) with a false antecedent.[1][3][2][4] One example of such a statement is "if Tokyo is in Spain, then the Eiffel Tower is in Bolivia".
Such 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 ("Tokyo is in Spain" in the example) is false regardless of whether the conclusion or consequent ("the Eiffel Tower is in Bolivia" in the example) 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 (impossible) condition is met will the speaker accept some respective (typically false or absurd) proposition.
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.
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 (including cell phones if they exist 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 (such as the case of the counterfactual conditional).
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 every executes a provided callback function once for each element present in the array, only stopping (if and when) it finds an element where the callback function returns false. Notably, calling the every method on an empty array will return true for any condition.[6]
In Python, the built in all() function returns True only when all of the elements of an array are True or the array is of length zero as shown in these examples: all([1,1])==True; all([1,1,0])==False; all([])==True.[7] A less ambiguous way to express this is to say all() returns True when none of the elements are False.
In Rust, the Iterator::all function accepts an iterator and a predicate and returns true only when the predicate returns true for all items produced by the iterator, or if the iterator produces no items.[8]
In SQL, the function, the function ANY_VALUE can differ depending on the RDBMS's behaviour relating NULLs to vacuous truth. Some RDBMS might return null even if there are non-null values.[9] Some DBMS might not allow for its use in filter(…) or over(…) clauses.
In Kotlin, the collection method all returns true when the collection is empty.
In C#, the Linq method All returns true when the collection is empty.
In C++, the std::all_of function template returns true for an empty collection.[10]
Examples
These examples, one from mathematics and one from natural language, illustrate the concept of vacuous truths:
"For any integer x, if x > 5 then x > 3."[11] – This statement is true non-vacuously (since some integers are indeed greater than 5), 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 2 > 5 then 2 > 3".
"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.
^ abEdwards, C. H. (January 18, 1998). "Vacuously True"(PDF). swarthmore.edu. Archived from the original(PDF) on 28 April 2021. Retrieved 14 December 2019.