HIKMOT

What is hikmot?

HIKMOT is a python module that can be used for verified computations for hyperbolic 3-manifolds. This is based on the procedure in the following paper:

Verified computations for hyperbolic 3-manifolds, N. Hoffman, K. Ichihara, M. Kashiwagi, H. Masai, S. Oishi, and A. Takayasu, to appear in Exp. Math. (arXiv:1310.3410).

For a given cusped 3-manifold $$M$$ admitting an ideal triangulation, we describe a method to rigorously prove that either $$M$$ or a filling of $$M$$ admits a complete hyperbolic structure via verified computer calculations.　The key ingredients of our method are the interval arithmetic and the Krawczyk Test. These techniques represent an improvement over existing algorithms as they are faster while accounting for error accumulation in a more direct and user friendly way.

News¶

• + Version 1.0.1 is released. (September 2, 2014)
**This version is able to show more triangulations are hyperbolic because of an improved method of constructing the gluing equations.
• + Version 1.0.0 is released. (November 28, 2013)
• + Version 0.1.0 is released. (October 15, 2013)

• + HIKMOT_ver1.0.1 (zip, tar.gz)
• + HIKMOT_ver1.0.0 (zip, tar.gz)
• + HIKMOT_ver0.1.0 (zip, tar.gz) **This version requires the numpy module on Python.
We can decompress .tar file by

      tar xvf hikmot_v0.1.0.tar.gz


Tutorial¶

The package requires:

• + python 2.7 avaiable from python.org
• + Snappy installed as a python module available here

Also, c++ with boost libraries are required. For example, users on Ubuntu can install the packages form repositories.

sudo apt-get install libboost-all-dev
Mac users can install boost by (We need macport. Before getting boost, don't forget to update the port):
sudo port install boost
For a full list of the packages required and a instructions for more architectures, see the README.txt file associated to the download.

To install hikmot, use the command;

sudo python setup.py install
We can also specify the folder to install by "--prefix" e.g. ("~" is the home directory)
python setup.py install --prefix=~

It seems that Mac 10.9 (Xcode 5.1 or later) uses a new compiler clang that performs a little differently than gcc. Users might experience the following error: clang: error: unknown argument: '-mno-fused-madd' The reason of this error is found in the Xcode Release Notes, "The Apple LLVM compiler in Xcode 5.1 treats unrecognized command-line options as errors. This issue has been seen when building both Python native extensions and Ruby Gems, where some invalid compiler options are currently specified."

To avoid this error, users can use the command;

sudo ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future python setup.py  install
by telling the compiler to not treat "unused-command-line-arguments" as errors. Note that this is a temporary solution.

If you have any trouble on installing hikmot, send us email.

Then on python, we can use hikmot as follows.

	import snappy
import hikmot
M = snappy.Manifold('m004')
hikmot.verify_hyperbolicity(M,True)

This will return "True" for any valid triangulation of a hyperbolic manifold and "False" otherwise. The flag "True" turns on verbose reporting of the verify_hyperbolicity function. For verifying large sets of manifolds, such as a census, it is recommended this flag be set to "False".

That's it! We just showed the mainfold 'm004', aka the figure 8 knot complement, is hyperbolic.

Verify Census¶

We prepare codes to verify census manifolds. See Theorem 6.1 and Theorem 6.2 of our paper for details.

By VerifyCuspedCensus.py, one can verify the hyperbolicity of manifolds in OrientableCuspedCensus :
P. Callahan, M. Hildebrand and J. Weeks, A census of cusped hyperbolic 3-manifolds, Math. Comp. 68 (1999), no. 225, 321–332. To run the code, install hikmot and

      python VerifyCuspedCensus.py

Then, the expected output of this code is:
Out of 17661 manifolds in the OrientableCuspedCensus, 17661 have been proven to be hyperbolic and 0 have not.

We need some geometric techniques to produce triangulations that hikmot can verify the hyperbolicity of manifolds in the census, OrientableClosedManifold : C. Hodgson and J. Weeks, Symmetries, isometries and length spectra of closed hyperbolic three-manifolds, Experiment. Math. 3 (1994), 261--274. Instead of explaining the technique, we have prepared the set of triangulations in the file: ClosedManifolds.zip (approx. 7MB). Decompress the .zip file at the same folder as hikmot.py. If you are interested in the technique we used to produce ClosedManifolds, see Theorem 6.2 of our paper. The codes that apply the technique are available via email. The code VerifyClosedCensus.py checks if each manifold in ClosedManifolds is hyperbolic and isometric to the corresponding census manifold (by is_isometric_to() function of SnapPy). Running the code should take under 10 minutes and can be called by the following:

      python VerifyClosedCensus.py

Then output will be:
You will probably fail proving Closed3.tri to be hyperbolic, this is 'm007(3,1)' and we need to take a cover for this manifold.
Failed proving the hyperbolicity of Closed3.tri aka m007(3,1).
Out of 11031 manifolds in OrientableClosedCensus,11030 manifolds have been proven to be hyperbolic! 1 error.
Verified the hyperbolicity of m007~cyc~0(1,0)(1,0)(1,0), a cover of m007(3,1).
There was one bad manifold. It has been verified and 0 remain.

This completes the verification of the hyperbolicity of all manifolds in OrientableClosedCensus.