# Singular

#### D.7.3.7 LinearizeAction

Procedure from library `rinvar.lib` (see rinvar_lib).

Usage:
LinearizeAction(G,action,r); ideal G, action; int r

Purpose:
linearize the group action 'action' and find an equivariant embedding of K^m where m = size(action).

Assume:
G contains only variables var(1..r) (r = nrs)
basering = K[s(1..r),t(1..m)], K = Q or K = Q(a) and minpoly != 0.

Return:
polynomial ring containing the ideals 'actionid', 'embedid', 'groupid' - 'actionid' is the ideal defining the linearized action of G - 'embedid' is a parameterization of an equivariant embedding (closed) - 'groupid' is the ideal of G in the new ring

Note:
set printlevel > 0 to see a trace

Example:
 ```LIB "rinvar.lib"; ring B = 0,(s(1..5), t(1..3)),dp; ideal G = s(3)-s(4), s(2)-s(5), s(4)*s(5), s(1)^2*s(4)+s(1)^2*s(5)-1, s(1)^2*s(5)^2-s(5), s(4)^4-s(5)^4+s(1)^2, s(1)^4+s(4)^3-s(5)^3, s(5)^5-s(1)^2*s(5); ideal action = -s(4)*t(1)+s(5)*t(1), -s(4)^2*t(2)+2*s(4)^2*t(3)^2+s(5)^2*t(2), s(4)*t(3)+s(5)*t(3); LinearActionQ(action, 5); ==> 0 def R = LinearizeAction(G, action, 5); ==> ==> // 'LinearizeAction' 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 new action and the equivariant embedding, type ==> setring R; actionid; embedid; groupid ==> setring R; R; ==> // coefficients: QQ ==> // number of vars : 9 ==> // block 1 : ordering dp ==> // : names s(1) s(2) s(3) s(4) s(5) t(1) t(2) t(3) t(\ 4) ==> // block 2 : ordering C actionid; ==> actionid[1]=-s(4)*t(1)+s(5)*t(1) ==> actionid[2]=-s(4)^2*t(2)+s(5)^2*t(2)+2*s(4)^2*t(4) ==> actionid[3]=s(4)*t(3)+s(5)*t(3) ==> actionid[4]=s(4)^2*t(4)+s(5)^2*t(4) embedid; ==> embedid[1]=t(1) ==> embedid[2]=t(2) ==> embedid[3]=t(3) ==> embedid[4]=t(3)^2 groupid; ==> groupid[1]=s(3)-s(4) ==> groupid[2]=s(2)-s(5) ==> groupid[3]=s(4)*s(5) ==> groupid[4]=s(1)^2*s(4)+s(1)^2*s(5)-1 ==> groupid[5]=s(1)^2*s(5)^2-s(5) ==> groupid[6]=s(4)^4-s(5)^4+s(1)^2 ==> groupid[7]=s(1)^4+s(4)^3-s(5)^3 ==> groupid[8]=s(5)^5-s(1)^2*s(5) LinearActionQ(actionid, 5); ==> 1 ```