数学

大学数学の「わからない」を「わかる」に。線形代数、解析学、離散数学、確率・統計の基本科目から制御数学、複素解析などの応用科目まで。

情報

計算機システム、アルゴリズムの基本科目から、画像処理などの専門科目まで。ITエンジニアを目指す学生をサポート。

うさぎ模試

自分の実力を試す「うさぎ模試」。オリジナル演習問題と丁寧な解説で、試験対策もバッチリ。

大学生活

工大生のリアルな日常と生存戦略。就活とか工業大学生の恋愛など。

SHARE:

【真理値表マスター】うさぎでもわかる離散数学 第2羽 ブール代数と論理演算

離散数学で登場する「ブール代数」という概念。

難しそうな名前ですが、実は私たちが毎日使っているスマートフォンやコンピュータの頭脳の基本になっている、とても身近な数学の世界です。

離散数学の第2羽では、まず「ブール代数とは何か」を直感的に理解し、その後、具体的な計算ルールや公式について詳しく解説していきます。

目次

★ 動画でも解説しています!

本記事の内容は、動画でも解説しております。動画でご覧いただきたい方は、以下の動画をご覧ください。

1. ブール代数って何?

(1) 簡単に言うと

ブール代数とは、

  • 「0と1」というたった2つの数と
  • 「AND(かつ)」「OR(または)」「NOT(ではない)」という特殊な計算ルールだけでできている

とてもシンプルな数学の世界です。

私たちが普段使っている「整数」や「自然数」も、「どんな数が使えるか」と「どんな計算ができるか」がセットになった「数の世界」ですよね。

ブール代数もこれらと同じ、れっきとした「数の世界」の仲間なのです。

数の世界使える数使える計算
自然数1, 2, 3, 4, … 四則演算 (+, -, ×, ÷) など
整数…, -2, -1, 0, 1, 2, …四則演算 (+, -, ×, ÷) など
ブール代数0, 1AND, OR, NOT など…

※ AND, OR, NOT演算については、後ほど紹介します。なので、こんな演算があるんだぁ程度の理解でOKです。

(2) ブール代数の2つのポイント

ポイント① 使える数は「0」と「1」だけ

ブール代数の世界では、使える数がたったの 2つ しかありません。

  • 0 (偽, FALSE)
  • 1 (真, TRUE)

クイズ番組の「○か×か」、あるいは電気のスイッチの「ONかOFF」をイメージするとわかりやすいですね。

ポイント② 計算するときは、ブール代数の専用演算 (AND, OR, NOTなど) を使う

ブール代数では、足し算や掛け算の代わりに、専用の演算を使います。

2. 真理値表とは?

基本の計算ルールを説明する前に、「真理値表(しんりちひょう)」という大切な道具を紹介します。

(1) 真理値表の定義

真理値表とは、論理式に対して、すべての入力パターンとその結果を一覧にした表のことです。

具体的に言うと…

  • 入力変数(p, q, r など)に 0 か 1 を入れる
  • すべての組み合わせパターンを書き出す
  • それぞれのパターンで、式の結果がどうなるかを記録

のが真理値表です。

(2) なぜ真理値表が使えるのか?

ブール代数の世界では、変数に入る値は 0 か 1 の2通りだけです。

だから、変数の数に応じて、すべてのパターンを書き出せるのです。

変数の数パターン数計算式
1個 (p)2パターン\( 2^1 = 2 \)
2個 (p, q)4パターン\( 2^2 = 4 \)
3個 (p, q, r)8パターン\( 2^3 = 8 \)
n個\( 2^n \) パターン\( 2^n \)

たとえ、変数が3つの複雑そうな式でも、たった8通りのパターンを書き出すだけで、その振る舞いのすべてを理解することができます。

(3) 真理値表の例

例えば、変数が2個 (p, q) の場合、真理値表は以下のような形になります。

\( p \) \( q \)計算結果
00?
01?
10?
11?

この ? の部分に演算の結果 (0 or 1) を埋めていきます。

Tips.

真理値表の左側 \(p, q \) 数字の並びにも注目してください。

これは上から順に、00, 01, 10, 11 となっています。 実はこれ、2進数で 0, 1, 2, 3 のように数を増やしていく順番と同じです。

この『辞書順のような決まったルール』で書くのが、世界共通のマナーであり、ミスを防ぐコツです。

(4) 真理値表の表記について

真理値表の 0 と 1 は、F(False, 偽) と T(True, 真) を使って表すこともあります。

具体的に、以下の2つの表の意味は全く同じです。

\( p \) \( q \)計算結果
000
010
100
111
\( p \) \( q \)計算結果
TTT
TFF
FTF
FFF

ちなみに、T (True) と F (False) で書く場合は、0/1の時とは逆に T から書き始めるパターン(TT, TF, FT, FF の順)が主流です。

コンピュータ(0/1)では『0から数える』のが基本ですが、人間の論理(T/F)では『正しい場合(True)から考える』という習慣があるため、書き出しの順序が異なることが多いのです。

3. ブール代数の基本計算ルール

(1) AND (論理積)

ANDは日本語で「かつ」という意味です。

ルールはとてもシンプルで、2つの材料が両方とも「1(真)」のときだけ、結果が「1(真)」になるというものです。

身近な例: 自動販売機

以下の2つの条件を両方とも満たしたときに、ジュースが出てくる自動販売機を考えてみましょう。

  • お金を入れる \( p \)
  • ボタンを押す \( q \)

