The Invar Package for Calculating Rings of Invariants

Gregor Kemper ^{∗}

June 15, 1993

Invar is a program package based on the computer-algebra system Maple ([Ma]) which calculates the ring of invariants of a permutation group or of a finite linear group over ℚ or a number field. “Calculates” means that the program computes a Cohen-Macaulay basis for the ring of invariants and its syzygies, yielding a presentation for the ring of invariants.

Some applications of this can be found in [Sl]. My personal motivation for writing it was that I am doing some explicit calculation on Noether’s problem (See Section 5.2 and [Ke]). Theorems and algorithms are stated in this paper without proof. Neither shall I give too many syntactical details, which can be found by using the on-line help provided for the package.

Contents

1 The Ring of Invariants 2

2 Installation 4

3 What the Package Does 4 3.1 Make the Group Linear . . . . . . . . . . . . . . . . . . . . . . 5 3.2 Split off Unit Characters . . . . . . . . . . . . . . . . . . . . . 5 3.3 Find Primary Generators . . . . . . . . . . . . . . . . . . . . . 6 3.4 Find Secondary Generators . . . . . . . . . . . . . . . . . . . 6 3.5 Calculate Relations . . . . . . . . . . . . . . . . . . . . . . . . 7

∗The author is supported by the Graduiertenkolleg “Modellierung und wissenschaftliches Rechnen in Mathematik und Naturwissenschaften” which is financed by the DFG and the Land Baden-Württemberg.

4 The Algorithms 7 4.1 Making the Group Linear . . . . . . . . . . . . . . . . . . . . 7 4.2 Splitting off Unit Characters . . . . . . . . . . . . . . . . . . . 7 4.3 Finding Primary Generators . . . . . . . . . . . . . . . . . . . 7 4.4 Finding Secondary Generators . . . . . . . . . . . . . . . . . . 8 4.5 Calculating Relations . . . . . . . . . . . . . . . . . . . . . . . 9

5 Examples 10 5.1 Sloane’s Group of Order 192 . . . . . . . . . . . . . . . . . . . 10 5.2 Noether’s Problem for Z_{4} . . . . . . . . . . . . . . . . . . . . . 13

1 The Ring of Invariants

Let K be a field of characteristic 0 and G ≤ GL_{n} (K) a finite subgroup of the general linear group of dimension n. For i = 1, …, n define the function

x_{i} : K^{n} → K, ( ξ_{1} ; ⋮ ; ξ_{n} ) ↦ ξ_{i}.

G acts on the ring K [x_{1}, …, x_{n}] of polynomials in the x_{i}’s by

G × K [x_{1}, …, x_{n}] → K [x_{1}, …, x_{n}], (S, f) ↦ S (f)

with

(S (f)) (x) = f (S^{t} · x) for x ∈ K^{n},

where S^{t} is the transpose. For permutation matrices S this just amounts to applying the permutation to the indeterminates x_{i} in a polynomial f.

Let

I = K [x_{1}, …, x_{n}]^{G} = {f ∈ K [x_{1}, …, x_{n}] | S (f) = f ∀S ∈ G}

be the ring of invariants of G, the object of our interest.

We state the main theorem for rings of invariants of finite linear groups which says everything about the structure of I. For a proof see [H-R] or [M-G].

Theorem 1 Keep the above notation and let K̄ be an algebraic closure of K. Then we have

(a) There are invariants s_{1}, …, s_{n} ∈ I, homogeneous in the x_{i}’s, which satisfy the following property (P):

For all ξ_{1}, …, ξ_{n} ∈ K̄ holds

s_{i} (ξ_{1}, …, ξ_{n}) = 0 ∀i = 1, …, n ⇔ ξ_{1} = … = ξ_{n} = 0.

(b) For homogeneous invariants s_{1}, …, s_{n} ∈ I the following statements are equivalent:

(i) The s_{i}’s satisfy the property (P).

(ii) The s_{i}’s are algebraically independent over K and I is a free module of finite rank over K[s_{1}, …, s_{n}] having a basis of homogeneous invariants.

(c) Let (ii) from (b) be satisfied, i.e. I = ⨁_{i=1}^{m}A · f_{i} with A = K [s_{1}, …, s_{n}]

