中の人の徒然草424 連休に中に考えた事の続き「集合と何かについて考えた」
そうした結果、集合オブジェクトが直ぐに思い浮かびます。
class Set
{
private Func< object, bool > m_contained;
//集合と元(要素)の対応を指定する
public Set( Func< object, bool > isFunc )
{
this.m_contained = isFunc;
}
//指定した元が集合に属するか判定する
public bool Contained( object element )
{ return this.m_contained( element ); }
}
つまり私が考えたのは、集合とは元の対応の事ではないかと言う事です。個々の元は、規則も有用な利用法もありません。しかし、対応を持たせるとそこに有用性が見いだせます。集合とは元の対応を定めることにより、その性質を分析したり、目的に応じて有効に使用したりするものではないでしょうか?こうした考えを持てば、集合演算の正体が自然と分かります。例えば和演算は・・・
public Set Join( Set otherSet )
{
Func< object, bool > f = ( x ) =>
this.Contained( x ) || otherSet.Contained( x );
return new Set( f );
}
ようするに、{ f( x ) 論理演算 g( x ) }の合成関数〈対応/写像〉で集合は定義できると思うのです。そう考えれば、部分集合や、集合の集合の正体についても厳密に分かります。また、集合を合成関数で定義できると言う事は、集合論が自然と広がる事も意味します。研究者の習性で、私は常にこうした事を考える習慣があります。それに、メタ集合(集合の集合)は仕事でよく遭遇します。例えば、社員オブジェクトが部下を表す社員オブジェクトを持つ場合があります。そうした自己を持つオブジェクトは、自己参照の無限構造を持ちます。しかし数学的に考えると難しい無限構造も、情報技術で考えるとよくあるオブジェクトです。ですから、集合論の矛盾と言われてもあまりピンときません。ごく普通のオブジェクトですから、それをもって集合論の矛盾になるとは到底思えません。ただ人間が記号の限界で想像出来ないだけだと思います。きっとカントールは、だから矛盾とは思わず、上手い方法があると考えたのでしょう。おそらくカントールは、無限を扱うための新しい記号を定義すれば、集合論が本当の意味で活用できると考えたのだと思います。
ちなみに、私が思うにメタ集合(集合の集合)の正体は、集合を表す元と、集合でないものを表す元を持つ集合だと思います。従ってメタ集合の冪集合とは、集合でないものに集合を組とした集合なのではないでしょうか?だから別に冪集合の濃度が大きくても不思議だと思いません。集合の集合と言う言葉に惑わされているだけであり、集合と集合でないものを合成関数で定義した集合だと思うと別に不思議なものではありません。
他にも説明がつきます。順序数の集合を元として持つ順序集合も、集合オブジェクトが集合オブジェクトを持っているだけだから、行列で表現できると思います。数学は専門でないから、矛盾がよく分かりません。実務的に困らなくても、数学的には困るのかな?でも、実務で困らないから私は気にしません。
なにはともあれ、こうした思考遊戯は面白いです。秋の夜長に数学の本を読むのは如何でしょうか?きっと楽しい時間を過ごせると思います。お受験の死んだ数学は面白くありませんが、本当の数学は面白いです。