> restart; > with(LinearAlgebra): > with(Involutive): > > pol:=proc(a,n) > t^n+add((-1)^i*a[i]*t^(n-i),i=1..n); > end proc: > > REL:=proc(a,n,b,m,c) > local A,B,C; > A:=CompanionMatrix(pol(a,n),t); > B:=CompanionMatrix(pol(b,m),t); > C:=Matrix(convert(Matrix(n,n,(i,j)->A[i,j]*B),listlist)); > map(i->coeff(CharacteristicPolynomial(C,t)-pol(c,n*m),t,n*m-i),[$1..n* > m]); > end proc: > > > # Relations > L:=REL(a,2,b,3,c); L := [-a[1] b[1] + c[1], 2 2 -2 a[2] b[2] + b[1] a[2] + a[1] b[2] - c[2], 3 3 a[1] a[2] b[3] - b[1] a[2] a[1] b[2] - a[1] b[3] + c[3], 2 2 2 2 -2 a[2] b[3] b[1] + a[2] b[1] a[1] b[3] + a[2] b[2] 2 3 2 - c[4], -a[2] b[3] a[1] b[2] + c[5], a[2] b[3] - c[6]] > L1:=subs([a[2]=1,b[3]=1],L)[1..-2]; 2 2 L1 := [-a[1] b[1] + c[1], -2 b[2] + b[1] + a[1] b[2] - c[2], 3 3 a[1] - b[1] a[1] b[2] - a[1] + c[3], 2 2 -2 b[1] + b[1] a[1] + b[2] - c[4], -a[1] b[2] + c[5]] > > > # Degrees of field extensions (determinant 1) > indets(L1); {a[1], b[1], b[2], c[1], c[2], c[3], c[4], c[5]} > vv:=[a[1], b[1], b[2]]; vv := [a[1], b[1], b[2]] > with(combinat): Warning, the protected name Chi has been redefined and unprotected > c3a5:=choose(5,3); c3a5 := [[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 3, 4], [1, 3, 5], [1, 4, 5], [2, 3, 4], [2, 3, 5], [2, 4, 5], [3, 4, 5]] > nops(c3a5); 10 > CC:=proc(L) > map(i->c[i],L); > end proc: > C3a5:=map(CC,c3a5); C3a5 := [[c[1], c[2], c[3]], [c[1], c[2], c[4]], [c[1], c[2], c[5]], [c[1], c[3], c[4]], [c[1], c[3], c[5]], [c[1], c[4], c[5]], [c[2], c[3], c[4]], [c[2], c[3], c[5]], [c[2], c[4], c[5]], [c[3], c[4], c[5]]] > Comp:=proc(L) > remove(has,map(i->c[i],[$1..5]),L); > end proc: > Comp(C3a5[1]); [c[4], c[5]] > Gra:=[]: > for s from 1 to nops(C3a5) do > J:=InvolutiveBasisFast(subs(zip((i,j)->i=j,C3a5[s],[1,2,20]),map(k->L1 > [k],c3a5[s])),vv): > AssertInvBasis(J,vv): > print(C3a5[s],subs(t=1,PolHilbertSeries(t))); > Gra:=[op(Gra),subs(t=1,PolHilbertSeries(t))]: > end do: [c[1], c[2], c[3]], 7 [c[1], c[2], c[4]], 9 [c[1], c[2], c[5]], 3 [c[1], c[3], c[4]], 7 [c[1], c[3], c[5]], 4 [c[1], c[4], c[5]], 3 [c[2], c[3], c[4]], 18 [c[2], c[3], c[5]], 7 [c[2], c[4], c[5]], 9 [c[3], c[4], c[5]], 7 > Gra; [7, 9, 3, 7, 4, 3, 18, 7, 9, 7] # These are the degrees [K(vv):K(C3a5[s])]. Since they are relatively # prime, the c[i] generate K(vv) as a field. > > > > # Degrees of field extensions (general determinant) > L3 := subs(a[2]=1, L); 2 2 L3 := [-a[1] b[1] + c[1], -2 b[2] + b[1] + a[1] b[2] - c[2], 3 3 a[1] b[3] - b[1] a[1] b[2] - a[1] b[3] + c[3], 2 2 -2 b[3] b[1] + b[1] a[1] b[3] + b[2] - c[4], 2 -b[3] a[1] b[2] + c[5], b[3] - c[6]] > indets(L3); {a[1], b[1], b[2], b[3], c[1], c[2], c[3], c[4], c[5], c[6]} > vv:=[a[1], b[1], b[2], b[3]]; vv := [a[1], b[1], b[2], b[3]] > with(combinat): > c4a6:=choose(6,4); c4a6 := [[1, 2, 3, 4], [1, 2, 3, 5], [1, 2, 3, 6], [1, 2, 4, 5], [1, 2, 4, 6], [1, 2, 5, 6], [1, 3, 4, 5], [1, 3, 4, 6], [1, 3, 5, 6], [1, 4, 5, 6], [2, 3, 4, 5], [2, 3, 4, 6], [2, 3, 5, 6], [2, 4, 5, 6], [3, 4, 5, 6]] > CC:=proc(L) > map(i->c[i],L); > end proc: > C4a6:=map(CC,c4a6); C4a6 := [[c[1], c[2], c[3], c[4]], [c[1], c[2], c[3], c[5]], [c[1], c[2], c[3], c[6]], [c[1], c[2], c[4], c[5]], [c[1], c[2], c[4], c[6]], [c[1], c[2], c[5], c[6]], [c[1], c[3], c[4], c[5]], [c[1], c[3], c[4], c[6]], [c[1], c[3], c[5], c[6]], [c[1], c[4], c[5], c[6]], [c[2], c[3], c[4], c[5]], [c[2], c[3], c[4], c[6]], [c[2], c[3], c[5], c[6]], [c[2], c[4], c[5], c[6]], [c[3], c[4], c[5], c[6]]] > Comp:=proc(L) > remove(has,map(i->c[i],[$1..6]),L); > end proc: > Comp(C4a6[1]); [c[5], c[6]] > Gra:=[]: > for s from 1 to nops(C4a6) do > J:=InvolutiveBasisFast(subs(zip((i,j)->i=j,C4a6[s],[1,-3,7,20]),map(k- > >L3[k],c4a6[s])),vv): > AssertInvBasis(J,vv): > print(C4a6[s],subs(t=1,PolHilbertSeries(t))); > Gra:=[op(Gra),subs(t=1,PolHilbertSeries(t))]: > end do: [c[1], c[2], c[3], c[4]], 10 [c[1], c[2], c[3], c[5]], 10 [c[1], c[2], c[3], c[6]], 14 [c[1], c[2], c[4], c[5]], 12 [c[1], c[2], c[4], c[6]], 18 [c[1], c[2], c[5], c[6]], 6 [c[1], c[3], c[4], c[5]], 10 [c[1], c[3], c[4], c[6]], 14 [c[1], c[3], c[5], c[6]], 8 [c[1], c[4], c[5], c[6]], 6 [c[2], c[3], c[4], c[5]], 24 [c[2], c[3], c[4], c[6]], 36 [c[2], c[3], c[5], c[6]], 14 [c[2], c[4], c[5], c[6]], 18 [c[3], c[4], c[5], c[6]], 14 > Gra; [10, 10, 14, 12, 18, 6, 10, 14, 8, 6, 24, 36, 14, 18, 14] > > > > >