and f_{i} ∈ I homogeneous. Write δ_{i} for the total degree ∂ (s_{i}) of s_{i} and γ_{i} = ∂ (f_{i}), then the Poincaré series P_{I} (λ) of I is

P_{I} (λ) = \frac{λ^{γ_{1}} + … + λ^{γ_{m}}}{(1 − λ^{δ_{1}}) ⋯ (1 − λ^{δ_{n}})}.

Point (ii) from (b) can be paraphrased as “I is a Cohen-Macaulay algebra.” The s_{i}’s and f_{i}’s from (c) are said to be a Cohen-Macaulay basis of I. The s_{i}’s are called primary generators.

The Poincaré series can be calculated (or in this case even be defined) by Molien’s formula

P_{I} (λ) = \frac{1}{|G|} · ∑_{S∈G} \frac{1}{det (Id − λS)}.  (1)

2 Installation

Invar runs with Maple V and later versions. The package can be obtained directly from the author (The email address is at the end of this paper) or from the electronic share library of Maple which can be accessed via anonymous ftp. The sites are

Internet address Symbolic address Site location
129.132.101.33 neptune.inf.ethz.ch Zurich, Switzerland
129.97.140.58  daisy.waterloo.edu Waterloo, Canada

What you need to get is the main file invar and maybe the test file invar.test. Suppose you have them sitting in the current working directory. Then you call Maple and do the following:

> read invar;
> # The procedures are now defined and saved in  invar.m.
> libname:=libname,`.`:                 # For MapleV.2
> # If using MapleV, this should be   _liblist:=[`.`]:
> with(invar):
> ?invar

Now you should get on-line help for the package, and you can start using it. If you type

> read `invar.test`;

you should get a series of okay’s.

3 What the Package Does

The main objective of the package is to calculate Cohen-Macaulay bases. The main routine is invring. Just type

invring(G);

and everything will happen automatically. The argument G defines the group which is either given as a permutation group or a finite linear group. In the first case, it is defined by a generating set of permutations given in disjoint cycle notation. Then the ground field K is ℚ. In the second case, G is given by a generating set of matrices over K. Here the ground field K may be an algebraic number field ℚ (ϑ) which is defined by the minimal polynomial of ϑ over ℚ. Elements of K are then represented as polynomials in ϑ with rational coefficients. For syntactical details consider the on-line help for the package.

Before saying what invring does, let’s just mention that it is not the only routine in the package. Although most other routines are called by invring, they are well available to the user and documented in the on-line help. Some of them occur in the example in Section 5.2. The package is designed to be a sort of toolbox for working with invariants.

So here is what happens when invring enters the stage. You can compare the steps described here to the listings given in Section 5.

3.1 Make the Group Linear

If G is given as a permutation group the permutations are transformed into permutation matrices, making G a linear group, too.

3.2 Split off Unit Characters

G may contain the unit representation with some multiplicity. For example, this is always the case if G comes from a permutation group: All permutation matrices act trivially on the vector (1, …, 1)^{t}. In this step the unit characters contained in G are split off. More precisely: invring computes a basis v_{1}, …, v_{r} for the vector space V ≤ K^{n} of vectors fixed by all elements of G and a basis w_{1}, …, w_{n−r} for a G-invariant complement W of V. The action of G on W defines a linear group G′. Whereas x_{1}, …, x_{n} is a dual basis to the standard basis of K^{n}, let s_{1}, …, s_{r}, y_{1}, …, y_{n−r} be a dual basis to v_{1}, …, v_{r}, w_{1}, …, w_{n−r}. Then G acts trivially on the s_{i}’s, so

I = (K [w_{1}, …, w_{n−r}]^{G′}) [s_{1}, …, s_{r}] ,

and the s_{i}’s are algebraically independent over I′ = K [w_{1}, …, w_{n−r}]^{G′}.

We can now safely take the s_{i}’s as the first primary generators of I (I call them “outer primaries” since they won’t appear in any relation) and turn to the calculation of I′. So the y_{i}’s are introduced as new variables and G′ takes the place of G. Of course all this only happens if there are unit characters contained in G.

