https://hal.archives-ouvertes.fr/hal-02398953
Raw File
Tip revision: c33910a29d53f4e137c225b21a8d59e43327cbf9 authored by Software Heritage on 08 December 2019, 12:26:32 UTC
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.
back to top