# primary decomposition

## 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*b-c*d, (a*c-b*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 Shimoyama-Yokoyama, ShimoyamaYokoyama (missing documentation), Eisenbud-Huneke-Vasconcelos, EisenbudHunekeVasconcelos (missing documentation), a hybrid of these two algorithms (ShimoyamaYokoyama and EisenbudHunekeVasconcelos), Hybrid, and Gianni-Trager-Zacharias, GTZ. The default algorithm in Macaulay2 is Shimoyama-Yokoyama. 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.