Regina 7.0 Calculation Engine
Regina 7.0 Calculation Engine
Regina
Software for low-dimensional topology
Copyright © 1999-2021, The Regina development team

This documentation describes the functions, classes and related entities in the C++ calculation engine, as well as how these can be accessed through Python.

To start: visit the Modules page and take a look around, or browse through the classes regina::Triangulation<3>, regina::Link, and regina::NormalSurfaces.

Python

Although this documentation is written for C++ programmers, Python programmers have access to many of the same functions, classes, methods and so on. See the special page for Python users for a summary of the differences between C++ and Python, and some of the extra features that Python offers.

Citation

If you find Regina useful in your research, please consider citing it as you would any other paper that you use. A suggested form of reference is:

Benjamin A. Burton, Ryan Budney, William Pettersson, et al., "Regina: Software for low-dimensional topology", http://regina-normal.github.io/ , 1999-2021.

Authors

The primary developers of Regina are:

Many others have been of assistance with this project, be it through time, knowledge, testing or code. Please see the full list of acknowledgements in the users' handbook.

Copying and Modification

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

Some of this code comes with additional permissions; see the section below regarding online distribution.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.

Online Distribution

Regina's own source code comes with the following permissions in addition to the GNU General Public License:

As an exception, when this program is distributed through (i) the App Store by Apple Inc.; (ii) the Mac App Store by Apple Inc.; or (iii) Google Play by Google Inc., then that store may impose any digital rights management, device limits and/or redistribution restrictions that are required by its terms of service.

Some third-party libraries included in Regina are not granted this exception, and must be removed from any build that is distributed on stores that cannot comply with the GNU General Public License (such as Apple's App Store). See the third-party licenses below for details.

SnapPea and SnapPy

Regina includes portions of the SnapPea kernel and its successor SnapPy, which it uses for some geometric calculations. The SnapPea kernel was originally written by Jeff Weeks. SnapPy, where this kernel is now maintained, is primarily developed by Marc Culler, Nathan Dunfield and Matthias Goerner, with contributions from many people. SnapPy and the corresponding SnapPea kernel are distributed under the terms of the GNU General Public License, version 2 or any later version, as published by the Free Software Foundation.

Normaliz Library

Regina includes a copy of libnormaliz, which it uses to help with the enumeration of fundamental normal surfaces. Normaliz was written by Winfried Bruns, Bogdan Ichim and Christof Soeger. It is distributed under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

pybind11

Regina includes a copy of pybind11, which it uses to generate python bindings for Regina's native C++ code. The pybind11 library was written by Wenzel Jakob, and is distributed under a BSD-style license that is shipped with Regina's source code in the file python/pybind11/LICENSE.

Python rlcompleter module

Regina includes a modified copy of the Python rlcompleter module, which it uses for tab completion in the graphical user interface. The original rlcompleter module was distributed under the Python Software Foundation License Version 2; the full license and copyright notice are shipped with Regina's source code in the file python/regina/LICENSE.

Orb Kernel

Regina includes snippets of code from Orb, for use in importing and exporting files in Orb / Casson format. Orb is based on SnapPea (see above) with additional code written by Damian Heard, who has also given permission for his code to be distributed under the terms of the GNU General Public License.


Copyright © 1999-2021, The Regina development team
This software is released under the GNU General Public License, with some additional permissions; see the source code for details.
For further information, or to submit a bug or other problem, please contact Ben Burton (bab@maths.uq.edu.au).