{ "cells": [ { "cell_type": "markdown", "id": "f80edf30", "metadata": {}, "source": [ "# Computing Cox rings of linear quotients" ] }, { "cell_type": "markdown", "id": "b91cbe57", "metadata": {}, "source": [ "Author: [Johannes Schmitt](https://joschmitt.eu)\n", "\n", "output updated to v1.0 by Michael Joswig (original code runs without modification)" ] }, { "cell_type": "markdown", "id": "d4712231", "metadata": {}, "source": [ "## A (little) bit of theory" ] }, { "cell_type": "markdown", "id": "ac2678e9", "metadata": {}, "source": [ "Let $V$ be a finite dimensional vector space over $\\mathbb C$ and let $G\\leq \\operatorname{GL}(V)$ be a finite group.\n", "For simplicity, we assume that $G$ does not contain any reflections, that is, matrices with fixed space of codimension 1.\n", "\n", "The *linear quotient* $V/G$ is the orbit space of the action of $G$ on $V$: the group $G$ acts on $V$ by multiplying a vector by a matrix and we let the orbits of this action be the elements of $V/G$.\n", "More formally, $V/G$ is the spectrum of the *invariant ring* $\\mathbb C[V]^G$.\n", "In particular, $V/G$ is an affine variety by a theorem of Hilbert and Noether [Ben93, Theorem 1.3.1].\n", "\n", "The *Cox ring* $\\mathcal R(V/G)$ of this variety is a finitely generated $\\mathbb C$-algebra one can attach to $V/G$. The precise definition of this ring is quite technical and we do not repeat it here, but only refer to [ADHL15, Section 1.4].\n", "However, one can think of the Cox ring as an \"upgraded\" version of the coordinate ring of $V/G$.\n", "In particular, the ring $\\mathcal R(V/G)$ is graded by the divisor class group $\\operatorname{Cl}(V/G)$ and the graded component of the trivial class is exactly the coordinate ring.\n", "\n", "The group $\\operatorname{Cl}(V/G)$ is isomorphic to the *group of linear characters* $\\operatorname{Hom}(G, \\mathbb C^\\times)$ [Ben93, Theorem 3.9.2].\n", "To compute the ring $\\mathcal R(V/G)$, we use a theorem by Arzhantsev and Gaifullin [AG10, Theorem 3.1], which says that $\\mathcal R(V/G)$ is graded isomorphic to $\\mathbb C[V]^{[G,G]}$.\n", "In this notebook, we now describe and compute this ring step by step." ] }, { "cell_type": "markdown", "id": "05293dfc", "metadata": {}, "source": [ "## Set-up" ] }, { "cell_type": "code", "execution_count": 1, "id": "7222dce9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " ___ ____ ____ _ ____\n", " / _ \\ / ___| / ___| / \\ | _ \\ | Combining ANTIC, GAP, Polymake, Singular\n", "| | | |\\___ \\| | / _ \\ | |_) | | Type \"?Oscar\" for more information\n", "| |_| | ___) | |___ / ___ \\| _ < | Manual: https://docs.oscar-system.org\n", " \\___/ |____/ \\____/_/ \\_\\_| \\_\\ | Version 1.0.0\n" ] } ], "source": [ "using Oscar" ] }, { "cell_type": "markdown", "id": "995fe203", "metadata": {}, "source": [ "In this notebook, we work with the symmetric group on three letters as our working example.\n", "This means we have $G = S_3$ throughout.\n", "\n", "In theory, we always work over the field of complex numbers $\\mathbb C$.\n", "However, computations in this field are imprecise and we therefore have to work over a finite extension of $\\mathbb Q$ for algorithmic applications.\n", "By a theorem of Brauer, a cyclotomic extension of order $e$ suffices, where $e$ is the exponent of the group.\n", "For the group $S_3$, we have $e = 6$, so we now construct this field:" ] }, { "cell_type": "code", "execution_count": 2, "id": "80c722fc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(Cyclotomic field of order 6, a)" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "K, a = cyclotomic_field(6, \"a\")" ] }, { "cell_type": "markdown", "id": "c66edc5c", "metadata": {}, "source": [ "There are many natural ways to let $S_3$ act on a vector space.\n", "To make things interesting, we consider an action by so-called symplectic reflections on a vector space of dimension 4 (what this means in detail is not important for now).\n", "We hence enter the group as a subgroup of $\\operatorname{GL}_4(K)$, so as a matrix group generated by $4\\times 4$ matrices." ] }, { "cell_type": "code", "execution_count": 3, "id": "1bb832cd", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Matrix group of degree 4\n", " over cyclotomic field of order 6" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "S3 = matrix_group(matrix(K, 4, 4, [ a^2 0 0 0;\n", " 0 a^-2 0 0;\n", " 0 0 a^-2 0;\n", " 0 0 0 a^2 ]),\n", " matrix(K, 4, 4, [ 0 1 0 0;\n", " 1 0 0 0;\n", " 0 0 0 1;\n", " 0 0 1 0 ]))" ] }, { "cell_type": "markdown", "id": "ef866497", "metadata": {}, "source": [ "## The derived subgroup" ] }, { "cell_type": "markdown", "id": "e3d2f001", "metadata": {}, "source": [ "In the theorem of Arzhantsev and Gaifullin, the group $H := [S_3, S_3]$ shows up.\n", "This is the *derived subgroup* (or *commutator subgroup*) of $S_3$, which is the subgroup generated by all elements of the form $ghg^{-1}h^{-1}$ with $g, h\\in S_3$.\n", "We can compute $H$ easily in OSCAR.\n", "As the information of an abstract group is not meaningful, this also returns the embedding $H\\to S_3$, to give this group structure." ] }, { "cell_type": "code", "execution_count": 4, "id": "699fffd0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(Matrix group of degree 4 over K, Hom: H -> S3)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "H, HtoS3 = derived_subgroup(S3)" ] }, { "cell_type": "markdown", "id": "41386901", "metadata": {}, "source": [ "To fill this group with a bit more life, we can ask OSCAR to describe it." ] }, { "cell_type": "code", "execution_count": 5, "id": "b8e522c0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\"C3\"" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "describe(H)" ] }, { "cell_type": "markdown", "id": "99bd7e87", "metadata": {}, "source": [ "We see that $H$ is a cyclic group of order 3." ] }, { "cell_type": "markdown", "id": "231c8fb8", "metadata": {}, "source": [ "## The invariant ring" ] }, { "cell_type": "markdown", "id": "23e744b7", "metadata": {}, "source": [ "We now want to compute the ring $\\mathbb C[V]^H$ from above.\n", "This is the *invariant ring* of the action of $H$ on the polynomial ring $\\mathbb C[V]$.\n", "Let us look at this in some more detail:\n", "The group $H$ is a subgroup of $\\operatorname{GL}_4(\\mathbb C)$, so it acts on the vector space $V := \\mathbb C^4$ by multiplying a vector by a matrix.\n", "We can see the polynomial ring $R := \\mathbb C[V]$ as the symmetric algebra $\\operatorname{Sym}(V^\\ast)$ on the dual space $V^\\ast$.\n", "If you prefer a more geometric point of you, you can see $R$ as the ring of functions on the affine space $V$.\n", "In more down-to-earth terms, $R$ is just the multivariate polynomial ring $\\mathbb C[x_1,\\dots, x_4]$.\n", "\n", "We can now linearly extend the action of $H$ on $V$ to an action on $R$ by saying that for $f\\in R$ and $g\\in H$, the polynomial $f.g$ should be given by the function that fulfils $$(f.g)(v) := f(v.g)$$ for all $v\\in V$.\n", "The invariant ring $R^H$ is then the set of all polynomials that are invariant under this action.\n", "One directly convinces oneself that $R^H$ is indeed a subring of $R$.\n", "By the already mentioned theorem of Hilbert and Noether, the ring $R^H$ is a finitely generated $\\mathbb C$-algebra." ] }, { "cell_type": "markdown", "id": "58463478", "metadata": {}, "source": [ "We want to compute a presentation of this algebra in OSCAR as an affine algebra, that is, as a quotient of a polynomial ring modulo an ideal of relations $$A := \\mathbb C[y_1,\\dots, y_k]/I.$$\n", "For this, we first need to set up $R^H$ as an object in OSCAR.\n", "This does not do any actual computations, but only initializes a \"container\".\n", "Of course, for computational purposes, we still work over the smaller field $K$." ] }, { "cell_type": "code", "execution_count": 6, "id": "f39110b3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Invariant ring\n", " of matrix group of degree 4 over K" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "RH = invariant_ring(H)" ] }, { "cell_type": "markdown", "id": "eb9c2f8a", "metadata": {}, "source": [ "Now we compute the presentation of $R^H$ as a $\\mathbb C$-algebra.\n", "Again, only this object would not be meaningful. We further require a morphism of rings $A \\to R$ that is isomorphic onto $R^H$." ] }, { "cell_type": "code", "execution_count": 7, "id": "e49a46b6", "metadata": {}, "outputs": [], "source": [ "A, AtoR = affine_algebra(RH);" ] }, { "cell_type": "markdown", "id": "d75f32b2", "metadata": {}, "source": [ "We see that $R^H$ is generated by the following elements." ] }, { "cell_type": "code", "execution_count": 8, "id": "05d9497e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "12-element Vector{MPolyDecRingElem{AbsSimpleNumFieldElem, AbstractAlgebra.Generic.MPoly{AbsSimpleNumFieldElem}}}:\n", " x[3]*x[4]\n", " x[2]*x[4]\n", " x[1]*x[3]\n", " x[1]*x[2]\n", " x[4]^3\n", " x[1]*x[4]^2\n", " x[1]^2*x[4]\n", " x[3]^3\n", " x[2]*x[3]^2\n", " x[2]^2*x[3]\n", " x[2]^3\n", " x[1]^3" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "map(AtoR, gens(A))" ] }, { "cell_type": "markdown", "id": "c66c796e", "metadata": {}, "source": [ "These polynomials fulfil the following relations." ] }, { "cell_type": "code", "execution_count": 9, "id": "9f7f094b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Ideal generated by\n", " -y9*y11 + y10^2\n", " -y8*y11 + y9*y10\n", " -y3*y11 + y4*y10\n", " -y1*y11 + y2*y10\n", " -y8*y10 + y9^2\n", " -y3*y10 + y4*y9\n", " -y1*y10 + y2*y9\n", " -y3*y9 + y4*y8\n", " -y1*y9 + y2*y8\n", " -y6*y12 + y7^2\n", " -y5*y12 + y6*y7\n", " -y2*y12 + y4*y7\n", " -y1*y12 + y3*y7\n", " -y5*y7 + y6^2\n", " -y2*y7 + y4*y6\n", " -y1*y7 + y3*y6\n", " -y2*y6 + y4*y5\n", " -y1*y6 + y3*y5\n", " -y1*y4 + y2*y3\n", " y4^3 - y11*y12\n", " y3*y4^2 - y10*y12\n", " y2*y4^2 - y7*y11\n", " y1*y4^2 - y7*y10\n", " y3^2*y4 - y9*y12\n", " y1*y3*y4 - y7*y9\n", " y2^2*y4 - y6*y11\n", " y1*y2*y4 - y6*y10\n", " y1^2*y4 - y6*y9\n", " y3^3 - y8*y12\n", " y1*y3^2 - y7*y8\n", " y1^2*y3 - y6*y8\n", " y2^3 - y5*y11\n", " y1*y2^2 - y5*y10\n", " y1^2*y2 - y5*y9\n", " y1^3 - y5*y8" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "modulus(A)" ] }, { "cell_type": "markdown", "id": "d92cb904", "metadata": {}, "source": [ "## The abelianization" ] }, { "cell_type": "markdown", "id": "70d0ae90", "metadata": {}, "source": [ "The ring $R^H$ is already isomorphic to the Cox ring $\\mathcal R(\\mathbb C^4/S_3)$, but we still have to endow $R^H$ with the correct grading.\n", "Recall that $\\mathcal R(\\mathbb C^4/S_3)$ is graded by the group $\\operatorname{Cl}(\\mathbb C^4/S_3)$, which is isomorphic to $\\operatorname{Hom}(S_3, \\mathbb C^\\times)$.\n", "For this, we have $$\\operatorname{Hom}(S_3, \\mathbb C^\\times) \\cong \\operatorname{Hom}(\\operatorname{Ab}(S_3), \\mathbb C^\\times) \\cong \\operatorname{Ab}(S_3)$$ by elementary character theory.\n", "Here, $\\operatorname{Ab}(S_3)$ is the *abelianization* of $S_3$.\n", "This is the maximal abelian quotient group of $S_3$ and coincides with the quotient of $S_3$ by the commutator subgroup $H$.\n", "\n", "Before we discuss how we can endow $R^H$ with a grading by $\\operatorname{Hom}(\\operatorname{Ab}(S_3), \\mathbb C^\\times)$, let us compute $\\operatorname{Ab}(S_3)$ and the natural projection $S_3 \\to \\operatorname{Ab}(S_3)$." ] }, { "cell_type": "code", "execution_count": 10, "id": "af199a3d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(Pc group of order 2, Hom: S3 -> AbS3)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "AbS3, S3toAbS3 = maximal_abelian_quotient(S3)" ] }, { "cell_type": "markdown", "id": "b62e58ab", "metadata": {}, "source": [ "We ask OSCAR to describe this group." ] }, { "cell_type": "code", "execution_count": 11, "id": "abfd0059", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\"C2\"" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "describe(AbS3)" ] }, { "cell_type": "markdown", "id": "15775191", "metadata": {}, "source": [ "This tells us that $\\operatorname{Ab}(S_3)$ is a cyclic group of order 2." ] }, { "cell_type": "markdown", "id": "aae51719", "metadata": {}, "source": [ "## The grading by the characters of $\\operatorname{Ab}(S_3)$" ] }, { "cell_type": "markdown", "id": "2867900e", "metadata": {}, "source": [ "We now describe how we can endow $R^H$ with a grading by the characters of $\\operatorname{Ab}(S_3)$.\n", "Just as there is an action of $H$ on $R$, there is also an action of $S_3$ on $R$ and an easy calculation shows that $R^H$ is closed under this action.\n", "This induces an action by $\\operatorname{Ab}(S_3) = S_3/H$ on $R^H$ as the polynomials in $R^H$ are by definition $H$-invariant.\n", "\n", "Since $\\operatorname{Ab}(S_3)$ is abelian, this endows $R^H$ with a grading by the characters of $\\operatorname{Ab}(S_3)$:\n", "for a linear character $\\chi: \\operatorname{Ab}(S_3) \\to \\mathbb C^\\times$ and a polynomial $f\\in R^H$, we say that $f$ is homogeneous of degree $\\chi$ if $$f.\\gamma = \\chi(\\gamma)f$$ for all $\\gamma\\in\\operatorname{Ab}(S_3)$." ] }, { "cell_type": "markdown", "id": "b1735aae", "metadata": {}, "source": [ "Let us fill this with some life. The group $\\operatorname{Ab}(S_3)$ is generated by the residue class of the matrix $$s := \\begin{pmatrix} & 1 & & \\\\ 1 & & & \\\\ & & & 1 \\\\ & & 1 & \\end{pmatrix}.$$\n", "This is in fact the only non-trivial element of $\\operatorname{Ab}(S_3)$. The matrix acts on $R$ by swapping the variables $x_1$ and $x_2$ as well as $x_3$ and $x_4$.\n", "The irreducible characters of $\\operatorname{Ab}(S_3)$ are now given by the trivial map $$\\chi_0: \\operatorname{Ab}(S_3)\\to \\mathbb C^\\times, s \\mapsto 1$$ and the map $$\\chi_1: \\operatorname{Ab}(S_3)\\to \\mathbb C^\\times, s\\mapsto -1.$$\n", "In other words, polynomials which are symmetric in the variables $x_1,x_2$ and $x_3,x_4$ are homogeneous of degree $\\chi_0$ and those where the action of $s$ introduces a minus sign are homogeneous of degree $\\chi_1$. We consider an example." ] }, { "cell_type": "code", "execution_count": 12, "id": "60a1dfd6", "metadata": {}, "outputs": [], "source": [ "s = matrix(K, 4, 4, [ 0 1 0 0 ; 1 0 0 0 ; 0 0 0 1 ; 0 0 1 0 ]);\n", "R = polynomial_ring(RH);\n", "x = gens(R);" ] }, { "cell_type": "markdown", "id": "0b14453c", "metadata": {}, "source": [ "The following polynomial is invariant under $s$, so homogeneous of degree $\\chi_0$." ] }, { "cell_type": "code", "execution_count": 13, "id": "c49faa3d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "true" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f = x[1]*x[3] + x[2]*x[4]\n", "f^S3(s) == f" ] }, { "cell_type": "markdown", "id": "296936ca", "metadata": {}, "source": [ "The next polynomial is invariant up to sign, so it is homogeneous of degree $\\chi_1$." ] }, { "cell_type": "code", "execution_count": 14, "id": "5f3a5263", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "true" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g = x[1]*x[3] - x[2]*x[4]\n", "g^S3(s) == -g" ] }, { "cell_type": "markdown", "id": "54b34345", "metadata": {}, "source": [ "The last polynomial is neither, so it is inhomogeneous. But we can of course decompose it into homogeneous components." ] }, { "cell_type": "code", "execution_count": 15, "id": "107f999f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "x[2]*x[4]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h = x[1]*x[3]\n", "h^S3(s)" ] }, { "cell_type": "code", "execution_count": 16, "id": "be59138c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "true" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h == 1//2*(f + g)" ] }, { "cell_type": "markdown", "id": "552a2c86", "metadata": {}, "source": [ "## The Cox ring" ] }, { "cell_type": "markdown", "id": "3cd672a5", "metadata": {}, "source": [ "Our last (computational) challenge is now to compute generators of $R^H$ which are homogeneous with respect to the grading by $\\operatorname{Hom}(\\operatorname{Ab}(S_3), \\mathbb C^\\times)$.\n", "As one can already guess from the small example above, this means that we have to take suitable linear combinations of the generators we computed.\n", "For this, we use an algorithm by Donten-Bury and Keicher [DK17, Construction 2.4] which comes down to computing eigenspaces of the linear action of $\\operatorname{Ab}(S_3)$ on the vector space of polynomials of a fixed degree.\n", "This algorithm is implemented with the function `cox_ring` in OSCAR." ] }, { "cell_type": "markdown", "id": "0967bdbc", "metadata": {}, "source": [ "We can wrap up the described computations in a single function call:" ] }, { "cell_type": "code", "execution_count": 17, "id": "452eba00", "metadata": {}, "outputs": [], "source": [ "B, BtoR = cox_ring(linear_quotient(S3));" ] }, { "cell_type": "markdown", "id": "c1c7fea2", "metadata": {}, "source": [ "This computes the Cox ring of $\\mathbb C^4/S_3$ as a graded affine algebra and the structure morphism to $R = \\mathbb C[x_1,\\dots, x_4]$.\n", "We examine the generators of this ring:" ] }, { "cell_type": "code", "execution_count": 18, "id": "da35e60a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "12-element Vector{MPolyDecRingElem{AbsSimpleNumFieldElem, AbstractAlgebra.Generic.MPoly{AbsSimpleNumFieldElem}}}:\n", " x[3]*x[4]\n", " x[1]*x[3] + x[2]*x[4]\n", " x[1]*x[2]\n", " x[1]*x[3] - x[2]*x[4]\n", " x[3]^3 + x[4]^3\n", " x[2]*x[3]^2 + x[1]*x[4]^2\n", " x[2]^2*x[3] + x[1]^2*x[4]\n", " x[1]^3 + x[2]^3\n", " x[3]^3 - x[4]^3\n", " x[2]*x[3]^2 - x[1]*x[4]^2\n", " x[2]^2*x[3] - x[1]^2*x[4]\n", " x[1]^3 - x[2]^3" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "map(BtoR, gens(B))" ] }, { "cell_type": "markdown", "id": "6692a2e2", "metadata": {}, "source": [ "We see that these are indeed linear combinations of the generators of $R^H$ we computed above.\n", "Further, `B` is graded by $\\operatorname{Hom}(\\operatorname{Ab}(S_3), \\mathbb C^\\times)$:" ] }, { "cell_type": "code", "execution_count": 19, "id": "9a6305ae", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Z/2" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "grading_group(B)" ] }, { "cell_type": "markdown", "id": "e3e6cba7", "metadata": {}, "source": [ "In this example, we can still read off the degrees from the generators \"by hand\". But we can also ask OSCAR for it:" ] }, { "cell_type": "code", "execution_count": 20, "id": "c5350e24", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "FinGenAbGroupElem[[0], [0], [0], [1], [0], [0], [0], [0], [1], [1], [1], [1]]" ] } ], "source": [ "show(map(degree, gens(B)))" ] }, { "cell_type": "markdown", "id": "b88c91c9", "metadata": {}, "source": [ "Finally, the generators of `B` fulfil certain relations." ] }, { "cell_type": "code", "execution_count": 21, "id": "6f51d630", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Ideal generated by\n", " -1//4*t[6]*t[8] + 1//4*t[7]^2 + 1//4*t[10]*t[12] + 1//4*t[11]^2\n", " 1//4*t[6]*t[12] + 1//2*t[7]*t[11] - 1//4*t[8]*t[10]\n", " -1//4*t[5]*t[8] + 1//4*t[6]*t[7] + 1//4*t[9]*t[12] + 1//4*t[10]*t[11]\n", " 1//4*t[5]*t[12] + 1//4*t[6]*t[11] + 1//4*t[7]*t[10] - 1//4*t[8]*t[9]\n", " -1//4*t[2]*t[8] + 1//2*t[3]*t[7] + 1//4*t[4]*t[12]\n", " 1//4*t[2]*t[12] + 1//2*t[3]*t[11] - 1//4*t[4]*t[8]\n", " -1//2*t[1]*t[8] + 1//4*t[2]*t[7] - 1//4*t[4]*t[11]\n", " 1//2*t[1]*t[12] + 1//4*t[2]*t[11] - 1//4*t[4]*t[7]\n", " -1//4*t[5]*t[7] + 1//4*t[6]^2 - 1//4*t[9]*t[11] + 1//4*t[10]^2\n", " -1//4*t[5]*t[11] + 1//2*t[6]*t[10] - 1//4*t[7]*t[9]\n", " -1//4*t[2]*t[7] + 1//2*t[3]*t[6] - 1//4*t[4]*t[11]\n", " -1//4*t[2]*t[11] + 1//2*t[3]*t[10] - 1//4*t[4]*t[7]\n", " -1//2*t[1]*t[7] + 1//4*t[2]*t[6] - 1//4*t[4]*t[10]\n", " -1//2*t[1]*t[11] + 1//4*t[2]*t[10] - 1//4*t[4]*t[6]\n", " -1//4*t[2]*t[6] + 1//2*t[3]*t[5] - 1//4*t[4]*t[10]\n", " -1//4*t[2]*t[10] + 1//2*t[3]*t[9] - 1//4*t[4]*t[6]\n", " -1//2*t[1]*t[6] + 1//4*t[2]*t[5] - 1//4*t[4]*t[9]\n", " -1//2*t[1]*t[10] + 1//4*t[2]*t[9] - 1//4*t[4]*t[5]\n", " -1//4*t[6]*t[8] + 1//4*t[7]^2 + 1//4*t[10]*t[12] + 1//4*t[11]^2\n", " -1//4*t[6]*t[12] - 1//2*t[7]*t[11] + 1//4*t[8]*t[10]\n", " -1//4*t[5]*t[8] + 1//4*t[6]*t[7] + 1//4*t[9]*t[12] + 1//4*t[10]*t[11]\n", " -1//4*t[5]*t[12] - 1//4*t[6]*t[11] - 1//4*t[7]*t[10] + 1//4*t[8]*t[9]\n", " -1//4*t[2]*t[8] + 1//2*t[3]*t[7] + 1//4*t[4]*t[12]\n", " -1//4*t[2]*t[12] - 1//2*t[3]*t[11] + 1//4*t[4]*t[8]\n", " -1//2*t[1]*t[8] + 1//4*t[2]*t[7] - 1//4*t[4]*t[11]\n", " -1//2*t[1]*t[12] - 1//4*t[2]*t[11] + 1//4*t[4]*t[7]\n", " -1//4*t[5]*t[7] + 1//4*t[6]^2 - 1//4*t[9]*t[11] + 1//4*t[10]^2\n", " 1//4*t[5]*t[11] - 1//2*t[6]*t[10] + 1//4*t[7]*t[9]\n", " -1//4*t[2]*t[7] + 1//2*t[3]*t[6] - 1//4*t[4]*t[11]\n", " 1//4*t[2]*t[11] - 1//2*t[3]*t[10] + 1//4*t[4]*t[7]\n", " -1//2*t[1]*t[7] + 1//4*t[2]*t[6] - 1//4*t[4]*t[10]\n", " 1//2*t[1]*t[11] - 1//4*t[2]*t[10] + 1//4*t[4]*t[6]\n", " -1//4*t[2]*t[6] + 1//2*t[3]*t[5] - 1//4*t[4]*t[10]\n", " 1//4*t[2]*t[10] - 1//2*t[3]*t[9] + 1//4*t[4]*t[6]\n", " -1//2*t[1]*t[6] + 1//4*t[2]*t[5] - 1//4*t[4]*t[9]\n", " 1//2*t[1]*t[10] - 1//4*t[2]*t[9] + 1//4*t[4]*t[5]\n", " -t[1]*t[3] + 1//4*t[2]^2 - 1//4*t[4]^2\n", " t[3]^3 - 1//4*t[8]^2 + 1//4*t[12]^2\n", " 1//2*t[2]*t[3]^2 - 1//4*t[7]*t[8] - 1//4*t[11]*t[12]\n", " 1//2*t[3]^2*t[4] - 1//4*t[7]*t[12] - 1//4*t[8]*t[11]\n", " 1//2*t[2]*t[3]^2 - 1//4*t[7]*t[8] - 1//4*t[11]*t[12]\n", " -1//2*t[3]^2*t[4] + 1//4*t[7]*t[12] + 1//4*t[8]*t[11]\n", " t[1]*t[3]^2 - 1//4*t[7]^2 + 1//4*t[11]^2\n", " 1//4*t[2]^2*t[3] + 1//4*t[3]*t[4]^2 - 1//4*t[6]*t[8] - 1//4*t[10]*t[12]\n", " 1//2*t[2]*t[3]*t[4] - 1//4*t[6]*t[12] - 1//4*t[8]*t[10]\n", " 1//2*t[1]*t[2]*t[3] - 1//4*t[6]*t[7] + 1//4*t[10]*t[11]\n", " 1//2*t[1]*t[3]*t[4] + 1//4*t[6]*t[11] - 1//4*t[7]*t[10]\n", " 1//4*t[2]^2*t[3] + 1//4*t[3]*t[4]^2 - 1//4*t[6]*t[8] - 1//4*t[10]*t[12]\n", " -1//2*t[2]*t[3]*t[4] + 1//4*t[6]*t[12] + 1//4*t[8]*t[10]\n", " 1//2*t[1]*t[2]*t[3] - 1//4*t[6]*t[7] + 1//4*t[10]*t[11]\n", " -1//2*t[1]*t[3]*t[4] - 1//4*t[6]*t[11] + 1//4*t[7]*t[10]\n", " t[1]^2*t[3] - 1//4*t[6]^2 + 1//4*t[10]^2\n", " 1//8*t[2]^3 + 3//8*t[2]*t[4]^2 - 1//4*t[5]*t[8] - 1//4*t[9]*t[12]\n", " 3//8*t[2]^2*t[4] + 1//8*t[4]^3 - 1//4*t[5]*t[12] - 1//4*t[8]*t[9]\n", " 1//4*t[1]*t[2]^2 + 1//4*t[1]*t[4]^2 - 1//4*t[5]*t[7] + 1//4*t[9]*t[11]\n", " 1//2*t[1]*t[2]*t[4] + 1//4*t[5]*t[11] - 1//4*t[7]*t[9]\n", " 1//2*t[1]^2*t[2] - 1//4*t[5]*t[6] + 1//4*t[9]*t[10]\n", " 1//2*t[1]^2*t[4] + 1//4*t[5]*t[10] - 1//4*t[6]*t[9]\n", " 1//8*t[2]^3 + 3//8*t[2]*t[4]^2 - 1//4*t[5]*t[8] - 1//4*t[9]*t[12]\n", " -3//8*t[2]^2*t[4] - 1//8*t[4]^3 + 1//4*t[5]*t[12] + 1//4*t[8]*t[9]\n", " 1//4*t[1]*t[2]^2 + 1//4*t[1]*t[4]^2 - 1//4*t[5]*t[7] + 1//4*t[9]*t[11]\n", " -1//2*t[1]*t[2]*t[4] - 1//4*t[5]*t[11] + 1//4*t[7]*t[9]\n", " 1//2*t[1]^2*t[2] - 1//4*t[5]*t[6] + 1//4*t[9]*t[10]\n", " -1//2*t[1]^2*t[4] - 1//4*t[5]*t[10] + 1//4*t[6]*t[9]\n", " t[1]^3 - 1//4*t[5]^2 + 1//4*t[9]^2" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "modulus(B)" ] }, { "cell_type": "markdown", "id": "3c8120aa", "metadata": {}, "source": [ "## References" ] }, { "cell_type": "markdown", "id": "16e789c1", "metadata": {}, "source": [ "[ADHL15] Ivan Arzhantsev, Ulrich Derenthal, Jürgen Hausen and Antonio Laface, *Cox rings*, Cambridge Studies in Advanced Mathematics, vol. 144, Cambridge University Press, Cambridge, 2015.\n", "\n", "[AG10] Ivan V. Arzhantsev and Sergei A. Gaifullin, *Cox rings, semigroups and automorphisms of affine varieties*, Mat. Sb. **201** (2010), no. 1, 3–24.\n", "\n", "[Ben93] David J. Benson, *Polynomial invariants of finite groups*, London Mathematical Society Lecture Note Series, vol. 190, Cambridge University Press, Cambridge, 1993.\n", "\n", "[DK17] Maria Donten-Bury and Simon Keicher, *Computing resolutions of quotient singularities*, J. Algebra **472** (2017), 546–572." ] } ], "metadata": { "@webio": { "lastCommId": null, "lastKernelId": null }, "kernelspec": { "display_name": "Julia 1.10.1", "language": "julia", "name": "julia-1.10" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.10.1" } }, "nbformat": 4, "nbformat_minor": 5 }