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).\]
- 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$.
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_group
— Methodlinearly_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
This function is part of the experimental code in Oscar. Please read here for more details.
linearly_reductive_group
— Methodlinearly_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
This function is part of the experimental code in Oscar. Please read here for more details.
representation_on_forms
— Methodrepresentation_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.
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]
This function is part of the experimental code in Oscar. Please read here for more details.
Constructors for Invariant Rings
invariant_ring
— Methodinvariant_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
This function is part of the experimental code in Oscar. Please read here for more details.
invariant_ring
— Methodinvariant_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
This function is part of the experimental code in Oscar. Please read here for more details.
The Reynolds Operator
reynolds_operator
— Methodreynolds_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
This function is part of the experimental code in Oscar. Please read here for more details.
Fundamental Systems of Invariants
fundamental_invariants
— Methodfundamental_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
This function is part of the experimental code in Oscar. Please read here for more details.