このとき、自動販売機の動作は、以下の表のとおりになります。

動作\( p \) \( q \)結果 \( r \)
お金を入れて、ボタンを押す。11ジュースが出る \( r = 1 \)
お金を入れただけ。10ジュースは出ない \( r = 0 \)
ボタンを押しただけ。01ジュースは出ない \( r = 0 \)
何もしない。00ジュースは出ない \( r = 0 \)

このように、両方の条件がそろわないとダメなのがANDです。

演算記号

世界記号使用例
数学の世界\( \land \)\( p \land q \)
情報の世界\( \cdot \) または 省略\( A \cdot B \) または \( AB \)

数学の世界

これは、ANDの「A」の形に似ている、と覚えましょう! 「A」の横棒をなくすと、ちょうど \( \land \) の形になりますよね。

情報の世界

情報の教科書では、よく \( A \cdot B \) のように掛け算の記号を使います。 これは、「0と1の掛け算」と同じ動きをするからです。

  • \( 1 \cdot 1 = 1 \)
  • \( 1 \cdot 0 = 0 \)

うさぎ塾でのルール

うさぎ塾の離散数学では、基本として**「数学の世界」の記号 \( \land \) を使って解説していきます。 「Aに似てるやつ!」と覚えてくださいね。

ANDの真理値表

\( p \) \( q \)\( p \land q \)
000
010
100
111

(2) OR(論理和)

ORは日本語で「または」という意味です。

ルールはとてもシンプルで、2つの材料のうち、どちらか片方でも「1(真)」であれば、結果が「1(真)」になるというものです。

身近な例: 休日の約束

以下の2つの条件を、どちらか片方でも満たしたら遊びに行く。

  • 天気が晴れ \( p \)
  • 旅行の気分である \( q \)

このとき、旅行に行くかどうかは、以下の表のとおりになります。

動作\( p \) \( q \)結果 \( r \)
晴れだし、旅行の気分11旅行に行く \( r = 1 \)
晴れだが、旅行の気分ではない10旅行に行く \( r = 1 \)
晴れではないが、旅行の気分01旅行に行く \( r = 1 \)
晴れでもないし、旅行の気分でもない00旅行に行かない \( r = 0 \)

このように、片方の条件さえそろえばOKなのがORです。

演算記号

世界記号使用例
数学の世界\( \lor \)\( p \lor q \)
情報の世界\( + \)\( A + B \)

数学の世界

これは、さっきの AND記号 \( \land \) をひっくり返した形 です。 「谷(Valley)」の \( \lor \)、または「Aの逆」と覚えておくのが良いでしょう。

情報の世界

情報の教科書では、よく \( A + B \) のように足し算の記号を使います。 これは、四則演算の足し算とほぼ同じ動きをするからです。

  • \( 0 + 0 = 0 \)
  • \( 1 + 0 = 1 \)

ただし、一つだけ例外があります!

普通の数学なら \( 1 + 1 = 2 \) ですが、ブール代数の世界には「2」という数字がありません。

だから、\(1 + 1 = 1 \) (真と真を合わせても真のまま)という特別なルールになります。これだけ注意してくださいね。

うさぎ塾でのルール

うさぎ塾の離散数学では、こちらも「数学の世界」の記号 \( \lor \) を使っていきます。

谷の形、もしくはANDの逆!とセットで覚えましょう。

ORの真理値表

\( p \) \( q \)\( p \lor q \)
000
011
101
111

(3) NOT(否定)

NOTは日本語で「ではない」という意味です。

ルールは「0と1をひっくり返す」、ただそれだけです。

身近な例: 冷蔵庫のライト

  • ドアが閉まっているとき(スイッチON)は、電球がOFF
  • ドアが開いているとき(スイッチOFF)は、電球がON

このように、入力と出力が『あべこべ(反転)』になる動作こそが、NOT回路です。

スイッチの動作電球の動作
ドア閉 (スイッチON) \( p = 0 \)電球がON \( q = 1 \)
ドア開 (スイッチOFF) \( p = 1 \)電球がOFF \( q = 0 \)

演算記号

世界記号使用例
数学の世界\( \lnot \)\( \lnot p \)
情報の世界\( \overline{} \)\( \overline{A} \)

数学の世界

カギの形、通せんぼの壁のイメージです。

元の変数 \( p \) のことを「ダメだよ!」って否定している、通せんぼの壁みたいに覚えると分かりやすいです!

情報の世界

情報の世界では、文字の上にバー \( \overline{} \) をつけるだけです。

帽子みたいでわかりやすいですね。

うさぎ塾でのルール

うさぎ塾の離散数学では、こちらも「数学の世界」の記号 \( \lnot \) を使っていきます。

NOTの真理値表

\( p \) \( \lnot p \)
01
10

(4) 基本計算ルールのまとめ

演算日本語ルールイメージ別名数学記号使用例
ANDかつ両方1のときだけ、1掛け算論理積\( \land \)\( p \land q \)
ORまたはどちらか1なら、1足し算論理和\( \lor \)\( p \lor q \)
NOTでない0と1をひっくり返す反転否定\( \lnot a \)\( \lnot p \)

4. ブール代数の応用計算ルール

(1) ならば (条件)

「ならば」は矢印の記号 \( \to \) を使って \( p \to q \) と書き、「もしpが真ならば、qも真である」という意味を表します。

身近な例: 傘の約束

「もし雨が降っている(p)ならば、傘を持っていく(q)」という約束を考えます。

