Triangulations

## Classes

class | regina::Example< dim >
| This class offers static routines for constructing a variety of sample dim-dimensional triangulations. More...
class | regina::Example< 2 >
| Offers routines for constructing a variety of sample 2-dimensional triangulations. More...
class | regina::Example< 3 >
| Offers routines for constructing a variety of sample 3-dimensional triangulations. More...
class | regina::Example< 4 >
| Offers routines for constructing a variety of sample 4-dimensional triangulations. More...
class | regina::FaceNumbering< dim, subdim >
| Specifies how subdim-faces are numbered within a dim-dimensional simplex. More...
class | regina::FacePair
| Represents a pair of tetrahedron face numbers. More...
class | regina::FacetPairing< 3 >
| Represents the dual graph of a 3-manifold triangulation. More...
struct | regina::FacetSpec< dim >
| A lightweight class used to refer to a particular facet of a particular top-dimensional simplex in a dim-dimensional triangulation. More...
class | regina::BoundaryComponent< dim >
| A component of the boundary of a dim-manifold triangulation. More...
class | regina::Component< dim >
| A connected component of a dim-manifold triangulation. More...
class | regina::Face< dim, subdim >
| Represents a subdim-face in the skeleton of a dim-dimensional triangulation. More...
class | regina::FaceEmbedding< dim, subdim >
| Details how a subdim-face of a dim-dimensional triangulation appears within each top-dimensional simplex. More...
class | regina::FacetPairing< dim >
| Represents the dual graph of a dim-manifold triangulation; that is, the pairwise matching of facets of dim-dimensional simplices. More...
class | regina::Isomorphism< dim >
| Represents a combinatorial isomorphism from one dim-manifold triangulation into another. More...
class | regina::Triangulation< dim >
| A dim-dimensional triangulation, built by gluing together dim-dimensional simplices along their (dim-1)-dimensional facets. More...
class | regina::HomologicalData
| Data type that deals with all the detailed homological information in a manifold. More...
class | regina::XMLTriangulationReader< dim >
| An XML packet reader that reads a single dim-dimensional triangulation. More...
class | regina::XMLTriangulationReader< 2 >
| An XML packet reader that reads a single 2-dimensional triangulation. More...
class | regina::XMLTriangulationReader< 3 >
| An XML packet reader that reads a single 3-dimensional triangulation. More...
class | regina::XMLTriangulationReader< 4 >
| An XML packet reader that reads a single 4-dimensional triangulation. More...

## Typedefs

typedef Example< 2 > | regina::Dim2ExampleTriangulation
| Deprecated typedef for backward compatibility. More...
typedef Example< 3 > | regina::NExampleTriangulation
| Deprecated typedef for backward compatibility. More...
typedef Example< 4 > | regina::Dim4ExampleTriangulation
| Deprecated typedef for backward compatibility. More...
typedef FacePair | regina::NFacePair
| Deprecated typedef for backward compatibility. More...
typedef FacetPairing< 3 > | regina::NFacePairing
| Deprecated typedef for backward compatibility. More...
typedef FacetSpec< 2 > | regina::Dim2TriangleEdge
| Deprecated typedef for backward compatibility. More...
typedef FacetSpec< 3 > | regina::NTetFace
| Deprecated typedef for backward compatibility. More...
typedef FacetSpec< 4 > | regina::Dim4PentFacet
| Deprecated typedef for backward compatibility. More...
typedef HomologicalData | regina::NHomologicalData
| Deprecated typedef for backward compatibility. More...

## Functions

