【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

論理包含の定義に関する違和感について

論理包含という論理演算子があります。A ⇒ B は「AならばB」と読み、ブール代数的には !(A && !B)(または !A || B)と定義されます。(Trueは真、Falseは偽)

A B A ⇒ B !(A && !B)
T T (T ⇒ T) = T !(T && !T) = !(T && F) = !F = T
T F (T ⇒ F) = F !(T && !F) = !(T && T) = !T = F
F T (F ⇒ T) = T !(F && !T) = !(F && F) = !F = T
F F (F ⇒ F) = T !(F && !F) = !(F && T) = !F = T

後ろ2つ(AがFのとき)の定義に違和感があり、なぜこういう演算を考えたのか腑に落ちませんでした。あまり拘っても仕方ないのですが、一応、自分の中では決着が付いたので、現時点での理解を書いておきます。

【追記 2018.03.08】 対偶を用いた説明により再構成しました。

対象外

「AならばB」というのは、「Aが成立するならBが成立する」ということを表します。

AとBの両方が成立すれば「AならばB」は成立します。Aが成立してもBが成立しなければ「AならばB」は成立しません。これらは直感に沿っているため、以下の2つに異論はありません。

  • (T ⇒ T) = T
  • (T ⇒ F) = F

問題はAが成立しないときです。「AならばB」というのはAが成立することを前提としているため、Aが成立しないことはそもそも対象外です。

  • (F ⇒ T) = 対象外
  • (F ⇒ F) = 対象外

※ このモデルは Non-Truth-Functional Interpretation と呼ぶそうです。

二値論理

二値の論理式として扱うには対象外とはできないため、TかFのどちらかに決める必要があります。以下の理由でどちらもTとします。

  • F ⇒ T : BがAとは無関係に成立するケースです。Aを条件から外して、Bが成立することだけに着目します。
  • F ⇒ F : 対偶は T ⇒ T です。対偶は真偽が等しいと決めれば F ⇒ F は成立することになります。

※ 参考:松坂和夫『集合・位相入門』岩波書店 P.10

もしAがFのときに A ⇒ B をFとすれば反例として扱われることになります。このような本来対象外とすべきものを反例から除外するため、消極的にTとして扱うとも解釈できます。

以上をまとめれば、明確に偽となるのは A && !B のときで、それ以外はすべて真です。それを定式化すると !(A && !B) となります。これはド・モルガンの法則により !A || B と同値です。後者の定義がよく紹介されますが、前者の方が意味が取りやすい気がします。

記号について

A ⇒ BA ⊃ B と表記する本があります。集合で考えると逆なのではないかと気になっていたのですが、要素ではなく条件の包含関係であれば辻褄は合います。論理包含を「含意」とも呼びますが、「意」を条件のことだと考えれば良さそうです。

※ これは単に記号としての取り決めと考えて、あまり気にしない方が良いかもしれません。(私はそういうのが気になりますが)

関連情報

対象外とするモデルが議論されていたというコメントを見掛けました。

真偽値なしや特殊な値(不定など)と考える人もいました。 ですから、真偽値なしや不定と考えることは、 それほど不自然なことではないと言えます。

3値論理にはいくつか種類がありますが、対象外とするモデル (Non-Truth-Functional Interpretation) は採用されていません。

未読ですが、関連する書籍があるようです。

戸田山先生の「論理学をつくる」に、条件文の真理表がこうあるべき事情が書かれています。

直接は関係ありませんが、論理を真偽値ではなく確率として扱う確率論理というのがあります。

原論文では論理包含から議論を始めています。論理演算が確率の加法・乗法に変換されるのが興味深いです。似た話題は前掲のスタンフォードのテキストでも取り上げられています。