There are two enormous computational benefits to this step: First, there are (potentially) fewer variables to be calculated with, and second, the relations will become much simpler.

3.3 Find Primary Generators

invring computes the Poincaré series P_{I′} of I′ and goes through its representations that might mirror a Cohen-Macaulay basis according to Theorem 1(c), starting with the one containing the lowest degrees δ_{i}. For these successive forms of the Poincaré series invring tries to find a system s_{r+1}, …, s_{n} of primary generators having degrees ∂ (s_{i}) = δ_{i}. Only if this attempt is unsuccessful (which seems to be exceedingly rare) does invring proceed to the next form at all. Otherwise the primaries are found and step 3.3 is completed.

Now the problem is that it is not certain whether to a given form of the Poincaré series there corresponds a system of primary generators (see the example given in [Sl]). So what should “unsuccessful” mean here? In this implementation the algorithm abandons a form of the Poincaré series and passes to the next one after ten unsuccessful guesses for primaries. Now if the user isn’t quite satisfied with this policy, he/she can make the system interactively seek counsel after each unsuccessful guess. For details consider the on-line help.

In my experience it never took more than six guesses to find a system of primaries. In most cases even the first guess was a lucky one!

3.4 Find Secondary Generators

Now the primary generators have been found and the degrees γ_{i} = ∂ (f_{i}) are known from the Poincaré series. So in this step invring finds the f_{i}’s from Theorem 1(c). These in turn will be products of some homogeneous invariants t_{i}, and the number of the t_{i}’s will be minimal. Equivalently, the t_{i}’s will form a set of minimal cardinality l which, together with {s_{1}, …, s_{n}}, generates I as a K-algebra. Let us call the t_{i}’s secondary generators.

3.5 Calculate Relations

At last, invring calculates a minimal system of relations (“syzygies”) between the generators. With this, all products t_{i} · f_{j} will be known in terms of the Cohen-Macaulay basis. Let S_{1}, …, S_{n} and T_{1}, …, T_{l} be indeterminates over K. Then the relations computed by invring form a set of minimal cardinality which generates the kernel of

K[S_{1}, …, S_{n}, T_{1}, …, T_{l}] → I, S_{i} ↦ s_{i}, T_{i} ↦ t_{i}.

Thus, we get a presentation for I.

The user can prevent invring from performing step 3.5.

4 The Algorithms

For most of the steps 3.1 through 3.5 mentioned in the last section, it seems worthwhile to spend some words on the algorithms used.

4.1 Making the Group Linear

There really isn’t anything to say about this …

4.2 Splitting off Unit Characters

The matrix P = \frac{1}{|G|} ∑_{S∈G} S defines a G-invariant projection onto the subspace V of K^{n} of vectors fixed by all S ∈ G. So the basis v_{1}, …, v_{r} consists of a maximal linearly independent set of columns of P. Easy representation theory shows that r equals the trace of P. Now the complementary basis w_{1}, …, w_{n−r} is formed in the same way from Id − P. The s_{i}’s, y_{i}’s and G′ are formed as in 3.2.

4.3 Finding Primary Generators

Having calculated the Poincaré series by Molien’s formula it is easy to find its consecutive forms as in Theorem 1(c), starting with the lowest possible values for the δ_{i}’s. Now the question is how to pick invariants s_{i} of degrees δ_{i} as candidates for primary generators. The set I_{d} of invariants of some given degree d is a finite dimensional K-vectorspace. So first a basis of I_{d} is calculated for all d = δ_{i} by writing down a general polynomial of degree d with unknown coefficients and then solving the system of linear equations arising from the condition that this polynomial be invariant under the generators of G. For every candidate s_{i} you can now pick any linear combination of the basis elements of I_{δ_{i}} which yields an unthinkably large amount of possibilities! The program now browses through these possibilities systematically, starting with the simple ones and trying to avoid trivialities such as testing s1, s1+s2 just after having tried s1, s2.

