今日はひとつ論理パズルを。


Aさん
「何か言ってみてください。もしそれが本当であれば、10ドルさしあげます。もしそれが間違っていることだったら、10ドル以下か10ドル以上のお金をあげます。その場合、ちょうど10ドルさしあげることはできません。」

Bさん
「何か言ってみてください。それが本当のことか間違っていることかに関わらず、あなたに10ドル以上のお金をさしあげます。」

AさんかBさんの、どちらの提案にのるべきだろうか。



大学の授業でこの問題を出すと、学生はほぼ例外なく「Bさんの方」と答える。
しかし、学生は僕の性格をよく分かっているので、なんとなく「何か引っかけがあるんじゃないか」のような怪訝な顔をする。

別にこの問題はひっかけでも何でもなく、命題論理の真偽値計算がきちんとできるかどうか、という単なる演習問題だ。論理学の原理をきちんと学んだ人であれば、出題の意図が分かる。

このAさんとBさんの提案を表にすると、以下のようになる。


ロジック



どう見ても、Aさんの提案の、間違ったことを言った方の「ちょうど10ドルあげることはできない」というところに穴がある。
この条件を使えば、Aさんの提案にのったほうが有利なのは明らかだ。例えば次のように言えばよい。


「あなたは私に、ちょうど10ドルも、ちょうど100万ドルも、どちらも払わないだろう」


これが「本当」のことと仮定する。
すると、Aさんの提案により、Aさんは10ドルを払わなければならない。しかし、これは「ちょうど10ドルを払わないだろう」という返答と矛盾する。 よって仮定が誤り。この返答は「間違い」である。

すると、「どちらも払わないだろう」が間違いであることになるので、「10ドルも100万ドルもどちらも払わない」の否定となり、「10ドルか100万ドルかのどちらかを払う」になる。
Aさんの提案により、間違いのことを言った場合、Aさんは10ドルちょうどを払うことはできない。よって、Aさんの選択肢は「100万ドルを払う」しかなくなることになる。


論理学的には、ここで使う道具は、背理法と、連言否定とその同値関係だ。
「10ドルを払う」をP、「100万ドルを払う」をQとおく。すると返答は間違い(=偽)なので、¬P∧¬Qの否定、つまり ¬(¬P∧¬Q) になる。これは何のことはない、P∨Qと同値になる。結果として「Pか、Qかのいずれか」という言い方となり、かつAさん自身の提案でP(=10ドルを払う)の可能性が消去されているので、Q(=100万ドルを払う)の可能性しか残らない。


logic2

この程度は暗算。

 

命題論理の真偽値計算は基本的に単純作業の力技だが、何度も真偽値計算を繰り返していると、ある程度の同値関係は公式的に覚えてしまう。するとまず否定連言に思考を落とし込み、背理法の結果からそれに否定をかけ、あとは芋づる式に逆算して条件まで遡ればいい。

別に引っかけでも何でもなく、基本を忠実に積み重ねただけの問題だ。



世間で言う「論理的」とはこういうのとは違うようだが