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

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 |

- PlaneCurveSingularities -- Using the Rees Algebra to resolve plane curve singularities
- distinguished -- Compute the distinguished subvarieties of a pullback, intersection or cone
- intersectInP -- Compute distinguished varieties for an intersection in A^n or P^n

- David Eisenbud <de@msri.org>
- Amelia Taylor <originalbrickhouse@gmail.com>
- Sorin Popescu <sorin@math.sunysb.edu>
- Michael E. Stillman <mike@math.cornell.edu>

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.

- Functions and commands
- analyticSpread -- Compute the analytic spread of a module or ideal
- distinguished -- Compute the distinguished subvarieties of a pullback, intersection or cone
- expectedReesIdeal -- symmetric algebra ideal plus jacobian dual
- intersectInP -- Compute distinguished varieties for an intersection in A^n or P^n
- isLinearType -- Determine whether module has linear type
- isReduction -- Determine whether an ideal is a reduction
- jacobianDual -- Computes the 'jacobian dual', part of a method of finding generators for Rees Algebra ideals
- minimalReduction -- Find a minimal reduction of an ideal
- multiplicity -- Compute the Hilbert-Samuel multiplicity of an ideal
- normalCone -- The normal cone of a subscheme
- reductionNumber -- Reduction number of one ideal with respect to another
- reesAlgebra -- Compute the defining ideal of the Rees Algebra
- reesIdeal -- Compute the defining ideal of the Rees Algebra
- specialFiber -- Special fiber of a blowup
- specialFiberIdeal -- Special fiber of a blowup
- symmetricAlgebraIdeal -- Ideal of the symmetric algebra of an ideal or module
- symmetricKernel -- Compute the Rees ring of the image of a matrix
- versalEmbedding -- Compute a versal embedding
- whichGm -- Largest Gm satisfied by an ideal

- Symbols
- Jacobian -- Choose whether to use the Jacobian dual in the computation
- Tries, see minimalReduction(..., Tries => ...) -- Set the number of random tries to compute a minimal reduction
- PlaneCurveSingularities -- Using the Rees Algebra to resolve plane curve singularities