コンピューターサイエンス入門:理論編
含意 (→) を AND/OR/NOT で表現
この回でやること
含意の真理値表を読み解き、前提が成り立たない場合や逆・対偶の関係を確かめます。
- 読む 約 7 分
- 最後にクイズ 1 問
「雨なら傘を持つ」は、いつ破られるのか
朝に「雨なら傘を持っていく」と約束したとします。夜に振り返って、この約束を破ったかどうかを判断します。
雨が降って傘を持っていた日は守っています。雨なのに傘を持たなかった日は破っています。では晴れた日はどうでしょうか。傘を持っていてもいなくても、雨の日についての約束は破っていません。
この「aならばb」を論理学では含意と呼び、a → b と書きます。aが前提、bが前提の成り立つときに求める結果です。ここではaが「雨が降った」、bが「傘を持った」です。
偽になるのは、1通りだけ
| a(雨) | b(傘) | aならばb |
|---|---|---|
| 偽 | 偽 | 真 |
| 偽 | 真 | 真 |
| 真 | 偽 | 偽 |
| 真 | 真 | 真 |
4通りのうち、前提が真で結果が偽の1通りだけが偽です。それ以外の3通りは真と決めます。「晴れたので約束を守る努力をした」という意味ではなく、この約束に反する出来事がなかったという判定です。
前提が偽なら、結果に関係なく真
前提が成り立たない場合を真とすることを、空虚な真と呼びます。日常語では不思議に感じても、条件付きの規則を読むときには役立ちます。
現場の話 「メール通知を選んだなら、アドレスの入力が要る」という入力チェックも含意です。通知を選んでいない人は、アドレスが空でもこの規則には違反しません。ただし、別の必須入力まで免除される意味ではありません。
違反は「通知を選んだ、かつ、アドレスがない」なので、合格はその否定です。含意は not a or b とも表せます。前提が偽なら左が真になり、前提が真ならbの結果で決まります。
Python
a = True # 通知を選んだ
b = False # アドレスがない
print((not a) or b) # False逆と対偶は、別の形
「傘を持ったなら雨だった」は、元の前提と結果を入れ替えた逆です。晴れでも傘を持つことはあるので、元の約束が真でも逆は偽になりえます。
「傘を持たなかったなら雨ではなかった」は対偶です。前提と結果を入れ替え、両方を否定します。対偶は元と必ず同じ真偽になります。どちらも雨なのに傘がない場合だけ偽だからです。
例題で確かめる
通知の申込み4件を調べます。通知選択とアドレス入力が順に「真・真」「真・偽」「偽・真」「偽・偽」です。違反は2件目だけです。合格は1、3、4件目の3件になります。通知を選ばない4件目も、この規則では合格です。