論理否定(一般に「not」)は、命題の真理値を反転させる基本的な単項論理演算子です。文Pが真ならその否定¬Pは偽となり、Pが偽なら¬Pは真になります。記法は形式体系によっていくつかあり、たとえば¬P、~P、!P、または「not」と書かれます。¬は形式論理で標準的ですが、多くのプログラミング言語では!やキーワードnotが使われます。
基本的な性質と真理表
否定は1つの対象に作用して反対の真理値を返すため、単項結合子と呼ばれます。古典的な2値論理では、否定の働きは次の真理表で最も簡潔に表せます。
- P = 真 → ¬P = 偽
- P = 偽 → ¬P = 真
真理値を反転させるだけなので、古典論理では否定は反転を2回行うと元に戻る性質をもちます。つまり ¬¬P は P と同値です。この性質は、多くの代数的手法や証明技法の基礎になります。
論理法則と注目点
否定に関係する古典的な原理として、無矛盾律と排中律があります。無矛盾律は、P と ¬P が同時に真であることはないと述べます(P ∧ ¬P は常に偽)。排中律は、P か ¬P の少なくとも一方は真でなければならないと主張します(P ∨ ¬P は常に真)。ド・モルガンの法則は、否定が連言と選言にどうかかるかを示し、¬(P ∧ Q) は (¬P ∨ ¬Q) と同値、¬(P ∨ Q) は (¬P ∧ ¬Q) と同値です。
論理体系ごとの差異
形式体系によっては否定の扱いが同じではありません。たとえば直観主義論理では、二重否定(¬¬P)から一般に P を導くことはできません。証明は構成的であり、排中律の一部の用法を認めません。様相論理や整合性公理を持つ非矛盾論理でも、否定と他の結合子の関わり方が調整され、矛盾や含意の振る舞いが変わります。こうした違いは、数学基礎論や哲学的論理で重要です。
用途と例
否定はさまざまな分野で広く使われます。数学や形式証明では、主張が成り立たないことや存在しないことを表すのに用いられます。プログラミングでは、論理否定が分岐制御(if not 条件)に使われ、ブール代数やビット演算にも現れます。ただし、ビット反転(しばしば ~)は、ブール値と整数のビット列を分けて扱う言語では、論理否定とは別の演算です。デジタル電子回路では、NOTゲートが2進信号を反転し、より複雑な回路の基礎になります。
実用上の注意
複雑な式を作るとき、否定はしばしば他の演算子と組み合わせて含意、同値、制約を表します。意図しない意味を避けるには、演算子の優先順位、かっこ、そして形式言語やプログラミング環境ごとの記法に注意することが重要です。自然言語の簡単な例も役立ちます。P を「雨が降っている」とすると、¬P は「雨が降っていない」です。また ¬(P ∨ Q) は「P でも Q でもない」と読め、ド・モルガンの変形を直接示しています。