1-1-1. 命題
Proposition
真と偽
真理の状態
ある主張の内容が,客観的な事実と合致している状態を「真(True)」という。
偽ある主張の内容が,客観的な事実と合致していない状態を「偽(False)」という。
物理学におけるスイッチの「ON/OFF」や,情報科学における「1ビットの状態」と同様に,互いに排反する2つの状態を想定している。 この段階では「何が」この状態を持つのかは問わず,状態そのものの存在を定義している。
真真である主張として,次のような例が挙げられる。
- 「あ」はひらがなである。
現実の事実と一致し,「真」である。
数学的に真であることが知られている。
偽偽である主張として,次のような例が挙げられる。
- 地球は存在しない。
現実の事実と一致せず,「偽」である。
- 素数は奇数である。
は素数であるが,奇数ではない。このようにある主張が正しくないことを証明するために挙げる、反論の具体例を「反例」という。
命題
命題
客観的に真または偽のいずれか一方へ一意に割り当てることが可能な対象を命題という。
以下の言明は命題である。いずれも最終的に全体として真か偽かを割り当てることができるものである。
-
「 は偶数である」 ― 真理値は真である。命題である。
-
「」 ― 真理値は偽である。命題である。
-
「光は波の性質をもち,かつ粒の性質も持つ」 ― 全体として真理値は真である。命題である。
-
「一万年後、地球は存在する」 ― 現時点で真理値はどちらかはわからないが,この言明は真か偽かのいずれかである。命題である。
一方,以下の言明は(このままでは)命題ではない。
- 「数学は美しい」 ― 主観的であり,真偽が客観的に定まらない。
- 「」 ― 変数 の値が決まるまでは真偽が確定しない。
真または偽のほかに、未来の不確定なことに対して未定(Indeterminate)という つ目の真理値を認める立場などからは,これとやや異なる定義をする。
原子命題
それ以上分割することができない最小単位の命題を原子命題という。
原子命題は,それ自体が「真」か「偽」かのどちらか一方の値を持つ要素であって,その中にそのような要素を含まない。
次の言明は原子命題である。
-
は である。
-
赤いボタンが押された。
一方で次の言明は原子命題ではない。
- 赤いボタンが押されたあと青いボタンが押された。
赤いボタンが押されたことと青いボタンが押されたことはともに真偽の一方の値をもち,それぞれ命題である。したがってもとの言明は原子命題とは言えない。
真理値
真理値
命題の真偽を示す値を真理値(Truth Value)といい,その集合は一般に次のように表す。
真理値の集合 は,論理演算やブール代数の土台となる代数構造(キャリア集合)である。
真理値は分野や文脈,派閥などにより取り方は変わる。以下は一般的な記号である。
| 真 | 偽 | 主な文脈 |
|---|---|---|
| 古典論理・型理論など(最も標準的) Top(トートロジー・恒真命題)とBottom(矛盾・恒偽命題)を表す格子論由来の記号。 | ||
| ブール代数・集合論・指示関数 代数的な計算(和や積)を論理式に適用する際や、集合の定義関数(特性的関数)の値として広く使われる。 | ||
| 命題論理・日常的な数理論理学 英語の「True」「False」の頭文字。教科書や導入的な論文の真理値表で多用される。 | ||
| 古典的な論理学・ラテン語圏の文献 ラテン語で真を意味する Verum、偽を意味する Falsum(あるいは の古いバリエーション)の頭文字。 | ||
| 多値論理・部分構造論理 代数論理学において、トップエレメント()とは区別された「強論理割り当ての真/偽」などを表す際に小文字が使われることがある。 | ||
| 圏論(カテゴリー論) 終対象(Terminal object)と始対象(Initial object)を表し、部分対象分類子(Subobject classifier)における真偽値の射の定義に使われる。 | ||
| 符号論理・代数的アプローチ 真理値を「正の性質」「負の性質」として扱い、群や環の性質を論理に適応させる際の表記。 | ||
| ドイツ語圏の古典論理学 ドイツ語で真を意味する wahr、偽を意味する falsch の頭文字。フレーゲなどの古典的文献で見られる。 | ||
| 格子論・リレーショナル代数 全有(Identity/Universal)と全無(Zero/Null)を意味する、ブール代数の源流に近い代数的表記。 | ||
| 真 | 偽 | 東アジア圏の論理学・数学基礎論 日本語や中国語などの学術論文・数理基礎論のテキストで、定義として明示的に使われる漢字表記。 |
| (または ) | (または ) | 格子論・結びと交わり(Meet and Join) 全要素の「結び(上限)」と「交わり(下限)」を意味し、ブール代数の最大元・最小元(真理値)を表す。 |
| ファジィ論理・拡張実数論理 真理値を無限に広がる数値として扱う際、完全に正しい状態を正の無限大、完全に間違いを負の無限大とする表現。 | ||
| スピンガラス模型・統計力学系論理 論理演算を物理の磁気(上向きスピン・下向きスピン)に対応させて数理モデルを組む際の、符号付き真理値表現。 | ||
| 関数・関係論理(Relational Calculus) 恒等関係(Identity relation = すべてが成り立つ真)と、空関係(Empty relation = 何も成り立たない偽)による真理値の置き換え。 |
そのほか,真理値とコンピューター科学の融和性が高いなどの理由から,プログラムの中で真理値リテラル(値そのものの書き方)として定義されているもの(例:true と false)やデジタル回路や物理的な信号での表現(例:ON と OFF)などが多くある。
真理関数
真理値の集合を とするとき、 変数の真理関数は の 個の直積集合 から への写像 として定義され,次のように表す。
真理値の集合とは,真を表す値と偽を表す値の つを要素にもつ集合のことである。一般に真を表す真理値を ,偽を表す真理値を として表すと
のように表される。真理値の項目にあるとおり, と は真偽にそれぞれに対応する形で定められた真理値をとり,一例として , をとることもあれば,, をとることもある。
なお以下では簡単に議論のできるように,偽を ,真を で表すこととする。
直積集合変数とは演算の入力となる命題の個数を表し,直積集合 はそれら 個の命題が取り得るすべての真理値の組み合わせ(入力の状態空間)の集合を表す。
基本的には,それぞれの集合から要素を つずつ取り出して作ったすべての組み合わせの集合のことと考えて差し支えない。
この記法は内包的記法であるから,個別の において外延的記法で表すことを考えると,例えば のときには
の時には
の時には
のように表せる。
写像写像とは,直積集合 に含まれるすべての入力の組み合わせに対して,出力となる真理値 の要素を過不足なくただ一つ決定する対応規則を意味する。
したがって に同じ論理値の組み合わせを代入したにもかかわらず があるとき違う結果を示すことはない。また,結果が定義されないような の組み合わせは存在しない。
一方で,当然ながら に異なる論理値の組み合わせを代入したとしても, が示す結果が互いに等しいときはあり,すべての組み合わせに対して同じ結果を示すことも認められる。
関数が意味するのはこうした 個の真理値の組み合わせ()を入力すると、最終的に 1つ の真理値()を返すという意味である。
例として を考える。このとき関数 は つの入力に対してある割り当てを行い, または を返す。 は つの変数のすべての組み合わせ,すなわち に対して同じように挙動し,例えば
のような割り当てを期待しているものである。ある言明を論理的に整理するとは,言い換えれば入力値によってどのように出力するかということを決めるということである。
論理演算子真理関数は具体個別に厳密に入力と出力のルールを定めることには向くが,人間やコンピューターが理解して処理するのに常に最適な手法とは限らない。その具体例の紹介は後述の各項目に替えることとするが,見ればわかるようにおよそ人が言語などで普段認識する方法ではない。
したがって人は,特定の言語体系等に完全に依拠しないものの,万人の使う言語にそれなりに即するように真理関数を定義し,それに記号を当てはめた。今日ではこの記号を一般に論理演算子という。
真理値表命題と真理関数
命題全体の集合を ,真理値の集合を とするとき、個別の命題 に対して真理値を割り当てる真理関数 は次のように表される。
は、この世に存在する、あるいはそのシステムの中で扱うすべての命題を含む巨大な集合である。それを構成する要素は例えば「地球は存在する」「 は である」といったような命題である。
関数 は命題を引数として,命題が真か偽かを論理値に変換する関数である。 のもと,例えば とすれば,これは真であるから
論理演算子
否定
真理値の集合を とするとき、 変数の真理関数 であり
によって定義される写像を否定といい,命題 の否定は次のように表す。
命題 の否定(Negation)とは,元の命題の真理値を反転させる操作であり,論理学では記号 (NOT)を用いて表記する。
真理値の定義に基づけば, の真理値 は次のように算術的に記述できる。
真理値表は次の通り。
| (真) | (偽) |
| (偽) | (真) |
- のとき,
- のとき,
日常的な言葉に言い換えれば次のようになる。
命題 を「空が青い」とする。
-
命題 が真であれば,すなわち事実「空が青い」のであれば, である 「空が青くない」は,偽である。
-
命題 が偽であれば,すなわち例えば実際は「空が赤い」のであれば, である 「空が青くない」は,真である。
否定は,情報科学におけるもっとも基本的な演算(ビット反転)として位置づけられている。
ハードウェア(論理回路)においては,入力信号の電圧(高/低)を反転させて出力する電子素子は NOT ゲート(インバータ)と呼ばれ,コンピュータの演算回路を構成する上で不可欠な要素である。
多くのプログラミング言語においては,論理否定は !(C系言語)や not(Pythonなど)として実装されており,条件分岐(if 文)の制御フローで頻繁に利用される。
is_active = True
print(not is_active) # 出力: False論理積
真理値の集合を とするとき, 変数の真理関数 であり
によって定義される写像を論理積といい,命題 と の論理積は次のように表す。
命題 と の論理積(Conjunction)とは,双方の命題の真理値がともに真(1)であるときのみ全体が真(1)となる操作であり,論理学では記号 (AND)を用いて表記する。
真理値の定義に基づけば, の真理値 は次のように算術的に記述できる。
真理値表は次の通り。
| (真) | (真) | (真) |
| (真) | (偽) | (偽) |
| (偽) | (真) | (偽) |
| (偽) | (偽) | (偽) |
- のとき,
- のとき,
- のとき,
- のとき,
日常的な言葉に言い換えれば次のようになる。
命題 を「本日は土曜日である」,命題 を「天気が晴れである」とする。
-
命題 と がともに真であれば,すなわち事実「土曜日かつ晴れ」であれば, である 「本日は土曜日であり,かつ天気が晴れである」は,真である。
-
どちらか一方でも偽であれば,すなわち例えば「日曜日( が偽)」であったり「雨( が偽)」であったりすれば, は,偽である。
論理積は,情報科学における基本的な二項演算(ビット積)として位置づけられている。
ハードウェア(論理回路)においては,2つの入力信号がともに高電圧(1)であるときのみ高電圧(1)を出力する電子素子は AND ゲートと呼ばれ,特定のビットを抽出するマスク処理や、複数の条件の同時成立を検知する回路に広く用いられる。
多くのプログラミング言語においては,論理演算としての論理積は &&(C系言語)や and(Pythonなど)として実装されており,複数の条件がすべて満たされているかを判定する条件分岐(if 文)で頻繁に利用される。
has_ticket = True
is_adult = True
print(has_ticket and is_adult) # 出力: True否定論理積
真理値の集合を とするとき, 変数の真理関数 であり
によって定義される写像を否定論理積(NAND)といい,命題 と の否定論理積は次のように表す。
命題 と の否定論理積(NAND / Sheffer stroke)とは,双方の命題の論理積を否定した操作(NOT-AND)であり,論理学では記号 または を用いて表記する。
真理値の定義に基づけば, の真理値 は次のように算術的に記述できる。
真理値表は次の通り。
| (真) | (真) | (偽) |
| (真) | (偽) | (真) |
| (偽) | (真) | (真) |
| (偽) | (偽) | (真) |
- のとき,
- のとき,
- のとき,
- のとき,
日常的な言葉に言い換えれば次のようになる。
命題 を「本日は土曜日である」,命題 を「天気が晴れである」とする。
-
命題 と がともに真であれば,すなわち事実「土曜日かつ晴れ」であれば,その事態全体の否定である 「本日は土曜日であり,かつ天気が晴れである,ということはない」は,偽である。
-
どちらか一方でも偽であれば,すなわち例えば「日曜日( が偽)」であったり「雨( が偽)」であったりすれば,全体を否定した は,真である。
否定論理積は,デジタル回路の設計において最も重要かつ根本的な演算(NAND演算)として位置づけられている。
論理学・情報科学において,NAND演算は単体ですべての論理演算(AND, OR, NOT等)を構成できる「機能的完全性(Functional Completeness)」を持っている。
ハードウェアにおいては,2つの入力信号がともに高電圧(1)であるときのみ低電圧(0)を出力する NAND ゲートは,最もシンプルかつ高速に製造できる論理素子であり、コンピュータのプロセッサやフラッシュメモリなどの集積回路(IC)は,基本的にこのNANDゲートを無数に組み合わせることで物理的に設計されている。
多くのプログラミング言語においては直接のNAND演算子は存在しないが,論理積と否定を組み合わせて !(a && b) (C系言語)や not (a and b) (Pythonなど)として表現される。
has_ticket = True
is_adult = True
print(not (has_ticket and is_adult)) # 出力: False否定論理積
変数の真理関数
に対して
によって定義される写像のことを否定論理積といい、命題 と命題 の否定論理積は次のように表す。
論理和
変数の真理関数
に対して
によって定義される写像のことを論理和といい、命題 と命題 の論理和は次のように表す。
排他的論理和
変数の真理関数
に対して
によって定義される写像のことを排他的論理和といい、命題 と命題 の排他的論理和は次のように表す。
否定論理和
変数の真理関数
に対して
によって定義される写像のことを否定論理和といい、命題 と命題 の否定論理和は次のように表す。
含意
変数の真理関数
に対して
によって定義される写像のことを含意といい、命題 が命題 を含意することは次のように表す。