The function primaryDecomposition 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).

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 2 o3 = {ideal (d , a*d, a*b - c*d, a ), 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 ), 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. Each entry in the list given by `associatedPrimes` is the radical of the respective entry in the list given by `primary decomposition`.