Chapter 3. Triangulations

Manifolds in Regina are typically represented by triangulations. A d-manifold triangulation consists of a set of d-simplices along with instructions on how some or all of their (d-1)-dimensional facets should be glued together in pairs.

Most triangulations in Regina represent 2-, 3- and 4-manifolds. We refer to their d-simplices as triangles, tetrahedra and pentachora respectively.

Regina works with generalised triangulations, which are less strict than simplicial complexes. This means that you may glue two facets of the same d-simplex together, or you may glue facets so that different vertices of the same d-simplex become identified (and likewise for edges and so on). Indeed, the best triangulations for computation are often one-vertex triangulations, where all vertices of all simplices become identified together.

The downside of this flexibility is that, if you are not careful, your triangulation might not represent a d-manifold at all. This is only a problem for dimensions d ≥ 3, and if it happens in dimensions d = 3 or 4 then Regina will tell you about it when you view the triangulation.

Regina offers rich support for triangulations of dimensions 2, 3 and 4. However, it also offers more basic support for triangulations of dimensions 5 ≤ d ≤ 15. These higher-dimensional triangulations are not supported in the GUI; instead you will need to use either Python scripting or C++ programming.

The remainder of this chapter talks through triangulations of dimensions 2, 3 and 4 only.

Tip

