Skip to main content.

xPerm: Fast index canonicalization for tensor computer algebra

Author: José M. Martín-García, © 2003-2020 under GPL

Article: J. M. Martín-García, Comp. Phys. Commun. 179 (2008) 597-603 , arXiv: 0803.0862


xPerm extends Mathematica capabilities in computations with large groups of permutations, focusing on the problem of index canonicalization under permutation symmetries of tensor expressions. It has been written as a combination of a Mathematica package and a C subroutine. The latter performs the most demanding parts of the computations and can also be linked from any other program or computer algebra system. There are two main goals:

  1. Computation of a strong generating set for a group of permutations, given a generating set for that group. We use the Schreier-Sims algorithm, as described by Butler.
  2. Computation of a canonical representative of cosets and double cosets. We use the algorithms developed by R. Portugal and collaborators.

xPerm is not, and will not be, an alternative to professional packages like GAP or MAGMA for algebraic computations. It just solves the two issues that are needed in xTensor.

The authors of the canonicalization algorithms have implemented similar capabilities in a Maple package called Canon.

See xPerm.History.

Note on the name: Copied from Efficient Representation of Perm Groups, by Donald E. Knuth: ''Following a suggestion of Vaughan Pratt, we adopt the convention that perm = permutation, perhaps thereby saving millions of syllables in future research.''

Download and installation

Current version: 1.2.3 (as of 23 August 2015). It is recommended to download the main xAct bundle, but you can also download the different files separately:

See the Installation notes.

There is a problem with versions 2.1 of the glibc library of linux. Fixes can be obtained from Mathematica Support page.

Other documentation

Most examples in Butler's book have been repeated (and sometimes corrected) with xPerm in the notebook ButlerExamples.nb.