static Triangulation< 2 > * | regina::Example< 2 >::orientable (unsigned genus, unsigned punctures)
| Returns a triangulation of the given orientable surface. More...
static Triangulation< 2 > * | regina::Example< 2 >::nonOrientable (unsigned genus, unsigned punctures)
| Returns a triangulation of the given non-orientable surface. More...
static Triangulation< 2 > * | regina::Example< 2 >::sphereTetrahedron ()
| Returns the four-triangle 2-sphere formed from the boundary of a tetrahedron. More...
static Triangulation< 2 > * | regina::Example< 2 >::sphereOctahedron ()
| Returns the eight-triangle 2-sphere formed from the boundary of an octahedron. More...
static Triangulation< 2 > * | regina::Example< 2 >::disc ()
| Returns a one-triangle disc. More...
static Triangulation< 2 > * | regina::Example< 2 >::annulus ()
| Returns a two-triangle annulus. More...
static Triangulation< 2 > * | regina::Example< 2 >::mobius ()
| Returns a one-triangle Mobius band. More...
static Triangulation< 2 > * | regina::Example< 2 >::torus ()
| Returns a two-triangle torus. More...
static Triangulation< 2 > * | regina::Example< 2 >::rp2 ()
| Returns a two-triangle projective plane. More...
static Triangulation< 2 > * | regina::Example< 2 >::kb ()
| Returns a two-triangle Klein bottle. More...
int | regina::binomSmall (int n, int k)
| Returns the binomial coefficient choose k for small arguments n and k. More...
template<int dim>
int | regina::faceOppositeEdge (int i, int j)
| Returns the (dim-2)-face number that is opposite the edge joining vertices i and j in a dim-dimensional simplex. More...
| regina::FacePair::FacePair ()
| Creates a new face pair (0,1). More...
| regina::FacePair::FacePair (int newFirst, int newSecond)
| Creates a new face pair from the two given face numbers. More...
| regina::FacePair::FacePair (const FacePair &cloneMe)
| Creates a new face pair that is a clone of the given pair. More...
unsigned | regina::FacePair::lower () const
| Returns the smaller of the two face numbers in this pair. More...
unsigned | regina::FacePair::upper () const
| Returns the larger of the two face numbers in this pair. More...
bool | regina::FacePair::isBeforeStart () const
| Determines if this face pair represents a before-the-start value. More...
bool | regina::FacePair::isPastEnd () const
| Determines if this face pair represents a past-the-end value. More...
FacePair | regina::FacePair::complement () const
| Returns the complement of this face pair. More...
FacePair & | regina::FacePair::operator= (const FacePair &cloneMe)
| Sets this face pair to be a copy of the given pair. More...
bool | regina::FacePair::operator== (const FacePair &other) const
| Determines if this and the given face pair are equal. More...
bool | regina::FacePair::operator!= (const FacePair &other) const
| Determines if this and the given face pair are not equal. More...
bool | regina::FacePair::operator< (const FacePair &other) const
| Determines if this is less than the given face pair. More...
bool | regina::FacePair::operator> (const FacePair &other) const
| Determines if this is greater than the given face pair. More...
bool | regina::FacePair::operator<= (const FacePair &other) const
| Determines if this is less than or equal to the given face pair. More...
bool | regina::FacePair::operator>= (const FacePair &other) const
| Determines if this is greater than or equal to the given face pair. More...
void | regina::FacePair::operator++ (int)
| Increments this face pair. More...
void | regina::FacePair::operator-- (int)
| Decrements this face pair. More...
| regina::FacetPairing< 3 >::FacetPairing (const FacetPairing &cloneMe)
| Creates a new face pairing that is a clone of the given face pairing. More...
| regina::FacetPairing< 3 >::FacetPairing (const Triangulation< 3 > &tri)
| Creates the face pairing of the given 3-manifold triangulation. More...
void | regina::FacetPairing< 3 >::followChain (size_t &tet, FacePair &faces) const
| Follows a chain as far as possible from the given point. More...
bool | regina::FacetPairing< 3 >::hasTripleEdge () const
| Determines whether this face pairing contains a triple edge. More...
bool | regina::FacetPairing< 3 >::hasBrokenDoubleEndedChain () const
| Determines whether this face pairing contains a broken double-ended chain. More...
bool | regina::FacetPairing< 3 >::hasOneEndedChainWithDoubleHandle () const
| Determines whether this face pairing contains a one-ended chain with a double handle. More...
bool | regina::FacetPairing< 3 >::hasWedgedDoubleEndedChain () const
| Determines whether this face pairing contains a wedged double-ended chain. More...
bool | regina::FacetPairing< 3 >::hasOneEndedChainWithStrayBigon () const
| Determines whether this face pairing contains a one-ended chain with a stray bigon. More...
bool | regina::FacetPairing< 3 >::hasTripleOneEndedChain () const
| Determines whether this face pairing contains a triple one-ended chain. More...
bool | regina::FacetPairing< 3 >::hasSingleStar () const
| Determines whether this face pairing contains a single-edged star. More...
bool | regina::FacetPairing< 3 >::hasDoubleStar () const
| Determines whether this face pairing contains a double-edged star. More...
bool | regina::FacetPairing< 3 >::hasDoubleSquare () const
| Determines whether this face pairing contains a double-edged square. More...
| regina::FacetSpec< dim >::FacetSpec ()
| Creates a new specifier with no initialisation. More...
| regina::FacetSpec< dim >::FacetSpec (int newSimp, int newFacet)
| Creates a new specifier referring to the given facet of the given simplex. More...
| regina::FacetSpec< dim >::FacetSpec (const FacetSpec< dim > &cloneMe)
| Creates a new specifier referring to the same simplex facet as the given specifier. More...
bool | regina::FacetSpec< dim >::isBoundary (size_t nSimplices) const
| Determines if this specifier represents the overall boundary. More...
bool | regina::FacetSpec< dim >::isBeforeStart () const
| Determines if this specifier represents a before-the-start value. More...
bool | regina::FacetSpec< dim >::isPastEnd (size_t nSimplices, bool boundaryAlso) const
| Determines if this specifier represents a past-the-end value. More...
void | regina::FacetSpec< dim >::setFirst ()
| Sets this specifier to the first facet of the first simplex. More...
void | regina::FacetSpec< dim >::setBoundary (size_t nSimplices)
| Sets this specifier to the overall boundary. More...
void | regina::FacetSpec< dim >::setBeforeStart ()
| Sets this specifier to before-the-start. More...
void | regina::FacetSpec< dim >::setPastEnd (size_t nSimplices)
| Sets this specifier to past-the-end. More...
FacetSpec & | regina::FacetSpec< dim >::operator= (const FacetSpec< dim > &other)
| Sets this specifier to the value of the given specifier. More...
FacetSpec | regina::FacetSpec< dim >::operator++ ()
| Increments this specifier. More...
FacetSpec | regina::FacetSpec< dim >::operator++ (int)
| Increments this specifier. More...
FacetSpec | regina::FacetSpec< dim >::operator-- ()
| Decrements this specifier. More...
FacetSpec | regina::FacetSpec< dim >::operator-- (int)
| Decrements this specifier. More...
bool | regina::FacetSpec< dim >::operator== (const FacetSpec< dim > &other) const
| Determines if this and the given specifier are identical. More...
bool | regina::FacetSpec< dim >::operator!= (const FacetSpec< dim > &other) const
| Determines if this and the given specifier are not identical. More...
bool | regina::FacetSpec< dim >::operator< (const FacetSpec< dim > &other) const
| Determines if this is less than the given specifier. More...
bool | regina::FacetSpec< dim >::operator<= (const FacetSpec< dim > &other) const
| Determines if this is less than or equal to the given specifier. More...
| regina::HomologicalData::SortedArray::SortedArray ()
| Construct an empty array. More...
size_t | regina::HomologicalData::SortedArray::size () const
| Return the number of elements in this array. More...
unsigned long | regina::HomologicalData::SortedArray::operator[] (size_t index) const
| Return the integer at the given index in this array. More...
ptrdiff_t | regina::HomologicalData::SortedArray::index (unsigned long value) const
| Finds the index of the given integer in this array. More...
void | regina::HomologicalData::SortedArray::push_back (unsigned long value)
| Pushes the given integer onto the end of this array. More...
| regina::HomologicalData::HomologicalData (const Triangulation< 3 > &input)
| Takes as input a triangulation. More...
| regina::HomologicalData::HomologicalData (const HomologicalData &h)
| Copy constructor. More...
| regina::HomologicalData::~HomologicalData ()
| Destructor. More...
void | regina::HomologicalData::writeTextShort (std::ostream &out) const
| Writes a short text representation of this object to the given output stream. More...
const MarkedAbelianGroup & | regina::HomologicalData::homology (unsigned q)
| This routine gives access to the manifold's homology computed with the regular CW-decomposition. More...
const MarkedAbelianGroup & | regina::HomologicalData::bdryHomology (unsigned q)
| This routine gives access to the homology of the boundary of the manifold, computed with the regular CW-decomposition. More...
const HomMarkedAbelianGroup & | regina::HomologicalData::bdryHomologyMap (unsigned q)
| This routine gives access to the homomorphism from the homology of the boundary to the homology of the manifold. More...
const MarkedAbelianGroup & | regina::HomologicalData::dualHomology (unsigned q)
| This routine gives access to the manifold's homology computed with the dual CW-decomposition. More...
const HomMarkedAbelianGroup & | regina::HomologicalData::h1CellAp ()
| Returns the isomorphism from dualHomology(1) to homology(1) given by a cellular approximation to the identity map on the manifold. More...
unsigned long | regina::HomologicalData::countStandardCells (unsigned dimension)
| Returns the number of cells of the given dimension in the standard genuine CW-decomposition of the manifold. More...
unsigned long | regina::HomologicalData::countDualCells (unsigned dimension)
| Returns the number of cells of the given dimension in the dual CW-decomposition of the manifold. More...
unsigned long | regina::HomologicalData::countBdryCells (unsigned dimension)
| Returns the number of cells of the given dimension in the standard CW-decomposition of the boundary of the manifold. More...
long | regina::HomologicalData::eulerChar ()
| The proper Euler characteristic of the manifold, computed from the dual CW-decomposition. More...
const std::vector< std::pair< Integer, std::vector< unsigned long > > > & | regina::HomologicalData::torsionRankVector ()
| Returns the torsion form rank vector. More...
const std::string & | regina::HomologicalData::torsionRankVectorString ()
| Same as torsionRankVector() but returns as a human-readable string. More...
const std::vector< LargeInteger > & | regina::HomologicalData::torsionSigmaVector ()
| Returns the 2-torsion sigma vector. More...
const std::string & | regina::HomologicalData::torsionSigmaVectorString ()
| Same as torsionSigmaVector() but returns as a human-readable string. More...
const std::vector< std::pair< Integer, std::vector< int > > > & | regina::HomologicalData::torsionLegendreSymbolVector ()
| Returns the odd p-torsion Legendre symbol vector. More...
const std::string & | regina::HomologicalData::torsionLegendreSymbolVectorString ()
| Same as torsionLegendreSymbolVector() but returns as a human-readable string. More...
bool | regina::HomologicalData::formIsHyperbolic ()
| Returns true iff torsion linking form is ‘hyperbolic’ in the linking-form sense of the word. More...
bool | regina::HomologicalData::formIsSplit ()
| Returns true iff the torsion linking form is split. More...
bool | regina::HomologicalData::formSatKK ()
| Returns true iff the torsion linking form satisfies the Kawauchi-Kojima 2-torsion condition. More...
const std::string & | regina::HomologicalData::embeddabilityComment ()
| Returns a comment on whether the manifold might embed in a homology 3-sphere or 4-sphere. More...
| regina::XMLTriangulationReader< dim >::XMLTriangulationReader (XMLTreeResolver &resolver)
| Creates a new triangulation reader. More...
XMLElementReader * | regina::XMLTriangulationReader< dim >::startPropertySubElement (const std::string &subTagName, const regina::xml::XMLPropertyDict &subTagProps)
| Returns an XML element reader for the given optional property of a dim-dimensional triangulation. More...
| regina::XMLTriangulationReader< 2 >::XMLTriangulationReader (XMLTreeResolver &resolver)
| Creates a new triangulation reader. More...
XMLElementReader * | regina::XMLTriangulationReader< 2 >::startPropertySubElement (const std::string &subTagName, const regina::xml::XMLPropertyDict &subTagProps)
| Returns an XML element reader for the given optional property of a dim-dimensional triangulation. More...
| regina::XMLTriangulationReader< 3 >::XMLTriangulationReader (XMLTreeResolver &resolver)
| Creates a new triangulation reader. More...
XMLElementReader * | regina::XMLTriangulationReader< 3 >::startPropertySubElement (const std::string &subTagName, const regina::xml::XMLPropertyDict &subTagProps)
| Returns an XML element reader for the given optional property of a dim-dimensional triangulation. More...
| regina::XMLTriangulationReader< 4 >::XMLTriangulationReader (XMLTreeResolver &resolver)
| Creates a new triangulation reader. More...
XMLElementReader * | regina::XMLTriangulationReader< 4 >::startPropertySubElement (const std::string &subTagName, const regina::xml::XMLPropertyDict &subTagProps)
| Returns an XML element reader for the given optional property of a dim-dimensional triangulation. More...

## Variables

int | regina::FacetSpec< dim >::simp
| The simplex referred to. More...
int | regina::FacetSpec< dim >::facet
| The facet of the simplex referred to. More...

## Friends

class | regina::FacetPairing< 3 >::detail::FacetPairingBase< 3 >

## Closed Triangulations

static Triangulation< 3 > * | regina::Example< 3 >::threeSphere ()
| Returns a one-tetrahedron triangulation of the 3-sphere. More...
static Triangulation< 3 > * | regina::Example< 3 >::bingsHouse ()
| Returns the two-tetrahedron triangulation of the 3-sphere that is dual to Bing's house with two rooms. More...
static Triangulation< 3 > * | regina::Example< 3 >::s2xs1 ()
| Returns a two-tetrahedron triangulation of the product space `S^2 x S^1`. More...
static Triangulation< 3 > * | regina::Example< 3 >::rp2xs1 ()
| Returns a three-tetrahedron triangulation of the non-orientable product space `RP^2 x S^1`. More...
static Triangulation< 3 > * | regina::Example< 3 >::rp3rp3 ()
| Returns a triangulation of the connected sum `RP^3 # RP^3`. More...
static Triangulation< 3 > * | regina::Example< 3 >::lens (size_t p, size_t q)
| Returns a triangulation of the lens space `L(p,q)`. More...
static Triangulation< 3 > * | regina::Example< 3 >::poincareHomologySphere ()
| Returns the five-tetrahedron triangulation of the Poincare homology sphere. More...
static Triangulation< 3 > * | regina::Example< 3 >::weeks ()
| Returns a nine-tetrahedron minimal triangulation of the Weeks manifold. More...
static Triangulation< 3 > * | regina::Example< 3 >::weberSeifert ()
| Returns a one-vertex triangulation of the Weber-Seifert dodecahedral space. More...
static Triangulation< 3 > * | regina::Example< 3 >::smallClosedOrblHyperbolic ()
| Returns the nine-tetrahedron closed orientable hyperbolic 3-manifold with volume 0.94270736. More...
static Triangulation< 3 > * | regina::Example< 3 >::smallClosedNonOrblHyperbolic ()
| Returns the eleven-tetrahedron closed non-orientable hyperbolic 3-manifold with volume 2.02988321. More...
static Triangulation< 3 > * | regina::Example< 3 >::sphere600 ()
| Returns the boundary 3-sphere of the regular 600-cell. More...

## Finite Bounded Triangulations

static Triangulation< 3 > * | regina::Example< 3 >::lst (size_t a, size_t b)
| Returns the layered solid torus `LST(a,b,c)`. More...
static Triangulation< 3 > * | regina::Example< 3 >::solidKleinBottle ()
| Returns a triangulation of the solid Klein bottle. More...

