Reference articles on history, science, culture and more
Encyclopedia

Negation

Logical operation

Image credit is listed at the end of this article.

In logic, negation, also called the logical not or logical complement, is an operation that takes a proposition P to another proposition "not P", written \neg P, {\mathord {\sim }}P, P^{\prime } or {\overline {P}}. It is interpreted intuitively as being true when P is false, and false when P is true. For example, if P is "The dog runs", then "not P" is "The dog does not run". An operand of a negation is called a negand or negatum.

Negation is a unary logical connective. It may furthermore be applied not only to propositions, but also to notions, truth values, or semantic values more generally. In classical logic, negation is normally identified with the truth function that takes truth to falsity (and vice versa). In intuitionistic logic, according to the Brouwer-Heyting-Kolmogorov interpretation, the negation of a proposition P is the proposition whose proofs are the refutations of P.

01Definition

Classical negation is an operation on one logical value, typically the value of a proposition, that produces a value of true when its operand is false, and a value of false when its operand is true. Thus if statement P is true, then \neg P (pronounced "not P") would then be false; and conversely, if \neg P is true, then P would be false.

The truth table of \neg P is as follows:

P\neg P
TrueFalse
FalseTrue

Negation can be defined in terms of other logical operations. For example, \neg P can be defined as P\rightarrow \bot (where \rightarrow is logical consequence and \bot is absolute falsehood). Conversely, one can define \bot as Q\land \neg Q for any proposition Q (where \land is logical conjunction). The idea here is that any contradiction is false, and while these ideas work in both classical and intuitionistic logic, they do not work in paraconsistent logic, where contradictions are not necessarily false. As a further example, negation can be defined in terms of NAND and can also be defined in terms of NOR.

Algebraically, classical negation corresponds to complementation in a Boolean algebra, and intuitionistic negation to pseudocomplementation in a Heyting algebra. These algebras provide a semantics for classical and intuitionistic logic.

02Notation

The negation of a proposition p is notated in different ways, in various contexts of discussion and fields of application. The following table documents some of these variants:

Notation Plain text Vocalization
\neg p ¬p , 7p Not p
{\mathord {\sim }}p ~p Not p
-p -p Not p
Np En p
p' p'
  • p prime,
  • p complement
{\overline {p}} ̅p
  • p bar,
  • Bar p
!p !p
  • Bang p
  • Not p

The notation Np is Polish notation.

In set theory, \setminus is also used to indicate 'not in the set of': U\setminus A is the set of all members of U that are not members of A.

Regardless how it is notated or symbolized, the negation \neg P can be read as "it is not the case that P", "not that P", or usually more simply as "not P".

Precedence

As a way of reducing the number of necessary parentheses, one may introduce precedence rules: ¬ has higher precedence than , higher than , and higher than →. So for example, P\vee Q\wedge {\neg R}\rightarrow S is short for (P\vee (Q\wedge (\neg R)))\rightarrow S.

Here is a table that shows a commonly used precedence of logical operators.

OperatorPrecedence
\neg1
\land2
\lor3
\to4
\leftrightarrow5

03Properties

Double negation

Within a system of classical logic, double negation, that is, the negation of the negation of a proposition P, is logically equivalent to P. Expressed in symbolic terms, \neg \neg P\equiv P. In intuitionistic logic, a proposition implies its double negation, but not conversely. This marks one important difference between classical and intuitionistic negation. Algebraically, classical negation is called an involution of period two.

However, in intuitionistic logic, the weaker equivalence \neg \neg \neg P\equiv \neg P does hold. This is because in intuitionistic logic, \neg P is just a shorthand for P\rightarrow \bot, and we also have P\rightarrow \neg \neg P. Composing that last implication with triple negation \neg \neg P\rightarrow \bot implies that P\rightarrow \bot .

As a result, in the propositional case, a sentence is classically provable if its double negation is intuitionistically provable. This result is known as Glivenko's theorem.

Distributivity

De Morgan's laws provide a way of distributing negation over disjunction and conjunction:

\neg (P\lor Q)\equiv (\neg P\land \neg Q), and
\neg (P\land Q)\equiv (\neg P\lor \neg Q).

Linearity

Let \oplus denote the logical xor operation. In Boolean algebra, a linear function is one such that:

If there exists a_{0},a_{1},\dots ,a_{n}\in \{0,1\}, f(b_{1},b_{2},\dots ,b_{n})=a_{0}\oplus (a_{1}\land b_{1})\oplus \dots \oplus (a_{n}\land b_{n}), for all b_{1},b_{2},\dots ,b_{n}\in \{0,1\}.

Another way to express this is that each variable always makes a difference in the truth-value of the operation, or it never makes a difference. Negation is a linear logical operator.

Self dual

In Boolean algebra, a self dual function is a function such that:

f(a_{1},\dots ,a_{n})=\neg f(\neg a_{1},\dots ,\neg a_{n}) for all a_{1},\dots ,a_{n}\in \{0,1\}. Negation is a self dual logical operator.

