素朴集合論の矛盾

素朴集合論はラッセルのパラドックスが発生するので、公理的集合論を用いないといけないと言われる。しかし、なぜ素朴集合論では矛盾が起きるのかはあまり説明されていない気がする。そこで、この記事では素朴集合論で矛盾が発生する背景はどのようなものかを考えてみた。

素朴集合論はちっとも素朴ではない

素朴集合論では集合は「ものの集まり」であると定義する。

ものの集まりから思いつくのは概念のはしごだ。ポチや太郎などの個々の犬の集まりとしての、犬の集合を考える。また、犬の集合や猫の集合の集まりとしての動物の集合を考える。さらに動物の集合と植物の集合やその他の生物の集合の集まりとしての集合を考える。このような具体的な要素からその抽象概念としての集合を考え、されにその抽象概念をさらに抽象した、高階の集合を考える。そういう整然とした概念のはしごの階層構造が集合の世界だとイメージしやすい。

おそらくカントールが集合の概念を考えついた時もこのような整然とした構造を想定していたのではないだろうか。

しかし、集合がものの集まりであるという単純な定義から、すぐにラッセルのパラドックスのようなものが発生してしまう。一体何がいけなかったのだろうか。

素朴集合論の定義では、ものとものの間の要素として含むという関係しか定義されていない。a というものと b というものがある時 a ∈ b という関係があるということしか定義されていないのだ。したがって自分自身を要素として含む a ∈ a のような変な集合も発生してくる。それだけでなく、a が自分自身を要素として含む b という要素を自分の要素として含む a ∈ b かつ b ∈ a ということも起こりうる。整然な構造どころか滅茶苦茶に入り組んだ混沌とした世界なのだ。ラッセルのパラドックスなどかわいい方かもしれない。

集合とはものの集まりであるという直感的にも明白な定義にもかかわらず、ラッセルのパラドックスが現れ、公理的集合論という何を言っているのかわからないようなものにたよらないと、普通の集合すら扱えないことに不満を感じていたが、結局のところ素朴集合論はちっとも素朴ではない。

なぜ素朴集合論は矛盾するのか

対象の所属関係によるネットワークとしての素朴集合

素朴集合論では集合は「ものの集まりというもの」であると考える。この考え方が便利なのはものの集まりである集合を1つのものと考えることによって、その集合を要素とする集合を考えることができることだ。また、集合を単なる個体と同列に置くことで、個体と集合からなる集合のようなものも簡単に考えることができる。

このことは、集合の要素として様々なレベルの集合を等しくとり得ることを意味するので、複雑な概念を簡潔に表現することができる。これは、個体や個体の集合や集合の集合などを同列のものとして取り扱うことができることによる、概念の操作の革命だ。数学に現れる複雑な概念の構造は集合の考え方を使うことで簡潔な表現を手に入れることになる。

しかし、物の集まりと集合としてのものの関係をどう表現したらいいだろうか、a, b, c というものがあったとしてそれを集合としてまとめた {a, b, c} という集合をひとつのものとして扱うとき、この集合という「もの」は a, b, c というものの集まりとは異なる。この区別が分かりやすいように {a, b, c} に A という名前をつけてみよう。すなわち、

A = {a, b, c}

とする。こうすると A と a, b, c の集まりの関係がはっきりしてくる。つまり、A は a, b, c の集まりそのものではないが、a, b, c の集まりを指し示す記号の役割を果たしている。素朴集合論ではこのような A と a, b, c を同列の対象として扱うから、A を要素とする {A} や {a, A} のような集合も作ることができる。

このように素朴集合論では個体も集合も集合の集合もおしなべてもの(対象)として扱うことができるからこれを区別せずに a, b, c, .... で表すことにする。このような対象の集まりを領域 D と呼ぶことにする。この領域 D ではたして集合はきちんと表現できるのだろうか。

このような領域 D にはどれが個体でどれが集合であるというような区別はない。しかし、個々の対象を取り上げたとき、そこには帰属関係という関係性がある。つまり、a という対象が b という対象をその要素とするとき(b が a に帰属しているとき)その関係を、

