|
D.7.3.5 InvariantRing
Procedure from library rinvar.lib (see rinvar_lib).
- Usage:
- InvariantRing(G, Gact [, opt]); ideal G, Gact; int opt
- Purpose:
- compute generators of the invariant ring of G w.r.t. the action 'Gact'
- Assume:
- G is a finite group and 'Gact' is a linear action.
- Return:
- ring R; this ring comes with the ideals 'invars' and 'groupid' and
with the poly 'newA':
- 'invars' contains the algebra generators of the invariant ring
- 'groupid' is the ideal of G in the new ring
- 'newA' is the new representation of the primitive root of the
minimal polynomial of the ring which was active when calling the
procedure (if the minpoly did not change, 'newA' is set to 'a').
- Note:
- the minimal polynomial of the output ring depends on some random
choices
Example:
| LIB "rinvar.lib";
ring B = 0, (s(1..2), t(1..2)), dp;
ideal G = -s(1)+s(2)^3, s(1)^4-1;
ideal action = s(1)*t(1), s(2)*t(2);
def R = InvariantRing(std(G), action);
==>
==> // 'InvariantRing' created a new ring.
==> // To see the ring, type (if the name 'R' was assigned to the return valu\
e):
==> show(R);
==> // To access the generators of the invariant ring type
==> setring R; invars;
==> // Note that the input group G is stored in R as the ideal 'groupid'; to
==> // see it, type
==> groupid;
==> // Note that 'InvariantRing' might change the minimal polynomial
==> // The representation of the algebraic number is given by 'newA'
==>
setring R;
invars;
==> invars[1]=t(1)^4
==> invars[2]=t(1)^3*t(2)^3
==> invars[3]=t(1)^2*t(2)^6
==> invars[4]=t(1)*t(2)^9
==> invars[5]=t(2)^12
|
|