This method contains an implementation of Algorithm 4.3 in the paper Primary decomposition of modules: a computational differential approach. This method can be seen as the reverse operation of computing a set of Noetherian operators for a primary module. For more details, see Section 4 of the paper Primary decomposition of modules: a computational differential approach.
i1 : R = QQ[x1,x2,x3,x4] o1 = R o1 : PolynomialRing |
i2 : U = image matrix{{x1*x2,x2*x3,x3*x4,x4*x1}, {x1^2,x2^2,x3^2,x4^2}} o2 = image | x1x2 x2x3 x3x4 x1x4 | | x1^2 x2^2 x3^2 x4^2 | 2 o2 : R-module, submodule of R |
i3 : dpd = differentialPrimaryDecomposition U o3 = {{ideal (x4, x2), {| 1 |}}, {ideal (x3, x1), {| 1 |}}, {ideal (x4, x3, | 0 | | 0 | ------------------------------------------------------------------------ x2), {| x1dx2 |, | x1dx2^2 |, | x1^2dx2^3+6x1dx2dx3 |, | | -1 | | -2dx2 | | -3x1dx2^2-6dx3 | | ------------------------------------------------------------------------ x1^2dx2^4+12x1dx2^2dx3 |}}, {ideal (x4, x3, x1), {| x2dx3 |, | x2dx3^2 -4x1dx2^3-24dx2dx3 | | -1 | | -2dx3 ------------------------------------------------------------------------ |, | x2^2dx3^3+6x2dx3dx4 |, | x2^2dx3^4+12x2dx3^2dx4 |}}, {ideal (x4, | | -3x2dx3^2-6dx4 | | -4x2dx3^3-24dx3dx4 | ------------------------------------------------------------------------ x2, x1), {| x3dx4 |, | x3dx4^2 |, | x3^2dx4^3+6x3dx1dx4 |, | | -1 | | -2dx4 | | -3x3dx4^2-6dx1 | | ------------------------------------------------------------------------ x3^2dx4^4+12x3dx1dx4^2 |}}, {ideal (x3, x2, x1), {| x4dx1 |, | x4dx1^2 -4x3dx4^3-24dx1dx4 | | -1 | | -2dx1 ------------------------------------------------------------------------ |, | x4^2dx1^3+6x4dx1dx2 |, | x4^2dx1^4+12x4dx1^2dx2 |}}, {ideal (x3 - | | -3x4dx1^2-6dx2 | | -4x4dx1^3-24dx1dx2 | ------------------------------------------------------------------------ x4, x2 - x4, x1 - x4), {| -1 |}}, {ideal (x3 + x4, x2 - x4, x1 + x4), {| | 1 | | ------------------------------------------------------------------------ 2 2 1 |}}, {ideal (x2 + x4, x1 + x3, x3 + x4 ), {| x4 |}}, {ideal (x4, x3, 1 | | x3 | ------------------------------------------------------------------------ x2, x1), {| -2dx1dx2dx3^2-2dx1^2dx3dx4 |}}} | 2dx1dx2^2dx3+dx1^2dx3^2+2dx1dx3dx4^2 | o3 : List |
i4 : M = dpd / (L -> getModuleFromNoetherianOperators(first L, last L)) // intersect o4 = image | x1x4 x3x4 x2x3 x1x2 | | x4^2 x3^2 x2^2 x1^2 | 2 o4 : R-module, submodule of R |
i5 : M == U o5 = true |
The object getModuleFromNoetherianOperators is a method function.