集合が先か,論理が先か,よく悩むところであるが,最近,言語やオートマトンに対する興味が再燃して,集合が先か文字列が先かという新たな悩みに直面している。
例えば集合 Σ={a,b} の要素 a と b をいくつか並べた文字列 ab, aa, aaba などを語 (word) と呼ぶことにし,並んでいる文字の個数をその語の長さと名付ける。
長さが 3 の語をすべて集めて得られる集合は Σ3 と表す習わしであるが,これはつまり直積集合 Σ×Σ×Σ のことであり,長さ 3 の語というのは
(a,a,a), (a,a,b), ..., (b,b,b)
という,3 つの要素からなる順序対に他ならない。
この,「語」=「直積集合の要素」=「順序対」という見方に気付いてからは,次のようなことが頭を悩ませるようになった。
語には一文字も並べない空文字を許すことにする。これは文字列同士の結合演算における,足し算の 0 のような役割を果たす語であり,本によってεと書いたりλと表したりとさまざまである。
この空文字を集合の直積という観点で取り扱うにはどうしたらよいだろうか。
「空」の言葉に引きずられて,空集合 φ が対応すると考えるのは誤りである。空集合と他のどんな集合との直積もやはり空集合になってしまうからである。そこで,何か一つだけ要素を持つ集合,例えば {φ} を固定して考え,この「一点集合」との直積について,
{φ}×M~M×{φ}~M
という同一視を行うことにすればどうかというアイデアが考えられる。
これは少しだけ実数と複素数との関係に似ている。
複素数は実部と虚部という二つの実数で構成された「複数の要素」からなる数であるから,集合としては実数の集合と実数の集合との直積 R×R に他ならない。そして,虚部が 0 であるような (x,0) という形をした複素数,つまり R×{0} の要素は実数の集合 R と同一視するということが普通に行われる。ただし,実部が 0 であるような純虚数 {0}×R は実数とは同一視しない点が上に述べた我々の規約とは大きく異なる。複素数においては要素を二つ並べたときの順序が非常に大きな意味を持つのである。
さて,このような規約を入れると,集合同士の演算としての直積において,一点集合 {φ} はある種の単位元としての役割を果たすことになる。このような観点は数学の世界では常識なのかもしれないが,僕自身は初めて考えた内容である。Saunders Mac Lane の数学者向けの圏論のテキストのまえがきで学んだ知見がここでは役に立った。そう考えると,やはり少なくとも代数学者にとっては当たり前のことなのだろう。そもそも多項式環という基本的な代数系においてこのような取り扱いが必須のように思えるからである。
このように集合同士の直積をある種の演算とみなすやり方はどういった分野で学べるのだろうか。やはり代数系,もしくは圏論などで学べるのだろうか。その点が不明なのでなかなかこれ以上自力で進められそうにないが,この線で進めばここ三年ほどずっと気にかかっている Lieb と Yngvason の熱力学のエントロピーに関する有名な論文の解読が進むのではないかと期待される。
とりあえず,「集合同士の直積代数」について調べてみよう。
例えば集合 Σ={a,b} の要素 a と b をいくつか並べた文字列 ab, aa, aaba などを語 (word) と呼ぶことにし,並んでいる文字の個数をその語の長さと名付ける。
長さが 3 の語をすべて集めて得られる集合は Σ3 と表す習わしであるが,これはつまり直積集合 Σ×Σ×Σ のことであり,長さ 3 の語というのは
(a,a,a), (a,a,b), ..., (b,b,b)
という,3 つの要素からなる順序対に他ならない。
この,「語」=「直積集合の要素」=「順序対」という見方に気付いてからは,次のようなことが頭を悩ませるようになった。
語には一文字も並べない空文字を許すことにする。これは文字列同士の結合演算における,足し算の 0 のような役割を果たす語であり,本によってεと書いたりλと表したりとさまざまである。
この空文字を集合の直積という観点で取り扱うにはどうしたらよいだろうか。
「空」の言葉に引きずられて,空集合 φ が対応すると考えるのは誤りである。空集合と他のどんな集合との直積もやはり空集合になってしまうからである。そこで,何か一つだけ要素を持つ集合,例えば {φ} を固定して考え,この「一点集合」との直積について,
{φ}×M~M×{φ}~M
という同一視を行うことにすればどうかというアイデアが考えられる。
これは少しだけ実数と複素数との関係に似ている。
複素数は実部と虚部という二つの実数で構成された「複数の要素」からなる数であるから,集合としては実数の集合と実数の集合との直積 R×R に他ならない。そして,虚部が 0 であるような (x,0) という形をした複素数,つまり R×{0} の要素は実数の集合 R と同一視するということが普通に行われる。ただし,実部が 0 であるような純虚数 {0}×R は実数とは同一視しない点が上に述べた我々の規約とは大きく異なる。複素数においては要素を二つ並べたときの順序が非常に大きな意味を持つのである。
さて,このような規約を入れると,集合同士の演算としての直積において,一点集合 {φ} はある種の単位元としての役割を果たすことになる。このような観点は数学の世界では常識なのかもしれないが,僕自身は初めて考えた内容である。Saunders Mac Lane の数学者向けの圏論のテキストのまえがきで学んだ知見がここでは役に立った。そう考えると,やはり少なくとも代数学者にとっては当たり前のことなのだろう。そもそも多項式環という基本的な代数系においてこのような取り扱いが必須のように思えるからである。
このように集合同士の直積をある種の演算とみなすやり方はどういった分野で学べるのだろうか。やはり代数系,もしくは圏論などで学べるのだろうか。その点が不明なのでなかなかこれ以上自力で進められそうにないが,この線で進めばここ三年ほどずっと気にかかっている Lieb と Yngvason の熱力学のエントロピーに関する有名な論文の解読が進むのではないかと期待される。
とりあえず,「集合同士の直積代数」について調べてみよう。