# Negation

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).^{[3]}

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.

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:

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.

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

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.

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

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 "`~`

" in C or C++ and two's complement (just simplified to "`-`

" 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 "`-`

" 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 (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 `!voting`

means "not voting". Another example is the phrase `!clue`

which is used as a synonym for "no-clue" or "clueless".^{[4]}^{[5]}

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