Regina Calculation Engine
Classes | Public Types | Static Public Member Functions | List of all members
regina::LPConstraintNonSpun Class Reference

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>

Inheritance diagram for regina::LPConstraintNonSpun:
regina::LPConstraintSubspace regina::LPConstraintBase

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

Detailed Description

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.

Precondition
We are working in quadrilateral normal coordinates. In particular, the coordinate system passed to the corresponding LPInitialTableaux class must be NS_QUAD, and constrainOct() must never be called on any of the corresponding LPData tableaux.
Warning
The API for this class has not yet been finalised. This means that the class interface may change in new versions of Regina, without maintaining backward compatibility. If you use this class directly in your own code, please watch the detailed changelogs upon new releases to see if you need to make changes to your code.
Python:
Not present.

The documentation for this class was generated from the following file:

Copyright © 1999-2014, 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@debian.org).