Application Center - Maplesoft

App Preview:

Invariant Theory of Finite Groups by Maple

You can switch back to the summary page by clicking here.

Learn about Maple
Download Application




 

 

 

 

 

Invariant Theory of Finite Groups by Maple

 

Kahtan*H.Alzubaidy

``

Key*Words; Linear*actions*on*polynomials, (diff(Molien(x), x))*s*series, `and`((diff(Reynolds(x), x))*operator, (diff(Groebner, x))*s*Basis)

 

 

 

 

Theoritical Background

 

 Let F be a field of characteristic 0 and  F[
"x[1],x[2],...,x[n]] be the polynomial ring in  x[1],x[2],...,x[n   ]over the  field  F. Let G be a finite subgroup of  GL(n,F)."

NULL

G acts on F["x[1],x[2],...,x[n]] linearly as follows"

For A2G and f2F["x[1],x[2],...,x[n]]  define A*f  as follows "

 (A.f)(X) = f(AX), where  X="[[[x[1]],[x[2]],[:],[x[n]]]].  Thus  "A.f 2F["x[1],x[2],...,x[n]]  "

 

We have the following

  i) I.f = f            ii) A.(B.f) = (AB).f, where I is the identity matrix and  A,B 2G.

 

 A polynomial  f(X)  is called invariant under G if f(AX) = f(X) for any A2G.  F["x[1],x[2],...,x[n](])^(G) is the set of all invariant polynomials under G.  "

 

Theorem 1

   F["x[1],x[2],...,x[n](])^(G)   is a subring of   "F["x[1],x[2],...,x[n]] ."

 

Theorem 2 (Hilbert)

    F["x[1],x[2],...,x[n](])^(G)   is  finitely generated . "

 Reynolds operator of G is the mapping   R[G]F["x[1],x[2],...,x[n](])[]-> "F["x[1],x[2],...,x[n](])[]  defined  by    R[G](f)(X)=1/(|G|)(∑)f(AX) ."

Theorem 3

  i)   R[G]*is*a*linear*operato*r

  ii)  "R[G](f) in "F["x[1],x[2],...,x[n](])^(G)  "

  iii) "R[G](f)=f   iff   in f in "F["x[1],x[2],...,x[n](])^(G)  "

 

Theorem 4 (Noether)

   F["x[1],x[2],...,x[n](])^(G)  =  F[R[G](x^(`&epsilon;`)) :  |`&epsilon;`|<=|G| ] , where  x  is a monomial in  x[1],x[2],...,x[n ]  of  degree  `&epsilon;`."

 

Theorem 5 (Molien's Series)

   H(t) =
" 1/(|G|)(&sum;)1/(det(I-tA)) =  a[0]+a[1] t+...+a[|G | ]t^(|G|) +O(t^(1+|G|)) ,   where  a[i]  is the number of linearly independent homogeneous invariants of  degree  i."

 

Theorem 6

   Let  "f[1],f[2],...,f[m]  in "F["x[1],x[2],...,x[n]]  and  B  be the Groebner basis  of the  ideal  <" f[1]-y[1], f[2]-y[2], () .. (), f[m]-y[m] > ofF["x[1],x[2],...,x[n],y[1],y[2],...,y[m]]  where  "

    
"x[1]>x[2]>...>x[n]>y[1]>y[2]>....>y[m] .  Assume that  g  is the remainder of  f  on division by  B. Then   "

 

   i) f2F["f[1],f[2],...,f[m]]  iff  f in F[y[1],y[2],...,y[m]] ,"

   ii) if   f2F["f[1],f[2],...,f[m]]  , then  f=g( f[1],f[2],...,f[m] )."

 

Theorem 7

  Let  F["x[1],x[2],...,x[n](])^(G)   =   "F["f[1],f[2],...,f[m] ]  and  ""B  be the Groebner basis  of the ideal  <" f[1]-y[1], f[2]-y[2], () .. (), f[m]-y[m] > ofF["x[1],x[2],...,x[n],y[1],y[2],...,y[m]]  where  "

   
"x[1]>x[2]>...>x[n]>y[1]>y[2]>....>y[m] .  Then the  relations  among   f[1],f[2],...,f[m ] are  the  elements  of  the basis  B  that are  in  F[y[1],y[2],...,y[m]]."

 

Method

 1) Use Molien's series to find the number of linearly independent generators at each degree of   ["x[1],x[2],...,x[n](])^(G) . The procedure  molien finds  the series.     "

 2) Apply Reynolds operator to  list the invariants for degree # |G| . The procedure  invs  is doing that.

 3) By inspection we eliminate the algebraically dependent generators.

 4) The relations among the generators are found by using Groebner basis according to theorem 7. The procedure  relations  find out the required relations.

 5) Procedures  invpol1 and invpol2 can be used to

    i) check if a given polynomial is invariant.

    ii) express an invariant polynomial in terms of the generators.

 6) The computaions done are restricted to nly variables  x,y.

 

 

Matrix Groups

 

 

restart

with(LinearAlgebra)

with(Groebner)

 

   Cyclic groups of order n generated by a matrix A

 

   "C[n]=< A : A^(n)= I>"

        = {I, A,..., "A^(n-1)} ."

 

   Rotation groups  Rn = < "[[[cos((2 Pi)/(n)),-sin((2 Pi)/(n))],[sin((2 Pi)/(n)),cos((2 Pi)/(n))]]] >"  and  unity root groups  Un = < "[[[w,0],[0,w^(-1)]]] >,   w=e^((2 Pi)/(n))."

 

NULL

cyc:=proc(A,n)

[seq(A^r,r=0..n-1)];

end proc;

proc (A, n) [seq(A^r, r = 0 .. n-1)] end proc

(1)

R1 := cyc(Matrix(2, 2, {(1, 1) = 1, (1, 2) = 0, (2, 1) = 0, (2, 2) = 1}), 1)

R1 := [Matrix(2, 2, {}, storage = empty, shape = [identity])]

(2)

R2 := cyc(Matrix(2, 2, {(1, 1) = -1, (1, 2) = 0, (2, 1) = 0, (2, 2) = -1}), 2)

R2 := [Matrix(2, 2, {}, storage = empty, shape = [identity]), Matrix(2, 2, {(1, 1) = -1, (1, 2) = 0, (2, 1) = 0, (2, 2) = -1})]

(3)

R3 := cyc(Matrix(2, 2, {(1, 1) = -1/2, (1, 2) = -(1/2)*sqrt(3), (2, 1) = (1/2)*sqrt(3), (2, 2) = -1/2}), 3)

R3 := [Matrix(2, 2, {}, storage = empty, shape = [identity]), Matrix(2, 2, {(1, 1) = -1/2, (1, 2) = -(1/2)*3^(1/2), (2, 1) = (1/2)*3^(1/2), (2, 2) = -1/2}), Matrix(2, 2, {(1, 1) = -1/2, (1, 2) = (1/2)*3^(1/2), (2, 1) = -(1/2)*3^(1/2), (2, 2) = -1/2})]

(4)

C3 := cyc(Matrix(2, 2, {(1, 1) = 0, (1, 2) = -1, (2, 1) = 1, (2, 2) = -1}), 3)

C3 := [Matrix(2, 2, {}, storage = empty, shape = [identity]), Matrix(2, 2, {(1, 1) = 0, (1, 2) = -1, (2, 1) = 1, (2, 2) = -1}), Matrix(2, 2, {(1, 1) = -1, (1, 2) = 1, (2, 1) = -1, (2, 2) = 0})]

(5)

U3 := cyc(Matrix(2, 2, {(1, 1) = w, (1, 2) = 0, (2, 1) = 0, (2, 2) = w^2}), 3)

U3 := [Matrix(2, 2, {}, storage = empty, shape = [identity]), Matrix(2, 2, {(1, 1) = w, (1, 2) = 0, (2, 1) = 0, (2, 2) = w^2}), Matrix(2, 2, {(1, 1) = w^2, (1, 2) = 0, (2, 1) = 0, (2, 2) = w^4})]

(6)

U3 := algsubs(w^3 = 1, U3)

U3 := [Matrix(2, 2, {}, storage = empty, shape = [identity]), Matrix(2, 2, {(1, 1) = w, (1, 2) = 0, (2, 1) = 0, (2, 2) = w^2}), Matrix(2, 2, {(1, 1) = w^2, (1, 2) = 0, (2, 1) = 0, (2, 2) = w})]

(7)

W3 := cyc(Matrix(2, 2, {(1, 1) = w, (1, 2) = 0, (2, 1) = 0, (2, 2) = w}), 3)

W3 := [Matrix(2, 2, {}, storage = empty, shape = [identity]), Matrix(2, 2, {(1, 1) = w, (1, 2) = 0, (2, 1) = 0, (2, 2) = w}), Matrix(2, 2, {(1, 1) = w^2, (1, 2) = 0, (2, 1) = 0, (2, 2) = w^2})]

(8)

R4 := cyc(Matrix(2, 2, {(1, 1) = 0, (1, 2) = -1, (2, 1) = 1, (2, 2) = 0}), 4)

R4 := [Matrix(2, 2, {}, storage = empty, shape = [identity]), Matrix(2, 2, {(1, 1) = 0, (1, 2) = -1, (2, 1) = 1, (2, 2) = 0}), Matrix(2, 2, {(1, 1) = -1, (1, 2) = 0, (2, 1) = 0, (2, 2) = -1}), Matrix(2, 2, {(1, 1) = 0, (1, 2) = 1, (2, 1) = -1, (2, 2) = 0})]

(9)

``

U4 := cyc(Matrix(2, 2, {(1, 1) = I, (1, 2) = 0, (2, 1) = 0, (2, 2) = -I}), 4)

U4 := [Matrix(2, 2, {}, storage = empty, shape = [identity]), Matrix(2, 2, {(1, 1) = I, (1, 2) = 0, (2, 1) = 0, (2, 2) = -I}), Matrix(2, 2, {(1, 1) = -1, (1, 2) = 0, (2, 1) = 0, (2, 2) = -1}), Matrix(2, 2, {(1, 1) = -I, (1, 2) = 0, (2, 1) = 0, (2, 2) = I})]

(10)

``

 

  "Metacyclic groups generated by a matrix  A of order n and a matrix  B of order 2 "

 

  Dihedral groups  Dn  and Quaternion group  Q4

 

   "D[n]= <A, B :  A^(n)=B^(2)=I,BA=A^(-1)B>"

        = {I, A, ...,"A^(n-1), B, AB,...,A^(n-1)B}."

 

   "Q[4]=<A, B :A^(4)= I, A^(2)= B^(2),BA=A^(-1)B >"

        = {I, A," A^(2),A^(3), B, AB, A^(2)B,A^(3)B}."

 

NULL

metacyc:=proc(A,B,n)

local L,K;

L:=[seq(A^r,r=0..n-1)];

K:= [seq(MatrixMatrixMultiply(L[s],B),s=1..n)];

[L[],K[]];

end proc;

proc (A, B, n) local L, K; L := [seq(A^r, r = 0 .. n-1)]; K := [seq(LinearAlgebra:-MatrixMatrixMultiply(L[s], B), s = 1 .. n)]; [L[], K[]] end proc

(11)

``

 

 Symmetric groups

 

S2 := cyc(Matrix(2, 2, {(1, 1) = 0, (1, 2) = 1, (2, 1) = 1, (2, 2) = 0}), 2)

S2 := [Matrix(2, 2, {}, storage = empty, shape = [identity]), Matrix(2, 2, {(1, 1) = 0, (1, 2) = 1, (2, 1) = 1, (2, 2) = 0})]

(12)

S3 := metacyc(Matrix(3, 3, {(1, 1) = 0, (1, 2) = 0, (1, 3) = 1, (2, 1) = 1, (2, 2) = 0, (2, 3) = 0, (3, 1) = 0, (3, 2) = 1, (3, 3) = 0}), Matrix(3, 3, {(1, 1) = 0, (1, 2) = 1, (1, 3) = 0, (2, 1) = 1, (2, 2) = 0, (2, 3) = 0, (3, 1) = 0, (3, 2) = 0, (3, 3) = 1}), 3)

S3 := [Matrix(3, 3, {}, storage = empty, shape = [identity]), Matrix(3, 3, {(1, 1) = 0, (1, 2) = 0, (1, 3) = 1, (2, 1) = 1, (2, 2) = 0, (2, 3) = 0, (3, 1) = 0, (3, 2) = 1, (3, 3) = 0}), Matrix(3, 3, {(1, 1) = 0, (1, 2) = 1, (1, 3) = 0, (2, 1) = 0, (2, 2) = 0, (2, 3) = 1, (3, 1) = 1, (3, 2) = 0, (3, 3) = 0}), Matrix(3, 3, {(1, 1) = 0, (1, 2) = 1, (1, 3) = 0, (2, 1) = 1, (2, 2) = 0, (2, 3) = 0, (3, 1) = 0, (3, 2) = 0, (3, 3) = 1}), Matrix(3, 3, {(1, 1) = 0, (1, 2) = 0, (1, 3) = 1, (2, 1) = 0, (2, 2) = 1, (2, 3) = 0, (3, 1) = 1, (3, 2) = 0, (3, 3) = 0}), Matrix(3, 3, {(1, 1) = 1, (1, 2) = 0, (1, 3) = 0, (2, 1) = 0, (2, 2) = 0, (2, 3) = 1, (3, 1) = 0, (3, 2) = 1, (3, 3) = 0})]

(13)

  Isomorphic copy of S3

 

SS3 := metacyc(Matrix(2, 2, {(1, 1) = -1, (1, 2) = -1, (2, 1) = 1, (2, 2) = 0}), Matrix(2, 2, {(1, 1) = -1, (1, 2) = -1, (2, 1) = 0, (2, 2) = 1}), 3)

SS3 := [Matrix(2, 2, {}, storage = empty, shape = [identity]), Matrix(2, 2, {(1, 1) = -1, (1, 2) = -1, (2, 1) = 1, (2, 2) = 0}), Matrix(2, 2, {(1, 1) = 0, (1, 2) = 1, (2, 1) = -1, (2, 2) = -1}), Matrix(2, 2, {(1, 1) = -1, (1, 2) = -1, (2, 1) = 0, (2, 2) = 1}), Matrix(2, 2, {(1, 1) = 1, (1, 2) = 0, (2, 1) = -1, (2, 2) = -1}), Matrix(2, 2, {(1, 1) = 0, (1, 2) = 1, (2, 1) = 1, (2, 2) = 0})]

(14)

 

 

 Klien's group

 

  V4=D2

V4 := metacyc(Matrix(2, 2, {(1, 1) = -1, (1, 2) = 0, (2, 1) = 0, (2, 2) = -1}), Matrix(2, 2, {(1, 1) = 1, (1, 2) = 0, (2, 1) = 0, (2, 2) = -1}), 2)

V4 := [Matrix(2, 2, {}, storage = empty, shape = [identity]), Matrix(2, 2, {(1, 1) = -1, (1, 2) = 0, (2, 1) = 0, (2, 2) = -1}), Matrix(2, 2, {(1, 1) = 1, (1, 2) = 0, (2, 1) = 0, (2, 2) = -1}), Matrix(2, 2, {(1, 1) = -1, (1, 2) = 0, (2, 1) = 0, (2, 2) = 1})]

(15)

Dihedral group of order 6

 

D3 := metacyc(Matrix(2, 2, {(1, 1) = -1/2, (1, 2) = -(1/2)*sqrt(3), (2, 1) = (1/2)*sqrt(3), (2, 2) = -1/2}), Matrix(2, 2, {(1, 1) = 1, (1, 2) = 0, (2, 1) = 0, (2, 2) = -1}), 3)

D3 := [Matrix(2, 2, {}, storage = empty, shape = [identity]), Matrix(2, 2, {(1, 1) = -1/2, (1, 2) = -(1/2)*3^(1/2), (2, 1) = (1/2)*3^(1/2), (2, 2) = -1/2}), Matrix(2, 2, {(1, 1) = -1/2, (1, 2) = (1/2)*3^(1/2), (2, 1) = -(1/2)*3^(1/2), (2, 2) = -1/2}), Matrix(2, 2, {(1, 1) = 1, (1, 2) = 0, (2, 1) = 0, (2, 2) = -1}), Matrix(2, 2, {(1, 1) = -1/2, (1, 2) = (1/2)*3^(1/2), (2, 1) = (1/2)*3^(1/2), (2, 2) = 1/2}), Matrix(2, 2, {(1, 1) = -1/2, (1, 2) = -(1/2)*3^(1/2), (2, 1) = -(1/2)*3^(1/2), (2, 2) = 1/2})]

(16)

 Isomorphic copy of D3

 

M6 := metacyc(Matrix(2, 2, {(1, 1) = w, (1, 2) = 0, (2, 1) = 0, (2, 2) = w^2}), Matrix(2, 2, {(1, 1) = 0, (1, 2) = 1, (2, 1) = 1, (2, 2) = 0}), 3)

M6 := [Matrix(2, 2, {}, storage = empty, shape = [identity]), Matrix(2, 2, {(1, 1) = w, (1, 2) = 0, (2, 1) = 0, (2, 2) = w^2}), Matrix(2, 2, {(1, 1) = w^2, (1, 2) = 0, (2, 1) = 0, (2, 2) = w^4}), Matrix(2, 2, {(1, 1) = 0, (1, 2) = 1, (2, 1) = 1, (2, 2) = 0}), Matrix(2, 2, {(1, 1) = 0, (1, 2) = w, (2, 1) = w^2, (2, 2) = 0}), Matrix(2, 2, {(1, 1) = 0, (1, 2) = w^2, (2, 1) = w^4, (2, 2) = 0})]

(17)

 

M6 := algsubs(w^3 = 1, M6)

 

 

M6 := [Matrix(2, 2, {}, storage = empty, shape = [identity]), Matrix(2, 2, {(1, 1) = w, (1, 2) = 0, (2, 1) = 0, (2, 2) = w^2}), Matrix(2, 2, {(1, 1) = w^2, (1, 2) = 0, (2, 1) = 0, (2, 2) = w}), Matrix(2, 2, {(1, 1) = 0, (1, 2) = 1, (2, 1) = 1, (2, 2) = 0}), Matrix(2, 2, {(1, 1) = 0, (1, 2) = w, (2, 1) = w^2, (2, 2) = 0}), Matrix(2, 2, {(1, 1) = 0, (1, 2) = w^2, (2, 1) = w, (2, 2) = 0})]

(18)

 

 

 Dihedral group of order 8

 

D4 := metacyc(Matrix(2, 2, {(1, 1) = 0, (1, 2) = -1, (2, 1) = 1, (2, 2) = 0}), Matrix(2, 2, {(1, 1) = 1, (1, 2) = 0, (2, 1) = 0, (2, 2) = -1}), 4)

D4 := [Matrix(2, 2, {}, storage = empty, shape = [identity]), Matrix(2, 2, {(1, 1) = 0, (1, 2) = -1, (2, 1) = 1, (2, 2) = 0}), Matrix(2, 2, {(1, 1) = -1, (1, 2) = 0, (2, 1) = 0, (2, 2) = -1}), Matrix(2, 2, {(1, 1) = 0, (1, 2) = 1, (2, 1) = -1, (2, 2) = 0}), Matrix(2, 2, {(1, 1) = 1, (1, 2) = 0, (2, 1) = 0, (2, 2) = -1}), Matrix(2, 2, {(1, 1) = 0, (1, 2) = 1, (2, 1) = 1, (2, 2) = 0}), Matrix(2, 2, {(1, 1) = -1, (1, 2) = 0, (2, 1) = 0, (2, 2) = 1}), Matrix(2, 2, {(1, 1) = 0, (1, 2) = -1, (2, 1) = -1, (2, 2) = 0})]

(19)

``

 Quaternions group

 

 

Q4 := metacyc(Matrix(2, 2, {(1, 1) = 0, (1, 2) = 1, (2, 1) = -1, (2, 2) = 0}), Matrix(2, 2, {(1, 1) = 0, (1, 2) = I, (2, 1) = I, (2, 2) = 0}), 4)

Q4 := [Matrix(2, 2, {}, storage = empty, shape = [identity]), Matrix(2, 2, {(1, 1) = 0, (1, 2) = 1, (2, 1) = -1, (2, 2) = 0}), Matrix(2, 2, {(1, 1) = -1, (1, 2) = 0, (2, 1) = 0, (2, 2) = -1}), Matrix(2, 2, {(1, 1) = 0, (1, 2) = -1, (2, 1) = 1, (2, 2) = 0}), Matrix(2, 2, {(1, 1) = 0, (1, 2) = I, (2, 1) = I, (2, 2) = 0}), Matrix(2, 2, {(1, 1) = I, (1, 2) = 0, (2, 1) = 0, (2, 2) = -I}), Matrix(2, 2, {(1, 1) = 0, (1, 2) = -I, (2, 1) = -I, (2, 2) = 0}), Matrix(2, 2, {(1, 1) = -I, (1, 2) = 0, (2, 1) = 0, (2, 2) = I})]

(20)

 

Generator

 

Molien*series

 The symbol letter t is being used (reserved) for the variable of the series.

 

NULL

molien:=proc(G)

local h;

 

h:=(1/nops(G)) *add(1/(Determinant(G[1]-t*A)) ,A in G);

h:=simplify(h);

taylor(h,t=0,nops(G)+1);

end proc;

proc (G) local h; h := add(1/LinearAlgebra:-Determinant(G[1]-t*A), `in`(A, G))/nops(G); h := simplify(h); taylor(h, t = 0, nops(G)+1) end proc

(21)

molien(R1)

series(1+2*t+O(t^2),t,2)

(22)

molien(R2)

series(1+3*t^2+O(t^3),t,3)

(23)

molien(R3)

series(1+t^2+2*t^3+O(t^4),t,4)

(24)

molien(C3)

series(1+t^2+2*t^3+O(t^4),t,4)

(25)

w := -1/2+(1/2)*sqrt(3)*I

-1/2+((1/2)*I)*3^(1/2)

(26)

evalc(molien(U3))

series(1+t^2+2*t^3+O(t^4),t,4)

(27)

evalc(molien(W3))

series(1+4*t^3+O(t^4),t,4)

(28)

molien(R4)

series(1+t^2+3*t^4+O(t^5),t,5)

(29)

molien(U4)

series(1+t^2+3*t^4+O(t^5),t,5)

(30)

NULL

molien(S2)

series(1+t+2*t^2+O(t^3),t,3)

(31)

molien(S3)

series(1+t+2*t^2+3*t^3+4*t^4+5*t^5+7*t^6+O(t^7),t,7)

(32)

molien(SS3)

series(1+t^2+t^3+t^4+t^5+2*t^6+O(t^7),t,7)

(33)

``

molien(D3)

series(1+t^2+t^3+t^4+t^5+2*t^6+O(t^7),t,7)

(34)

evalc(molien(M6))

series(1+t^2+t^3+t^4+t^5+2*t^6+O(t^7),t,7)

(35)

molien(D4)

series(1+t^2+2*t^4+2*t^6+3*t^8+O(t^10),t,10)

(36)

molien(Q4)

series(1+2*t^4+t^6+3*t^8+O(t^9),t,9)

(37)

 

"  action of a  2-square  matrix on a polynomial   f(x,y)"

NULL

act:=proc(A,f) local a,b,c,d;

a:=A[1][1];

b:=A[1][2];

c:=A[2][1];

d:=A[2][2];

simplify(subs([x=a*x+b*y,y=c*x+d*y],f));

end proc;

proc (A, f) local a, b, c, d; a := A[1][1]; b := A[1][2]; c := A[2][1]; d := A[2][2]; simplify(subs([x = a*x+b*y, y = c*x+d*y], f)) end proc

(38)

NULL

  Reynolds*operator

NULL

Reynolds:=proc(G,p);

simplify(1/nops(G) *add(act(A,p),A in G));

end proc;

proc (G, p) simplify(add(act(A, p), `in`(A, G))/nops(G)) end proc

(39)

 monomials

NULL

mon:=proc(x,y,n)

local K,L;

K:=[seq(x^(n-i),i=0..n)];

L:=[seq(y^j,j=0..n)];

[seq(K[r]*L[r],r=1..n+1)];

end proc;

proc (x, y, n) local K, L; K := [seq(x^(n-i), i = 0 .. n)]; L := [seq(y^j, j = 0 .. n)]; [seq(K[r]*L[r], r = 1 .. n+1)] end proc

(40)

NULL

NULL

monos:=proc(x,y,n)

[seq(mon(x,y,s)[],s=1..n)];

end proc;

proc (x, y, n) [seq(mon(x, y, s)[], s = 1 .. n)] end proc

(41)

NULL

   The*` invariants F[x,y]`^G

 

     G is a finite group of 2-square matrices. The symbol letters x , y are resrved for the variables of the polynomials.  

     The following procedure gives the invarient polynomials up to degree |G|.

 

NULL

invs:=proc(G,x,y) local M,L,V,u;M:=monos(x,y,nops(G));

V:=[seq(Reynolds(G,p),p in M)];

V := convert(`minus`(convert(V, set), {0}), list);

for u in V do print(u) end do;

end proc;

proc (G, x, y) local M, L, V, u; M := monos(x, y, nops(G)); V := [seq(Reynolds(G, p), `in`(p, M))]; V := convert(`minus`(convert(V, set), {0}), list); for u in V do print(u) end do end proc

(42)

NULL

invs(R1, x, y)

x

 

y

(43)

invs(R2, x, y)

x^2

 

y^2

 

x*y

(44)

invs(R3, x, y)

(1/2)*x^2+(1/2)*y^2

 

(1/4)*x^3-(3/4)*x*y^2

 

(1/4)*y^3-(3/4)*x^2*y

 

(3/4)*x*y^2-(1/4)*x^3

 

(3/4)*x^2*y-(1/4)*y^3

(45)

invs(C3, x, y)

-x^2*y+x*y^2

 

x^2*y-x*y^2

 

(2/3)*x^2+(2/3)*y^2-(2/3)*x*y

 

-(1/3)*x*y+(1/3)*y^2+(1/3)*x^2

 

x*y^2-(1/3)*y^3-(1/3)*x^3

 

x^2*y-(1/3)*y^3-(1/3)*x^3

(46)

``

invs(U3, x, y)

x^3

 

y^3

 

x*y

(47)

invs(W3, x, y)

x^3

 

y^3

 

x*y^2

 

x^2*y

(48)

invs(R4, x, y)

x^2*y^2

 

(1/2)*x^2+(1/2)*y^2

 

(1/2)*x^4+(1/2)*y^4

 

(1/2)*x*y^3-(1/2)*x^3*y

 

(1/2)*x^3*y-(1/2)*x*y^3

(49)

invs(U4, x, y)

x^4

 

y^4

 

x*y

 

x^2*y^2

(50)

invs(V4, x, y)

x^2

 

x^4

 

y^2

 

y^4

 

x^2*y^2

(51)

invs(S2, x, y)

x*y

 

(1/2)*x+(1/2)*y

 

(1/2)*x^2+(1/2)*y^2

(52)

invs(SS3, x, y)

-x^2*y-x*y^2

 

(1/2)*x^2*y+(1/2)*x*y^2

 

(2/3)*x^2+(2/3)*x*y+(2/3)*y^2

 

-(1/3)*x*y-(1/3)*x^2-(1/3)*y^2

 

-(1/3)*x^3*y^2-(1/6)*x^4*y-(1/3)*x^2*y^3-(1/6)*x*y^4

 

-(5/3)*x^4*y-(10/3)*x^3*y^2-(10/3)*x^2*y^3-(5/3)*x*y^4

 

(5/6)*x^4*y+(5/3)*x^3*y^2+(5/3)*x^2*y^3+(5/6)*x*y^4

 

(2/3)*x^4+(4/3)*x^3*y+2*x^2*y^2+(4/3)*x*y^3+(2/3)*y^4

 

x^2*y^2+(1/3)*x^4+(2/3)*x^3*y+(2/3)*x*y^3+(1/3)*y^4

 

-(2/3)*x^3*y-(1/3)*x^4-x^2*y^2-(2/3)*x*y^3-(1/3)*y^4

 

(2/3)*x^6+2*x^5*y+5*x^4*y^2+(20/3)*x^3*y^3+5*x^2*y^4+2*x*y^5+(2/3)*y^6

 

-(1/3)*x^3*y^3-(1/3)*x^6-x^5*y-x^4*y^2-x^2*y^4-x*y^5-(1/3)*y^6

 

(3/2)*x^4*y^2+(1/3)*x^6+x^5*y+(4/3)*x^3*y^3+(3/2)*x^2*y^4+x*y^5+(1/3)*y^6

 

-x^5*y-(1/3)*x^6-(5/2)*x^4*y^2-(10/3)*x^3*y^3-(5/2)*x^2*y^4-x*y^5-(1/3)*y^6

(53)

``

invs(D3, x, y)

(1/2)*x^2+(1/2)*y^2

 

(1/4)*x^3-(3/4)*x*y^2

 

(3/4)*x*y^2-(1/4)*x^3

 

(3/8)*x^4+(3/4)*x^2*y^2+(3/8)*y^4

 

(5/16)*x^5-(5/8)*x^3*y^2-(15/16)*x*y^4

 

(9/16)*x*y^4-(3/16)*x^5+(3/8)*x^3*y^2

 

(1/4)*x^2*y^2+(1/8)*x^4+(1/8)*y^4

 

(1/8)*x^3*y^2+(3/16)*x*y^4-(1/16)*x^5

 

(11/32)*x^6+(15/32)*x^4*y^2+(45/32)*x^2*y^4+(9/32)*y^6

 

(11/32)*y^6+(9/32)*x^6+(45/32)*x^4*y^2+(15/32)*x^2*y^4

 

(21/32)*x^2*y^4-(9/32)*x^4*y^2+(1/32)*y^6+(3/32)*x^6

 

(21/32)*x^4*y^2-(9/32)*x^2*y^4+(1/32)*x^6+(3/32)*y^6

(54)

invs(M6, x, y)

x*y

 

x^2*y^2

 

x^3*y^3

 

(1/2)*x^3+(1/2)*y^3

 

(1/2)*x^6+(1/2)*y^6

 

(1/2)*x^4*y+(1/2)*x*y^4

(55)

invs(D4, x, y)

x^2*y^2

 

x^4*y^4

 

(1/2)*x^2+(1/2)*y^2

 

(1/2)*x^4+(1/2)*y^4

 

(1/2)*x^6+(1/2)*y^6

 

(1/2)*x^8+(1/2)*y^8

 

(1/2)*x^4*y^2+(1/2)*x^2*y^4

 

(1/2)*x^6*y^2+(1/2)*x^2*y^6

(56)

``

invs(Q4, x, y)

x^2*y^2

 

x^4*y^4

 

(1/2)*x^4+(1/2)*y^4

 

(1/2)*x^8+(1/2)*y^8

 

(1/2)*x*y^5-(1/2)*x^5*y

 

(1/2)*x^5*y-(1/2)*x*y^5

 

(1/2)*x^6*y^2+(1/2)*x^2*y^6

(57)

 

 Molien's seriese indicate the number of linearly independent generators at each degree. By eliminating the algebraicaly dependent generators from the list of invariants

 given by the procedure  invs  we get the following invariant rings.

 

1)  F[x, y]^R1 = F[x, y] 

 

2) F[x, y]^R2 = F[x^2, x*y, y^2]

 

3)  F[x, y]^S2 = F[x+y, x*y]

 

4)) F[x, y]^R3 = F[x^2+y^2, x^3-3*x*y^2, 3*x*y^2-y^3]

 

5) F[x, y]^C3 = F[x^2-x*y+y^2, x^3-3*x^2*y+y^3, x^3-3*x*y^2+y^3]

 

6) F[x, y]^U3 = F[x^3, x*y, y^3]

 

7) F[x, y]^W3 = F[x^3, x^2*y, x*y^2, y^3]

 

8) F[x, y]^R4 = F[x^2+y^2, x^2*y^2, x^3*y-x*y^3]

 

