再びぱらぱらめくる『Cluster algebras and triangulated surfaces. Part II: Lambda lengths』

目次

1 Introduction 全体像

2 Non-normalized cluster algebras 代数としての団代数

  • 代数としての定義
  • まず、群Pを必要とする。これは係数を作るための群。可換群(どんな2要素も掛け合わせられる)
    • したがって、P = \{p_i\}について、\prod_{i} p_i^ {z_i} \in P; z_i \in Zとなる。Pの要素に関する単項式
    • この群Pの整数次数単項式を考える。これは、整数Zを環と見て、群Pと組み合わせることで、ZPなる群環である
      • ただし、これは整数次数単項式だが、後にこれをトロピカル演算で考えると、整数係数多項式でもあることになる
  • 次に、n個の代数変数 x = \{x_j\};j = 1,2,...,nを必要とする
    • そして、このn個の変数が作る、有理多項式の集合を考えると、それは体となる。ただし、有理多項式の係数は、上で定めた群環ZPの要素とする
  • 最後にn \times nの整数反対称化可能行列  Bを必要とする
    • Bの要素である整数は、群環ZPの次数として現れ、また、ZPを係数とするxの有理多項式における変数x_jの次数として現れる
  • 今、あるn個の代数変数の集合xと、n個の代数変数に対応させた群間ZPの要素である係数の集合p(ただし、1個の代数変数に対して、二つの係数p^+,p^-を取る。p^+,p^-の間にはある関係がある)と、n個の代数変数を行番・列番に対応付けたn \times n整数係数反対称化可能行列 Bとが作る三つ組み(x,p,B)をシード(種)と呼ぶことにする
  • 最後に、この三つ組みシードに「変異」を定義する
    • 変異は、n通りある
    • 今、1,2,...,nのうちk番に相当する変異をさせるとすると、xが持つn個の代数変数のうちx_kが変更され\bar{x_k}になる。他の代数変数は変化しない
    • 変化する代数変数(有理多項式)は代数変数pと行列Bの要素とで表される式によって変化する
    • 代数係数は、逆に、取り換えられる変数x_kに関するものの変化の式表現は単純であるのに対し、それ以外の代数変数に対応する係数(係数のペア)の変化の式表現は複雑になっている
    • 反対称行列の要素も変化する
  • これらの「変異」によって、あらたな三つ組みが生じる。代数変数が1つ新たに生じ、2n個の代数係数が変化し、反対称行列Bが別の反対称行列になる
  • このn通りの変化による三つ組み(x,p,B)は相互交換関係で結びつき、構造を持つ
  • なお、各代数変数に付随する2つの係数の比y(x) = \frac{p^+(x)}{p^-(x)}を使うこともある。(これは、geometricな団代数の特別な場合に相当する使い方かもしれない) また、この比を取る操作は「normalization」とも関係するらしい。さらにまた、トロピカル演算・トロピカル代数的な解釈につながる係数どりともなっているらしい
  • 団代数の変異は、ある状態から常にn通りある。したがって、その変異でつながった状態を表したグラフは、n-正則グラフになる。これが後にTeichmuller空間として説明される(らしい)

3 Rescaling and normalization 団変数・係数の変化が単項式関係になるように調整した団代数

  • Geometric typeの団係数はrescalingされ、normalizeされているので、それについて説明した章

4 Cluster algebras of geometric type and their positive realizations 三角化に対応するような幾何的説明を持つような一部の団代数であって、その団代数にはトロピカル半環を満足する団係数が付随する

  • Geometric typeの団代数は、トロピカル半体を用いて定義される団係数であるとして定義される
  • 交換行列として長方形のもの"Extended exchange matrix"を用いると便利らしい
  • ある状態から、n通りの変異がある。また、この団代数は|I|個の団変数からなっているとする。今、ある状態があったときに、n通りの変異に相当してn個の値を、|I|個の団変数に対応して|I|個の値が定まるとき、n+|I|個の値が、この状態の「座標」であるとみなせる
  • この座標用の値を取り出すにあたって、いずれも正の実数を取り出すように定めたものがTeichmuller空間座標

