{ "cells": [ { "cell_type": "markdown", "id": "9ef0376e", "metadata": {}, "source": [ "# EMR曲率公式における最高次係数\n", "\n", "このNotebookは、論文 *Diffeomorphism Groups of Circle Bundles over Integral\n", "Symplectic Manifolds* の定理3.4で用いられる有限次元計算を再現します。\n", "すべての置換について符号付き和を取り、標準複素構造のコピーを縮約します。\n", "\n", "研究で使用した完全なコードは\n", "[EMR-Paper-Computation](https://github.com/egisatoshi/EMR-Paper-Computation)\n", "で公開されています。\n" ] }, { "cell_type": "markdown", "id": "d3711f1e", "metadata": {}, "source": [ "## 標準複素構造\n", "\n", "$2k$ 次元実ベクトル空間上で\n", "\n", "$$\n", "J=\\begin{pmatrix}0&I_k\\\\-I_k&0\\end{pmatrix}.\n", "$$\n", "\n", "とします。このNotebookでは、対話的にすばやく計算できるよう $k=2$ を使います。\n", "最後の節では、まったく同じ定義を使ったより大きな計算結果も示します。\n" ] }, { "cell_type": "code", "execution_count": 1, "id": "bcf9489d", "metadata": {}, "outputs": [], "source": [ "def k := 2\n", "\n", "def J :=\n", " generateTensor\n", " (\\match as list integer with\n", " | [$i, #(i + k)] -> 1\n", " | [$i, #(i - k)] -> -1\n", " | _ -> 0)\n", " [2 * k, 2 * k]\n" ] }, { "cell_type": "code", "execution_count": 2, "id": "ea7fc60c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "$\\begin{pmatrix} 0 & 0 & 1 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ -1 & 0 & 0 & 0 \\\\ 0 & -1 & 0 & 0 \\\\ \\end{pmatrix}$" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "J\n" ] }, { "cell_type": "code", "execution_count": 3, "id": "45787b87", "metadata": {}, "outputs": [ { "data": { "text/html": [ "$\\begin{pmatrix} -1 & 0 & 0 & 0 \\\\ 0 & -1 & 0 & 0 \\\\ 0 & 0 & -1 & 0 \\\\ 0 & 0 & 0 & -1 \\\\ \\end{pmatrix}$" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "withSymbols [a, b, c] J_a~c . J_c~b\n" ] }, { "cell_type": "markdown", "id": "277c0f2d", "metadata": {}, "source": [ "## 交代積\n", "\n", "$S_k$ を次の積の符号付き和とします。\n", "\n", "$$\n", "S_k=\\sum_{\\sigma\\in S_{2k}}\\operatorname{sgn}(\\sigma)\n", " \\prod_{i=1}^{k}J_{\\sigma(2i-1),\\sigma(2i)}.\n", "$$\n", "\n", "`evenAndOddPermutations` は偶置換と奇置換を別々に生成します。\n" ] }, { "cell_type": "code", "execution_count": 4, "id": "75798bdb", "metadata": {}, "outputs": [], "source": [ "def S :=\n", " let (es, os) := evenAndOddPermutations (2 * k) in\n", " sum (map (\\σ -> product (map (\\i -> J_(σ (2 * i - 1))_(σ (2 * i))) (between 1 k))) es) -\n", " sum (map (\\σ -> product (map (\\i -> J_(σ (2 * i - 1))_(σ (2 * i))) (between 1 k))) os)\n" ] }, { "cell_type": "code", "execution_count": 5, "id": "232adb98", "metadata": {}, "outputs": [ { "data": { "text/html": [ "$-8$" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "S\n" ] }, { "cell_type": "markdown", "id": "40b251a9", "metadata": {}, "source": [ "## 曲率の係数\n", "\n", "束のパラメータ $p$ の最高次項は、次のテンソルから構成されます。\n", "\n", "$$\n", "T_{abc}{}^d=-J_{bc}J_a{}^d+J_{ac}J_b{}^d\n", " +2J_{ab}J_c{}^d.\n", "$$\n", "\n", "添字 $a_0,\\ldots,a_{k-1}$ は巡回的な鎖を作ります。テンソル積に続く `.` が\n", "この鎖を縮約し、外側の畳み込みが偶置換と奇置換からの寄与を加算します。\n" ] }, { "cell_type": "code", "execution_count": 6, "id": "12a467b0", "metadata": {}, "outputs": [], "source": [ "def T_a_b_c~d :=\n", " -1 * J_b_c . J_a~d +\n", " J_a_c . J_b~d +\n", " 2 * J_a_b . J_c~d\n", "\n", "def S' :=\n", " withSymbols [a]\n", " let (es, os) := evenAndOddPermutations (2 * k) in\n", " (\\xs -> foldl (+) (head xs) (tail xs))\n", " (map\n", " (\\σ ->\n", " (\\xs -> foldl (.) (head xs) (tail xs))\n", " (map (\\i -> T_(σ (2 * i - 1))_(σ (2 * i))_(a_(modulo i k))~(a_(i - 1))) (between 1 k)))\n", " es) -\n", " (\\xs -> foldl (+) (head xs) (tail xs))\n", " (map\n", " (\\σ ->\n", " (\\xs -> foldl (.) (head xs) (tail xs))\n", " (map (\\i -> T_(σ (2 * i - 1))_(σ (2 * i))_(a_(modulo i k))~(a_(i - 1))) (between 1 k)))\n", " os)\n" ] }, { "cell_type": "code", "execution_count": 7, "id": "9649a4a6", "metadata": {}, "outputs": [ { "data": { "text/html": [ "$192$" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "S'\n" ] }, { "cell_type": "markdown", "id": "ed1338ff", "metadata": {}, "source": [ "## より高い次元\n", "\n", "同じプログラムから次の結果が得られます。\n", "\n", "$$\n", "\\begin{array}{c|rr}\n", "k&S_k&S'_k\\\\ \\hline\n", "2&-8&192\\\\\n", "3&-48&0\\\\\n", "4&384&61440\n", "\\end{array}\n", "$$\n", "\n", "Egison 5.1.0で $k=4$ の完全な計算には約25分かかります。対話的なNotebookを\n", "$k=2$ にしておくことで、各セルをすばやく再実行できます。最初の定義を\n", "`def k := 4` に変えるだけで、他のコードを変更せずに定理3.4の完全な計算を\n", "実行できます。\n" ] } ], "metadata": { "kernelspec": { "display_name": "Egison", "language": "egison", "name": "egison" }, "language_info": { "codemirror_mode": "egison", "file_extension": ".egi", "mimetype": "text/x-egison", "name": "egison" } }, "nbformat": 4, "nbformat_minor": 5 }