Regina Calculation Engine
|
A class that constraints the tableaux of normal surface matching equations to ensure that normal surfaces in an ideal triangulation are compact (thereby avoiding spun normal surfaces with infinitely many triangles). More...
#include <enumerate/ntreeconstraint.h>
Classes | |
struct | Coefficients |
Stores the extra coefficients in the tableaux associated with this constraint class (in this case, two extra integers per column). More... | |
Public Types | |
enum | { nConstraints = 2 } |
enum | { nConstraints } |
Static Public Member Functions | |
static bool | addRows (LPInitialTableaux< regina::LPConstraintNonSpun >::Col *col, const int *columnPerm, const NTriangulation *tri) |
template<typename Integer > | |
static void | constrain (LPData< regina::LPConstraintNonSpun, Integer > &lp, unsigned numCols) |
static bool | verify (const NNormalSurface *s) |
static bool | verify (const NAngleStructure *) |
static bool | supported (NormalCoords coords) |
static bool | addRows (LPInitialTableaux< LPConstraintBase >::Col *col, const int *columnPerm, const NTriangulation *tri) |
Explicitly constructs equations for the linear function(s) constrained by this class. More... | |
template<typename Integer > | |
static void | constrain (LPData< LPConstraintNone, Integer > &lp, unsigned numCols) |
Explicitly constraints each of these linear functions to an equality or inequality in the underlying tableaux. More... | |
A class that constraints the tableaux of normal surface matching equations to ensure that normal surfaces in an ideal triangulation are compact (thereby avoiding spun normal surfaces with infinitely many triangles).
At present this class can only work with oriented triangulations that have precisely one vertex, which is ideal with torus link. These constraints are explicitly checked by addRows(), which returns false
if they are not satisfied. Moreover, this constraint calls on SnapPea for some calculations: in the unexpected situation where SnapPea retriangulates, the linear function cannot be constructed and addRows() will again return false
. You should always test LPInitialTableaux::constraintsBroken() to verify that the linear functions have been constructed correctly.
Also, at present this class can only work with quadrilateral normal coordinates (and cannot handle almost normal coordinates at all). This is not explicitly checked; instead it appears as a precondition (see below).
See the LPConstraintBase class notes for details on all member functions and structs.