論理「p →q」を考察する
資料: 「p → q」 ( p ならば q ) の真偽
pが仮定。qが結論
学生ならば人間である。
これを論理の「p→q」に当てはめ考えると一つの定義で4つの真偽が得られる
| p 学生 | q 人間 | p→q \(\neg p\vee q\) | 真偽 |
① | 真 | 真 | 真 | (学生である)かつ(人間である) |
② | 真 | 偽 | 偽 | (学生である)かつ(人間でない)ものは「学生ならば人間である」という主張から矛盾している |
③ | 偽 | 真 | 真 | (学生でない)かつ(人間である)ものは主張から矛盾しない |
④ | 偽 | 偽 | 真 | (学生でない)かつ(人間でない)ものは主張から矛盾しない |
仮定pが成り立たない場合は全て真。仮定pが成り立ち結論qが成り立たない時のみ偽
これは非常にシンプルな集合を作り出す
<TODO>
このpとqに対して関数\(f\left( x \right) \)を作成し検証してみる
<規則>
\(学生\left( x \right) \rightarrow 人間\left( x \right) \)
<事実>
\(学生\left( 太郎 \right) = 真\)
\(人間\left( 太郎 \right) = 真\)
\(学生\left( お婆ちゃん \right) = 偽\)
\(人間\left( お婆ちゃん \right) = 真\)
\(学生\left( 犬 \right) = 偽\)
\(人間\left( 犬 \right) = 偽\)
これらの規則と事実を各番号の変数\(x\)にあてはめ命題を作る
①\(学生\left( 太郎 \right) \rightarrow 人間\left( 太郎 \right) \)
学生の太郎は人間である
③\(学生\left( お婆ちゃん \right) \rightarrow 人間\left( お婆ちゃん \right) \)
学生でないお婆ちゃんは人間である
④\(学生\left( 犬 \right) \rightarrow 人間\left( 犬 \right) \)
学生でない犬は人間でない
論理「p →q」のC#コードでの使われかた
主張する論理に違反している命題を検出する際に論理「p →q」は非常に有効に機能する