このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

モノイド自然変換としての積分: 大雑把に

モノイド圏上の加群圏の実例」にて:

僕が加群圏にちょっと興味をいだいたのは、変則的なラムダ計算のモデルとして加群圏が使えないかな? と思ったからです。思っただけで、よく分かってません。

これ、分かりました。

何が分かったのか? を大雑把に記します。どうしてそうなるのか? を説明する余裕が今日はないので、それは時間と気力があるときに書くつもりです。

内容:

  1. 積分の計算がモナドみたいだった理由
  2. 積分計算
  3. コンパクト測度空間
  4. 割とうまく出来てる

積分の計算がモナドみたいだった理由

ことの発端は、次の記事に書いてあります。

ラムダ計算に積分を入れてみた、あるいは積分計算にラムダ抽象を入れてみたわけです。ちょっと計算してみると、状況がなんかモナドモナド変換と似ているんですよ。モナドの香りがするぞ! けど、モナドそのものではないのです。モナド/モノイドに似たナニカがありそうです。なんだろう? モヤモヤ、ヤキモキ。

それで、加群圏(module category)が何か関係するのではないか、と当たりを付けました。加群圏に関しては、次の記事にかなり詳しく書きました。

結果的に、山勘が当たったようです。つまり、積分を入れたラムダ計算、あるいはラムダ抽象を持つ積分計算の構造のなかに加群圏が現れます。上記の記事で述べたように、「加群圏=自己関手圏へのモノイド関手」なので、自己関手圏へのモノイド関手が現れる、と言っても同じことです。

さらに、積分という操作がモノイド関手のあいだのモノイド自然変換(monoidal natural transformation)になります。モノイド関手やモノイド自然変換は、モナド/モノイドと類似した構造を持ちます。積分がモノイド自然変換なら、モナドの香りがするのは納得がいくことです。これで、僕のモヤモヤ感は晴れたのでした。

積分計算

積分はモノイド自然変換である」という主張をちゃんと示すには、圏論の道具立てが必要です。それだけではなくて、要所要所で具体的な構成が必要で、そのときは積分計算をします。この節では、圏論側ではなくて、積分側の議論で使う公式をひとつだけ紹介します。

僕が最初に気付いたことは、ラムダ抽象を含んだ次の等式が成立しそう(成立すべき)だ、ということです。

 \lambda x. \int_{y\in Y} f(x, y) dy = \int_{y\in Y} \lambda x. f(x, y)\, dy

等号の左右は関数です。「関数の等しさ」は難しいので、on the noseで等しいか?と聞かれると自信がありません。もう一度積分して、積分値の等しさにすると、よりハッキリします。

 \int_{x\in X}\biggl( \lambda x. \int_{y\in Y} f(x, y) dy\biggr)(x)\, dx = \int_{x\in X}\biggl(\int_{y\in Y} \lambda x. f(x, y)\, dy\biggr)(x)\, dx

等号の左右の表現(字面)は似てますが、その意味はまったく違います。特に右辺の解釈はけっこう難しいですよ。

右辺の被積分関数は y |→ λx.f(x, y) ですが、ラムダ記号は2変数関数のカリー化を表すので、yに対する値は、1変数(xの)関数です。つまり、y |→ λx.f(x, y) は関数空間に値を取る関数なのです。適当な仮定のもとで、関数空間をバナッハ空間に仕立てられるので、y |→ λx.f(x, y) はY上のバナッハ空間値関数となります。

そうなると、右辺の内側にあるyに沿った積分ボッホナー積分(Bochner integral)を使うことになり、その積分結果はバナッハ空間のベクトルです。そのベクトルを、もう一度X上の関数として再解釈した上で外側の積分を実行します。

左辺はそんなには難しくありません。2変数関数のy方向への積分値達をxの関数とみなして、それをxに沿って積分した値です。これは、通常、λx. なしで簡略に書かれる積分の繰り返し(反復積分、逐次積分)です。

式の見た目では、ラムダ記号の位置がズレているだけなので簡単そうに見えますが、決して自明ではありません。ボッホナー積分なしで等式を示すのは難しそうです。ボッホナー積分については、Wikipedia項目を読んでもおおよそ分かりますが、より詳しい(でも長くない)解説は:

コンパクト測度空間

積分を入れたラムダ計算 状況編」では、関数の定義域としてコンパクト領域を使っています。コンパクト領域とは、標準ユークリッド空間Rnのコンパクト部分集合に多少の条件を付けたものです。

コンパクト領域は具体性があって良いだろうと思ったのですが、どうも具合が悪い。Rnに入っていることが邪魔になるので、コンパクト領域(Rnの部分集合)を使うのはやめます。代わりにコンパクト測度空間を関数の定義域にします。

コンパクト測度空間とは次のようなものです; Xは位相空間で、位相空間としてコンパクト・ハウスドルフとします。Xには、位相から定まるボレル集合族(σ代数)が付いています。なので、Xには唯で可測構造が入ります。この可測構造に対する有界測度をひとつ決めてμとします。(X, μ) がコンパクト測度空間です。

コンパクト測度空間 (X, μ) は、単なる測度空間ではなくて、下部構造として位相を持っているので、Xから/Xへの連続写像/連続関数を考えることができます。Rnに含まれるという制約もないので、使い勝手がいいように思います。

(X, μ), (Y, ν) がコンパクト測度空間だとして、φ:X→Y を連続写像とします。φは可測写像になります。φによりX上の測度μを前送りできるので、それを φ*(μ) と書きます(像測度)。φ*(μ) = ν であるようなφをコンパクト測度空間のあいだの準同型写像だと定義します。

すると、コンパクト測度空間と準同型写像の全体は圏となります。さらに、直積空間と直積測度によりモノイド積を定義すれば、モノイド圏を構成することができます。モノイド積の構成に直積を使ってますが、圏論的直積が出来上がるわけではありませんから注意してください。このモノイド圏を CompMS = (CompMS, \otimes, 1) とします。1 は単元集合上に構成した自明な測度空間です。

積分を入れたラムダ計算 状況編」と同じ議論で、モノイド圏CompMSはバナッハ空間の圏Banに作用します。つまり、バナッハ空間の圏BanCompMS上の加群の構造を持ちます。「モノイド圏と加群圏に関するフォークロアとマックレーン五角形・三角形」で述べた無名の定理により、加群圏は CompMS→End(Ban) というモノイド関手を定義します。

割とうまく出来てる

前節で概略を示したモノイド関手 CompMS→End(Ban) を構成し、その他いくつかの準備をすると、積分をモノイド自然変換として解釈できます。積分計算の公式(例えばフビニの定理)が、モノイド関手/モノイド自然変換の条件とうまいこと対応するので、「積分はモノイド自然変換である」は本当っぽい気がします。

勘違いや抜けがあるかも知れませんが、修正をしても大筋はたぶん維持できるでしょう。もう少し確認して、“時間と気力があるときに”具体的な構成法を書くつもりです。