Given an ideal $I$ of a polynomial ring $R$ the set of differential operators of the quotient ring $R/I$ having order less than or equal to $k$ forms a finitely generated module over $R/I$. This routine returns its generating set.
The output is in the form of a hash table. The key BasisElts is a row vector of basic differential operators. The key PolyGens is a matrix over R whose column vectors represent differential operators of R/I in the following way. For each column vector, consider its image in R/I then take its dot product with the BasisElts. This gives a differential operator, and the set of these operators generates the differential operators of R/I of order k or less as an (R/I)-module.
i1 : R = QQ[x,y,z] o1 = R o1 : PolynomialRing |
i2 : I = ideal(x^2-y*z) 2 o2 = ideal(x - y*z) o2 : Ideal of R |
i3 : diffOps(I, 3) o3 = HashTable{BasisElts => | dx^3 dx^2dy dx^2dz dxdy^2 dxdydz dxdz^2 dy^3 dy^2dz dydz^2 dz^3 dx^2 dxdy dxdz dy^2 dydz dz^2 dx dy dz |} PolyGens => {-3} | 0 0 0 0 0 -2xz 0 2xy yz y2 2xz 0 z2 -yz 0 0 2x2z-2yz2 | {-3} | 0 0 0 0 0 -6yz 0 0 2xy 0 8yz y2 6xz 0 0 0 0 | {-3} | 0 0 0 0 0 -6z2 0 12yz 4xz 6xy 4z2 -yz 0 -6xz 0 0 0 | {-3} | 0 0 0 0 0 0 0 0 0 0 8xy 0 12yz 4y2 0 0 0 | {-3} | 0 0 0 0 0 -24xz 0 0 8yz 0 16xz 4xy 0 -8yz 0 0 24x2z-24yz2 | {-3} | 0 0 0 0 0 0 0 24xz 4z2 12yz 0 -4xz 0 -8z2 0 0 0 | {-3} | 0 0 0 0 0 8y2 0 0 0 0 0 0 8xy 0 0 0 0 | {-3} | 0 0 0 0 0 -24yz 0 0 0 0 16yz 0 0 8xy 0 0 0 | {-3} | 0 0 0 0 0 0 0 0 8xz 0 0 4yz 0 -16xz 0 0 0 | {-3} | 0 0 0 0 0 0 0 16z2 0 8xz 0 -4z2 0 0 0 0 0 | {-2} | 0 z y x 0 -3z 0 -3y x 0 z y 0 -x xy xz 0 | {-2} | 0 4x 0 2y 0 0 0 0 -2y 0 0 0 6z 8y 0 4yz 0 | {-2} | 0 0 4x 2z 0 0 0 0 4z 6y 0 0 0 -10z 4yz 0 0 | {-2} | 0 4y 0 0 0 24y y2 0 0 0 -12y 0 12x 0 0 4xy 0 | {-2} | 0 0 0 4x 0 -12z -2yz 0 0 0 8z 2y 0 0 0 0 0 | {-2} | 0 0 4z 0 0 0 z2 12z 0 12x 0 -6z 0 0 4xz 0 0 | {-1} | 0 0 0 1 yz 0 0 0 -1 0 0 0 0 1 -y -z -3z | {-1} | y 2 0 0 0 6 0 0 0 0 -6 0 0 0 0 0 -6x | {-1} | -z 0 2 0 2xz 0 2z -6 0 0 0 0 0 0 0 0 0 | o3 : HashTable |
The object diffOps is a method function.