a ∋ b

で表すことができる。これはこの対象の集まりのどの2つの対象についても一方が他方に帰属するかどうかという関係を考えることができる。したがって、素朴集合の世界は、このように2つの対象の間に帰属関係が定義された対象のネットワークの全てと考えることができないだろうか。

このネットワークは2つの構成要素からできている。1つは対象の集まりであり、もう一つは対象と対象の帰属関係を表す評価関数 ψ(x, y) である。ψ(x, y) は2つの対象を引数とし、x が y を要素としていれば、すなわち x ∋ y なら1の値をとり、そうでなければ 0 の値をとる。ψ(x, y) は全ての対象間の帰属関係を表現できるので、このネットワークで全ての集合を表すことができそうに思える。

評価関数と演算表

ところで、対象 a が集合のときその外延すなわち {b, c, d} という対象の集まりをどのようにして見つけることができるだろうか。それは評価関数 ψ(x, y) を使うことで簡単にできる。対象 x の外延を見つけるために全ての対象 a, b, c, ... に対して ψ(x, a), ψ(x, b), ... と評価関数の値を求めその数列を求める。その数列はたとえば 0, 1, 0, 0, 1, ... のようになっているかもしれない。x の外延はこの数列の値が 1 になっている要素を集めることで得ることができる。例えば上の数列の場合、x = {b, e, ... } である。

そこで、縦に対象をとり横にその対象が要素として含む可能性のある対象を並べ、各行列に評価関数 ψ(x, y) の値をおいた次のような正方行列を考える。

** a b c ...
a 0 1 0 ...
b 1 1 0 ...
c 0 0 1 ...

この正方行列の演算表は対象と対象の全ての帰属関係を記述している。そうして、この演算表の横の行の数列は、その行の対象に帰属する対象の集まり、すなわち外延を表していることが分かる。なぜなら、その数列の値が1になるような対象はすべてその行の対象に帰属しているからだ。

また、この演算表は自分自身を要素として含む集合と、そうでない集合を定義できる。対角線成分が1になる集合は自分自身を含む集合であり、0になる集合は自分自身を要素として含んでいない。

ところで、この演算表を見たときあれっと思う人は多いだろう。そのとおりでこれはカントールの定理に出てきた対角線論法の表と同じものだ。したがって、この演算表には致命的な欠陥がある。つまり、この演算表の対角線部分を反転させて作る数列 1 0 0 ... はある対象の集合を表しているが、この数列は上の演算表のどこにも現れない。なぜなら、演算表のどの行とも対角線部分で異なっているからだ。

このことは、素朴集合の世界の全てを対象とその帰属関係というネットワークで表すことはできないことを示している。つまり、全ての集合を対象とその帰属関係で表すことは不可能なのだ。対角線部分を逆転した数列がしめす集合は自分自身を要素として含まない集合の集合だが、そのような集合をこの演算表の上に表すことはできないのだ。

集合を表す演算表は非正方行列

なぜこのようなことが起きるのか領域 D = {a, b, c} の場合を考えてみよう。領域 D の要素を集めた集合は次のように8個ある。

{}, {a}, {b}, {c}, {a,b}, {a,c}, {b,c}, {a,b,c}

この集合を全て対象 a, b, c だけで表すことは明らかに不可能だ。強いて帰属関係で表そうとすれば次のように対象を追加して演算表を作らなければならないが、これは正方行列にはならない。

** a b c
a 0 0 0
b 1 0 0
c 0 1 0
d 0 0 1
e 1 1 0
f 1 0 1
g 0 1 1
h 1 1 1

また、領域 D が無限集合であったとしても正方行列の演算表では全ての集合をあらわすことはできない。これを全ての集合は対象と帰属関係で表現できるとしたところが、素朴集合論にあらわれた矛盾の正体だったのだ。

不動点定理

