Google ClassroomGoogleクラスルーム
GeoGebraGeoGebra Classroom

「自然変換」によって、圏は3階建てになる

このページはマス旅の一部です。 前回は圏のイメージ作りからファンクターを学び、自然変換を少しやりました。 今回は、ファンクターの復習をしてから自然変換を中心に学びます。 自然変換があると圏は3階建てになります。 では、圏論では対象の中身に依存しない理論だから、今回は「対象」を「点」と呼ぶにします。 すると、圏論はざっくり3階建てにして記述する理論になりますね。 1Fは圏です。点と線(→)でできた世界ですね。 2Fはファンクターです。点に見立てた圏をコンテナに入れて新しい圏にします。 3Fは自然変換です。ファンクターを点に見立てて、点と点のつなぎます。 定食屋さんのメニューをおさらします。 <定食屋さんのビル> 1F(圏):{点:[ハンバーグ、チーズハンバーグ,…],射:[チーズをせる,和風にする,..],1:そのまま] 2F(ファンクター):{点:[ライスセット化、パンセット化、ビールつき,...],1:単品のまま] ライスセット化をするとハンバーグ圏がライスセットというコンテナに入り、ハンバーグライスセット圏ができます。パンセット化をするとハンバーグ圏がパンセットというコンテナに入り、ハンバーグパンセット圏ができます。 これで、1Fが賑やかになりますね。 3F(自然変換): 自然変換はファンクター、つまり、セット化の変更作業です。 ハンバーグライスセット圏をハンバーグパンセット圏に移し替えることは、 「最小の作用で最適化ができる」 という「普遍性」の原理からして、1つに決まります。 言い換えると、ライスの皿を取り下げてから、パンの皿をコンテナに入れても、 パンの皿を入れてからライスの皿を下げても 「図式は可換」という言い方もできますね。 圏論は内在的なモノの特性を根拠とする視点ではなく、 外部的なモノの関係性を根拠とする視点の理論です。 ざっくりいうと、「分野の専門家目線ではなくても外部から観察しても気づきがある」かも という、「素人でもいろんな分野の構造的な理解の可能性を示唆してくれる」理論です。 というわけで、身近なたとえは終わり、 数学のいろんな分野を 3階建てにして見学するツアーに出かけよう!

1.数学のビルツアーをしよう

