The Rees Algebra of an ideal is the commutative algebra analogue of the blow up in algebraic geometry. (In fact, the “Rees Algebra” is sometimes called the “blowup algebra”.) A great deal of modern commutative algebra is devoted to studying them.
Classically the Rees algebra appeared as the bihomogeneous coordinate ring of the blowup of a projective variety along a subvariety or subscheme, used for resolution of singularities. Though this is computationally slow on interesting examples, we illustrate with some elementary cases of resolution of plane curve singularities in PlaneCurveSingularities.
The Rees algebra was studied in the commutative algebra context (in the case where M is an ideal of a ring R), by David Rees in a famous paper,
On a problem of Zariski, Illinois J. Math. (1958) 145-149).
In fact, Rees mainly studied the ring R[It,t^{-1}], now also called the ‘extended Rees Algebra’ of I.
The original goal of this package, first written around 2002, was to compute the Rees algebra of a module as it is defined in the paper What is the Rees algebra of a module?, by Craig Huneke, David Eisenbud and Bernd Ulrich, Proc. Am. Math. Soc. 131, 701-708, 2002. It has since expanded to include routines for computing many of the invariants of an ideal or module defined in terms of Rees algebras.
The Rees algebra, or more precisely the associated graded ring, which we compute as a biproduct, plays a central role in modern intersection theory: it is the basis of the Fulton-MacPherson definition of the intersection product in the Chow ring. We illustrate this in distinguished and intersectInP.
The Rees algebra of a module M is defined by a certain ideal in the symmetric algebra Sym(M) of M, or, as in this package, by an ideal in the symmetric algebra of any free module F that maps onto M. When φ: M →G is the versal embedding of M, then, by the definition of Huneke-Eisenbud-Ulrich, the Rees ideal of M is the kernel of Sym(φ). Thus the Rees Algebra of M is the image of Sym(φ).
In most cases the kernel of the Sym(φ) is the same for any embedding φ of M into a free module:
Theorem (Eisenbud-Huneke-Ulrich, Thms 0.2 and 1.4): Let R be a Noetherian ring and let M be a finitely generated R-module. Let φ: M →G be a versal map of M to a free module. Assume that φ is an inclusion, and let ψ: M →G’ be any inclusion. If R is torsion-free over ℤ or R is unmixed and generically Gorenstein, or M is free locally at each associated prime of R, or G=R, then the kernel of Sym(φ) and the kernel of Sym(ψ) are equal.
It follows that in the good cases above the Rees ideal is equal to the saturation of the defining ideal of symmetric algebra of M with respect to any element f of the ground ring such that M[f^{-1}] is free, or is simply of linear type, meaning that Sym(φ) is a monomorphism. This is the case, for example, when M is an ideal and M[f^{-1}] is generated by a regular sequence. This fact often leads to a faster computation than computing the kernel of Sym(φ) directly.
Here is an example of the pathological case of inclusions φ: M →G and ψ: M →G’ where ker(φ) ≠ker(ψ). In the following, any finite characteristic would work as well.
i1 : p = 5; |
i2 : R = ZZ/p[x,y,z]/(ideal(x^p,y^p)+(ideal(x,y,z))^(p+1)); |
i3 : M = module ideal(z); |
It is easy to check that M ≅R^{1}/(x,y,z)^{p}. We write iota: M→R^{1} for the embedding as an ideal and psi for the embedding M →R^{2} sending z to (x,y).
i4 : iota = map(R^1,M,matrix{{z}}); o4 : Matrix |
i5 : psi = map(R^2,M,matrix{{x},{y}}); o5 : Matrix |
Finally, a versal embedding is M →R^{3}, sending z to (x,y,z):
i6 : phi = versalEmbedding(M); o6 : Matrix |
We now compute the kernels of the three maps on symmetric algebras:
i7 : Iiota = symmetricKernel iota; R[w ] 0 o7 : Ideal of ------------------------------------------------------------------------------------------------------------------------------------------------------------------ 5 4 4 2 3 3 2 3 3 2 2 2 2 2 3 2 4 3 2 2 3 4 4 2 3 3 2 4 (z w , y*z w , x*z w , y z w , x*y*z w , x z w , y z w , x*y z w , x y*z w , x z w , y z*w , x*y z*w , x y z*w , x y*z*w , x z*w , x*y w , x y w , x y w , x y*w ) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
i8 : Ipsi = symmetricKernel psi; R[w ] 0 o8 : Ideal of ------------------------------------------------------------------------------------------------------------------------------------------------------------------ 5 4 4 2 3 3 2 3 3 2 2 2 2 2 3 2 4 3 2 2 3 4 4 2 3 3 2 4 (z w , y*z w , x*z w , y z w , x*y*z w , x z w , y z w , x*y z w , x y*z w , x z w , y z*w , x*y z*w , x y z*w , x y*z*w , x z*w , x*y w , x y w , x y w , x y*w ) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
i9 : Iphi = symmetricKernel phi; R[w ] 0 o9 : Ideal of ------------------------------------------------------------------------------------------------------------------------------------------------------------------ 5 4 4 2 3 3 2 3 3 2 2 2 2 2 3 2 4 3 2 2 3 4 4 2 3 3 2 4 (z w , y*z w , x*z w , y z w , x*y*z w , x z w , y z w , x*y z w , x y*z w , x z w , y z*w , x*y z*w , x y z*w , x y*z*w , x z*w , x*y w , x y w , x y w , x y*w ) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
and check that the ones corresponding to phi and iota are equal, whereas the ones corresponding to psi and phi are not:
i10 : Iiota == Iphi o10 = true |
i11 : Ipsi == Iphi o11 = false |
In fact, they differ in degree p:
i12 : numcols basis(p,Iphi) o12 = 3 |
i13 : numcols basis(p,Ipsi) o13 = 1 |
Version 2.2 of this package was accepted for publication in volume 8 of the journal The Journal of Software for Algebra and Geometry on 21 May 2018, in the article The ReesAlgebra package in Macaulay2. That version can be obtained from the journal or from the Macaulay2 source code repository, http://github.com/Macaulay2/M2/blob/master/M2/Macaulay2/packages/ReesAlgebra.m2, commit number 0ccfca1d3d08d13ed0da78435b2106209fcee1b1.
This documentation describes version 2.3 of ReesAlgebra.
The source code from which this documentation is derived is in the file ReesAlgebra.m2.