Regina Calculation Engine
Bug: Derive from regina::boost::noncopyable where appropriate.
Feature (long-term): Enhance the test suite for the calculation engine.
unsigned long. See how this affects NDiscSetTetData also.
Optimise (long-term): When generating face pairings, do some checking to eliminate cases in which tetrahedron (k > 0) can be swapped with tetrahedron 0 to produce a smaller representation of the same pairing.
Feature: Allow cancellation of face pairing generation.
Optimise (long-term): preImageOf in CC and SNF coordinates. This routine would return a generating list of elements in the preimage, thought of as an affine subspace. Or maybe just one element together with the kernel inclusion. IMO smarter to be a list because that way there's a more pleasant way to make it empty. Or we could have a variety of routines among these themes. Store some minimal data for efficient computations of preImage, eventually replacing the internals of inverseHom() with a more flexible set of tools. Also add an isInImage() in various coordinates.
Optimise (long-term): writeTextShort() have completely different set of descriptors if an endomorphism domain = range (not so important at the moment though). New descriptors would include things like automorphism, projection, differential, finite order, etc.
Optimise (long-term): Add map factorization, so that every homomorphism can be split as a composite of a projection followed by an inclusion. Add kernelInclusion(), coKerMap(), etc. Add a liftMap() call, i.e., a procedure to find a lift of a map if one exists.
Optimise (long-term): Look at using sparse matrices for storage of SNF and the like.
Testsuite additions: isBoundary(), boundaryMap(), writeAsBdry(), cycleGen().
Feature: Calculation of Euler characteristic and orientability for non-compact surfaces.
Feature (long-term): Determine which faces in the solution space a normal surface belongs to.
Optimise: Reimplement this to avoid cutting along surfaces.
Bug: Check for absurdly large numbers of discs and bail accordingly.
Feature: Allow custom matching equations.
Feature: Allow enumeration with some coordinates explicitly set to zero.
Feature: Allow generating only closed surfaces.
Feature: Generate facets of the solution space representing embedded surfaces.
Feature: Allow picking up the first ``interesting'' surface and bailing en route.
Feature (long-term): Determine the faces of the normal solution space.
Feature (long-term): Allow either subsets of normal surface lists or allow deletion of surfaces from lists.
Optimise: Implement this routine natively to avoid the overhead of the temporary primeDecomp() vector.
Optimise: Add a version that does not return the factors by value.
Feature (long-term): Implement recognition of more common names.
Feature (long-term): Implement triangulation construction and homology calculation for more Seifert fibred spaces.
Feature: Is the boundary incompressible?
Feature (long-term): Am I obviously a handlebody? (Simplify and see if there is nothing left). Am I obviously not a handlebody? (Compare homology with boundary homology).
Feature (long-term): Is the triangulation Haken?
Feature (long-term): What is the Heegaard genus?
Feature (long-term): Have a subcomplex as a child packet of a triangulation. Include routines to crush a subcomplex or to expand a subcomplex to a normal surface.
Feature (long-term): Implement writeTextLong() for skeletal objects.