## Ideal Triangulations

static Triangulation< 3 > * | regina::Example< 3 >::figureEight ()
| Returns a two-tetrahedron ideal triangulation of the figure eight knot complement. More...
static Triangulation< 3 > * | regina::Example< 3 >::trefoil ()
| Returns a two-tetrahedron ideal triangulation of the trefoil knot complement. More...
static Triangulation< 3 > * | regina::Example< 3 >::whiteheadLink ()
| Returns a four-tetrahedron ideal triangulation of the Whitehead link complement. More...
static Triangulation< 3 > * | regina::Example< 3 >::gieseking ()
| Returns the one-tetrahedron ideal triangulation of the non-orientable Gieseking manifold. More...
static Triangulation< 3 > * | regina::Example< 3 >::cuspedGenusTwoTorus ()
| Returns a triangulation of a solid genus two torus with a cusped boundary. More...

## Closed Triangulations

static Triangulation< 4 > * | regina::Example< 4 >::fourSphere ()
| Returns a two-pentachoron triangulation of the 4-sphere. More...
static Triangulation< 4 > * | regina::Example< 4 >::simplicialFourSphere ()
| Returns the standard six-pentachoron triangulation of the 4-sphere as the boundary of a 5-simplex. More...
static Triangulation< 4 > * | regina::Example< 4 >::rp4 ()
| Returns a four-pentachoron triangulation of real projective 4-space. More...
static Triangulation< 4 > * | regina::Example< 4 >::s3xs1 ()
| Returns a two-pentachoron triangulation of the product space `S^3 x S^1`. More...
static Triangulation< 4 > * | regina::Example< 4 >::s3xs1Twisted ()
| Returns a two-pentachoron triangulation of the twisted product space `S^3 x~ S^1`. More...

## Ideal Triangulations

(end: Closed Triangulations)
static Triangulation< 4 > * | regina::Example< 4 >::cappellShaneson ()
| Returns a two-pentachoron triangulation of a Cappell-Shaneson 2-knot complement in the 4-sphere. More...

## Constructions from 3-Manifold Triangulations

(end: Ideal Triangulations)
static Triangulation< 4 > * | regina::Example< 4 >::iBundle (const Triangulation< 3 > &base)
| Returns a triangulation of the product `M x I`, where M is the given 3-manifold triangulation. More...
static Triangulation< 4 > * | regina::Example< 4 >::s1Bundle (const Triangulation< 3 > &base)
| Returns a triangulation of the product `M x S1`, where M is the given 3-manifold triangulation. More...
static Triangulation< 4 > * | regina::Example< 4 >::bundleWithMonodromy (const Triangulation< 3 > &base, const Isomorphism< 3 > &monodromy)
| Returns a bundle formed from a given 3-manifold and a given monodromy. More...

## Detailed Description

Triangulations of manifolds in all supported dimensions.

## Typedef Documentation

## Dim2ExampleTriangulation

typedef Example<2> regina::Dim2ExampleTriangulation

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
  Instead of the old typedef Dim2ExampleTriangulation, you should use the full class name Example<2>.

## Dim2TriangleEdge

typedef FacetSpec<2> regina::Dim2TriangleEdge

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
  Instead of the old typedef Dim2TriangleEdge, you should use the real class name FacetSpec<2>.

## Dim4ExampleTriangulation

typedef Example<4> regina::Dim4ExampleTriangulation

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
  Instead of the old typedef Dim4ExampleTriangulation, you should use the full class name Example<4>.

## Dim4PentFacet

typedef FacetSpec<4> regina::Dim4PentFacet

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
  Instead of the old typedef Dim4PentFacet, you should use the real class name FacetSpec<4>.

## NExampleTriangulation

typedef Example<3> regina::NExampleTriangulation

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
  Instead of the old typedef NExampleTriangulation, you should use the full class name Example<3>.

## NFacePair

typedef FacePair regina::NFacePair

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
  The class NFacePair has now been renamed to FacePair.

## NFacePairing

typedef FacetPairing<3> regina::NFacePairing

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
  Instead of the old typedef NFacePairing, you should use the full class name FacetPairing<3>.

## NHomologicalData

typedef HomologicalData regina::NHomologicalData

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
  The class NHomologicalData has now been renamed to HomologicalData.

## NTetFace

typedef FacetSpec<3> regina::NTetFace

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
  Instead of the old typedef NTetFace, you should use the real class name FacetSpec<3>.

## Function Documentation

## annulus()

static Triangulation<2>* regina::Example< 2 >::annulus | ( |  | ) |

static

Returns a two-triangle annulus.

This is isomorphic to the triangulation returned by the generic routine ballBundle(), though it will have a different packet label.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## bdryHomology()

const MarkedAbelianGroup& regina::HomologicalData::bdryHomology | ( | unsigned | q | ) |

This routine gives access to the homology of the boundary of the manifold, computed with the regular CW-decomposition.

Parameters

  q | the dimension of the homology group: can be 0, 1 or 2.

Returns
  the q-th boundary homology group, in standard cellular homology coordinates

## bdryHomologyMap()

const HomMarkedAbelianGroup& regina::HomologicalData::bdryHomologyMap | ( | unsigned | q | ) |

This routine gives access to the homomorphism from the homology of the boundary to the homology of the manifold.

Parameters

  q | the dimension of the map: can be 0, 1 or 2.

Returns
  the map from H_q of the boundary to H_q of the manifold, computed in standard coordinates.

## bingsHouse()

static Triangulation<3>* regina::Example< 3 >::bingsHouse | ( |  | ) |

static

Returns the two-tetrahedron triangulation of the 3-sphere that is dual to Bing's house with two rooms.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## binomSmall()

int regina::binomSmall | ( | int | n,
|  | int | k
| ) |  |

inline

Returns the binomial coefficient
choose k for small arguments n and k.

This routine is very fast, since it uses a constant-time lookup. The trade-off is that it can only be used for n ≤ 16.

If you need a compile-time constant, you should use the constant FaceNumbering<n-1, k-1>::nFaces instead. This function is provided for situations where n and/or k are not known until runtime.

Note
  The constraint n ≤ 16 is large enough for working with triangulations in Regina, since Regina restricts its triangulations to dimension ≤ 15 (where each simplex has 16 vertices).

Parameters

  n | the parameter n in (n choose k); this must be between 0 and 16 inclusive.
  k | the parameter k in (n choose k); this must be between 0 and n inclusive.

Returns
  the binomial coefficient n choose k.

## bundleWithMonodromy()

static Triangulation<4>* regina::Example< 4 >::bundleWithMonodromy | ( | const Triangulation< 3 > & | base,
|  | const Isomorphism< 3 > & | monodromy
| ) |  |

static

Returns a bundle formed from a given 3-manifold and a given monodromy.

Specifically, let M be the given 3-manifold triangulation. This routine builds the bundle `M x I`, and then identifies the two copies of M on the boundary according to the given homeomorphism from M to itself. The homeomorphism must be expressed as a combinatorial automorphism, which means that for a non-trivial monodromy you may need to do some work to find a sufficiently symmetric 3-manifold triangulation to begin with.

The resulting manifold will contain 82 pentachora for each original tetrahedron of M, and will contain many internal vertices. It is highly recommended that you call Triangulation<4>::intelligentSimplify() afterwards if you do not need to preserve the combinatorial structure.

Precondition
  The given monodromy must be an isomorphism from M to itself; that is, a combinatorial automorphism.

Warning
  If the given 3-manifold triangulation has ideal boundary, then you will obtain an invalid 4-manifold triangulation as a result.

Parameters

  base | the 3-manifold triangulation M, as described above.
  monodromy | the homeomorphism from M to itself, as described above.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## cappellShaneson()

static Triangulation<4>* regina::Example< 4 >::cappellShaneson | ( |  | ) |

static

Returns a two-pentachoron triangulation of a Cappell-Shaneson 2-knot complement in the 4-sphere.

This triangulation is described and analysed in "Triangulating a Cappell-Shaneson knot complement", Budney, Burton and Hillman, Mathematical Research Letters 19 (2012), no. 5, 1117-1126.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## complement()

FacePair regina::FacePair::complement | ( |  | ) | const

Returns the complement of this face pair.

The complement is the pair containing the two faces not included in this face pair.

Precondition
  This face pair is neither before-the-start nor past-the-end.

Returns
  the complement of this face pair.

## countBdryCells()

unsigned long regina::HomologicalData::countBdryCells | ( | unsigned | dimension | ) |

inline

Returns the number of cells of the given dimension in the standard CW-decomposition of the boundary of the manifold.

This is a subcomplex of the complex used in countStandardCells().

Parameters

  dimension | the dimension of the cells in question; this must be 0, 1 or 2.

Returns
  the number of cells of the given dimension in the standard CW-decomposition of the boundary.

## countDualCells()

unsigned long regina::HomologicalData::countDualCells | ( | unsigned | dimension | ) |

inline

Returns the number of cells of the given dimension in the dual CW-decomposition of the manifold.

This is typically much smaller than countStandardCells().

Parameters

  dimension | the dimension of the cells in question; this must be 0, 1, 2 or 3.

Returns
  the number of cells of the given dimension in the dual CW-decomposition to the triangulation.

## countStandardCells()

unsigned long regina::HomologicalData::countStandardCells | ( | unsigned | dimension | ) |

inline

Returns the number of cells of the given dimension in the standard genuine CW-decomposition of the manifold.

In the case that the triangulation is a proper triangulation of a manifold (or delta-complex decomposition) it simply returns the same information as in the Triangulation<3> vertex, edge, face and tetrahedron lists.

In the case that this is an ideal triangulation, this algorithm returns the details of the corresponding compact manifold with boundary a union of closed surfaces.

