スマリヤンの 『哲学ファンタジー』 にある 美しい対称性を持つ問題 について、問題を形式化してその構造の美しさを際立たせる。
問題#
問題 1#
二人の兄弟のうち一人はジョンである。二人のうち一人は常に嘘をつき、他の一人は常に本当のことしか発言しないが、ジョンが正直か嘘つきかわからない。あなたはこの二人と出会い、どちらがジョンか知りたいとしよう。あなたは、一人だけに向かって、三単語の質問をすることができるが、何と尋ねればよいだろう?
問題 2#
問題 1 の状況で、今度は、どちらがジョンであるかではなく、ジョンが正直か嘘つきかを知りたいとしよう。どんな三単語の質問で、これがわかるだろうか?
問題 3#
同じ状況で、2 つの質問を考える。第一の質問をすれば、第二の質問に対する正しい答えを知ることができ、第二の質問をすれば、第一の質問に対する正しい答えを知ることができる。これらの三単語の質問とは何だろう?
回答#
問題 1 は “Is John truthful?” という質問をすればよい。この質問ならば、聞いた相手が正直でも嘘つきでも、その人が John である限り常に “Yes” と答えるし、 John でなければ常に ”No” と答える。
問題 2 は “Are you John?” という質問をすればよい。もしその答えが “Yes” ならば、聞いた相手が John でありかつ正直ものであるか、John でなくかつ嘘つきである場合のいずれかである。どちらの場合も「John が正直である」ということがわかる。“No” という回答であった場合も同様に考えれば「John が嘘つきである」ということがわかる。
問題 3 は、第一の質問として “Is John truthful?” を、第二の質問として “Are you John?” を用いればよい。
問題 3 は非常に面白い。目の前にいる相手がジョンかどうかを知りたいときには「ジョンは正直ものか?」を問えば答えがわかり、ジョンが正直ものかどうかを知りたいときには「君はジョンか?」と問えば答えがわかるという、美しい対称性を持つ構造になっている。
形式化#
上だけでも十分面白いが、これを形式化して、何が起きているかをより明らかにしたい。
$J(y)$ を「$y$ はジョンである」という命題とする。
$T(y)$ を「$y$ は正直ものである」という命題とする。
「ジョンは正直ものである」を論理記号を用いて表現しようとすると
$$\forall y (J(y) \Leftrightarrow T(y))$$
ということになる。つまり、ある人物がジョンである場合にはその人物が正直ものである、ということが常に成り立ち、同時にその人がジョンでないならば、その人物も正直者ではない(嘘つきである)ということである。
ここで $y$ の候補は二人の兄弟しかおらず、かつ一人がジョンならばもう一人はジョンではないので、$y$ を目の前の聞き手と解釈すれば、
$$J(y) \Leftrightarrow T(y)$$
としても意味は変わらない。
また「あなたはジョンである」は、上の記号を用いれば
$$J(y)$$
となる。
これで問題 1, 2 の質問をそれぞれ言い換えると、以下のようになる。
問題 1 の質問
$P_1$:「ジョンは正直ものか?」すなわち $T(y) \Leftrightarrow J(y)$ の真偽は?
問題 2 の質問
$P_2$:「あなたはジョンか?」すなわち $J(y)$ の真偽は?
さて、$y$ への質問と回答を形式化したい。$y$ に命題を与えると、その真偽に関する回答を返すことから、$y$ への質問とその回答は命題関数 $D(\cdot)$ を用いて表現できる。
$D$ の形を考える。$A$ を任意の命題とする。$y$ が正直ものならば $D(A)$ は $A$ の真偽と同じになる。$y$ が嘘つきならば $D(A)$ は $\neg A$ の真偽と同じになる。これを一つで書けば
$$D(A) = T(y) \Leftrightarrow A$$
となる。これは以下のように真理値表を書いてみると、確かにその通りであることがわかる。
$T(y)$ | $A$ | $T(y) \Leftrightarrow A$ |
---|---|---|
T | T | T |
T | F | F |
F | T | F |
F | F | T |
さて、$y$ に問題 1 の質問「ジョンは正直ものか?」をする。これは上で定義した記号を用いると、
$$D(T(y) \Leftrightarrow J(y)) = T(y) \Leftrightarrow (T(y) \Leftrightarrow J(y))$$
ということになる。ここで一般に
$$A \Leftrightarrow (A \Leftrightarrow B) = B$$
ということが成立する。これは以下のように真理値表を書いてみればよくわかる。
$A$ | $B$ | $A \Leftrightarrow B$ | $A \Leftrightarrow (A \Leftrightarrow B)$ |
---|---|---|---|
T | T | T | T |
T | F | F | F |
F | T | F | T |
F | F | T | F |
ということで、$D(T(y) \Leftrightarrow J(y)) = J(y)$ となる。言い換えれば
$$D(P_1) = P_2$$
である。
そして問題 2 の質問を考える。これは
$$D(J(y)) = T(y) \Leftrightarrow J(y)$$
なので、
$$D(P_2) = P_1$$
が成立する。
これで、$P_1$ と $P_2$ は $D$ に対して対称性を持つことがわかった。
ちなみに問題 3 は
$$D^2 (P_1) = P_1$$
であり
$$D^2 (P_2) = P_2$$
が成立することを言っている。
追加の考察#
この問題では「誰がジョンであるか」を知る方法を考えたが、「誰が正直ものであるか」を知りたいときはどうすればよいだろうか?
これには $D$ の定義を変える必要がある。$D$ の定義を変更した $D’$ を考える:
$$D’(A) = J(y) \Leftrightarrow A$$
これはすなわち、聞いた相手がジョンならば $A$ の真偽を正確に答え、聞いた相手がジョンでない場合は $A$ の真偽の逆を答える、ということである。非常に人工的な定義であり、聞いた相手はトリッキーな判断をすることになる。
これならば、先程の議論を繰り返せば、「あなたが正直ものであるか」を確かめるために「ジョンは正直ものであるか」を聞けばよいことになる。
すると、
$$D’(J(y) \Leftrightarrow T(y)) = J(y) \Leftrightarrow (J(y) \Leftrightarrow T(y)) = T(y)$$
となるため、聞いた相手が正直ものかどうかがわかる。
しかし、これはどうもおかしい。
そもそも $D’$ の定義を見ると、これは正直ものをジョンと言い換えただけにすぎない。まるで正直ものの代名詞としてジョンと表現しているかのようだ。$D$ も $D’$ も、どちらも正直ものか嘘つきかという点で本質は変わらない。
ここからも面白い性質を見いだせる。
ある人物が「ジョンであるか」や「正直者であるか」というのは、単にその人物が持つ属性であるように見える。しかしながら、この問題は属性の中でも 論理的に 性質が異なるものがあることを示唆している。つまり、「正直者であるか否か」という属性は「ジョンか否か」という属性ではカバーできない、何か特有の性質を秘めているということだ。これが何なのか、まだ特定できていない。