introduction
It is now possible to find the primary decomposition of an ideal in Macaulay2. The function
primaryDecomposition (missing documentation) applied to an ideal
I returns a list of ideals. These ideals have two key features, first, their intersection is equal to the ideal
I and second the ideals are primary. Therefore these ideals form a primary decomposition of the ideal. Since the ideals are primary their corresponding varieties are irreducible. The decomposition returned is irredundant, which means that the radicals of the ideals returned are distinct prime ideals which are the associated prime ideals for
I (see
associated primes of an ideal).
example
i1 : R = ZZ/101[a..d];

i2 : I = ideal(a*bc*d, (a*cb*d)^2);
o2 : Ideal of R

i3 : primaryDecomposition I
2 2 2
o3 = {ideal (d , a*d, a*b  c*d, a ), ideal (a*c + b*d + 2c*d, b + 2b*c +

2 2 2 2 2
c , a*b  c*d, a + 2a*d + d ), ideal (c , b*c, b , a*b  c*d), ideal

2 2 2 2
(a*c + b*d  2c*d, b  2b*c + c , a*b  c*d, a  2a*d + d )}
o3 : List

To obtain the associated prime ideals corresponding to the primary components returned by
primaryDecomposition use the function
associatedPrimes. The first entry in the list given by
associatedPrimes is the radical of the first entry in the list given by
primary decomposition.
strategies
The algorithms available for computing primary decompositions are ShimoyamaYokoyama,
ShimoyamaYokoyama (missing documentation), EisenbudHunekeVasconcelos,
EisenbudHunekeVasconcelos (missing documentation), a hybrid of these two algorithms (ShimoyamaYokoyama and EisenbudHunekeVasconcelos),
Hybrid, and GianniTragerZacharias,
GTZ. The default algorithm in Macaulay2 is ShimoyamaYokoyama. Two other arguments for the strategy option are available. These arguments are
Monomial which computes the unique irreducible decomposition of a monomial ideal and
Binomial which computes a cellular decomposition of a binomial ideal. For more information on the strategy options see
primaryDecomposition(..., Strategy => ...) (missing documentation).
i4 : primaryDecomposition(I, Strategy => EisenbudHunekeVasconcelos)
2 2 2
o4 = {ideal (d , a*d, a*b  c*d, a ), ideal (a*c + b*d + 2c*d, b + 2b*c +

2 2 2 2 2
c , a*b  c*d, a + 2a*d + d ), ideal (c , b*c, b , a*b  c*d), ideal

2 2 2 2
(a*c + b*d  2c*d, b  2b*c + c , a*b  c*d, a  2a*d + d )}
o4 : List

warning
Warning (15 May 2001): This function is under construction. For example, the strategies,
Monomial,
GTZ and
Hybrid are not written, or do not function as stated. Further, both the
Monomial and
Binomial strategies may be moved to separate functions.