動作\( p \) \( q \)結果 \( r \)
雨が降っており、傘を持っていく11約束は守られている \( r = 1 \)
雨が降っているが、傘を持って行かない10約束破り \( r = 0 \)
雨が降っていないが、傘を持っていく01約束を破っていない \( r = 1 \)
雨も降っていないし、傘も持っていない00約束を破っていない \( r = 0 \)

一番のクセモノは、「雨が降らなかったとき($p=0$)」の扱いです。

この約束はあくまで「雨が降ったら」の話。晴れた日にあなたが迎えに行こうが行くまいが、「嘘つき!」と怒られることはありません。

論理学には**「嘘をついていなければ、約束は守られた(真=1)」**とみなす、心の広いルールがあります。

つまり、「ならば($p \to q$)」が偽(0)になるのは、たった1パターンだけです。

  • ❌ 嘘つき(0): 雨が降った($p=1$)のに、迎えに行かなかった($q=0$)とき

これ以外はすべて「真(1)」になると覚えておきましょう!

真理値表

\( p \) \( q \)\( p \to q \)
001
011
100
111

(1) 排他的論理和(XOR)

排他的論理和は XOR(エックスオア) と呼び、記号 \( \oplus \) を用いて \( p \oplus q \) のように表します。

ルールは、2つの材料のうち、どちらか一方が「1 (真)」のときだけ、結果が「1 (真)」になるというものです。

両方1のときは、「0 (偽)」になるのが、ORとの違いです。

身近な例:トリック・オア・トリート

ハロウィンの「トリック・オア・トリート」は、「いたずら(Trick)か、お菓子(Treat)か、どっちか一つ」という意味です。

ここで、

  • お菓子をもらう動作を \( p \)
  • いたずらされる動作を \( q \)

として、「トリック・オア・トリートのルールを順守しているか \( r \)」を確認しましょう。

動作\( p \) \( q \)結果 \( r \)
お菓子だけもらった10OK \( r = 1 \)
いたずらだけされた01OK \( r = 1 \)
お菓子をもらって、いたずらもされた11NG \( r = 0 \)
何も起こらなかった00NG \( r = 0 \)

トリック・オア・トリート、まさにXORの動きにそっくりですよね!

次回から、離散数学履修済みの人には「トリック・XOR・トリート!」と言ってみてくださいね。

真理値表

表13.排他的論理和の真理値表

\( p \) \( q \)\( p \oplus q \)
000
011
101
110

5. 計算の順序

例えば、\( 5 + 2 \times 6 \) を計算するとき、次のように先に \( 2 \times 6 \) を計算しますよね。\[\begin{align*}
5 + 2 \times 6 & = 5 + 12
\\ & = 17
\end{align*}\]

ブール代数にも、四則演算のように計算の優先順位が決まっています。

(1) 優先順位

実際に、次の論理式はどのような順序で計算するんでしょうか?\[
\lnot 0 \lor ( 1 \land 1 ) \land 0 \to 0
\]

実際に計算順序を見ながら、確認していきましょう。

表14.計算の優先順位

順位演算種類記号覚え方・詳細計算例
1括弧( )最も強い、内側から計算[1]例えば、\( p \to \textcolor{blue}{(} q \land \textcolor{red}{(} r \lor s \textcolor{red}{)} \textcolor{blue}{)} \) であれば、\( \textcolor{red}{r \lor s} \) … Continue reading\( \lnot 0 \lor \textcolor{red}{( 1 \land 1 )} \land 0 \to 0 \)
2NOT\( \lnot \)四則演算のマイナス記号のように[2]例えば、-3 + 5は、-(3+5) = 8 ではなく、(-3) + 5 = 2 と計算しますよね。、優先的に計算する\( \textcolor{red}{\lnot 0} \lor 1 \land 0 \to 0 \)
3AND\( \land \)四則演算の掛け算のイメージ\( 1 \lor \textcolor{red}{1 \land 0} \to 0 \)
4OR\( \lor \)四則演算の足し算のイメージ
\( \textcolor{red}{1 \lor 0} \to 0 \)
5ならば\( \to \)最も弱い\( \textcolor{red}{1 \to 0} \)

(2) 注意: XORの計算順位

これまで学んだ5つの演算子の中で、「XOR \(\oplus \)」だけは少し注意が必要です。

実はXORは、使われる文脈や分野によって優先順位の解釈が変わることがある演算子です。AND \( \land \) の次に優先される(ORより強い)と考える場合もあれば、OR \( \lor \) の次に優先されると考える場合もあります。

そのため、XORを含む式を書くときは、解釈のブレを防ぐために後述する「括弧」を積極的に使うことをお勧めします。

(3) 同じ演算子の計算順序

優先順位が同じ演算子(または全く同じ演算子)が連続した場合、どちらから先に計算するかを決める「結合規則」というルールがあります。

[i] 左から計算する(左結合)

AND ($\land$)、OR ($\lor$)、XOR ($\oplus$) は、通常の四則演算と同じく左から順に計算します。

例: \( p \land q \land r \) の計算順序\[
( p \land q ) \land r
\]※ \( p \land q \) を先に計算する。

[ii] 右から計算する(右結合)

ならば ($\to$) が連続した場合は特別で、数学では珍しく右から順に計算します[3]ネット上で検索して出てくる一部の真理値表作成ツールでは、$\to$ が連続する $p \to q \to r$ … Continue reading

例: \( p \to q \to r \) の計算順序\[
p \to (q \to r)
\]※ \( q \to r \) を先に計算する。

