「ならば」問題の対処法

古典論理の「ならば」を誤解・曲解したままで、「ならば」を使えない/間違える人は多い。「前件($`\Rightarrow`$ の左側)が偽なら含意命題は真」というところがカナメ。$`\Rightarrow`$ は演算記号で関係記号ではない。のだが、関係記号としてもオーバーロードされている(これも酷いハナシだ)。

檜山は「宝くじが当たった ならば フェラーリを買う」のような例をよく出していた。「宝くじが当たらなかった」ときは、後件($`\Rightarrow`$ の左側)は見なくていい。「宝くじが当たらないのにフェラーリを買った」としても真だ、と。

だが、こういう説明をしても、ほんとに古典論理の「ならば」の説明になっているかどうかはあやしいし、かえって誤解・曲解へと導く可能性だってある。

下の真偽表を常に思い出せ、というのは良いアドバイスになる。false は一箇所しかない。

↓第一引数 →第ニ引数 true false
true true false
false true true

が、述語論理になると、またわからなくなってしまうようだ。

AND, OR, NOT までは集合との対応ちゃんと教えるのに、IMPLY(ならば)になると何故か集合との対応に言及しなくなってしまうのが原因のような気がする。AND, OR, NOT までは、述語に外延(集合)のイメージを持てるのだが、IMPLYになると自然言語の「ならば」に寄ってしまう。で、わけがわからなくなってトンチンカンをやらかす。IMPLYの正しい運用、推論が出来ない、と。

「ならば」がわかるように“集合と論理”をやり直すなら、次の手順がいいと思う。

  1. 部分集合の演算 $`\cap, \cup, (\text{-})^c`$ をベン図で学ぶ。これは既にやってると思う。
  2. 部分集合の演算 $`\setminus`$(差)、$`\triangle`$(対称差)をベン図で学ぶ。対称差のベン図
  3. 部分集合の演算 $`{-\!\triangleright}`$(差の補集合)、$`\triangleleft\!\!-\!\!\triangleright`$(対称差の補集合)をベン図で学ぶ。biconditional〈双条件〉のベン図
  4. 「部分集合 $`\mapsto`$ 述語」対応により、$`\Rightarrow, \Leftrightarrow`$ を導入。
  5. 射影により $`\exists, \forall`$ を導入。全称限量子は、補集合を射影して補集合をとる。単元集合をちゃんと使う。
  6. 自然言語の例えは使わない。$`\Rightarrow, \Leftrightarrow, \sqsubseteq, \equiv`$ の解釈もひたすらベン図を描く。述語の外延〈広義の真偽値〉に対する強固なメンタルモデルを作る。
  7. 集合と論理の習慣の違いを知る。
    1. 「$`X`$ の部分集合 $`A`$」と書いて、「$`A = X`$」を意味することはない。部分集合自体と、部分集合のあいだの演算・関係が混同されることはない。
    2. 「$`X`$ 上の述語 $`p`$」と書いて、「$`p = \mathrm{True}_X \text{ in }\mathrm{Pred}[X]`$」を意味することがある。さらには、ラムダ記号(関数抽象)や全称限量子(特殊な射影)、判断記号の省略もある。

演算の対応表:

$`\cap`$ $`\land`$
$`\cup`$ $`\lor`$
$`(\text{-})^c`$ $`\lnot`$
$`{-\!\triangleright}`$ $`\Rightarrow`$
$`\triangleleft\!\!-\!\!\triangleright`$ $`\Leftrightarrow`$

関係の対応表:

$`\subseteq`$ $`\sqsubseteq`$
$`=`$ $`\equiv`$