{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "We discuss the implementation of an algorithm to compute the GIT-fan for torus actions on affine varieties with symmetries, based on OSCAR.\n", "The algorithm combines computational techniques from commutative algebra, convex geometry and group theory. Applications of the algorithm (using the original implemenation in Singular) include the computation of the Mori chamber decomposition of the moving cone of $\\overline{M}_{0,6}$.\n", "\n", "In the following, we discuss Example 5.2 in the paper: \n", "\n", "[J. Boehm, S. Keicher, Y. Ren: Computing GIT-Fans with Symmetry and the Mori Chamber Decomposition of $\\overline{M}_{0,6}$](https://arxiv.org/abs/1603.09241)\n", "([Math. Comp. 89 (2020), 3003-3021](https://mathscinet.ams.org/mathscinet-getitem?mr=4136555))" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " ----- ----- ----- - ----- \n", "| | | | | | | | | | \n", "| | | | | | | | \n", "| | ----- | | | |----- \n", "| | | | |-----| | | \n", "| | | | | | | | | | \n", " ----- ----- ----- - - - - \n", "\n", "...combining (and extending) ANTIC, GAP, Polymake and Singular\n", "Version\u001b[32m 0.6.0 \u001b[39m... \n", " ... which comes with absolutely no warranty whatsoever\n", "Type: '?Oscar' for more information\n", "(c) 2019-2021 by The Oscar Development Team\n" ] } ], "source": [ "using Oscar\n", "using GITFans" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let $K$ be an algebraically closed field of characteristic zero.\n", "The Cox ring of $M_{0,5}$ is isomorphic to the coordinate ring $R = K[T_1, \\ldots , T_{10}]/a$ of the affine cone over the Grassmannian $\\mathbb{G}(2, 5)$ where the ideal $a$ is generated by the Plücker relations and the $i$-th row of the matrix $Q$ is the degree $\\operatorname{deg}(T_i)\\in \\mathbb{Z}^5$; this determines the $\\mathbb{Z}^5$- grading of $R$." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# grading matrix\n", "Q = [\n", " 1 1 0 0 0 ;\n", " 1 0 1 1 0 ;\n", " 1 0 1 0 1 ;\n", " 1 0 0 1 1 ;\n", " 0 1 0 0 -1 ;\n", " 0 1 0 -1 0 ;\n", " 0 1 -1 0 0 ;\n", " 0 0 1 0 0 ;\n", " 0 0 0 1 0 ;\n", " 0 0 0 0 1 ];\n", "\n", "# polynomial ring\n", "n = size(Q, 1)\n", "Qt, T = PolynomialRing(QQ, :T => 1:n)\n", "D = free_abelian_group(size(Q,2))\n", "w = [D(Q[i, :]) for i = 1:n]\n", "R = grade(Qt, w)\n", "\n", "# generators for the ideal\n", "a = ideal([\n", " T[5]*T[10] - T[6]*T[9] + T[7]*T[8],\n", " T[1]*T[9] - T[2]*T[7] + T[4]*T[5],\n", " T[1]*T[8] - T[2]*T[6] + T[3]*T[5],\n", " T[1]*T[10] - T[3]*T[7] + T[4]*T[6],\n", " T[2]*T[10] - T[3]*T[9] + T[4]*T[8],\n", "]);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We observe that there is an $S_5$-symmetry for the $H\\cong (K^*)^5$-action on $V(a)$ where the symmetry group $S_5\\cong G\\subseteq S_{10}$ is generated by (2,3)(5,6)(9,10), (1,5,9,10,3)(2,7,8,4,6)." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Group([ (2,3)(5,6)(9,10), (1,5,9,10,3)(2,7,8,4,6) ])" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "perms_list = [ [1,3,2,4,6,5,7,8,10,9], [5,7,1,6,9,2,8,4,10,3] ];\n", "sym10 = symmetric_group(n);\n", "G, emb = sub([sym10(x) for x in perms_list]...);\n", "G" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now compute the GIT-fan, represented as a fan in polymake, using Gröbner bases from Singular:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
type: Group as PolyhedralFan\n", "::GROUP
0 0 0 0 1\n", "0 0 0 1 0\n", "0 0 1 0 0\n", "0 1 -1 0 0\n", "0 1 0 -1 0\n", "0 1 0 0 -1\n", "0 1 0 0 0\n", "1 0 0 1 1\n", "1 0 1 0 1\n", "1 0 1 1 0\n", "1 0 1 1 1\n", "1 1/2 1/2 1/2 1/2\n", "1 1 0 0 0\n", "1 1 0 0 1\n", "1 1 0 1 0\n", "1 1 0 1 1\n", "1 1 1 0 0\n", "1 1 1 0 1\n", "1 1 1 1 0\n", "1 2 0 0 0\n", "
type: Group as PolyhedralFan\n", "::GROUP
0 0 0 0 1\n", "0 0 0 1 0\n", "0 0 1 0 0\n", "0 1 -1 0 0\n", "0 1 0 -1 0\n", "0 1 0 0 -1\n", "0 1 0 0 0\n", "1 0 0 1 1\n", "1 0 1 0 1\n", "1 0 1 1 0\n", "1 0 1 1 1\n", "1 1/2 1/2 1/2 1/2\n", "1 1 0 0 0\n", "1 1 0 0 1\n", "1 1 0 1 0\n", "1 1 0 1 1\n", "1 1 1 0 0\n", "1 1 1 0 1\n", "1 1 1 1 0\n", "1 2 0 0 0\n", "