Invariants of Tori
In this section, with notation as in the introduction to this chapter, $T =(K^{\ast})^m$ will be a torus of rank $m$ over a field $K$. To compute invariants of diagonal torus actions, OSCAR makes use of Algorithm 4.3.1 in [DK15] which, in particular, relies on algorithmic means from polyhedral geometry.
Creating Invariant Rings
How Tori and Their Representations are Given
torus_group
— Methodtorus_group(K::Field, m::Int)
Return the torus $(K^{\ast})^m$.
In the context of computing invariant rings, there is no need to deal with the group structure of a torus: The torus $(K^{\ast})^m$ is specified by just giving $K$ and $m$.
Examples
julia> T = torus_group(QQ,2)
Torus of rank 2
over QQ
rank
— Methodrank(T::TorusGroup)
Return the rank of T
.
Examples
julia> T = torus_group(QQ,2);
julia> rank(T)
2
field
— Methodfield(T::TorusGroup)
Return the field over which T
is defined.
Examples
julia> T = torus_group(QQ,2);
julia> field(T)
Rational field
representation_from_weights
— Methodrepresentation_from_weights(T::TorusGroup, W::Union{ZZMatrix, Matrix{<:Integer}, Vector{<:Int}})
Return the diagonal action of T
with weights given by W
.
Examples
julia> T = torus_group(QQ,2);
julia> r = representation_from_weights(T, [-1 1; -1 1; 2 -2; 0 -1])
Representation of torus of rank 2
over QQ and weights
Vector{ZZRingElem}[[-1, 1], [-1, 1], [2, -2], [0, -1]]
group
— Methodgroup(r::RepresentationTorusGroup)
Return the torus group represented by r
.
Examples
julia> T = torus_group(QQ,2);
julia> r = representation_from_weights(T, [-1 1; -1 1; 2 -2; 0 -1]);
julia> group(r)
Torus of rank 2
over QQ
Constructor for Invariant Rings
invariant_ring
— Methodinvariant_ring(r::RepresentationTorusGroup)
Return the invariant ring of the torus group represented by r
.
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> T = torus_group(QQ,2);
julia> r = representation_from_weights(T, [-1 1; -1 1; 2 -2; 0 -1]);
julia> RT = invariant_ring(r)
Invariant Ring of
graded multivariate polynomial ring in 4 variables over QQ under group action of torus of rank2
Fundamental Systems of Invariants
fundamental_invariants
— Methodfundamental_invariants(RT::TorGroupInvarRing)
Return a system of fundamental invariants for RT
.
Examples
julia> T = torus_group(QQ,2);
julia> r = representation_from_weights(T, [-1 1; -1 1; 2 -2; 0 -1]);
julia> RT = invariant_ring(r);
julia> fundamental_invariants(RT)
3-element Vector{MPolyDecRingElem{QQFieldElem, QQMPolyRingElem}}:
X[1]^2*X[3]
X[1]*X[2]*X[3]
X[2]^2*X[3]
Invariant Rings as Affine Algebras
affine_algebra
— Methodaffine_algebra(RT::TorGroupInvarRing)
Return the invariant ring RT
as an affine algebra (this amounts to compute the algebra syzygies among the fundamental invariants of RT
).
In addition, if A
is this algebra, and R
is the polynomial ring of which RT
is a subalgebra, return the inclusion homomorphism A
$\hookrightarrow$ R
whose image is RT
.
Examples
julia> T = torus_group(QQ,2);
julia> r = representation_from_weights(T, [-1 1; -1 1; 2 -2; 0 -1]);
julia> RT = invariant_ring(r);
julia> fundamental_invariants(RT)
3-element Vector{MPolyDecRingElem{QQFieldElem, QQMPolyRingElem}}:
X[1]^2*X[3]
X[1]*X[2]*X[3]
X[2]^2*X[3]
julia> affine_algebra(RT)
(Quotient of multivariate polynomial ring by ideal (-t[1]*t[3] + t[2]^2), Hom: quotient of multivariate polynomial ring -> graded multivariate polynomial ring)