Invariants of Linearly Reductive Groups
In this section, with notation as in the introduction to this chapter, $G$ will be a linear algebraic group over an algebraically closed field $K$, $\rho: G \to \text{GL}(V)\cong \text{GL}_n(K)$ will be a rational representation of $G$, and $G$ will act on $K[V]\cong K[x_1, \dots, x_n]$ by linear substitution: If $\rho(\pi) = (a_{i, j})$, then
\[(f \;\! . \;\! \pi) (x_1, \dots, x_n) = f\bigl(\sum_j a_{1, j}x_j, \dots, \sum_j a_{n, j}x_j\bigr).\]
- The definition of linear reductivity guarantees the existence of a Reynolds operator $\mathcal R: K[V] \to K[V]$.
- By Hilbert's celebrated finiteness theorem, $K[V]^G$ is finitely generated as a $K$-algebra.
- By a result of Hochster and Roberts, $K[V]^G$ is Cohen-Macaulay.
In cases where the Reynolds operator is explicitly known, generators of invariant rings of linearly reductive groups can be found in two steps using Derksen's algorithm, see [Der99] :
- First, compute generators of Hilbert's null-cone ideal.
- Then, apply the Reynolds operator to these generators.
Creating Invariant Rings
How Linearly Reductive Groups and Their Representations are Given
For the computation of invariant rings in the above setting, there is no need to deal with explicit elements of $G$ or with its group structure. The implementation of Derksen's algorithm in OSCAR can handle situations where both $G$ and the representation $\rho$ are defined over an exact subfield $k$ of $K$ which is supported by OSCAR:
- $G$ is specified as an affine algebraic variety by polynomials with coefficients in $k$;
- $\rho: G \to \text{GL}(V) \cong \text{GL}_n(K)$ is specified by an $n\times n$ matrix whose entries are polynomials in the same variables as those specifying $G$, with coefficients in $k$.
Proceeding as above is not a problem: Derksen's algorithm relies on Gröbner bases techniques and means to compute Reynolds operators. It does, thus, not change the initial ground field $k$. That is, all computations are performed over $k$ and computations over any extension field of $k$ would lead to the same results.
In OSCAR, the basic set-up for a linearly reductive group in the context of Derksen's algorithm is provided by the function linearly_reductive_group. At current state, this only supports rational actions of the special linear group $\text{SL}_m$ in characteristic zero (for $m \geq 2$, $\text{SL}_m$ is not linearly reductive in positive characteristic). For the action of this group by linear substitution on $m$-ary forms of degree $d$, an explicit Reynolds operator is given by Cayley's Omega-process. We show this at work later in this section.
linearly_reductive_group — Method
linearly_reductive_group(sym::Symbol, m::Int, k::Field)Return the linearly reductive group indicated by sym, defined over the field k.
Currently, the supported options for sym are:
:SL, corresponding to the special linear group $\text{SL}_m$.
For $m \geq 2$, $\text{SL}_m$ is not linearly reductive in positive characteristic, so k must have characteristic 0.
Examples
julia> G = linearly_reductive_group(:SL, 2, QQ)
Linearly reductive group SL2
defined over QQ
julia> defining_ideal(G)
Ideal generated by
z[1, 1]*z[2, 2] - z[2, 1]*z[1, 2] - 1This function is part of the experimental code in Oscar. Please read here for more details.
linearly_reductive_group — Method
linearly_reductive_group(sym::Symbol, m::Int, R::MPolyRing)Return the linearly reductive group indicated by sym, with its defining ideal in R. The group is defined over the coefficient field $k$ of R.
Currently, the supported options for sym are:
:SL, corresponding to the special linear group $\text{SL}_m$. Its defining ideal is generated by $\det(Z) - 1$, whereRhas $m^2$ variables and $Z$ is the $m \times m$ matrix filled with them column by column.
For $m \geq 2$, $\text{SL}_m$ is not linearly reductive in positive characteristic, so $k$ must have characteristic 0.
Examples
julia> S, c = polynomial_ring(QQ, :c => (1:2, 1:2));
julia> G = linearly_reductive_group(:SL, 2, S)
Linearly reductive group SL2
defined over QQ
julia> defining_ideal(G)
Ideal generated by
c[1, 1]*c[2, 2] - c[2, 1]*c[1, 2] - 1This function is part of the experimental code in Oscar. Please read here for more details.
linearly_reductive_group — Method
linearly_reductive_group(I::MPolyIdeal)Return the linearly reductive group $G$ whose points are the zeros of I. The group is defined over the coefficient field $k$ of base_ring(I).
It is not checked that I defines a linearly reductive group. No Reynolds operator is known for $G$, so fundamental_invariants(RG::RedGroupInvarRing, algorithm::Symbol = :default) uses linear algebra instead.
Examples
The torus $K^{\ast}$, as the hyperbola $z_1 z_2 = 1$:
julia> S, z = polynomial_ring(QQ, :z => 1:2);
julia> G = linearly_reductive_group(ideal(S, [z[1]*z[2] - 1]))
Linearly reductive group defined by
ideal (z[1]*z[2] - 1)This function is part of the experimental code in Oscar. Please read here for more details.
representation_reductive_group — Method
representation_reductive_group(G::LinearlyReductiveGroup, M::MatElem)
representation_reductive_group(G::LinearlyReductiveGroup)Return the representation $\rho$ of G given by the square matrix M, whose entries are polynomials in base_ring(defining_ideal(G)).
It is not checked that M defines a representation of G.
If G is $\text{SL}_m$, then M may be omitted, and the natural representation of G is returned.
Examples
The torus $K^{\ast}$ acting with weights $1$ and $-1$:
julia> S, z = polynomial_ring(QQ, :z => 1:2);
julia> G = linearly_reductive_group(ideal(S, [z[1]*z[2] - 1]));
julia> r = representation_reductive_group(G, diagonal_matrix(S, [z[1], z[2]]))
Representation
of linearly reductive group
with representation matrix
[z[1] 0; 0 z[2]]
julia> fundamental_invariants(invariant_ring(r))
1-element Vector{MPolyDecRingElem{QQFieldElem, QQMPolyRingElem}}:
X[1]*X[2]This function is part of the experimental code in Oscar. Please read here for more details.
representation_on_forms — Method
representation_on_forms(G::LinearlyReductiveGroup, d::Int)This is currently only implemented for special linear groups.
If $G$ is $\text{SL}_m$, return the representation obtained by letting $G$ act by linear substitution on $m$-ary forms of degree $d$.
In accordance with classical papers, an $m$-ary form of degree $d$ is written as a linear combination of the basis with elements $\binom{d}{I}x^I$. Here, $I = (i_1, \dots, i_m)\in\mathbb Z_{\geq 0}^m$ with $i_1+\dots +i_m =d$. If $Z \in \text{SL}_m$, then the representation matrix, evaluated at $Z$, maps the coefficient vector of a form $f$ with respect to this basis to that of $f(Zx)$.
Examples
julia> G = linearly_reductive_group(:SL, 2, QQ);
julia> r = representation_on_forms(G, 2)
Representation
of linearly reductive group SL(2,QQ)
on symmetric forms of degree 2
julia> representation_matrix(r)
[ z[1, 1]^2 2*z[1, 1]*z[2, 1] z[2, 1]^2]
[z[1, 1]*z[1, 2] z[1, 1]*z[2, 2] + z[2, 1]*z[1, 2] z[2, 1]*z[2, 2]]
[ z[1, 2]^2 2*z[1, 2]*z[2, 2] z[2, 2]^2]This function is part of the experimental code in Oscar. Please read here for more details.
If G is a group returned by linearly_reductive_group, then
base_ring(G)refers to $k$, anddefining_ideal(G)to the ideal of the polynomials specifying $G$.
If r is a representation of G, then
group(r)refers to $G$,representation_matrix(r)to the matrix specifying $\rho$, anddegree(r)andvector_space_dim(r)to the dimension $n$ of $V$.
Constructors for Invariant Rings
invariant_ring — Method
invariant_ring(r::RepresentationLinearlyReductiveGroup)
invariant_ring(R::MPolyDecRing, r::RepresentationLinearlyReductiveGroup)Return the invariant ring of the linearly reductive group represented by r.
The polynomial ring R on which the group acts can be supplied as a first argument, in case an existing ring should be used.
The creation of invariant rings is lazy in the sense that no explicit computations are done until specifically invoked (for example, by the fundamental_invariants function).
Examples
julia> G = linearly_reductive_group(:SL, 3, QQ);
julia> r = representation_on_forms(G, 3);
julia> RG = invariant_ring(r)
Invariant ring
of graded multivariate polynomial ring in 10 variables over QQ
under group action of linearly reductive group SL(3,QQ)
julia> S, x = graded_polynomial_ring(QQ, :x => 1:10);
julia> RG = invariant_ring(S, r)
Invariant ring
of graded multivariate polynomial ring in 10 variables over QQ
under group action of linearly reductive group SL(3,QQ)This function is part of the experimental code in Oscar. Please read here for more details.
Basic Data Associated to Invariant Rings
If RG is the invariant ring $k[x_1, \dots, x_n]^G$ of a linearly reductive group $G$, then
group(RG)refers to $G$,coefficient_ring(RG)to $k$, andpolynomial_ring(RG)to $k[x_1, \dots, x_n]$.
The Reynolds Operator
reynolds_operator — Method
reynolds_operator(RG::RedGroupInvarRing, f::MPolyRingElem)Return the image of f under the Reynolds operator corresponding to RG.
Examples
We compute the degree-4 invariant of ternary cubics found by Aronhold [Aro58].
julia> G = linearly_reductive_group(:SL, 3, QQ);
julia> r = representation_on_forms(G, 3);
julia> S, x = graded_polynomial_ring(QQ, :x => 1:10);
julia> RG = invariant_ring(S, r);
julia> 75*reynolds_operator(RG, x[5]^4)
x[1]*x[4]*x[8]*x[10] - x[1]*x[4]*x[9]^2 - x[1]*x[5]*x[7]*x[10] + x[1]*x[5]*x[8]*x[9] + x[1]*x[6]*x[7]*x[9] - x[1]*x[6]*x[8]^2 - x[2]^2*x[8]*x[10] + x[2]^2*x[9]^2 + x[2]*x[3]*x[7]*x[10] - x[2]*x[3]*x[8]*x[9] + x[2]*x[4]*x[5]*x[10] - x[2]*x[4]*x[6]*x[9] - 2*x[2]*x[5]^2*x[9] + 3*x[2]*x[5]*x[6]*x[8] - x[2]*x[6]^2*x[7] - x[3]^2*x[7]*x[9] + x[3]^2*x[8]^2 - x[3]*x[4]^2*x[10] + 3*x[3]*x[4]*x[5]*x[9] - x[3]*x[4]*x[6]*x[8] - 2*x[3]*x[5]^2*x[8] + x[3]*x[5]*x[6]*x[7] + x[4]^2*x[6]^2 - 2*x[4]*x[5]^2*x[6] + x[5]^4This function is part of the experimental code in Oscar. Please read here for more details.
The Null Cone
null_cone_ideal — Method
null_cone_ideal(RG::RedGroupInvarRing)Return Hilbert's ideal, the ideal of polynomial_ring(RG) generated by the invariants of positive degree.
Its zero set is the null cone, the set of all $v \in V$ such that the closure of the orbit $G v$ contains $0$. The generators are computed as in Derksen's algorithm [Der99] and need not be invariants.
Examples
For binary quartics, the second generator is not invariant:
julia> G = linearly_reductive_group(:SL, 2, QQ);
julia> RG = invariant_ring(representation_on_forms(G, 4));
julia> null_cone_ideal(RG)
Ideal generated by
X[1]*X[5] - 4*X[2]*X[4] + 3*X[3]^2
4*X[1]*X[3]*X[5] - 3*X[1]*X[4]^2 - 3*X[2]^2*X[5] + 2*X[2]*X[3]*X[4]This function is part of the experimental code in Oscar. Please read here for more details.
Fundamental Systems of Invariants
fundamental_invariants — Function
fundamental_invariants(RG::RedGroupInvarRing, algorithm::Symbol = :default)Return a system of fundamental invariants for RG.
The result is cached, so calling this function again with argument RG will be fast and give the same result.
Implemented Algorithms
Both algorithms compute generators of Hilbert's null-cone ideal as in Derksen's algorithm [Der99]. Then
algorithm = :reynoldsapplies the Reynolds operator to these generators. This needs a known Reynolds operator, that is, a group created from a symbol such as:SL.algorithm = :linear_algebracomputes, by linear algebra, a basis of the invariants in each degree of a generator of the null-cone ideal, and keeps those which are not polynomials in invariants of smaller degree.
By default, the function uses :reynolds if a Reynolds operator is known, and :linear_algebra otherwise (for groups given by their defining ideal).
Examples
julia> G = linearly_reductive_group(:SL, 2, QQ);
julia> r = representation_on_forms(G, 2);
julia> RG = invariant_ring(r);
julia> fundamental_invariants(RG)
1-element Vector{MPolyDecRingElem{QQFieldElem, QQMPolyRingElem}}:
-X[1]*X[3] + X[2]^2
This function is part of the experimental code in Oscar. Please read here for more details.
Invariant Rings as Affine Algebras
affine_algebra — Method
affine_algebra(RG::RedGroupInvarRing)Return the invariant ring RG as an affine algebra (this amounts to compute the algebra syzygies among the fundamental invariants of RG).
In addition, if A is this algebra, and R is the polynomial ring of which RG is a subalgebra, return the inclusion homomorphism A $\hookrightarrow$ R whose image is RG.
Examples
julia> G = linearly_reductive_group(:SL, 2, QQ);
julia> r = representation_on_forms(G, 2);
julia> S, x = graded_polynomial_ring(QQ, :x => 1:3);
julia> RG = invariant_ring(S, r);
julia> A, AtoS = affine_algebra(RG)
(Quotient of multivariate polynomial ring by ideal (0), Hom: A -> S)This function is part of the experimental code in Oscar. Please read here for more details.