Regina Calculation Engine
|
A base class for additional linear constraints that we can add to the tableaux of normal surface or angle structure matching equations. More...
#include <enumerate/ntreeconstraint.h>
Classes | |
struct | Coefficients |
Stores the extra coefficients in a single column for the nConstraints additional rows that we add to the tableaux to describe the nConstraints additional linear equations or inequalities. More... | |
Public Types | |
enum | { nConstraints } |
Static Public Member Functions | |
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... | |
static bool | verify (const NNormalSurface *s) |
Ensures that the given normal surface satisfies the extra constraints described by this class. More... | |
static bool | verify (const NAngleStructure *s) |
Ensures that the given angle structure satisfies the extra constraints described by this class. More... | |
static bool | supported (NormalCoords coords) |
Indicates whether the given coordinate system is supported by this constraint class. More... | |
A base class for additional linear constraints that we can add to the tableaux of normal surface or angle structure matching equations.
This is used with NTreeEnumeration, NTreeSingleSoln and related algorithms for enumerating and locating normal surfaces or angle structures in a 3-manifold triangulation. See the LPInitialTableaux class notes for details on how these constraints interact with the tableaux of matching equations.
The linear constraints may be equalities or inequalities, and there may be more than one such constraint. If all constraints are homogeneous equalities, the class should derive from LPConstraintSubspace instead (not this base class).
In angle structure coordinates, these linear constraints must not involve the scaling coordinate (the final coordinate that is used to convert the angle structure polytope into a polyhedral cone). The coefficient for the final scaling coordinate in each additional linear constraint will be assumed to be zero.
This base class provides no functionality. For documentation's sake only, the notes here describe the functionality that any subclass must implement. We note again that LPConstraintBase does not provide any implementations at all, and subclasses are completely responsible for their own implementations.