For each guess for primaries, condition (P) of Theorem 1(a) is checked. This is done by setting x_{1} = 1 and then checking by a Gröbner basis calculation if the specialized s_{i}’s have a common zero (ξ_{2} …, ξ_{n}). If this is the case, they don’t qualify and the search must go on. If on the other hand the specialized s_{i}’s have no common zero, we can conclude that for each common zeroes of the original s_{i}’s we have ξ_{1} = 0. So now we specialize x_{1} = 0 and x_{2} = 1 and do the same thing again and so on. If we get to the point where all variables are specified, then the candidates satisfy (P) and we are happily through with this step.

4.4 Finding Secondary Generators

In this step two sets B and T of invariants are formed such that

I′ = ⨁_{f∈B} K [s_{r+1}, …, s_{n}] · f,

and B consists of products of elements of T. The number of invariants in B and their degrees γ_{i} are known by the Poincaré series. To find B and T, the program proceeds from the smallest γ_{i} upward and builds them up (starting with B = T = ∅), as follows:

First, take all products p of elements of T which have the desired degree γ_{i}. Then test whether p ∈ ∑_{f∈B} K [s_{1}, …, s_{n}] · f. This is done by taking all products f · s_{r+1}^{α_{r+1}} ⋯ s_{n}^{α_{n}} (f ∈ B, α_{i} ≥ 0) of total degree γ_{i}, and putting an unknown coefficient in front of them. The sum of all these expressions is then equated to p, yielding a system of linear equations in the unknown coefficients introduced before. If there is a solution, then p ∈ ∑_{f∈B} K [s_{1}, …, s_{n}] · f. If not, take p as the next element of B.

This way we try to get a basis element f of degree γ_{i} as a product of secondary generators. Only if this wasn’t successful, form a basis for I_{γ_{i}} as in 4.3. Then perform the above test for each element p of the basis until one has been found to be “new”. This p is then included not only in B but also in T and thus becomes a secondary generator.

It can easily be shown that this algorithm yields a basis B for I as a free module over K [s_{1}, …, s_{n}] and a set T of minimal cardinality which together with the primaries generates I as a K-algebra.

4.5 Calculating Relations

We know everything about calculating in the Cohen-Macaulay algebra I if we know the representation of each p = t·f with t ∈ T and f ∈ B in terms of the Cohen-Macaulay basis. So in this step all these products p are calculated, once again proceeding from those of low total degree to those of higher ones. The algorithm used for getting the representations in terms of the Cohen-Macaulay basis is the same as in 4.4: The system of linear equations in the membership test now always has a solution, and by substituting this into the sum which was equated to p, we get the desired representation of p:

p = F (s_{1}, …, s_{n}, t_{1}, …, t_{r}) .

This yields the relation p − F (s_{1}, …, s_{n}, t_{1}, …, t_{r}) = 0.

Now following this algorithm stupidly would be a waste of time since it happens that a relation for some p can be derived from the relations that have already been calculated. And what does “derived” mean? Here we stick to the concept of defining an algebra by a presentation: Let S_{1}, …, S_{n} and T_{1}, …, T_{l} be indeterminates over K and let r_{1}, …, r_{m} be the relations that have already been calculated. Then we search the ideal

(r_{1}, …, r_{m}) ≤ K [S_{1}, …, S_{n}, T_{1}, …, T_{l}]

for a relation which answers our question about the representation of p. Since this relation must be of the same total degree as p itself, we have a strongly restrictive condition on how it may be formed from the r_{i}’s. This way, trying to find such a relation again boils down to solving a system of linear equations.

The output of this step is the set R of those relations that could not be derived from others. It can be shown that the cardinality of R is minimal indeed!

5 Examples

We now give two examples of Invar at work. The following listings are taken from a Maple session using the version MapleV Release 2.

5.1 Sloane’s Group of Order 192

In [Sl], Sloane calculates a Cohen-Macaulay basis for a linear group G of order 192. Let’s do the same using Invar! G is defined over ℚ (i, \sqrt{2}) which is generated over ℚ by a = i + \sqrt{2}. We have

i = \frac{1}{6} (a + a^{3}) , \sqrt{2} = \frac{1}{6} (5a − a^{3}) ,

and the minimal polynomial of a is a^{4} − 2a^{2} + 9. So we can start the calculation.

