# gbw -- compute a Gröbner basis with respect to a weight vector

## Synopsis

• Usage:
gbI = gbw(I, w)
gbM = gbw(M, w)
• Inputs:
• I, an ideal, in the Weyl algebra
• M, , with entries in the Weyl algebra
• w, a list, of weights
• Optional inputs:
• Strategy => , default value null, if set to homogenize the input is homogenized in the homogeneous Weyl algebra
• Outputs:
• gbI, an ideal, with the generators forming a Gröbner basis of the ideal with respect to the weight vector
• gbM, , with the columns forming a Gröbner basis of the submodule generated by the columns of the matrix with respect to the weight vector

## Description

This routine computes a Gröbner basis of a left ideal I of the Weyl algebra with respect to a weight vector w = (u,v) where u+v >= 0. In the case where u_i+v_i > 0 for all i, the ordinary Buchberger algorithm works for any term order refining the weight order. If there exists i so that u_i+v_i = 0 the Buchberger algorithm needs to be adapted to guarantee termination. There are two strategies for doing this. One is to homogenize to an ideal of the homogeneous Weyl algebra.

 i1 : makeWA(QQ[x,y]) o1 = QQ[x..y, dx, dy] o1 : PolynomialRing, 2 differential variable(s) i2 : I = ideal (x*dx+2*y*dy-3, dx^2-dy) 2 o2 = ideal (x*dx + 2y*dy - 3, dx - dy) o2 : Ideal of QQ[x..y, dx, dy] i3 : gbw(I, {-1,-3,1,3}) 2 o3 = ideal (x*dx + 2y*dy - 3, - dx + dy) o3 : Ideal of QQ[x..y, dx, dy]

The other is to homogenize with respect to the weight vector w. More details can be found in [SST, Sections 1.1 and 1.2].

 i4 : gbw(I, {1,3,3,-1}) 2 2 2 2 o4 = ideal (x*dx + 2y*dy - 3, dx - dy, 2y*dx*dy + x*dy - 2dx, 4y dy - x dy ------------------------------------------------------------------------ + 2x*dx - 2y*dy) o4 : Ideal of QQ[x..y, dx, dy]

## Caveat

The weight vector w = (u,v) must have u+v>=0.

• inw -- get the initial term or ideal with respect to a weight vector

## Ways to use gbw :

• gbw(Ideal,List)
• gbw(Matrix,List)

## For the programmer

The object gbw is .