regina::LPConstraintNonSpun Class Reference
Vertex Enumeration

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/treeconstraint.h>`

Inheritance diagram for regina::LPConstraintNonSpun:

## 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 (LPCol< regina::LPConstraintNonSpun > *col, const int *columnPerm, const Triangulation< 3 > *tri)
template<typename IntType >
static void | constrain (LPData< regina::LPConstraintNonSpun, IntType > &lp, unsigned numCols)
static bool | verify (const NormalSurface *s)
static bool | verify (const AngleStructure *)
static bool | supported (NormalCoords coords)
static bool | addRows (LPCol< LPConstraintBase > *col, const int *columnPerm, const Triangulation< 3 > *tri)
| Explicitly constructs equations for the linear function(s) constrained by this class. More...
template<typename IntType >
static void | constrain (LPData< LPConstraintNone, IntType > &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:

- enumerate/treeconstraint.h

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