# Invariants of Linearly Reductive Groups

In this section, with notation as in the introduction to this chapter, $G$ will be a linearly 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).$$$
Note
• 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 Reynold's 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 Reynold's 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$.
Note

Proceeding as above is not a problem: Derksen's algorithms 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 (in characteristic zero). For the action of this group by linear substitution on, say, $n$-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_groupMethod
linearly_reductive_group(sym::Symbol, m::Int, K::Field)

Return the linearly reductive group indicated by sym.

Currently, the supported options for sym are:

• :SL, corresponding to the special linear group (of degree $m$ over the field $K$).

Examples

julia> G = linearly_reductive_group(:SL, 2, QQ)
Reductive group SL2
over QQ

julia> group_ideal(G)
Ideal generated by
z[1, 1]*z[2, 2] - z[2, 1]*z[1, 2] - 1
Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source
linearly_reductive_groupMethod
linearly_reductive_group(sym::Symbol, m::Int, R::MPolyRing)

Return the linearly reductive group indicated by sym.

Currently, the supported options for sym are:

• :SL, corresponding to the special linear group (of degree $m$ over the base field $K$ of $R$, where $R$ is the polynomial ring in which the defining ideal of SL$(m, K)$ lives).

Examples

julia> S, z = polynomial_ring(QQ, "c"=> (1:2, 1:2));

julia> G = linearly_reductive_group(:SL,2,S)
Reductive group SL2
over QQ

julia> group_ideal(G)
Ideal generated by
c[1, 1]*c[2, 2] - c[2, 1]*c[1, 2] - 1
Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source
representation_on_formsMethod
representation_on_forms(G::LinearlyReductiveGroup, d::Int)

If G is the special linear group acting by linear substitution on, say, n-ary forms of degree d, return the corresponding representation.

Note

In accordance with classical papers, an $n$-ary form of degree $d$ in $K[x_1, \dots, x_n]$ is written as a $K$-linear combination of the $K$-basis with elements $\binom{n}{I}x^I$. Here, $I = (i_1, \dots, i_n)\in\mathbb Z_{\geq 0}^n$ with $i_1+\dots +i_n =d$.

Examples

julia> G = linearly_reductive_group(:SL, 2, QQ);

julia> r = representation_on_forms(G, 2)
Representation of SL2
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]
Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source

### Constructors for Invariant Rings

invariant_ringMethod
invariant_ring(r::RepresentationLinearlyReductiveGroup)

Return the invariant ring under the action defined by the representation r on an implicitly generated polynomial ring of appropriate dimension.

Examples

julia> G = linearly_reductive_group(:SL, 2, QQ);

julia> r = representation_on_forms(G, 2);

julia> RG = invariant_ring(r)
Invariant Ring of
graded multivariate polynomial ring in 3 variables over QQ
under group action of SL2
Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source
invariant_ringMethod
invariant_ring(R::MPolyDecRing, r::RepresentationLinearlyReductiveGroup)

Return the invariant subring of R under the action induced by the representation of r on R.

Examples

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)
Invariant Ring of
graded multivariate polynomial ring in 10 variables over QQ
under group action of SL3
Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source

### The Reynolds Operator

reynolds_operatorMethod
reynolds_operator(RG::RedGroupInvarRing, f::MPolyRingElem)

Return the image of f under the Reynolds operator corresponding to RG.

Examples

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]^4
Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source

## Fundamental Systems of Invariants

fundamental_invariantsMethod
fundamental_invariants(RG::RedGroupInvarRing)

Return a system of fundamental invariants for RG.

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

Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source