「基本は大事だ」とか言いますが、幼児や小学生でもわかるようなホントに基本的な概念が、かなり抽象的な文脈でも形を変えて現れることには驚かされます。
かつての次男の様子などから察するに、「イチ、ニ、サン」と順番に数えあげることと、モノの集まりの大きさ(むしろ“多いさ”)の把握は、とりあえずは別な行為で、その2つを関連付けるためにはトレーニングが必要なようです。
数えるときに唱<とな>えるカズを序数(ordinal number)、集まりの“多いさ”を表すカズを基数(cardinal number)と呼びます。序数と基数は、子供の認識においても理論的(例えば集合論の)観点からも別物です。なのに、序数と基数はいつのまにか同一視され、具体的な利用法/利用場面が捨象された「自然数」へと蒸留されてしまいます。
この同一視と抽象化のメカニズムはどうなっているんでしょう? あり得るひとつの説明として、モノイド圏(monoidal category)によるモデル化をしてみます。もちろん、その説明が認知心理学的に意味があるなんて言う気はサラサラありません。言いたいことは、モノイド圏のような構造は、幼児レベルの認識にさえ登場しているように見える、ということです。
以下の内容は、「指を使った足し算と interchange law」を少し敷衍<ふえん>したものです。
内容:
- 序数と基数:絵に描いてみる
- 2つの足し算:操作の逐次実行と集まりの合併
- 計算の法則とモノイド
- 序数と基数の対応関係と同一視
- 交替律(interchange law)とモノイダルモノイド
- エックマン/ヒルトン論法
序数と基数:絵に描いてみる
「イチ、ニ、サン」と順番に数えあげる行為を次の図で示します*1。
イチ ニ サン −→●−→●−→●
黒丸は数える対象となるモノ、矢印が声を出して(出さなくてもいいけど)数詞を唱える行為です。
一方、3つのモノからなる集まりは次のように示します。
{●, ●, ●}
モノの個性は関係ないので、どれも黒丸で示します。
さて、これからは序数と基数を完全に区別します。「序数の3」は <3>、「基数の3」は {3} と書き表します。もう少し詳しく言うと:
- 「イチ、ニ、サン」と数える行為を <3> で示す。
- 3つのモノからなる集まり(の代表)を {3} で示す。
つまり、先の絵との関係で書くなら:
- <3> = →●→●→●
- {3} = {●, ●, ●}
序数と基数を区別したので、足し算も別物です。序数の足し算は記号「;」で、基数の足し算は記号「#」で表します。「+」は使いません!それぞれの足し算の意味は次の節で説明します。
2つの足し算:操作の逐次実行と集まりの合併
序数の足し算 <3>;<2> は次の意味です。
- サンまで数える行為の図に続けて、さらにニまで数える行為の図を継ぎ足す。出来た図で表現される数えあげ行為が <3>;<2> である。
<3> = →●→●→● <2> = →●→● <3>;<2> = (→●→●→●) ; (→●→●) = →●→●→●→●→●
基数の足し算 {3}#{2} は次の意味です。
- 3個のモノからなる集まりと、2個のモノからなる集まりを寄せ集めて一緒にする。出来た集まりの“多いさ”が {3}#{2} である。
{3} = {●, ●, ●} {2} = {●, ●} {3}#{2} = {●, ●, ●} # {●, ●} = {●, ●, ●, ●, ●}
「;」は時間的な操作で、「#」は空間的な操作です。空間の対称性や等方性の直感から、基数の足し算「#」は可換(commutative)な気がしますが、序数の足し算「;」が可換であることは明らかだとは言えません。以下の議論では、「;」も「#」も可換という仮定はしません。
計算の法則とモノイド
まったく数えない行為(何もしない)を <0> で表します。カラッポな集まりは {0} で表します。序数に<0>を含め、基数に{0}を含めると次の法則が成立します。
- (<n>;<m>);<k> = <n>;(<m>;<k>)
- <0>;<n> = <n>;<0> = <n>
- ({n}#{m})#{k} = {n}#({m}#{k})
- {0}#{n} = {n}#{0} = {n}
これらは、結合律と単位律です。ここでは、天下りに結合律と単位律は成立すると仮定します。結合律と単位律が成立する代数系はモノイドと呼ばれるので、(有限な)序数の全体と(有限な)基数の全体は、それぞれの足し算でモノイドになります。
序数と基数の対応関係と同一視
序数と基数は <n> ←→ {n} という対応で1:1に対応します。この対応は次のようにして構成できます。
- 数える行為の後で、数え終わったモノ達の集まりを見ること
- 与えられた集まりを、実際に数えること
この対応により、序数と基数を同一視することができます。<n>と{n}が同一視された数を単に n と書きます。3 は <3>と{3}が同一視されたものです。ときに3は<3>と解釈され、別なときは{3}と解釈されます。3のように序数/基数の区別を剥ぎ取ったカズを自然数と呼びましょう。
序数と基数の同一視はできても、だからといって演算「;」と演算「#」が同じ演算だという保証はどこにもありません。いま言えることは、序数の足し算を起源とする自然数の演算「;」と、基数の足し算を起源とする自然数の演算「#」があって、それぞれが結合律と単位律を満たすことだけです。
- (n;m);k = n;(m;k)
- 0;n = n;0 = n
- (n#m)#k = n#(m#k)
- 0#n = n#0 = n
見てのとおり、2つの演算の単位元は一致しています(どちらも0)。でも、くどいですが、「;」や「#」が可換であること、「;」と「#」が同じであることは、今はわかりません。
交替律(interchange law)とモノイダルモノイド
ここまでで、自然数の上に2つの演算「;」と「#」が載った構造が出来上がりました。この2つの演算がまったく無関係だと議論が先に進みません。次の法則を仮定します。
- (n#m);(k#j) = (n;k)#(m;j)
これは交替律(interchange law)と呼ばれる法則です。見慣れない法則で「なんじゃこりゃ」と思ったもしれませんが、指を使った足し算では交替律が本質的であることは、「指を使った足し算と interchange law」で具体的に詳しく説明しています。そのとき使った絵は次のようなものです。「;」ではなくて「+」を使ってますが、内容的には:
- (5#1);(5#2) = (5;5)#(1;2)
です。
2つの演算「;」と「#」に交替律を付け加えると、次が成立します。
- (n;m);k = n;(m;k)
- 0;n = n;0 = n
- (n#m)#k = n#(m#k)
- 0#n = n#0 = n
- 「;」の単位元 = 「#」の単位元 = 0
- (n#m);(k#j) = (n;k)#(m;j)
以上の事実を圏論の言葉で表現すると:
- 自然数の全体は演算「;」を結合(合成;composition)として圏である。
- 0はただ1つの対象であり、恒等射(identity)でもある。
- この圏に対して、演算「#」はモノイド積(monoidal product)となる。
- モノイド積の単位(monoidal unit)は0である。
- 結局、自然数の全体は、「;」と「#」によりモノイド圏(monoidal category)となる。
対象(恒等射)がただ1つである圏はモノイドとみなせるので、演算「;」と「#」を備えた自然数の全体はモノイダルモノイドと呼んでもいいでしょう。
エックマン/ヒルトン論法
自然数とは限らず、一般にモノイダルモノイドがあったとき、次のことが示せます。
- 圏の結合演算「;」は可換である。
- 圏のモノイド積「#」は可換である。
- 実は、「;」と「#」は一致する。
これらのことが示せるのは交替律のおかげです。簡単ですから、「;」の可換性をやってみましょう。nとmだと見た目の区別が付きにくい*2ので、nとkを使います。
n;k = (n#0);(0#k) // 0は#の単位だから = (n;0)#(0;k) // 交替律 = (0;n)#(k;0) // 0は;の単位(恒等射)だから交換してよい = (0#k);(n#0) // また交替律 = k;n // 0は#の単位だから
「;」と「#」の関係はもっと簡単です。
n;k = (0#n);(k#0) // 0は#の単位だから = (0;k)#(n;0) // 交替律 = k#n // 0は;の単位(恒等射)だから
これで、「;」と「#」は左右を入れ替えるだけで移りあえることが分かりました。しかし、n;k = k;n だったので、n;k = k;n = n#k ;これで、序数の数え足し「;」と基数の寄せ集め「#」が、事実上は同じであることが示せました。
このように、交替律を使って可換性を示す論法はホモトピー論や高次圏論では定番であり、エックマン/ヒルトン論法(The Eckman-Hilton argument)と呼ばれています。
冒頭でも言ったとおり、強く主張する気はありませんが、子供達が「数えあげる行為と集まりの“多いさ”の関係」を認識していく過程は、エックマン/ヒルトン論法に似ているように僕には(僕だけ?)思えるのです。