Parameters

  dimension | the dimension of the cells in question; this must be 0, 1, 2 or 3.

Returns
  the number of cells of the given dimension in the standard CW-decomposition of the closed manifold.

## cuspedGenusTwoTorus()

static Triangulation<3>* regina::Example< 3 >::cuspedGenusTwoTorus | ( |  | ) |

static

Returns a triangulation of a solid genus two torus with a cusped boundary.

This triangulation has one internal finite vertex and one genus two ideal vertex.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## disc()

static Triangulation<2>* regina::Example< 2 >::disc | ( |  | ) |

static

Returns a one-triangle disc.

This is isomorphic to the triangulation returned by the generic routine ball(), though it will have a different packet label.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## dualHomology()

const MarkedAbelianGroup& regina::HomologicalData::dualHomology | ( | unsigned | q | ) |

This routine gives access to the manifold's homology computed with the dual CW-decomposition.

This routine is typically faster than homology() since the dual CW-decomposition generally has far fewer cells.

Note that the groups returned by homology() and dualHomology() are isomorphic, though they are generally described by different presentations.

Parameters

  q | the dimension of the homology group: can be 0, 1, 2 or 3.

Returns
  the q-th homology group, computed in the dual CW-decomposition.

## embeddabilityComment()

const std::string & regina::HomologicalData::embeddabilityComment | ( |  | ) |

inline

Returns a comment on whether the manifold might embed in a homology 3-sphere or 4-sphere.

Basically, this routine runs through all the Kawauchi-Kojima conditions, plus a few other ‘elementary’ conditions.

Each comment will be formatted as one or more English sentences (i.e., with capitalisation and punctuation). The comments themselves are subject to change between releases of Regina, since later releases may have more detailed tests at their disposal.

This routine is available for both orientable and non-orientable triangulations. In the non-orientable case it may return additional information regarding the orientable double cover.

Precondition
  The triangulation is of a connected 3-manifold.

Returns
  a string giving a one-line description of what is known about where this manifold embeds, based solely on the manifold's homological data.

## eulerChar()

long int regina::HomologicalData::eulerChar | ( |  | ) |

inline

The proper Euler characteristic of the manifold, computed from the dual CW-decomposition.

This routine calculates the Euler characteristic of the corresponding compact triangulated 3-manifold, with each ideal vertex treated as a surface boundary component.

This routine returns the same value as Triangulation<3>::eulerCharManifold(), though it computes it in a different way.

On the other hand, this routine differs from Triangulation<3>::eulerCharTri(), which handles ideal triangulations in a non-standard way (treating each ideal vertex as just a single vertex).

Returns
  the Euler characteristic of the corresponding compact triangulated 3-manifold.

## faceOppositeEdge()

template<int dim>

int regina::faceOppositeEdge | ( | int | i,
|  | int | j
| ) |  |

inline

Returns the (dim-2)-face number that is opposite the edge joining vertices i and j in a dim-dimensional simplex.

This function is offered because its implementation is faster than working through the FaceNumbering class.

The arguments i and j do not need to appear in ascending order.

Parameters

  i | the first vertex of an edge in a dim-dimensional simplex. This must be between 0 and dim inclusive.
  j | the second vertex of an edge in a dim-dimensional simplex. This must be between 0 and dim inclusive, and must be different from i.

Returns
  the number of the (dim-2)-face opposite the given edge.

## FacePair() [1/3]

regina::FacePair::FacePair | ( |  | ) |

inline

Creates a new face pair (0,1).

## FacePair() [2/3]

regina::FacePair::FacePair | ( | const FacePair & | cloneMe | ) |

inline

Creates a new face pair that is a clone of the given pair.

Parameters

  cloneMe | the face pair to clone.

## FacePair() [3/3]

regina::FacePair::FacePair | ( | int | newFirst,
|  | int | newSecond
| ) |  |

Creates a new face pair from the two given face numbers.

The two given numbers need not be in any particular order.

Precondition
  The two given face numbers must be distinct integers between 0 and 3 inclusive.

Parameters

  newFirst | the first face number in the new pair.
  newSecond | the second face number in the new pair.

## FacetPairing() [1/2]

regina::FacetPairing< 3 >::FacetPairing | ( | const FacetPairing< 3 > & | cloneMe | ) |

inline

Creates a new face pairing that is a clone of the given face pairing.

Parameters

  cloneMe | the face pairing to clone.

## FacetPairing() [2/2]

regina::FacetPairing< 3 >::FacetPairing | ( | const Triangulation< 3 > & | tri | ) |

inline

Creates the face pairing of the given 3-manifold triangulation.

This describes how the tetrahedron faces of the given triangulation are joined together in pairs.

Precondition
  The given triangulation is not empty.

Parameters

  tri | the triangulation whose face pairing should be constructed.

## FacetSpec() [1/3]

template<int dim>

regina::FacetSpec< dim >::FacetSpec | ( |  | ) |

inline

Creates a new specifier with no initialisation.

This specifier must be initialised before it is used.

## FacetSpec() [2/3]

template<int dim>

regina::FacetSpec< dim >::FacetSpec | ( | const FacetSpec< dim > & | cloneMe | ) |

inline

Creates a new specifier referring to the same simplex facet as the given specifier.

Parameters

  cloneMe | the specifier to clone.

## FacetSpec() [3/3]

template<int dim>

regina::FacetSpec< dim >::FacetSpec | ( | int | newSimp,
|  | int | newFacet
| ) |  |

inline

Creates a new specifier referring to the given facet of the given simplex.

Parameters

  newSimp | the given simplex; see the class notes for allowable values of this parameter.
  newFacet | the given facet; this should be between 0 and dim inclusive.

## figureEight()

static Triangulation<3>* regina::Example< 3 >::figureEight | ( |  | ) |

static

Returns a two-tetrahedron ideal triangulation of the figure eight knot complement.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## followChain()

void regina::FacetPairing< 3 >::followChain | ( | size_t & | tet,
|  | FacePair & | faces
| ) |  | const

Follows a chain as far as possible from the given point.

A chain is the underlying face pairing for a layered chain; specifically it involves one tetrahedron joined to a second along two faces, the remaining two faces of the second tetrahedron joined to a third and so on. A chain can involve as few as one tetrahedron or as many as we like. Note that the remaining two faces of the first tetrahedron and the remaining two faces of the final tetrahedron remain unaccounted for by this structure.

This routine begins with two faces of a given tetrahedron, described by parameters tet and faces. If these two faces are both joined to some different tetrahedron, parameter tet will be changed to this new tetrahedron and parameter faces will be changed to the remaining faces of this new tetrahedron (i.e., the two faces that were not joined to the original faces of the original tetrahedron).

This procedure is repeated as far as possible until either the two faces in question join to two different tetrahedra, the two faces join to each other, or at least one of the two faces is unmatched.

Thus, given one end of a chain, this procedure can be used to follow the face pairings through to the other end of the chain.

Warning
  You must be sure when calling this routine that you are not inside a chain that loops back onto itself! If the face pairing forms a large loop with each tetrahedron joined by two faces to the next, this routine will cycle around the loop forever and never return.

Parameters

  tet | the index in the underlying triangulation of the tetrahedron to begin at. This parameter will be modified directly by this routine as a way of returning the results.
  faces | the pair of face numbers in the given tetrahedron at which we begin. This parameter will also be modified directly by this routine as a way of returning results.

## formIsHyperbolic()

bool regina::HomologicalData::formIsHyperbolic | ( |  | ) |

Returns true iff torsion linking form is ‘hyperbolic’ in the linking-form sense of the word.

To be a little more precise, Poincare-duality in a compact orientable boundaryless manifold gives an isomorphism between the torsion subgroup of H_1(M) denoted tH_1(M) and Hom(tH_1(M),Q/Z), where Q is the rationals and Z the integers. The associated bilinear form (with values in Q/Z) is said to be ‘hyperbolic’ if tH_1(M) splits as a direct sum A+B such that Poincare duality sends A to Hom(B,Q/Z) and B to Hom(A,Q/Z).

Precondition
  The triangulation is of a connected orientable 3-manifold.

Returns
  `true` iff the torsion linking form is hyperbolic.

## formIsSplit()

bool regina::HomologicalData::formIsSplit | ( |  | ) |

inline

Returns true iff the torsion linking form is split.

Precondition
  The triangulation is of a connected orientable 3-manifold.

Returns
  `true` iff the linking form is split.

## formSatKK()

bool regina::HomologicalData::formSatKK | ( |  | ) |

inline

Returns true iff the torsion linking form satisfies the Kawauchi-Kojima 2-torsion condition.

This condition states that on all elements x of order 2^k, 2^{k-1}form(x,x) = 0.

This is a neccessary condition for an orientable 3-manifold perhaps with boundary to embed in a homology 4-sphere.

Precondition
  The triangulation is of a connected orientable 3-manifold.

Returns
  `true` iff the form satisfies the 2-torsion condition of Kawauchi-Kojima.

## fourSphere()

Triangulation< 4 > * regina::Example< 4 >::fourSphere | ( |  | ) |

inline static

Returns a two-pentachoron triangulation of the 4-sphere.

This is identical to calling the generic routine sphere().

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## gieseking()

static Triangulation<3>* regina::Example< 3 >::gieseking | ( |  | ) |

static

Returns the one-tetrahedron ideal triangulation of the non-orientable Gieseking manifold.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## h1CellAp()

const HomMarkedAbelianGroup& regina::HomologicalData::h1CellAp | ( |  | ) |

Returns the isomorphism from dualHomology(1) to homology(1) given by a cellular approximation to the identity map on the manifold.

Returns
  The isomorphism from dualHomology(1) to homology(1) computed via a cellular approximation of the identity map from the first 1-skeleton to the second.

