論理とブール代数
前回の教材では、ビットが単なる2進法の1桁ではなく「情報の最小単位」であること、 そして「可能性の数を数えることが必要なビット数を決める」という考え方までを辿った。締めくくりに触れたのは、 真と偽もまた、1と0としてまったく同じように振る舞えるという気づきだった。 では、その先に進んで「正しい推論」そのものを、数のように計算できるだろうか。 2300年前の論理学と19世紀の代数、そして手元のスイッチがひとつにつながる——それが本章のテーマである。 全4セクション・演習20問。回答はブラウザに保存されるので、途中でやめても続きから再開できる。
進捗 0 / 20 問(正解 0 問)
1. 論理を数学で書く夢 — アリストテレスからブールへ
前講では、真/偽もまた1と0として振る舞えるところまで見た。では「正しい推論」そのものを、数のように計算できるだろうか——アリストテレスにとって論理は言語を分析して真理を探究する哲学の一形態であり、その基礎には三段論法(2つの前提が正しいと仮定し、そこから結論を導く推論の形式)があった。数学者たちは2千年以上、この論理を数学の記号で捉えようとしてきたが、19世紀以前に最も近づいたとされるのはライプニッツにとどまる。本セクションでは、19世紀にジョージ・ブールが果たした「本当の概念的飛躍」——代数のオペランド(演算対象)を「数」から「クラス(ものの集まり)」へ抽象化したこと——の核心を見ていく。
「すべての人間は死すべき定めにある。ソクラテスは人間である。ゆえに、ソクラテスは死すべき定めにある」 ——論理学の話でまず引き合いに出される、この推論の型を三段論法と呼ぶ。2つの前提が 正しいと仮定し、そこから結論を機械的に導き出す、という構造そのものが三段論法の本体である。古代ギリシアに おいて論理は、言葉を分析することで真理を探ろうとする哲学の一分野だった。なお、この最も有名な三段論法は、 実のところアリストテレス自身の著作には見当たらないことが知られている——あくまで語り継がれてきた 定番の例にすぎない。
この三段論法を、言葉ではなく数学の記号で書き表そうという試みは、2千年以上にわたって数学者たちを 誘惑し続けてきた。19世紀より前でこの目標に最も近づいたとされるのが、ニュートンとは独立に微積分を 発見したことで知られるライプニッツである。しかし彼がこの課題に手をつけたのは 若い頃の一時期にとどまり、深く掘り下げられることのないまま置き去りにされた。
本当の飛躍を成し遂げたのは、19世紀半ばに現れたジョージ・ブールだった。1815年、 英国で靴職人と元女中の息子として生まれたブールは、正規の高等教育を受けられないという生まれながらの 不利を独学で乗り越え、1849年にはコークのクイーンズカレッジの数学教授にまで上りつめる。1847年に 『論理の数学的分析』、1854年に『思考の法則』を著し、1864年、49歳で急逝した。18世紀半ば以降、 論理を数学的に定義しようとした人物は他にもいたが、本当の概念的な飛躍を成し遂げたのはブールだけだった。
ブールの飛躍の核心は、代数の演算対象(オペランド)を「数」から「クラス」 ——ものの集まり、後の集合——へと抽象化したことにある。従来の代数で文字が表すのはつねに数だったが、 ブールの代数では文字は「ある性質を持つものの集まり」を指す。たとえば「雄猫のクラス」や「白い猫のクラス」 のように、個々の対象そのものではなく、その集まり全体を1つの記号で扱えるようにしたのである。
猫が生まれたり死んだりして頭数が変わっても、記号Mが指す「雄猫のクラス」という括り自体は変わらない。 数ではなく、集まりそのものを演算の対象にする——これがブール代数の出発点である。
三段論法とはどんな推論の形式か
アリストテレスの論理を数学の記号で捉える試みは2千年以上続いた。19世紀以前に最も近づいたとされ、ニュートンと独立に微積分を発明したことでも知られる人物は誰か
ジョージ・ブールが果たした「本当の概念的飛躍」の核心は何か
ブール代数で文字M が「ある性質を持つもののクラス」を表すとき、Mについて正しい説明はどれか
このセクション: 0 / 4 問正解
2. クラスの代数 — 結び・交わり・1と0
ブール代数では、+は結び(どちらか一方にでも入っているものすべて)、×は交わり(両方に入っているものだけ)を表す。1は議論の対象全体、0は空クラスを意味し、F×(1−F)=0 という式は「何かが自分自身であり、かつその反対であることはできない」という矛盾律を表す。さらにx²=xという、従来の代数とは異なる式にも触れながら、「すべての人間は死すべき定めにある。ソクラテスは人間である。ゆえに、ソクラテスは死すべき定めにある」という三段論法が、代入と結合律だけで代数的に証明できることを確かめる。
ブール代数には2つの基本演算がある。「+」はクラスの結び(現代の用語でいう和集合)を 作る演算で、2つのクラスのどちらか一方にでも入っているものすべての集まりを表す。たとえば 「黒い猫のクラス+白い猫のクラス」なら、黒であるか白であるか、そのどちらかに当てはまるすべての猫の クラスになる。
もう一方の「×」はクラスの交わり(現代の用語でいう共通部分)を作る演算で、2つの クラスの両方に入っているものだけの集まりを表す。「雌猫のクラス×褐色の猫のクラス」なら、雌であり、 かつ褐色でもある猫だけが残る。2つの形容詞をつなげたものだと考えればわかりやすい。
結びと交わりには、従来の代数と同じ交換律・結合律・分配律がそのまま成り立つ。それだけでなく、 従来の代数では成り立たない「+の×に対する分配律」もブール代数では成り立つ——これは 後で真偽の0/1の形式に置き換えたとき、複雑な式を機械的に整理するための足場になる。
記号の1と0にも独自の意味がある。1は議論の対象全体、たとえば猫の話をしているなら 「すべての猫のクラス」を表し、雄猫のクラスMと雌猫のクラスFについて M+F=1 が成り立つ。 0は空クラス、つまり何も含まないクラスを表す。1−M は「全体から雄猫を除いたもの」 であり、これはF、すなわち雌猫のクラスに一致する。
F×(1−F) を計算すると、Fに入っていて、かつFに入っていないものは存在しないから、答えは0になる。 これは「何かが自分自身であり、かつその反対であることはできない」という矛盾律を、 そのまま式にしたものである。同時に F+(1−F)=1 も成り立つ——どんなものも、Fであるか、Fでないかの どちらかには必ず入る。
ブール自身が、自分の代数を従来の代数から区別する代表的な言明として挙げたのが x²=x である。数の代数ではこの式が成り立つのは0と1のときだけだが、クラスの代数 では常に成り立つ——雌猫のクラスと雌猫のクラス自身の交わりは、やはり雌猫のクラスにしかならないからだ。 同様に x+x=x も常に成り立つ。
この代数の力を実際に試してみよう。人間のクラスをP、死すべきもののクラスをM、ソクラテスのクラスをSと する。「すべての人間は死すべき定めにある」は P×M=P、「ソクラテスは人間である」は S×P=S と書ける。 第1式に第2式を代入し、結合律を使って整理すると S×M=S が導かれる——「ソクラテスは 死すべき定めにある」という結論が、記号の計算だけで確かめられたことになる。2300年前の推論が、代入と 結合律という機械的な手続きに置き換わった瞬間である。
ブール代数の「+」が意味する演算はどれか
ブール代数の「×」が意味する演算はどれか
ブール代数の記号「1」と「0」が意味するものはどれか
Fをあるクラスとするとき、F×(1−F) の値はどれか
ブールが「従来の代数から自分の代数を区別する代表的な言明」と見なした式はどれか
「すべての人間は死すべき定めにある」をP(人間のクラス)とM(死すべきもののクラス)で書くと P×M=P、「ソクラテスは人間である」は S×P=S(Sはソクラテスのクラス)。この2式から代入と結合律で導かれる結論の式はどれか
このセクション: 0 / 6 問正解
3. 0と1の真偽テスト — AND・OR・NOTの表
ブール代数には、文字にクラスではなく0か1だけを割り当てる別形式もある——1はイエス・真(条件を満たす)、0はノー・偽(条件を満たさない)を表す。ANDの表(両方が1のときだけ1)とORの表(0+0のときだけ0。1+1=1が普通の足し算との唯一の違い)を使えば、どんなに複雑な条件式も機械的に評価できる。この「機械的」という言葉が、次のセクションで文字どおり機械(回路)になっていく。
ここまで見てきたのは、文字がクラスを表す形のブール代数だった。ブール代数にはもう1つ、文字にクラス ではなく「0か1だけ」を割り当てる形式がある——真偽テストと呼ばれる 形である。この形式では、1はイエス・真(ある条件を満たしている)を、0はノー・偽(満たしていない)を 表す。何についての真偽かは取り決め次第で、点灯/消灯や雄/雌といった具体的な意味は、あくまでその文脈 における一例にすぎない——前章で見た「ビットの意味は文脈に依存する」という考え方が、ここでもそのまま効いている。
×がANDを意味するとき、結果が1になるのは左右の両方が1のときだけである。0×0=0、0×1=0、 1×0=0、1×1=1——結果は普通の掛け算とまったく同じ表になる。
+がORを意味するときの表は、普通の足し算とはただ1点だけ違う。0+0=0、0+1=1、1+0=1までは 足し算と同じだが、両方が1のときは2ではなく1になる。
1 + 1 = 1(ORの表だけの特別ルール)
両方が真であっても、結果はやはり真——ここに「+」が「または」を意味していることがはっきりと表れている。 NOTは「1−」の形で書ける。Xに1を割り当てれば 1−X は0に、Xが0なら1になる——値を反転させるだけの 演算である。クラスの代数における「全体から除く」という考え方が、0/1の形式では単純な反転として姿を 変えている。
ANDの表とORの表さえ手元にあれば、どんなに複雑に見える式でも、内側のカッコから順番に当てはめて いくだけで機械的に真偽を計算できる。なお現代の教科書では、ANDに∧、ORに∨という記号を使うことも ある。
この「機械的に計算できる」という感覚は、下のシミュレータで自分の手で確かめられる。 タブでブール式を選び、A・Bのボタンで0と1を切り替えると、式へ代入した結果と、 表の中の「いまの入力に当たる行」のハイライトが連動して動く。両方を1にしたとき、 A×BとA+Bで結果がどう分かれるかを試してみてほしい。
×は交わり(AND)。AとBの両方が1のときだけ、式の値が1になる
| A | B | A×B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
タブで式を選ぶと、A・Bの4通りの組み合わせすべてについて式の値を埋めた表ができあがります。 AとBを切り替えると、いまの入力に当たる行がハイライトされ、上の代入結果と表の行が 常に一致していることを確かめられます。A+Bでは両方を1にしても値は2ではなく1—— ORの表だけの特別ルールです。A×(1−B)のような組み合わせの式も、内側のカッコから順に 当てはめていくだけで機械的に値が決まります。
この「機械的に計算できる」という性質こそが、次のセクションで文字どおりの機械——電気回路——へと 姿を変えていく。
ブール代数には、文字にクラスではなく「0か1だけ」を割り当てる形式(真偽テスト)もある。このときの1と0が表すものはどれか
×がANDを意味するとき、結果が1になるのはどんなときか
+がORを意味するとき、「1+1」の値はどれか
NOTは「1−」の形で書ける。Xに1を割り当てたとき、1−X の値はどれか
式 (1×(0+1))+(0×1) を、ANDの表とORの表に従って簡単にすると値はどれになるか
このセクション: 0 / 5 問正解
4. スイッチは論理を語る — 直列=AND・並列=OR
電池・電球と2つのスイッチを直列(一本道の途中に連続して)につなぐと、両方閉じたときだけ点灯する回路になり、その表はANDの表と一致する。並列(枝分かれした2本の道)につなぐと、どちらか一方でも閉じれば点灯し、その表はORの表と一致する。頭の中の論理(ブール代数)と物理的な装置(電気回路)が同じ構造を持つ——この一体化こそが、2進数で動くコンピュータの設計と構築を可能にする、この章最大の発見である。
直列・並列という言葉は、第1講「コードで世界を伝える」で すでに一度登場している。あちらは電池の直列・並列接続で、電圧が足し合わされるか、寿命が延びるかという 電気の物理的な性質の話だった。ここで扱う直列・並列はスイッチの配置についてであり、 意味はまったく違う——スイッチの直列・並列接続は、論理そのものを実行しているのである。
電池と電球、そして2つのスイッチを一本道の途中に連続してつなぐ——これが直列接続で ある。電球が点灯するのは、2つのスイッチの両方を閉じたときだけ。どちらか片方でも開いていれば、電流の 通り道が断たれて電球はつかない。この「両方閉じたときだけ点灯する」という表は、先ほど見たANDの表と 寸分違わず一致する。
一方、2つのスイッチを枝分かれした2本の道のそれぞれに配置する——これが並列接続で ある。電球が点灯するのは、どちらか一方のスイッチでも閉じたとき。両方閉じても、もちろん点灯する。 この表はORの表とそのまま一致する。
開=0・閉=1、消灯=0・点灯=1——この読み替えを行うと、スイッチをつないだ回路が、ブール代数の論理 演算を物理的に実行できることがわかる。頭の中だけの記号操作だったはずの論理が、電気の通り道という 物理的な装置とぴったり同じ構造を持っていた——これが本章最大の発見である。
この対応がわかると、ブール式からスイッチ回路を機械的に組み立てられるようになる。式の×記号が現れる 箇所は直列接続に、+記号が現れる箇所は並列接続に、そのまま置き換えればよい。たとえば (A×B)+C という 式なら、AとBを直列につないだひとまとまりを、Cと並列につなげばよい——どれほど複雑な条件判定の回路も、 この機械的な置き換えだけで組み上がる。
ブール自身は、自分の代数が回路として動く様子を見ることはなかった。白熱電球が発明されたのは、彼の死 から15年も後のことだったからである。モールスの電信は『思考の法則』が出版される10年前の1844年に すでに実証されていたにもかかわらず、19世紀のうちにブール代数とスイッチの直列・並列配線を結びつけた 者は——ブールと文通していたバベッジでさえも——いなかった。「コンピュータにはギアやレバーよりも、 電信のリレーを使った方がいい」。第2講「遠くまで、確実に届ける」 で見たリレーが、次講でついに論理ゲートへと姿を変える。
電池・電球と2つのスイッチを「直列」(一本道の途中に連続して)につないだ回路で、電球が点灯する条件はどれか
2つのスイッチを「並列」(枝分かれした2本の道のそれぞれに)つないだ回路で、電球が点灯する条件はどれか
開=0/閉=1、消灯=0/点灯=1と読み替えると、直列回路の表はANDの表と、並列回路の表はORの表と完全に一致する。この一致が意味する、この章の最大の発見はどれか
ブール式 (A×B)+C をスイッチ回路にするには、3つのスイッチをどうつなげばよいか
ブール代数(1854年の『思考の法則』)と電信(1844年に実証済み)は同じ時代にあったのに、19世紀に両者を結びつけた者はいなかった。この章の最後に示される「コンピュータに使うべきだった部品」はどれか
このセクション: 0 / 5 問正解