``Technical report: All Principal Congruence Link Groups'' https://arxiv.org/abs/1902.04722 and ``All Known Principal Congruence Links'' https://arxiv.org/abs/1902.04426 by Mark Baker, Matthias Goerner, Alan Reid The files in this directory accompany the above articles. Update 2022-02-23: Additional link diagrams in Links/ were provided by Dunfield, Obeidin, Rudd. See Links/README.txt for details. ******************************************************************************* magma/ Contains all the magma computations for the classification result. ******************************************************************************* Links/ Contains diagrams for all known principal congruence links. These links can be loaded into SnapPy (version 2.6 or later), either by typing "M=Manifold('FILENAME.lnk')" or by typing "M=Manifold()" and clicking on "File>Open File..." in the plink menu). You can also run the file "proofCorrectLink.py" with SnapPy (version 2.6 or later) to check that the complement of each link is indeed isometric to the triangulation of the principal congruence manifold in the same directory (which was produced using the below scripts). ******************************************************************************* LinkComplementCertificates/ Contains triangulations for all principal congruence link complements. The meridians for the cusps of each of these triangulations have been chosen such that (1,0)-filling all cusps yields a manifold that SnapPy can show to have trivial fundamental group. These triangulations were produced by running the below scripts and then changing the peripheral curves so that the above holds. You can also run the file "proveLinkComplement.py" with SnapPy (version 2.6 or later) to automatically check the above claim that the fillings trivialize the fundamental group. ******************************************************************************* src/ This directory contains the code to generate a fundamental domain of a Binachi orbifold and the (principal) congruence manifolds, see also Requirements at the bottom. We already provide the fundamental domains for all Bianchi orbifolds with trivial rational cuspidal cohomology (d = 1, 2, 3, 5, 6, 7, 11, 15, 19, 23, 31, 39, 47, 71). Thus, the user can generate any principal congruence link complement with generatePrincipalCongruenceManifold.py without the need to run generateBianchiOrbifold.py her- or himself (see bianchiOrbifold/orbifoldData.py for how it is encoded). To efficiently compute the homology of a (principal) congruence manifold, call the following commands (here for I=<(1+sqrt(-47))/2, 6>): 1. sage -python generatePrincipalCongruenceManifold.py 47 1/2 1/2 6 0 or sage -python generateGamma1Manifold.py 47 1/2 1/2 6 0 This will generate a Regina triangulation of the principal congruence manifold, respectively, H^3/Gamma_1. The triangulation will be written to file whose name will be indicated by the program. If the result is an orbifold, it will be indicated in the file name (ending in _orbifold.rga). If the subsequent steps are applied to an orbifold, the programs might crash or give unexpected results. The triangulation will consists of copies of barycentrically subdivided fundamental domains of the Bianchi group and thus contain (many) finite vertices as well as ideal vertices. The next two steps get rid of the finite vertices. SnapPy has an algorithm to do this as well, but it is much slower. 2. sage -python barycentricCoarsenReginaTrig.py FILE_FROM_STEP_1.rga Assuming the given triangulation is coming from a barycentric subdivision (as is in Step 1), it replaces groups of four tetrahedra by one. 3. sage -python collapseEdgesReginaTrig.py FILE_FROM_STEP_2.rga This will collapse edges whenever this can be done without changing the topology of the manifold with the intention being to get rid of all finite vertices resulting in an ideal triangulation. This might not succeed in general but appears to work for all triangulations produced in the previous two steps. 4. sage -python reginaToSnapPy FILE_FROM_STEP_3.rga This will convert the regina triangulation to a SnapPy triangulation. If the given triangulation has no finite vertices, this should be really fast. Note that Regina also has an algorithm to compute homology, but it is not nearly as performant as SnapPy. 5. sage -python homologySnapPyTriangulation.py FILE_FROM_STEP_4.tri Will compute the homology H_1 and writes it to a file (as betti number and torsion) together with some other information (e.g., the number of cusps). The file name will end in .homology and has the infixes added in Steps 3 and 4 removed. There are several extra scripts to help producing the results in the paper: * generateAllClassNumberOnePrincipalCongruenceManifoldWithinSix.bash calls the above script for all cases (d, I) where h_d = 1 and I = with |x| < 6. * generateAllHigherClassNumberPrincipalCongruenceLinkComplements.bash and generateAllNecessaryHigherClassNumberPrincipalCongruenceManifolds.bash are similar, but only produces those cases necessary when applying the Lemma about the covering spaces. * generateSupplementalGamma1Manifolds.bash produces some manifolds H^3/Gamma_1 used to finish the classification of all principal congruence link complements. * sage -python sizeOfPrincipalCongruenceManifold.py 47 1/2 1/2 6 0 Will compute the size of the (principal) congruence manifold given arguments similar to generatePrincipalCongruenceManifold.py and generateGamma1Manifold.py. * test.py runs some basic tests for the code ******************************************************************************* Requirements To run the tools in src/, you need to first install: * SageMath from http://www.sagemath.org/ (tested with version 8.2) and then install using SageMath (i.e., use "sage -pip" instead of "python -pip", otherwise they will be visible to the system's python interpreter but not sage): * SnapPy from http://snappy.computop.org/, see https://www.math.uic.edu/t3m/SnapPy/installing.html#sagemath (tested with version 2.6) * SageRegina from http://sageRegina.unhyperbolic.org/ (tested with version 5.1.3) Update 2022-02-23: sageRegina is now regina on pypi, see https://github.com/3-manifolds/regina_wheels