## hasBrokenDoubleEndedChain()

bool regina::FacetPairing< 3 >::hasBrokenDoubleEndedChain | ( |  | ) | const

Determines whether this face pairing contains a broken double-ended chain.

A chain involves a sequence of tetrahedra, each joined to the next along two faces, and is described in detail in the documentation for followChain().

A one-ended chain is a chain in which the first tetrahedron is also joined to itself along one face (i.e., the underlying face pairing for a layered solid torus). A double-ended chain is a chain in which the first tetrahedron is joined to itself along one face and the final tetrahedron is also joined to itself along one face (i.e., the underlying face pairing for a layered lens space).

A broken double-ended chain consists of two one-ended chains (using distinct sets of tetrahedra) joined together along one face. The remaining two faces (one from each chain) that were unaccounted for by the individual one-ended chains remain unaccounted for by this broken double-ended chain.

In this routine we are interested specifically in finding a broken double-ended chain that is not a part of a complete double-ended chain, i.e., the final two unaccounted faces are not joined together.

A face pairing containing a broken double-ended chain cannot model a closed minimal irreducible P^2-irreducible 3-manifold triangulation on more than two tetrahedra. See "Face pairing graphs and 3-manifold enumeration", Benjamin A. Burton, J. Knot Theory Ramifications 13 (2004), 1057–1101.

Returns
  `true` if and only if this face pairing contains a broken double-ended chain that is not part of a complete double-ended chain.

## hasDoubleSquare()

bool regina::FacetPairing< 3 >::hasDoubleSquare | ( |  | ) | const

Determines whether this face pairing contains a double-edged square.

A double-edged square involves four distinct tetrahedra that meet each other as follows. Two pairs of tetrahedra are joined along two pairs of faces each. Then each tetrahedron is joined along a single face to one tetrahedron of the other pair. The four tetrahedron faces not yet joined to anything (one from each tetrahedron) remain unaccounted for by this structure.

Returns
  `true` if and only if this face pairing contains a double-edged square.

## hasDoubleStar()

bool regina::FacetPairing< 3 >::hasDoubleStar | ( |  | ) | const

Determines whether this face pairing contains a double-edged star.

A double-edged star involves two tetrahedra that are adjacent along two separate pairs of faces, where the four remaining faces of these tetrahedra are joined to four entirely new tetrahedra (so that none of the six tetrahedra described in this structure are the same).

Returns
  `true` if and only if this face pairing contains a double-edged star.

## hasOneEndedChainWithDoubleHandle()

bool regina::FacetPairing< 3 >::hasOneEndedChainWithDoubleHandle | ( |  | ) | const

Determines whether this face pairing contains a one-ended chain with a double handle.

A chain involves a sequence of tetrahedra, each joined to the next along two faces, and is described in detail in the documentation for followChain().

A one-ended chain is a chain in which the first tetrahedron is also joined to itself along one face (i.e., the underlying face pairing for a layered solid torus).

A one-ended chain with a double handle begins with a one-ended chain. The two faces that are unaccounted for by this one-ended chain must be joined to two different tetrahedra, and these two tetrahedra must be joined to each other along two faces. The remaining two faces of these two tetrahedra remain unaccounted for by this structure.

A face pairing containing a one-ended chain with a double handle cannot model a closed minimal irreducible P^2-irreducible 3-manifold triangulation on more than two tetrahedra. See "Face pairing graphs and 3-manifold enumeration", Benjamin A. Burton, J. Knot Theory Ramifications 13 (2004), 1057–1101.

Returns
  `true` if and only if this face pairing contains a one-ended chain with a double handle.

## hasOneEndedChainWithStrayBigon()

bool regina::FacetPairing< 3 >::hasOneEndedChainWithStrayBigon | ( |  | ) | const

Determines whether this face pairing contains a one-ended chain with a stray bigon.

A chain involves a sequence of tetrahedra, each joined to the next along two faces, and is described in detail in the documentation for followChain().

A one-ended chain is a chain in which the first tetrahedron is also joined to itself along one face (i.e., the underlying face pairing for a layered solid torus).

A one-ended chain with a stray bigon describes the following structure. We begin with a one-ended chain. Two new tetrahedra are added; these are joined to each other along two pairs of faces, and one of the new tetrahedra is joined to the end of the one-ended chain. We then ensure that:

- This configuration is not part of a longer one-ended chain that encompasses all of the aforementioned tetrahedra;
- There is no extra tetrahedron that is joined to both the two new tetrahedra and the end of the chain;
- There is no extra tetrahedron that is joined to the end of the chain along one face and the far new tetrahedron along two additional faces (where by "the far new tetrahedron" we mean the new tetrahedron that was not originally joined to the chain).

Aside from these constraints, the remaining four tetrahedron faces (two faces of the far new tetrahedron, one face of the other new tetrahedron, and one face at the end of the chain) remain unaccounted for by this structure.

A face pairing containing a structure of this type cannot model a closed minimal irreducible P^2-irreducible 3-manifold triangulation on more than two tetrahedra. See "Enumeration of non-orientable 3-manifolds using face-pairing graphs and union-find", Benjamin A. Burton, Discrete Comput. Geom. 38 (2007), no. 3, 527–571.

Returns
  `true` if and only if this face pairing contains a one-ended chain with a stray bigon.

## hasSingleStar()

bool regina::FacetPairing< 3 >::hasSingleStar | ( |  | ) | const

Determines whether this face pairing contains a single-edged star.

A single-edged star involves two tetrahedra that are adjacent along a single face, where the six remaining faces of these tetrahedra are joined to six entirely new tetrahedra (so that none of the eight tetrahedra described in this structure are the same).

Returns
  `true` if and only if this face pairing contains a single-edged star.

## hasTripleEdge()

bool regina::FacetPairing< 3 >::hasTripleEdge | ( |  | ) | const

Determines whether this face pairing contains a triple edge.

A triple edge is where two different tetrahedra are joined along three of their faces.

A face pairing containing a triple edge cannot model a closed minimal irreducible P^2-irreducible 3-manifold triangulation on more than two tetrahedra. See "Face pairing graphs and 3-manifold enumeration", Benjamin A. Burton, J. Knot Theory Ramifications 13 (2004), 1057–1101.

Returns
  `true` if and only if this face pairing contains a triple edge.

## hasTripleOneEndedChain()

bool regina::FacetPairing< 3 >::hasTripleOneEndedChain | ( |  | ) | const

Determines whether this face pairing contains a triple one-ended chain.

A chain involves a sequence of tetrahedra, each joined to the next along two faces, and is described in detail in the documentation for followChain().

A one-ended chain is a chain in which the first tetrahedron is also joined to itself along one face (i.e., the underlying face pairing for a layered solid torus).

A triple one-ended chain is created from three one-ended chains as follows. Two new tetrahedra are added, and each one-ended chain is joined to each of the new tetrahedra along a single face. The remaining two faces (one from each of the new tetrahedra) remain unaccounted for by this structure.

A face pairing containing a triple one-ended chain cannot model a closed minimal irreducible P^2-irreducible 3-manifold triangulation on more than two tetrahedra. See "Enumeration of non-orientable 3-manifolds using face-pairing graphs and union-find", Benjamin A. Burton, Discrete Comput. Geom. 38 (2007), no. 3, 527–571.

Returns
  `true` if and only if this face pairing contains a triple one-ended chain.

## hasWedgedDoubleEndedChain()

bool regina::FacetPairing< 3 >::hasWedgedDoubleEndedChain | ( |  | ) | const

Determines whether this face pairing contains a wedged double-ended chain.

A chain involves a sequence of tetrahedra, each joined to the next along two faces, and is described in detail in the documentation for followChain().

A one-ended chain is a chain in which the first tetrahedron is also joined to itself along one face (i.e., the underlying face pairing for a layered solid torus). A double-ended chain is a chain in which the first tetrahedron is joined to itself along one face and the final tetrahedron is also joined to itself along one face (i.e., the underlying face pairing for a layered lens space).

A wedged double-ended chain is created from two one-ended chains as follows. Two new tetrahedra are added, and each one-ended chain is joined to each of the new tetrahedra along a single face. In addition, the two new tetrahedra are joined to each other along a single face. The remaining two faces (one from each of the new tetrahedra) remain unaccounted for by this structure.

An alternative way of viewing a wedged double-ended chain is as an ordinary double-ended chain, where one of the internal tetrahedra is removed and replaced with a pair of tetrahedra joined to each other. Whereas the original tetrahedron met its two neighbouring tetrahedra along two faces each (giving a total of four face identifications), the two new tetrahedra now meet each of the two neighbouring tetrahedra along a single face each (again giving four face identifications).

Note that if this alternate construction is used to replace one of the end tetrahedra of the double-ended chain (not an internal tetrahedron), the resulting structure will either be a triple edge or a one-ended chain with a double handle (according to whether the original chain has zero or positive length). See hasTripleEdge() and hasOneEndedChainWithDoubleHandle() for further details.

A face pairing containing a wedged double-ended chain cannot model a closed minimal irreducible P^2-irreducible 3-manifold triangulation on more than two tetrahedra. See "Enumeration of non-orientable 3-manifolds using face-pairing graphs and union-find", Benjamin A. Burton, Discrete Comput. Geom. 38 (2007), no. 3, 527–571.

Returns
  `true` if and only if this face pairing contains a wedged double-ended chain.

## HomologicalData() [1/2]

regina::HomologicalData::HomologicalData | ( | const HomologicalData & | h | ) |

inline

Copy constructor.

Parameters

  h | the homological data to clone.

## HomologicalData() [2/2]

regina::HomologicalData::HomologicalData | ( | const Triangulation< 3 > & | input | ) |

inline

Takes as input a triangulation.

