こんにちは。高上の数物英講師です。今日は皆さんきっと一度は見たことのあるであろう問題を扱い、「命題」について考えてみます。
うそつきは誰?
ある刑務所には必ず正直に答える者と必ず嘘をつく者がおり、嘘つきは一人だけであった。
看守は囚人たちに「誰が嘘つきで誰が正直者か名乗り出ろ」と言った。
A:「Cは嘘つきです。」
B:「Aは正直者です。」
C:「私は正直者です。」
A、B、Cそれぞれ誰が正直者でだれが嘘つきか?
皆さんわかったでしょうか。
Aが正直者だと仮定すると、AのセリフからCは嘘つきになります。また、BのセリフからBは正直者になります。
Aが嘘つきだと仮定すると、AのセリフからCは正直者になります。また、BのセリフからBは嘘つきになります。
嘘つきは一人なので、正解はAとBが正直者で、Cが嘘つきです。
命題で書くと
先ほどの話は小学生でも理解できますが、これを高校の数学Ⅰで習う命題を使って書くと、
命題A「命題Cは偽である」
命題B「命題Aは真である」
命題C「この命題は真である」
のようになります。難しく見えますね。数学的に書いても同じことではありますが、数学用語なので誰にとっても意味が明確になり、「ただし嘘つきは嘘しかつくことはなく、・・・」といった但し書きが要らなくなるというメリットがあります。
発展形
次のような発展形を考えてみましょう。ぜひ自力で取り組んでみてください。
次の3つの命題の真偽を判定せよ。
命題A「命題Bが真ならば、命題Cは偽」
命題B「命題Cが偽ならば、命題Aは真」
命題C「命題Aが偽ならば、この命題は真」
真がいくつかもわからないので、すぐに答えを出すのは難しいと思います。
一つ一つ仮定してもいいですが、そうすると8通りもあるので少し数学らしく解いてみましょう。そのほうが楽に解けます。
まず高校生以上の方であれば、対偶の性質をご存知でしょう。
「AならばB」の対偶は「BでないならばAでない」という命題になります。
そして、数学的にこの二つの真偽は一致することが示されていて、受験の証明ではこの性質を多用します。
この問題では、BとCが対偶の関係にあることに気が付いたでしょうか。
よってBもCも真か、BもCも偽かのどちらかになります。
BもCも真と仮定してAを見てみると、Aは偽であることがわかると思います。
このとき普通にCは真になっているのがわかります。その対偶のBにも矛盾はないはず(後述)なのでこれが答えになります。Aだけ偽、BとCが真。
不思議な数学の「ならば」
ここで非常に数学的に重要な「ならば」について話します。
「AならばB」という命題が偽になる場合は、じつは「AなのにBではない」場合のみで、
そもそも「Aでない」場合はこの命題は真となります。これが数学の「ならば」の決まりです。
なので、Bを見てみるとそもそもCが偽ならばと言っています。今Cは真という仮定なので、この「ならば」の性質によりBは真となります。
仮定と矛盾しませんのでOKです。
ちなみに
命題A「命題Bが真ならば、命題Cは偽」
命題B「命題Cが偽ならば、命題Aは真」
命題C「命題Aが偽ならば、この命題は真」
BとCが偽であると仮定すると、命題Bより、命題Aが偽と分かります。しかし先に述べた「ならば」の性質により、AはそもそもBが真といっているので、Aは真となり、矛盾します。よってこの仮定は誤りで、先ほどの場合のみが答えになります。
私が作った問題でしたが、いかがだったでしょうか。高校数学でこのような命題の真偽をひたすら考える問題を解くことはまずないと思いますが、皆さんも自分で命題真偽問題をつくって家族や友達と出し合ってみてください。解くよりも答えが一つに決まる問題をつくるほうが実は大変ということに気づくと思います。
補足
最初の嘘つきの問題で、次のような類題がネットにあったそうです。(okwave)
問題の途中まで同じ。(嘘つきの人数の指定はなし。)
A:「Bは嘘つきです。私は正直者ですから真実のみ伝えます」
B:「Cは嘘つきです。私こそ正直者です」
C:「AとBこそ嘘つきです。私が正直者です。」
A、B、Cそれぞれ誰が正直者でだれが嘘つきか?
この問題のそのネットでの答もいろいろでしたが、次のような回答でまとまっています。
Aが正直者と仮定すると、Bが嘘つきという事になり、よってCは正直者ということになる。
しかし、Cは「Aは嘘つき」と言っているので、矛盾が生まれてしまう。
一方、Aが嘘つきと仮定すると、Bが正直者、Cが嘘つきとなる。
実際、Cの言う「AとBこそ嘘つき」は間違っている。
(『AとBこそ嘘つきです』を、1つの命題と見なすこと)
よって、
A:嘘つき
B:正直者
C:嘘つき
である。
https://okwave.jp/qa/q5926537.html
これが一応の答えになるんですが、私は少し違和感を感じました。
Cの言う「AとBこそ嘘つき」という部分で、これがBが正直者であることの嘘になっているかというところです。
数学的に「AとBは嘘つきです」を否定した言明は「AとBは正直者」ではなく、「AとBの内どちらか一方、あるいは両方が正直者」となります。
そこに異論はないのですが、嘘つきは「必ず」嘘をつくという性質の定義が数学的に行われていません。
先ほどの論理によってCが嘘つきだからといってAもBも嘘つきとはならないという話で落ち着いたようですが、
A:「Bは嘘つきです。私は正直者ですから真実のみ伝えます」
というセリフにより、Aが嘘つきならBは正直者ってしてるんですよ。その論理ならこれも後半だけが嘘で前半のBの話は嘘じゃないってことになってきませんかね。
だからこの問題の解釈として全て「かつ」で接続されていると捉えてその否定を考える(ドモルガン)よりは、セリフの中にそれぞれが独立した命題が入っていてセリフの主が嘘つきの場合にはその全てが偽と考えるのが日本語として自然な気がしました。
少し言い方が複雑になってしまいましたので例を出すと、「数学100点とった。あ、あと英語100点とった。」っていうのを「必ず」嘘しかつかない人が言ったというとき、これは数学では100点を取ったと解釈しますか?「必ず」嘘をいう人が数学に関しては嘘は言っていないと解釈されますか?私はしないと思うんですがどうでしょうか。
やはり数学的でない日本語だと、とっつきやすいですが複雑な論理を考えるのには解釈が入ってしまって良くないですね。補足でした。