指数法則を満たす非連続関数

『さらっと言うと、要は、選択公理を認めると f(mn)=f(m)+f(n) を満たす不連続関数が作れてしまう。』
以下にあった、気になる数学ネタ。
* PRMLガール 〜 文芸部のマネージャーが「パターン認識機械学習」を読んだら
>> http://d.hatena.ne.jp/n_shuyo/20130117/prml
このブログ記事には書籍版があって、「あとがきがわりのACガール」にもう少し詳しい解説があります。

当初は「何のこっちゃ?」と思っていたのですが、最近ようやく意味が分かってきたので、以下につらつらと書いてみます。
PRMLガールでは対数について書かれていましたが、ここでは指数について書きます。)

関数 f が、全ての実数 x, y について、

f(m + n) = f(m)・f(n)

という関係を満たすとき「f は指数法則を満たす」ということにしましょう。
指数法則を満たす連続関数は、いわゆる指数関数 f(x) = a^x しかありません。
なぜかというと、

【Step.1】 自然数 n については・・・
f(n) = f(n-1)・f(1) = f(n-2)・f(1)・f(1) = ・・・ = {f(1)}^n
  ここで a := f(1) と置けば、f(n) = a^n となる。


【Step.2】 0については・・・
f(0) = f(0 + 0) = f(0)・f(0) = f(0)・f(0)・f(0)
  よって、f(0) = 1


【Step.3】 マイナスの数については・・・
1 = f(0) = f(n - n) = f(n)・f(-n)
  よって、f(-n) = 1 / f(n)


【Step.5】 分数については・・・
f(1) = f( 1/n + 1/n + 1/n ・・・ ) = {f(1/n)}^n
  よって、f(1/n) = n√f(1) = n√a
    ※ n が偶数の場合、f(1/n) = ± n√a という正負の2つが考えられるが、
    ※ f が自然に連続となるようなプラスの方を採用することにする。


【Step.6】
  あとは有理数の極限をとって、連続となるように実数全体に拡大する。

なので、滑らかな連続関数に限れば f(x) = a^x となるのですが、
ここで連続関数という制限を取っ払って、病的な非連続関数もありにすれば、
指数法則を満たす関数はもっと他にもあるのではないでしょうか。

そう思って上を見直すと、最後の【Step6】を見直せば別の関数が構成できそうです。
病的な関数を探す(でっち上げる)作戦として、実数全体を、
 ・集合A:有理数と、
 ・集合B:集合Aに含まれない無理数
の2つに分けることを考えます。
そして、
 ・集合Aに含まれる数 x については f(x) = a exp(x)
 ・集合Bに含まれる数 y については f(y) = b exp(y)
のように、A,Bそれぞれに異なる大きさの指数関数をあてがえば、思惑通りの関数が作れそうです。

しかしながら、話はそう単純ではありません。
集合Bに属する無理数の中で、(無理数) + (無理数) = (有理数) となるような数があるからです。
例えば (1-√2)という数も、(1+√2)という数も無理数ですが、
2つを足した (1-√2) + (1+√2) = 2 は有理数となります。
そうなると、集合Bに含まれる数の足し算の結果が集合Aにはみ出してしまい、AとBがきっちり分かれません。

何とかして、集合Bに含まれる無理数同士の足し算を、集合Bの中に閉じ込めておくことはできないか。
そこで登場するのが「同値類」というアイデアです。
実数全体を、足し算の結果がお互いにはみ出さないような、たくさんの(無数の)集合に分けることを考えてみましょう。

実数全体を「有理数×無理数」の巨大な(無限の)表に並べることを考えます。
まず、実数Rに含まれる全ての無理数を横一列に並べます。(数直線を引いて、有理数の点だけを削除します。)
とある1つの無理数 x を選び、もし x の有理数倍 a x が他の無理数 y と一致したら、その一致した先の無理数 y を削除します。
たとえば無理数πを選び出したとき、その有理数倍 2π, 3π, 1/5π, -6/7π・・・ などなどを、ことごとく消せ、ということです。
πという子が1人いれば、他は全て「いらない子」です。

この作業をとことん繰り返せば、ついにはどの無理数有理数倍しても、他の無理数と重ならない状況ができるはずです。
本当に「いる子」だけが残った状況です。
削除の結果、全ての無理数が消えてしまうことはありません。
たとえば π と √2 の有理数倍が重なることは無いので、少なくともこの2つは残るでしょう。
(残った無理数)×(有理数) の巨大な掛け算の表を作れば、その作り方からして、
掛け算の表には(0を除く)全ての実数が、落ちや重なり無く掲載されているはずです。
「掛け算九九」ならぬ、「掛け算有理・無理」というわけです。
※ 同じ考え方で、代数的無理数超越数を掛け合わせた「掛け算代数無理・超越」の表もできると思います。

