The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

To cite this work or the weyl package in publications please use Hankin (2022). In a very nice youtube video, Richard Borcherds discusses the fact that first-order differential operators do not quite commute, but their commutator is itself first-order; here I demonstrate Borcherds’s observations in the context of the weyl package. Symbolically, if

\[ D=\sum f_i\left(x_1,\dots,x_n\right)\frac{\partial}{\partial x_i}\qquad E=\sum g_i\left(x_1,\dots,x_n\right)\frac{\partial}{\partial x_i} \]

where \(f_i=f_i\left(x_1,\dots,x_n\right)\) and \(g_i=g_i\left(x_1,\dots,x_n\right)\) are functions, then

\[ DE=\sum_{i,j}f_i\frac{\partial}{\partial x_i}\,g_i\frac{\partial}{\partial x_j} =\sum_{i,j}f_ig_j\frac{\partial}{\partial x_i}\frac{\partial}{\partial x_j} + f_i\frac{\partial g_j}{\partial x_i}\,\frac{\partial}{\partial x_j} \]

\[ ED=\sum_{i,j}g_i\frac{\partial}{\partial x_i}\,f_i\frac{\partial}{\partial x_j} =\sum_{i,j}g_if_j\frac{\partial}{\partial x_j}\frac{\partial}{\partial x_i} + g_i\frac{\partial f_i}{\partial x_j}\,\frac{\partial}{\partial x_j} \]

so \(E\) and \(E\) “nearly” commute, in the sense that \(ED-DE\) is first order:

\[DE-ED= \sum_{i,j}f_i\frac{\partial g_j}{\partial x_i}\,\frac{\partial}{\partial x_j}-g_i\frac{\partial f_i}{\partial x_j}\,\frac{\partial}{\partial x_j} \]

Above we have used the fact that partial derivatives commute, which leads to the cancellation of the second-order terms. We can verify this using the weyl package:

D <- weyl(spray(cbind(matrix(sample(8),4,2),kronecker(diag(2),c(1,1))),1:4))
E <- weyl(spray(cbind(matrix(sample(8),4,2),kronecker(diag(2),c(1,1))),1:4))
F <- weyl(spray(cbind(matrix(sample(8),4,2),kronecker(diag(2),c(1,1))),1:4))
D
## A member of the Weyl algebra:
##   x  y dx dy     val
##   7  8  0  1  =    4
##   4  3  0  1  =    3
##   1  5  1  0  =    2
##   6  2  1  0  =    1

(\(E\) and \(F\) are similar). Symbolically we would have

\[D= \left( x^6y^2 + 2xy^5\right)\frac{\partial}{\partial x}+ \left(4x^7y^8 + 3x^4y^3\right)\frac{\partial}{\partial y} \]

The package allows us to compose \(E\) and \(D\), although the composition is quite complicated:

summary(E*D)
## A spray object.  Summary of coefficients: 
## 
## a disord object with hash ab0b4d525d3ef5030fcdc229e07f50175ee9dc3f 
## 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     1.0     4.0     8.5    20.5    22.0   128.0 
## 
## 
## Representative selection of index and coefficients:
## 
##   x  y dx dy     val
##  11  3  1  0  =    6
##   9 12  1  1  =   16
##   9  4  0  1  =   12
##   8  6  2  0  =    2
##  10  4  1  1  =    3
##  12  3  2  0  =    1

However, the Lie bracket, \(ED-DE\), (.[E,D] in package idiom) is indeed first order:

.[E,D]
## A member of the Weyl algebra:
##   x  y dx dy     val
##   8 12  0  1  =   -8
##   4  9  1  0  =   30
##  15 14  0  1  =   16
##  12  9  0  1  =  -20
##   5  7  0  1  =   24
##   7  6  1  0  =    8
##  13  8  1  0  =   -4
##  14  8  1  0  =    8
##   8  7  0  1  =   -9
##  13  9  0  1  =  -32
##  10  3  1  0  =   -3
##   9 11  1  0  =    8
##   7  7  0  1  =  -18
##   2  9  1  0  =   -4
##   3 10  0  1  =  -18
##   9  6  1  0  =    6
##   6  6  1  0  =  -34
##   9  4  0  1  =   12
##  10 12  0  1  =   36

Above we see that each row is either 1 0 or 0 1, corresponding to either \(\partial/\partial x\) or \(\partial/\partial y\) respectively. Arguably this is easier to see with the other print method:

options(polyform = TRUE)
.[E,D]
## A member of the Weyl algebra:
## -8*x^8*y^12*dy +30*x^4*y^9*dx +16*x^15*y^14*dy -20*x^12*y^9*dy
## +24*x^5*y^7*dy +8*x^7*y^6*dx -4*x^13*y^8*dx +8*x^14*y^8*dx
## -9*x^8*y^7*dy -32*x^13*y^9*dy -3*x^10*y^3*dx +8*x^9*y^11*dx
## -18*x^7*y^7*dy -4*x^2*y^9*dx -18*x^3*y^10*dy +6*x^9*y^6*dx
## -34*x^6*y^6*dx +12*x^9*y^4*dy +36*x^10*y^12*dy
options(polyform = FALSE) # revert to default

We may verify Jacobi’s identity:

.[D,.[E,F]] + .[F,.[D,E]] + .[E,.[F,D]]
## A member of the Weyl algebra:
## empty sparse array with 4 columns

Borcherds goes on to consider the special case where the \(f_i\) and \(g_i\) are constant. In this case the operators commute (by repeated application of Schwarz’s theorem) and so their Lie bracket is identically zero. We can create constant operators easily:

(D <- as.weyl(spray(cbind(matrix(0,3,3),matrix(c(0,1,0,1,0,0,0,0,1),3,3,byrow=T)),1:3)))
## A member of the Weyl algebra:
##   x  y  z dx dy dz     val
##   0  0  0  0  0  1  =    3
##   0  0  0  1  0  0  =    2
##   0  0  0  0  1  0  =    1
(E <- as.weyl(spray(cbind(matrix(0,3,3),matrix(c(0,1,0,1,0,0,0,0,1),3,3,byrow=T)),5:7)))
## A member of the Weyl algebra:
##   x  y  z dx dy dz     val
##   0  0  0  0  0  1  =    7
##   0  0  0  1  0  0  =    6
##   0  0  0  0  1  0  =    5

(above, see how the first three columns of the index matrix are zero, corresponding to constant coefficients of the differential operator; symbolically \(D=2\frac{\partial}{\partial x}+\frac{\partial}{\partial y}+3\frac{\partial}{\partial z}\) and \(E=6\frac{\partial}{\partial x}+5\frac{\partial}{\partial y}+7\frac{\partial}{\partial z}\). And indeed, their Lie bracket vanishes:

.[D,E]
## [1] 0

Hankin, R. K. S. 2022. “Quantum Algebra in R: The Weyl Package.” arXiv. https://doi.org/10.48550/ARXIV.2212.09230.

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.