Regina Calculation Engine
Todo List
Member regina::NormalSurface::isCentral () const
Optimise: Cache results.
Member regina::NormalSurfaces::filterForPotentiallyIncompressible () const
Add progress tracking.
Member regina::NormalSurfaces::filterForDisjointPairs () const
Deal properly with surfaces that are too large to handle.
Class regina::NormalSurfaces

Feature: Generate facets of the solution space representing embedded surfaces.

Feature: Allow generating only closed surfaces.

Feature: Allow enumeration with some coordinates explicitly set to zero.

Feature: Allow custom matching equations.

Member regina::NormalSurface::isCompressingDisc (bool knownConnected=false) const

Bug: Check for absurdly large numbers of discs and bail accordingly.

Optimise: Reimplement this to avoid cutting along surfaces.

Class regina::SurfaceFilter
Feature: Implement property lastAppliedTo.
Member regina::NormalSurface::isSplitting () const
Optimise: Cache results.
Member regina::NormalSurface::isThinEdgeLink () const
Optimise: Cache results.
Member regina::NormalSurface::isVertexLink () const
Optimise: Cache results.
Member regina::NormalSurface::isVertexLinking () const
Optimise: Cache results.
Class regina::NormalSurface

Feature (long-term): Determine which faces in the solution space a normal surface belongs to.

Feature: Calculation of Euler characteristic and orientability for non-compact surfaces.

Class regina::NormalSurfaceVector
Optimise (long-term): Investigate using sparse vectors for storage.
Class regina::Triangulation< 3 >
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).
Class regina::Bitmask
Optimise: Insist that sizeof(Piece) is a power of two, and replace expensive division/mod operations with cheap bit operations.
Member regina::Triangulation< 3 >::idealToFinite ()
Optimise (long-term): Have this routine only use as many tetrahedra as are necessary, leaving finite vertices alone.
Member regina::Triangulation< 3 >::makeZeroEfficient ()
Preserve computed properties of the underlying manifold.
Member regina::Triangulation< 3 >::intelligentSimplify ()
Optimise: Include random 2-3 moves to get out of wells.
Class regina::Triangulation< 3 >

Feature (long-term): Implement writeTextLong() for skeletal objects.

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): What is the Heegaard genus?

Feature (long-term): Is the triangulation Haken?

Class regina::DiscSetTet
Bug (long-term): Have some error flag so we can barf politely if the number of normal discs of a given type does not fit into an unsigned long. See how this affects DiscSetTetData also.
Class regina::Triangulation< 3 >
Feature: Is the boundary incompressible?
Member regina::detail::TriangulationBase< dim >::isIsomorphicTo (const Triangulation< dim > &other) const
Optimise: Improve the complexity by choosing a simplex mapping from each component and following gluings to determine the others.
Member regina::detail::TriangulationBase< dim >::barycentricSubdivision ()
Lock the topological properties of the underlying manifold, to avoid recomputing them after the subdivision. However, only do this for valid triangulations (since we can have scenarios where invalid triangulations becoming valid and ideal after subdivision, which may change properties such as Triangulation<4>::knownSimpleLinks).
Member regina::detail::IsomorphismBase< dim >::applyInPlace (Triangulation< dim > *tri) const
Lock the topological properties of the underlying manifold, to avoid recomputing them after the isomorphism is applied.
Member regina::detail::IsomorphismBase< dim >::apply (const Triangulation< dim > *original) const
Lock the topological properties of the underlying manifold, to avoid recomputing them after the isomorphism is applied.
Member regina::detail::FacetPairingBase< dim >::findAllPairings (size_t nSimplices, BoolSet boundary, int nBdryFacets, Use use, void *useArgs=0)

Feature: Allow cancellation of facet pairing generation.

Optimise (long-term): When generating facet pairings, do some checking to eliminate cases in which simplex (k > 0) can be swapped with simplex 0 to produce a smaller representation of the same pairing.