5 Bordered surfaces, arc complexes, and tagged arcs 幾何的団代数である曲面上の三角化を団代数的に対称的に扱うための工夫などについて

  • 穴g個、辺縁b個(辺縁上の点の数c個)、puncture(点)p個の面のIdeal triangulationでは、n = 6g + 3b + 3p + c - 6 本のarcsで三角化される。ただし、Self-folded 三角形もOKとする
  • tagタイプ(plain vs. tagged)で区別されるのは、punctureに刺入する箇所だけ。辺縁上の点への刺入個所は常にplain
  • 同一punctureに刺入するarcの刺入部のtagタイプは同一(したがって、ループ状のarcの両端のtag タイプは同じ)
  • よくある説明では、arcがループであって、その内部に1個のpunctureを持つとき、そのループを始点終点頂点から、内部punctureへのtagged arcとみなし、その内部puncture刺入部のtagタイプをtaggedとする、というルールが用いられる
  • tagged arcによってideal triangulationsのパターンは増える。また、それらの交換関係はn-正則グラフになる
  • Skew-symmetric 行列
    • まず、ふつうの三角化状態(すべてのarcは両端ともにplainで、三角形にはself-foldedが一つもない状態)とする
    • 辺の本数nに対してnxn行列を作る。すべての三角形について、時計回り(または反時計回り)に辺iが辺jに接続する関係のとき、(i,j)成分を1とし、(j,i)成分を-1とし、それ以外を0とする
    • 辺の交換によって三角化を変化させ、三角化の変化に対応した行列の変異によって新たなskew-symmetric 行列を作っていくことができる
    • その行列の変異とは、以下の通り。ただし、フリップする辺が1,2,...,n個の辺の第k番に相当している者とする
      • b_{ij}' = -b_{ij} もし、i=kもしくはj=kの場合
      • b_{ij} ' = b_{ij} + \frac{|b_{ik}|b_{kj} + b_{ik} |b_{kj}|}{2} それ以外の場合
  • Rでやってみる。四面体から、self-joined triangleを経て、tagged type辺が二本集まる点を作るまでの処理を実行。skew-symmetric 行列で、二つの三角形にサンドイッチされた2辺の関係は「0」になることに注意

6 Structural results 幾何的団代数の交換構造について。ただしTeichmuller空間を用いないでそれを説明する

7 Lambda lengths on bordered surfaces with punctures Teichmuller空間を用いて幾何的団代数を説明するための道具立てとしてのLambda lengths

8 Lambda lengths of tagged arcs 幾何的団代数を代数的にきれいにするために導入した特殊な辺(arc)であるtagged arcsにLambda lengthsを定義する

9 Opened surfaces 7と8とで扱ったTeichmuller spaceでは団係数の交換関係を系統だてて表せないので、opened surfaceという構造に拡張する

10 Lambda lengths on opened surfaces 拡張されたopened surfaceに対して新たにLambda lengthsを定義することで整合性を維持する

11 Non-normalized exchange patterns from surfaces Normalizeしてうまく回していた団代数・変数・係数を再度、Non-normalizedにしつつ、系全体の交換関係を記述する方法を示す

12 Laminations and shear coordinates ラムダ lengthsとは異なるshear coordinatesというarcの「長さ」の取り方があるので、それに即して、議論しなおす

13 Shear coordinates with respect to tagged triangulations 12に引き続き、tagged arcsについてもshear coordinates的取扱いをする

14 Tropical lambda lengths Laminated Teichmuller空間にトロピカルlambda lengthsを導入する

15 Laminated Teichmuller spaces 幾何的団代数を一般化するために、opened surface, tagged arcs, tropical lambda lengthsを導入してきた。それらを備えたLaminate Teichmuller spacesというものについて

16 Topological realizations of some coordinate rings 15の考え方の適用先・応用先についての説明

17 Principal and universal coefficients 15の考え方での団係数の取り方について

Appendix A Tropical degeneration and relative lambda lengths 到達した成果であるlaminated Teichmuller spacesのlambda lengths(一般化されている)は、トロピカル代数・トロピカル幾何的にアプローチできること

Appendix B Versions of Teichmuller spaces and coordinates タイヒミューラー空間にいくつかのバリエーションが登場したが、それらの座標系の相互関係について

ぱらぱらめくる『トロピカル幾何学入門』

  • こちらの文書(『トロピカル幾何学入門』)を読む
  • トロピカル演算はx \oplus y = \text{max}(x,y),x \otimes y = x + yなる演算
  • 実数にこの演算を備えるとトロピカル半環になる
  • トロピカル半環の性質には「冪等」がある。何度々演算を繰り返しても答えが変わらない。これが便利なことはいろいろな場面であるらしい。自分では実感がわかないのだが
  • 量子化とも関係する。量子力学では、プランク定数と言うものがあって、それが古典力学量子力学の「ずれ」の素のような役割をしている。逆に言うと、このプランク定数の極限0を取ると、量子力学古典力学に一致する。トロピカル演算はx \oplus y = h \log{e^{x/h} + e^{y/h}}, x \otimes y = h \log{e^{x/h} e^{x/h}} = x+ yのように「プランク定数 h」でパラメタライズして、そのh \to +0という極限であるとの定義もあるように、「量子力学古典力学近似」ともみなせる。arxiv.orgの図がわかりやすい。

