Join Nostr
2026-01-03 14:30:21 UTC

Mark Dominus on Nostr: Why are there two notations for logical negation? ∼ was originally a stylized ...

Why are there two notations for logical negation?

∼ was originally a stylized letter "N" for "not".

¬ is a vestigial version of the notation of Gttlob Frege's “Begriffsschrift”. In that notation, proofs were represented as formulas connected with lines, showing implications. To negate a formula, Frege decorated its line with a little hanging tick mark. Begriffsschrift wasn't successful, but some of its notation lingers.

https://en.wikipedia.org/wiki/Begriffsschrift

----- Others

Sometimes a minus sign was used, to analogize logical quantities to numeric ones: Logical negation is supposedly like arithmetic negation. I think this was originally due to Boole. But it doesn't work well. If you want 0 to be false and ` to be true, then you have to accept -X as an abbreviation for 1-X. If you want 0 to be false and nonzero to be true, it doesn't work at all, since then ‑false = false and ‑true=true. If you make true 1 and false ‑1, it works, but then logical and is no longer multiplication. Again, so elegant! But wrong.

Sometimes a vinculum (overbar) is used to negate a formula. This works nicely for short formulas such as atoms, but becomes unwieldy, as vinculums usually do.

Programming languages often use `!`. I'm not sure which was first to do this. C, perhaps? I think the idea was that the opposite of == is !=, to suggest the slash in ≠, and then if you omit the = part you are left with the ! to mean negation.

The Algol 60 report uses the symbol ¬, but in actual code had `NOT`. Fortran, of course, used `.NOT.`.The dots tell you that it is an operator rather than a variable named NOT. Reserved keywords had not yet been invented.