ここまでサラリと書きましたが、この巨大な掛け算表が本当に作れるかどうかは自明ではありません。
というのも、どの無理数を「いる子」と認め、どれを「いらない子」とするか、決め手が無いからです。
決め手が無い、というのは、いったいどこから手を付けてよいのか、順序立てて処理する手順(アルゴリズム)が無い、ということです。
1つ1つの実数を1列に順序立てて整列することができない、と言い換えても良いでしょう。
たとえば、最大の無理数を「いる子」にしようとしても、最大の無理数というものはありません。
最小の無理数も存在しませんし、最も1に近い無理数もありません。
確かに、πという1個の無理数を取り出してしまえば、π×1だけが「いる子」で、残りは「いらない子」にすることはできます。
有理数を順序立てて処理する手順は存在する。)
しかし、実数の中から全ての無理数を順序立てて取り出す方法が存在しないのです。

『どれも空でないような集合を元とする集合(すなわち、集合の集合)があったときに、それぞれの集合から一つずつ元を選び出して新しい集合を作ることができる』
これを「選択公理」と言います。>> wikipedia:選択公理
上の「有理数×無理数の巨大な掛け算表」は、選択公理を前提として、初めてできることだったのです。
※ 参考: バナッハ・タルスキーのパラドックス >> [id:rikunora:20091021]

※ あと、実数を一列に並べることができるとする「整列可能定理」は選択公理と同値な主張です。(8/16追記)
※ >> wikipedia:選択公理には、選択公理と等価な命題として、整列可能定理、ツォルンの補題、テューキーの補題、などが上げられています。

巨大な掛け算表の、縦一列の並びを「同値類」と言います。
たとえば πの同値類は、2π, 3π, (1/5)π, -(6/7)π・・・ などなど、(有理数)×π という形の数の集まりです。
√2 の同値類は、2√2, 3√2, (1/5)√2, -(6/7)√2・・・ などなど、(有理数)×√2 という形の数の集まりです。
有理数それ自身は、(有理数)×1 という形の同値類に集めることにしましょう。
(この1の列だけは、例外的に1という有理数を持ってきます。1のことを単位元と言います。)
それぞれの同値類には“有理数個”の(加算無限の)要素が含まれています。
そしてこの同値類は、無数に(非加算無限)あります。

・実数 x, y の同値関係を、任意の有理数 a によって x 〜 a y と定義する。
・この同値関係によって、0 を除いた実数 R\{0} を同値類に類別できる。
・(R\{0},・) という乗法群を、有理数の乗法 (Q\{0},・) という部分群で割った剰余群 R/Q が構成できる。

類別を終えた後、とある1つの同値類の中での足し算を考えてみましょう。
たとえば πの同値類の中での足し算、2π+3π=5π, 1/5π+(-(6/7)π)= -23/35π などの答は、
全て同じπの同値類に含まれています。
それというのも、有理数の足し算は有理数の中で閉じているため、
(有理数)×π という形の数同士の足し算の答は (有理数有理数)×π になるからです。
  a π + b π = (a + b) π
どの同値類であっても、同値類の中での足し算は、その同値類の中だけで完結し、他の同値類にはみ出すことはありません。

次に、異なる2つの同値類の間での足し算を考えてみます。
同値類の中には、代表要素(いる子)が π や √2 などといった単純に見えるものと、
(2π+3√2) や (5/6π - 7/8√2) などといった複合的に見えるものがあります。
 ※ (2π+3√2) は (有理数)×πでも、(有理数)×√2 でも無いので、
 ※ πの同値類でもなく、√2の同値類でもない、また別の同値類に入っているのです。

そこで、同値類の代表要素について、次の概念を導入しましょう。

・代表要素 z が、他の代表要素 x1, x2, x3・・・ と、適切な有理数 a1, a2, a3・・・ を用いて
   z = a1 x1 + a2 x2 + a3 x3 + ・・・
 となるとき、z は一次従属であると言う。(複合的に見える)

・代表要素 z が、他の代表要素 x1, x2, x3・・・ と、どんな有理数 a1, a2, a3・・・ を用いても
   z = a1 x1 + a2 x2 + a3 x3 + ・・・
 とはならないとき、z は一次独立であると言う。(単純に見える)