特定のベクトルを含む回転行列をグラム-シュミットで作る

  • n x n 回転行列を作りたい
  • m < n 個の点は固定したまま回転させたい
  • m個の点のうちの1つを原点となるように平行移動し、残りのm-1個のベクトルが張る部分空間を固定したままの回転行列が作りたい

SAGEでリーマンの写像定理遊びをする

  • 単位円板と同相な面があったとき、conformalな写像が存在して、単位円板に滑らかに移せる、しかもしれは一意、というのがリーマンの写像定理
  • 存在証明と一意性の証明はされるものの、「みつける」のは面倒くさくて、計算機的にはちまちまと計算するらしい
  • 数学アプリのsageにはそれがあって、最近のsageはjupyter notebookでさらさらとじっこうできる。背後ではpythonのベクトル・行列状データ保持などを使っていることもあり、pythonでやっているようなつもりでできる
  • sageのインストールはこちら

www.sagemath.org
こちらでもよい

  • さて、立ち上がるようになったら、Riemannの写像定理の実例ページに行ってみよう
  • 絵が出るコードがないと、楽しめないので、例えばこちら

projecteuclid.orgに行ってみよう

  • いろいろあるけれど、多角形にうまいこと単位円板と対応付けられる座標系を描いてくれそうな図とコードがあるのでやってみる
  • インストールしたSAGE-MATHのjupyter版を起動すれば、jupyter notebookが立ち上がるので、あ他らしいノートブックを作る。もちろん、実行カーネルはsage-math
ps = polygon_spline([(-1,-1),(1,-1),(1,1),(-1,1)])
z = lambda t: ps.value(t) # Riemann map for a square
zp = lambda t: ps.derivative(t)
m = Riemann_Map([z],[zp],.3+.3*I)
p = m.plot_colored(plot_points=1000) +m.plot_spiderweb(pts=150)
show(p,axes=false)
  • これをrunしてエラーが出なければOK

f:id:ryamada:20200719100727p:plain

  • このコードが何をしているのかが読みとれれば、改変して使えるはず
ps = polygon_spline([(-1,-1),(1,-1),(1,1),(-1,1)])
  • 多角形とその(内部)のスプライン曲線をいじる関数っぽい。2次元4点を指定している模様であり、それは、出力図とも符合するから、そう信じてよさそう
z = lambda t: ps.value(t) # Riemann map for a square
  • 作った多角形psに何かしら変数tを与えて計算しているっぽい。実際、この変数tはデフォルトで実数値パラメタとして適当な幅等で作るものらしいので、使うことする。zに何かpsの領域に値付けがされたことになる
zp = lambda t: ps.derivative(t)
  • こちらも同様に多角形ps内に値を与える処理らしい。derivativeという用語からわかるように微分と関係しているのだろう。滑らかにしたいし、conformalにしたいから、微分は大事なのでしょう
m = Riemann_Map([z],[zp],.3+.3*I)
  • ここにRiemann_Map()なる、いかにも「本体」な関数が出ている。ps内部に算出した2種類の値 zとzsとを引数として取り、第三の引数 .3 + .3 * I を取っている。これは複素数。図を見ると、座標系の中心を定めた極座標形式の曲線群が描かれているから、その曲線群の「中心」は大事な役割なはずであることがわかる。確かに、第三引数である複素数複素平面上の点としたときの位置が、曲線群の「起点」になっているから、起点指定をしているのだろうと想像がつく