<1日目は線形代数ビル> 1F(圏)は「ベクトル空間」たちの住処です。 「ベクトル」という点たちと、それをつなぐ写像としての「行列」がごろごろしてますね。 2F(ファンクター)に上ってみよう。 「基底(座標軸)」を決めることで、空間そのものを丸ごと別の空間へ変換する操作がころがっていますね。元のベクトル空間 V から、その上のすべての線形写像(関数)を集めて作った「双対(そうつい)空間V^{*}」という、裏返しの新しい空間を丸ごと生成する操作が必要になります。 これが2Fのコンテナです。 この操作によって、1Fの世界に「裏返し空間」がいくつも誕生し、一気に賑やかになります。 3F(自然変換):基底に依存するいろんな空間変換を翻訳するところです。 座標の選び方に依存しない空間の変換同士をつなぐ高い視点が欲しくなりますね。 実は2Fで空間を1回裏返した「双対空間 V^{*}」は、「どんな基底(座標軸)を選ぶか」によって数式が変わってしまい、元の空間と綺麗に同期できません。 しかし、空間をさらにもう1回裏返した「二重双対空間 (V^{**})」のコンテナを考えると、奇跡が起きます。 今度は基底を人間がどう選ぼうが一切関係なく自動的・一意に、 元の空間のベクトルと1対1でカチッと対応する仕組みが存在するのです。 可換図式: 1Fで行列を使ってベクトルを変換してから3Fのルールで二重双対空間へ引っ越しても、先に二重双対空間へ引っ越してから行列を作用させても、結果は完全に一致します。「人間がどんな座標軸で計算(1F)しようとも、空間の引っ越しルール(3F)は絶対にバグを起こさず同期する」という、線形代数の最も美しく自然な連動性が、この3Fに厳然と存在しています。 これを読んでどう感じますか? 双対空間と二重双対空間の定義を知らなくても、 何が起きているのか、 点と線を見る感覚でイメージがわいてきますよね。 もしかしたら、「ちゃんと定義まで調べてみよう」と思うかもしれませんね。 そう考えると、「圏の3階建てストーリー化」は、 数学の分野を語るファンクターになっている気がしてきませんか。
<2日目、トポロジー(位相空間論)ビル> 昨日の線形代数ビルは「座標の束縛」を解く3階建てでした。 今日のビルで「ぐにゃぐにゃ動く世界のルール」をオーバービューしよう。 位相空間は、点の集まりに近さを部分集合で付属させた空間です。 1F(圏):ドーナツの表面や球面などの図形(多様体)に位相(近傍)を入れたウネウネしたモノ(位相空間)たちと、それらをトポロジカルに変形して移し変える(連続写像)がうようとしてます。 2F(ファンクター):複雑な高次元の怪物のように穴があったりくねってり裏返したり、穴を通してまた自分につながったりと怪物のようなものも含む図形の形を調べるためのコンテナのたまり場です。 1Fのウネウネした怪物を丸ごと包み込んで、カチッとした「代数(群)」の世界へと翻訳してしまう 強力な計算マシン群ともいえます。 図形を丸ごと、『穴の数や性質を表す群(ホモトピー群やホモロジー群)』へ翻訳して、代数計算に持ち込むという操作をするのです。 「ホモトピー群」ではループを連続変形して独立なループ数を数える発想でした。くわしくはこちら。 「ホモロジー群」は単体と複体という点と線と面の自由な群で空間を貼り付けてその境界部分の次元の変化を数値化して同型な群を見つけました。くわしくはこちら。 ファンクターは、このような図形から群を取り出す計算操作のたまり場です。 3F(自然変換):2Fの計算操作(図形Xから取り出した穴の群と、図形Yから取り出した穴の群)は、図形が変形する動き(1F)と完全にシンクロして、群の要素同士も綺麗に移り変わらなければなりませんね。 「図形のマクロな変形」と「ミクロな穴のデータの移り変わり」が絶対にズレないというトポロジーの計算の正しさを支える場所です。 可換図式:ルートA: 「図形X」を先に2Fのコンテナで「Xの穴の群」にしてから、3Fのルールで「Yの穴の群」へ移す。ルートB: 「図形X」を先に1Fの写像で「図形Y」に変形させてから、2Fのコンテナで「Y of 穴の群」にする。トポロジーの世界では、この2つのルートの答えが絶対に1ミリもズレずに一致(可換)します。トポロジーの計算の正しさの命綱が、この3Fに厳然と存在しているのですね。
<3か目、群論ビル> 群論:対称性のルールから「数のお絵かき」へ翻訳する。 1F(圏):多角形の回転、トランプのシャッフル、ルービックキューブの解き方、一般代数方程式の解の公式の導き方などの「対称性のルール(群)」が点で、点をこわさずに点とつなぐ線(準同型写像)が売るほどいます。 2F(ファンクター):群(抽象的なルールの集まり)の内側で行き詰まったとき、数式で扱いやすくするために、線(群)を線形代数圏の線である行列にアプローチ(群の表現論)が必要になります。この「群の世界」から「線形代数の世界」への橋渡し(表の構成)が流行中です。 エッシャーのだまし絵のもとにもなっているモジュラー変換を行列で表したり(くわしくはこちら、https://www.geogebra.org/m/twxxx3yq#material/q8ktcyye) 楕円曲線のn等分点のガロア群のかきまぜ置換たちをガロア表現したり(くわしくはこちら、https://www.geogebra.org/m/twxxx3yq#material/krhywgac) 有限体上の楕円曲線上の解のフロベニウス置換をガロア表現したり(くわしくはこちら、https://www.geogebra.org/m/twxxx3yq#material/h3vujyjs) 群の研究は楕円関数を仲立ちにして線形代数と解析と表裏一体のファンクターだらけになっている感があるね。 この2Fの盛り上がりのおかげで、1Fの圏は、ものすごい大繁盛してます。 それが、また2Fをにぎわすという沸騰状態ですね。 3F(自然変換):2Fの翻訳(行列への置き換え)には何通りものやり方があります。 例えば、ある群を「空間Aの行列」に翻訳するルート1と、「空間Bの行列」に翻訳するルート2があるとします。 このとき、群の要素をどう動かしても、空間Aの行列と空間Bの行列の間の関係(ベースの変換)が綺麗に連動し続ける必要があります。この「翻訳の仕方が変わっても、その間の関係性が群の動きと常に同期していること」を保証する仕組みが自然変換ですね。
<4日目、計算科学(プログラミング言語)ビル> プログラミング:データの型を変換する処理を共通化する。 1F(圏):int や string などの「データ型」が点で、 それを変換する線たちが働くプログラミング言語の世界です。 2F(ファンクター): 階段を上がって2Fにやってきました。ここでは、1Fのシンプルなデータを丸ごと包み込んで、 「エラーの可能性」や「大量のデータ」といった、特別な「文脈」を与えるコンテナ操作(型コンテナ)が盛んに使われています。 エラーが起きる可能性(Optional)や、複数のデータの集まり(List)など、「元の型を特定の文脈やコンテナで包み込んだ、新しい型をシステム的に生成する操作」が必要になります。型をコンテナ化するこの仕組みが2Fです。 データxがエラー値である可能性があるとき、xをJustでくるむかNothingでかえすというコンテナ(Maybe)、データxがエラー値である可能性があるとき、xをRightでくるむかLeftにメッセージをいれてかえすコンテナ(Either)、この辺は前回やりましたね。 それと、あたりまえのようにPythonで使っているListは、データxを[x]という形でコンテナに入れてますね。int型の Xとstring型の Yを一緒に入れる、タプル(X,Y)なんていうコンテナもありますが、これが数学的に矛盾なく動くというのも裏側に理論があるからでしょうね。 3F(自然変換):コンテナの種類を超えた、中身の自動変換を考えてみよう。List(コンテナ1)に入ったデータを、Optional(コンテナ2)へと安全に変換する「共通処理(例えば、リストの先頭だけを安全に取り出す safe_head 関数)」を考えます。 中身のデータが int であれ string であれ、「リスト全体に関数を適用してから先頭を取る」のと「先頭を取ってからその関数を適用する」結果は必ず一致します。 「中身の型が何に変わっても、コンテナ間の引っ越しルールがバグを起こさずに一貫して動く」という 「ジェネリクス(型多相性)」の安全性を自然変換が保証しているのですね。
<5日目は、巨大な要塞、解析学ビル> 解析学は、おなじみの微積分・複素解析、微分方程式が入ってますね。 1F(圏):なめらかな関数(おなじみべきx^n、三角sin(x),指数、対数、…)という点たちをつなぐ「微分演算子」という線が行き交います。 2F(ファンクター):階段を上がって2Fにやってきました。ここでは、1Fのバラバラな関数たちを丸ごと包み込んで、新しい無限次元の「関数空間(コンテナ)」を作ったり、それを別の関数空間(コンテナ)へと丸ごと翻訳するマクロな操作が置かれています。 熱の伝わりや波の動きという物理現象などを解明するための微分方程式の解を求めるためには、1点(関数)ずつ考えるのでなく、点を無数にあつめて丸ごとあつかう『関数空間(ヒルベルト空間やソボレフ空間)』という巨大なコンテナにするアプローチが必要になりました。 有名な「フーリエ変換・ラプラス変換」は、「複雑な関数の世界」を丸ごと「単純な掛け算だけの世界(周波数領域)」へとパッケージ化して引っ越しさせるファンクターでしたね。くわしくはこちら、フーリエラプラス3F(自然変換):計算の順序を入れ替えても絶対に破綻しない保証 さあ、最上階の3Fです。2Fで作った「関数空間の変換コンテナ」を上から見下ろし、解析学の計算がバグを起こさないかを監視する世界です。 可換図式:例えば、時間を表す変数tで「時間微分(1F)」を行う操作を考えます。 ルートA: 物理のデータを、先に2Fのコンテナ(フーリエ変換)で「周波数の世界」に引っ越しさせてから、3Fのルールで「時間微分」を行う。 ルートB: 元の世界のままで先に「時間微分(1F)」を行ってから、2Fのコンテナ(フーリエ変換)で「周波数の世界」に引っ越しさせる。 解析学の世界では、この2つのルートの答えが完全に一致(可換)します。
<6日目は超小さいビル:12の約数ビル> 1F(圏):12の約数たちと整除の線 点は[1, 2, 3, 4, 6, 12] の6つだけ。線は「割り切る」というルール(整除関係) 2F(ファンクター):階段を上がって2Fにやってきました。ここにあるのは、1Fの点を複数包み込んで、別の約数関係にまるごとシフトするコンテナです。 2倍コンテナ に[1, 3] を入れると[2, 6] になります。6は2で割り切れますね。 2倍コンテナ に[2, 6] を入れると[4, 12] になります。12は4で割り切れますね。 3倍コンテナ に[1, 2] を入れると[3, 6] になります。6は3で割り切れますね。 6倍コンテナ に[1, 2] を入れると[6, 12] になります。12は6で割り切れますね。 2乗コンテナ に[1, 2] を入れると[1, 4] になります。4は1で割り切れますね。 「割り切る関係をキープしたまま数字をスライドさせる操作(単調増加な写像)」こそが、2Fのコンテナ(ファンクター)です。 3F(自然変換):コンテナ同士の「どっちが大きいか」の力関係 さあ、最上階の3Fです。2Fで作った「数字を変換するコンテナ」同士を上から見下ろす世界です。 2倍から3倍へは引っ越しできるでしょうか。 残念ながら「2倍の数」は「3倍の数」を常に割り切るとは限りません(例:2倍(2)=4は 3倍(2)=6を割り切れない)。2倍コンテナから3倍コンテナへの3Fの線(自然変換)は存在できない(架からない)という結論になります。 可換図式: 2倍から6倍への引っ越しできるでしょうか。可換性(同期)は成立します。 ルートA: 1 を先に2倍コンテナで 2 にしてから、3Fのルール(3倍する)で 6(1の6倍)に写す。 ルートB: 1 を先に6倍コンテナで 6 にしてから、3Fのルールで同期させる。 この世界では、2つの点の間に架かる線は最大で1本(あるかないか)しかありません。 そのため、「ルートAとルートBがどちらも存在するなら、行き着く先での割り切る関係は絶対に矛盾しない(自動的に可換になる)」という、最も純粋な形で可換図式が成立しています。

2.小さな圏の自然変換の視覚化をしてみる。

自然変換の視覚化をしてみる。 課題:2倍と6倍の自然変換の図式が可換であることを視覚化しよう。 #Pythonを使わなくても、geogebraで図式がカンタンにかけます。 #オブジェクトの設定のラベルの変更によって、記述の自由度があがりますね。 #タイトル「12の約数圏での自然変換」 #四角形ABCDをかきます。 A=(-3,3) B=(-3,-1) C=(3,-1) D=(3,3) Na=Vector(A,B) Nb=Vector(D,C) Ff=Vector(A,D) Gf=Vector(B,C) 4点A,B,C,Dの設定を順にひらいてラベルを2倍(a),6倍(a),6倍(b),2倍(b)に変更します。 2つのベクトルFf,Gfの設定を順にひらいてラベルを整除関係,整除関係に変更します。 2つのベクトルNa,Nbの設定を順にひらいてラベルを3倍が自然,3倍が自然に変更します。 ビューの格子と軸を設定で非表示にすると、図に見えますね。

12の約数圏での自然変換