領域 D が無限集合なら領域 D 内の要素ですべての集合を定義できるような正方行列ができるのだろうか。そのような正方行列ができたとして、領域 D 内の帰属関係を判別する判別関数 ψ を考えてみる。すなわち、

ψ: D × D -> {0, 1}

である。ψ(a,b) = 1 のとき領域 D の要素 a は b を要素としてふくむものとする。ψ(a,b) = 0 のときは a は b を要素として含まない。そこで、領域 D の要素 a, b, ... を縦横に並べた行列を作り、行列の要素に ψ(x,y) の値(1または0)を並べると、上の行列と同じような演算表ができる。ただし、行の数も列の数も無限である。

** a b ...
a 0 0 ...
b 0 0 ...
.......

このとき演算表の行の値は領域 D の1変数関数を表している。たとえば列 a0 の行について、

g(x) = ψ(a0, x)

であるとする。ところでこの演算表の対角線成分 ψ(x,x) は 1 または 0 の値をとるので、d(x) = ψ(x,x) は領域 D の1変数関数である。さらに {0,1} から {0,1} への関数 f: {0,1} -> {0,1} を考えると f(d(x)) はやはり 領域 D の1変数関数である。したがって f(d(x)) の値の列は演算表のどこかの行のパターンと一致するはずである。

そこで、

g(x) = f(d(x)) = f(ψ(x,x))

であると仮定する。また g(x) = ψ(a0, x) であるから、このとき、

g(x) = ψ(a0, x) = f(ψ(x,x))

そこで g(x) に a0 を代入すると、

f(ψ(a0, a0)) = g(a0) = ψ(a0, a0) となって、ψ(a0,a0) (0 または 1) は f がどのような関数であっても

f(ψ(a0,a0)) = ψ(a0,a0)

であるから。ψ(a0,a0) はどの関数 f を適用してもそれ自身 ψ(a0,a0) と等しくなってしまう。すなわち、ψ(a0,a0) は関数 f の不動点だ。したがって、この関数 f が否定演算子だと f(ψ(a0,a0)) = ψ(a0,a0) となるのはありえないので矛盾である。a0 が特定の値であればこれは矛盾になるが、a0 はあくまで仮定の値なので、矛盾ではなくパラドックスになってしまうのだ。

領域 D が無限集合であっても、領域 D の要素でその要素からなるすべての集合を表そうとしたら、演算表が無限の正方行列になってしまうので不動点が発生してしまう。

パラドックスは領域 D の要素の帰属関係ですべての集合が表せると仮定したことから生じるのだ。つまり、領域 D の要素で領域 D の集合すべてを表すことは不可能なのだ。

まとめ

素朴集合論の世界を対象と対象間の帰属関係というネットワークでとらえようとしたところが素朴集合論の矛盾の原因だ。領域 D の対象の冪集合の要素(すなわち領域 D の部分集合)全てを領域 D の対象だけで代表させることは不可能なのに、それができると仮定するからだ。その仮定に立てば、領域 D の要素間の正方演算表で全ての領域 D の集合を表すことができなければならないが、そうではないので、対角線論法による矛盾が発生する。

システム内の要素だけでシステムの振る舞いを説明しようとするシステムを閉じたシステムという。閉じたシステムで自己言及が発生する場合、システムが無限集合であったとしても、そのシステムには不動点が発生し、パラドックスは不可避なのである。

領域 D の部分集合を表す記号を領域 D の内部に求めなければ、領域 D の部分集合全てを表す記号を考えることはできるので、矛盾は発生しない。たとえば、領域 D = {a, b, c} のときその部分集合を x = {}, y = {a}, z = {b} のように集合の空間 S = {x, y, z, ...} で捉えることにすると、領域 D の全ての集合を集合の空間 S で表現でき、領域 D の全ての部分集合間の演算は、S の上で完結している。数学で多用される集合で矛盾が見られないように思われるのは、数学の対象 では領域 D は実数などの集合でその要素に集合を含まないため、領域 D の部分集合の空間 S が領域 D とは独立しているからではないだろうか。