9) F[x, y]^U4 = F[x*y, x^4, y^4]

 

10) F[x, y]^V4 = F[x^2, y^2]

 

11) F[x, y]^D3 = F[x^2+y^2, x^3-x*y^2]

 

12) F[x, y]^M6 = F[x*y, x^3+y^3]

 

"13)  F[x,y]^(SS3)=F[x^(2)+x*y+y^(2),x(*)^(2)*y+x*y^(2) ]"

 

14) F[x, y]^D4 = F[x^2+y^2, x^2*y^2]

 

15) "F[x,y]^(Q4)=F[x^(4)+y^(4),x(*)^(2)y^(2),x^(5)*y-x*y^(5)]"

 

 

To check if a given polynomial is invariant and to express an invariant polynomial in terms of the generators

 

 Method 1

 When Reynolds (f) = f

NULL

``

invpol1:=proc(G,f);

if evalb(Reynolds(G,f)=f) then print(invariant); else print(not invariant); fi;

end proc;

proc (G, f) if evalb(Reynolds(G, f) = f) then print(invariant) else print(not invariant) end if end proc

(58)

NULL

Examples

 

invpol1(S2, x^5+y^5)

invariant

(59)

``

f := x^6*y^3-3*x^5*y^4+3*x^4*y^5-x^3*y^6

