Anticommuting variables

Anticommuting variables (also called Grassmann variables) are symbols that behave like ordinary numbers, with one exception for the multiplication rule. I will denote them here by greek letters like $\psi$, $\chi$, $\xi_1, \xi_2, \dots, \xi_n$ and so on.

These variables follow the usual rules of addition: $$ \psi + \chi = \chi + \psi, \qquad \psi + (\chi + \xi) = (\psi + \chi) + \xi, \qquad \psi - \psi = 0. $$ Multiplication with ordinary (commutative) variables (here denoted by latin letters $a$, $b$, ...) is also unremarkable: $$ a \psi = \psi a, \qquad a (\psi + \chi) = a \psi + a \chi, \qquad (a + b) \psi = a \psi + b \psi. $$ While multiplication is associative, it is defined to be anticommutative: $$ \psi \chi = -\chi \psi. $$ One immediate consequence is that $\psi^2 = 0$ and by extension $\psi^n = 0$ for all integers $n > 1$. Also, any product were a variable occurs twice is automatically zero, for example $$ \psi \chi \xi \psi = -\psi \chi \psi \xi = +\psi \psi \chi \xi = 0 \chi \xi = 0. $$ One could represent anticommutative variables by matrices, but in practice I find it more convenient to use just the above rules when doing calculations by hand.

Implementation

To check my calculations by computer (and find all the minus signs that I mistakenly introduced), I needed a way to implement anticommuting variables in a computer algebra system. See the subpage Anticommuting Variables via NonCommutativeMultiply for details.

Simulation of general Coulomb gases and log-gases

In random matrix theory, the probability measure on $\R^N$ given by $$ \mathrm{d}P(x_1, \dots, x_N) \sim \prod_{i < j}^N |x_j - x_i|^{\beta} \prod_{k = 1}^N e^{-N \beta V(x_k)} \mathrm{d}^2 x_k $$ is well-known, because it describes the eigenvalue distribution of Hermitian $N \times N$-matrices with real ($\beta = 1$), complex ($\beta = 2$) or quaternion ($\beta = 4$) entries that are (up to symmetry) independent random variables. The analogous probability measure on $\C^N$ reads $$ \mathrm{d}P(z_1, \dots, z_N) \sim \prod_{i < j}^N |z_j - z_i|^{\beta} \prod_{k = 1}^N e^{-N \beta V(z_k)} \mathrm{d}^2 z_k, $$ but applies to random matrices only for $\beta = 2$ (complex entries). (Real and quaternion matrices have more complicated different eigenvalue distributions.)

To generate a sample from these distributions, just generate a sample from the appropriate matrix model and compute the eigenvalues. However, not every external potential $V: \C \to \R$ can be realized by a matrix model. A technique to generate samples for arbitrary $\beta$ and $V$ relies on Markov chain Monte Carlo (MCMC) algorithms. In particular, the so called Hamiltonian Monte Carlo algorithm gives good results, and is discussed by Djalil Chafaï and Grégoire Ferré in Simulating Coulomb gases and log-gases with hybrid Monte Carlo algorithms.

Implementation

My implementation is equivalent to Chafaï's and Ferré's, but uses the Python programming language and the JAX and NumPyro packages. See the subpage Simulating Coulomb gases and log-gases in Python for details.