If you are more familiar with SnapPea / SnapPy, you should be aware that Regina and SnapPy are different programs with different aims, and (importantly) with different underlying data structures. SnapPy stores information with 3-manifold triangulations that Regina does not (such as fillings and peripiheral curves on cusps, which often do not make sense in Regina's more general setting).

If you wish to work with a file from SnapPea or SnapPy and you need to preserve SnapPy's extra information (such as fillings and peripheral curves), you should work with a SnapPea triangulation instead. The trade-off is that, while you will still have access to much of Regina's functionality, you will lose some of Regina's fine-grained control over the triangulation (in particular, the ability to modify it). See the chapter on SnapPea triangulations for details.

Creation

New Triangulations

The simplest way to create a triangulation is through the various Packet TreeNew Triangulation menu items (or the corresponding toolbar buttons), which will create a new triangulation of the given dimension from scratch.

You will be asked what type of triangulation to create (see the drop-down box below). Here we walk through the various options.

Empty

This will create a new triangulation with no simplices at all. This is best if you wish to enter a triangulation by hand: first create an empty triangulation, and then manually add simplices and edit the facet gluings.

Example Triangulation

Regina offers a selection of ready-made sample triangulations, which you can play with to discover how Regina works. These include examples of knot complements and 2-knot complements, well-known spaces such as the Poincaré homology sphere and the Weber-Seifert dodecahedral space, and many others. Simply select an example from the list provided and Regina will build the corresponding triangulation for you.

Isomorphism Signature

This will reconstruct a triangulation from an isomorphism signature. An isomorphism signature is a compact sequence of letters, digits and/or punctuation that identifies a triangulation uniquely up to combinatorial isomorphism (i.e., relabelling simplices and their vertices). An example for 3-manifolds is cPcbbbiht (which describes the figure eight knot complement).

Stated precisely: every triangulation has a unique isomorphism signature, and two triangulations have the same signature if and only if they are isomorphic. Isomorphism signatures are introduced in the paper [Bur11b]. They are available in all of the dimensions that Regina supports, and for 3-manifolds the format is explicitly described in [Bur11c].

If you already have a triangulation and you wish to view its isomorphism signature: for 3-manifolds you can view it through the triangulation composition tab, and in other dimensions you can access it through Python scripting or C++ programming.

Caution

Isomorphism signatures are case sensitive! Be sure that you are entering upper-case and lower-case correctly (or better, copy and paste the signature using the clipboard if you can).

Orientable and non-orientable surfaces (2-manifolds only)

For 2-manifolds, Regina can triangulate a connected surface of any topological type. Select either Orientable surface or Non-orientable surface as the type of triangulation, and then enter the genus and the number of punctures that you would like in the surface.

For orientable surfaces the genus represents the number of handles (e.g., the torus has orientable genus 1), and for non-orientable surfaces the genus represents the number of crosscaps (e.g., the Klein bottle has non-orientable genus 2).

Layered Lens Space (3-manifolds only)

This will create a layered lens space with the given parameters. This involves building two layered solid tori and gluing them together along their torus boundaries. Layered lens spaces were introduced by Jaco and Rubinstein [JR03], [JR06] and others.

The parameters (p, q) must be non-negative and coprime, and must satisfy p>q (although the exceptional case (0, 1) is also allowed). The resulting 3-manifold will be the lens space L(p,q).

Tip

You do not need to separate the lens space parameters with commas: any punctuation, or even just spaces, will suffice.

Seifert Fibred Space (3-manifolds only)

This will create an orientable Seifert fibred space over the 2-sphere with any number of exceptional fibres. Regina will choose the simplest construction that it can based upon the given parameters.

The parameters for the Seifert fibred space must be given as a sequence of pairs of integers (a1,b1) (a2,b2) ... (an,bn), where each pair (ai,bi) describes a single exceptional fibre. An example is (2,-1) (3,4) (5,-4), which represents the Poincaré homology sphere. The two integers in each pair must be relatively prime, and none of a1, a2, ..., an may be zero.

Each pair (ai,bi) does not need to be normalised; that is, the parameters may be positive or negative, and bi may lie outside the range [0,ai). There is no separate twisting parameter; each additional twist can be incorporated into the existing parameters by replacing some pair (ai,bi) with (ai,ai+bi). Pairs of the form (1,k) and even (1,0) are acceptable.

Tip

You do not need to separate the Seifert fibred space parameters with brackets and commas: any punctuation, or even just spaces, will suffice.

Layered Solid Torus (3-manifolds only)

This will create a layered solid torus with the given parameters. This is a solid torus built from a two-triangle Möbius band by repeatedly adding new layers of tetrahedra onto the boundary. Layered solid tori were introduced by Jaco and Rubinstein [JR03], [JR06] and others.

The three parameters (a, b, c) must be non-negative and coprime, and one must be the sum of the other two. These parameters describe how many times the meridional disc of the solid torus intersects the three edges on the boundary of the triangulation.

Tip

You do not need to separate the layered solid torus parameters with commas: any punctuation, or even just spaces, will suffice.

Dehydration (3-manifolds only)

This will rehydrate a 3-manifold triangulation from the given dehydration string. A dehydration string is a sequence of letters that contains enough information to reconstruct a triangulation (though tetrahedra and their vertices might be relabelled). An example is dadbcccaqhx (which describes the SnapPea census triangulation m025). Dehydration strings appear in census papers such as the hyperbolic cusped census of Callahan, Hildebrand and Weeks [CHW99], in which the dehydration format is explicitly described.

Only some 3-manifold triangulations have dehydration strings. The dehydration string (if it exists) for an existing triangulation can be accessed through Python scripting by calling Triangulation3.dehydrate().

Splitting Surface (3-manifolds only)

This will reconstruct a 3-manifold triangulation from a splitting surface signature. A splitting surface is a compact normal surface consisting of precisely one quadrilateral per tetrahedron and no other normal discs. A splitting surface signature is a string of letters arranged into cycles that describe how these quadrilaterals are joined together. From this signature, both the normal surface and the enclosing triangulation can be reconstructed.

When entering a splitting surface signature, you may use any block of punctuation to separate cycles of letters. All whitespace will be ignored. Examples of valid signatures are (ab)(bC)(Ca) and AAb-bc-C.

The precise format of splitting surface signatures is described in [Bur03].

I-bundles and S1-bundles (4-manifolds only)

This allows you to build an I-bundle or an S1-bundle over an existing 3-manifold triangulation.

Choose either I-bundle or S1-bundle as the triangulation type, and then select your 3-manifold triangulation in the drop-down box. If your triangulation represents the 3-manifold M, then Regina will build the 4-manifold M × I or M × S1 respectively.

Tip

Regina is also able to build non-trivial bundles, formed by gluing the two boundaries of M × I according to a given monodromy. However, this construction is only accessible through Python scripting or C++ programming.

Importing Triangulations

You can import triangulations into Regina from other programs, such as SnapPea / SnapPy or Orb. This is done through the FileImport menu. For details, see the chapter on importing and exporting data.

Creating a Census

Regina can build a census of all triangulations satisfying a variety of different constraints. The best way to do this is through the command-line tool tricensus. For very long calculations, tricensus-mpi may be used to distribute the computation across a cluster of machines.