空虚な真
数学および論理学において、空虚な真(くうきょなしん、英: vacuous truth)とは、前件が真にならないために真になる条件文や普遍命題(条件命題に変換できる普遍命題)のことである[1]。このような命題は実際に何も表現しないため、命題は空虚に真であると時々表現される[2]。例えば、命題「室内のすべての携帯電話は電源が切れている」は、室内に携帯電話がないとき真になる。この場合、命題「室内のすべての携帯電話は電源が入っている」も同様に真である。これら2つの論理積「室内のすべての携帯電話は電源が入っていて、かつ切れている」も、もし空虚な真でなければ矛盾しており偽であるだろうが、同様に真である。
より形式的に、相対的に well-defined な用法では、偽の前件を持つ条件命題(もしくは普遍条件命題)のことを指す[1][3][2][4]。そのような命題の例の一つは「東京がフランスにあるならば、エッフェル塔はボリビアにある」である。
このような命題は、前件が偽であるという事実によって、命題から後件の真理値を推論する必要がなくなるため、空虚に真であるとみなされる。本質的に、論理包含に基づく条件命題は、前件(例における「東京がフランスにある」)が偽であれば、帰結や後件(例における「エッフェル塔がボリビアにある」)の真理値によらず真になる。なぜならば論理包含がそのように定義されているからである。
日常会話に共通する例として、「地獄が凍りついたら」とか「豚が飛んだら」といった、ありえないことの慣用表現として使われる条件文が含まれる。こうした表現では、与えられた(不可能な)条件が満たされる前に話者が(ふつう偽か不合理な)各命題を受け入れるわけではない。
純粋数学においては、空虚に真な命題は一般にそれ自体が興味対象になるわけではないが、数学的帰納法の基本ケースとして頻繁に生じる[5]。この特徴は純粋数学だけでなく、古典論理を用いる他の分野にも関連する。
数学以外では、非形式的に空虚に真であると特徴づけられる命題は誤解を招く。そのような命題によって、実際には存在しない修飾された対象に関する主張が妥当になってしまう。例えば、最初からお皿に野菜がなかったとしても、子どもは親に対して正直に「野菜を全部食べた」と言うかもしれない。この場合、たとえ嘘でも親は実際に野菜を全部食べたと信じるだろう。加えて、空虚な真は、自信を持って何かを主張するために不合理な言い回しで口語的に用いられたり(例えば犬が赤かったことを強調するための「犬は赤かった、でなければ私は猿の叔父だ」)、疑い、皮肉、不信感、憤りの表現(例えば前に話した内容を否定するための「そう、私はイングランドの王だ」)に使われることがよくある。
概念の範囲
[編集]命題 は、前件 が偽であるとわかっている論理包含命題 と似ているならば、「空虚に真」である[1][3][2]。
この基本形(論理包含)に(適当な変換で)還元できる空虚に真な命題は、以下の全称量化命題を含む:
- , ここで の場合[4]。
- , ここで集合 が空集合の場合。
- この論理形式 は、前件を容易に特定するために、論理包含形式に変換できる。上記の例 「部屋のすべての携帯電話は電源が切れている」に対して、形式的に以下のように書ける。. ここで は部屋のすべての携帯電話の集合であり、 は「 の電源が切れている」ことを表す。これは論理包含形式で書くことができる。 . ここで は部屋の中のすべてのものの集合(もし部屋にあれば携帯電話を含む)であり、前件 は「 は携帯電話である」、後件 は「 の電源が切れている」ことを表す。
- , ここで記号 は代表元がない型に制限されている。
空虚な真は二値論理の古典論理に最も一般的に現れる。しかし空虚な真は、上記と同じような状況で例えば直観論理にも現れる。実際、 が偽であれば、 は論理包含を用いる任意の論理において空虚な真を導出する。もし が偽にならざるを得ないならば、厳密含意においても空虚な真が導出される。
適切さの論理のような非古典的論理では、(en:counterfactual conditionalのケースのような)代替的な条件文を使うことで、空虚な真を除去することが試みられることもある。
コンピュータ・プログラミングにおける空虚な真
[編集]多くのプログラミング環境には、アイテムの集まり中の各アイテムがある述語を満足するかどうかを判断するメカニズムが備わっている。そのようなクエリが空の集まりを常に真であると評価するのは、よくあることである。例えば:
- JavaScriptでは、配列メソッド
every
は与えられたコールバック関数を配列内の各要素に対して1回ずつ実行し、コールバック関数がfalse
を返す要素が見つかったとき、そのときに限り停止する。特筆すべきは、空配列に対してevery
メソッドを呼ぶとどんな条件でもtrue
が返ることである[6]。 - Pythonでは、
all
関数は与えられた iterable のすべての要素がTrue
であるときにTrue
を返す。この関数は長さゼロの iterable についてもTrue
を返す[7]。 - Rustでは、
Iterator::all
関数はイテレータと述語を受け取り、イテレータによって生成されるアイテムすべてについて述語がtrue
を返すとき、あるいはイテレータがアイテムを生成しないときに限ってtrue
を返す[8]。
例
[編集]- 「任意の整数 x に対して、x > 5 であるならば x > 3 である」[9] – この命題は空虚でなく真である(なぜならば実際に5より大きい整数があるため)。しかし、この帰結のうちいくつかは空虚に真であるにすぎない。例えば、x が整数 2 であるならば、この命題は「2 > 5 であるならば 2 > 3 である」という空虚な真を導く。
- 「私の子はすべてヤギである」は、話者が子を持たなければ空虚な真である。同様に、「私の子はだれもヤギでない」も、話者が同じ人ならば空虚な真である。
脚注
[編集]- ^ a b c “Vacuously true”. web.cse.ohio-state.edu. 2019年12月15日閲覧。
- ^ a b c “Vacuously true - CS2800 wiki”. courses.cs.cornell.edu. 2019年12月15日閲覧。
- ^ a b “Definition:Vacuous Truth - ProofWiki”. proofwiki.org. 2019年12月15日閲覧。
- ^ a b Edwards (January 18, 1998). “Vacuously True”. swarthmore.edu. 2019年12月14日閲覧。
- ^ Baldwin, Douglas L.; Scragg, Greg W. (2011), Algorithms and Data Structures: The Science of Computing, Cengage Learning, p. 261, ISBN 978-1-285-22512-8
- ^ “Array.prototype.every() - JavaScript | MDN”. developer.mozilla.org. 2023年11月11日閲覧。
- ^ “Built-in Functions — Python 3.10.2 documentation”. docs.python.org. 2023年11月11日閲覧。
- ^ “Iterator in std::iter - Rust”. doc.rust-lang.org. 2023年11月11日閲覧。
- ^ “logic - What precisely is a vacuous truth?”. Mathematics Stack Exchange. 2023年11月11日閲覧。
参考文献
[編集]- Blackburn, Simon (1994). "vacuous," The Oxford Dictionary of Philosophy. Oxford: Oxford University Press, p. 388.
- David H. Sanford (1999). "implication." The Cambridge Dictionary of Philosophy, 2nd. ed., p. 420.
- Beer, Ilan; Ben-David, Shoham; Eisner, Cindy; Rodeh, Yoav (1997). Computer Aided Verification: 9th International Conference, CAV'97 Haifa, Israel, June 22–25, 1997, Proceedings. Lecture Notes in Computer Science. Vol. 1254. pp. 279–290. doi:10.1007/3-540-63166-6_28. ISBN 978-3-540-63166-8。
関連項目
[編集]- ド・モルガンの法則 – 具体的には、反例が存在しない場合に普遍命題が真であるという法則:
- 空和と空積
- 空関数
- 論理包含のパラドックス、特に爆発原理
- 前提、ダブルバーレル質問
- 状況
- 恒真式 – 実質的な情報を何も与えない、別の種類の真な命題
- 自明性 (数学)と退化 (数学)