記号論理、命題論理入門:覚えるべき論理記号(否定、かつ、または、ならば、同値)とは

どうも、木村(@kimu3_slime)です。

今回は、記号論理、命題論理とは何か、そして覚えるべき論理記号(否定、かつ、または、ならば、同値)たちを紹介します。前提知識はいりません。

 



記号論理とは

論理学の目的は、いくつかの前提から結論を導く過程、すなわち推論(argument)が妥当なものかどうかを調べることです。その推論は、命題(proposition)と呼ばれる、真偽が定まる文によって構成されています。

記号論理学(symbolic logic)は、命題を単純なものに分解して記号化し、それらを論理的な接続詞(logical connective)で結びつけた命題を考え、その妥当性を明らかにしていきます。形式論理学(formal logic)とも。

例えば、命題を\(A,B\)と書くとき、「\(A\)ならば\(B\)かつ\(A\)が正しいならば、\(B\)は正しい」は妥当な推論です。これを「\((A \Rightarrow B) \land A  \vdash B\)」と書きます。

記号論理学は、19世紀の中頃の、ジョージ・ブール(George Boole)やゴットロープ・フレーゲ(Gottlob Frege)による研究に始まったと言われています。

ジョージ・ブール

ゴットロープ・フレーゲ

ブールは1854年に「思考の法則(The Laws of Thought)」、フレーゲは1879年に「概念記法(Begriffsschrift)」を著し、その考え方は今に引き継がれています。論理学や推論には、ある種の「数学的な規則」があるのではないか、という発見ですね。

 

記号論理は、近代的な論理(modern logic)とも呼ばれ、古典論理(アリストテレス的論理)と対比されます。日本語で「論理学」とだけ書いてある本や講義は、記号論理を扱っていることがほとんどです。

古典論理では、カテゴリー的命題と呼ばれる命題を考え、(カテゴリー的)三段論法が妥当かどうかを調べます。どちらかというと、日本語などの普通の言葉、自然言語(natural language)を対象にしています。

記号論理は、どちらかというと数学のような意味の明確な文、形式言語(formal language)を対象にしています。古典論理で行っていたような考え方を記号として分解し、形式的にその正しさを調べる体系です。確かに古典論理でも記号を使うのですが、記号論理における記号の扱い方は、単純で明確な規則であり、機械的で代数的なものです。

現時点では古典論理と記号論理の対比は、ピンと来ないかもしれませんが、記号論理学を知るにつれわかっていくでしょう。

 

記号論理学は、数学の基礎である集合論数学基礎論に応用されます。また、記号論理の一分野はブール論理学(Boolean logic)または二値論理学(binary logic, two-valued logic)と呼ばれ、コンピュータの基礎であり、デジタル回路、すなわち論理回路(logic circuit)の設計にも役立ちます。計算の原理の理論や、プログラミング言語のような形式言語の理論を生み出す源となった分野でもあります。

大学では、教養数学、または集合論の講義で、記号論理学を(それと明示せずとも)学ぶことになるのではないでしょうか。記号論理学は、確実なものの考え方の規則を与えてくれるもので、学問を志すすべての人が学んでおいて損はない教養だと思っています。

参考:論理学の入門ロードマップ:大学数学に必要な論理学とは

 

命題論理とは

さて記号論理学は、おおざっぱに言って、命題論理、述語論理という2つの分野に分けて学ばれます。述語論理は命題論理をベースにしたものなので、まずは命題論理を学びましょう。

命題論理(propositional logic)では、真偽の定まった文を題材とし、それを何らかの記号\(A,B\)で表します。その文を、命題 proposition または ステートメント statement)呼ぶことにしましょう。文(sentence)を対象にしているので、命題論理は文論理(sentential logic)とも呼ばれます。

例えば「みかんは黄色い」という命題を\(A\)で表すと、\(A\)は真です。すべての命題には、その真偽(True or False)が決まっていて、それを命題の真理値真偽値(truth value)、論理値(logical value)と呼ぶことにします。さきほどの定義の\(A\)ならば、\(A\)の真偽値はTです。

