// Set random number generator to avoid Singular leading to different results // in different runs system("--random",1018779139); // Appendix.sing // // Gabor Megyesi // Frank Sottile // Thorsten Theobald // // Started: 11 November 2001 // Current: 29 May 2002 // /////////////////////////////////////////////////////////////////////////// // // This file is the Singular code in the appendix // /////////////////////////////////////////////////////////////////////////// int T = timer; LIB "primdec.lib"; option(redSB); ring R = 0, (s,t,a,b,c,d,e,f,g,h,k,l), (dp(2), dp(10)); //ring R = 0, (s,t,a,b,c,d,e,f,g,h,k,l), dp; ideal I = el-g^2, ek-gf, ak-dc, ah-c^2; matrix M[2][5] = s , 1-s , -2 , 1-t , t , al-d^2, 2*(bl-dg), 2*(2bk-cg-df), 2*(bh-cf), eh-f^2; I = I + minor(M,2); I = std(I); dim(I), mult(I); matrix Q[4][4] = a , b , c , d , b , e , f , g , c , f , h , k , d , g , k , l ; ideal E1 = std(minor(Q,2)); I = std(quotient(I,E1)); dim(I), mult(I); ideal E2 = g, f, e, d, c, b, a; // intersection line l1 ideal E3 = l, k, h, g, f, d, c; // intersection line l2 I = sat(I,E2)[1]; dim(I), mult(I); ideal J = sat(I,E3)[1]; dim(J), mult(J); eliminate(J, abcdefghkl); ideal L = s, t, t-1, s-1, s-t; list F = facstd(J, L); size(F); // Verify the factorization int i; ideal FF = 1; for (i = 1; i <= 7; i++) { FF = intersect(FF,F[i]); } ideal V1, V2; //V1 = std(sat(FF, s*t*(s-1)*(t-1)*(s-t))[1]); //V2 = std(sat(J, s*t*(s-1)*(t-1)*(s-t))[1]); V1 = std(sat(sat(sat(sat(sat(FF,t)[1],s)[1],t-1)[1],s-1)[1],s-t)[1]); V2 = std(sat(sat(sat(sat(sat(J ,t)[1],s)[1],t-1)[1],s-1)[1],s-t)[1]); print("The following part is not shown in the appendix."); size(V1), size(V2); if (size(V1) == size(V2)) { int check = 1; for (i = 1; i <= size(V1); i++) { if (V1[i] != V2[i]) { check = 0; } } if (check == 1) { print("Factorization successfully verified."); } } timer-T; print("Now continue with the annotated code of the appendix."); ring S = (0,s,t), (a,b,c,d,e,f,g,h,k,l), lp; short = 0; print("The following part is not shown in the appendix."); // Singular might produce factors which are the unit ideal in S, // which we then remove. i = 1; ideal FS; setring R; ideal FR; while (i <= size(F)) { FR = F[i]; setring S; FS = std(imap(R, FR)); dim(FS), mult(FS); if (dim(FS) == -1) { setring R; delete(F,i); } else { setring R; i++; } } size(F); F; setring S; timer-T; print("Now continue with the annotated code of the appendix."); ideal JS = std(imap(R,J)); dim(JS), mult(JS); setring R; FR = F[1]; setring S; FS = std(imap(R,FR)); dim(FS), mult(FS); FS[5], FS[6], FS[7], FS[8], FS[9], FS[10], FS[11]; for (i = 2; i <= 7; i++) { setring R; FR = F[i]; setring S; FS = std(imap(R,FR)); dim(FS), mult(FS); FS[1]; print("--------------------------------"); } print("The following part is not shown in the appendix."); // Print the second ideal setring R; FR = F[3]; setring S; FS = std(imap(R,FR)); FS; // Print all ideals for (i = 2; i <= 7; i++) { setring R; FR = F[i]; setring S; FS = std(imap(R,FR)); dim(FS), mult(FS); FS; print("--------------------------------"); } timer-T; quit;