> interface(screenwidth=63); gc(0):
> libname:=libname,`.`:
> with(invar):
>
> # The two generators given by Sloane
> gen1:=array([[2^(1/2)/2,2^(1/2)/2],[2^(1/2)/2,-2^(1/2)/2]]);
                        [      1/2        1/2  ]
                        [ 1/2 2      1/2 2     ]
                gen1 := [                      ]
                        [      1/2         1/2 ]
                        [ 1/2 2     - 1/2 2    ]
> gen2:=array([[1, 0],[0,I]]);
                               [ 1  0 ]
                        gen2 := [      ]
                               [ 0  I ]

> sub:=[I = (a+a^3)/6, 2^(1/2) = (5*a-a^3)/6]:
> # The function  lingroup  is used to define a linear group
> G:=lingroup(subs(sub,map(convert,{gen1,gen2},listlist)),
                                             a^4-2*a^2+9);
     G :=  lingroup(
                                   3
         {[[1, 0], [0, 1/6 a + 1/6 a ]],
                             3                 3
             [[5/12 a - 1/12 a , 5/12 a - 1/12 a ],
                                3                   3
                 [5/12 a - 1/12 a , - 5/12 a + 1/12 a ]]},
          4      2
         a  - 2 a  + 9)
> # Now call invring. It prints out plenty of information
> # for the user's entertainment.
> invring(G);
CALCULATING THE INVARIANT RING OF
   G = lingroup({[[1, 0], [0, 1/6*a+1/6*a^3]], [[5/12*a-1/12*a^3,
        5/12*a-1/12*a^3], [5/12*a-1/12*a^3, -5/12*a+1/12*a^3]]},
        a^4-2*a^2+9)

Calculating all elements of the group G ...
It has 192 elements.
Splitting off unit-characters ...
There is none.
Finding primary generators ...

Calculating the poincare-series ...
It is
                 2    4             2   2     2           2
   P(s) = 1/((- s  + s  + 1) (s - 1)  (s  + 1)  (s + 1 + s )
           4    8                2         2     4    8
       (2 s  + s  + 1) (1 - s + s ) (s + 1)  (- s  + s  + 1))

Try the representation
                                  1
                   P(s) = ------------------
                               8        24
                         (1 - s ) (1 - s  )

Calculating the space of invariants of degree 8.
There is one linearly independent invariant ("I8_1").
Calculating the space of invariants of degree 24.
There are 2 linearly independent invariants
                   ("I24_1" through "I24_2").
Trying invariants   s1 = I8_1   s2 = I24_1
OH HAPPY DAY: They qualify!!
   (No common zeroes other than [0,..,0])
The primaries are (by their symbolic names):
   s1 of degree 8
   s2 of degree 24
Done with finding primary generators
Finding secondary generators ...
We'll get a basis of invariants of degrees 0.

It starts with 1 (ever so amazing!)
The secondary generators are:
The invariant ring is  a free module over Q[{primaries}]
with basis
    1    of degree 0
Ready with finding secondary generators!
Finding relations between secondary generators ...
The relations are:
Ready with finding relations!
Time used:   144.767   seconds

So it turns out that there are no secondary generators and hence no relations: The ring of invariants is isomorphic to a polynomial ring! Invar introduces symbolic names s_{i} for the generators. To retrieve their actual values as polynomials in the x_{i}’s, there is the function valueof.

> valueof(s1);
                       8        4   4     8
                     x2  + 14 x1  x2  + x1
> valueof(s2);
         16   8          12   12         8   16     24     24
   759 x1   x2  + 2576 x1   x2   + 759 x1  x2   + x2   + x1

These are exactly the invariants given in [Sl].

5.2 Noether’s Problem for Z_{4}

We take the cyclic group G of order four with its standard permutation representation and solve Noether’s problem for it. In other words, we try to find (no more than) four rational functions, invariant under G, which generate the field of invariants. One of them will be s_{1} = x_{1} + … + x_{4}. So we first calculate the ring of invariants and then attack the problem of the field of invariants.

