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.