※ 左から計算する、つまり\[
(p \to q) \to r
\]としまうと全く違う結果になるため、十分に注意しましょう。

(4) 最も大切なルール

ここまで優先順位や結合規則について説明してきましたが、ブール代数において最も大切なルールがあります。

それは、「実際に式を書くときは、なるべく括弧 () を使って、計算の順序が誰にでもハッキリと分かるように書くこと」です。

先ほどのこの式をもう1回見てみましょう。\[
\neg 0 \lor (1 \land 1) \land 0 \to 0
\]ルールを知っていれば正しく計算できますが、パッと見てどこから手をつければいいか迷ってしまいますよね。

しかし、以下のように括弧を使って書かれていればどうでしょうか。\[
(\neg 0 \lor ( (1 \land 1) \land 0) ) \to 0
\]

この式なら、優先順位のルールを完璧に覚えていなくても、内側の括弧から順番に処理していけば絶対に間違えることはありません。

どんなルールを習っても、結局は「括弧は全てを解決する」のです。

自分が式を書くときは、読み手への思いやりとして「親切な式(括弧を省略しすぎない式)」を書くように心がけましょう

※ 本記事では、括弧の順番で困らないように、すべての問題について括弧を使って計算順序を明示するようにしています。

6. 論理的同値と真理値表

(1) 論理的同値ってなに?

数式の $a+b$ と $b+a$ が同じ結果になるように、ブール代数にも「見た目は違うが、結果は完全に同じになる式」のペアが存在します。

  • 定義: ブール代数の式に出てくる変数 ( \( p, q \) など)にどんな値(0か1)を入れても、最終的な計算結果が必ず一致すること。
  • 記号: イコールが3本線になった \( \equiv \) を使って表します。

(2) 論理的同値の証明ツール「真理値表」

普通の数学(整数問題などの証明問題)では、数字が無限に続くため「すべてのパターン」を調べることは不可能です。

しかし、ブール代数は「0と1だけの世界」です。

  • 変数が2個なら: 4パターン(\( 2^2 \) 個)
  • 変数が3個なら: 8パターン(\( 2^3 \) 個)

このようにパターン数が限られているため、「考えられる全パターンを真理値表に書き出して比較する」という最強の証明方法が使えます。

真理値表の結果の列が完全に一致すれば、それだけで「2つの式は同値である」と証明できます。

(3) ならば(→) とXOR (\( \oplus \)) の書き換え

発展的な演算子である「ならば($\to$)」や「XOR($\oplus$)」も、真理値表を使えば、基本の3つ(AND, OR, NOT)だけで表せることを証明できます。

実際に、真理値表を書いて証明してみましょう。

① ならばの書き換え: \( p \to q \equiv \lnot p \lor q \)

\( p \) \( q \)\( \lnot p \)\( \lnot p \lor q \)\( p \to q \)
00111
01111
10000
11011

 ※ \( p \to q \) と \( \lnot p \lor q \) の列の結果が完全に一致していますね。

② XORの書き換え: \( p \oplus q \equiv ( \lnot p \land q ) \lor ( p \land ( \lnot q ) ) \)

\( p \) \( q \)\( \lnot p \)\( \lnot q \)\( \lnot p \land q \)\( p \land ( \lnot q ) \) \( ( \lnot p \land q ) \lor ( p \land ( \lnot q ) ) \)\( p \oplus q \)
00110000
01101011
10010111
11000000

 ※ \( p \oplus q \) と \( ( \lnot p \land q ) \lor ( p \land ( \lnot q ) ) \) の列の結果が完全に一致していますね。

おまけ: \( p \to (q \to r) \) と \( (p \to q) \to r \) が異なることの証明

真理値表を書くことで、2つの式が同値でない(結果が異なる式)であることも証明できます。

先ほど紹介した、次の2つの式が同値でないことを真理値表を使って書いてみましょう。

\( p \) \( q \)\( r \)\( p \to q \)\( q \to r \)\( p \to (q \to r) \)\( (p \to q) \to r \)
0001110
0011111
0101010
0111111
1000111
1010111
1101000
1111111

\( p \to (q \to r) \) と \( (p \to q) \to r \) の列の結果が完全には一致しておらず、結果が異なる行があります。

なので、\( p \to (q \to r) \) と \( (p \to q) \to r \) は別物ということが分かります。

7. ブール代数で重要な8つの法則(公式集)

論理的同値($\equiv$)の中でも、複雑な式を簡単にするための「便利な道具」として特によく使うパターンを「公式集」としてまとめました。

自然数や整数の計算ルール(交換法則など)と似ているものも多いので、難しく構えずに見ていきましょう。

注意: 公式を使う前の準備

これから紹介する法則はすべて、基本演算子(AND, OR, NOT)だけで書かれている式でのみ適用可能です。

もし式の中に「ならば($\to$)」や「XOR($\oplus$)」がある場合は、必ず基本形($\land, \lor, \neg$)に書き換えてから公式を適用してください

法則1: 交換則 [Commutative Law]

公式: \[
p \land q \equiv q \land p
\]\[
p \lor q \equiv q \lor p
\]

直感的な説明:

2×3と、3×2が同じように、変数の前後を入れ替えても結果は同じです。

真理値表による証明:

\( p \land q \equiv q \land p\)

\( p \) \( q \)\( p \land q \)\( q \land p \)
0000
0100
1000
1111

\( p \lor q \equiv q \lor p \)

\( p \) \( q \)\( p \lor q \)\( q \lor p \)
0000
0111
1011
1111