真偽値は真か偽かの2通りで、これは真偽、T,F、\(0,1\)、\(\top ,\bot\)といった記号で表されます。文献によって使う記号は違いますが、各命題には真偽値が定まっているという考え方が重要です。

 

ここで命題と呼んだものは、その内部に他の命題を含まない、いわば単純な命題(simple statement)です。単純な命題を組み合わせることで、より多くの命題、すなわち複合的な命題(compound proposition)を表せます。

例えば「みかんは緑色だ」という命題を\(B\)とすれば、「みかんは黄色か、または緑色だ」という命題は、\(A\)または\(B\)です。

「または」という接続詞は、\(A\)と\(B\)という2つの命題から、「\(A\)または\(B\)」という新しい命題を作り出しました。いくつかの命題を変形して新しい命題を生み出す接続詞を、論理的接続詞(logical connective)、文接続詞(sentential connective)と呼びます。

よく使う論理的接続詞には、論理記号(logic symbol)、論理演算子(logic operator)が割り当てられています。例えば「または」を表す記号は\(\lor\)で、「\(A\)または\(B\)」は\(A \lor B\)と表記されるわけです。このとき、\(A\)と\(B\)の真偽に応じて、\(A \lor B\)の真偽値も決まります。その対応を表にしたものが、真理値表、真偽値表(truth table)です。

このように命題論理では、あらゆる命題を記号化して扱います。単純な命題を論理的接続詞で組み合わせていくことで、より複雑な命題が表せるわけです。複合的な命題の真偽は、もとの命題の真偽値と論理的接続詞に応じた法則によって計算できます(命題計算 propositional calculus)。

論理記号や計算と言われてもまだピンとこないと思うので、具体例を見ていきましょう。

 

覚えるべき論理記号

基本的な3つ

すべての論理記号の源となるのが、否定、かつ、またはの3つです。

否定

命題\(A\)に対し、「Aでない」ことを\(\lnot A\)と表します。これは\(A\)の否定(negation, NOT)と呼ばれます。(\(\lnot A\)を\(~A\)や\(\overline{A}\)と表記する流儀も)

もし\(A\)が真ならば\(\lnot A\)は偽で、\(A\)が偽ならば\(\lnot A\)は真です。

\(A\)\(\lnot A\)
TF
FT

このようにもとの命題と比較したい命題の真偽値の対応関係を表にしたものが、真偽値表です。

\(f(A):=\lnot A\)と関数を定めれば、\(f\)は変数はT,F、その値もT,Fの関数です。このような関数を真理関数(truth function)と呼びます。(正確には、変数は命題\(A\)ではなくその真理値なのですが。)

否定記号\(\lnot\)によって何を定めているのは、「~でない」という言葉の日常的な意味ではなく、そのごく限られた部分です。つまり、受け取ったものが真ならば偽を返す(偽なら真を返す)、という対応規則であり、それ以上の何者でもありません。

論理記号を定めることは、ある種の真理関数を定めることだということが、わかるでしょうか。

 

かつ

命題\(A,B\)に対して、「\(A\)かつ\(B\)」を\( A \land B\)と表します。これを\(A\)と\(B\)の論理積連言(conjunction, AND)と呼びます。(\(A\cdot B, A \& B\)と書く流儀も)

\(A\)\(B\)\(A \land B\)
TTT
TFF
FTF
FFF

否定\(\lnot\)はひとつの命題を変数にしていますが、かつ\(\land\)は2つの命題を変数にしていますね。

 

または

\(A,B\)を命題として、「\(A\)または\(B\)」は\(A \lor B\)と表されます。これを\(A,B\)の論理和選言(disjunction, OR)と呼びます。

\(A\)\(B\)\(A \lor B\)
TTT
TFT
FTT
FFF

論理学における「または」は、\(A,B\)両方真のケースも真と考えます。最低一方が正しければ正しいわけです。特にこれを、包含的論理和(inclusive disjunction)と呼びます。

 

