# Strategy => "MacaulayMatrix" -- strategy for computing Noetherian operators

This strategy implements Algorithm 2 in Noetherian Operators and Primary Decomposition, and supports computing Noetherian operators of either primary ideals (noetherianOperators(Ideal)), or primary components of unmixed ideals (noetherianOperators(Ideal,Ideal)).

The strategy relies on computing the kernel of successively larger Macaulay matrices. The behavior can be controlled with optional arguments:

DegreeLimit => ...: takes an integer $d$, and stops computation at degree $d$. Note that if $d$ is set too low, this may lead to an incomplete answer. If unset, stops computation when the dimension of the kernel stabilizes.

 i1 : R = QQ[x,y,z]; i2 : I = (ideal(x,y,z))^3; o2 : Ideal of R i3 : noetherianOperators(I, Strategy => "MacaulayMatrix") o3 = {| 1 |, | dz |, | dy |, | dx |, | dz^2 |, | dydz |, | dxdz |, | dy^2 |, ------------------------------------------------------------------------ | dxdy |, | dx^2 |} o3 : List i4 : noetherianOperators(I, Strategy => "MacaulayMatrix", DegreeLimit => 1) o4 = {| 1 |, | dz |, | dy |, | dx |} o4 : List

KernelStrategy => ...: takes a string "Default" or "Gaussian". The "Default" strategy uses the Macaulay2 builtin function kernel to compute kernels (via Grobner bases). The strategy "Gaussian" computes kernels directly via a Gaussian reduction, and may offer performance improvements compared to "Default".

IntegralStrategy => ...: takes a boolean value. If true, uses the Mourrain algorithm to compute the kernel of the MacaulayMatrix, which constructs columns of the Macaulay matrix by taking integrals of the columns in the previous step. If false, uses the method outlined in Algorithm 1 in Noetherian Operators and Primary Decomposition. If unset, will choose automatically. See: B. Mourrain. Isolated points, duality and residues. J. Pure Appl. Algebra, 117/118:469-493, 1997. Algorithms for algebra (Eindhoven, 1996).

DependentSet => ...: takes a list of variables. For details, see DependentSet.