Negation

In logic, negation, also called the logical complement, is an operation that takes a proposition formula_1 to another proposition "not formula_1", written formula_3, formula_4 or formula_5. It is interpreted intuitively as being true when formula_1 is false, and false when formula_1 is true. Negation is thus a unary (single-argument) logical connective. It may be applied as an operation on notions, propositions, 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 formula_1 is the proposition whose proofs are the refutations of formula_1.
Definition.
No agreement exists as to the possibility of defining negation, as to its logical status, function and meaning, as to its field of applicability, and as to the interpretation of the negative judgment (F.H. Heinemann 1944).
"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 formula_1 is true, then formula_3 (pronounced "not P") would then be false; and conversely, if formula_3 is false, then formula_1 would be true.
The truth table of formula_3 is as follows:
Negation can be defined in terms of other logical operations. For example, formula_3 can be defined as formula_16 (where formula_17 is logical consequence and formula_18 is absolute falsehood). Conversely, one can define formula_18 as formula_20 for any proposition formula_21 (where formula_22 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. In classical logic, we also get a further identity, formula_23 can be defined as formula_24, where formula_25 is logical disjunction.
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, respectively.
Notation.
The negation of a proposition formula_26 is notated in different ways, in various contexts of discussion and fields of application. The following table documents some of these variants:
The notation N"p" is Łukasiewicz notation.
In set theory, formula_27 is also used to indicate 'not in the set of': formula_28 is the set of all members of formula_29 that are not members of formula_30.
Regardless how it is notated or symbolized, the negation formula_3 can be read as "it is not the case that formula_1", "not that formula_1", or usually more simply as "not formula_1".
Properties.
Double negation.
Within a system of classical logic, double negation, that is, the negation of the negation of a proposition formula_1, is logically equivalent to formula_1. Expressed in symbolic terms, formula_37. 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 equivalence formula_38 does not hold. Moreover, 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:
Linearity.
Let formula_41 denote the logical xor operation. In Boolean algebra, a linear function is one such that:
If there exists formula_42,
formula_43,
for all formula_44.
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:
formula_45 for all
formula_46.
Negation is a self dual logical operator.
Negations of quantifiers.
In first-order logic, there are two quantifiers, one is the universal quantifier formula_47 (means "for all") and the other is the existential quantifier formula_48 (means "there exists"). The negation of one quantifier is the other quantifier (formula_49 and formula_50). For example, with the predicate "P" as ""x" is mortal" and the domain of x as the collection of all humans, formula_51 means "a person x in all humans is mortal" or "all humans are mortal". The negation of it is formula_49, meaning "there exists a person "x" in all humans who is not mortal", or "there exists someone who lives forever".
Rules 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 formula_1 to both formula_21 and formula_55, infer formula_3; this rule also being called "reductio ad absurdum"), "negation elimination" (from formula_1 and formula_3 infer formula_21; this rule also being called "ex falso quodlibet"), and "double negation elimination" (from formula_60 infer formula_1). 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 formula_1 then formula_1 must not be the case (i.e. formula_1 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 formula_18. In this case the rule says that from formula_1 and formula_3 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 formula_3 of formula_1 is defined as formula_16. 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".
Programming 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 "codice_1" signifies logical NOT in B, C, and languages with a C-inspired syntax such as C++, Java, JavaScript, Perl, and PHP. "codice_2" is the operator used in ALGOL 60, BASIC, and languages with an ALGOL- or BASIC-inspired syntax such as Pascal, Ada, Eiffel and Seed7. Some languages (C++, Perl, etc.) provide more than one operator for negation. A few languages like PL/I and Ratfor use codice_3 for negation. Some modern computers and operating systems will display codice_3 as codice_1 on files encoded in ASCII. Most modern languages allow the above statement to be shortened from codice_6 to codice_7, 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. See bitwise operation. This is often used to create ones' complement or "codice_8" in C or C++ and two's complement (just simplified to "codice_9" or the negative sign since this is equivalent to taking the arithmetic negative value of the number) as it basically creates the opposite (negative value equivalent) or mathematical complement of the value (where both values are added together they create a whole).
To get the absolute (positive equivalent) value of a given integer the following would work as the "codice_9" changes it from negative to positive (it is negative because "codice_11" 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 (note that depending on the compiler used, the actual instructions performed by the computer may differ).
This convention occasionally surfaces in ordinary written speech, as computer-related slang for "not". For example, the phrase codice_12 means "not voting". Another example is the phrase codice_13 which is used as a synonym for "no-clue" or "clueless".
Kripke 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).