| NOT | |
|---|---|
| 定義 | |
| 真理値表 | |
| 論理ゲート | |
| 正規形 | |
| 選言的 | |
| 連言的 | |
| ジェガルキン多項式 | |
| ポスト格子 | |
| 0保存 | いいえ |
| 1保存 | いいえ |
| 単調 | いいえ |
| アフィン | はい |
| 自己双対 | はい |
| 論理接続詞 | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||
| 関連概念 | ||||||||||||||||||||||||||
| アプリケーション | ||||||||||||||||||||||||||
論理学において、否定(論理否定または論理補語とも呼ばれる)とは、命題を別の命題「not 」に変換する演算であり、、[ 1 ]または[ 2 ]と表記される。これは、 が偽の場合には真、 が真の場合には偽であると直感的に解釈される。[ 3 ] [ 4 ]例えば、が「犬は走る」ならば、「not 」は「犬は走らない」となる。否定の被演算子は、否定被演算子または否定項と呼ばれる。[ 5 ]
否定は単項論理接続詞である。さらに、命題だけでなく、概念、真理値、あるいはより一般的には意味値にも適用できる。古典論理では、否定は通常、真を偽に(あるいはその逆)する真理関数と同一視される。直観主義論理では、ブラウワー=ハイティング=コルモゴロフ解釈によれば、命題の否定とは、その証明が反証となる命題のことである。
古典的な否定は、一つの論理値(通常は命題の値)に対する演算であり、そのオペランドが偽の場合には真を、真の場合には偽を生成します。つまり、文が真であれば、(「ノットP」と発音します)は偽になります。逆に、文が 真であれば、(「ノットP」と発音します)は偽になります。
の真理値表は次のとおりです。
| 真 | 偽 |
| 偽 | 真 |
否定は他の論理演算を用いて定義することができます。例えば、 は(は論理的帰結、は絶対的な偽)と定義できます。逆に、任意の命題Q(は論理積)についてを と定義することもできます。ここでの考え方は、あらゆる矛盾は偽であるというものです。これらの考え方は古典論理と直観主義論理の両方で有効ですが、矛盾が必ずしも偽とは限らない矛盾論理では有効ではありません。さらに例として、否定はNANDを用いて定義することも、NORを用いて定義することもできます。
代数的には、古典的否定はブール代数における補集合に対応し、直観主義的否定はハイティング代数における擬似補集合に対応する。これらの代数は古典論理と直観主義論理に意味論を提供する。
命題pの否定は、議論の文脈や応用分野によって異なる方法で表記されます。次の表は、これらのバリエーションのいくつかを示しています
| 表記 | プレーンテキスト | 発声 |
|---|---|---|
| ¬p、7p [ 6 ] | pではない | |
| ~p | pではない | |
| -p | pではない | |
| En p | ||
| p' |
| |
| p |
| |
| !p |
|
表記はポーランド語表記です。
集合論では、は「 の集合に含まれない」ことを示すためにも使用されます。は、 AのメンバーではないUのすべてのメンバーの集合です。
どのように表記または記号化されるかに関係なく、否定は「 Pではない」、「Pではない」、または通常はもっと簡単に「Pではない」と読むことができます。
必要な括弧の数を減らす方法として、優先順位規則を導入することができます。¬は∧よりも、∧は∨よりも、∨は→よりも優先順位が高くなります。例えば、はの略です
以下は論理演算子のよく使われる優先順位を示した表です。[ 7 ]
| 演算子 | 優先順位 |
|---|---|
| 1 | |
| 2 | |
| 3 | |
| 4 | |
| 5 |
古典論理体系において、二重否定、すなわち命題の否定の否定は、論理的に と同値である。記号的に表現すると、となる。直観主義論理においては、命題は二重否定を含意するが、その逆は成り立たない。これが古典否定と直観主義否定の重要な違いの一つである。代数的には、古典否定は周期2の反転と呼ばれる。
しかし、直観主義論理では、より弱い同値性は成立します。これは、直観主義論理では、はの省略形に過ぎず 、 も成り立つためです。この最後の含意を三重否定と組み合わせると、が成り立ちます。
その結果、命題文の場合、その二重否定が直観的に証明可能であるならば、その文は古典的に証明可能である。この結果はグリベンコの定理として知られている。
ド・モルガンの法則は、 否定を論理和と論理積に分配する方法を提供します
を論理排他的論理和演算とします。ブール代数において、線形関数とは次のような関数です
が存在する場合、 すべての に対して が成り立ちます。
これを別の言い方で表現すると、各変数は常に演算の真理値に変化をもたらすか、あるいは全く変化をもたらさないかのどちらかです。否定は線形論理演算子です。
ブール代数において、自己双対関数とは次のような関数です
すべての について 。否定は自己双対論理演算子です。
一階述語論理には2つの量化子があります。1つは全称量化子(「すべてに対して」という意味)で、もう1つは存在量化子(「存在する」という意味)です。一方の量化子の否定は、もう一方の量化子(および)です。例えば、述語Pが「xは死ぬ」であり、xの定義域がすべての人間の集合である場合、は「すべての人間の中で人xは死ぬ」または「すべての人間は死ぬ」という意味になります。その否定はであり、「すべての人間の中で死なない人xが存在する」または「永遠に生きる人が存在する」という 意味になります
否定の規則を定式化する方法は複数存在する。自然演繹的な設定において古典的な否定を定式化する一般的な方法の一つは、否定導入( の導出からとの両方を推論する。この規則は背理帰納 とも呼ばれる)、否定消去( と から を推論する。この規則は偽帰納法とも呼ばれる)、および二重否定消去( を推論する から)を推論の基本規則として採用することである。直観主義的否定の規則も同様の方法で得ることができるが、二重否定消去は除外する。
否定導入は、から不合理な結論を導き出せる場合、その結論は真ではない(つまり、(古典的には)偽、直観的には反駁可能など)ことを述べます。否定消去は、不合理から何でも導かれることを述べます。否定消去は、原始的な不合理記号 を用いて定式化されることもあります。この場合、規則は から、 は不合理に続くと述べます。二重否定消去と組み合わせることで、不合理から何でも導かれるという、当初定式化された規則を推論することができます。
典型的には、の直観主義的否定はと定義されます。この場合、否定の導入と消去は、含意の導入(条件付き証明)と消去(可能性)の特殊なケースに過ぎません。この場合、ex falso quodlibet という基本規則も追加する必要があります。
数学と同様に、否定はコンピュータ サイエンスでも論理的な記述を構築するために使用されます。
if ( ! ( r == t )) { /*...rがtと等しくない場合に実行されるステートメント...*/ }感嘆符" " は、 B、C、および C 風の構文を持つ言語 ( C++、Java、JavaScript、Perl、PHP!など)において論理 NOT を表します。 " " は、 ALGOL 60、BASIC、および ALGOL または BASIC 風の構文を持つ言語 ( Pascal、Ada、Eiffelなど)で使用される演算子です。一部の言語 (C++、 Perl など) では、否定を表す演算子が複数用意されています。PL/IやRatforなど、いくつかの言語では、否定を表すためにを使用します。最近の言語のほとんどでは、上記のステートメントを からに短縮することができ、これにより、コンパイラ/インタープリタが最適化できない場合でも、プログラムが高速化することがあります。 NOT¬if (!(r == t))if (r != t)
コンピュータサイエンスでは、ビット反転という処理も存在します。これは、与えられた値のうち、すべての2進数の1を0に、0を1に置き換える処理です。これは、1の補数~( CまたはC++では「 」)や2の補数(数値の算術的な反転と同じなので、 「 -」または負の符号に簡略化されます)を作成する際によく使用されます。
与えられた整数の絶対値(正の等価値)を取得するには、次のようにします。「-」は負から正に変換します(「x < 0」は真を返すため、負です)。
符号なし整数abs ( int x ) { if ( x < 0 ) return - x ; else return x ; }論理否定を示すには:
unsigned int abs ( int x ) { if ( ! ( x < 0 )) return x ; else return - x ; }条件を反転し、結果を逆にすると、元のコードと論理的に同等のコードが生成されます。つまり、どの入力に対しても同じ結果が得られます (使用するコンパイラによっては、コンピューターによって実行される実際の命令が異なる場合があります)。
C言語(およびC言語から派生した他の言語)では、二重否定( )は、標準的なブール値、つまり0または1のいずれかの値を持つ整数に変換するための慣用句!!xとして用いられます。C言語では0以外の整数は論理的に真であり、1はこの点で特別な意味を持ちませんが、例えば印刷する場合や、数値をその後算術演算に使用する場合など、標準的な値が使用されるようにすることが重要な場合があります。[ 8 ]x
!否定を表すために「not」を使用する慣習は、口語表現にも時折見られる。例えば、このフレーズは「no-clue」や「clueless」の同義語として用いられる。[ 9 ] [ 10 ]!clue
!voteもう一つの例は、 「投票ではない」という意味の表現です。 [ 11 ]この文脈において、感嘆符はWikipediaでは「多数決」を否定しながら意見を調査するために使用され、「それぞれの議論の強さによって適切な方向が決定される合意形成のための議論を行う」ことを目的としています。[ 11 ]
式の意味値が可能世界の集合であるクリプキ意味論では、否定は集合論的相補性を意味すると解釈できます(詳細は 可能世界意味論も参照)。