この、一次従属、一次独立という概念によって、同値類の代表要素は2種類に分けることができるはずです。
具体的にどんな操作を行って分類するかは分かりません。非加算無限あるので、想像すらつきません。
でも、分けるための基準ははっきりしているのですから、
とにかく全ての代表要素が一次従属と一次独立に分かれたものとしましょう。
そして、全ての同値類の中から一次従属なものを取り除いて、一次独立なものだけを残しましょう。

こうして残った「縦に有理数×横に一次独立な代表要素」の表を用いて、
(0を除く)全ての実数は、表の中にある数の足し算で一意に表すことができます。
別の言い方をすれば、(0を除く)全ての実数は、表に残った一次独立な代表要素に分解できます。

※ 足し算のやり方が一意であることは、次のようにして分かります。
※ いま、とある数 z が、
※  z = a1 x1 + a2 x2 + a3 x3 + ・・・ と、
※  z = a1' x1 + a2' x2 + a3' x3 + ・・・ のように、
※ 2つの異なるやり方で分解できたとしましょう。(一部の an = 0 であるケースも含めて。)
※ 2つの式の差をとって、
※  (a1 - a1') x1 = (a2' - a2) x2 + (a3' - a3) x3 + ・・・
※ となりますが、これは x1 が一次独立であったという仮定に反します。

一次独立な代表要素のことを「基底」と呼んでいます。
全ての実数は、基底の一次結合((有理数)×(基底)の足し算)として表されます。
幾何学的なイメージを思い浮かべるなら、基底とは、多次元空間の各次元の軸のようなものです。
3次元空間であれば、全ての点は
  ax + by + cz
で表されるでしょう。
(x, y, z) はそれぞれ (縦, 横, 高さ) に相当する基底です。
同じように、実数という空間は無限次元
  a1 x1 + a2 x2 + a3 x3 + ・・・
で表されることになります。
 ※ こうした幾何学的イメージを持てば、ここまで(0を除く)と入れてきた注釈がうまく空間の中に収まります。
 ※ すなわち、空間の原点に0を当てはめればよいのです。

さて、だいぶ目的に近づいてきました。
当初の目的は、指数法則 f(m + n) = f(m)・f(n) を満たす関数作りでした。
実数全体を同値類という無数の集合に分けた後、それぞれの同値類について、適当に異なる定数を加えます。

たとえば f という関数を、以下のように定義します。

・与えられた数 m を、基底 m = a1 x1 + a2 x2 + a3 x3 + ・・・ に分解する。
・各基底ごとに異なる適当な定数 c を定める。
  c はわりと何でもよいのだが、たとえば次のようなルールで定める。
  基底 xn を10進数表記で表し、最初に出てきた 0以外の数字 c(xn) を取り出す。
  たとえば基底がπであれば、π=3.1415…なので、c(π) = 3。
  基底が√2だったら、√2=1.414…なので、c(√2) = 1。
・すべての規定について an xn + c(xn) を足し合わせた結果の指数関数を、関数 f として定義する。
  基底ごとに異なる適当な定数 c(xn) を足す、というところがミソ。
  f(m) = exp( Σ[n]{ an xn + c(xn) } )

例:
 m = 1π + 2√2
 n = 3π + 4√2
のとき、
 f(m + n)
   = exp( 1π + 3 + 2√2 + 1 + 3π + 3 + 4√2 + 1 )
   = exp( 1π + 2√2 )・exp( 3π + 4√2 )・exp(3)・exp(1)・exp(3)・exp(1)
 f(m)・f(n)
   = exp( 1π + 3 + 2√2 + 1)・exp(3π + 3 + 4√2 + 1 )
   = exp( 1π + 2√2 )・exp(3)・exp(1)・exp( 3π + 4√2 )・exp(3)・exp(1)

確かに、この関数は指数法則を満たしているぞ。
この関数 f をグラフに描けば、exp(n)倍という整数刻みで分裂した、穴だらけの指数関数として表されることでしょう。
あるいは、

・適当な定数 c を、基底と同じ値に定める。
 たとえばπという基底に付ける定数はπ。√2という基底に付ける定数は√2。
  f( 1π + 2√2 ) = exp( 1π + π + 2√2 + √2 )

といった方法で関数 f を作ったなら、この関数 f のグラフは(y>0の)平面上をびっしりと埋め尽くす、穴だらけの指数関数となるでしょう。

検索したら、こんな記事があった。なるほど。
* ハメル基底とf(x+y)=f(x)+f(y)をみたす関数
>> http://math-note.xyz/set-theory/application-of-hamel-basis/