-- REFERENCE -- [P2]: Papadakis, The equations of type II_1 unprojection, J. Pure Appl. Algebra (to appear) --- -- Date: 12 December 2007 --- Macaulay 2 code for II_1 unprojection for the case n= 3. -- related to [P2] kk = QQ S = kk [A1p12,A1p13,A1p23,A2p12,A2p13,A2p23, B1p11,B1p12,B1p13, B1p22,B1p23,B1p33, B2p11,B2p12,B2p13,B2p22,B2p23,B2p33, y1,y2,y3,x1,x2,x3,z,s0,s1, Degrees => {6:2, 12:1, 3:2, 3:1,2,3,4}] -- Notation: A1p12: means A^1_{ij} of [P2] p.3 etc. -- adjointMatrix: input: M 3x3 matrix, -- output: classical adjoint of M (which is 3x3) adjointMatrix = (M) -> transpose matrix { {det submatrix(M,{1,2},{1,2}), -det submatrix(M,{1,2},{0,2}), det submatrix(M,{1,2},{0,1})}, {-det submatrix(M,{0,2},{1,2}), det submatrix(M,{0,2},{0,2}), -det submatrix(M,{0,2},{0,1})}, {det submatrix(M,{0,1},{1,2}),-det submatrix(M,{0,1},{0,2}), det submatrix(M,{0,1},{0,1})}} -- example: -- if D = | d11 d12 d13 | -- | d21 d22 d23 | -- | d31 d32 d33 | -- then -- adjointMatrix (D) = | -d23d32+d22d33 d13d32-d12d33 -d13d22+d12d23 | -- | d23d31-d21d33 -d13d31+d11d33 d13d21-d11d23 | -- | -d22d31+d21d32 d12d31-d11d32 -d12d21+d11d22 | -- M2 code for example: -- S1 = QQ [ d11,d12,d13,d21,d22,d23,d31,d32,d33] -- adjointMatrix (matrix {{ d11,d12,d13},{d21,d22,d23},{d31,d32,d33}}) --doubleAdjointMatrix: input: M1, M2 are 3x3 matrices -- output: 3x3 matrix doubleAdjointMatrix = (M1,M2) -> ( M111 := M1_0_0; M112 := M1_1_0; M113 := M1_2_0; M121 := M1_0_1; M122 := M1_1_1; M123 := M1_2_1; M131 := M1_0_2; M132 := M1_1_2; M133 := M1_2_2; M211 := M2_0_0; M212 := M2_1_0; M213 := M2_2_0; M221 := M2_0_1; M222 := M2_1_1; M223 := M2_2_1; M231 := M2_0_2; M232 := M2_1_2; M233 := M2_2_2; transpose matrix { {M122*M233-M123*M232+ M222*M133-M223*M132, -(M121*M233-M123*M231+ M221*M133-M223*M131 ), M121*M232-M122*M231+ M221*M132-M222*M131}, {-(M112*M233-M113*M232+M212*M133-M213*M132), M111*M233-M113*M231+ M211*M133-M213*M131, -(M111*M232-M112*M231+ M211*M132-M212*M131)}, { M112*M223-M113*M222+ M212*M123-M213*M122, -(M111*M223-M113*M221+ M211*M123-M213*M121), M111*M222-M112*M221+M211*M122-M212*M121}}) -- example: -- if D = | d11 d12 d13 | and E = | e11 e12 e13 | -- | d21 d22 d23 | | e21 e22 e23 | -- | d31 d32 d33 | | e31 e32 e33 | -- then -- doubleAdjointMatrix (D,E) = -- | d33e22-d32e23-d23e32+d22e33 -d33e12+d32e13+d13e32-d12e33 d23e12-d22 e13-d13e22+d12e23 | -- | -d33e21+d31e23+d23e31-d21e33 d33e11-d31e13-d13e31+d11e33 -d23e11+d2 1e13+d13e21-d11e23 | -- | d32e21-d31e22-d22e31+d21e32 -d32e11+d31e12+d12e31-d11e32 d22e11-d21 e12-d12e21+d11e22 | -- M2 code for example: -- S1 = QQ [ d11,d12,d13,d21,d22,d23,d31,d32,d33, -- e11,e12,e13,e21,e22,e23,e31,e32,e33] -- doubleAdjointMatrix (matrix {{ d11,d12,d13},{d21,d22,d23},{d31,d32,d33}}, -- matrix {{ e11,e12,e13},{e21,e22,e23},{e31,e32,e33}}) --Following command: input: single 3x2 matrices u, -- output: single 3x1 matrix \wedge^2 (u) wedge2 = (u) -> matrix {{det(submatrix (u,{1,2},{0,1}))}, {-det(submatrix (u,{0,2},{0,1}))}, {det(submatrix (u,{0,1},{0,1}))}} -- example: -- if D = | d11 d12 | -- | d21 d22 | -- | d31 d32 | -- then -- wedge2 (D) = | -d22d31+d21d32 | -- | d12d31-d11d32 | -- | -d12d21+d11d22 | -- M2 code for the example: -- S1 = QQ [ d11,d12,d21,d22,d31,d32] -- wedge2 (matrix {{ d11,d12},{d21,d22},{d31,d32}}) --Following command: input two 3x2 matrices u1 and u2, output -- single 3x1 matrix u1 \wedge u2 + u2 \wedge u1 mixedwedge = (u1,u2) -> matrix{{det (submatrix(u1,{1},{0,1}) || submatrix(u2,{2},{0,1}))+ det (submatrix(u2,{1},{0,1}) || submatrix(u1,{2},{0,1}))}, {- (det (submatrix(u1,{0},{0,1}) || submatrix(u2,{2},{0,1}))+ det (submatrix(u2,{0},{0,1}) || submatrix(u1,{2},{0,1})))}, {det (submatrix(u1,{0},{0,1}) || submatrix(u2,{1},{0,1}))+ det (submatrix(u2,{0},{0,1}) || submatrix(u1,{1},{0,1}))}} -- example: -- if D = | d11 d12 | and E = | e11 e12 | -- | d21 d22 | | e21 e22 | -- | d31 d32 | | e31 e32 | -- then -- mixedwedge (D,E) = | d32e21-d31e22-d22e31+d21e32 | -- | -d32e11+d31e12+d12e31-d11e32 | -- | d22e11-d21e12-d12e21+d11e22 | -- M2 code for the example: -- S1 = QQ [ d11,d12,d21,d22,d31,d32, e11,e12,e21,e22,e31,e32] -- mixedwedge (matrix {{ d11,d12},{d21,d22},{d31,d32}}, -- matrix {{ e11,e12},{e21,e22},{e31,e32}}) x = matrix {{x1,x2,x3}} y = matrix {{y1,y2,y3}} A1 = matrix {{0,A1p12,A1p13},{-A1p12,0,A1p23},{-A1p13,-A1p23,0}} A2 = matrix {{0,A2p12,A2p13},{-A2p12,0,A2p23},{-A2p13,-A2p23,0}} B1 = matrix {{B1p11,B1p12,B1p13},{B1p12,B1p22,B1p23}, {B1p13,B1p23,B1p33}} B2 = matrix {{B2p11,B2p12,B2p13},{B2p12,B2p22,B2p23}, {B2p13,B2p23,B2p33}} -- A1,A2 are generic 3x3 skew, B1,B2 are generic 3x3 symmetric ID = minors (2, matrix {{ y1,y2,y3, z*x1,z*x2, z*x3}, { x1,x2,x3, y1,y2, y3}}) adjB1 = adjointMatrix (B1); adjB1p11 = adjB1_0_0; adjB1p22 = adjB1_1_1; adjB1p33 = adjB1_2_2; adjB1p12 = adjB1_1_0; adjB1p13 = adjB1_2_0; adjB1p23 = adjB1_2_1; adjB2 = adjointMatrix (B2); adjB2p11 = adjB2_0_0; adjB2p22 = adjB2_1_1; adjB2p33 = adjB2_2_2; adjB2p12 = adjB2_1_0; adjB2p13 = adjB2_2_0; adjB2p23 = adjB2_2_1; a = det matrix {{x1,x2,x3},{A1p23,-A1p13,A1p12}, {A2p23,-A2p13,A2p12}}; invof2 = substitute ((1_S/2_S), S); b = (invof2 * (y* B1* adjB2*B1*transpose(y)+ y* B2* adjB1*B2*transpose(y)+ 2*x*A1* adjB2*(transpose A1)*transpose(x)+ 2*x*A2* adjB1*(transpose A2)*transpose(x)- 2*x*A1*doubleAdjointMatrix (B1,B2)* transpose(A2)*transpose(x)- z*x*B1*adjB2*B1*transpose(x)- z*x*B2*adjB1*B2*transpose(x)+ 4*y*B1*adjB2*transpose(A1)*transpose(x)+ 4*y*B2*adjB1*transpose(A2)*transpose(x)- (A1p12*(x1*y2-x2*y1)+A1p13*(x1*y3-x3*y1)+ A1p23*(x2*y3-x3*y2))* (B1p11* adjB2p11+B1p22* adjB2p22+ B1p33*adjB2p33 + 2*(B1p12* adjB2p12+B1p13* adjB2p13+ B1p23*adjB2p23)) - (A2p12*(x1*y2-x2*y1)+A2p13*(x1*y3-x3*y1)+ A2p23*(x2*y3-x3*y2))* (B2p11* adjB1p11+B2p22* adjB1p22+ B2p33*adjB1p33 + 2*(B2p12* adjB1p12+B2p13* adjB1p13+B2p23*adjB1p23))))_0_0; u1 = (-A1*(transpose x) + B1 *(transpose y)) | (-A2*(transpose x) + B2 *(transpose y)) u2 = (-B1*(transpose x)) | (-B2*(transpose x)) sigma1 = wedge2 (u1) + z * wedge2 (u2) sigma2 = mixedwedge (u1,u2) f1 = (x*A1*transpose(y)+y*B1*transpose(y)-z*x*B1*transpose(x))_0_0; f2 = (x*A2*transpose(y)+y*B2*transpose(y)-z*x*B2*transpose(x))_0_0; l1 = z*x1*s0+y1*s1+sigma1_0_0; l2 = z*x2*s0+y2*s1+sigma1_0_1; l3 = z*x3*s0+y3*s1+sigma1_0_2; l4 = y1*s0 + x1*s1+ sigma2_0_0; l5 = y2*s0 + x2*s1+ sigma2_0_1; l6 = y3*s0 + x3*s1+ sigma2_0_2; q = s1^2-z*s0^2-a*s0+b; IY =ideal (f1,f2,l1,l2,l3,l4, l5,l6,q); ------------------------------------------------------------ -- The following M2 code proves [P2, Proposition 4.3] -- evM = (Mat, i ,j) -> Mat_(j-1)_(i-1); sum1 = evM(adjB2,1,1) + evM(adjB2,1,2) +evM(adjB2,1,3); sum2 = evM(adjB2,2,1) + evM(adjB2,2,2) +evM(adjB2,2,3); sum3 = evM(adjB2,3,1) + evM(adjB2,3,2) +evM(adjB2,3,3); tildeg1 = ( (x1 * B1p11+ x2 * B1p12 + x3 * B1p13) * sum1 + (x1 * B1p12+ x2 * B1p22 + x3 * B1p23) * sum2 + (x1 * B1p13+ x2 * B1p23 + x3 * B1p33) * sum3 ) dsum1 = evM(adjB1,1,1) + evM(adjB1,1,2) +evM(adjB1,1,3); dsum2 = evM(adjB1,2,1) + evM(adjB1,2,2) +evM(adjB1,2,3); dsum3 = evM(adjB1,3,1) + evM(adjB1,3,2) +evM(adjB1,3,3); tildeg2 = ( (x1 * B2p11+ x2 * B2p12 + x3 * B2p13) * dsum1 + (x1 * B2p12+ x2 * B2p22 + x3 * B2p23) * dsum2 + (x1 * B2p13+ x2 * B2p23 + x3 * B2p33) * dsum3 ) tildephi3function = (a1,a2,a3,b1,b2,b3, c1,c2,c3, d1,d2,d3) -> ( tempu1 := a1*(d3-d2) + a2 * (d1-d3) + a3 * (d2-d1) ; tempv1 := c1*(b3-b2) + c2 * (b1-b3) + c3 * (b2-b1) ; tempu1-tempv1 ) functionNo1 =(i,j) -> ( tildephi3function ( evM (B1,i,1), evM (B1,i,2), evM (B1,i,3), evM (B1,j,1), evM (B1,j,2), evM (B1,j,3), evM (B2,i,1), evM (B2,i,2), evM (B2,i,3), evM (B2,j,1), evM (B2,j,2), evM (B2,j,3) )) functionNo2 =(i,j) -> ( tildephi3function ( evM (A1,i,1), evM (A1,i,2), evM (A1,i,3), evM (A1,i,1), evM (A1,i,2), evM (A1,i,3), evM (B2,j,1), evM (B2,j,2), evM (B2,j,3), evM (B2,j,1), evM (B2,j,2), evM (B2,j,3) )- tildephi3function ( evM (A2,i,1), evM (A2,i,2), evM (A2,i,3), evM (A2,i,1), evM (A2,i,2), evM (A2,i,3), evM (B1,j,1), evM (B1,j,2), evM (B1,j,3), evM (B1,j,1), evM (B1,j,2), evM (B1,j,3) ) ) M1 = matrix ( {{ functionNo1 (1,1),functionNo1 (1,2),functionNo1 (1,3)}, { functionNo1 (2,1),functionNo1 (2,2),functionNo1 (2,3)}, { functionNo1 (3,1),functionNo1 (3,2),functionNo1 (3,3)} }); M2 = matrix ( {{ functionNo2 (1,1),functionNo2 (1,2),functionNo2 (1,3)}, { functionNo2 (2,1),functionNo2 (2,2),functionNo2 (2,3)}, { functionNo2 (3,1),functionNo2 (3,2),functionNo2 (3,3)} }); newparttildew1 = (matrix ({{x1,x2,x3}}) * M1 * transpose (matrix ({{l1,l2,l3}})))_0_0 ; newparttildew2 = (matrix ({{y1,y2,y3}}) * M1 * transpose (matrix ({{l4,l5,l6}})))_0_0 ; newparttildew3= (matrix ({{x1,x2,x3}}) * M2 * transpose (matrix ({{l4,l5,l6}})))_0_0 ; tildew = ( newparttildew1 + newparttildew2 + newparttildew3); tempor = -tildew+tildeg1*f1+tildeg2*f2 - 2*s0 * (l1+l2+l3) + 2*s1* (l4+l5+l6); --- VERY IMPORTANT FINAL CHECK 2*q * (x1+x2+x3)- tempor == 0 -- answer true, proving [P2, Proposition 4.3] end ---------------------------------------------------------------------------------- ----- The following code is just an example of substitution to a nongeneric case ----- keeping the degrees of the variables subslist = {x1 => 0, x2 => x3, y1 => y1,y2 => y2,y3 => 0, z => z, A1p13=> A2p23 ,A1p23=>5*A2p23, A2p12 => A2p12,A2p13=> 0 ,A2p23=> A2p12, B1p11 =>B1p11, B1p12 => 3*B1p11, B1p13=> 0, B1p22 =>0, B1p23=>0 ,B1p33=> 0, B2p11=> 0,B2p12 =>B1p11 ,B2p13=> 5*B1p11, B2p22=>0,B2p23=>0 ,B2p33=>0}; specificIY = substitute ( IY,subslist); isHomogeneous specificIY codim specificIY betti res specificIY ---------------------------------------------------------------------------------- ----- The following code is an example of substitution to a nongeneric case ----- with change of the degrees of the variables subslist = { x1 => x1,x2 => y3,x3 => x2, y1 => y1,y2 => y2,y3 => 9*x3, z => 5, A1p12 => 1,A1p13=>2 ,A1p23=>0, A2p12 => 1,A2p13=> 3 ,A2p23=> 1, B1p11 =>1, B1p12 => 5, B1p13=> 9, B1p22 =>1, B1p23=>1 ,B1p33=> 1, B2p11=> -1,B2p12 => 2,B2p13=> 1, B2p22=>1,B2p23=>7 ,B2p33=>53}; specificIYbefore = substitute ( IY,subslist); specificS = kk [ y1,y2,y3,x1,x2,x3,s0,s1, Degrees => {8:1}] specificIY = sub (specificIYbefore,specificS) isHomogeneous specificIY codim specificIY betti res specificIY