x^6*y^3-3*x^5*y^4+3*x^4*y^5-x^3*y^6

(60)

invpol1(C3, f)

invariant

(61)

NULL

 

" method 2"

By*using*Groebner*basis

 

 G=reference for group

 V=list of variables [x, y]

 T=list of generators

 N=list of names to represent generators [α, β, γ,...]

 f  is a polynomial

 

 If the polynomial obtained consists only α, β, γ,... then f is invariant , otherwise it is not invariant.

 The polynomial obtained is the expression of f in terms of the generators  α, β, γ,...

 

 

invpol2:=proc(G,V,T,N,f)

local M,B,VV;

M:=[seq(T[r]-N[r],r=1..nops(T))];VV:=[V[],N[]];

B:=Basis(M,tdeg(VV[]));

NormalForm(f,B,tdeg(VV[]));

end proc;

proc (G, V, T, N, f) local M, B, VV; M := [seq(T[r]-N[r], r = 1 .. nops(T))]; VV := [V[], N[]]; B := Groebner:-Basis(M, tdeg(VV[])); Groebner:-NormalForm(f, B, tdeg(VV[])) end proc

(62)

NULL

  Examples

 

NULL

invpol2(R2, [x, y], [x^2, x*y, y^2], [alpha, beta, gamma], (x+y)^4)

