第 3 章 論理式
私たちが普段使う言葉は非常に曖昧であり、それを使って他人と意思疎通ができることは驚くべき事実である。この問題が分かる文の例を次に示す:
-
デザートにケーキかアイスを食べていいよ。
-
ブタが空を飛べるなら、あなたのアカウントはハッキングされない。
-
私たちが出す任意の問題を解いたら、成績は A だ。
-
アメリカ人はみな夢を持つ。
こういった文は正確に何を意味するのだろうか? ケーキとアイスを両方食べていいのか? ちょうど一つのデザートを食べなくてはいけないのか? ブタは空を飛ばないから、二番目の文はアカウントのセキュリティについて何も言っていないのか? 私たちが出す問題の一部だけを解いた場合は A の成績がもらえないのか? 問題を一つも解かなかった場合は A でない成績が確定するのか? 最後の文は全てのアメリカ人が同じ夢 ── 例えば「自分の家を持つ」 ── を持つと言っているのか? それとも、異なるアメリカ人は異なる夢を持つこと ── 例えば Eric の夢は「大ヒットソフトウェアを作る」、Tom の夢は「テニス大会で優勝する」、Albert の夢は「歌が上手くなる」\(\cdots\ \) ── を意味するのか?
普段の会話では、文が少しぐらい曖昧でも意思疎通の障害にはならない。しかし、概念を正確に形式化する必要があるとき ── 数学やプログラミングでは ── 日常の言葉に含まれる曖昧性が無視できない問題になる。文の意味が正確に定まらない状態で正確な議論などできるはずがない。そのため数学を始める前に、数学に関して正確に議論をする方法を考える必要がある。
日常の言語の曖昧性を回避するため、数学者は論理的関係を議論するための特別な語彙を考案した。この語彙には「or」「implies」「for all」といった通常の英単語が含まれるものの、数学者によって曖昧性のない定義が与えられており、それは普段の会話における使われ方と必ずしも一致しない。
驚くべきことに、論理に関する語彙を学ぶ中で、私たちは情報科学の中で最も重要な未解決問題に触れる ── その解答が世界を変える可能性を秘めた問題である。