> interface(screenwidth=63); gc(0):
>
> libname:=libname,`.`:
> with(invar):
>
> # The global variable protocol_level can be used
> # to reduce the information printed by invar.
> protocol_level:=0:
> # Some permutation groups such as Z4 are defined within
> # the package.
> invring(Z4);
Splitting off unit-characters ...
Finding primary generators ...
The primaries are (by their symbolic names):
   s1 of degree 1  (outer primary)
   s2 of degree 2
   s3 of degree 2
   s4 of degree 4
Finding secondary generators ...
The secondary generators are:
   t1 of degree 3
   t2 of degree 3
   t3 of degree 4
Finding relations between secondary generators ...

So now our task is to find three rational invariants f_{i} = g_{i}/h_{i} with g_{i}, h_{i} ∈ ℚ [y_{1}, y_{2}, y_{3}] (i = 1 … 3) such that all s_{i} (i > 1) and t_{i} can be expressed as rational functions in the f_{i}. We will take homogeneous invariants and call ∂ (f_{i}) = ∂ (g_{i}) − ∂ (h_{i}) the degree of f_{i}. The strategy is to choose an f_{1} of degree 1 and f_{2} and f_{3} of degree 0 such that the degrees of g_{i} and h_{i} (i = 2, 3) are as small as possible. But on the other hand we must try to keep f_{2} and f_{3} algebraically independent. It can be proved that this strategy is “likely” to produce a generating set. So an obvious choice would be (with the notation from the above listing)

f_{1} = t_{1}/s_{2}, f_{2} = s_{3}/s_{2}, f_{3} = t_{2}/t_{1}.

But maybe we can get f_{3} better! Suppose χ is a linear character of G and g_{3} and h_{3} are both pseudo-invariants of weight χ, i.e. σ (g_{3}) = χ (σ)·g_{3} ∀σ ∈ G, and the same for h_{3}. Then the quotient f_{3} is an invariant, and maybe g_{3} and h_{3} can have smaller degrees than 3, with f_{3} still algebraically independent from f_{2}. Let us explore this idea for the linear character χ with values ±1!

