# differences between certain bracketing functions -- The difference between certain bracketing functions

This package contains a variety of functions that calculate or work with brackets, including bracket, commutator, derivedSeries, and lowerCentralSeries. Each function has two variants: those that work on only the provided vector fields, and those that work on a module of vector fields. The former type accept a Matrix as the parameter, while the latter type accept a Module as the parameter.

The documentation for each function explains what is calculated, and how.

Here is an example to illustrate the difference.

 i1 : R=QQ[x,y]; i2 : D=gens derlog(ideal (x*y)) o2 = | x 0 | | 0 y | 2 2 o2 : Matrix R <--- R i3 : bracket(D,D) o3 = 0 2 4 o3 : Matrix R <--- R i4 : commutator(D) o4 = 0 2 1 o4 : Matrix R <--- R

The generating vector fields of D commute but not all pairs of elements from the module D are commutative:

 i5 : co1=commutator(D|x*D|y*D) o5 = | 0 x2 0 0 0 0 0 xy -x2y x2y 0 0 0 0 -xy2 | | 0 0 0 xy 0 x2y 0 0 0 -xy2 0 y2 0 xy2 0 | 2 15 o5 : Matrix R <--- R i6 : commutator(D|x*D|y*D|x^2*D|x*y*D|y^2*D) o6 = | 0 x2 0 0 0 0 0 xy -x2y x2y 0 0 0 0 -xy2 2x3 0 x4 0 2x3y 0 | 0 0 0 xy 0 x2y 0 0 0 -xy2 0 y2 0 xy2 0 0 0 0 -x3y 0 0 ------------------------------------------------------------------------ 0 0 0 0 -x3y 0 0 x2y x2y 0 x3y x2y2 x2y2 -x4y x4y 0 2x2y 0 2x3y 0 2x2y2 -x2y2 2x4y 0 0 0 -x2y2 0 0 0 -2x3y2 xy2 ------------------------------------------------------------------------ 0 0 0 -x2y2 0 0 0 -x3y2 0 2xy2 -x2y2 2x2y2 0 2xy3 -2x3y2 xy2 x2y2 x2y2 xy3 0 x3y2 x3y2 x2y3 0 0 0 -xy3 0 0 0 ------------------------------------------------------------------------ 2x3y2 -x2y3 2x2y3 0 0 0 0 -xy3 0 0 0 -x2y3 0 -2xy4 | -2x2y3 0 -xy4 0 2y3 0 2xy3 0 y4 0 2x2y3 0 xy4 0 | 2 66 o6 : Matrix R <--- R

In this case only the first-order terms are necessary to achieve the results calculated by the Module versions of the functions:

 i7 : bracket(image D,image D) o7 = image | 0 0 0 0 x2 0 0 0 0 0 xy 0 x2 0 0 0 0 0 xy 0 | | 0 0 0 0 0 xy 0 0 0 0 0 y2 0 xy 0 0 0 0 0 y2 | 2 o7 : R-module, submodule of R i8 : commutator(image D) o8 = image | 0 x2 0 0 0 0 0 xy 0 | | 0 0 xy 0 0 0 0 0 y2 | 2 o8 : R-module, submodule of R i9 : bracket(image D,image D)==image co1 o9 = true i10 : commutator(image D)==image co1 o10 = true