[Next] [Prev] [_____] [Left] [Up] [Index] [Root]
Group Actions

Group Actions

Permutation and matrix groups have a natural action on polynomial rings.

Subsections

Permutation Group Actions

If R is a polynomial ring in n indeterminates x_1, ..., x_n, over any coefficient ring, Sym(n) acts on R by permuting the indices of the indeterminates. Thus, the polynomial f(x_1, ..., x_n) is mapped into the polynomial f(x_(g(1)), ..., x_(g(n))).

f ^ g : RngMPolElt, GrpPermElt -> RngMPolElt
Given a polynomial f belonging to a polynomial ring having n indeterminates, and a permutation g belonging to a subgroup of Sym({ 1, ..., n }), return the image of f under g.
f ^ G : RngMPolElt, GrpPerm -> { RngMPolElt }
Given a polynomial f belonging to a polynomial ring having n indeterminates, and a permutation group G contained in Sym({ 1, ..., n }), return the orbit of f under G.

Matrix Group Actions

If R is a polynomial ring in n indeterminates x_1, ..., x_n, over the ring S, then GL(n, S) acts on R as follows: Let x denote the vector (x_1, ..., x_n). Then the image g of a polynomial f of R under the action of a matrix a of GL(n, S) is defined by g(( x)) = f(( x) * a).

f ^ a : RngMPolElt, GrpMatElt -> RngMPolElt
Given a polynomial f belonging to a polynomial ring having n indeterminates and coefficient ring S, and a matrix a belonging to a subgroup of GL(n, S), return the image of f under a.
f ^ G : RngMPolElt, GrpMat -> { RngMPolElt }
Given a polynomial f belonging to a polynomial ring having n indeterminates and coefficient ring S, and a matrix a belonging to a subgroup of GL(n, S), return the orbit of f under G.
MolienSeries(G) : GrpMat -> FldFunElt
The Molien series of G, returned as an element of the rational function field Z(z).
ReynoldsOperator(f, G) : RngMPolElt, GrpMat -> RngMPolElt
The application of the Reynolds operator of G to f.

Example RngMPol_GroupActions (H25E25)

We act on the polynomial ring in two indeterminates over the field K = Q(sqrt 2), by a cyclic subgroup of GL(2, K).

> R := QuadraticField(2);
> Aq := [ x / R.1 : x in [1, 1, -1, 1]];
> G := MatrixGroup<2, R | Aq>;
> P<x, y> := PolynomialRing(R, 2);
> f := x^2 + x * y + y^2;
> g := f^G.1;
> print g;
    1/2*x^2 + 3/2*y^2
> print f^G;
{
   1/2*x^2 + 3/2*y^2,
   x^2 - x*y + y^2,
   x^2 + x*y + y^2,
   3/2*x^2 + 1/2*y^2
}
> M := MolienSeries(G);
> F<z> := Parent(M);
> print M;
(z^8 + 1)/(z^10 - z^8 - z^2 + 1)
> P<z> := PowerSeriesRing(IntegerRing());
> print (z^8 + 1)/(z^10 - z^8 - z^2 + 1);
1 + z^2 + z^4 + z^6 + 3*z^8 + 3*z^10 + 3*z^12 + 3*z^14 + 5*z^16 + 5*z^18 + 
    O(z^20)
> print ReynoldsOperator(x^2, G);   
1/2*x^2 + 1/2*y^2
> print ReynoldsOperator(x^8, G);
9/32*x^8 + 7/8*x^6*y^2 + 35/16*x^4*y^4 + 7/8*x^2*y^6 + 9/32*y^8
[Next] [Prev] [_____] [Left] [Up] [Index] [Root]