This routine 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 command reesIdeal(M) computes a versal embedding $g: M\to G$ and a surjection $f: F\to M$ and returns the result of symmetricKernel(gf).
When M is an ideal (the usual case) or in characteristic 0, the same ideal can be computed by an alternate method that is often faster. If the user knows a non-zerodivisor $a\in{} R$ such that $M[a^{-1}$ is a free module (for example, when M is an ideal, any non-zerodivisor $a \in{} M$ then it is often much faster to compute reesIdeal(M,a) which computes the saturation of the defining ideal of the symmetric algebra of M with respect to a. This gives the correct answer even under the slightly weaker hypothesis that $M[a^{-1}]$ is of linear type. (See also isLinearType.)
i1 : kk = ZZ/101; |
i2 : S=kk[x_0..x_4]; |
i3 : i= trim 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 1 3 ------------------------------------------------------------------------ 3 2 - x x x , x - x x ) 0 2 4 1 0 4 o3 : Ideal of S |
i4 : time V1 = reesIdeal i; -- used 0.0613323 seconds o4 : Ideal of S[w ..w ] 0 6 |
i5 : time V2 = reesIdeal(i,i_0); -- used 0.240291 seconds o5 : Ideal of S[w ..w ] 0 6 |
The following example shows how we handle degrees
i6 : S=kk[a,b,c] o6 = S o6 : PolynomialRing |
i7 : m=matrix{{a,0},{b,a},{0,b}} o7 = | a 0 | | b a | | 0 b | 3 2 o7 : Matrix S <--- S |
i8 : i=minors(2,m) 2 2 o8 = ideal (a , a*b, b ) o8 : Ideal of S |
i9 : time I1 = reesIdeal i; -- used 0.044227 seconds o9 : Ideal of S[w ..w ] 0 2 |
i10 : time I2 = reesIdeal(i,i_0); -- used 0.0153234 seconds o10 : Ideal of S[w ..w ] 0 2 |
i11 : transpose gens I1 o11 = {-1, -3} | aw_1-bw_2 | {-1, -3} | aw_0-bw_1 | {-2, -4} | w_1^2-w_0w_2 | 3 1 o11 : Matrix (S[w ..w ]) <--- (S[w ..w ]) 0 2 0 2 |
i12 : transpose gens I2 o12 = {-1, -3} | aw_1-bw_2 | {-1, -3} | aw_0-bw_1 | {-2, -4} | w_1^2-w_0w_2 | 3 1 o12 : Matrix (S[w ..w ]) <--- (S[w ..w ]) 0 2 0 2 |
Investigating plane curve singularities:
Proj of the Rees algebra of I \subset{} R is the blowup of I in spec R. Thus the Rees algebra is a basic construction in resolution of singularities. Here we work out a simple case:
i13 : R = ZZ/32003[x,y] o13 = R o13 : PolynomialRing |
i14 : I = ideal(x,y) o14 = ideal (x, y) o14 : Ideal of R |
i15 : cusp = ideal(x^2-y^3) 3 2 o15 = ideal(- y + x ) o15 : Ideal of R |
i16 : RI = reesIdeal(I) o16 = ideal(x*w - y*w ) 0 1 o16 : Ideal of R[w ..w ] 0 1 |
i17 : S = ring RI o17 = S o17 : PolynomialRing |
i18 : totalTransform = substitute(cusp, S) + RI 3 2 o18 = ideal (- y + x , x*w - y*w ) 0 1 o18 : Ideal of S |
i19 : D = decompose totalTransform -- the components are the strict transform of the cuspidal curve and the exceptional curve 3 2 2 2 2 o19 = {ideal (y, x), ideal (x*w - y*w , y - x , y w - x*w , y*w - w )} 0 1 0 1 0 1 o19 : List |
i20 : totalTransform = first flattenRing totalTransform 3 2 o20 = ideal (- y + x , w x - w y) 0 1 ZZ o20 : Ideal of -----[w ..w , x..y] 32003 0 1 |
i21 : L = primaryDecomposition totalTransform 2 2 3 2 2 o21 = {ideal (y , x*y, x , w x - w y), ideal (w x - w y, y - x , w y - w x, 0 1 0 1 0 1 ----------------------------------------------------------------------- 2 2 w y - w )} 0 1 o21 : List |
i22 : apply(L, i -> (degree i)/(degree radical i)) o22 = {2, 1} o22 : List |
The total transform of the cusp contains the exceptional divisor with multiplicity two. The strict transform of the cusp is a smooth curve but is tangent to the exceptional divisor
i23 : use ring L_0 ZZ o23 = -----[w ..w , x..y] 32003 0 1 o23 : PolynomialRing |
i24 : singular = ideal(singularLocus(L_0)); ZZ o24 : Ideal of -----[w ..w , x..y] 32003 0 1 |
i25 : SL = saturate(singular, ideal(x,y)); ZZ o25 : Ideal of -----[w ..w , x..y] 32003 0 1 |
i26 : saturate(SL, ideal(w_0,w_1)) o26 = ideal 1 ZZ o26 : Ideal of -----[w ..w , x..y] 32003 0 1 |
This shows that the strict transform is smooth.
The object reesIdeal is a method function with options.