knitr::opts_chunk$set(echo = TRUE)
library("weyl")
set.seed(0)
knitr::include_graphics(system.file("help/figures/weyl.png", package = "weyl"))

To cite this work or the weyl package in publications please use @hankin2022_weyl_arxiv. In a very nice youtube video, Richard Borcherds discusses the fact that first-order differential operators do not commute, but their commutator is itself first-order; he says that they "almost" commute. 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

($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 result is quite complicated:

summary(E*D)

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

.[E,D]

Above, looking at the dx and dy columns, 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]
options(polyform = FALSE) # revert to default

We may verify Jacobi's identity:

.[D,.[E,F]] + .[F,.[D,E]] + .[E,.[F,D]]

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)))
(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)))

(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]


RobinHankin/weyl documentation built on April 14, 2025, 11:49 a.m.