Primary Decomposition of Modules
In this case, the only available strategy is similar to the Eisenbud-Huneke-Vasconcelos strategy and is implemented by Justin Chen. Optionally, it is possible to specify the strategy for finding the embedded components by passing
Strategy => Hybrid{strategy for getEmbeddedComponents}
Primary Decomposition of Ideals
In this case, the strategy option value should be one of the following:
-
Monomial -- uses Alexander duality of a monomial ideal
-
Binomial -- finds a cellular resolution of a binomial ideal (see binomialPrimaryDecomposition)
-
Hybrid -- uses parts of the above two algorithms
-
ShimoyamaYokoyama -- uses the algorithm of Shimoyama-Yokoyama
-
EisenbudHunekeVasconcelos -- uses the algorithm of Eisenbud-Huneke-Vasconcelos
-
GTZ -- uses the algorithm of Gianni-Trager-Zacharias (NOT YET IMPLEMENTED)
The strategies are implemented as hooks, meaning that each strategy is attempted in the reverse order in which it was added until one is successful.
i1 : hooks(primaryDecomposition, Ideal)
o1 = {0 => (primaryDecomposition, Ideal, Strategy => Comodule) }
{1 => (primaryDecomposition, Ideal, Strategy => EisenbudHunekeVasconcelos)}
{2 => (primaryDecomposition, Ideal, Strategy => ShimoyamaYokoyama) }
{3 => (primaryDecomposition, Ideal, Strategy => Hybrid) }
{4 => (primaryDecomposition, Ideal, Strategy => Monomial) }
o1 : NumberedVerticalList
|
Strategy => Monomial
This strategy only works for monomial ideals, and is automatically used for such ideals. See the chapter on "Monomial Ideals" in the Macaulay2 book.
i2 : Q = QQ[a..d]
o2 = Q
o2 : PolynomialRing
|
i3 : I = ideal(a^2*b,a*c^2,b*d,c*d^2);
o3 : Ideal of Q
|
i4 : primaryDecomposition(I, Strategy => Monomial)
2 2 2
o4 = {ideal (d, a), ideal (c, b), ideal (b, a, d ), ideal (d, c , a ), ideal
------------------------------------------------------------------------
2 2
(b, d , c )}
o4 : List
|
Strategy => EisenbudHunekeVasconcelos
See Direct methods for primary decomposition by Eisenbud, Huneke, and Vasconcelos, Invent. Math. 110, 207-235 (1992).
i5 : primaryDecomposition(I, Strategy => EisenbudHunekeVasconcelos)
2 2 2
o5 = {ideal (d, a), ideal (c, b), ideal (b, a, d ), ideal (d, c , a ), ideal
------------------------------------------------------------------------
2 2
(b, d , c )}
o5 : List
|
Strategy => ShimoyamaYokoyama
This strategy is the default for non-monomial ideals. See Localization and Primary Decomposition of Polynomial ideals by Shimoyama and Yokoyama, J. Symb. Comp. 22, 247-277 (1996).
i6 : primaryDecomposition(I, Strategy => ShimoyamaYokoyama)
2 2 2
o6 = {ideal (d, a), ideal (c, b), ideal (b, a, d ), ideal (d, c , a ), ideal
------------------------------------------------------------------------
2 2
(b, d , c )}
o6 : List
|
Strategy => Hybrid{associated primes strategy, localize strategy}
Uses a hybrid of the Eisenbud-Huneke-Vasconcelos and Shimoyama-Yokoyama strategies. To use this strategy, the field Strategy should be a list of two integers, indicating the strategy to use for finding associated primes and localizing, respectively.
Warning: Setting the second parameter to 1 works only if the ideal is homogeneous and equidimensional.
i7 : Q = QQ[x,y];
|
i8 : I = intersect(ideal(x^2), ideal(y^2))
2 2
o8 = ideal(x y )
o8 : Ideal of Q
|
i9 : primaryDecomposition(I, Strategy => Hybrid{1,1})
2 2
o9 = {ideal x , ideal y }
o9 : List
|
i10 : primaryDecomposition(I, Strategy => Hybrid{1,2})
2 2
o10 = {ideal x , ideal y }
o10 : List
|
i11 : primaryDecomposition(I, Strategy => Hybrid{2,1})
2 2
o11 = {ideal x , ideal y }
o11 : List
|
i12 : primaryDecomposition(I, Strategy => Hybrid{2,2})
2 2
o12 = {ideal x , ideal y }
o12 : List
|