日常的な意味では、「海または山に行く」というときは、いずれか一方だけを選び、両方行くことを考えないかもしれません。これを\(A \veebar B,A\oplus B\)と書き、排他的論理和(exclusive disjuction, XOR)と呼びます。

\(A\)\(B\)\(A \veebar B\)
TTF
TFT
FTT
FFF

排他的論理和は、\((A \land \lnot B)\lor (\lnot A \land B)\)と全く同じです。つまり、これまでに登場した\(\lnot , \lor\)を使って表せます。\(\lnot \)と\(\land, \lor\)の混じった文は、\(\lnot\)を先に適用すると解釈しています。

排他的論理和以外の他の論理記号も、\(\lnot , \land , \lor\)の組み合わせによって表現できます。だから、否定、かつ、またはは重要な論理接続詞というわけですね。

 

組み合わせ的なもの

ならば

\(A,B\)を命題とし、「\(A\)ならば\(B\)」を\(A\Rightarrow B\)と書きます。これを\(A\)は\(B\)を含意する(implication)と言います。もし\(A\)ならば\(B\)(if A then B)とも。

(\(A\supset B\)と表記されることがありますが、これは集合論の言葉づかいと紛らわしいのでやめたほうが良いと思います)

\(A\)\(B\)\(A\Rightarrow B\)
TTT
TFF
FTT
FFT

\(A\Rightarrow B\)は、\(\lnot A \lor B\)と全く同じです。前提\(A\)が正しいときに、\(A \Rightarrow B\)は無条件に正しいと考えています。

その否定\(\lnot (A\Rightarrow B)\)は、\( A \land \lnot B\)です。\(A\Rightarrow B\)の否定は何ですかと聞かれたときに、その意味をすぐに答えられるようになっておきたいものです。

こちらで詳しく書きました:「AならばB」のよくある誤解から学ぶ、論理学入門(対偶、逆、否定、真偽表)

数学の定理の多くは、「もし仮定Aを満たすならば、結論Bが成り立つ」という形をしています。そこでこの含意記号は役立つわけです。

 

同値

\(A,B\)を命題とし、\(A\)が真のとき\(B\)も真、\(A\)が偽のとき\(B\)も偽となるとき、\(A\)と\(B\)は論理的に同値である(equivalent)と言います。論理的に等しい、と言っても良いでしょう。もし\(A\)ならば、そのときに限り\(B\)(A if and only if B, A iff B)とも。

これを\(A \Leftrightarrow B, A \equiv B\)と書きます。

\(A\)\(B\)\(A \Leftrightarrow B\)
TTT
TFF
FTF
FFT

同値記号を使えば、記号上異なる2つの命題の真偽値が常に一致することを、簡単に表せます。例えば、次の命題は常に正しい(恒真命題)です。

\[ \begin{aligned} A \land A \Leftrightarrow A\end{aligned} \]

\[ \begin{aligned}A \veebar B \Leftrightarrow  (A \land \lnot B)\lor (\lnot A \land B)\end{aligned} \]

\[ \begin{aligned}A\Rightarrow B \Leftrightarrow \lnot A \lor B\end{aligned} \]

\[ \begin{aligned}A\Rightarrow B \Leftrightarrow \lnot B \Rightarrow \lnot A\end{aligned} \]

といったように(最後のはド・モルガンの法則)。(同値記号を使った表記で、単に\(A \Leftrightarrow B\)と書かれていたら、それが恒真命題であることを暗に主張しています。)

2つの数が等しいときは\(a=b\)とイコールでつなぎますが、2つの命題が等しいときは\(A \Leftrightarrow B\)と同値記号\( \Leftrightarrow \)で結びます。

 

さらに、\(A \Leftrightarrow B\)は、どちらも一致していなければ真でないという意味では、さきほどの論理和とちょうど否定の関係にありますね。つまり、

