# primaryInvariants -- computes a list of primary invariants for the invariant ring of a finite group

## Synopsis

• Usage:
primaryInvariants G
• Inputs:
• Optional inputs:
• Dade => ..., default value false, an optional argument for primaryInvariants determining whether to use the Dade algorithm
• DegreeVector => ..., default value 0, an optional argument for primaryInvariants that finds invariants of certain degrees
• Outputs:
• a list, consisting of a homogeneous system of parameters (hsop) for the invariant ring of the group action

## Description

There are two algorithms implemented in primaryInvariants. The default algorithm (corresponding to the optional argument Dade taking the value false) currently only works with polynomial rings over fields of characteristic zero. The second is the Dade algorithm, corresponding to the optional argument Dade taking the value true. This algorithm can calculate an hsop over finite fields, so long as the field is sufficiently large. See hsop algorithms for a discussion comparing the two algorithms.

 i1 : A=matrix{{0,1,0},{0,0,1},{1,0,0}}; 3 3 o1 : Matrix ZZ <--- ZZ i2 : B=matrix{{0,1,0},{1,0,0},{0,0,1}}; 3 3 o2 : Matrix ZZ <--- ZZ i3 : S3=finiteAction({A,B},QQ[x,y,z]) o3 = QQ[x..z] <- {| 0 1 0 |, | 0 1 0 |} | 0 0 1 | | 1 0 0 | | 1 0 0 | | 0 0 1 | o3 : FiniteGroupAction i4 : primaryInvariants S3 3 3 3 o4 = {x + y + z, x*y + x*z + y*z, x + y + z } o4 : List

Below, the invariant ring QQ[x,y,z]S3 is calculated with K being the field with 101 elements.

 i5 : K=GF(101) o5 = K o5 : GaloisField i6 : S3=finiteAction({A,B},K[x,y,z]) o6 = K[x..z] <- {| 0 1 0 |, | 0 1 0 |} | 0 0 1 | | 1 0 0 | | 1 0 0 | | 0 0 1 | o6 : FiniteGroupAction i7 : primaryInvariants(S3,Dade=>true) 6 5 4 2 3 3 2 4 5 6 5 o7 = {- 45x - 28x y - 45x y - 42x y - 45x y - 28x*y - 45y - 28x z + ------------------------------------------------------------------------ 4 3 2 2 3 4 5 4 2 3 2 11x y*z + 23x y z + 23x y z + 11x*y z - 28y z - 45x z + 23x y*z + ------------------------------------------------------------------------ 2 2 2 3 2 4 2 3 3 2 3 2 3 3 3 18x y z + 23x*y z - 45y z - 42x z + 23x y*z + 23x*y z - 42y z - ------------------------------------------------------------------------ 2 4 4 2 4 5 5 6 6 5 45x z + 11x*y*z - 45y z - 28x*z - 28y*z - 45z , 9x + 32x y + ------------------------------------------------------------------------ 4 2 3 3 2 4 5 6 5 4 3 2 13x y - 21x y + 13x y + 32x*y + 9y + 32x z + 48x y*z + 14x y z + ------------------------------------------------------------------------ 2 3 4 5 4 2 3 2 2 2 2 3 2 14x y z + 48x*y z + 32y z + 13x z + 14x y*z - 33x y z + 14x*y z + ------------------------------------------------------------------------ 4 2 3 3 2 3 2 3 3 3 2 4 4 13y z - 21x z + 14x y*z + 14x*y z - 21y z + 13x z + 48x*y*z + ------------------------------------------------------------------------ 2 4 5 5 6 6 5 4 2 2 4 5 13y z + 32x*z + 32y*z + 9z , 13x - 43x y + 45x y + 45x y - 43x*y ------------------------------------------------------------------------ 6 5 4 3 2 2 3 4 5 4 2 + 13y - 43x z - 23x y*z - 39x y z - 39x y z - 23x*y z - 43y z + 45x z ------------------------------------------------------------------------ 3 2 2 2 2 3 2 4 2 2 3 2 3 2 4 - 39x y*z + 29x y z - 39x*y z + 45y z - 39x y*z - 39x*y z + 45x z ------------------------------------------------------------------------ 4 2 4 5 5 6 - 23x*y*z + 45y z - 43x*z - 43y*z + 13z } o7 : List

This function is provided by the package InvariantRing.

## Caveat

Currently users can only use primaryInvariants to calculate a hsop for the invariant ring over a finite field by using the Dade algorithm. Users should enter the finite field as a GaloisField or a quotient field of the form ZZ/p and are advised to ensure that the ground field has cardinality greater than |G|n-1, where n is the number of variables in the polynomial ring . Using a ground field smaller than this runs the risk of the algorithm getting stuck in an infinite loop; primaryInvariants displays a warning message asking the user whether they wish to continue with the computation in this case. See hsop algorithms for a discussion on the Dade algorithm.

## Ways to use primaryInvariants :

• "primaryInvariants(FiniteGroupAction)"

## For the programmer

The object primaryInvariants is .