Negations of quantifiers

In first-order logic, there are two quantifiers, one is the universal quantifier \forall (means "for all") and the other is the existential quantifier \exists (means "there exists"). The negation of one quantifier is the other quantifier (\neg \forall xP(x)\equiv \exists x\neg P(x) and \neg \exists xP(x)\equiv \forall x\neg P(x)). For example, with the predicate P as "x is mortal" and the domain of x as the collection of all humans, \forall xP(x) means "a person x in all humans is mortal" or "all humans are mortal". The negation of it is \neg \forall xP(x)\equiv \exists x\neg P(x), meaning "there exists a person x in all humans who is not mortal", or "there exists someone who lives forever".

04Rules of inference

There are a number of equivalent ways to formulate rules for negation. One usual way to formulate classical negation in a natural deduction setting is to take as primitive rules of inference negation introduction (from a derivation of P to both Q and \neg Q, infer \neg P; this rule also being called reductio ad absurdum), negation elimination (from P and \neg P infer Q; this rule also being called ex falso quodlibet), and double negation elimination (from \neg \neg P infer P). One obtains the rules for intuitionistic negation the same way but by excluding double negation elimination.

Negation introduction states that if an absurdity can be drawn as conclusion from P then P must not be the case (i.e. P is false (classically) or refutable (intuitionistically) or etc.). Negation elimination states that anything follows from an absurdity. Sometimes negation elimination is formulated using a primitive absurdity sign \bot. In this case the rule says that from P and \neg P follows an absurdity. Together with double negation elimination one may infer our originally formulated rule, namely that anything follows from an absurdity.

Typically the intuitionistic negation \neg P of P is defined as P\rightarrow \bot. Then negation introduction and elimination are just special cases of implication introduction (conditional proof) and elimination (modus ponens). In this case one must also add as a primitive rule ex falso quodlibet.

05Programming language and ordinary language

As in mathematics, negation is used in computer science to construct logical statements.

if (!(r == t)) { /*...statements executed when r does NOT equal t...*/ }

The exclamation mark "!" signifies logical NOT in B, C, and languages with a C-inspired syntax such as C++, Java, JavaScript, Perl, and PHP. "NOT" is the operator used in ALGOL 60, BASIC, and languages with an ALGOL- or BASIC-inspired syntax such as Pascal, Ada, and Eiffel. Some languages (C++, Perl, etc.) provide more than one operator for negation. A few languages like PL/I and Ratfor use ¬ for negation. Most modern languages allow the above statement to be shortened from if (!(r == t)) to if (r != t), which allows sometimes, when the compiler/interpreter is not able to optimize it, faster programs.

In computer science there is also bitwise negation. This takes the value given and switches all the binary 1s to 0s and 0s to 1s. This is often used to create ones' complement (or "~" in C or C++) and two's complement (just simplified to "-" or the negative sign, as this is equivalent to taking the arithmetic negation of the number).

To get the absolute (positive equivalent) value of a given integer the following would work as the "-" changes it from negative to positive (it is negative because "x < 0" yields true)

unsigned int abs(int x) { if (x < 0) return -x; else return x; }

To demonstrate logical negation:

unsigned int abs(int x) { if (!(x < 0)) return x; else return -x; }

Inverting the condition and reversing the outcomes produces code that is logically equivalent to the original code, i.e. will have identical results for any input (depending on the compiler used, the actual instructions performed by the computer may differ).

In C (and some other languages descended from C), double negation (!!x) is used as an idiom to convert x to a canonical Boolean, ie. an integer with a value of either 0 or 1 and no other. Although any integer other than 0 is logically true in C and 1 is not special in this regard, it is sometimes important to ensure that a canonical value is used, for example for printing or if the number is subsequently used for arithmetic operations.

Usage in colloquial language

The convention of using ! to signify negation occasionally surfaces in colloquial language, as computer-related slang for not. For example, the phrase !clue is used as a synonym for "no-clue" or "clueless".

Another example is the term !vote, which is used by Wikipedia editors to refer to statements of opinion on Wikipedia's discussion pages. The term emphasizes that Wikipedia makes decisions through "consensus-building" rather than majority rule.

06Kripke semantics

In Kripke semantics where the semantic values of formulae are sets of possible worlds, negation can be taken to mean set-theoretic complementation (see also possible world semantics for more).

Watch videos about NegationExplainers and documentaries on YouTube (opens in a new tab)

Sources and credits

This article is adapted from the Wikipedia article Negation, written by its contributors and licensed under CC BY-SA 4.0. Fathomly has changed the layout, removed citation markers, navigation and maintenance notices, and adjusted punctuation. This adapted version is shared under the same license. For references, see the original article.

Images, from Wikimedia Commons:

  • Venn10.svg by Watchduck You can name the author as "T. Piesk", "Tilman Piesk" or "Watchduck"., Public domain

Fathomly is not affiliated with or endorsed by the Wikimedia Foundation. Spotted a problem? Tell us.