\[\begin{aligned} (A \Leftrightarrow B) &\Leftrightarrow &\lnot (A \veebar B) \\&\Leftrightarrow& \lnot ((A \land \lnot B)\lor (\lnot A \land B)) \\&\Leftrightarrow&  (\lnot A \lor B) \land ( A \lor \lnot B) \end{aligned} \]

です。また、\(A \Rightarrow B\)かつ\(B \Rightarrow A\)は\(A \Leftrightarrow B\)と同値です。

\[\begin{aligned} (A \Rightarrow B) \land (B \Rightarrow A) &\Leftrightarrow & (\lnot A \lor B ) \land (\lnot B \lor A) \\ &\Leftrightarrow& (\lnot A \lor B ) \land (A \lor  \lnot B ) \\&\Leftrightarrow& (A \Leftrightarrow B) \end{aligned} \]

なので。(同値変形しているときには、命題代数の法則と呼ばれるいくつかの法則を用いています。詳しくは別記事で。)

 

こうして見れば、\(A \veebar B, A\Rightarrow B,A \Leftrightarrow B\)は、\(\lnot , \land , \lor\)のみを使って書かれた命題と同値です。

つまり、命題論理の接続詞として最小限必要な約束は\(\lnot , \land , \lor\)のみです。「ならば」や「同値」は良く使い便利なので独自の記号を使って表しますが、実質的には否定、かつ、またはの組み合わせにすぎません。

一見複雑な接続詞も、実は基本的な接続詞に還元される。真理値を使ったこの分析自体が、命題論理のパワーを示す例と言えますね。

 

特殊な命題

最後に、論理接続詞ではないですが、特定の命題を表すために使われる記号を紹介します。

恒真命題(トートロジー)

恒真命題(トートロジー tautology)は、文字通り、常に真である命題で、記号\(\top \)で表します。

\(A\)\(\top \)
TT
FT

どのような命題\(A\)に対しても、それは真か偽のいずれかであり、\(A\lor \lnot A\)は常に真です。つまり、

\[ \begin{aligned}A\lor \lnot A \Leftrightarrow \top\end{aligned} \]

この性質を、排中律(law of excluded middle)と言います。

 

矛盾命題

矛盾命題(contradiction)は、常に偽であるような命題です。\(\bot\)と表されます。

\(A\)\(\bot \)
TF
FF

恒真命題の否定\(\bot \Leftrightarrow (\lnot \top) \)、恒偽命題とも言えますね。

また、どのような命題\(A\)に対しても、それが真であると同時に偽であることはありません。つまり、

\[ \begin{aligned}A\lor \lnot A \Leftrightarrow \bot\end{aligned} \]

この性質を、矛盾律(law of contradiction)と言います。この両辺を否定して、

\[ \begin{aligned}\lnot (A\lor \lnot A) \Leftrightarrow \top\end{aligned} \]

無矛盾律(law of noncontradiction)と呼びます。

 

以上、記号論理学と命題論理とは何か、そこで登場する論理接続詞を紹介してきました。

命題を記号で表してその真理値に注目する、命題を論理接続詞でつないで複雑な命題を表し、その性質を真理値表で調べる……といったことが伝わったでしょうか。多くのことは覚えなくて良いので、まず\(\lnot, \land, \lor,\Rightarrow, \Leftrightarrow \)の扱いに馴染んでみてはいかがでしょうか。

木村すらいむ(@kimu3_slime)でした。ではでは。

 

論理と集合から始める数学の基礎
日本評論社 (2018-02-26)
売り上げランキング: 12,368

 

 

入門!論理学 (中公新書)
野矢 茂樹
中央公論新社
売り上げランキング: 10,468

こちらもおすすめ

「AならばB」のよくある誤解から学ぶ、論理学入門(対偶、逆、否定、真偽表)

集合論のはじまり、全称命題と存在命題、論理記号を知ろう

「AならばB」は「Aでない、またはB」を真偽値の計算(プログラミング)で確かめる

論理学の入門ロードマップ:大学数学に必要な論理学とは