gamma^2+4*beta*gamma+6*alpha*gamma+4*alpha*beta+alpha^2

(63)

Relations

 

 G= reference for the group

 V=list of variables [x, y]

 T=list of generators

 N=list of names to represent generators  [α, β, γ,...]

The relations are given by the polynomials in α, β, γ,..obtained by the following procedure.

 

``

relations:=proc(G,V,T,N)

local M,B,VV,f;

M:=[seq(T[r]-N[r],r=1..nops(T))];VV:=[V[],N[]];

B:=Basis(M,tdeg(VV[]));

f:=q->is(indets(q) subset (convert(N,set)));select(f,B);

end proc;

proc (G, V, T, N) local M, B, VV, f; M := [seq(T[r]-N[r], r = 1 .. nops(T))]; VV := [V[], N[]]; B := Groebner:-Basis(M, tdeg(VV[])); f := proc (q) options operator, arrow; is(`subset`(indets(q), convert(N, set))) end proc; select(f, B) end proc

(64)

NULL

 

  Examples

 

relations(R1, [x, y], [x, y], [alpha, beta])

[]

(65)

``

relations(R2, [x, y], [x^2, x*y, y^2], [alpha, beta, gamma])

[-alpha*gamma+beta^2]

(66)

    

relations(S2, [x, y], [x+y, x*y], [alpha, beta])

