# Singular

#### D.15.1.4 stabilizer

Procedure from library `autgradalg.lib` (see autgradalg_lib).

Usage:
stabilizer(RL, A, BB, AMON, n0): RL is an ideal, A a matrix (standing for a subgroup of GL(n)), BB is an intmat (standing for an automorphism of the grading group), AMON a list of monomials corresponding to the rows/columns of A, n0 an integer such that the first n0 variables of the basering are the T(i), optional: a list of elementary divisors if there is torsion.

Assume:
the basering must be graded (see setBaseMultigrading()) and the cone over the degrees of the variables must be pointed; there mustn't be 0-degrees. The vector w must be an element of the cone over the degrees of the variables. Moreover, B must be such that it permutes the degrees of the variables and the degrees of the generators of RL.

Purpose:
returns relations such that A*I = I.

Return:
a ring. Also exports an ideal Jexported and a list stabExported.

Example:
 ```LIB "autgradalg.lib"; ////////////////// // example: fano 15: intmat Q[1][5] = 3,3,2,2,1; ring R = 0,T(1..5),dp; // attach degree matrix Q to R: setBaseMultigrading(Q); ideal I = T(1)*T(2) + T(3)^2*T(4) + T(5)^6; def RR = stabilizer(I); ==> // coefficients: QQ ==> // number of vars : 50 ==> // block 1 : ordering dp ==> // : names T(1) T(2) T(3) T(4) T(5) Y(1) Y(2) Y(3) Y(\ 4) Y(5) Y(6) Y(7) Y(8) Y(9) Y(10) Y(11) Y(12) Y(13) Y(14) Y(15) Y(16) Y(1\ 7) Y(18) Y(19) Y(20) Y(21) Y(22) Y(23) Y(24) Y(25) Y(26) Y(27) Y(28) Y(29\ ) Y(30) Y(31) Y(32) Y(33) Y(34) Y(35) Y(36) Y(37) Y(38) Y(39) Y(40) Y(41)\ Y(42) Y(43) Y(44) Y(45) ==> // block 2 : ordering C setring RR; RR; ==> // coefficients: QQ ==> // number of vars : 46 ==> // block 1 : ordering dp ==> // : names Y(1) Y(2) Y(3) Y(4) Y(5) Y(6) Y(7) Y(8) Y(\ 9) Y(10) Y(11) Y(12) Y(13) Y(14) Y(15) Y(16) Y(17) Y(18) Y(19) Y(20) Y(21\ ) Y(22) Y(23) Y(24) Y(25) Y(26) Y(27) Y(28) Y(29) Y(30) Y(31) Y(32) Y(33)\ Y(34) Y(35) Y(36) Y(37) Y(38) Y(39) Y(40) Y(41) Y(42) Y(43) Y(44) Y(45) ==> // block 2 : ordering lp ==> // : names Z ==> // block 3 : ordering C Jexported; ==> Jexported[1]=Y(3) ==> Jexported[2]=Y(4) ==> Jexported[3]=Y(5) ==> Jexported[4]=Y(8) ==> Jexported[5]=Y(12) ==> Jexported[6]=Y(13) ==> Jexported[7]=Y(14) ==> Jexported[8]=Y(17) ==> Jexported[9]=Y(19) ==> Jexported[10]=Y(20) ==> Jexported[11]=Y(23) ==> Jexported[12]=Y(24) ==> Jexported[13]=Y(25) ==> Jexported[14]=Y(27) ==> Jexported[15]=Y(28) ==> Jexported[16]=Y(29) ==> Jexported[17]=Y(32) ==> Jexported[18]=Y(33) ==> Jexported[19]=Y(34) ==> Jexported[20]=Y(36) ==> Jexported[21]=Y(37) ==> Jexported[22]=Y(38) ==> Jexported[23]=Y(39) ==> Jexported[24]=Y(40) ==> Jexported[25]=Y(42) ==> Jexported[26]=Y(43) ==> Jexported[27]=Y(44) ==> Jexported[28]=Y(45) ==> Jexported[29]=-Y(2)*Y(10)*Y(22)^2*Y(30)^2*Y(41)^8*Z+Y(1)*Y(11)*Y(22)^2*Y(\ 30)^2*Y(41)^8*Z+2*Y(2)*Y(10)*Y(21)*Y(22)*Y(30)*Y(31)*Y(41)^8*Z-2*Y(1)*Y(1\ 1)*Y(21)*Y(22)*Y(30)*Y(31)*Y(41)^8*Z-Y(2)*Y(10)*Y(21)^2*Y(31)^2*Y(41)^8*Z\ +Y(1)*Y(11)*Y(21)^2*Y(31)^2*Y(41)^8*Z-1 ==> Jexported[30]=Y(26)^2*Y(31)+2*Y(22)*Y(26)*Y(35)+Y(9)*Y(16)+Y(7)*Y(18) ==> Jexported[31]=2*Y(22)*Y(26)*Y(31)+Y(22)^2*Y(35)+Y(7)*Y(16) ==> Jexported[32]=Y(22)^2*Y(31) ==> Jexported[33]=Y(26)^2*Y(30)+2*Y(21)*Y(26)*Y(35)+Y(9)*Y(15)+Y(6)*Y(18) ==> Jexported[34]=2*Y(22)*Y(26)*Y(30)+2*Y(21)*Y(26)*Y(31)+2*Y(21)*Y(22)*Y(35)\ +Y(7)*Y(15)+Y(6)*Y(16) ==> Jexported[35]=Y(22)^2*Y(30)+2*Y(21)*Y(22)*Y(31) ==> Jexported[36]=2*Y(21)*Y(26)*Y(30)+Y(21)^2*Y(35)+Y(6)*Y(15) ==> Jexported[37]=-Y(41)^6+2*Y(21)*Y(22)*Y(30)+Y(21)^2*Y(31)-Y(26)^2*Y(35)-Y(\ 9)*Y(18) ==> Jexported[38]=Y(21)^2*Y(30) ==> Jexported[39]=Y(9)*Y(11)+Y(2)*Y(18) ==> Jexported[40]=Y(7)*Y(11)+Y(2)*Y(16) ==> Jexported[41]=Y(6)*Y(11)+Y(2)*Y(15) ==> Jexported[42]=Y(2)*Y(11) ==> Jexported[43]=Y(9)*Y(10)+Y(1)*Y(18) ==> Jexported[44]=Y(7)*Y(10)+Y(1)*Y(16) ==> Jexported[45]=Y(6)*Y(10)+Y(1)*Y(15) ==> Jexported[46]=-2*Y(21)*Y(22)*Y(30)-Y(21)^2*Y(31)+Y(2)*Y(10)+Y(1)*Y(11) ==> Jexported[47]=Y(1)*Y(10) dim(std(Jexported)); ==> 3 getVariableWeights(); ==> 3,3,2,2,1,3,3,2,3,3,3,2,2,1,3,3,2,3,3,3,2,2,1,3,3,2,3,3,3,2,2,1,3,3,2,3,3\ ,3,2,2,1,3,3,2,3,-22 kill RR, Q, R; ///////////// // example 3.14 from the paper intmat Q[3][5] = 1,1,1,1,1, 1,-1,0,0,1, 1,1,1,0,0; list TOR = 2; ring R = 0,T(1..5),dp; // attach degree matrix Q to R: setBaseMultigrading(Q); ideal I = T(1)*T(2) + T(3)^2 + T(4)^2; list TOR = 2; ==> // ** redefining TOR (list TOR = 2;) def RR = stabilizer(I, TOR); ==> // coefficients: QQ ==> // number of vars : 30 ==> // block 1 : ordering dp ==> // : names T(1) T(2) T(3) T(4) T(5) Y(1) Y(2) Y(3) Y(\ 4) Y(5) Y(6) Y(7) Y(8) Y(9) Y(10) Y(11) Y(12) Y(13) Y(14) Y(15) Y(16) Y(1\ 7) Y(18) Y(19) Y(20) Y(21) Y(22) Y(23) Y(24) Y(25) ==> // block 2 : ordering C ==> // ** redefining adMons ( list adMons;) ==> // ** redefining MONexported ( export(MONexported);) ==> // ** redefining k (int k = 1;) setring RR; RR; ==> // coefficients: QQ ==> // number of vars : 26 ==> // block 1 : ordering dp ==> // : names Y(1) Y(2) Y(3) Y(4) Y(5) Y(6) Y(7) Y(8) Y(\ 9) Y(10) Y(11) Y(12) Y(13) Y(14) Y(15) Y(16) Y(17) Y(18) Y(19) Y(20) Y(21\ ) Y(22) Y(23) Y(24) Y(25) ==> // block 2 : ordering lp ==> // : names Z ==> // block 3 : ordering C Jexported; ==> Jexported[1]=Y(24) ==> Jexported[2]=Y(23) ==> Jexported[3]=Y(22) ==> Jexported[4]=Y(21) ==> Jexported[5]=Y(20) ==> Jexported[6]=Y(17) ==> Jexported[7]=Y(16) ==> Jexported[8]=Y(15) ==> Jexported[9]=Y(12) ==> Jexported[10]=Y(11) ==> Jexported[11]=Y(10) ==> Jexported[12]=Y(9) ==> Jexported[13]=Y(8) ==> Jexported[14]=Y(6) ==> Jexported[15]=Y(5) ==> Jexported[16]=Y(4) ==> Jexported[17]=Y(3) ==> Jexported[18]=Y(2) ==> Jexported[19]=Y(18)*Y(19) ==> Jexported[20]=Y(14)*Y(19) ==> Jexported[21]=Y(13)*Y(18) ==> Jexported[22]=Y(14)^2-Y(18)^2 ==> Jexported[23]=Y(13)*Y(14) ==> Jexported[24]=Y(13)^2-Y(19)^2 ==> Jexported[25]=Y(1)*Y(7)-Y(18)^2-Y(19)^2 ==> Jexported[26]=Y(14)*Y(18)^3*Y(25)*Z-Y(13)*Y(19)^3*Y(25)*Z+1 ==> Jexported[27]=Y(19)^5*Y(25)*Z-Y(13) ==> Jexported[28]=Y(13)*Y(19)^4*Y(25)*Z-Y(19) ==> Jexported[29]=Y(18)^5*Y(25)*Z+Y(14) dim(std(Jexported)); ==> 3 stabExported; ==> [1]: ==> [1]: ==> _[1,1]=Y(1) ==> _[1,2]=0 ==> _[1,3]=0 ==> _[1,4]=0 ==> _[1,5]=0 ==> _[2,1]=0 ==> _[2,2]=Y(7) ==> _[2,3]=0 ==> _[2,4]=0 ==> _[2,5]=0 ==> _[3,1]=0 ==> _[3,2]=0 ==> _[3,3]=Y(13) ==> _[3,4]=0 ==> _[3,5]=0 ==> _[4,1]=0 ==> _[4,2]=0 ==> _[4,3]=0 ==> _[4,4]=Y(19) ==> _[4,5]=0 ==> _[5,1]=0 ==> _[5,2]=0 ==> _[5,3]=0 ==> _[5,4]=0 ==> _[5,5]=Y(25) ==> [2]: ==> 1,0,0, ==> 0,1,0, ==> 0,0,1 ==> [3]: ==> _[1]=Y(2) ==> _[2]=Y(3) ==> _[3]=Y(4) ==> _[4]=Y(5) ==> _[5]=Y(6) ==> _[6]=Y(8) ==> _[7]=Y(9) ==> _[8]=Y(10) ==> _[9]=Y(11) ==> _[10]=Y(12) ==> _[11]=Y(14) ==> _[12]=Y(15) ==> _[13]=Y(16) ==> _[14]=Y(17) ==> _[15]=Y(18) ==> _[16]=Y(20) ==> _[17]=Y(21) ==> _[18]=Y(22) ==> _[19]=Y(23) ==> _[20]=Y(24) ==> _[21]=Y(1)*Y(7)*Y(13)*Y(19)*Y(25)*Z-1 ==> _[22]=Y(13)^2-Y(19)^2 ==> _[23]=Y(1)*Y(7)-Y(13)^2 ==> [2]: ==> [1]: ==> _[1,1]=Y(1) ==> _[1,2]=0 ==> _[1,3]=0 ==> _[1,4]=0 ==> _[1,5]=0 ==> _[2,1]=0 ==> _[2,2]=Y(7) ==> _[2,3]=0 ==> _[2,4]=0 ==> _[2,5]=0 ==> _[3,1]=0 ==> _[3,2]=0 ==> _[3,3]=0 ==> _[3,4]=Y(14) ==> _[3,5]=0 ==> _[4,1]=0 ==> _[4,2]=0 ==> _[4,3]=Y(18) ==> _[4,4]=0 ==> _[4,5]=0 ==> _[5,1]=0 ==> _[5,2]=0 ==> _[5,3]=0 ==> _[5,4]=0 ==> _[5,5]=Y(25) ==> [2]: ==> 1,0,0, ==> 0,1,0, ==> 1,1,1 ==> [3]: ==> _[1]=Y(2) ==> _[2]=Y(3) ==> _[3]=Y(4) ==> _[4]=Y(5) ==> _[5]=Y(6) ==> _[6]=Y(8) ==> _[7]=Y(9) ==> _[8]=Y(10) ==> _[9]=Y(11) ==> _[10]=Y(12) ==> _[11]=Y(13) ==> _[12]=Y(15) ==> _[13]=Y(16) ==> _[14]=Y(17) ==> _[15]=Y(19) ==> _[16]=Y(20) ==> _[17]=Y(21) ==> _[18]=Y(22) ==> _[19]=Y(23) ==> _[20]=Y(24) ==> _[21]=-Y(1)*Y(7)*Y(14)*Y(18)*Y(25)*Z-1 ==> _[22]=-Y(14)^2+Y(18)^2 ==> _[23]=Y(1)*Y(7)-Y(18)^2 kill RR, Q, R; ```