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

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

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

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のとき)の定義に違和感があり、なぜこういう演算を考えたのか腑に落ちませんでした。あまり拘っても仕方ないのですが、一応、自分の中では決着が付いたので、現時点での理解を書いておきます。

対象外

「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) = 対象外

対象外であれば「AならばB」の判定には影響を与えないため、少なくとも「AならばB」は間違っているとは断定できません。もちろん正しいとも言えませんが、証明には背理法がよく使われることを考慮すれば、扱いは非対称となります。背理法により1つでも例外があれば「AならばB」は不成立となるため、偽として判定することには慎重になる必要があります。そのため消極的に真として扱うようです。

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

関連情報

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

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

このモデルについて言及したテキストを見付けました。

Non-Truth-Functional Interpretation

3値論理にはいくつか種類がありますが、このモデルは採用されていません。

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

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

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

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

【追記 2016.11.17】