////////////////////////////////////////////////////////////////////// // Examples for th ealgorithm 'Invariants' - Call 'TestInv()' // (8.11.2002) // Thomas Bayer, Institut fuer Informatik, Technische Universitaet Muenchen // www: http://wwwmayr.informatik.tu-muenchen.de/personen/bayert/ // email : bayert@in.tum.de // call 'Singular --ticks-per-sec=100' to get 1/100 sec. LIB "rinvar.lib"; <"inv9"; <"std-2"; <"fstd"; <"groupeqns"; ////////////////////////////////////////////////////////////////// // finite, reductive ring R1 = 5, (x,y), dp; matrix m1[2][2] = 1,2,3,4; matrix m2[2][2]= 0,3,1,2; ring S1 = 5,(s(1..4),t(1..2)), dp; ideal G = s(2)*s(3)^2*s(4)+s(1)*s(3)*s(4)^2+s(2)*s(3)*s(4)^2+2*s(3)^2*s(4)^2+2*s(1)*s(4)^3-2*s(2)*s(4)^3-2*s(3)*s(4)^3-2*s(4)^4,s(2)^2*s(3)*s(4)+s(1)*s(2)*s(4)^2-s(2)^2*s(4)^2-2*s(2)*s(3)*s(4)^2+s(1)*s(4)^3-2*s(2)*s(4)^3+2*s(3)*s(4)^3-s(4)^4,s(1)*s(3)^3+2*s(2)*s(3)^3+s(3)^4+s(1)*s(3)^2*s(4)-2*s(3)^3*s(4)+2*s(2)*s(3)*s(4)^2-s(1)*s(4)^3+s(2)*s(4)^3+s(3)*s(4)^3+s(4)^4,s(1)*s(2)*s(3)^2+2*s(2)^2*s(3)^2+s(2)*s(3)^3+s(1)^2*s(3)*s(4)-2*s(1)*s(2)*s(3)*s(4)-2*s(1)*s(3)^2*s(4)+2*s(3)^3*s(4)+2*s(1)^2*s(4)^2-2*s(2)^2*s(4)^2-2*s(2)*s(3)*s(4)^2-2*s(3)^2*s(4)^2+s(1)*s(4)^3-s(3)*s(4)^3+2*s(4)^4,s(1)^2*s(3)^2+s(2)^2*s(3)^2+s(2)*s(3)^3-s(3)^4-s(1)*s(2)*s(3)*s(4)-2*s(1)*s(3)^2*s(4)-s(3)^3*s(4)+s(1)^2*s(4)^2-s(2)^2*s(4)^2-s(3)^2*s(4)^2-2*s(2)*s(4)^3-s(4)^4,s(1)*s(2)^2*s(3)+2*s(2)^3*s(3)+s(2)^2*s(3)^2+s(1)^2*s(2)*s(4)+s(1)*s(2)^2*s(4)-2*s(2)^3*s(4)-s(1)*s(2)*s(3)*s(4)+s(1)^2*s(4)^2+s(2)^2*s(4)^2-s(2)*s(3)*s(4)^2+s(3)^2*s(4)^2-2*s(1)*s(4)^3-s(2)*s(4)^3+s(4)^4,s(1)^3*s(3)+s(1)^2*s(2)*s(3)-s(2)^3*s(3)-2*s(2)^2*s(3)^2+s(3)^4+2*s(1)^3*s(4)+2*s(1)*s(2)^2*s(4)+s(2)^3*s(4)+2*s(1)*s(2)*s(3)*s(4)-2*s(3)^3*s(4)-2*s(1)^2*s(4)^2-s(2)^2*s(4)^2+2*s(2)*s(3)*s(4)^2+2*s(3)^2*s(4)^2-s(1)*s(4)^3-s(2)*s(4)^3+2*s(3)*s(4)^3+s(4)^4,s(2)^4-s(3)^4-s(2)^3*s(4)+2*s(3)^3*s(4)+s(2)^2*s(4)^2+s(3)^2*s(4)^2-s(2)*s(4)^3-2*s(3)*s(4)^3,s(1)*s(2)^3+s(2)^3*s(3)+2*s(3)^4-2*s(1)*s(2)^2*s(4)+s(3)^3*s(4)-2*s(2)^2*s(4)^2-s(2)*s(3)*s(4)^2-2*s(3)^2*s(4)^2-2*s(1)*s(4)^3+s(2)*s(4)^3+2*s(4)^4,s(1)^2*s(2)^2+s(2)^3*s(3)-s(2)^2*s(3)^2+s(3)^4-2*s(1)*s(2)^2*s(4)-s(2)^3*s(4)+s(1)*s(2)*s(3)*s(4)-2*s(3)^3*s(4)-s(1)^2*s(4)^2-2*s(2)^2*s(4)^2-2*s(3)^2*s(4)^2+s(2)*s(4)^3-2*s(3)*s(4)^3+s(4)^4,s(1)^3*s(2)-2*s(1)^2*s(2)*s(3)-s(2)^2*s(3)^2-2*s(2)*s(3)^3-2*s(3)^4+s(1)^3*s(4)+s(1)*s(2)*s(3)*s(4)-s(1)*s(3)^2*s(4)-s(1)^2*s(4)^2+s(2)^2*s(4)^2+s(2)*s(3)*s(4)^2+2*s(1)*s(4)^3+2*s(3)*s(4)^3-2*s(4)^4,s(1)^4+s(1)^2*s(2)*s(3)-s(2)^3*s(3)+2*s(2)^2*s(3)^2+s(2)*s(3)^3-2*s(3)^4+2*s(1)^3*s(4)+2*s(1)*s(2)^2*s(4)+s(2)^3*s(4)-2*s(1)*s(2)*s(3)*s(4)-2*s(1)*s(3)^2*s(4)+s(3)^3*s(4)+2*s(1)^2*s(4)^2-s(2)*s(3)*s(4)^2+2*s(3)^2*s(4)^2-2*s(1)*s(4)^3+2*s(2)*s(4)^3+2*s(3)*s(4)^3+2*s(4)^4,s(4)^5-s(4),s(1)*s(4)^4+2*s(2)*s(4)^4+s(3)*s(4)^4-s(1)-2*s(2)-s(3),s(3)^5-s(3),s(2)*s(3)^4+s(3)^4*s(4)+2*s(1)*s(3)^2*s(4)^2+2*s(3)^3*s(4)^2-2*s(1)*s(3)*s(4)^3+2*s(2)*s(3)*s(4)^3-2*s(3)^2*s(4)^3+2*s(2)*s(4)^4+2*s(3)*s(4)^4-2*s(1)-2*s(3)+2*s(4),s(3)^4*s(4)^4-s(3)^4-s(4)^4+1; ideal action = s(1)*t(1) + s(2)*t(2), s(3)*t(1) + s(4)*t(2); ////////////////////////////////////////////////////////////////// // finite, not reductive, ub = () ring R2 = 3,(t(1..2)), dp; matrix m[2][2] = 1,0, 1,1, 0,1; ring S2 = 3, (s,t(1..2)), dp; ideal G = s^3 - s; ideal action = t(1) + s*t(2), t(2); //int time = timer; ideal inv = Invariants(G, action, 3); time = timer - time; time; // ring T2 = 3,(t(1..2)),dp; matrix m1[2][2] = 1,1,0,1; //int time = timer; matrix PI,SI,F = invariant_ring(m1); time = timer - time; time; ////////////////////////////////////////////////////////////////// // infinite, reductive (sl2 on V+V+Sym^2V) (ub = 3) ring S3 = 0,(s(1..4), t(1..7)), lp; ideal G = s(1)*s(4) - s(2)*s(3) - 1; ideal action = s(1)*t(1) + s(2)*t(2), s(3)*t(1) + s(4)*t(2), s(1)*t(3) + s(2)*t(4), s(3)*t(3) + s(4)*t(4),s(1)^2*t(5) + 2*s(1)*s(2)* t(6) + s(2)^2*t(7), s(1)*s(3)*t(5) + (s(1)*s(4) + s(2)*s(3))*t(6) + s(2)*s(4)*t(7), s(3)^2*t(5) + 2*s(3)*s(4)*t(6) + s(4)^2 * t(7); //int time = timer; ideal inv = Invariants(G, action, 3); time = timer - time; time; // ////////////////////////////////////////////////////////////////// // infinite, not reductive (upper bound = 3) ring S4 = 0,(s(1..4), t(1..6)), dp; ideal G = s(1) - 1, s(2) - 2*s(3) - 3*s(4); ideal action = s(1)*t(1) + s(2)*t(2), s(1)*t(2), s(1)*t(3) + s(3)*t(4), s(1)*t(4), s(1)*t(5) + s(4)*t(6), s(1)*t(6); ring S4a = 0,(s(1..5), t(1..8)), dp; ideal G = s(1) - 1, s(2) - 2*s(3) - 3*s(4) - 5*s(5); ideal action = s(1)*t(1) + s(2)*t(2), s(1)*t(2), s(1)*t(3) + s(3)*t(4), s(1)*t(4), s(1)*t(5) + s(4)*t(6), s(1)*t(6), s(1)*t(7) + s(5)*t(8), s(1)*t(8); //int time = timer; ideal inv = Invariants(G, action, 4); time = timer - time; time; // /////////////////////////////////////// // Octahedron group ring R5 = 0,(t(1..6)),dp(6); matrix m1[6][6]=0,1,0,0,0,0, 1,0,0,0,0,0, 0,0,1,0,0,0, 0,0,0,-1,0,0, 0,0,0,0,0 ,-1, 0,0,0,0,1,0; matrix m2[6][6]=0,0,1,0,0,0, 0,1,0,0,0,0, 1,0,0,0,0,0, 0,0,0,0,-1,0, 0,0,0,-1, 0,0, 0,0,0,0,0,1; list tt = group_reynolds(m1, m2); list Grp = tt[2..size(tt)]; ring S5 = 0,(s(1..36),t(1..6)), lp; ideal action; action[1] = s(1)*t(1) + s(2)*t(2) + s(3)*t(3) + s(4)*t(4) + s(5)*t(5) + s(6)*t(6); action[2] = s(7)*t(1) + s(8)*t(2) + s(9)*t(3) + s(10)*t(4) + s(11)*t(5) + s(12)*t(6); action[3] = s(13)*t(1) + s(14)*t(2) + s(15)*t(3) + s(16)*t(4) + s(17)*t(5) + s(18)*t(6); action[4] = s(19)*t(1) + s(20)*t(2) + s(21)*t(3) + s(22)*t(4) + s(23)*t(5) + s(24)*t(6); action[5] = s(25)*t(1) + s(26)*t(2) + s(27)*t(3) + s(28)*t(4) + s(29)*t(5) + s(30)*t(6); action[6] = s(31)*t(1) + s(32)*t(2) + s(33)*t(3) + s(34)*t(4) + s(35)*t(5) + s(36)*t(6); ideal G = GroupEquations(imap(R5, Grp)); /////////////////////////////////////// // SL2 on Sym4(W)+Sym(2), W 2-dim rep. ring S6 = 0,(s(1..4),t(1..8)),dp; ideal G = s(1)*s(4) - s(2)*s(3) - 1; ideal action; action[1] = s(1)^4*t(1) + 4*s(1)^3*s(2)*t(2)+ 6*s(1)^2*s(2)^2*t(3)+ 4*s(1)*s(2)^3*t(4) + s(2)^4*t(5); action[2] = s(1)^3*s(3)*t(1) + (3*s(1)^2*s(2)*s(3) + s(1)^3*s(4))*t(2) + (3*s(1)*s(2)^2*s(3) + 3*s(1)^2*s(2)*s(4))*t(3) + (s(2)^3*s(3) + 3*s(1)*s(2)^2*s(4))*t(4) + s(2)^3*s(4)*t(5); action[3] = s(1)^2*s(3)^2*t(1) + (2*s(1)*s(2)*s(3)^2 + 2*s(1)^2*s(3)*s(4))*t(2) + (s(2)^2*s(3)^2 + 4*s(1)*s(2)*s(3)*s(4) + s(1)^2*s(4)^2)*t(3) + (2*s(2)^2*s(3)*s(4) + 2*s(1)*s(2)*s(4)^2)*t(4) + s(2)^2*s(4)^2*t(5); action[4] = s(1)*s(3)^3*t(1) + (s(2)*s(3)^3 + 3*s(1)*s(3)^2*s(4))*t(2) + (3*s(2)*s(3)^2*s(4) + 3*s(1)*s(3)*s(4)^2)*t(3) + (3*s(2)*s(3)*s(4)^2 + s(1)*s(4)^3)*t(4) + s(2)*s(4)^3*t(5); action[5] = s(3)^4*t(1) + 4*s(3)^3*s(4) * t(2) + 6*s(3)^2*s(4)^2 * t(3) + 4*s(3)*s(4)^3*t(4) + s(4)^4*t(5); action[6] = s(1)^2*t(6) + 2*s(1)*s(2)* t(7) + s(2)^2*t(8); action[7] = s(1)*s(3)*t(6) + (s(1)*s(4) + s(2)*s(3))*t(7) + s(2)*s(4)*t(8); action[8] = s(3)^2*t(6) + 2*s(3)*s(4)*t(7) + s(4)^2 * t(8); /////////////////////////////////////// // linear Ga-action (2+2+2) ring S7 = 0,(s(1), t(1..7)), dp; ideal G = 0; ideal action = t(1) + 2*s(1)*t(2) + s(1)^2*t(3),t(2) + s(1)*t(3),t(3), t(4) + s(1)*t(5), t(5), t(6) + s(1)*t(7), t(7); // int time = timer; ideal inv = Invariants(G, action, list(2,3,4,6)); time = timer - time; time; // int time = timer; ideal inv = StdAlg(G, action, list(2,3,4,6)); time = timer - time; time; proc TestInv() { int ti, mg; ideal inv; mg = MINGEN; printlevel=0; MINGEN = 0; setring R1; FiniteGroups(list(m1,m2),list(8,12),1,S1); setring S1; ti = timer; ideal inv = NullCone(G, action); ti = timer - ti; print(" Derksen: " + string(ti) + " degrees = " + string(maxdeg(inv))); setring R2; FiniteGroups(list(m),list(1,2,3),2,S2); setring S2; ti = timer; ideal inv = NullCone(G, action); ti = timer - ti; print(" Derksen: " + string(ti) + " degrees = " + string(maxdeg(inv))); setring S3; InfiniteGroups(G, action, list(1,2,3), 3); //setring S4; //InfiniteGroups(G, action, list(1,2,3), 4); setring S4a; InfiniteGroups(G, action, list(1,2,3,4), 4); setring R5; FiniteGroups(list(m1, m2),list(1,2,3,4,5),5,S5); // setring S6; // InfiniteGroups(G, action, list(2,3,4,6), 6); setring S7; InfiniteGroups(G, action, list(1,2,3), 7); setring S6; InfiniteGroups(G, action, list(2,3,4,6), 6); MINGEN = mg; } proc InfiniteGroups(ideal G, ideal action, list dg, int i) { int ti; ideal inv; print(" -- Example " + string(i) + " --"); ti = timer; if(i != 6) { ideal inv = NullCone(G,action);} ti = timer - ti; print(" Derksen Alg: " + string(ti) + ", degrees = " + string(maxdeg(inv))); MINGEN=0; ti = timer; inv = Invariants(G,action, dg); ti = timer - ti; print(" NewAlg 0 time: " + string(ti)); MINGEN = 1; ti = timer; inv = Invariants(G,action, dg); ti = timer - ti; print(" NewAlg 1 time: " + string(ti)); // print(string(inv)); ti = timer; if(i != 6) { inv = StdAlg(G,action, dg);} ti = timer - ti; print(" StdAlg time: " + string(ti)); } proc FiniteGroups(list matrices, list dg, int i, SR) { int ti; ideal inv; print(" -- Example " + string(i) + " --"); ti = timer; ideal inv = FStdAlg(matrices, dg); ti = timer - ti; print(" Standard: " + string(ti)); ti = timer; matrix PI,SI, FI = invariant_ring(matrices); ti = timer - ti; print(" finvar: " + string(ti)); setring SR; MINGEN = 0; ti = timer; ideal inv = Invariants(G,action, dg); ti = timer - ti; print(" NewAlg 0 time: " + string(ti)); MINGEN = 1; ti = timer; ideal inv = Invariants(G,action, dg); ti = timer - ti; print(" NewAlg 1 time: " + string(ti)); ti = timer; }