This is a supplement to arXiv:2310.07024, in which we introduce an algorithm to compute the twisted
Make sure you have Python 3 and SageMath installed. Then, install Regina and SnapPy:
$ pip install regina
$ pip install snappy
Note that this fails on some systems, since Python packages are managed by the OS.
In that case, you have to install them through your package manager (e.g. there could be a package called python-regina
),
or you have to pass the --break-system-packages
option to pip
.
Next, install the GAP package HAP:
$ sage -i gap_packages
On some installations this fails for similar reasons, but there should be a corresponding system package such as gap-packages
.
Finally, clone this repository in a directory of your choice:
$ cd /path/to/directory
$ git clone https://github.com/floatingpoint-754/twisted-l2-characteristic
$ cd twisted-l2-characteristic
This repo provides a directory twisted_l2
(that can be imported as a Python package), which implements the algorithm,
and several Sage notebooks which showcase the experiments carried out in the paper. It is recommended to use the JupyterLab notebook:
$ sage -n jupyterlab
A browser tab will open, from which you can open the notebooks (and do your own experimentations).
Some notebooks come with precomputed information about the chain complex (in the data
directory).
This provides consistency when non-deterministic algorithms are involved.
The main methods provided by twisted_l2
are twisted_l2_characteristic
(alias characteristic
) and von_neumann_rank
.
They compute approximations to the twisted
We provide an interface to build the equivariant chain complex from the face lattice, i.e. the information of
which
import twisted_l2
import regina
import snappy
twisted_l2.load_hap()
mfd = snappy.Manifold("v1539(5,1)")
tri = regina.Triangulation3(mfd.filled_triangulation())
fl = twisted_l2.regina_tri_to_face_lattice(tri, ideal=False)
cw = twisted_l2.cw_complex(fl)
chain_complex = twisted_l2.equivariant_cc(cw, gap=False)
G = twisted_l2.get_fundamental_group(chain_complex)
cc = twisted_l2.get_differentials(chain_complex)
You can find more information in the notebooks and the wiki; you can also access the documentation of any object by using the ?
operator in Sage and JupyterLab:
twisted_l2.characteristic?
Note: The documentation is a work in progress, so some entries may be missing.