# ReesAlgebra -- Compute Rees algebras and their invariants

## Description

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 $\phi: M \to 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(\phi)$. Thus the Rees Algebra of M is the image of $Sym(\phi)$.

In most cases the kernel of the $Sym(\phi)$ is the same for any embedding $\phi$ 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 $\phi: M \to G$ be a versal map of $M$ to a free module. Assume that $\phi$ is an inclusion, and let $\psi: M \to G'$ be any inclusion. If $R$ is torsion-free over $\ZZ$ 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(\phi)$ and the kernel of $Sym(\psi)$ 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(\phi)$ 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(\phi)$ directly.

Here is an example of the pathological case of inclusions $\phi: M \to G$ and $\psi: M \to G'$ where $ker(\phi) \neq ker(\psi)$. 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 \cong R^1/(x,y,z)^p. We write iota: M\to R^1 for the embedding as an ideal and psi for the embedding M \to 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 \to 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

## Authors

• David Eisenbud
• Amelia Taylor
• Sorin Popescu
• Michael E. Stillman

## Certification Version 2.2 of this package was accepted for publication in volume 8 of 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.

## Version

This documentation describes version 2.3 of ReesAlgebra.

## Source code

The source code from which this documentation is derived is in the file ReesAlgebra.m2.

## Exports

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

## For the programmer

The object ReesAlgebra is .