法則2: 結合則 [Associative Law]

公式: \[
( p \land q ) \land r \equiv p \land ( q \land r )
\]\[
( p \lor q ) \lor r \equiv p \lor ( q \lor r )
\]

直感的な説明:

同じ演算子 (AND, OR) が続く場合、どこから計算しても(カッコの位置をズラしても)結果は同じです[4]AND, ORが混ざっている式は、計算順序を勝手に入れ替えてはいけません。例えば、\( p \land ( q \lor r) \) を \( ( p \land q ) \lor r \) … Continue reading

四則演算でも、以下の2つの式

  • \( (2+3) + 4 \) と \( 2+ (3+4) \)
  • \( (2 \times 3) \times 4 \) と \( 2 \times (3 \times 4) \)

が同じ結果になるのと同じです。

真理値表による証明:

\( ( p \land q ) \land r \equiv p \land ( q \land r ) \)

\( p \) \( q \)\( r \)\( p \land q \)\( q \land r \)\( ( p \land q ) \land r \)\( p \land ( q \land r )\)
0000000
0010000
0100000
0110100
1000000
1010000
1101000
1111111

\( ( p \lor q ) \lor r \equiv p \lor ( q \lor r ) \)

\( p \) \( q \)\( r \)\( p \lor q \)\( q \lor r \)\( ( p \lor q ) \lor r \)\( p \lor ( q \lor r )\)
0000000
0010111
0101111
0111111
1001011
1011111
1101111
1111111

法則3: 分配則 [Distributive Law]

公式: \[
p \land ( q \lor r ) \equiv ( p \land q ) \lor ( p \land r)
\]\[
p \lor ( q \land r ) \equiv ( p \lor q ) \land ( p \lor r )
\]

直感的な説明:

カッコの外にある演算子を、カッコの中のそれぞれの変数に配る(展開する)ことができます。

真理値表による証明:

\( p \land ( q \lor r ) \equiv ( p \land q ) \lor ( p \land r) \)

\( p \) \( q \)\( r \)\( q \lor r \)\( p \land q \)\( p \land r \)\( p \land ( q \lor r ) \)\( ( p \land q ) \lor ( p \land r)\)
00000000
00110000
01010000
01110000
10000000
10110111
11011011
11111111

\( p \lor ( q \land r ) \equiv ( p \lor q ) \land ( p \lor r ) \)

\( p \) \( q \)\( r \)\( q \land r \)\( p \lor q \)\( p \lor r \)\( p \lor ( q \land r ) \)\( ( p \lor q ) \land ( p \lor r)\)
00000000
00100100
01001000
01111111
10001111
10101111
11001111
11111111

法則4: 恒等則 [Identity Law]

公式: \[
p \land 1 \equiv p
\]\[
p \lor 0 \equiv p
\]

直感的な説明:

1(真)とのAND、0(偽)とのORは、相手 \( p \) の値に全く影響を与えません。

真理値表による証明:

\( p \land 1 \equiv p \)

\( p \) \( 1 \)\( p \land 1 \)
010
111

\( p \lor 0 \equiv p \)

\( p \) \( 0 \)\( p \lor 1 \)
000
101

余談:

恒等則とは異なりますが、\( p \land 0 \equiv 0 \), \( p \lor 1 \equiv 1 \) のように、結果が固定されるような性質もあります。

法則5: 同一則/べき等則 [Idempotent Law]

公式: \[
p \land p \equiv p
\]\[
p \lor p \equiv p
\]

直感的な説明:

自分自身との計算は、自分自身になります。

「テストで100点を取る」かつ「テストで100点を取る」は、結局1回言っているのと同じです。

真理値表による証明:

\( p \) \( p \land p \)\( p \lor p \)
000
111

[補足] 自分自身とのAND, ORは3回以上とっても、自分自身です。

\[
p \land p \land \cdots \land p \equiv p
\]\[
p \lor p \lor \cdots \lor p \equiv p
\]

法則6: 補元則 [Completement Law]

公式: \[
p \land (\lnot p) \equiv 0
\]\[
p \lor (\lnot p) \equiv 1
\]

直感的な原理:

例えば、学校に行くか行かないかを考えましょう。

  • 「学校に行く」と「学校に行かない」が同時に起こることは絶対ありません。
    → AND は 0(偽)になります。
  • 「学校に行く」と「学校に行かない」のどちらかには、必ずなりますね。
    → OR は必ず 1(真)になります。
\( p \) \( \lnot p \)\( p \land (\lnot p) \)\( p \lor (\lnot p) \)
0100
1011

真理値表による証明:

法則7: 吸収則 [Absorption Law]

公式: \[
p \land (p \lor q) \equiv p
\]\[
p \lor (p \land q) \equiv p
\]

直感的な原理:

例えば、\( p \) を「数学の試験に合格」、\( q \) を「理科に合格」で考えてみましょう。

\( p \land (p \lor q) \equiv p \)

「数学の試験に合格した」かつ「数学か理科のどちらかに合格した」という条件を満たすのは、結局「数学の試験に合格した人」になりますよね。

\( p \lor (p \land q) \equiv p \)

「数学の試験に合格した」または「数学と理科の両方に合格した」という条件を満たすのも、結局「数学の試験に合格した人」になりますよね。

真理値表による証明:

\( p \) \( q \)\( p \lor q \)\( p \land q \)\( p \land (p \lor q) \equiv p \)\(p \lor (p \land q) \equiv p \)
000000
011000
101011
111111

