Todo List

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.
Namespace regina

  Bug: Derive from boost::noncopyable where appropriate.

  Feature (long-term): Enhance the test suite for the calculation engine.

Class regina::AbelianGroup
  Optimise (long-term): Look at using sparse matrices for storage of SNF and the like.
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::detail::FacetPairingBase< dim >::findAllPairings (size_t nSimplices, BoolSet boundary, int nBdryFacets, Use use, void *useArgs=0)

  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.

  Feature: Allow cancellation of facet pairing generation.

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.
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.
Member regina::formSigCensus (unsigned order, UseSignature use, void *useArgs=0)
  Feature: Add support for symbols of differing case.
Member regina::GluingPermSearcher< 2 >::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< 4 >::runSearch (long maxDepth=-1)
  Feature: Allow cancellation of permutation set generation.
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.
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"?
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.
Class regina::HomGroupPresentation
  Add a routine to attempt to verify validity of homomorphism.
Class regina::HomMarkedAbelianGroup

  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.

Class regina::MarkedAbelianGroup

  Optimise (long-term): Look at using sparse matrices for storage of SNF and the like.

  Testsuite additions: isBoundary(), boundaryMap(), writeAsBdry(), cycleGen().

Member regina::NormalHypersurface::isThinEdgeLink () const
  Optimise: Cache results.
Member regina::NormalHypersurface::isVertexLink () const
  Optimise: Cache results.
Member regina::NormalHypersurface::isVertexLinking () const
  Optimise: Cache results.
Member regina::NormalHypersurface::triangulate () const
  Bug: Check for absurdly large numbers of pieces and return 0 accordingly.
Class regina::NormalSurface

  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.

Member regina::NormalSurface::isCentral () const
  Optimise: Cache results.
Member regina::NormalSurface::isCompressingDisc (bool knownConnected=false) const

  Optimise: Reimplement this to avoid cutting along surfaces.

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

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::NormalSurfaces

  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.

Member regina::NormalSurfaces::filterForDisjointPairs () const
  Deal properly with surfaces that are too large to handle.
Member regina::NormalSurfaces::filterForPotentiallyIncompressible () const
  Add progress tracking.
Class regina::NormalSurfaceVector
  Optimise (long-term): Investigate using sparse vectors for storage.
Class regina::Packet
  Feature: Provide automatic name selection/specification upon child packet insertion.
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::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).
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::SurfaceFilter
  Feature: Implement property lastAppliedTo.
Class regina::TorusBundle
  Feature: Implement the == operator for finding conjugate and inverse matrices.
Class regina::Triangulation< 3 >

  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.

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 >::intelligentSimplify ()
  Optimise: Include random 2-3 moves to get out of wells.

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