Dom::PermutationGroupInvariantRing – the invariant ring of a permutation group

Dom::PermutationGroupInvariantRingR, G represents the invariant ring of the permutation group G over the ground ring R.

→ Examples

Creating the Type

Dom::PermutationGroupInvariantRing(R, G)

Parameters:

R

a ring, i.e. a domain of the category Cat::Ring.

G

a permutation group, i.e. a domain of the category Cat::PermutationGroup.

Details:

HilbertSeries – Hilbert series

(Dom::PermutationGroupInvariantRing(R, G))::HilbertSeries(identifier z)

Returns the Hilbert series of the invariant ring, as a rational function in z.

By default, the computation is delegated to combinat::integerVectorsModPermutationGroup::generatingSeries which uses Pólya enumeration theory. An alternative implementation by mean of Molien's formula is available under the name HilbertSeries_Molien (cf. Sturmfels Älgorithms in Invariant Theory, p 29 / p 72").

Example 1:

In this example, we show how to manipulate invariants of the cyclic group math with rational coefficients:

C4 := Dom::PermutationGroup(4, [[[1,2,3,4]]]):

IC4 := Dom::PermutationGroupInvariantRing(Dom::Rational, C4):

 

Given a monomial, say math, the orbit sum of math is the sum of all the monomials in the orbit of m by the action of the group. For example, the orbit sum of math under the action of math is math. Such an orbit sum is stored compactly, by just keeping track of the leading monomial.

Monomials themselves are represented by theirs exponent vectors; the math-th entry of the list being the power of the math-th variable.

Time for an example, the following defines the orbit sum of math:

m := IC4([1, 1, 0, 0])

math

Only the leading term is displayed, but this really represents the full orbitsum of math:

IC4::poly(m)

math

Here is the first powersum of degree math:

p1 := IC4([1, 0, 0, 0]);

IC4::poly(p1)

math

math

Now we can form linear combination of orbit sums:

p1 + 4*m

math

as well as products:

p1*m

math

As you can see, the result has been rewritten as a linear combination of orbit sums.

Actually, any invariant can be uniquely written as a linear combination of orbit sums (this follows easily from the fact that a group of permutations sends monomials to monomials). In particular, the basis of math is indexed by the integer vectors of length math, considered up to a permutation in the cyclic group math:

IC4::basisIndices

math

We have met above the symmetric powersum math. In fact, any symmetric polynomial is in math. Some simple ones can be directly constructed as follow:

IC4::powersum(3)

math

IC4::elementary(2)

math

Example 2:

We now move on to the study of the invariant ring of math itself:

C4 := Dom::PermutationGroup(4, [[[1,2,3,4]]]):

IC4 := Dom::PermutationGroupInvariantRing(Dom::Rational, C4):

 

Some information on the ring is available right away, namely, it is of Krull dimension math, it is non-Modular Cohen-Macaulay and not Gorenstein (we refer to the litterature for the definitions):

IC4::dimen;

IC4::isModular();

IC4::isCohenMacaulay();

IC4::isGorenstein()

math

math

math

math

An essential task when studying invariant rings is to find good degree bounds (an integer math such that the ring is generated by invariants of degree less than math). Aside from theoretical aspects, such degree bounds condition the complexity of many of the algorithms. In the non modular case, one can use Noether's degree bound given by the size of the group:

IC4::degreeBound();

IC4::degreeLowerBound();

IC4::degreeBoundIsOptimal()

math

math

math

Without further computations, the system can not decide whether this degree bound is tight (in fact it is).

Generally speaking, this bound is always tight for cyclic groups, and never for all the other groups. The system uses a variety of other techniques to try to improve this degree bound, using successive refinements of Noether's theorem by Fleishmann, Schmid, Domokos, Hegedus, and Sezer, as well as degree bounds of Garsia, Stanton, and Goebel for the special case of permutation groups. However, most of the time, the degree bound is is still way of. If by chance you know in advance a good degree bound, you may specify it to the system with:

IC4::degreeBound() := 4:

 

It is also relatively cheap to compute the Hilbert Series of math. This is the generating series of the homogeneous components of degree math of the invariant ring. This is also the generating series of orbit sums by degree. It can be computed by means of the general Molien's formula. By default, it is computed by Pólya enumeration, which is faster:

IC4::HilbertSeries()

