https://hal.archives-ouvertes.fr/hal-02398953
Tip revision: c33910a29d53f4e137c225b21a8d59e43327cbf9 authored by Software Heritage on 08 December 2019, 12:26:32 UTC
hal: Deposit 351 in collection hal
hal: Deposit 351 in collection hal
Tip revision: c33910a
README
The goal of this piece of software is to perform the verifications
needed in my joint work with Julien Paupert and John Parker, see our
papers entitled "New non-arithmetic complex hyperbolic lattices"
(parts I and II).
Fixes/updates:
Version 1.0 (Dec 8, 2019) extended to program to work with all
know triangle group lattice (including Mostow and
Thompson groups).
Version 0.2 (Oct 1, 2015) fixed the group presentations again.
Version 0.1 (Jul 8, 2015) fixed the algorithm to produce
groups presentations.
Besides performing the verifications needed in our paper, it produces
the pictures of our fundamental domains.
If you don't want to run the program, you can simply browse the
results of the algorithm, which are stored in:
* spocheck/results (output of the computer program, if the program
ran successfully, the last line gives computation time)
* spocheck/pres (GAP presentations for the lattices)
* spocheck/sphere (GAP presentations for the fundamental group of
the boundary of our polytope, these should simplify to the trivial
group)
* spochek/pics (asymptote pictures of sides, and projections of the
full fundamental domain)
In order to run the program, you should first
Install a recent version of giac
(the current code was tested with version 1.5.0-81 of giac).
You will probably have to install the same dependencies as those
listed to compile your own version of giac (although the compilation
of giac itself should not be needed); instructions for this are given
on Bernard Parisse's website:
https://www-fourier.ujf-grenoble.fr/~parisse/giac_compile_fr.html
One this is done, you should be able to use the Makefile and simply
type "make" in the main spocheck directory (perhaps after adjusting
the compilation commands, that depend on the location of giac on your
computer). I have been successful at compiling spocheck on a lot of
versions of Ubuntu (most recently Ubuntu 18.04).
Then run "./spocheck" in the main spocheck directory.
Feel free to let me (martin.deraux@univ-grenoble-alpes.fr) 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:
Read("pres3s4c.g");
P:=PresentationFpGroup(G);
TzGoGo(P);
TzPrint(P);
* 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.
If you only want to perform part of these verifications, you can
modify the boolean parameters in the beginning of the file
Polytope.cpp (by default, the variables emb_dim1, emb_dim2,
check_cycles, check_euler, check_sphere, draw_pics are set to 'true',
but you can change them to 'false').
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!
I would like to thank Fabrice Rouillier and Bernard Parisse, who have
given me invaluable help and motivation for developing the program.