> # restore the usual amount of information printed
> protocol_level:=1:
> # The function  classes  calculates the conjugacy classes
> # of the current group
> classes():
Calculating the conjugacy classes of G ...
G has conjugacy classes of lengths   [1, 1, 1, 1]
> # A character is defined by giving a list of its values
> # matching the list of conjugacy classes.
> # Here chi is the determinant.
>
> chi:=map(m->linalg[det](array(m)),");
                     chi := [-1, 1, 1, -1]

Let χ be a linear character of G, then the χ-weighted Poincaré series is given by Molien’s formula (1), but with each summand weighted by χ (σ). The d’th coefficient of its Taylor expansion is the dimension of the space of pseudoinvariants of weight χ and of degree d. So this is how we can check if we have a chance for a better f_{3}.

> # The function  poincare  calculates the
> # weighted poincare series
> taylor(poincare(chi,s),s);
Calculating the poincare-series ...
It is

                              3    2
                          s (s  - s  + s + 1)
           P(s) = - --------------------------------
                          3   2              2
                    (s - 1)  (s  + 2 s + 1) (s  + 1)

                    2      3      4      5      6
             s + 2 s  + 2 s  + 4 s  + 5 s  + O(s )
> # So we will get g3 and h3 of degree 2!
> # The function  invarspace  calculates a basis for the space
> # of pseudo-invariants of given degree
>
> invarspace(2,chi):
Calculating the space of pseudo-invariants of degree 2.
There are 2 linearly independent invariants
                     ("I2_1" through "I2_2").
> # Now we want to represent the quotient in terms of the
> # Cohen-Macaulay basis.  repfrac  does this.
>
> repfrac("[1]/"[2]);
fraction extended by a factor of degree 1
Solving a system of 8 linear equations in 2 unknowns ...
Solving a system of 8 linear equations in 2 unknowns ...
                               t1
                         - ---------
                           5 t1 + t2
> g3:=numer("): h3:=denom(""):
>
> # Write down the definition of the fi's in terms of the si's
> # and ti's
> f_by_s:={f1=t1/s2,f2=s3/s2,f3=g3/h3}:

Now we want to check if the s_{i}’s and t_{i}’s can indeed be expressed by the f_{i}’s. We have the following equations at hand:

• g_{i} − f_{i}h_{i} = 0 (i = 1 … 3), with g_{i} and h_{i} polynomials in the s_{i}’s and t_{i}’s,

• the relations which were calculated by invring,

• u · h_{1}h_{2}h_{3} − 1 = 0 with an auxiliary variable u, just to express that the h_{i}’s are nonzero.

So we use the Gröbner basis algorithms in Maple to get the answer from these equations.

> # The function  rel  retrieves  the relations
> eq:=[t1-f1*s2,s3-f2*s2,g3-f3*h3,u*s2*h3-1,
>                          map(x->x[1],rel())[]]:
> with(grobner):
> bas:=gbasis(eq,{u,s2,s3,s4,t1,t2,t3},plex,'ord'):
> # We don't print the Groebner basis here, but it turns out
> # that it does have linear polynomials in the si's and ti's.
> # Thus the representation of the si's and ti's as rational
> # functions in the fi's is indeed possible!
>
> s_by_f:=solve({bas[]},{u,s2,s3,s4,t1,t2,t3}):
> # It's somewhat long, though:
> lprint(s_by_f);
{t3 = 1/4*f1^4*(572*f2^2*f3^4+550*f3^3*f2^2+215*f2^2*f3^2+40*f3
*f2^2+3*f2^2-1482*f2*f3^4-1412*f2*f3^3-554*f2*f3^2-104*f2*f3-8*
f2+65*f3^4+82*f3^3+29*f3^2+4*f3)/f3^4/(f2^6-2*f2^5-f2^4+4*f2^3-
f2^2-2*f2+1), t1 = -f1^3*(1+6*f3+13*f3^2)/f3^2/(f2^3-f2^2-f2+1)
, s3 = -f2*f1^2*(1+6*f3+13*f3^2)/f3^2/(f2^3-f2^2-f2+1), t2 = f1
^3*(1+11*f3+43*f3^2+65*f3^3)/f3^3/(f2^3-f2^2-f2+1), u = -f3^5*(
f2^6-2*f2^5-f2^4+4*f2^3-f2^2-2*f2+1)/f1^5/(1+12*f3+62*f3^2+156*
f3^3+169*f3^4), s4 = 1/4*f1^4*(156*f2^2*f3^4+150*f3^3*f2^2+61*
f2^2*f3^2+12*f3*f2^2+f2^2+26*f2*f3^4+12*f2*f3^3+2*f2*f3^2-13*f3
^4-6*f3^3-f3^2)/f3^4/(f2^6-2*f2^5-f2^4+4*f2^3-f2^2-2*f2+1), s2
 = -f1^2*(1+6*f3+13*f3^2)/f3^2/(f2^3-f2^2-f2+1)}

>
> # Let us check that these relations are true!
> # The following function returns 0 when fed with an
> # si or ti, if the relations are true.
>
> s->normal(valueof(normal(subs(s_by_f,f_by_s,s)-s))):
> map(",[s2,s3,s4,t1,t2,t3]);
                       [0, 0, 0, 0, 0, 0]
> # Great !!

References

[H-R] M. Hochster and J. Roberts, Rings of invariants of reductive groups acting on regular rings are Cohen-Macaulay, Advances in Math. 13 (1974), 115-175.

[Ke] G. Kemper, Das Noethersche Problem für L_{2}(7), IWR Preprint 93-26 (1993)

[M-G] J.M. McShane and L.C. Grove, Polynomial Invariants of Finite Groups, Algebras, Groups and Geometries, to appear 1993.

[Ma] B. Char, K. Geddes, G. Gonnet, M. Monagan and S. Watt, Maple Reference Manual (5th Edn.), Waterloo Maple Publishing, Waterloo, Ontario, 1990

[Sl] N. Sloane, Error-correcting Codes and Invariant Theory: New Applications of a Nineteenth-Century Technique, Amer. Math. Monthly 84 (1977), 82-107.

Gregor Kemper IWR Im Neuenheimer Feld 368 6900 Heidelberg Germany

          email kemper@kalliope.iwr.uni-heidelberg.de