Class regina::MarkedAbelianGroup
Testsuite additions: isBoundary(), boundaryMap(), writeAsBdry(), cycleGen().
Member regina::NormalHypersurface::isVertexLinking () const
Optimise: Cache results.
Member regina::GluingPermSearcher< 4 >::runSearch (long maxDepth=-1)
Feature: Allow cancellation of permutation set generation.
Member regina::GluingPermSearcher< 3 >::runSearch (long maxDepth=-1)
Feature: Allow cancellation of permutation set generation.
Member regina::GluingPermSearcher< 2 >::runSearch (long maxDepth=-1)
Feature: Allow cancellation of permutation set generation.
Class regina::HomMarkedAbelianGroup

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): 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): 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.

Member regina::NormalHypersurface::isVertexLink () const
Optimise: Cache results.
Class regina::MarkedAbelianGroup
Optimise (long-term): Look at using sparse matrices for storage of SNF and the like.
Class regina::HomGroupPresentation
Add a routine to attempt to verify validity of homomorphism.
Member regina::GroupPresentation::prettyRewritingDetail ()
As a final step, make elementary simplifications to aid in seeing standard relators like commutators.
Member regina::GroupPresentation::recogniseGroup (bool moreUtf8=false) const
Feature (long-term): Make this recognition more effective.
Member regina::GroupPresentation::smallCancellationDetail ()
Optimise (long-term): This routine could use some small tweaks - recognition of utility of some score==0 moves, such as commutators, for example.
Member regina::GroupExpression::relabellingsThisToOther (const GroupExpression &other, bool cyclic=false) const
Change this to use less heavyweight types and less deep copying.
Class regina::GroupPresentation
Let's make intelligent simplify a tad more intelligent, and the GUI call a bit more safe. Perhaps parallelize the GUI call, and give users parameters to ensure it won't crash the computer. Also look at the FPGroup package. We should also have a simple way of creating GroupPresentation objects directly from text strings. We would like to have something like GroupPresentation( numGens, "abAAB", "bccd" ) etc., with arbitrary numbers of relators. Maybe std::tuple. Or "variadic templates"?
Class regina::AbelianGroup
Optimise (long-term): Look at using sparse matrices for storage of SNF and the like.
Member regina::NormalHypersurface::isThinEdgeLink () const
Optimise: Cache results.
Member regina::NormalHypersurface::triangulate () const
Bug: Check for absurdly large numbers of pieces and return 0 accordingly.
Class regina::GraphLoop
Optimise: Speed up homology calculations involving orientable base spaces by adding rank afterwards, instead of adding generators for genus into the presentation matrix.
Class regina::GraphPair
Optimise: Speed up homology calculations involving orientable base spaces by adding rank afterwards, instead of adding generators for genus into the presentation matrix.
Class regina::GraphTriple
Optimise: Speed up homology calculations involving orientable base spaces by adding rank afterwards, instead of adding generators for genus into the presentation matrix.
Class regina::SFSpace

Feature (long-term): Implement recognition of more common names.

Feature (long-term): Implement triangulation construction and homology calculation for more Seifert fibred spaces.

Class regina::TorusBundle
Feature: Implement the == operator for finding conjugate and inverse matrices.
File matrixops.h
Feature (long-term): Add a routine to find the rank of an integer matrix; use this to show the rank of the matching equations.
Member regina::Primes::primeDecomp (const Integer &n)
Optimise: Add a version that does not return the factors by value.
Member regina::Primes::primePowerDecomp (const Integer &n)

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.

Class regina::Packet
Feature: Provide automatic name selection/specification upon child packet insertion.
Member regina::formSigCensus (unsigned order, UseSignature use, void *useArgs=0)
Feature: Add support for symbols of differing case.
Class regina::SatRegion
Feature: Have this class track the boundary components properly, with annuli grouped and oriented according to the region boundaries (as opposed to individual block boundaries).

Copyright © 1999-2018, 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).