Subject: Computing rings of invariants
From: rusin
Date: Nov 24 2001 14:00 (timestamp)
To: rusin (once again talking to himself)
We seek a presentation of the ring of invariants in
A = F[ x1, x2, x3, x4, y1, y2, y3, y4 ] under the diagonal
action of Sym(4).
A contains an invariant subring B = A^( Sym(4) x Sym(4) )
= F[ s1, s2, s3, s4, t1, t2, t3, t4 ] where the s_i and t_i
are the elementary symmetric functions of the x_i and y_i
respectively. A is the free module over this ring B,
generated by the 24^2 elements
x1^i1 x2^i2 x3^i3 x4^i4 y1^j1 y2^j2 y3^j3 y4^j4
where the exponents are arbitrary except i_k < k and j_k < k.
The method of finding invariants is easy: they are the same as the image of
the averaging map 1/24 sum( sigma(f) ) where f ranges over a basis of
A over F, e.g. the monomials above.
We expect a rank-24 module to be invariant, and indeed here are 24
invariant generators: take the symmetric averages of these monomials:
1 (1 such)
x1^m y1^n where n,m = 1, 2, 3 (9 such)
x1^m x2^n y1^m y2^n where 1 <= m <= n <=3 except m=n=3 (5 such)
x1^m x2^n y1^k y2^l for (m,n,k,l)=(1,1,2,2),(1,2,1,3),(1,2,2,3),(1,3,2,3)
or the same but with the roles of x and y reversed (8 such)
x1^1 x2^2 x3^3 y1^1 y2^2 y3^3 (1 such)
From this we find the Hilbert series to be (1+t^2+2t^3+4t^4+2t^5+4t^6+...+t^12)
(it's symmetric) over ( (t-1)(t^2-1)(t^3-1)(t^4-1) )^4. Since the
numerator has no cyclotomic factor, there is no larger subring than B
over which the invariant ring is a free module. (I think.)
==============================================================================
#Here are some helpful maple routines.
N:=4:
with(combinat): P:=permute(N):
#Take a pair of lists of subscripts and make a monomial in x's and y's
mono:=proc(a,b)
local i, T; T := 1;
for i to nops(a) do T := T*x.(a[i]):od:
for i to nops(b) do T := T*y.(b[i]):od:
T:end:
#compare polynomials
deg2:=proc(a) local xx,T,U:
xx:=subs({seq(x.i = x.i*T, i = 1 .. 4), seq(y.i = y.i*U, i = 1 .. 4)},a):
[degree(xx,T),degree(xx,U)]:end:
deg1:=proc(a) local x: x:=deg2(a): x[1]+x[2]: end:
#Or use degree(a,x1) for below...
#
as:=proc(a,b) local aa, bb:
aa:=deg2(a):bb:=deg2(b):
if aa[1]+aa[2] x_a x_b x_c ... ; repeats OK
#These monomials span poly-ring over subring of symmetric polys.
U:=[[]]: for k to N-1 do
V:=[seq(seq([op(U[i]),seq(k,l=1..j)],i=1..nops(U)),j=1..k),op(U)];
U:=V: od:
#Initial set of symmetric polynomials:
Z:={}:for u in V do for v in V do w:=symalt(mono(u,v)):Z:={op(Z),w}:od:od:
Z2:=sort([op(Z)],as):
#Want 24 generators, got 340...
#See which of these contribute something possibly new:
Z3:=[1]:red:={}: #red = set of reductions modulo the ideals subx, suby
for i from 2 to nops(Z2) do xx:=simplify(Z2[i],{op(subx),op(suby)}):
if not(xx=0) then xx:=xx/content(xx) :
if member(xx,red) or member(-xx,red) then {} else
Z3:=[op(Z3),Z2[i]]:red:={op(red),xx}:fi:fi:od:
lprint(seq(deg2(Z3[i]),i=1..nops(Z3)));
### for N=3 ###
#Very quickly, the 30 elements of Z are sorted and reduced to 6 in Z3:
#They are the symmetrized versions of
ANS3:=[1, x1*y1, x1*y1^2, x1^2*y1, x1^2*y1^2, x1^2*x2*y1^2*y2]
### for N=4 ###
#reductions to make Z3 take a couple of minutes.
#Find 28 elements, expected 24.
#check those of a given bidegree: reduce mod subx union suby
# and spot linear combos. After the fact we find that there should be
# only two generators in each bidregree [d,d], d=2, 3, 4.
#3 x^2y^2 sum to 0
#4 x^3y^3 have 2 lincombs
#3 x^4y^4 have 1
#Example:
simplify([Z3[21],Z3[22],Z3[23]], {op(subx),op(suby)});
[seq(coeff(coeff(%[i],y4^3),y3,1), i=1..3)];
simplify([Z3[21]-Z3[22]-Z3[23]], {op(subx),op(suby)}); #get 0.
#simplify([Z3[6],Z3[7],Z3[8]], {op(subx),op(suby)});
#simplify([Z3[13],Z3[14],Z3[15],Z3[16]], {op(subx),op(suby)});
#In my example we end up with this ordering:
Z4:=[seq(Z3[i],i=1..7), seq(Z3[i],i=9..14), seq(Z3[i],i=17..22), seq(Z3[i],i=24..28)]:
Finally! 24 invariants.
#Hilbert series:
add(X^deg1(Z4[i]),i=1..nops(Z4));
ANS:=[1, x1*y1, x1*y1^2, x1^2*y1, x1*y1^3, x1^2*y1^2, x1*x2*y1*y2, x1^3*y1,
x1^2*y1^3, x1^3*y1^2, x1*x2*y1^2*y2^2, x1^3*y1^3, x1*x2^2*y1^2*y2,
x1^2*x2^2*y1*y2, x1^2*x2*y1^3*y2, x1^3*x2*y2*y1^2, x1*x2^2*y1^3*y2^2,
x1^2*x2^2*y1^2*y2^2, x1^3*x2*y1^3*y2, x1^3*x2^2*y1^2*y2, x1^3*x2*y1^3*y2^2,
x1^3*x2^2*y1^3*y2, x1^3*x2^2*y1^3*y2^2, x1^3*x2^2*x3*y1^3*y2^2*y3]:
seq(symalt(ANS[i])-Z4[i],i=1..24); #checks!
#Except for the last, all involve only x1, x2, y1, y2 to these exponents:
1 [0, 0, 0, 0]
2 [1, 0, 1, 0]
3 [1, 0, 2, 0]
4 [2, 0, 1, 0]
5 [1, 0, 3, 0]
6 [2, 0, 2, 0]
7 [1, 1, 1, 1]
8 [3, 0, 1, 0]
9 [2, 0, 3, 0]
10 [3, 0, 2, 0]
11 [1, 1, 2, 2]
12 [3, 0, 3, 0]
13 [1, 2, 2, 1]
14 [2, 2, 1, 1]
15 [2, 1, 3, 1]
16 [3, 1, 2, 1]
17 [1, 2, 3, 2]
18 [2, 2, 2, 2]
19 [3, 1, 3, 1]
20 [3, 2, 2, 1]
21 [3, 1, 3, 2]
22 [3, 2, 3, 1]
23 [3, 2, 3, 2]