This class takes its own copy of the input triangulation. This means that the input triangulation can change or even be destroyed, and this homological data will happily continue to work with the original triangulation as it was first passed to the constructor.

Parameters

  input | the triangulation to use.

## homology()

const MarkedAbelianGroup& regina::HomologicalData::homology | ( | unsigned | q | ) |

This routine gives access to the manifold's homology computed with the regular CW-decomposition.

This routine is typically slower than dualHomology(), since dualHomology() uses the dual CW-decomposition which typically has an order of magnitude fewer cells.

Note that the groups returned by homology() and dualHomology() are isomorphic, though they are generally described by different presentations.

Parameters

  q | the dimension of the homology group: can be 0, 1, 2 or 3.

Returns
  the q-th homology group, computed in the standard CW-decomposition.

## iBundle()

static Triangulation<4>* regina::Example< 4 >::iBundle | ( | const Triangulation< 3 > & | base | ) |

static

Returns a triangulation of the product `M x I`, where M is the given 3-manifold triangulation.

The boundary of this product will consist of two copies of M, both combinatorially isomorphic to the original triangulation. If n is the number of tetrahedra in M, then the first copy of M on the boundary is obtained by mapping vertices 0,1,2,3 of tetrahedron i of M to vertices 0,1,2,3 of pentachoron i, and the second copy is obtained by mapping vertices 0,1,2,3 of tetrahedron i of M to vertices 0,1,2,3 of pentachoron n+i.

The product itself will contain 82 pentachora for each original tetrahedron of M, and will contain many internal vertices. It is highly recommended that you call Triangulation<4>::intelligentSimplify() afterwards if you do not need to preserve the combinatorial structure.

Warning
  If the given 3-manifold triangulation has ideal boundary, then you will obtain an invalid 4-manifold triangulation as a result.

Parameters

  base | the 3-manifold triangulation M, as described above.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## index()

ptrdiff_t regina::HomologicalData::SortedArray::index | ( | unsigned long | value | ) | const

inline

Finds the index of the given integer in this array.

This routine runs in logarithmic time (it uses a binary search).

Parameters

  value | the integer to search for.

Returns
  the array index that holds the given integer, or -1 if the given integer is not stored in this array.

## isBeforeStart() [1/2]

bool regina::FacePair::isBeforeStart | ( |  | ) | const

inline

Determines if this face pair represents a before-the-start value.

Returns
  `true` if and only if this face pair is before-the-start.

## isBeforeStart() [2/2]

template<int dim>

bool regina::FacetSpec< dim >::isBeforeStart | ( |  | ) | const

inline

Determines if this specifier represents a before-the-start value.

Returns
  `true` if and only if this specifier is before-the-start.

## isBoundary()

template<int dim>

bool regina::FacetSpec< dim >::isBoundary | ( | size_t | nSimplices | ) | const

inline

Determines if this specifier represents the overall boundary.

Parameters

  nSimplices | the number of simplices under consideration. Note that the boundary is represented in this specifier as simplex nSimplices, facet 0.

Returns
  `true` if and only if this specifier represents the overall boundary.

## isPastEnd() [1/2]

bool regina::FacePair::isPastEnd | ( |  | ) | const

inline

Determines if this face pair represents a past-the-end value.

Returns
  `true` if and only if this face pair is past-the-end.

## isPastEnd() [2/2]

template<int dim>

bool regina::FacetSpec< dim >::isPastEnd | ( | size_t | nSimplices,
|  | bool | boundaryAlso
| ) |  | const

inline

Determines if this specifier represents a past-the-end value.

You can optionally declare the overall boundary to be past-the-end as well as the already predefined past-the-end value.

Parameters

  nSimplices | the number of simplices under consideration. Note that past-the-end is represented in this specifier as simplex nSimplices, facet 1.
  boundaryAlso | `true` if the overall boundary should be considered past-the-end in addition to the predefined past-the-end value.

Returns
  `true` if and only if this specifier is past-the-end.

## kb()

static Triangulation<2>* regina::Example< 2 >::kb | ( |  | ) |

static

Returns a two-triangle Klein bottle.

This is isomorphic to the triangulation returned by the generic routine twistedSphereBundle(), though it will have a different packet label.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## lens()

static Triangulation<3>* regina::Example< 3 >::lens | ( | size_t | p,
|  | size_t | q
| ) |  |

static

Returns a triangulation of the lens space `L(p,q)`.

The triangulation uses a layered lens space, which is conjectured (but not proven in all cases) to be the triangulation requiring the fewest tetrahedra.

Precondition
  p > q >= 0 unless (p,q) = (0,1).
  gcd(p, q) = 1.

Parameters

  p | a parameter of the desired lens space.
  q | a parameter of the desired lens space.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## lower()

unsigned regina::FacePair::lower | ( |  | ) | const

inline

Returns the smaller of the two face numbers in this pair.

Precondition
  This face pair is neither before-the-start or past-the-end.

Returns
  the lower face number.

## lst()

static Triangulation<3>* regina::Example< 3 >::lst | ( | size_t | a,
|  | size_t | b
| ) |  |

static

Returns the layered solid torus `LST(a,b,c)`.

This is a parameterised triangulation of the solid torus. It has two boundary triangles and three boundary edges, and the meridional disc of the solid torus cuts these boundary edges a, b and c times respectively.

Only the parameters a and b are passed as arguments to this routine. The third parameter c will be deduced automatically as c = (a + b).

Precondition
  gcd(a, b) = 1.

Parameters

  a | the first parameter of the layered solid torus.
  b | the second parameter of the layered solid torus.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## mobius()

static Triangulation<2>* regina::Example< 2 >::mobius | ( |  | ) |

static

Returns a one-triangle Mobius band.

This is isomorphic to the triangulation returned by the generic routine twistedBallBundle(), though it will have a different packet label.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## nonOrientable()

static Triangulation<2>* regina::Example< 2 >::nonOrientable | ( | unsigned | genus,
|  | unsigned | punctures
| ) |  |

static

Returns a triangulation of the given non-orientable surface.

Parameters

  genus | the non-orientable genus of the surface, i.e., the number of crosscaps that it contains; this must be greater than or equal to one.
  punctures | the number of punctures in the surface; this must be greater than or equal to zero.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## operator!=() [1/2]

bool regina::FacePair::operator!= | ( | const FacePair & | other | ) | const

inline

Determines if this and the given face pair are not equal.

Parameters

  other | the pair to compare with this.

Returns
  `true` if and only if this and the given pair are not equal.

## operator!=() [2/2]

template<int dim>

bool regina::FacetSpec< dim >::operator!= | ( | const FacetSpec< dim > & | other | ) | const

inline

Determines if this and the given specifier are not identical.

Parameters

  other | the specifier to compare with this.

Returns
  `true` if and only if this and the given specifier are not equal.

## operator++() [1/3]

template<int dim>

FacetSpec< dim > regina::FacetSpec< dim >::operator++ | ( |  | ) |

inline

Increments this specifier.

It will be changed to point to the next simplex facet.

Facets are ordered first by simplex index and then by facet number. The overall boundary appears after all other facets.

Precondition
  This specifier is not past-the-end.

Python:\n Not present, although the preincrement operator is
  present in python as the member function inc().

Returns
  A copy of this specifier after it has been incremented.

## operator++() [2/3]

template<int dim>

FacetSpec< dim > regina::FacetSpec< dim >::operator++ | ( | int |  | ) |

inline

Increments this specifier.

It will be changed to point to the next simplex facet.

Facets are ordered first by simplex index and then by facet number. The overall boundary appears after all other facets.

Precondition
  This specifier is not past-the-end.

Python:\n This routine is named inc() since python does not
  support the increment operator.

Returns
  A copy of this specifier before it was incremented.

## operator++() [3/3]

void regina::FacePair::operator++ | ( | int |  | ) |

Increments this face pair.

It will be set to the following face pair in the lexicographical ordering, or to a past-the-end value if there are no more face pairs.

Python:\n This routine is called inc(), since Python does
  not support the increment operator.

## operator--() [1/3]

template<int dim>

FacetSpec< dim > regina::FacetSpec< dim >::operator-- | ( |  | ) |

inline

Decrements this specifier.

It will be changed to point to the previous simplex facet.

Facets are ordered first by simplex index and then by facet number. The overall boundary appears after all other facets.

Precondition
  This specifier is not before-the-start.

Python:\n Not present, although the predecrement operator is
  present in python as the member function dec().

Returns
  A copy of this specifier after it has been decremented.

## operator--() [2/3]

void regina::FacePair::operator-- | ( | int |  | ) |

Decrements this face pair.

It will be set to the previous face pair in the lexicographical ordering, or to a before-the-start value if there are no previous face pairs.

Python:\n This routine is called dec(), since Python does
  not support the decrement operator.

## operator--() [3/3]

template<int dim>

FacetSpec< dim > regina::FacetSpec< dim >::operator-- | ( | int |  | ) |

inline

Decrements this specifier.

It will be changed to point to the previous simplex facet.

Facets are ordered first by simplex index and then by facet number. The overall boundary appears after all other facets.

Precondition
  This specifier is not before-the-start.

Python:\n This routine is named dec() since python does not
  support the decrement operator.

Returns
  A copy of this specifier before it was decremented.

## operator<() [1/2]

bool regina::FacePair::operator< | ( | const FacePair & | other | ) | const

inline

Determines if this is less than the given face pair.

Parameters

  other | the pair to compare with this.

Returns
  `true` if and only if this is less than other.

## operator<() [2/2]

template<int dim>

bool regina::FacetSpec< dim >::operator< | ( | const FacetSpec< dim > & | other | ) | const

inline

Determines if this is less than the given specifier.

Parameters

  other | the specifier to compare with this.

Returns
  `true` if and only if this is less than the given specifier.

## operator<=() [1/2]

