「旧約女神転生II」というレトロゲームがある。その中で、ちょっとした論理パズルが出てくる。こんな感じだ:ホブリン、トプカプ、マシュリン、ガーゴルの四兄弟の中に、一人だけ嘘つきがいる。それは誰か?
- ホブリン「マシュリンが近頃嘘つきになってね…あいつはアヤシイよ!」
- トプカプ「ガーゴル兄さんは昔っから正直者さ!」
- マシュリン「トプカプが嘘つきになったから心配してるんだ…」
- ガーゴル「ボブリン兄さんは嘘は言わないよ!」
答えはマシュリンである。ここでは、命題論理を使ってこのパズルを解いてみる。
まず、「ホブリンは正直である」をA、「トプカプは正直である」をB、「マシュリンは正直である」をC、「ガーゴルは正直である」をDとする。このとき
- ホブリンが「マシュリンは嘘つきである」と言う
という文は、A ⇔ ¬Cと記号化できる。ホブリンが正直ならマシュリンは嘘つきであり、ホブリンが正直でなく嘘つきならマシュリンは嘘つきでなく正直だからである。この要領で4つの文をすべて記号化すると
- A ⇔ ¬C
- B ⇔ D
- C ⇔ ¬B
- D ⇔ A
となる。
次に、嘘つきは一人だけいるという仮定を記号化する。これは
- (¬A & B & C & D) v (A & ¬B & C & D) v (A & B & ¬C & D) v (A & B & C & ¬D)
と記号化できるだろう。やや不恰好だが…。
A, B, D に関しては、どれを仮定しても矛盾が出てこない。しかし、Cを仮定したときは話は別で、4つの双条件から¬A, ¬B, ¬D がすべて導かれる。仮定となっている選言のどの選言肢をみても、これと両立するものはない。これは矛盾。よって、Cは偽である。つまり、マシュリンは嘘つき。
Postscript (2019/2/24)
この記事を書いた頃は、できる限り自然演繹で何でもやってやろうという気持ちでいたので、上のような解法となったが、今の自分だったら真理の木(タブロー)を使う。4つの双条件文を根として真理の木を描く。そうすると、閉じない枝が二つ見つかる。つまり、Cだけが真になるものとCだけが偽になるものだ。嘘つきは一人だけという前提があるので、Cだけを偽にすればよい、とわかる。