Regina Calculation Engine
This documentation describes the functions, classes and related entities in the C++ calculation engine, as well as how these can be accessed through 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.
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-2016.
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.
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.
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.
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 and Nathan Dunfield, 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.
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.
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.