bool regina::FacePair::operator<= | ( | const FacePair & | other | ) | const

inline

Determines if this is less than or equal to the given face pair.

Parameters

  other | the pair to compare with this.

Returns
  `true` if and only if this is less than or equal to other.

## operator<=() [2/2]

template<int dim>

bool regina::FacetSpec< dim >::operator<= | ( | const FacetSpec< dim > & | other | ) | const

inline

Determines if this is less than or equal to the given specifier.

Parameters

  other | the specifier to compare with this.

Returns
  `true` if and only if this is less than or equal to the given specifier.

## operator=() [1/2]

FacePair & regina::FacePair::operator= | ( | const FacePair & | cloneMe | ) |

inline

Sets this face pair to be a copy of the given pair.

Parameters

  cloneMe | the face pair to clone.

Returns
  a reference to this face pair.

## operator=() [2/2]

template<int dim>

FacetSpec< dim > & regina::FacetSpec< dim >::operator= | ( | const FacetSpec< dim > & | other | ) |

inline

Sets this specifier to the value of the given specifier.

Parameters

  other | the given specifier.

Returns
  a reference to this specifier.

## operator==() [1/2]

bool regina::FacePair::operator== | ( | const FacePair & | other | ) | const

inline

Determines if this and the given face pair are equal.

Parameters

  other | the pair to compare with this.

Returns
  `true` if and only if this and the given pair are equal.

## operator==() [2/2]

template<int dim>

bool regina::FacetSpec< dim >::operator== | ( | const FacetSpec< dim > & | other | ) | const

inline

Determines if this and the given specifier are identical.

Parameters

  other | the specifier to compare with this.

Returns
  `true` if and only if this and the given specifier are equal.

## operator>()

bool regina::FacePair::operator> | ( | const FacePair & | other | ) | const

inline

Determines if this is greater than the given face pair.

Parameters

  other | the pair to compare with this.

Returns
  `true` if and only if this is greater than other.

## operator>=()

bool regina::FacePair::operator>= | ( | const FacePair & | other | ) | const

inline

Determines if this is greater than or equal to the given face pair.

Parameters

  other | the pair to compare with this.

Returns
  `true` if and only if this is greater than or equal to other.

## operator[]()

unsigned long regina::HomologicalData::SortedArray::operator[] | ( | size_t | index | ) | const

inline

Return the integer at the given index in this array.

Parameters

  index | the requested array index; this must be between 0 and size()-1 inclusive.

Returns
  the corresponding element of this array.

## orientable()

static Triangulation<2>* regina::Example< 2 >::orientable | ( | unsigned | genus,
|  | unsigned | punctures
| ) |  |

static

Returns a triangulation of the given orientable surface.

Parameters

  genus | the genus of the surface; this must be greater than or equal to zero.
  punctures | the number of punctures in the surface; this must be greater than or equal to zero.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## poincareHomologySphere()

static Triangulation<3>* regina::Example< 3 >::poincareHomologySphere | ( |  | ) |

static

Returns the five-tetrahedron triangulation of the Poincare homology sphere.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## push_back()

void regina::HomologicalData::SortedArray::push_back | ( | unsigned long | value | ) |

inline

Pushes the given integer onto the end of this array.

Precondition
  The given integer is at least as large as every integer currently stored in the array.

Parameters

  value | the integer to insert into this array.

## rp2()

static Triangulation<2>* regina::Example< 2 >::rp2 | ( |  | ) |

static

Returns a two-triangle projective plane.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## rp2xs1()

static Triangulation<3>* regina::Example< 3 >::rp2xs1 | ( |  | ) |

static

Returns a three-tetrahedron triangulation of the non-orientable product space `RP^2 x S^1`.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## rp3rp3()

static Triangulation<3>* regina::Example< 3 >::rp3rp3 | ( |  | ) |

static

Returns a triangulation of the connected sum `RP^3 # RP^3`.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## rp4()

static Triangulation<4>* regina::Example< 4 >::rp4 | ( |  | ) |

static

Returns a four-pentachoron triangulation of real projective 4-space.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

Author
  Ryan Budney

## s1Bundle()

static Triangulation<4>* regina::Example< 4 >::s1Bundle | ( | const Triangulation< 3 > & | base | ) |

static

Returns a triangulation of the product `M x S1`, where M is the given 3-manifold triangulation.

This simply calls iBundle() and then glues together the two copies of M on the boundary.

The product will contain 82 pentachora for each original tetrahedron of M, and will contain many internal vertices. It is highly recommended that you call Triangulation<4>::intelligentSimplify() afterwards if you do not need to preserve the combinatorial structure.

Warning
  If the given 3-manifold triangulation has ideal boundary, then you will obtain an invalid 4-manifold triangulation as a result.

Parameters

  base | the 3-manifold triangulation M, as described above.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## s2xs1()

Triangulation< 3 > * regina::Example< 3 >::s2xs1 | ( |  | ) |

inline static

Returns a two-tetrahedron triangulation of the product space `S^2 x S^1`.

This is identical to calling the generic routine sphereBundle().

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## s3xs1()

Triangulation< 4 > * regina::Example< 4 >::s3xs1 | ( |  | ) |

inline static

Returns a two-pentachoron triangulation of the product space `S^3 x S^1`.

This is identical to calling the generic routine sphereBundle().

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## s3xs1Twisted()

Triangulation< 4 > * regina::Example< 4 >::s3xs1Twisted | ( |  | ) |

inline static

Returns a two-pentachoron triangulation of the twisted product space `S^3 x~ S^1`.

This is identical to calling the generic routine twistedSphereBundle().

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## setBeforeStart()

template<int dim>

void regina::FacetSpec< dim >::setBeforeStart | ( |  | ) |

inline

Sets this specifier to before-the-start.

## setBoundary()

template<int dim>

void regina::FacetSpec< dim >::setBoundary | ( | size_t | nSimplices | ) |

inline

Sets this specifier to the overall boundary.

Parameters

  nSimplices | the number of simplices under consideration. Note that the boundary is represented in this specifier as simplex nSimplices, facet 0.

## setFirst()

template<int dim>

void regina::FacetSpec< dim >::setFirst | ( |  | ) |

inline

Sets this specifier to the first facet of the first simplex.

## setPastEnd()

template<int dim>

void regina::FacetSpec< dim >::setPastEnd | ( | size_t | nSimplices | ) |

inline

Sets this specifier to past-the-end.

Parameters

  nSimplices | the number of simplices under consideration. Note that past-the-end is represented in this specifier as simplex nSimplices, facet 1.

## simplicialFourSphere()

Triangulation< 4 > * regina::Example< 4 >::simplicialFourSphere | ( |  | ) |

inline static

Returns the standard six-pentachoron triangulation of the 4-sphere as the boundary of a 5-simplex.

This is identical to calling the generic routine simplicialSphere().

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## size()

size_t regina::HomologicalData::SortedArray::size | ( |  | ) | const

inline

Return the number of elements in this array.

Returns
  the number of elements.

## smallClosedNonOrblHyperbolic()

static Triangulation<3>* regina::Example< 3 >::smallClosedNonOrblHyperbolic | ( |  | ) |

static

Returns the eleven-tetrahedron closed non-orientable hyperbolic 3-manifold with volume 2.02988321.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## smallClosedOrblHyperbolic()

static Triangulation<3>* regina::Example< 3 >::smallClosedOrblHyperbolic | ( |  | ) |

static

Returns the nine-tetrahedron closed orientable hyperbolic 3-manifold with volume 0.94270736.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## solidKleinBottle()

static Triangulation<3>* regina::Example< 3 >::solidKleinBottle | ( |  | ) |

static

Returns a triangulation of the solid Klein bottle.

This is isomorphic to the triangulation returned by the generic routine twistedBallBundle(), though it will have a different packet label.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## SortedArray()

regina::HomologicalData::SortedArray::SortedArray | ( |  | ) |

inline

Construct an empty array.

## sphere600()

static Triangulation<3>* regina::Example< 3 >::sphere600 | ( |  | ) |

static

Returns the boundary 3-sphere of the regular 600-cell.

This is a triangulation of the 3-sphere that is a simplicial complex, and in which every edge has degree five.

The triangulation was extracted from the Benedetti-Lutz library of triangulations. See: http://page.math.tu-berlin.de/~lutz/stellar/library_of_triangulations.html

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## sphereOctahedron()

static Triangulation<2>* regina::Example< 2 >::sphereOctahedron | ( |  | ) |

static

Returns the eight-triangle 2-sphere formed from the boundary of an octahedron.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## sphereTetrahedron()

static Triangulation<2>* regina::Example< 2 >::sphereTetrahedron | ( |  | ) |

static

Returns the four-triangle 2-sphere formed from the boundary of a tetrahedron.

This is isomorphic to the triangulation returned by the generic routine simplicialSphere(), though it will have a different packet label.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## startPropertySubElement() [1/4]

XMLElementReader* regina::XMLTriangulationReader< 3 >::startPropertySubElement | ( | const std::string & | subTagName,
|  | const regina::xml::XMLPropertyDict & | subTagProps
| ) |  |

Returns an XML element reader for the given optional property of a dim-dimensional triangulation.

If subTagName names an XML element that describes an optional property of a triangulation (such as `H1` or `fundgroup` for 3-manifold triangulations), then this function should return a corresponding element reader.

Otherwise this function should return a new XMLElementReader, which will cause the XML element to be ignored.

Parameters

  subTagName | the name of the XML subelement opening tag.
  subTagProps | the properties associated with the subelement opening tag.

Returns
  a newly created element reader that will be used to parse the subelement. This class should not take care of the new reader's destruction; that will be done by the parser.

## startPropertySubElement() [2/4]

