# Singular

#### D.4.28.5 symmStd

Procedure from library `symodstd.lib` (see symodstd_lib).

Usage:
symmStd(I,sigma,#); I ideal, sigma intvec

Assume:
size(sigma) = nvars(basering) =: n, basering has an order(sigma)-th primitive root of unity a (if char(basering) > 0) and sigma(I) = I

Return:
ideal, a standard basis of I

Note:
Assuming that the ideal I is invariant under the variable permutation sigma and the basering has an order(sigma)-th primitive root of unity the procedure uses linear transformation of variables in order to improve standard basis computation.
If char(basering) = 0 all computations are done in the polynomial ring over the smallest field extension that has an order(sigma)-th primitive root of unity.

Example:
 ```LIB "symodstd.lib"; ring R = 0, x(1..4), dp; ideal I = cyclic(4); I; ==> I[1]=x(1)+x(2)+x(3)+x(4) ==> I[2]=x(1)*x(2)+x(2)*x(3)+x(1)*x(4)+x(3)*x(4) ==> I[3]=x(1)*x(2)*x(3)+x(1)*x(2)*x(4)+x(1)*x(3)*x(4)+x(2)*x(3)*x(4) ==> I[4]=x(1)*x(2)*x(3)*x(4)-1 intvec pi = 2,3,4,1; ideal sI = symmStd(I,pi); sI; ==> sI[1]=x(1)+x(2)+x(3)+x(4) ==> sI[2]=x(2)^2+2*x(2)*x(4)+x(4)^2 ==> sI[3]=x(2)*x(3)^2+x(3)^2*x(4)-x(2)*x(4)^2-x(4)^3 ==> sI[4]=x(2)*x(3)*x(4)^2+x(3)^2*x(4)^2-x(2)*x(4)^3+x(3)*x(4)^3-x(4)^4-1 ==> sI[5]=x(2)*x(4)^4+x(4)^5-x(2)-x(4) ==> sI[6]=x(3)^3*x(4)^2+x(3)^2*x(4)^3-x(3)-x(4) ==> sI[7]=x(3)^2*x(4)^4+x(2)*x(3)-x(2)*x(4)+x(3)*x(4)-2*x(4)^2 ring S = 31, (x,y,z), dp; ideal J; J[1] = xy-y2+xz; J[2] = xy+yz-z2; J[3] = -x2+xz+yz; intvec tau = 3,1,2; ideal sJ = symmStd(J,tau); sJ; ==> sJ[1]=y2-xz+yz-z2 ==> sJ[2]=xy+yz-z2 ==> sJ[3]=x2-xz-yz ==> sJ[4]=yz2-z3 ==> sJ[5]=xz2 ==> sJ[6]=z4 ```