Inlogic,negation, also called thelogical not orlogical complement, is anoperation that takes aproposition to another proposition "not", written,,[1] or.[citation needed] It is interpreted intuitively as being true when is false, and false when is true.[2][3] For example, if is "The dog runs", then "not" is "The dog does not run". An operand of a negation is called anegand ornegatum.[4]
Classical negation is anoperation on onelogical value, typically the value of aproposition, that produces a value oftrue when its operand is false, and a value offalse when its operand is true. Thus if statement is true, then (pronounced "not P") would then be false; and conversely, if is true, then would be false.
Negation can be defined in terms of other logical operations. For example, can be defined as (where islogical consequence and isabsolute falsehood). Conversely, one can define as for any propositionQ (where islogical conjunction). The idea here is that anycontradiction is false, and while these ideas work in both classical and intuitionistic logic, they do not work inparaconsistent 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 tocomplementation in aBoolean algebra, and intuitionistic negation to pseudocomplementation in aHeyting algebra. These algebras provide asemantics for classical and intuitionistic logic.
The negation of a propositionp is notated in different ways, in various contexts of discussion and fields of application. The following table documents some of these variants:
As a way of reducing the number of necessary parentheses, one may introduceprecedence rules: ¬ has higher precedence than ∧, ∧ higher than ∨, and ∨ higher than →. So for example, is short for
Here is a table that shows a commonly used precedence of logical operators.[6]
Within a system ofclassical logic, double negation, that is, the negation of the negation of a proposition, islogically equivalent to. Expressed in symbolic terms,. Inintuitionistic 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 aninvolution of period two.
However, inintuitionistic logic, the weaker equivalence does hold. This is because in intuitionistic logic, is just a shorthand for, and we also have. Composing that last implication with triple negation implies that .
As a result, in the propositional case, a sentence is classically provable if its double negation is intuitionistically provable. This result is known asGlivenko's theorem.
Let denote the logicalxor operation. InBoolean algebra, a linear function is one such that:
If there exists,,for all.
Another way to express this is that each variable always makes a difference in thetruth-value of the operation, or it never makes a difference. Negation is a linear logical operator.
Infirst-order logic, there are two quantifiers, one is the universal quantifier (means "for all") and the other is the existential quantifier (means "there exists"). The negation of one quantifier is the other quantifier ( and). For example, with the predicateP as "x is mortal" and the domain of x as the collection of all humans, means "a person x in all humans is mortal" or "all humans are mortal". The negation of it is, meaning "there exists a personx in all humans who is not mortal", or "there exists someone who lives forever".
There are a number of equivalent ways to formulate rules for negation. One usual way to formulate classical negation in anatural deduction setting is to take as primitive rules of inferencenegation introduction (from a derivation of to both and, infer; this rule also being calledreductio ad absurdum),negation elimination (from and infer; this rule also being calledex falso quodlibet), anddouble negation elimination (from infer). 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 then must not be the case (i.e. 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. In this case the rule says that from and 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 of is defined as. 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 ruleex falso quodlibet.
As in mathematics, negation is used incomputer science to construct logical statements.
if(!(r==t)){/*...statements executed when r does NOT equal t...*/}
Theexclamation mark "!" signifies logical NOT inB,C, and languages with a C-inspired syntax such asC++,Java,JavaScript,Perl, andPHP. "NOT" is the operator used inALGOL 60,BASIC, and languages with an ALGOL- or BASIC-inspired syntax such asPascal,Ada, andEiffel. Some languages (C++, Perl, etc.) provide more than one operator for negation. A few languages likePL/I andRatfor use¬ for negation. Most modern languages allow the above statement to be shortened fromif (!(r == t)) toif (r != t), which allows sometimes, when the compiler/interpreter is not able to optimize it, faster programs.
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)
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 anidiom to convertx 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.[7]
The convention of using! to signify negation occasionally surfaces incolloquial language, as computer-relatedslang fornot. For example, the phrase!clue is used as a synonym for "no-clue" or "clueless".[8][9]
Another example is the expression!vote which means "not a vote".[10] In this context, the exclamation mark is used atWikipedia to survey opinions while negating "majority rule", in order "to have a consensus-building discussion, where the proper course is determined by the strength of the respective arguments."[10]
^Virtually all Turkish high school math textbooks use p' for negation due to the books handed out by the Ministry of National Education representing it as p'.
^Weisstein, Eric W."Negation".mathworld.wolfram.com. Retrieved2 September 2020.
^Beall, Jeffrey C. (2010).Logic: the basics (1. publ ed.). London: Routledge. p. 57.ISBN978-0-203-85155-5.
^Used as makeshift in early typewriter publications, e.g.Richard E. Ladner (January 1975). "The circuit value problem is log space complete for P".ACM SIGACT News.7 (101):18–20.doi:10.1145/990518.990519.