# Singular

#### D.7.3.4 ImageGroup

Procedure from library rinvar.lib (see rinvar_lib).

Usage:
ImageGroup(G, action); ideal G, action;

Purpose:
compute the ideal of the image of G in GL(m,K) induced by the linear action 'action', where G is an algebraic group and 'action' defines an action of G on K^m (size(action) = m).

Return:
ring, a polynomial ring over the same ground field as the basering, containing the ideals 'groupid' and 'actionid'.
- 'groupid' is the ideal of the image of G (order <= order of G) - 'actionid' defines the linear action of 'groupid' on K^m.

Note:
'action' and 'actionid' have the same orbits
all variables which give only rise to 0's in the m x m matrices of G have been omitted.

Assume:
basering K[s(1..r),t(1..m)] has r + m variables, G is the ideal of an algebraic group and F is an action of G on K^m. G contains only the variables s(1)...s(r). The action 'action' is given by polynomials f_1,...,f_m in basering, s.t. on the ring level we have K[t_1,...,t_m] --> K[s_1,...,s_r,t_1,...,t_m]/G
t_i --> f_i(s_1,...,s_r,t_1,...,t_m)

Example:
 LIB "rinvar.lib"; ring B = 0,(s(1..2), t(1..2)),dp; ideal G = s(1)^3-1, s(2)^10-1; ideal action = s(1)*s(2)^8*t(1), s(1)*s(2)^7*t(2); def R = ImageGroup(G, action); ==> ==> // 'ImageGroup' 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 ideal of the image of the input group and to access the \ new ==> // action of the group, type ==> setring R; groupid; actionid; ==> setring R; groupid; ==> groupid[1]=-s(1)+s(2)^4 ==> groupid[2]=s(1)^8-s(2)^2 ==> groupid[3]=s(1)^7*s(2)^2-1 actionid; ==> actionid[1]=s(1)*t(1) ==> actionid[2]=s(2)*t(2)