math

series(IC4::HilbertSeries(), z)

math

In characteristic zero, one may always take the symmetric powersums as primary invariants:

IC4::primaryInvariants()

math

In case you know a better primary invariants (typically of lower degree), you may specify them using IC4::setPrimaryInvariants

Here is the Hilbert series of the free-subring generated by the primary invariants (here the symmetric functions):

IC4::primaryInvariantsRingSeries()

math

In the non modular case, the invariant ring is Cohen-Macaulay; in other words, it is a free module over the subring generated by the primary invariants. Generators for this module are called secondary invariants. Their generating series can be obtained at no cost as the quotient of the Hilbert series of the two rings:

normal(IC4::HilbertSeries()/IC4::primaryInvariantsRingSeries())

math

It is better thought to use directly the "secondaryInvariantsSeries" method (internally, the Hilbert series is in fact usually computed from the generating series of secondary invariants).

IC4::secondaryInvariantsSeries(z)

math

Now we turn to expensive computations. Here are the secondary invariants themselves:

IC4::secondaryInvariants()

math

This gives us a Hironaka decomposition of IC4. As a by-product, we get irreducible secondary invariants for IC4:

IC4::irreducibleSecondaryInvariants()

math

Together with the primary invariants, the irreducible secondary invariants form a reasonnably small homogeneous generating set of the invariant ring. To be precise, it is a generating set which is minimal among all generating sets containing the primary invariants.

Now, the information on the degree bound has been updated:

IC4::degreeBound();

IC4::degreeLowerBound();

IC4::degreeBoundIsOptimal()

math

math

math

We can also compute directly a minimal generating set; this is usually faster than computing a Hironaka decomposition:

IC4::minimalGeneratingSet()

math

Let us conclude with the ring math of symmetric polynomials in math variables:

S4 := Dom::SymmetricGroup(4):

IS4 := Dom::PermutationGroupInvariantRing(Dom::Rational, S4):

 

It has a very nice Hilbert Series, which is also the generating series of partitions of math in at most math parts:

series(IS4::HilbertSeries(z), z, 8)

math

combinat::partitions::count(n, MaxLength = 4) $ n = 0..7

math

It is the polynomial ring over the elementary symmetric functions:

IS4::minimalGeneratingSet()

math

In particular, math has only one secondary invariant:

IS4::secondaryInvariantsSeries(z)

math

IS4::secondaryInvariants()

math

Note that, for symmetric polynomials, the orbitsum basis is just the usual monomial basis. To compute with other bases (elementary, complete, Schur, ...), please refer to examples::SymmetricPolynomials.

Example 3:

In this last example, we do some computations in the modular case. Consider the invariant ring of math over math:

C5 :=Dom::PermutationGroup(5, [[[$1..5]]]):

IC5:=Dom::PermutationGroupInvariantRing(Dom::IntegerMod(5),C5):

 

As we are now in the modular case, we ca not decide right whether the ring is Cohen-Macaulay or Gorenstein. Also, Noether's degree bound does not apply anymore:

IC5::isModular;

IC5::isCohenMacaulay;

IC5::isGorenstein;

IC5::degreeBound()

math

math

math

math

The computation of a minimal generating set is now quite expensive because we need to do the full computation up to degree 10!

IC5::minimalGeneratingSet()

math

We finally get the expected degree bound of math:

IC5::degreeBound()

math

The algorithm to compute Hironaka decomposition essentially works in the modular case. Of course, the invariant ring may not be Cohen-Macaulay, in which case the invariant ring is not a free-module over the primary invariants. The obtained secondary invariants still generate the ring as a module, but are not independent. Here is the number of secondary invariants per degree:

map(IC5::secondaryInvariants(), nops)

math

Note that there is one more secondary invariant of degree math than the Hilbert series suggests:

normal( IC5::HilbertSeries() / IC5::primaryInvariantsRingSeries() )

math

The algorithm has discovered the relation, and updated "isCohenMacaulay" appropriately:

IC5::isCohenMacaulay

math

Caveat: the algorithm does not use the Hilbert series to predict the number of secondary invariants at each degree, which is good. On the other hand, it still uses it as a stopping condition for the degree, which may be completely incorrect! So, please consider the result as a partial system of secondary invariants up to the degree of dom::secondaryInvariantsSeries():