✖

命題論理の例題

この記事では、いくつかの論理式について、考えられる真理値の割り当てを真理値表を使って調べます。

例題1

論理式 ϕ = (p ∧ q) ∨ ¬q が真になるのはどんなときかを調べてみましょう。まず、命題変数 p と q を表に書きます。

pq11100100

次に、論理式の前半部分 (p ∧ q)、否定 ¬q、そして論理式全体を表に書き加えます。

pqp∧q¬qϕ11100100

ここで、3列目の値を求めます。これは単純な論理積です。同時に否定の列も求めます。否定の列には、2列目と反対の値を入れるだけです。

pqp∧q¬qϕ1110100101000001

最後に、いちばん右の列の値を求めます。これが論理式全体です。この表でいえば、「3列目と4列目の論理和」を求めることになります。結果は次のとおりです。

pqp∧q¬qϕ11101100110100000011

例題2

問題は同じで、今度の論理式は ϕ = (p ∧ ¬q) ⇔ (¬p ⇒ q) です。この論理式には、命題変数 p と q、およびその否定が出てきます。そこでまず、二つの命題変数とその否定の表を作ります。

pq¬p¬q1100100101100011

次に、論理式 p ∧ ¬q と ¬p ⇒ q を加えます。表にはそれぞれの命題の割り当ても、その否定の割り当てもあるので、これらはすぐに求められます。表は次のようになります。

pq¬p¬q(p∧¬q)(¬p⇒q)110001100111011001001100

最後に残るのは論理式全体の値で、これは最後の二つの列の同値です。

pq¬p¬q(p∧¬q)(¬p⇒q)ϕ1100010100111101100100011001

例題3

3番目の例題は少し難しくなります。命題変数を三つにするので、表の計算が複雑になります。論理式は ϕ = (¬(p ⇒ q)) ∧ (r ⇔ (¬p ∨ q)) です。

命題変数が三つあるので、真理値の割り当ては全部で8通りです。

pqr111110101100011010001000

あとは前の例題と同じように進め、それぞれの列の値を8行すべてについて求めます。表全体は次のようになります。

pqr¬p(p⇒q)(¬p∨q)¬(p⇒q)(r⇔(¬p∨q))ϕ111011010110011000101000100100000111011111010010111000001111010000111000

例題4

この例題は、ふつうの論理式ではなく文章題として出します。マイク、ジャック、ポールの3人の留学生が、にぎやかなパーティーに行こうとしています。ただ、3人はあまり仲がよくないので、パーティーに行くための条件をそれぞれつけています。条件は次のとおりです。

  1. マイクが行くならば、ジャックも行く。
  2. ポールがパーティーに来る、または「マイクが来るならば、ジャックは来ない」。
  3. ポールが来るのは、マイクが来ないかジャックが来ないとき、かつそのときに限る。

3人全員がパーティーに行くことはできるでしょうか。できないなら、だれがどの条件も破らずにパーティーに行けるでしょうか。

まず、文章で書かれた命題を命題変数と論理式に書き直す必要があります。命題変数を M、J、P(マイク、ジャック、ポール)とし、それぞれ「マイクはパーティーに行く」のような命題を表すことにします。一つ目の条件は M ⇒ J と書き直せます。「M ならば J」、つまり「マイクがパーティーに行くならば、ジャックもパーティーに行く」です。

二つ目の条件は次のように書き直します。この条件は「ポールがパーティーに来る、または…」で始まるので、論理和が必要なことは明らかです。そこで、ひとまず P ∨ … と書いておきます。文の残りは「マイクが来るならば、ジャックは来ない」です。これは含意で、右側にはさらに否定を使う必要があります。「ジャックは来ない」は ¬J です。含意全体は M ⇒ ¬J になります。これを先ほどの論理和につなげると、P ∨ (M ⇒ ¬J) になります。

三つ目の条件は次のように書き直します。まず「ポールが来るのは…とき、かつそのときに限る」は同値を表すので、P ⇔ … と書きます。続く「マイクが来ないかジャックが来ない」は ¬M ∨ ¬J と書き直せます。合わせると (P ⇔ (¬M ∨ ¬J)) になります。

これらの論理式をすべて表に入れて、値を求めます。

MJP(M⇒J)(P∨(M⇒¬J))(P⇔(¬M∨¬J))111110110101101011100010011111010110001111000110

3人全員がパーティーに行けるかどうかは、1行目を見ればわかります。1行目は3人全員が行く場合で、最初の三つの列がすべて1になっていることからわかります。すべての条件が満たされているでしょうか。一つ目の条件は満たされています(4列目)。二つ目も満たされています(5列目)。しかし、最後の条件は満たされていません(最後の列)。ここは0です。つまり、3人全員が行くと、三つ目の条件が満たされません。

そこで、条件を表す位置(最後の三つの列)がすべて1になっている行を探します。1は条件が満たされていることを表します。そうなる場合は二つあることがわかります。ジャックとポールが行き、マイクは行かない場合と、ポールだけが行く場合です。

三つの条件すべての論理積となる論理式 ϕ を表に加えて求めることもできます。この論理式は ϕ = ((M ⇒ J) ∧ (P ∨ (M ⇒ ¬J)) ∧ (P ⇔ (¬M ∨ ¬J))) です。これは、すべての論理式(すべての条件)が満たされるという、求めたい状態をそのまま表しています。表は次のようになります。

MJP(M⇒J)(P∨(M⇒¬J))(P⇔(¬M∨¬J))ϕ11111001101010101011010001000111111010110000111110001100

真理値表を使う方法の例題

与えられた論理式から表全体を自動で作るプログラムを書いたので、せっかくですからしっかり使ってみます。解いた論理式をさらにいくつか挙げます。

論理式 ((a ∧ ¬b) ∨ (b ∧ (b ⇒ a))) の真理値表は次のとおりです。

ab(a∧¬b)(b∧(b⇒a))((a∧¬b)∨(b∧(b⇒a)))11011101010100000000

論理式 (a ∨ ¬a) ⇔ (b ∧ ¬b) の真理値表は次のとおりです。

ab(a∨¬a)(b∧¬b)((a∨¬a)⇔(b∧¬b))11100101000110000100

論理式 ¬(a ∨ b) ⇔ (¬b ∧ ¬a) の真理値表は次のとおりです。

ab¬(a∨b)(¬b∧¬a)(¬(a∨b)⇔(¬b∧¬a))11001100010100100111

論理式 ϕ = (¬p ⇔ (q ∧ r)) ⇒ (p ∨ ¬(p ∧ q)) の真理値表は次のとおりです。

pqr(q∧r)¬(p∧q)(¬p⇔(q∧r))(p∨¬(p∧q))ϕ1111001111000111101011111000111101111111010010110010101100001011

論理式 ϕ = ¬(p ⇔ ¬q) ∧ (r ⇒ ¬p) ∧ (p ∨ r) の真理値表は次のとおりです。

pqr¬(p⇔¬q)(r⇒¬p)(p∨r)ϕ11110101101111101001010001100110110010010000111110001100

章: 命題論理, 論理式の真偽, 命題論理の例題