Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Negation
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{short description|Logical operation}} {{for-multi|negation in linguistics|Affirmation and negation|other uses|Negation (disambiguation)}} {{Use dmy dates|date=March 2020}} {{Infobox logical connective | title = Negation | other titles = NOT | wikifunction = Z10216 | Venn diagram = Venn10.svg | definition = <math>\lnot{x}</math> | truth table = <math>(01)</math> | logic gate = NOT_ANSI.svg | DNF = <math>\lnot{x}</math> | CNF = <math>\lnot{x}</math> | Zhegalkin = <math>1 \oplus x</math> | 0-preserving = no | 1-preserving = no | monotone = no | affine = yes | self-dual = yes }} {{Logical connectives sidebar}} In [[logic]], '''negation''', also called the '''logical not''' or '''logical complement''', is an [[operation (mathematics)|operation]] that takes a [[Proposition (mathematics)|proposition]] <math>P</math> to another proposition "not <math>P</math>", written <math>\neg P</math>, <math>\mathord{\sim} P</math>, <math>P^\prime</math><ref>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'.</ref> or <math>\overline{P}</math>.{{cn|reason=Provide a source for each of the notations, including P'.|date=December 2024}} It is interpreted intuitively as being true when <math>P</math> is false, and false when <math>P</math> is true.<ref>{{Cite web|last=Weisstein|first=Eric W.|title=Negation|url=https://mathworld.wolfram.com/Negation.html|access-date=2020-09-02|website=mathworld.wolfram.com|language=en}}</ref><ref>{{Cite web|title=Logic and Mathematical Statements - Worked Examples|url=https://www.math.toronto.edu/preparing-for-calculus/3_logic/we_3_negation.html|access-date=2020-09-02|website=www.math.toronto.edu}}</ref> For example, if <math>P</math> is "Spot runs", then "not <math>P</math>" is "Spot does not run". An operand of a negation is called a '''''negand''''' or '''''negatum'''''.<ref name=":212">{{Cite book |last=Beall |first=Jeffrey C. |title=Logic: the basics |date=2010 |publisher=Routledge |isbn=978-0-203-85155-5 |edition=1. publ |location=London |pages=57 |language=en}}</ref> Negation is a [[unary operation|unary]] [[logical connective]]. It may furthermore be applied not only to propositions, but also to [[notion (philosophy)|notions]], [[truth value]]s, or [[interpretation (logic)|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 <math>P</math> is the proposition whose proofs are the refutations of <math>P</math>. ==Definition== ''Classical negation'' is an [[logical operation|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 <math>P</math> is true, then <math>\neg P</math> (pronounced "not P") would then be false; and conversely, if <math>\neg P</math> is true, then <math>P</math> would be false. The [[truth table]] of <math>\neg P</math> is as follows: :{| class="wikitable" style="text-align:center; background-color: #ddffdd;" |- bgcolor="#ddeeff" | <math> P </math> || <math> \neg P </math> |- | {{yes2|True}} || {{no2|False}} |- | {{no2|False}} || {{yes2|True}} |} Negation can be defined in terms of other logical operations. For example, <math>\neg P</math> can be defined as <math>P \rightarrow \bot</math> (where <math>\rightarrow</math> is [[logical consequence]] and <math>\bot</math> is [[False (logic)|absolute falsehood]]). Conversely, one can define <math>\bot</math> as <math>Q \land \neg Q</math> for any proposition {{mvar|Q}} (where <math>\land</math> 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. {{anchor|Algebra}} Algebraically, classical negation corresponds to [[Complement (order theory)|complementation]] in a [[Boolean algebra (structure)|Boolean algebra]], and intuitionistic negation to pseudocomplementation in a [[Heyting algebra]]. These algebras provide a [[algebraic semantics (mathematical logic)|semantics]] for classical and intuitionistic logic. ==Notation== The negation of a proposition {{mvar|p}} is notated in different ways, in various contexts of discussion and fields of application. The following table documents some of these variants: {| class="wikitable" |- style="background:paleturquoise" ! Notation ! Plain text ! Vocalization |- | style="text-align:center" | <math>\neg p</math> | style="text-align:center" | {{mono|¬p}} , {{mono|7p}}<ref>Used as makeshift in early typewriter publications, e.g. {{cite journal | doi=10.1145/990518.990519 | author=Richard E. Ladner | title=The circuit value problem is log space complete for P | journal=ACM SIGACT News | volume=7 | number=101 | pages=18–20 | date=Jan 1975 }}</ref> | Not ''p'' |- | style="text-align:center" | <math>\mathord{\sim} p</math> | style="text-align:center" | {{mono|~p}} | Not ''p'' |- | style="text-align:center" | <math>-p</math> | style="text-align:center" | {{mono|-p}} | Not ''p'' |- | style="text-align:center" | <math>Np</math> | | En ''p'' |- | style="text-align:center" | <math>p'</math> | style="text-align:center" | {{mono|p'}} | {{unbulleted list | ''p'' prime, | ''p'' complement }} |- | style="text-align:center" | <math>\overline{p}</math> | style="text-align:center" | {{mono| ̅p}} | {{unbulleted list | ''p'' bar, | Bar ''p'' }} |- | style="text-align:center" | <math>!p</math> | style="text-align:center" | {{mono|!p}} | {{unbulleted list | Bang ''p'' | Not ''p'' }} |- |} The notation <math>Np</math> is [[Polish notation#Polish notation for logic|Polish notation]]. In [[Set theory#Basic concepts and notation|set theory]], <math>\setminus</math> is also used to indicate 'not in the set of': <math>U \setminus A</math> is the set of all members of {{mvar|U}} that are not members of {{mvar|A}}. Regardless how it is notated or [[List of logic symbols|symbolized]], the negation <math>\neg P</math> can be read as "it is not the case that {{mvar|P}}", "not that {{mvar|P}}", or usually more simply as "not {{mvar|P}}". ===Precedence=== {{See also|Logical connective#Order of precedence}} As a way of reducing the number of necessary parentheses, one may introduce [[precedence rule]]s: ¬ has higher precedence than ∧, ∧ higher than ∨, and ∨ higher than →. So for example, <math>P \vee Q \wedge{\neg R} \rightarrow S</math> is short for <math>(P \vee (Q \wedge (\neg R))) \rightarrow S.</math> Here is a table that shows a commonly used precedence of logical operators.<ref>{{citation|title=Discrete Mathematics Using a Computer|first1=John|last1=O'Donnell|first2=Cordelia|last2=Hall|first3=Rex|last3=Page| publisher=Springer| year=2007| isbn=9781846285981|page=120|url=https://books.google.com/books?id=KKxyQQWQam4C&pg=PA120}}.</ref> {| class="wikitable" style="text-align: center;" !Operator !!Precedence |- | <math>\neg</math> || 1 |- | <math>\land</math> || 2 |- | <math>\lor</math> || 3 |- | <math>\to</math> || 4 |- | <math>\leftrightarrow</math> || 5 |} ==Properties== ===Double negation=== Within a system of [[classical logic]], double negation, that is, the negation of the negation of a proposition <math>P</math>, is [[logically equivalent]] to <math>P</math>. Expressed in symbolic terms, <math>\neg \neg P \equiv P</math>. 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 (mathematics)|involution]] of period two. However, in [[intuitionistic logic]], the weaker equivalence <math>\neg \neg \neg P \equiv \neg P</math> does hold. This is because in intuitionistic logic, <math>\neg P</math> is just a shorthand for <math>P \rightarrow \bot</math>, and we also have <math>P \rightarrow \neg \neg P </math>. Composing that last implication with triple negation <math>\neg \neg P \rightarrow \bot </math> implies that <math>P \rightarrow \bot</math> . As a result, in the propositional case, a sentence is classically provable if its double negation is intuitionistically provable. This result is known as [[Double-negation translation|Glivenko's theorem]]. ===Distributivity=== [[De Morgan's laws]] provide a way of [[Distributive property|distributing]] negation over [[disjunction]] and [[logical conjunction|conjunction]]: :<math>\neg(P \lor Q) \equiv (\neg P \land \neg Q)</math>, and :<math>\neg(P \land Q) \equiv (\neg P \lor \neg Q)</math>. ===Linearity=== Let <math>\oplus</math> denote the logical [[xor]] operation. In [[Boolean algebra]], a linear function is one such that: If there exists <math>a_0, a_1, \dots, a_n \in \{0,1\}</math>, <math>f(b_1, b_2, \dots, b_n) = a_0 \oplus (a_1 \land b_1) \oplus \dots \oplus (a_n \land b_n)</math>, for all <math>b_1, b_2, \dots, b_n \in \{0,1\}</math>. 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: <math>f(a_1, \dots, a_n) = \neg f(\neg a_1, \dots, \neg a_n)</math> for all <math>a_1, \dots, a_n \in \{0,1\}</math>. Negation is a self dual logical operator. === Negations of quantifiers === In [[first-order logic]], there are two quantifiers, one is the universal quantifier <math>\forall</math> (means "for all") and the other is the existential quantifier <math>\exists</math> (means "there exists"). The negation of one quantifier is the other quantifier (<math>\neg \forall xP(x)\equiv\exists x\neg P(x)</math> and <math>\neg \exists xP(x)\equiv\forall x\neg P(x)</math>). For example, with the predicate ''P'' as "''x'' is mortal" and the domain of x as the collection of all humans, <math>\forall xP(x)</math> means "a person x in all humans is mortal" or "all humans are mortal". The negation of it is <math>\neg \forall xP(x)\equiv\exists x\neg P(x)</math>, meaning "there exists a person ''x'' in all humans who is not mortal", or "there exists someone who lives forever". ==Rules of inference== {{See also|Double negation}} 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 <math>P</math> to both <math>Q</math> and <math>\neg Q</math>, infer <math>\neg P</math>; this rule also being called ''[[reductio ad absurdum]]''), ''negation elimination'' (from <math>P</math> and <math>\neg P</math> infer <math>Q</math>; this rule also being called ''ex falso quodlibet''), and ''double negation elimination'' (from <math>\neg \neg P</math> infer <math>P</math>). 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 <math>P</math> then <math>P</math> must not be the case (i.e. <math>P</math> 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 <math>\bot</math>. In this case the rule says that from <math>P</math> and <math>\neg P</math> 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 <math>\neg P</math> of <math>P</math> is defined as <math>P \rightarrow \bot</math>. 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== {{redirect|!vote|use of !votes in Wikipedia discussions|Wikipedia:Polling is not a substitute for discussion#Not-votes|selfref=yes}} As in mathematics, negation is used in [[computer science]] to construct logical statements. <syntaxhighlight lang="cpp"> if (!(r == t)) { /*...statements executed when r does NOT equal t...*/ } </syntaxhighlight> The [[exclamation mark]] "<code>!</code>" signifies logical NOT in [[B (programming language)|B]], [[C Programming Language|C]], and languages with a C-inspired syntax such as [[C++]], [[Java (programming language)|Java]], [[JavaScript]], [[Perl]], and [[PHP]]. "<code>NOT</code>" is the operator used in [[ALGOL 60]], [[BASIC]], and languages with an ALGOL- or BASIC-inspired syntax such as [[Pascal programming language|Pascal]], [[Ada programming language|Ada]], [[Eiffel (programming language)|Eiffel]] and [[Seed7]]. Some languages (C++, Perl, etc.) provide more than one operator for negation. A few languages like [[PL/I]] and [[Ratfor]] use <code>¬</code> for negation. Most modern languages allow the above statement to be shortened from <code>if (!(r == t))</code> to <code>if (r != t)</code>, 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 numeral system|binary]] 1s to 0s and 0s to 1s. This is often used to create [[signed number representations|ones' complement]] (or "<code>~</code>" in C or C++) and [[two's complement]] (just simplified to "<code>-</code>" or the [[negative sign]], as this is equivalent to taking the [[Negation (arithmetic)|arithmetic negation]] of the number). To get the absolute (positive equivalent) value of a given integer the following would work as the "<code>-</code>" changes it from negative to positive (it is negative because "<code>x < 0</code>" yields true) <syntaxhighlight lang="cpp"> unsigned int abs(int x) { if (x < 0) return -x; else return x; } </syntaxhighlight> To demonstrate logical negation: <syntaxhighlight lang="cpp"> unsigned int abs(int x) { if (!(x < 0)) return x; else return -x; } </syntaxhighlight> 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 (<code>!!x</code>) is used as an [[Programming idiom|idiom]] to convert <code>x</code> 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.<ref>{{cite web |last1=Egan |first1=David |title=Double Negation Operator Convert to Boolean in C |url=https://dev-notes.eu/2019/10/Double-Negation-Operator-Convert-to-Boolean-in-C/ |website=Dev Notes}}</ref> The convention of using <code>!</code> to signify negation occasionally surfaces in ordinary written speech, as computer-related [[slang]] for ''not''. For example, the phrase <code>!voting</code> means "[[not voting]]". Another example is the phrase <code>!clue</code> which is used as a synonym for "no-clue" or "clueless".<ref>[[Eric S. Raymond|Raymond, Eric]] and Steele, Guy. [https://books.google.com/books?id=g80P_4v4QbIC&pg=PA18&lpg=PA18 The New Hacker's Dictionary], p. 18 (MIT Press 1996).</ref><ref>Munat, Judith. [https://books.google.com/books?id=UOPXXYslemYC&pg=PA148&lpg=PA148 Lexical Creativity, Texts and Context], p. 148 (John Benjamins Publishing, 2007).</ref> ==Kripke semantics== In [[Kripke semantics]] where the semantic values of formulae are sets of [[possible world]]s, negation can be taken to mean [[set-theoretic complement]]ation{{citation needed|date=August 2012}} (see also [[possible world semantics]] for more). ==See also== {{Div col|colwidth=20em}} * [[Affirmation and negation]] (grammatical polarity) * [[Ampheck]] * [[Apophasis]] * [[Binary opposition]] * [[Bitwise NOT]] * [[Contraposition]] * [[Cyclic negation]] * [[Negation as failure]] * [[NOT gate]] * [[Plato's beard]] * [[Square of opposition]] {{Div col end}} ==References== {{reflist}} == Further reading == * [[Dov Gabbay|Gabbay, Dov]], and Wansing, Heinrich, eds., 1999. ''What is Negation?'', [[Kluwer]]. * [[Laurence R. Horn|Horn, L.]], 2001. ''A Natural History of Negation'', [[University of Chicago Press]]. * [[G. H. von Wright]], 1953–59, "On the Logic of Negation", ''Commentationes Physico-Mathematicae 22''. * Wansing, Heinrich, 2001, "Negation", in Goble, Lou, ed., ''The Blackwell Guide to Philosophical Logic'', [[Wiley-Blackwell|Blackwell]]. * {{cite journal | last1 = Tettamanti | first1 = Marco | last2 = Manenti | first2 = Rosa | last3 = Della Rosa | first3 = Pasquale A. | last4 = Falini | first4 = Andrea | last5 = Perani | first5 = Daniela | last6 = Cappa | first6 = Stefano F. | last7 = Moro | first7 = Andrea | year = 2008 | title = Negation in the brain: Modulating action representation | doi = 10.1016/j.neuroimage.2008.08.004 | journal = NeuroImage | volume = 43 | issue = 2| pages = 358–367 | pmid=18771737| s2cid = 17658822 }} ==External links== *{{cite SEP |url-id=negation |title=Negation |first=Laurence R. |last=Horn |first2=Heinrich |last2=Wansing}} * {{springer|title=Negation|id=p/n066170}} * [http://mathworld.wolfram.com/NOT.html NOT], on [[MathWorld]] ; [[Truth table|Tables of Truth]] of composite clauses * {{cite web|url= http://www.math.hawaii.edu/~ramsey/Logic/NotAnd.html|title= Table of truth for a NOT clause applied to an END sentence|archive-url= https://web.archive.org/web/20000301195359/http://www.math.hawaii.edu/~ramsey/Logic/NotAnd.html|archive-date= 1 March 2000|url-status= live}} * {{cite web|url= http://www.math.hawaii.edu/~ramsey/Logic/NotAnd.html|title= NOT clause of an END sentence|archive-url= https://web.archive.org/web/20000301195359/http://www.math.hawaii.edu/~ramsey/Logic/NotAnd.html|archive-date= 1 March 2000|url-status= live}} * {{cite web|url= http://www.math.hawaii.edu/~ramsey/Logic/NotOr.html|title= NOT clause of an OR sentence|archive-url= https://web.archive.org/web/20000117134708/http://www.math.hawaii.edu/~ramsey/Logic/NotOr.html|archive-date= 17 January 2000|url-status= live}} * {{cite web|url= http://www.math.hawaii.edu/~ramsey/Logic/NotIfThen.html|title= NOT clause of an IF...THEN period|archive-url= https://web.archive.org/web/20000301223435/http://www.math.hawaii.edu/~ramsey/Logic/NotIfThen.html/|archive-date= 1 March 2000|url-status= live}} {{Logical connectives}} {{Common logical symbols}} {{Formal semantics}} {{Mathematical logic}} {{Authority control}} [[Category:Semantics]] [[Category:Logical connectives]] [[Category:Unary operations]] [[Category:Articles with example C++ code]] [[Category:Formal semantics (natural language)]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Anchor
(
edit
)
Template:Authority control
(
edit
)
Template:Citation
(
edit
)
Template:Citation needed
(
edit
)
Template:Cite SEP
(
edit
)
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite web
(
edit
)
Template:Cn
(
edit
)
Template:Common logical symbols
(
edit
)
Template:Div col
(
edit
)
Template:Div col end
(
edit
)
Template:For-multi
(
edit
)
Template:Formal semantics
(
edit
)
Template:Infobox logical connective
(
edit
)
Template:Logical connectives
(
edit
)
Template:Logical connectives sidebar
(
edit
)
Template:Mathematical logic
(
edit
)
Template:Mono
(
edit
)
Template:Mvar
(
edit
)
Template:No2
(
edit
)
Template:Redirect
(
edit
)
Template:Reflist
(
edit
)
Template:See also
(
edit
)
Template:Short description
(
edit
)
Template:Springer
(
edit
)
Template:Unbulleted list
(
edit
)
Template:Use dmy dates
(
edit
)
Template:Yes2
(
edit
)