久々に論理の話をします。論理とはいっても、形式化された論理〈formal logic〉の話ではなくて、“ちゃんと考えるための技法”といった意味の論理です。「命題と判断は区別しましょう」が僕がこの記事で言いたいことです。$`\newcommand{\Holds}{ \mathrel{|\!-!} }
\newcommand{\Ques}{ \mathrel{|\!-?} }
\newcommand{\HHolds}{ \mathrel{||\!-!} }
\newcommand{\HHHolds}{ \mathrel{|||\!-!} }
\newcommand{\NotHold}{ \mathrel{|\!\not-!} }
\newcommand{\NotHHold}{ \mathrel{||\!\not-!} }
\newcommand{\NotHHHold}{ \mathrel{|||\!\not-!} }
\newcommand{\mrm}[1]{ \mathrm{#1} }
\newcommand{\by}{ \text{ by } }
`$
内容:
命題
ここでは、「命題」という言葉をテクニカルタームではなくて、国語辞書的意味で使います。よくある「命題」の国語辞書的定義は:
- 命題とは、真偽が判定できる文である。
この定義は僕もよく引用するのですが、述語論理の話ではマズイことになります。どえらく誤解されるリスクがあります。
述語論理とは、“不定の主語”を扱う論理です。“不定の主語”を扱わない論理は命題論理です。僕は、命題論理と述語論理という分類に意味があるとは思えないのですが、広く採用されている分類ではあります。
- 述語論理では、主語が不定な(具体的に確定はしてない)文も命題と考える。
- 命題論理では、主語が確定している文しか命題とは考えない。あるいは、そもそも主語・述語なんて分解はしないで“ひとかたまりのナニカ”を命題だとする。
“不定の主語”による分類以外に、次のような分類基準もあります。
- 限量子($`\forall`$ と $`\exists`$)も扱う論理が述語論理
- 限量子は扱わない論理が命題論理
このての分類/境界線確定の議論は、「俺はこう分類したい」というお気持ち表明以上の意味はないので、気にしたり拘ったりするのは不毛です。
[/補足]
“不定の主語”を持つ場合には:
- 命題とは、主語を具体的に確定したときに真偽が判定できる文である。
例えば、「あの人は男性である」、「$`x \ge 1`$」、「$`x + y \ge 0`$」において、主語はそれぞれ「あの人」、「$`x`$」、「$`x, y`$」です。これらの文は主語が不定なので、このままでは真偽判定はできません。
- 「あの人は男性である」の「あの人」が、具体的に特定の人間を指している状況では、真偽が判定できる。
- 「$`x \ge 1`$」の「$`x`$」が、具体的に特定の数を指している状況では、真偽が判定できる。
- 「$`x + y \ge 0`$」の「$`x, y`$」が、具体的に特定の2つの数を指している状況では、真偽が判定できる。
ここで言っている真偽とは、$`\mrm{true}`$〈真〉または $`\mrm{false}`$〈偽〉のどちらかの値のことです。$`\mrm{true}`$ または $`\mrm{false}`$ の値のことをブール値〈Boolean value〉と呼びます。ブール値の $`\mrm{true}`$ を単に $`1`$ 、$`\mrm{false}`$ を単に $`0`$ と略記します。短く書けて便利ですが、自然数や実数の $`0, 1`$ とゴッチャにしないように気をつけましょう*1。
古典論理
前節で、「あの人は男性である」が“不定の主語”を持つ文、つまり述語論理の文だと言いました。「あの人」が特定の人間に具体化されれば、真偽が判定できると言いました。が、現実にはそうとも言えませんよね。「性別は決定可能か?」という過去記事から、「男か女か」を判断するいくつかの基準を引用すると:
- 生物学的な雌雄、原則的に染色体で判断可能。
- 戸籍上、男女どちらで登録されているか。
- 身体的特徴(生殖器や乳房など)。
- 社会的に、男女どちらとして生活しているか。
- 自分自身の意識として、男女どちらと認識しているか。
「あの人は男性である」の真偽判定は難しいですね。このようなときの対処はいくつかあります。
- 扱う命題から除外する。つまり、真偽判定は諦めることにして、やらない。
- どれかの基準を選んで(例えば、戸籍を基準)、それにより真偽判定をする。
- 真偽($`\mrm{true}, \mrm{false}`$)以外に、「どちらともいえない」を意味する値を追加する。
最後の方法は、三値論理としてたまに使われることがあります。実数区間
$`\quad [0, 1] = \{x\in {\bf R}\mid 0\le x \le 1\}`$
を「真である程度」として使うときもあります(ファジー論理)。
しかし、「どちらともいえない」を認めてしまうと、論理計算が複雑になってしまうし、そもそも「ものごとをハッキリさせたい」という目的にはそぐわないことになります。なので、「どちらともいえない」を認める論理は特定の目的でしか使われません。
「どちらともいえない」を認めない、常にシロクロつける論理が古典論理〈classical logic〉です。「古典」と呼び名についてますが、歴史的遺物とかではなくて、現役バリバリであり、数理科学で採用する論理は事実上古典論理一択です。
判断
判断〈judgement〉とは、なんらかの命題('~' で表す)に対して、「~ は成立する」「~ は真である」と保証する文です。判断と主張〈assertion〉は同義語です。「命題」の定義をテクニカルにちゃんとすれば、「判断」「主張」もまたテクニカルタームとなります。
「命題と判断は区別しましょう」と言ってみても、なかなかに難しいようです。例え話で説明しましょうか。例え話は諸刃の剣で、例えから余計な連想が誘発されて、かえって曲解されてしまう、といったこともあります。僕も何度もそれで失敗してます。が、正面から説明してもあまり効果がないのも事実なので、懲りずに例え話をします。
フィクションとして、殺人容疑で捕まった容疑者と刑事がいるとします。以下は取り調べの様子です。最近では、威圧的な言葉は問題ありのようですが、フィクションなのでご容赦ください。
- 発言(1) : 容疑者「私はやってません。」
- 発言(2) : 刑事「おまえはウソをついている。やったのはおまえだ。」
- 発言(3) : 容疑者「私はウソをついてません。」
- 発言(4) : 刑事「いや、おまえはウソつきだ。」
- 発言(5) : 容疑者「刑事さん、あなたは間違っている。」
フィクションの世界で、容疑者は具体的特定の人物なので、「私はやってません。」の主語「私」は不定ではなくて、特定されています。したがって、「私はやってません。」は真偽判定が可能な命題です。
しかし、誰が真偽判定するのでしょうか? 刑事さん? それとも裁判官? 現実の世界では人間が真偽判定しますが、人間は間違いを犯すので誤認逮捕や冤罪判決が生じます。全知全能の神様がいれば真偽を知っているはずなので、真偽判定は神様がするとします。神様からみれば、この容疑者が「やっているかどうか」の真偽は決まっています。
発言(1)の命題を次のように書きます。
私はやってません。$`\by`$ 容疑者
$`\by`$ は誰が発言したかを示します。
発言(2)は、発言(1)の命題に対して「ウソだ」という刑事の判断を表現しています。
「私はやってません。$`\by`$ 容疑者」はウソだ。 $`\by`$ 刑事
発言(3)は、発言(1)に対してホントだという判断を表現しています。
「私はやってません。$`\by`$ 容疑者」はホントだ。 $`\by`$ 容疑者
発言(4)は、発言(2)の「ウソをついてない = ホントだ」がウソだと断定しています。
「『私はやってません。$`\by`$ 容疑者』はホントだ。 $`\by`$ 容疑者」
はウソだ $`\by`$ 刑事
発言(5)は、刑事の断定が間違いであると言っているので、刑事の発言(4)に対する判断だと解釈しましょう。
「『【私はやってません。$`\by`$ 容疑者】はホントだ。 $`\by`$ 容疑者』
はウソだ $`\by`$ 刑事」はマチガイだ $`\by`$ 容疑者
このように、命題に対する判断〈メタ命題〉、さらに判断に対する判断〈メタ判断 = メタメタ命題〉、さらに ‥‥ と、判断のレベルが積み重なることは、現実世界でも意外にあることです。
フェイクが溢れる現代(例えば「王OKさんは実在するのか?」)において、提示された命題をただちに受け入れるのは危険過ぎます。命題に対する判断〈ファクトチェック〉が必要です。さらには、ニセのファクトチェックで騙そうとするやからもいるかも知れません。
判断記号
論理では、「~ は成立する」「~ は真である」を表す記号に $`\vdash`$ と $`\models`$ があります。それぞれ、「~ は証明可能〈provable〉である」、「~ はモデルに対して妥当〈valid〉である」という意味です。$`\vdash`$ と $`\models`$ はその使い方がシッカリと規定されているので、カジュアルには使いにくいです。細かいことまで言わないで「~ は成立する」「~ は真である」を表す記号として $`\Holds`$ を使うことにします。
記号 $`\Holds`$ を読み上げるときは hold〈ホールド〉です。動詞なので三単現の s がついて holds のときもあります。感嘆符が付いているのは、疑問符を付けた $`\Ques`$ を疑問文として使いたいからです(「証明の“お膳立て”のやり方 // 命題、証明可能性判断、証明要求」、「メタ疑問文の書き方」参照)。が、この記事では疑問文〈証明要求〉は使いません。
「~ は成立しない」「~ は真ではない」は、$`\lnot\Holds`$ のように書いてもいいのですが、ひとかたまりの記号 $`\NotHold`$ を使うことにします。
さて、前節の状況で、命題「私はやってません。」を一文字 $`P`$ で表すとします。神様は真偽を知っているので $`P`$ は命題です。発言者を示す $`\by`$ は使い続けるとして、前節の各発言は次のように記号化して表現できます。
- $`P \by 容疑者`$
- $`\NotHold (P \by 容疑者) \by 刑事`$
- $`\Holds (P \by 容疑者) \by 容疑者`$
- $`\NotHold (\Holds (P \by 容疑者) \by 容疑者) \by 刑事`$
- $`\NotHold (\NotHold (\Holds (P \by 容疑者) \by 容疑者) \by 刑事) \by 容疑者`$
この例では、命題、判断〈メタ判断〉、メタ判断〈メタメタ命題〉、メタメタ判断〈メタメタメタ命題〉と、どんどんメタレベルが上がっています。メタレベルを区別した判断記号を導入しましょう。メタレベル1 は縦棒が1本、メタレベル2 は縦棒が2本と、“メタレベルのレベル数”と“縦棒の本数”を合わせます。
- $`P \by 容疑者`$
- $`\NotHold (P \by 容疑者) \by 刑事`$
- $`\Holds (P \by 容疑者) \by 容疑者`$
- $`\NotHHold (\Holds (P \by 容疑者) \by 容疑者) \by 刑事`$
- $`\NotHHHold (\NotHHold (\Holds (P \by 容疑者) \by 容疑者) \by 刑事) \by 容疑者`$
信頼
前節のような、命題、判断、メタ判断、‥‥ のメタレベルはいくらでも昇れるのでキリがない水掛け論、あるいは議論の無限後退(むしろ上昇?)に陥ります。我々はどこかで、判断の連鎖を打ち切らねばなりません。どこで打ち切ればいいのでしょう? それは“信頼による”としかいいようがありません。
再び容疑者と刑事の会話に戻って、次のような展開だったらどうでしょう。
- 発言(1) : 容疑者「私はやってません。」
- 発言(2) : 刑事「おまえはウソをついている。やったのはおまえだ。」
- 発言(3) : 容疑者「私はウソをついてません。」
- 発言(4) : 刑事「そうか、わかった。おまえを信じよう。」
「オイ刑事、甘っちょろいだろう」というツッコミは置いといて、これで判断を打ち切れます。どこかで、発言者を信じるしかないのです。疑っている限り、水掛け論/無限後退が止まりません。
命題、判断の連鎖を記号的に書けば:
- $`P \by 容疑者`$
- $`\NotHold (P \by 容疑者) \by 刑事`$
- $`\Holds (P \by 容疑者) \by 容疑者`$
- $`\HHolds (\Holds (P \by 容疑者) \by 容疑者) \by 刑事`$
4番目のメタ判断〈メタメタ命題〉が最終判断です。2番目の中間の判断は取り消され〈破棄され〉ます。中間の判断を省略すれば、次の2レベルでも良かったことになります。
- $`P \by 容疑者`$
- $`\Holds (P \by 容疑者) \by 刑事`$
実際、多くの場合、2レベルの議論(提示された命題とメタレベル1の判断)で十分です。しかし、提示された命題のレベルしか考えないことは、フェイクだろうが何だろうが全部鵜呑みにする態度*2なので危険です。
提示された命題のレベルしか考えない対話・伝達としては、聞き手〈読み手〉が話し手〈発言者 | 書き手 | 著者〉を全面的に信頼している状況があります。話し手の発言である命題にはすべて、自動的に判断記号 $`\Holds`$ が付与される、という状況です。
実際に、信頼できる文献とか情報ソースはあるので、自動的に判断記号 $`\Holds`$ が付与されるモードでの対話・伝達が一概に悪いわけではないですが、あまりにも無批判/無検証な態度は怖いですね。
型宣言
容疑者と刑事の話はおしまいにして、数学的命題「$`x + y \ge 0`$」に話題を切り替えます。この命題は、“不定の主語”である「$`x, y`$」を含むので、このままでは真偽判定できないと言いました。にもかかわらず判断記号を付けた判断〈メタ命題〉を考えることができます。
$`\quad \Holds (x + y \ge 0)`$
今この判断は唐突ですが、事前に変数の型宣言があれば、この判断が正しいかも知れません。(“不定の主語”である)変数「$`x, y`$」に対して次の型宣言が事前にあったとします。
$`\quad x: {\bf N}, y:{\bf N}`$
この型宣言のもとでは、上記判断は正しいでしょう*3。上記判断をAさんが発言して私が納得するなら、次のように書けます。
$`\quad \HHolds (\Holds (x + y \ge 0) \by \text{Aさん}) \by \text{私}`$
型宣言が離れた場所にあると分かりにくいので、命題のすぐそばに書き添えるなら:
$`\quad \HHolds (\Holds (x:{\bf N}, y:{\bf N},\; x + y \ge 0) \by \text{Aさん}) \by \text{私}`$
このとき、内側の判断記号 $`\Holds`$ を含む判断の意味は、
自然数 $`x`$ と自然数 $`y`$ に対して、例外なく $`x + y \ge 0`$ が真である。
です。全称限量子が使えるなら、次のように書いても同じです。
$`\quad \HHolds (\Holds \forall x:{\bf N}, y:{\bf N}.( x + y \ge 0) \by \text{Aさん}) \by \text{私}`$
全称限量子のなかではコロンより所属記号が好まれるかも知れません($`\forall x\in{\bf N}, y\in {\bf N}.`$ のように)が、それは書き方の習慣の違いに過ぎません(ドーデモイイ)。
「成立する」「例外なく真である」の意味の $`\Holds`$ は、全称限量子より広範囲に使えます。中学校や高校では全称限量子は(たぶん)使いませんが、先生は「~ は成立するぞ。」とか「~ は公式な、おぼえとけ。」とかは言うでしょう。そう言ったとき $`\Holds \text{~}`$ を意図しているのです。
さて、次の、型宣言付きの判断はどうでしょうか?
$`\quad \Holds (x:{\bf R}, y:{\bf R},\; x + y \ge 0) \by \text{Bさん}`$
これには反例を提示できます。$`x = 3, y = -5`$ なら $`x + y \ge 0`$ は真になりません。$`\Holds`$ は「例外なく真である」の意味だったので、Bさんの発言(判断の提示)に次のようなメタ判断をすることになります。
$`\quad \NotHHold (\Holds (x:{\bf R}, y:{\bf R},\; x + y \ge 0) \by \text{Bさん}) \by \text{私}`$
前提
判断のなかの型宣言の位置は移動してよいとします。例えば、次はOKです。
$`\quad x:{\bf R}, y:{\bf R} \Holds x + y \ge 0`$
次はダメです。左から右へと読んでいくので、変数の出現の後で宣言するのは“手遅れ”だとします*4。
$`\quad \Holds x + y \ge 0,\; x:{\bf R}, y:{\bf R}`$
次は、不格好だけどいいとします。「いい」と言っているのは構文的に許すだけで、成立する/しないとは別な話ですからね。
$`\quad x:{\bf R} \Holds y:{\bf R},\; x + y \ge 0 `$
さらに、判断記号 $`\Holds`$ の左側には、型宣言以外に前提の命題も書いていいとします。例えば次のようです。
$`\quad x:{\bf R}, y:{\bf R},\; x\ge 0, y\ge 0 \Holds x + y \ge 0`$
この判断ならば正しいと〈成立していると〉認められますよね。この判断をCさんが発言したとして、私が承認する様子は次のように書けます。
$`\quad \HHolds (x:{\bf R}, y:{\bf R},\; x\ge 0, y\ge 0 \Holds x + y \ge 0 \by \text{Cさん}) \by \text{私}`$
おわりに
命題と判断の区別と扱い方は、一般的な情報リテラシーとしても、とても大事だと思います。現代の我々は、降りかかる悪意のある誤情報/危険なフェイクに晒されています。提示された命題のレベルとファクトチェックのメタレベルは区別して扱えるのが望ましいでしょう。
話を数学的・論理的な証明に限っても、命題と証明、それと僕がかつて“お膳立て”と呼んだ“判断や質問〈証明要求〉に対する操作”*5を区別して扱う必要があります。以下の過去記事とそこから参照されている記事達を参照してください。
形式論理でも、自然演繹とシーケント計算の関係を考えるときなど、命題/判断/メタ判断といったレベルを識別できると理解がスムーズです。関連する話題は以下の過去記事などにあります。
*1:ブール値の集合 $`{\bf B}`$ は、$`{\bf N}`$ や $`{\bf R}`$ とは別だという事ですが、$`{\bf B}`$ を $`{\bf N}`$ や $`{\bf R}`$ の部分集合だとみなす場合が、ないわけじゃないです。
*2:あるいは、すべてをウソだとみなす、極端な懐疑論的態度もあるでしょう。
*3:実際は、定数記号である $`+, \ge, 0`$ の意味や使用法も与えられないと正しいかどうかの判断はできません。が、そこは暗黙の常識を使うとします。
*4:後ろからでも修飾できる構文として $`\mrm{where}`$ がよく使われます。
*5:僕は、証明とは区別して「リーズニング」と呼んでいます。