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
This function is part of the experimental code in Oscar. Please read here for more details.
rank
— Methodrank(T::TorusGroup)
Return the rank of T
.
Examples
julia> T = torus_group(QQ,2);
julia> rank(T)
2
This function is part of the experimental code in Oscar. Please read here for more details.
field
— Methodfield(T::TorusGroup)
Return the field over which T
is defined.
Examples
julia> T = torus_group(QQ,2);
julia> field(T)
Rational field
This function is part of the experimental code in Oscar. Please read here for more details.
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]]
This function is part of the experimental code in Oscar. Please read here for more details.
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
This function is part of the experimental code in Oscar. Please read here for more details.
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
This function is part of the experimental code in Oscar. Please read here for more details.
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]
This function is part of the experimental code in Oscar. Please read here for more details.
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)
This function is part of the experimental code in Oscar. Please read here for more details.