XMLElementReader * regina::XMLTriangulationReader< 2 >::startPropertySubElement | ( | const std::string & | subTagName,
|  | const regina::xml::XMLPropertyDict & | subTagProps
| ) |  |

inline

Returns an XML element reader for the given optional property of a dim-dimensional triangulation.

If subTagName names an XML element that describes an optional property of a triangulation (such as `H1` or `fundgroup` for 3-manifold triangulations), then this function should return a corresponding element reader.

Otherwise this function should return a new XMLElementReader, which will cause the XML element to be ignored.

Parameters

  subTagName | the name of the XML subelement opening tag.
  subTagProps | the properties associated with the subelement opening tag.

Returns
  a newly created element reader that will be used to parse the subelement. This class should not take care of the new reader's destruction; that will be done by the parser.

## startPropertySubElement() [3/4]

XMLElementReader* regina::XMLTriangulationReader< 4 >::startPropertySubElement | ( | const std::string & | subTagName,
|  | const regina::xml::XMLPropertyDict & | subTagProps
| ) |  |

Returns an XML element reader for the given optional property of a dim-dimensional triangulation.

If subTagName names an XML element that describes an optional property of a triangulation (such as `H1` or `fundgroup` for 3-manifold triangulations), then this function should return a corresponding element reader.

Otherwise this function should return a new XMLElementReader, which will cause the XML element to be ignored.

Parameters

  subTagName | the name of the XML subelement opening tag.
  subTagProps | the properties associated with the subelement opening tag.

Returns
  a newly created element reader that will be used to parse the subelement. This class should not take care of the new reader's destruction; that will be done by the parser.

## startPropertySubElement() [4/4]

template<int dim>

XMLElementReader * regina::XMLTriangulationReader< dim >::startPropertySubElement | ( | const std::string & | subTagName,
|  | const regina::xml::XMLPropertyDict & | subTagProps
| ) |  |

inline

Returns an XML element reader for the given optional property of a dim-dimensional triangulation.

If subTagName names an XML element that describes an optional property of a triangulation (such as `H1` or `fundgroup` for 3-manifold triangulations), then this function should return a corresponding element reader.

Otherwise this function should return a new XMLElementReader, which will cause the XML element to be ignored.

Parameters

  subTagName | the name of the XML subelement opening tag.
  subTagProps | the properties associated with the subelement opening tag.

Returns
  a newly created element reader that will be used to parse the subelement. This class should not take care of the new reader's destruction; that will be done by the parser.

## threeSphere()

static Triangulation<3>* regina::Example< 3 >::threeSphere | ( |  | ) |

static

Returns a one-tetrahedron triangulation of the 3-sphere.

This is different from the generic routine sphere(), which uses two tetrahedra instead.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## torsionLegendreSymbolVector()

const std::vector< std::pair< Integer, std::vector< int > > > & regina::HomologicalData::torsionLegendreSymbolVector | ( |  | ) |

inline

Returns the odd p-torsion Legendre symbol vector.

This is the last of the three Kawauchi-Kojima invariants.

For details, see "Algebraic classification of linking pairings on 3-manifolds", Akio Kawauchi and Sadayoshi Kojima, Math. Ann. 253 (1980), 29–42.

Precondition
  The triangulation is of a connected orientable 3-manifold.

Python:\n Not available, though the string routine
  torsionLegendreSymbolVectorString() can still be used.

Returns
  the Legendre symbol vector associated to the torsion linking form.

## torsionLegendreSymbolVectorString()

const std::string & regina::HomologicalData::torsionLegendreSymbolVectorString | ( |  | ) |

inline

Same as torsionLegendreSymbolVector() but returns as a human-readable string.

Precondition
  The triangulation is of a connected orientable 3-manifold.

Returns
  the Legendre symbol vector in human-readable form.

## torsionRankVector()

const std::vector< std::pair< Integer, std::vector< unsigned long > > > & regina::HomologicalData::torsionRankVector | ( |  | ) |

inline

Returns the torsion form rank vector.

This is the first of the three Kawauchi-Kojima complete invariants of the torsion linking form.

This vector describes the rank of the torsion subgroup of H1, given in prime power form. It is a vector of pairs (p, x), where p is a prime and x is its exponent.

For details, see "Algebraic classification of linking pairings on 3-manifolds", Akio Kawauchi and Sadayoshi Kojima, Math. Ann. 253 (1980), 29–42.

Precondition
  The triangulation is of a connected orientable 3-manifold.

Python:\n Not available, though the string routine
  torsionRankVectorString() can still be used.

Returns
  the torsion form rank vector.

## torsionRankVectorString()

const std::string & regina::HomologicalData::torsionRankVectorString | ( |  | ) |

inline

Same as torsionRankVector() but returns as a human-readable string.

Precondition
  The triangulation is of a connected orientable 3-manifold.

Returns
  human-readable prime power factorization of the order of the torsion subgroup of H1.

## torsionSigmaVector()

const std::vector< LargeInteger > & regina::HomologicalData::torsionSigmaVector | ( |  | ) |

inline

Returns the 2-torsion sigma vector.

This is the second of the three Kawauchi-Kojima invariants. It is orientation-sensitive.

For details, see "Algebraic classification of linking pairings on 3-manifolds", Akio Kawauchi and Sadayoshi Kojima, Math. Ann. 253 (1980), 29–42.

Precondition
  The triangulation is of a connected orientable 3-manifold.

Python:\n Not available, though the string routine
  torsionSigmaVectorString() can still be used.

Returns
  the Kawauchi-Kojima sigma-vector.

## torsionSigmaVectorString()

const std::string & regina::HomologicalData::torsionSigmaVectorString | ( |  | ) |

inline

Same as torsionSigmaVector() but returns as a human-readable string.

This is an orientation-sensitive invariant.

Precondition
  The triangulation is of a connected orientable 3-manifold.

Returns
  the Kawauchi-Kojima sigma-vector in human readable form.

## torus()

static Triangulation<2>* regina::Example< 2 >::torus | ( |  | ) |

static

Returns a two-triangle torus.

This is isomorphic to the triangulation returned by the generic routine sphereBundle(), though it will have a different packet label.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## trefoil()

static Triangulation<3>* regina::Example< 3 >::trefoil | ( |  | ) |

static

Returns a two-tetrahedron ideal triangulation of the trefoil knot complement.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## upper()

unsigned regina::FacePair::upper | ( |  | ) | const

inline

Returns the larger of the two face numbers in this pair.

Precondition
  This face pair is neither before-the-start or past-the-end.

Returns
  the upper face number.

## weberSeifert()

static Triangulation<3>* regina::Example< 3 >::weberSeifert | ( |  | ) |

static

Returns a one-vertex triangulation of the Weber-Seifert dodecahedral space.

This 3-manifold is described in "Die beiden Dodekaederraume", C. Weber and H. Seifert, Math. Z. 37 (1933), no. 1, 237-253. The triangulation returned by this routine (with 23 tetrahedra) is given in "The Weber-Seifert dodecahedral space is non-Haken", Benjamin A. Burton, J. Hyam Rubinstein and Stephan Tillmann, Trans. Amer. Math. Soc. 364:2 (2012), pp. 911-932.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## weeks()

static Triangulation<3>* regina::Example< 3 >::weeks | ( |  | ) |

static

Returns a nine-tetrahedron minimal triangulation of the Weeks manifold.

The Weeks manifold is the smallest-volume closed hyperbolic 3-manifold, with a volume of roughly 0.9427. Note that there are nine minimal triangulations of the Weeks manifold (of course this routine returns just one).

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## whiteheadLink()

static Triangulation<3>* regina::Example< 3 >::whiteheadLink | ( |  | ) |

static

Returns a four-tetrahedron ideal triangulation of the Whitehead link complement.

Returns
  a newly constructed triangulation, which must be destroyed by the caller of this routine.

## writeTextShort()

void regina::HomologicalData::writeTextShort | ( | std::ostream & | out | ) | const

Writes a short text representation of this object to the given output stream.

Note this only writes pre-computed data. Thus if you have not yet asked HomologicalData to compute anything about this triangulation, writeTextShort may be empty.

Python:\n Not present.

Parameters

  out | the output stream to which to write.

## XMLTriangulationReader() [1/4]

regina::XMLTriangulationReader< 3 >::XMLTriangulationReader | ( | XMLTreeResolver & | resolver | ) |

inline

Creates a new triangulation reader.

Parameters

  resolver | the master resolver that will be used to fix dangling packet references after the entire XML file has been read.

## XMLTriangulationReader() [2/4]

regina::XMLTriangulationReader< 4 >::XMLTriangulationReader | ( | XMLTreeResolver & | resolver | ) |

inline

Creates a new triangulation reader.

Parameters

  resolver | the master resolver that will be used to fix dangling packet references after the entire XML file has been read.

## XMLTriangulationReader() [3/4]

regina::XMLTriangulationReader< 2 >::XMLTriangulationReader | ( | XMLTreeResolver & | resolver | ) |

inline

Creates a new triangulation reader.

Parameters

  resolver | the master resolver that will be used to fix dangling packet references after the entire XML file has been read.

## XMLTriangulationReader() [4/4]

template<int dim>

regina::XMLTriangulationReader< dim >::XMLTriangulationReader | ( | XMLTreeResolver & | resolver | ) |

inline

Creates a new triangulation reader.

Parameters

  resolver | the master resolver that will be used to fix dangling packet references after the entire XML file has been read.

## ~HomologicalData()

regina::HomologicalData::~HomologicalData | ( |  | ) |

inline

Destructor.

## Variable Documentation

## facet

template<int dim>

int regina::FacetSpec< dim >::facet

The facet of the simplex referred to.

The facet number is between 0 and dim inclusive.

## simp

template<int dim>

int regina::FacetSpec< dim >::simp

The simplex referred to.

Simplex numbering begins at 0.

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