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