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 2 2 2 o4 = {x + y + z, x + 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 4 3 2 2 3 4 5 4 2 o7 = {- 4x - 12x y + 28x y - 23x y + 28x y - 12x*y - 4y - 12x z - 17x y*z - 36x y z - 36x y z - 17x*y z - 12y z + 28x z - ---------------------------------------------------------------------------------------------------------------------------- 3 2 2 2 2 3 2 4 2 3 3 2 3 2 3 3 3 2 4 4 2 4 5 36x y*z - 20x y z - 36x*y z + 28y z - 23x z - 36x y*z - 36x*y z - 23y z + 28x z - 17x*y*z + 28y z - 12x*z - ---------------------------------------------------------------------------------------------------------------------------- 5 6 6 5 4 2 3 3 2 4 5 6 5 4 3 2 2 3 4 12y*z - 4z , 37x - 26x y + 32x y - 21x y + 32x y - 26x*y + 37y - 26x z - 32x y*z + 16x y z + 16x y z - 32x*y z - ---------------------------------------------------------------------------------------------------------------------------- 5 4 2 3 2 2 2 2 3 2 4 2 3 3 2 3 2 3 3 3 2 4 4 2 4 26y z + 32x z + 16x y*z - 5x y z + 16x*y z + 32y z - 21x z + 16x y*z + 16x*y z - 21y z + 32x z - 32x*y*z + 32y z ---------------------------------------------------------------------------------------------------------------------------- 5 5 6 6 5 4 2 3 3 2 4 5 6 5 4 3 2 2 3 - 26x*z - 26y*z + 37z , 31x + 27x y - 46x y + 23x y - 46x y + 27x*y + 31y + 27x z - 8x y*z + 46x y z + 46x y z - ---------------------------------------------------------------------------------------------------------------------------- 4 5 4 2 3 2 2 2 2 3 2 4 2 3 3 2 3 2 3 3 3 2 4 4 8x*y z + 27y z - 46x z + 46x y*z + 17x y z + 46x*y z - 46y z + 23x z + 46x y*z + 46x*y z + 23y z - 46x z - 8x*y*z ---------------------------------------------------------------------------------------------------------------------------- 2 4 5 5 6 - 46y z + 27x*z + 27y*z + 31z } o7 : List |
This function is provided by the package InvariantRing.
The object primaryInvariants is a method function with options.