- Usage:
`diffOps (I, k), diffOps (f, k)`

- Inputs:
`I`, an ideal, contained in a polynomial ring*R*`f`, a ring element, an element of a polynomial ring*R*`k`, an integer, which is nonnegative

- Outputs:
- a hash table, the differential operators of order at most
*k*of the quotient ring*R/I*(or*R/(f)*)

- a hash table, the differential operators of order at most

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 => | 0 0 0 0 0 -2xz 0 2xy yz y2 2xz 0 z2 -yz 0 0 2x2z-2yz2 | | 0 0 0 0 0 -6yz 0 0 2xy 0 8yz y2 6xz 0 0 0 0 | | 0 0 0 0 0 -6z2 0 12yz 4xz 6xy 4z2 -yz 0 -6xz 0 0 0 | | 0 0 0 0 0 0 0 0 0 0 8xy 0 12yz 4y2 0 0 0 | | 0 0 0 0 0 -24xz 0 0 8yz 0 16xz 4xy 0 -8yz 0 0 24x2z-24yz2 | | 0 0 0 0 0 0 0 24xz 4z2 12yz 0 -4xz 0 -8z2 0 0 0 | | 0 0 0 0 0 8y2 0 0 0 0 0 0 8xy 0 0 0 0 | | 0 0 0 0 0 -24yz 0 0 0 0 16yz 0 0 8xy 0 0 0 | | 0 0 0 0 0 0 0 0 8xz 0 0 4yz 0 -16xz 0 0 0 | | 0 0 0 0 0 0 0 16z2 0 8xz 0 -4z2 0 0 0 0 0 | | 0 z y x 0 -3z 0 -3y x 0 z y 0 -x xy xz 0 | | 0 4x 0 2y 0 0 0 0 -2y 0 0 0 6z 8y 0 4yz 0 | | 0 0 4x 2z 0 0 0 0 4z 6y 0 0 0 -10z 4yz 0 0 | | 0 4y 0 0 0 24y y2 0 0 0 -12y 0 12x 0 0 4xy 0 | | 0 0 0 4x 0 -12z -2yz 0 0 0 8z 2y 0 0 0 0 0 | | 0 0 4z 0 0 0 z2 12z 0 12x 0 -6z 0 0 4xz 0 0 | | 0 0 0 1 yz 0 0 0 -1 0 0 0 0 1 -y -z -3z | | y 2 0 0 0 6 0 0 0 0 -6 0 0 0 0 0 -6x | | -z 0 2 0 2xz 0 2z -6 0 0 0 0 0 0 0 0 0 | o3 : HashTable |

- putWeylAlgebra -- transforms output of diffOps into elements of Weyl algebra

- diffOps(Ideal,ZZ)
- diffOps(RingElement,ZZ)