# diffOps -- differential operators of up to the given order for a quotient polynomial ring

## Synopsis

• Usage:
diffOps (I, k), diffOps (f, k)
• Inputs:
• I, an ideal, contained in a polynomial ring R
• f, , an element of a polynomial ring R
• k, an integer, which is nonnegative
• Outputs:
• , the differential operators of order at most kof the quotient ring R/I (or R/(f))

## Description

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

## Ways to use diffOps :

• diffOps(Ideal,ZZ)
• diffOps(RingElement,ZZ)