[]

(67)

relations(W3, [x, y], [x^3, x^2*y, x*y^2, y^3], [alpha, beta, gamma, delta])

[delta*beta-gamma^2, delta*alpha-beta*gamma, -alpha*gamma+beta^2]

(68)

relations(R4, [x, y], [x^2+y^2, x^2*y^2, x^3*y-x*y^3], [alpha, beta, gamma])

[-4*beta^2+beta*alpha^2-gamma^2]

(69)

relations(V4, [x, y], [x^2, y^2], [alpha, beta])

[]

(70)

NULL

relations(D4, [x, y], [x^2+y^2, x^2*y^2], [alpha, beta])

[]

(71)

relations(Q4, [x, y], [x^4+y^4, x^2*y^2, x^5*y-x*y^5], [alpha, beta, gamma])

[-4*beta^3+beta*alpha^2-gamma^2]

(72)

NULL

NULL

 Thus we have the following invariant rings

 

"  F[x,y]^(R1)=F[alpha,beta:  deg alpha=degbeta=1]"

  "F[x,y]^(R2)=F[alpha, beta, gamma  :  degalpha=degbeta=deggamma=2 ,  alpha*gamma=beta^(2)]"

  "F[x,y]^(S2)=F[alpha, beta :degalpha=degbeta=2]"

"F[x,y]^(W3)=F[alpha, beta,gamma ,delta : degalpha=degbeta=deggamma=degdelta=3,  delta beta=gamma^2,delta alpha=beta gamma ,alpha gamma=beta^2]"

  "F[x,y]^(R4)=F[alpha,beta,gamma : degalpha=2, degbeta=deggamma=4,  4 beta^2=beta alpha^2-gamma^2 ]" 

 " F[x,y]^(V4)=F[alpha,beta :  degalpha=degbeta=2]"

 " F[x,y]^(D4)=F[alpha,beta : degalpha=2,  degbeta=4]"

 " F[x,y]^(Q4)=F[alpha,beta,gamma  :  degalpha=degbeta=4, deggamma=6,  4 beta^3=beta alpha^2-gamma^2]"

 

 The other invariant rings can be found in the same way.

 

NULL

  

Remark

  These procedures can be extended to inclue the case of three variables  x, y, z.

  One may also try to automate the finding of the algebraically independent generators.

 

 e-mail: kahtanalzubaidy@yahoo.com

 

 Department of Mathematics, Faculty of Science, University of Benghazi, Libya.