# Not

(Redirected from Logical negation)
 ~

Not (~) is a monadic scalar function that returns the logical negation of a Boolean argument—that is, 0 if the argument is 1 and 1 if it is 0. In some languages, such as J, it is extended so that Not x is equivalent to 1-x while in others, such as K, it is extended so that Not x is equivalent to 0=x.

## Examples

      ~ 0 1 1 0 1
1 0 0 1 0


Attempting to negate a non-Boolean argument usually results in a DOMAIN ERROR. In some languages it may instead subtract the argument from one.

      ~ 0 0.5 1
DOMAIN ERROR
~0 0.5 1
∧


## Properties

Not is the only Boolean function of a single argument which depends on that argument (it is not constant) and is not trivial (the same as Identity). Not is its own Inverse.

## History

A Programming Language negates arrays using an overbar symbol like ${\overline {p}}$ , matching a convention sometimes used in mathematics. In APL\360 the current symbol ~ was chosen, also due to its use in mathematics. Mathematical usage has arguably diverged from APL in this respect, as the negation of a variable $p$ is now more often written $\neg p$ when a prefix operator is desired.

The arithmetic extension ~x $\Leftrightarrow$ 1-x was introduced to the array langauge family by J. For arguments in the interval $[0,1]$ this extension may be seen as a probabilistic interpretation of negation.

## Extensions

Extension Languages
None APL\360, APL2, APLX, SHARP APL, Dyalog APL, GNU APL, ngn/apl, dzaima/APL
1-⍵ J, BQN, Extended Dyalog APL
0=⍵ K