The Rees algebra of a module M over a ring R is here defined, following the paper What is the Rees algebra of a module? David Eisenbud, Craig Huneke and Bernd Ulrich, Proc. Amer. Math. Soc. 131 (2003) 701--708, as follows: If h:F→M is a surjection from a free module, and g: M→G is the universal map to a free module, then the Rees algebra of M is the image of the induced map of Sym(gh): Sym(F)→Sym(G), and thus can be computed with symmetricKernel(gh). The paper above proves that if M is isomorphic to an ideal with inclusion g: M→R (or, in characteristic zero but not in characteristic >0 if M is a submodule of a free module and g’: M→G) is any injection), then the Rees algebra is equal to the image of g’h, so it is unnecessary to compute the universal embedding.
This package gives the user a choice between two methods for finding the defining ideal of the Rees algebra of an ideal or module M over a ring R: The call
reesIdeal(M)
computes the universal embedding g: M→G and a surjection f: F→M and returns the result of symmetricKernel(gf). On the other hand, if the user knows an non-zerodivisor a∈R such that M[a-1 is a free module (this is the case, for example, if a ∈M⊂R and a is a non-zerodivisor), then it is often much faster to call
reesIdeal(M,a)
which finds a surjection f: F→M and returns (J:a∞) ⊂Sym(F), the saturation of the ideal J:=(ker f)Sym(F). Note that this gives the correct answer even under the slightly weaker hypothesis that M[a-1] is “of linear type”. (See also isLinearType.)
Historical Background: The Rees Algebra of an ideal is the basic commutative algebra analogue of the blow up operation in algebraic geometry. It has many applications, and a great deal of modern work in commutative algebra has been devoted to it. The term “Rees Algebra” (of an ideal I in a ring R, say) is used here to refer to the ring R[It]⊂R[t] which is sometimes called the “blowup algebra” instead. (The origin of the name may be traced to a paper by David Rees (On a problem of Zariski, Illinois J. Math. (1958) 145-149), where Rees used the ring R[It,t-1], now also called the “extended Rees Algebra.”)
i1 : kk = ZZ/101; |
i2 : S=kk[x_0..x_4]; |
i3 : i=monomialCurveIdeal(S,{2,3,5,6}) 2 3 2 2 2 2 o3 = ideal (x x - x x , x - x x , x x - x x , x - x x , x x - x x , x x 2 3 1 4 2 0 4 1 2 0 3 3 2 4 1 3 0 4 0 3 ------------------------------------------------------------------------ 2 2 3 2 - x x , x x - x x x , x - x x ) 1 4 1 3 0 2 4 1 0 4 o3 : Ideal of S |
i4 : time V1 = reesIdeal i; -- used 0.147386 seconds o4 : Ideal of S[w , w , w , w , w , w , w , w ] 0 1 2 3 4 5 6 7 |
i5 : time V2 = reesIdeal(i,i_0); -- used 0.389411 seconds o5 : Ideal of S[w , w , w , w , w , w , w , w ] 0 1 2 3 4 5 6 7 |
This example is particularly interesting upon a bit more exploration.
i6 : numgens V1 o6 = 15 |
i7 : numgens V2 o7 = 15 |
The difference is striking and, at least in part, explains the difference in computing time. Furthermore, if we compute a Grobner basis for both and compare the two matrices, we see that we indeed got the same ideal.
i8 : M1 = gens gb V1; 1 84 o8 : Matrix (S[w , w , w , w , w , w , w , w ]) <--- (S[w , w , w , w , w , w , w , w ]) 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 |
i9 : M2 = gens gb V2; 1 84 o9 : Matrix (S[w , w , w , w , w , w , w , w ]) <--- (S[w , w , w , w , w , w , w , w ]) 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 |
i10 : use ring M2 o10 = S[w , w , w , w , w , w , w , w ] 0 1 2 3 4 5 6 7 o10 : PolynomialRing |
i11 : M1 = substitute(M1, ring M2); 1 84 o11 : Matrix (S[w , w , w , w , w , w , w , w ]) <--- (S[w , w , w , w , w , w , w , w ]) 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 |
i12 : M1 == M2 o12 = true |
i13 : numgens source M2 o13 = 84 |
Another example illustrates the power and usage of the code. We also show the output in this example. While a bit messy, the user can see how we handle the degrees in both cases.
i14 : S=kk[a,b,c] o14 = S o14 : PolynomialRing |
i15 : m=matrix{{a,0},{b,a},{0,b}} o15 = | a 0 | | b a | | 0 b | 3 2 o15 : Matrix S <--- S |
i16 : i=minors(2,m) 2 2 o16 = ideal (a , a*b, b ) o16 : Ideal of S |
i17 : time reesIdeal i -- used 0.0700949 seconds 2 o17 = ideal (b*w - a*w , b*w - a*w , w - w w ) 1 2 0 1 1 0 2 o17 : Ideal of S[w , w , w ] 0 1 2 |
i18 : res i 1 3 2 o18 = S <-- S <-- S <-- 0 0 1 2 3 o18 : ChainComplex |
i19 : m=random(S^3,S^{4:-1}) o19 = | 24a-36b-30c -22a-29b-24c -47a-39b-18c 2a+16b+22c | | -29a+19b+19c -38a-16b+39c -13a-43b-15c 45a-34b-48c | | -10a-29b-8c 21a+34b+19c -28a-47b+38c -47a+47b+19c | 3 4 o19 : Matrix S <--- S |
i20 : i=minors(3,m) 3 2 2 3 2 2 2 o20 = ideal (49a + 27a b + 45a*b + 12b - 42a c + 16a*b*c - 42b c + 30a*c ----------------------------------------------------------------------- 2 3 3 2 2 3 2 2 + 9b*c + 26c , 17a - 30a b + 16a*b + 13b - 17a c - 26a*b*c + 29b c ----------------------------------------------------------------------- 2 2 3 3 2 2 3 2 - 45a*c + 43b*c + 14c , - 23a + 34a b - 43a*b + 2b - 14a c - ----------------------------------------------------------------------- 2 2 2 3 3 2 2 3 15a*b*c - 48b c + 3a*c + 35b*c - 10c , 29a - 15a b - 3a*b - 15b + ----------------------------------------------------------------------- 2 2 2 2 3 13a c - 34a*b*c - 43b c - 21a*c - 13b*c - 22c ) o20 : Ideal of S |
i21 : time I=reesIdeal (i,i_0); -- used 0.0316966 seconds o21 : Ideal of S[w , w , w , w ] 0 1 2 3 |
i22 : transpose gens I o22 = {-1, -4} | w_0c-27w_1a+27w_1b+16w_1c+18w_2a+3w_2b-27w_2c-50w_3a+44w_3b {-1, -4} | w_0b+4w_1b+42w_1c+3w_2a-31w_2b+26w_2c-22w_3a-47w_3b-31w_3c {-1, -4} | w_0a-33w_1a+44w_1b+2w_1c-31w_2a+49w_2b-24w_2c+7w_3a+11w_3b+ {-3, -9} | w_0^3-13w_0^2w_1+41w_0w_1^2-28w_1^3+12w_0^2w_2-45w_0w_1w_2- ----------------------------------------------------------------------- +42w_3c 3w_3c 31w_1^2w_2+14w_0w_2^2-41w_1w_2^2-35w_2^3+2w_0^2w_3-40w_0w_1w_3-12w_1^2w ----------------------------------------------------------------------- _3-29w_0w_2w_3+2w_1w_2w_3-16w_2^2w_3+50w_0w_3^2+23w_1w_3^2+7w_2w_3^2- ----------------------------------------------------------------------- | | | 39w_3^3 | 4 1 o22 : Matrix (S[w , w , w , w ]) <--- (S[w , w , w , w ]) 0 1 2 3 0 1 2 3 |
i23 : i=minors(2,m); o23 : Ideal of S |
i24 : time I=reesIdeal (i,i_0); -- used 0.091145 seconds o24 : Ideal of S[w , w , w , w , w , w , w , w , w , w , w , w , w , w , w , w , w , w ] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Investigating plane curve singularities
i25 : R = ZZ/32003[x,y,z] o25 = R o25 : PolynomialRing |
i26 : I = ideal(x,y) o26 = ideal (x, y) o26 : Ideal of R |
i27 : cusp = ideal(x^2*z-y^3) 3 2 o27 = ideal(- y + x z) o27 : Ideal of R |
i28 : RI = reesIdeal(I) o28 = ideal(y*w - x*w ) 0 1 o28 : Ideal of R[w , w ] 0 1 |
i29 : S = ring RI o29 = S o29 : PolynomialRing |
i30 : totalTransform = substitute(cusp, S) + RI 3 2 o30 = ideal (- y + x z, y*w - x*w ) 0 1 o30 : Ideal of S |
i31 : D = decompose totalTransform -- the components are the proper transform of the cuspidal curve and the exceptional curve 3 2 2 2 2 o31 = {ideal (y*w - x*w , y - x z, x*z*w - y w , z*w - y*w ), ideal (y, 0 1 0 1 0 1 ----------------------------------------------------------------------- x)} o31 : List |
i32 : totalTransform = first flattenRing totalTransform 3 2 o32 = ideal (- y + x z, w y - w x) 0 1 ZZ o32 : Ideal of -----[w , w , x, y, z] 32003 0 1 |
i33 : L = primaryDecomposition totalTransform 3 2 2 2 2 2 o33 = {ideal (w y - w x, y - x z, w x*z - w y , w z - w y), ideal (y , x*y, 0 1 0 1 0 1 ----------------------------------------------------------------------- 2 x , w y - w x)} 0 1 o33 : List |
i34 : apply(L, i -> (degree i)/(degree radical i)) o34 = {1, 2} o34 : List |
The total transform of the cusp contains the exceptional with multiplicity two. The proper transform of the cusp is a smooth curve but is tangent to the exceptional curve.
i35 : use ring L_0 ZZ o35 = -----[w , w , x, y, z] 32003 0 1 o35 : PolynomialRing |
i36 : singular = ideal(singularLocus(L_0)); ZZ o36 : Ideal of -----[w , w , x, y, z] 32003 0 1 |
i37 : SL = saturate(singular, ideal(x,y,z)); ZZ o37 : Ideal of -----[w , w , x, y, z] 32003 0 1 |
i38 : saturate(SL, ideal(w_0,w_1)) -- we get 1 so it is smooth. o38 = ideal 1 ZZ o38 : Ideal of -----[w , w , x, y, z] 32003 0 1 |