Ph.D. Students

Math Pics




Institut Fourier

Bibliothèque IF

Software for sporadic triangle groups

The goal of this page is to distribute software that performs the verifications needed in my paper with Julien Paupert and John Parker.

       Download spocheck for Linux or Mac.


  • Version 0.1 (Jul 8, 2015) fixed the algorithm to produce groups presentations.
  • Version 0.2 (Oct 1, 2015) fixed the group presentations again.

Besides performing the verifications needed in our paper, it produced the pictures of our fundamental domains that appear in this poster.

In order to run the program, you should

  • Install giac (version 1.1.4 or higher)
  • run the ./spocheck binary extracted from the tar.gz file.

In order to compile the program, you will need to install

  • giac
  • a c++ compiler
  • gmp (libgmp3-dev or equivalent)
  • [linux only] audio output library (libao-dev or equivalent)
See the compilation error messages if you have more dependency issues.

On Mac OS systems, it should work simply to run the ./compile_mac script after installing giac (see also the giac documentation for more info. So far I have not been able to compile spocheck on MacOS 10.9, but it compiles in earlier versions (version 10.6 and 10.7 seem OK). If you have trouble running spocheck with your version, you may need to recompile giac for your machine.

Feel free to let me know if you need help installing spocheck, I would appreciate feedback.

If you manage to compile the program, it will

  • Construct a combinatorial model for a fundamental polytope for each lattice sporadic group;
  • Check that this combinatorial model is embedded in complex hyperbolic space;
  • Check that the boundary of the combinatorial model is a manifold (the program will check that links are spheres).
  • Produce a GAP file with a group presentation of the fundamental group of the boundary of the polytope (if this group is trivial, the solution of the Poincaré conjecture implies that the boundary of the polytope is a 3-sphere); for instance, in order to check the 3s4c group, run gap in the 'pres' directory, and type the following commands:
  • Check the Poincaré ridge cycles, and produce a GAP file with a group presentation for the lattice;
  • Compute the orbifold Euler characteristic of the quotient;
  • Check arithmeticity (this amounts to checking the signature of Galois conjugates of the Hermitian form).
  • Produce a pretty picture of the 1-skeleton of the polytope (you will need to compile the picture with asymptote. After installing asymptote, open a terminal window, go to the 'pics' directory, and type something like
      asy -f eps pic3s4c_1.asy
    or replace 'eps' with the extension corresponding to the type of picture you would like to produce.

The program will perform exact computations whenever possible, and use interval arithmetic in order to determine the sign of some numbers (when finished, the program will tell you how many digits it had to use in order to check all needed signs).

The program is written in C++ and uses Bernard Parisse's giac libraries. My main motivation for using giac is that it has an efficient open source implementation of rational univariate representations (see Fabrice Rouillier's research report for a description of this technique), but giac also provides a fairly convenient framework where to use multiprecision and interval arithmetic.

The program tests a very large number of inequalities, in number fields that are "small" extensions of the field of coefficients of the matrices. In the most complicated case, the degree of the number field is 24, so real equations for the faces have coefficients in a number field "only" of degree 12, but the "small" extensions can easily slow down the computer a lot! This seems to make the program crash on some computers (only for the group 4s5, as far as I am aware).

I would like to thank Fabrice Rouillier and Bernard Parisse, who have given me invaluable help and motivation for developing the program.