今回は、命題論理に関する内容だね!
楽しみです!
・論理学とは何か
・命題論理の基本
プログラムは論理的に書かれています。ここでいう論理的とは、論理学で定められている規則にしたがっているということです。したがって、プログラムを書くにしても読むにしても、論理学の知識が多少なりとも必要になってきます。そこで今回は、論理学とは何か、そしてその基本である命題論理について解説したいと思います。
論理学は、人間の思考や推論の原則や方法に関する学問です。論理学は、真理や正当性の基準を探求し、論証や論理的な推論の妥当性を分析することに焦点を当てます。
命題論理は、論理学の一分野であり、命題や論理的な文を扱う形式体系です。命題論理は、命題や論理的な関係を記号化して扱うことにより、推論や論証の妥当性を分析します。
命題とは、真偽が判断できる文のことを指します。例えば、「2は偶数である」といった文は命題とみなすことができます。命題論理では、これらの命題を論理記号で表現し、論理的な関係を記号や規則によって表現します。
命題論理では、命題変項と論理記号を用いて命題を表現します。
命題変項とは命題を表す記号のことで、P や Q などを用いて表します。例えば、「2は偶数である」という命題を P で表すことができます。このとき、P は真となります。
論理積は ∧ で表し、かつと読みます。 P ∧ Q が真となるのは、P と Q が共に真のときに限ります。論理積はプログラミング言語だと and を使って表されることが多いです。
論理和は ∨ で表し、またはと読みます。P ∨ Q が真となるのは、P か Q の少なくとも一つが真となるときです。
論理和はプログラミング言語だと or を使って表されることが多いです。
否定は ¬ で表し、でないと読みます。¬P が真となるのは、P が偽となるときです。
否定はプログラミング言語だと not を使って表されることが多いです。
含意は → で表し、ならばと読みます。P → Q が真となるのは、P が偽になるか Q が真になるときです。
含意はプログラミング言語だと if then を使って表されることが多いです。
それでは問題をいくつか解いてみましょう。
P, Q を真、R を偽とする。(P ∧ Q) → ¬R の真理値を求めよ。
解説
真を T、偽を F として真理表で考えると、
P | Q | R | P ∧ Q | ¬R | (P ∧ Q) → ¬R |
T | T | F | T | T | T |
となるので、(P ∧ Q) → ¬R の真理値は真です。
P を「2は偶数である」とし、 Q を「7は8より大きい」とする。P と Q を用いて、「2は偶数でないならば7は8より大きくない」を表し、その真理値を求めよ。
解説
まず、「2は偶数でない」は ¬P、「7は8より大きくない」は ¬Q で表せます。したがって、全体は ¬P → ¬Q で表せます。P が真、Q が偽であることを考慮して(1)と同様に考えると、
P | Q | ¬P | ¬Q | ¬P → ¬Q |
T | F | F | T | T |
となるので、 ¬P → ¬Q の真理値は真です。
P ∧ (P → Q) → Q が常に真となることを確かめよ。
解説
これも前の問題と同様に考えます。P と Q が真のときと偽のときで場合分けする必要があることに注意してください。
P | Q | P → Q | P ∧ (P → Q) | P ∧ (P → Q) → Q |
T | T | T | T | T |
T | F | F | F | T |
F | T | T | F | T |
F | F | T | F | T |
P ∧ (P → Q) → Q の列が全て T となっているため、常に真となります。
本記事では、命題論理について学んできました。前述した通り、論理学はプログラムの基盤となっています。ぜひ本記事の内容をしっかりと理解し、今後の開発に活かしてください。
各種お問い合わせ