対の公理と和集合の公理

公理的集合論の対の公理は次のようになる。
対の公理 任意の要素 x, y に対して x と y のみを要素とする集合が存在する
この公理で定義される集合の要素はつねに2個だ。

したがって、要素を1つだけ含む集合の定義は、この公理と外延性の公理を組み合わせる必要がある。つまり要素 a に対して集合 {a, a} が定義できるが、外延性の公理を適用するとこれは {a} と等しい。外延性の公理は次のようになる。
外延性の公理 A のどの要素を取っても B の要素であり、その逆も真である場合 A と B は等しい。
また、要素が a, b, c とあるとき、e = {a, b}, f = {b, c} の存在は対の公理で定義できるし、これに加えて g = {e, f} も集合である。ここで g に和集合の公理を適用すると、g = {{a, b}, {b, c}} なので h = {a, b, c} は集合である。このように対の公理と和集合の公理を組み合わせると、任意の(有限個)の要素をもつ集合が定義できる。和集合の公理は次のようになる。
和集合の公理 任意の集合 X に対して、X の要素の要素全体からなる集合が存在する
この操作は Haskell の concat 関数と nub 関数で実行できる。

Prelude> import Data.List
Prelude Data.List> nub $ concat [[1,2], [2,3]]
[1,2,3]

和集合の公理はまた、任意の集合の和集合が存在することを保証する。g = {a, b, c}, h = {c, d} という2つの集合があるときに、対の公理から i = {g, h} という集合を作ることができる。これに和集合の公理を適用すると j = {a, b, c, d} ができる。これは明らかに g と h の和集合だ。すなわち、公理的集合ではどの2つの集合についても和集合が集合として存在する。

これも次のように Haskell で確認できる。

Prelude> import Data.List
Prelude Data.List> let a = [1,2,3]
Prelude Data.List> let b = [3,4]
Prelude Data.List> let c = [a, b]
Prelude Data.List> nub $ concat c
[1,2,3,4]

和集合の公理はその名前の通り、公理的集合論の任意の2つの集合の和集合が存在することを保証する。

公理的集合論の公理は抽象的に書いてあるが、実際にはプログラムで実現できるような具体性もある。抽象的だと思って敬遠していただけだった。再帰的な定義は視点を変えて新しいデータを作るための生成規則だと考えるとイメージしやすい。

[PR]
by tnomura9 | 2018-02-01 16:48 | ラッセルのパラドックス | Comments(0)
<< 冪集合公理 外延性の公理 >>