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_groupMethod
torus_group(K::Field, m::Int)

Return the torus $(K^{\ast})^m$.

Note

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
source
rankMethod
rank(T::TorusGroup)

Return the rank of T.

Examples

julia> T = torus_group(QQ,2);

julia> rank(T)
2
source
fieldMethod
field(T::TorusGroup)

Return the field over which T is defined.

Examples

julia> T = torus_group(QQ,2);

julia> field(T)
Rational field
source
representation_from_weightsMethod
representation_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]]
source
groupMethod
group(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
source

Constructor for Invariant Rings

invariant_ringMethod
invariant_ring(r::RepresentationTorusGroup)

Return the invariant ring of the torus group represented by r.

Note

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
source

Fundamental Systems of Invariants

fundamental_invariantsMethod
fundamental_invariants(RT::TorGrpInvRing)

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]
source

Invariant Rings as Affine Algebras

affine_algebraMethod
affine_algebra(RT::TorGrpInvRing)

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)
source