法則8: ド・モルガンの法則 [De Morgan's Law]

公式: \[
\lnot (p \land q) \equiv \lnot p \lor ( \lnot q)
\]\[
\lnot (p \lor q) \equiv \lnot p \land ( \lnot q)
\]

直感的な原理:

NOT \( \neg \) が式全体にかかっているとき、「長い否定をブチッと切って、それぞれの変数に分け、真ん中の演算子(AND / OR)をひっくり返す」と同値になる、という魔法のような法則です。

一見信じがたい変形ですが、これも真理値表を使えば簡単に証明できます。

真理値表による証明:

\( \lnot (p \land q) \equiv \lnot p \lor ( \lnot q) \)

\( p \) \( q \)\( \lnot p \)\( \lnot q \)\( p \land q \)\( \lnot (p \land q ) \)\( \lnot p \lor ( \lnot q) \)
0011011
0110011
1001011
1100100

\( \lnot (p \lor q) \equiv \lnot p \land ( \lnot q) \)

\( p \) \( q \)\( \lnot p \)\( \lnot q \)\( p \lor q \)\( \lnot (p \lor q ) \)\( \lnot p \land ( \lnot q) \)
0011011
0110100
1001100
1100100

高校数学とのつながり:

「AとBの重なり(共通部分)じゃないところ」は、「Aじゃないところ」と「Bじゃないところ」の「和集合」と同じになる、というベン図のルールを覚えているでしょうか。\[
\overline{A \cap B} = \bar{A} \cup \bar{B}
\]\[
\overline{A \cup B} = \bar{A} \cap \bar{B}
\]実は、このド・モルガンの法則は、高校数学の「集合」で学んだこの仕組みと全く同じです。

論理演算の「AND($\land$)、OR($\lor$)」と、集合の「共通部分($\cap$)、和集合($\cup$)」は、全く同じ計算ルールを持つ兄弟のような関係なのです。

8. 練習問題にチャレンジ

では、ここからは練習問題にチャレンジしてみましょう。

3問用意しています。

練習1: 真理値表と論理的同値

練習1

つぎの、3つの論理式[i]~[iii]について、(1)~(4)の問いに答えなさい。

  • [i] \( p \to ( q \to r) \)
  • [ii] \( (p \lor r ) \land ( q \to r ) \)
  • [iii] \( (p \land q ) \to r \)

(1) 真理値表を書きなさい。

(2) [i], [ii], [iii]のうち、同値なペアの組を答えなさい。

(3) 集合 \( A \) を次のように定義する。\[
A = \left\{ p \to ( q \to r), \ (p \lor r ) \land ( q \to r ) , \ (p \land q ) \to r \right\}
\]論理的同値関係 \( \equiv \) による集合 \( A \) の商集合 \( A /{\equiv} \) を求めなさい。

(4) (2)で答えたペアが論理的同値であることを、式変形を使って証明しなさい。

練習2: 論理的同値関係による商集合を求める問題

練習2

集合 \( L \) をつぎのように定義する。\[ L = \{ (p \to q) \to (p \land r), \ \lnot (p \to r) \land (q \to r) , \ p \land (q \to r) , \ (p \to q) \to r \} \]

このとき、論理的同値関係 \( \equiv \) による集合 \( L \) の商集合 \( L/{\equiv} \) を求めなさい。

練習3: 命がけの扉選び!?

練習3

あなたはうさぎです。

2つの部屋A、Bがあります。それぞれの部屋には、「にんじん🥕」か「オオカミ🐺」のどちらかが入っている。

にんじんの部屋を開ければ、にんじんを食べられてクリアだが、オオカミの扉を開けてしまうと、あなたはオオカミに食べられてしまいます。

ここで、部屋の扉にはそれぞれ次のような貼り紙がある。

貼り紙1貼り紙2
Aの部屋はにんじん、かつ、Bの部屋はオオカミである。片方の部屋ににんじん、もう片方の部屋にオオカミがいる。

★ 重要条件:

貼り紙1と貼り紙2のうち、1枚は本当(真)で、もう1枚はウソ(偽)です。

オオカミに食べられずに、確実ににんじんをゲットするには、どの扉を開けるべきでしょうか。(or 扉を開けずにニンジンをあきらめるべきでしょうか。)

9. 練習問題の答え

解答1: 練習1の答え

(1)

真理値表を書いていきましょう。

※ 今回のように、複雑な式の真理値表を書くときは、\( q \to r \) のように、中の計算(パーツ)をするための列も書いておくのがコツです。

[i] \( p \to ( q \to r) \)

\( p \) \( q \)\( r \)\( q \to r \)\( p \lor r \)\( p \land q \)[i] \( p \to (q \to r) \)[ii] \( (p \lor r ) \land ( q \to r ) \)[iii] \( (p \land q ) \to r \)
000100101
001110111
010000101
011110111
100110111
101110111
110011000
111111111

(2)

同値なものを見つけるときは、真理値表の最終的な答えの列 [i], [ii], [iii] に着目しましょう。

\( p \) \( q \)\( r \)[i] \( p \to (q \to r) \)[ii] \( (p \lor r ) \land ( q \to r ) \)[iii] \( (p \land q ) \to r \)
000101
001111
010101
011111
100111
101111
110000
111111

すると、[i], [iii] の列の 0/1 が完全に一致していますね。

なので、[i], [iii] が同値なペアということが分かります。

(3)

「商集合 \( A/\equiv \)」という言葉は少し難しく聞こえますが、要は「同値なもの(=仲間)同士でグループ分けをした、そのグループの集まりを答えてください」、という意味です。

今回は論理的同値関係による商集合なので、以下の要素([i]~[iii]の論理式)を論理的同値なもの同士でグループ分けをすればOKです。

  • [i] \( p \to ( q \to r) \)
  • [ii] \( (p \lor r ) \land ( q \to r ) \)
  • [iii] \( (p \land q ) \to r \)

ここで前の問題より、[i]と[iii]は論理的同値(=同じ仲間)であることが分かっていますね。

なので、集合 $A$ の要素は、次の2つのグループに分けることができます。

  • グループ1: \( p \to ( q \to r) , ( p \land q ) \to r \)
  • グループ2: \( (p \lor r ) \land ( q \to r ) \)

最後に、それぞれのグループを中括弧 { } で囲んで「ひとつの要素」とし、それらをさらに大きな中括弧 { } でひとまとめにしたものが商集合の答えとなります。

\[
A / {\equiv} \ = \left\{ \textcolor{blue}{ \{ p \to ( q \to r) , ( p \land q ) \to r \} } , \ \{ (p \lor r ) \land ( q \to r ) \} \right\}
\]

※ 中括弧 { } が二重になっているのは、商集合は「グループ(集合)」をさらに「ひとまとめ(集合)」にするためです。

(4)

[i] \( p \to ( q \to r) \) を変形していき、[iii] \( (p \land q) \to r \) を目指します。

Step1. 括弧の内側の式にならばの変形公式 \( \textcolor{red}{p} \to \textcolor{blue}{q} \equiv \textcolor{red}{\lnot p} \lor \textcolor{blue}{q} \) を適用します。\[
p \to ( \textcolor{red}{q} \to \textcolor{blue}{r}) \equiv p \to ( \textcolor{red}{\lnot q} \lor \textcolor{blue}{r} )
\]

Step2. 括弧の外側の式にならばの変形公式 \( \textcolor{red}{p} \to \textcolor{blue}{q} \equiv \textcolor{red}{\lnot p} \lor \textcolor{blue}{q} \) を適用します。\[
\textcolor{red}{p} \to \textcolor{blue}{( \lnot q \lor r )} \equiv \textcolor{red}{\lnot p} \lor \textcolor{blue}{( \lnot q \lor r )}
\]

Step3. 結合則(法則2)で、括弧の位置を変えます。 \[
\lnot p \lor ( \lnot q \lor r ) \equiv ( \lnot p \lor (\lnot q) \lor r  )
\]

Step4. ドモルガンの法則 \( \lnot (p \land q) \equiv \lnot p \lor ( \lnot q) \) を逆に使い、\( \lnot \) を括弧の外に出します。\[
( \lnot p \lor (\lnot q) ) \lor r \equiv \lnot ( p \land q) \lor r
\]

Step5. ならばの変形公式 \( \textcolor{red}{p} \to \textcolor{blue}{q} \equiv \textcolor{red}{\lnot p} \lor \textcolor{blue}{q} \) を逆に適用します。\[
\textcolor{red}{\lnot ( p \land q )} \lor \textcolor{blue}{r} \equiv \textcolor{red}{ ( p \land q ) } \to \textcolor{blue}{r}
\]

この5ステップで、[iii] \( (p \land q) \to r \) の式と論理的同値であることが証明できます。

解答2: 練習2の答え

練習1と同じように、この3ステップで答えを出していきましょう。

  • Step1. 与えられた集合内のすべての論理式について、真理値表を作成する。
  • Step2. 完成した真理値表の出力結果を見比べ、結果が完全に一致する論理式(=同値なもの)を見つけ出し、グループ分けをする。
  • Step3. 分けられたそれぞれのグループを中括弧 { } で囲んで「ひとつの要素」とし、それらをさらに全体を包む大きな中括弧 { } でひとまとめにすれば、商集合の答えとなります。

まずは、それぞれの論理式の真理値表を書いていきます。

\( (p \to q) \to (p \land r) \)

\( p \) \( q \)\( r \)\( p \to q \)\( p \land r \)\( (p \to q) \to (p \land r) \)
000100
001100
010100
011100
100001
101011
110100
111111

\( (\lnot p \to r) \land (q \to r) \)

\( p \) \( q \)\( r \)\( \lnot p \)\( \lnot p \to r \)\( q \to r \)\( (\lnot p \to r) \land (q \to r) \)
0001010
0011111
0101000
0111111
1000111
1010111
1100100
1110111

\( p \land (q \to r) \)

\( p \) \( q \)\( r \)\( q \to r \)\( p \land (q \to r) \)
00010
00110
01000
01110
10011
10111
11000
11111

\( (p \to q) \to r \)

\( p \) \( q \)\( r \)\( p \to q \)\( (p \to q) \to r \)
00010
00111
01010
01111
10001
10101
11010
11111

つぎに、各論理式の計算結果を比較してみましょう。

\( p \) \( q \)\( r \)\( (p \to q) \to (p \land r) \)\( (\lnot p \to r) \land (q \to r) \)\( p \land (q \to r) \)\( (p \to q) \to r \)
0000000
0010101
0100000
0110101
1001111
1011111
1100000
1111111

この計算結果より、論理式をつぎの2つのグループに分けることが出来ます。

  • グループ1: \( (p \to q) \to (p \land r) \), \( p \land (q \to r) \)
  • グループ2: \( (\lnot p \to r) \land (q \to r) \), \( (p \to q) \to r\)

最後に、それぞれのグループを中括弧 { } で囲んで「ひとつの要素」とし、それらをさらに大きな中括弧 { } でひとまとめにしたものが商集合の答えとなります。

\[
A / {\equiv} \ = \left\{ \ \textcolor{red}{ \{ (p \to q) \to (p \land r), \ p \land (q \to r) \} } , \ \textcolor{blue}{ \{(\lnot p \to r) \land (q \to r), \ (p \to q) \to r \} } \right\}
\]

解答3: 練習3の答え

重要条件「貼り紙1と貼り紙2のうち、1枚は本当(真)で、もう1枚はウソ(偽)です。」から、次の2パターンを調べればOKです。

  • パターン1: 貼り紙1が本当(真)、貼り紙2がウソ(偽)
  • パターン2: 貼り紙1がウソ(真)、貼り紙2が本当(偽)

この2パターンをそれぞれ調べていきましょう。

◇ パターン1: 貼り紙1が本当(真)、貼り紙2がウソ(偽)

貼り紙1が「真」なので、この時点で部屋の中身は「A = にんじん🥕、B = オオカミ🐺」で確定します。

しかし、この状態で貼り紙[2]の内容(片方がにんじんで、もう片方がオオカミ)を確認すると、内容が正しい状態、つまり「真」になってしまいます

これは「[2]はウソ(偽)である」という最初の仮定と矛盾するため、パターン1 はあり得ないことがわかります。

◇ パターン2: 貼り紙1がウソ(偽)、貼り紙2が本当(真)

貼り紙1が「偽」であるということは、式全体を否定(NOT)するということです。

ここで先ほど学んだド・モルガンの法則が役立ちます!

\[\begin{align*}
\lnot ( A = 🥕 \land B = 🐺) & \equiv \lnot (A =🥕) \lor ( \lnot (B = 🐺) ) \\
& \equiv (A =🐺) \lor (B = 🥕)
\end{align*}\]

つまり、真実の条件は「Aがオオカミ、または、Bがにんじん」となります。

次に、貼り紙[2]が「真」であることから、部屋の中身は以下の2パターンのどちらかになります。

  • [i] A = にんじん🥕、B = オオカミ🐺
  • [ii] A = オオカミ🐺、B = にんじん🥕

ここで、[i] だと、先ほどド・モルガンの法則で導き出した「Aがオオカミ、または、Bがにんじん」という条件を満たさないため、矛盾します。

つぎに、残った[ii](A=オオカミ🐺、B=にんじん🥕)であれば、すべての条件を矛盾なく満たすことができます。

部屋の中身は「Aの部屋がオオカミ、Bの部屋がにんじん」であることが論理的に証明されました。

したがって、あなたが安全に開けるべきなのは 部屋Bの扉 です。

10. テスト勉強の最強の味方! うさぎ塾オリジナルの学習ツール

うさぎ塾では、ブール代数(特に真理値表)の勉強をするために役立つツールを提供しております。

学習の際に、是非お使いください。

(1) 【離散数学】真理値表 自動作成ツール(途中式あり)

「課題の答え合わせをしたいけど、途中の計算が合っているか不安…」という方におすすめ!

複雑な論理式を入力するだけで、途中式つきの真理値表を瞬時に自動生成します。

スマホでも使える専用ボタンでサクサク入力できます!

また、授業に合わせて「数学流(∧)・情報流(・)」の記号や、「0/1・T/F」の表示切り替えがワンタッチで可能です。

※ スタンフォード大学などと同じ「ならばの右結合ルール」に完全対応! 安心して答え合わせに使ってくださいね!

(2) 【離散数学テスト対策】真理値表の穴埋めガチ演習ツール

「理屈はわかったけど、テスト本番でノーミスで表を埋められるか心配…」という方にピッタリ!

自分で実際に 0/1 を入力して、真理値表を完成させる実戦形式のドリルツールです。

間違えた箇所はその場で赤く光って教えてくれるので、どこで計算ミスをしたか一目瞭然!

定期試験や院試対策の総仕上げとして、ぜひ満点を目指してガチ挑戦してみてください!

11. 確認テスト!

最後に、今回の記事で勉強した内容が、理解できているかどうかをどうかを確認するための小テストを作りました!

理解度確認に是非チャレンジしてみてください!

※ 回答フォームに入力後、自動採点 & 自動解説表示が行われます。

注釈

注釈
1 例えば、\( p \to \textcolor{blue}{(} q \land \textcolor{red}{(} r \lor s \textcolor{red}{)} \textcolor{blue}{)} \) であれば、\( \textcolor{red}{r \lor s} \) を最初に計算してから、\( \textcolor{blue}{q \land ( r \lor s )} \) を計算します。
2 例えば、-3 + 5は、-(3+5) = 8 ではなく、(-3) + 5 = 2 と計算しますよね。
3 ネット上で検索して出てくる一部の真理値表作成ツールでは、$\to$ が連続する $p \to q \to r$ を入力した際、プログラミングの仕様に引っ張られて誤って左から $(p \to q) \to r$ と計算してしまうものがあるので要注意です。スタンフォード大学のような学術機関が提供しているサイトは、ルール通り正しく右結合で計算してくれます。
4 AND, ORが混ざっている式は、計算順序を勝手に入れ替えてはいけません。例えば、\( p \land ( q \lor r) \) を \( ( p \land q ) \lor r \) と勝手に変えるのはNGです。
あなたへのおすすめ