This function checks if a polynomial is invariant under a certain group action.
The following example defines the permutation action of a symmetric group on a polynomial ring with three variables.
i1 : R = QQ[x_1..x_3] o1 = R o1 : PolynomialRing |
i2 : L = apply(2, i -> permutationMatrix(3, [i + 1, i + 2] ) ) o2 = {| 0 1 0 |, | 1 0 0 |} | 1 0 0 | | 0 0 1 | | 0 0 1 | | 0 1 0 | o2 : List |
i3 : S3 = finiteAction(L, R) o3 = R <- {| 0 1 0 |, | 1 0 0 |} | 1 0 0 | | 0 0 1 | | 0 0 1 | | 0 1 0 | o3 : FiniteGroupAction |
i4 : isInvariant(1 + x_1^2 + x_2^2 + x_3^2, S3) o4 = true |
i5 : isInvariant(x_1*x_2*x_3^2, S3) o5 = false |
Here is an example with a two-dimensional torus acting on polynomial ring in four variables:
i6 : R = QQ[x_1..x_4] o6 = R o6 : PolynomialRing |
i7 : W = matrix{{0,1,-1,1}, {1,0,-1,-1}} o7 = | 0 1 -1 1 | | 1 0 -1 -1 | 2 4 o7 : Matrix ZZ <--- ZZ |
i8 : T = diagonalAction(W, R) * 2 o8 = R <- (QQ ) via | 0 1 -1 1 | | 1 0 -1 -1 | o8 : DiagonalAction |
i9 : isInvariant(x_1*x_2*x_3, T) o9 = true |
i10 : isInvariant(x_1*x_2*x_4, T) o10 = false |
Here is another example of a product of two cyclic groups of order 3 acting on a three-dimensional vector space:
i11 : R = QQ[x_1..x_3] o11 = R o11 : PolynomialRing |
i12 : W = matrix{{1,0,1}, {0,1,1}} o12 = | 1 0 1 | | 0 1 1 | 2 3 o12 : Matrix ZZ <--- ZZ |
i13 : A = diagonalAction(W, {3,3}, R) o13 = R <- ZZ/3 x ZZ/3 via | 1 0 1 | | 0 1 1 | o13 : DiagonalAction |
i14 : isInvariant(x_1*x_2*x_3, A) o14 = false |
i15 : isInvariant((x_1*x_2*x_3)^3, A) o15 = true |
Here is an example with a general linear group acting by conjugation on a space of matrices (determinant and trace are invariants).
i16 : S = QQ[a,b,c,d,t] o16 = S o16 : PolynomialRing |
i17 : I = ideal((det genericMatrix(S,2,2))*t-1) o17 = ideal(- b*c*t + a*d*t - 1) o17 : Ideal of S |
i18 : R = QQ[x_(1,1)..x_(2,2)] o18 = R o18 : PolynomialRing |
i19 : Q = (S/I)(monoid R); |
i20 : G = transpose genericMatrix(S/I,2,2) o20 = {-1} | a b | {-1} | c d | S 2 S 2 o20 : Matrix (-------------------) <--- (-------------------) - b*c*t + a*d*t - 1 - b*c*t + a*d*t - 1 |
i21 : X = transpose genericMatrix(Q,x_(1,1),2,2) o21 = {-1, 0} | x_(1,1) x_(1,2) | {-1, 0} | x_(2,1) x_(2,2) | 2 2 o21 : Matrix Q <--- Q |
i22 : N = reshape(Q^1,Q^4,transpose(inverse(G)*X*G)); 1 4 o22 : Matrix Q <--- Q |
i23 : phi = map(S,Q); o23 : RingMap S <--- Q |
i24 : M = phi last coefficients N; 4 4 o24 : Matrix S <--- S |
i25 : L = linearlyReductiveAction(I, M, R) o25 = R <- S/ideal(- b*c*t + a*d*t - 1) via | adt bdt -act -adt+1 | | cdt d2t -c2t -cdt | | -abt -b2t a2t abt | | -adt+1 -bdt act adt | o25 : LinearlyReductiveAction |
i26 : isInvariant(det genericMatrix(R,2,2),L) o26 = true |
i27 : isInvariant(trace genericMatrix(R,2,2),L) o27 = true |
The object isInvariant is a method function.