p = m.plot_colored(plot_points=1000) +m.plot_spiderweb(pts=150)
show(p,axes=false)
  • これは見るからに、プロット。colorに関することと、spiderweb(中心を持った蜘蛛の巣に関することを、点の数で指定しているように読めるから、図の解像度だろうと予想される。色は、複素数の様子を表すためのもの、蜘蛛の巣は、単位円板だったら、射的の的の極座標に相当するもの
  • これで準備は終わり
  • spiderwebの方だけ、もう少し、パラメタ指定を細かくできるようになっておくと便利そうなので、help(m.plot_spiderwb)などで調べておく
  • さあ、本題
  • 適当な多角形でやってみよう
ps = polygon_spline([(0,0),(1,0),(3/2,sqrt(3)/2),(1,sqrt(3)),(0,sqrt(3)),(1/2,sqrt(3)/2)]) # 正三角形の貼り合わせ
z = lambda t: ps.value(t) # Riemann map for正三角形の貼り合わせ
zp = lambda t: ps.derivative(t)
m = Riemann_Map([z],[zp],1.0+sqrt(3)/2*I) # 中心を (1.0, sqrt(3/2)として描く
p = m.plot_colored(plot_points=100) +m.plot_spiderweb(spokes=64, circles=8,pts=30) # 極座標の放射線の数と輪の数を追加指定してみた
show(p,axes=false)

f:id:ryamada:20200719101939p:plain

ps = polygon_spline([(0,0),(1,0),(3/2,sqrt(3)/2),(1,sqrt(3)),(0,sqrt(3)),(1/2,sqrt(3)/2)]) # 正三角形の貼り合わせ
z = lambda t: ps.value(t) # Riemann map for正三角形の貼り合わせ
zp = lambda t: ps.derivative(t)
m = Riemann_Map([z],[zp],0.2+0.2*I) # 中心を変えてみた
p = m.plot_colored(plot_points=100) +m.plot_spiderweb(spokes=64, circles=8,pts=150)
show(p,axes=false)
  • 中心を変えると、凹になったところがちょっとうまく行っていない感じ。リーマンの写像定理は、凹凸があってもいけるはずなので、この辺りは、今使っている計算関数の仕様が、そのあたりをはしょっているせいなのかなー、と思われる。詳しくは、計算アルゴリズムの説明に当たらないといけないが、遊びだから良しとしよう

f:id:ryamada:20200719102214p:plain

  • さらに形を複雑にすると、spiderwebに無理が生じることがわかり、関数のアルゴリズムが端折っているせいだという予想がさらに高まる…
ps = polygon_spline([(0,0),(1,0),(3/2,sqrt(3)/2),(5/2,sqrt(3)/2),(3,sqrt(3)),(5/2,3*sqrt(3)/2),(2,sqrt(3)),(1,sqrt(3)),(3/2,3*sqrt(3)/2),(1/2,3*sqrt(3)/2),(0,sqrt(3)),(1/2,sqrt(3)/2)]) # 正三角形の貼り合わせ
z = lambda t: ps.value(t) # Riemann map for正三角形の貼り合わせ
zp = lambda t: ps.derivative(t)
m = Riemann_Map([z],[zp],1.0+sqrt(3)/3*I) # 中心を (1.0, sqrt(3/2)として描く
p = m.plot_colored(plot_points=100) +m.plot_spiderweb(spokes=10, circles=8,pts=150)
show(p,axes=false)

f:id:ryamada:20200719102344p:plain

Ptolemy's theorem トレミーの定理

  • 円に内接する四角形ABCDがあった時|AC|\times |BD| = |AB| \times |CD| + |BC| \times |DA|が成り立つそうだ

en.wikipedia.org

t <- sort(runif(4) * 2 * pi)
x <- cos(t)
y <- sin(t)
xy <- cbind(x,y)
d <- as.matrix(dist(xy))
d

d[1,3] * d[2,4] - (d[1,2] * d[3,4] + d[2,3] * d[4,1])
> t <- sort(runif(4) * 2 * pi)
> x <- cos(t)
> y <- sin(t)
> xy <- cbind(x,y)
> d <- as.matrix(dist(xy))
> d
         1        2        3        4
1 0.000000 0.855728 1.940275 1.976644
2 0.855728 0.000000 1.546143 1.656181
3 1.940275 1.546143 0.000000 0.183788
4 1.976644 1.656181 0.183788 0.000000
> d[1,3] * d[2,4] - (d[1,2] * d[3,4] + d[2,3] * d[4,1])
[1] 4.440892e-16
  • 単位球面上の四角形では成り立たないようだが、双曲面の場合に、単位円板の円周上の点(無限遠点)を頂点とする四角形の場合には、距離の取り方をちゃんとすると成り立つらしい

https://www.maths.gla.ac.uk/wws/cabripages/hyperbolic/hybrid1.html

Teichmuller spaceの座標系

  • 特徴づけられた定負曲率面のトポロジー的関係が作るTeichmuller spaceには座標が与えられる
  • 色々な座標がある
  • Wikipediaの記事にも

Coordinatesの項があり、Frechel-Nielsen coordinates, Shear coordinates, Earthquakesが書かれている

  • それ以外にも、文献検索によりTrace coordinatesとかShift coordinatesなども見つかる
  • また、Coordinatesの値を与えるために導入されるLambda lengthsなどの概念も必要になる
  • 元々の「特徴づけられた定負曲率面」が異なるので、それぞれ、うまく機能する座標を入れるには、それぞれに合致したそれを作らないといけない、と言うことなのだろう
  • その上で、三角化メッシュのための座標系を理解することを目標にしつつ、それ以外の座標系にも目配りして、Teichmuller spaceの座標系をより整理した形で理解できれば、と思ってこの記事を書く
  • Teichmuller 座標とは違うが、曲面上のarc同士の関係には、intersection number(交叉回数)と言うものがある。これは、arcを団変数とした時に、そのローラン多項式の分母に相手方arc変数の次数と一致する