論理包含について
私が今年最も影響を受けた技術書が、奥野さんの書いた「理論から学ぶデータベース実践入門」ですが
理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL (WEB+DB PRESS plus)
- 作者: 奥野幹也
- 出版社/メーカー: 技術評論社
- 発売日: 2015/03/10
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (20件) を見る
私もそうだし、ネットの書評読んでも、読書会でも話題にあがるのが、「第二章は難しい」という意見です。ではいったいどこが難しいのか、自分なりに考えてみました。
命題論理
まずリレーショナルデータベースとは、リレーショナルモデルをベースにしたデータベースシステムのことです。まあ、これはすんなり理解できますね。
次に、リレーショナルモデルのリレーションとは、テーブル同士の関連でもER図でもない。集合論と述語論理という数学理論を基にしたモデルであると・・・これも納得できました。
そして、述語論理とは論理学の一分野であると・・・それも判りました。
本書では論理学を解説するにあたり、命題論理から入ってます。まず命題とは、
ある物事について記述した文で、その意味が正しいかどうか、つまり、真か偽かを問えるもの・・・
「理論から学ぶデータベース実践入門」第二章 P34
だそうですね。これも納得。そしてその命題をPやQという記号を用いて表現し、PやQの真偽が判定しているとき、より複雑な命題の真偽を問うのが、命題論理という学問のテーマだそうです。
結合子
そして、PとQの関係から新たな真偽値を導き出すための記号を結合子と呼ぶそうです。代表的な結合子には以下のものがあります。
記号1 | 記号2 | 意味 | 文章 | |
¬ | 否定・NOT | でない | ||
∧ | ∩ | 論理積・連言・AND | かつ | |
∨ | ∪ | 論理和・選言・OR | または | |
≡ | = | 同値・EQ | 等しい | |
⊃ | → | 包含・IMP | ならば |
その他 XOR(排他的論理和)等もありますが、本書ではあまり出てこないため省きます。
で、まず否定「NOT」・・・これエンジニアなら誰でもわかりますよね。真理値表にすると以下のようになります。P が真なら NOT P は偽。P が偽の場合、NOT P は真になります。
P | ¬P |
真 | 偽 |
偽 | 真 |
次は論理積「AND」。これもメジャーですね。P AND Q の命題を真理値表で表現すると以下のようになります。P と Q が真の場合のみ、P ∧ Q の値が真になります。
P | Q | P ∧ Q |
真 | 真 | 真 |
真 | 偽 | 偽 |
偽 | 真 | 偽 |
偽 | 偽 | 偽 |
お次に、論理和「OR」。これも簡単ですね。P と Q が偽の場合のみ、P ∨ Q の値が偽になります。
P | Q | P ∨ Q |
真 | 真 | 真 |
真 | 偽 | 真 |
偽 | 真 | 真 |
偽 | 偽 | 偽 |
さらに同値「EQ」。真理値表を書くまでもありません。
・・・で、論理包含・・・・これなに???私も含め、馴染みのない人が多いようです。
論理包含
論理包含(包含)を日本語でいうと「ならば」というそうです。論理積や論理和は、日常でもよく使われるため身に染み付いてますが、「ならば」は慣れてないぶん、どうにも理解しづらいですね。真理値表だと以下のようになります。しかし、この表を始めて見た人が一目で理解することは可能でしょうか (苦笑)
P | Q | P ⊃ Q |
真 | 真 | 真 |
真 | 偽 | 偽 |
偽 | 真 | 真 |
偽 | 偽 | 真 |
これ、以下の式でも表現できるようです。
if P then Q else true
「理論から学ぶデータベース実践入門」の第二章には、この包含を含んだ式がかなり出てきます。また集合の部分集合と記号が似てるため、しっかり読まないと混同しやすいかも知れません。たぶん皆この辺りで引っ掛かるのではないかと思われます。私が参加した読書会でも、包含についてかなり突っ込んだ議論が行われました。
P が真の場合のみ Q を論じる
「ならば」で一番理解しがたいのが、「PならばQ」だから P が偽ならば Q も偽であるべきなのに、真理値表を見ると P が偽であるにも関わらず、P ⊃ Q が真になることではないでしょうか。
ここで注意すべきなのが、日本語の文章上で使われる「ならば」と論理包含の「ならば」とは、本来似て非なるものだということです。
P ⊃ Q とは、P が真なら Q も真という意味であり、P が真なのに Q が偽の場合は命題に違反しているため P ⊃ Q は偽となります。そして P が偽の場合、命題がはなから成立しないため真になるということだそうです。このことを例を挙げて考えてみると
あるパソコンが壊れて動作しなくなったので修理するとします*1。修理すればパソコンは動作しますし、しなければ動きません。そして壊れてなければ修理する必要はありません。これを表にすると・・・・
故障 (P) | 修理 (Q) | 動作 (P ⊃ Q) |
した | する | する |
した | しない | しない |
してない | する | する |
してない | しない | する |
最後の二行ですが、PCが故障してなければ、修理するもしないも関係なくパソコンは動作します。というふうに、命題論理の「ならば」は、P が真の場合についてのみ Q の真偽を論じるのが正解のようです。ますます判りにくい気もしますが・・・まあこれも「慣れ」でしょうねw
ろんりと集合
本書で解説している論理学はあくまで概要だけなので、別の本で「論理学」をしっかり学んでみてもいいと思います。私のお勧めは、中内さんの「ろんりと集合」。砕けたイラストと思わず失笑せざるを得ないオヤジギャグの連発で、一般的な論理学の本より学びやすいと思います。例えばこんなお話も・・・
以下の主張は命題かどうか、理由をつけて論ぜよ・・・
(2)大阪では、赤信号というのは「注意して進め」の意味である。
「ろんりと集合」 P6
まあ、お進めですw
- 作者: 中内伸光
- 出版社/メーカー: 日本評論社
- 発売日: 2009/09/01
- メディア: 単行本
- 購入: 3人 クリック: 19回
- この商品を含むブログ (1件) を見る
*1:前提として修理は必ず成功すると考える