Regina 7.4 Calculation Engine
regina::Example< 4 > Class Reference

Offers routines for constructing a variety of sample 4-dimensional triangulations. More...

#include <triangulation/example4.h>

Inheritance diagram for regina::Example< 4 >:
regina::detail::ExampleBase< 4 > regina::detail::ExampleFromLowDim< dim, dim !=2 >

Static Public Member Functions

static Triangulation< dim > sphere ()
 Closed Triangulations.
 
static Triangulation< dim > simplicialSphere ()
 Returns the standard (dim+2)-simplex triangulation of the dim-sphere as the boundary of a (dim+1)-simplex.
 
static Triangulation< dim > sphereBundle ()
 Returns a two-simplex triangulation of the product space S^(dim-1) × S¹.
 
static Triangulation< dim > twistedSphereBundle ()
 Returns a two-simplex triangulation of the twisted product space S^(dim-1) x~ S¹.
 
static Triangulation< dim > ball ()
 Bounded Triangulations.
 
static Triangulation< dim > ballBundle ()
 Returns a triangulation of the product space B^(dim-1) × S¹.
 
static Triangulation< dim > twistedBallBundle ()
 Returns a triangulation of the twisted product space B^(dim-1) x~ S¹.
 
static Triangulation< dim > doubleCone (const Triangulation< dim-1 > &base)
 Returns a double cone over the given (dim-1)-dimensional triangulation.
 
static Triangulation< dim > singleCone (const Triangulation< dim-1 > &base)
 Returns a single cone over the given (dim-1)-dimensional triangulation.
 
Closed Triangulations
static Triangulation< 4 > fourSphere ()
 Returns a two-pentachoron triangulation of the 4-sphere.
 
static Triangulation< 4 > simplicialFourSphere ()
 Returns the standard six-pentachoron triangulation of the 4-sphere as the boundary of a 5-simplex.
 
static Triangulation< 4 > rp4 ()
 Returns a four-pentachoron triangulation of real projective 4-space.
 
static Triangulation< 4 > cp2 ()
 Returns a four-pentachoron triangulation of the standard complex projective plane.
 
static Triangulation< 4 > s2xs2 ()
 Returns a six-pentachoron triangulation of the standard product S² × S².
 
static Triangulation< 4 > s2xs2Twisted ()
 Returns a six-pentachoron triangulation of the twisted product S² x~ S².
 
static Triangulation< 4 > s3xs1 ()
 Returns a two-pentachoron triangulation of the product space S³ × S¹.
 
static Triangulation< 4 > s3xs1Twisted ()
 Returns a two-pentachoron triangulation of the twisted product space S³ x~ S¹.
 
static Triangulation< 4 > fourTorus ()
 Returns a triangulation of the standard 4-torus; that is, the product space T² × T².
 
static Triangulation< 4 > k3 ()
 Returns a triangulation of the standard K3 surface.
 
Ideal Triangulations

(end: Closed Triangulations)

static Triangulation< 4 > cappellShaneson ()
 Returns a two-pentachoron triangulation of a Cappell-Shaneson 2-knot complement in the 4-sphere.
 
Constructions from 3-Manifold Triangulations and Links

(end: Ideal Triangulations)

static Triangulation< 4 > iBundle (const Triangulation< 3 > &base)
 Returns a triangulation of the product M × I, where M is the given 3-manifold triangulation.
 
static Triangulation< 4 > s1Bundle (const Triangulation< 3 > &base)
 Returns a triangulation of the product M × S1, where M is the given 3-manifold triangulation.
 
static Triangulation< 4 > boundarySpin (const Triangulation< 3 > &base)
 Returns a triangulation of the given 3-manifold spun around its boundary.
 
static Triangulation< 4 > bundleWithMonodromy (const Triangulation< 3 > &base, const Isomorphism< 3 > &monodromy)
 Returns a bundle formed from a given 3-manifold and a given monodromy.
 
static Triangulation< 4 > spun (const Link &knot, StrandRef breakOpen={})
 Returns an ideal triangulation of the complement of the 2-knot obtained by spinning the given 1-knot (without twisting).
 

Detailed Description

Offers routines for constructing a variety of sample 4-dimensional triangulations.

This is a specialisation of the generic Example class template; see the generic Example template documentation for a general overview of how the example triangulation classes work. In Python, you can read this generic documentation by looking at a higher dimension: try help(Example5).

This 4-dimensional specialisation offers significant extra functionality, by providing several more hard-coded and parameterised constructions.

Member Function Documentation

◆ ball()

Triangulation< dim > regina::detail::ExampleBase< dim >::ball ( )
staticinherited

Bounded Triangulations.

Returns a one-simplex triangulation of the dim-ball.

Returns
a one-simplex dim-ball.

◆ ballBundle()

Triangulation< dim > regina::detail::ExampleBase< dim >::ballBundle ( )
staticinherited

Returns a triangulation of the product space B^(dim-1) × S¹.

  • In odd dimensions this will use one simplex, and will therefore be oriented.
  • In even dimensions this will use two simplices, and will be built as the double cover of the one-simplex B^(dim-1) x~ S¹. The labelling is chosen to highlight this structure, and so even though the space is orientable, the resulting triangulation will not be oriented.
Returns
the product B^(dim-1) × S¹.

◆ boundarySpin()

static Triangulation< 4 > regina::Example< 4 >::boundarySpin ( const Triangulation< 3 > & base)
static

Returns a triangulation of the given 3-manifold spun around its boundary.

Let M be the given 3-manifold, with real boundary ∂M. This constructs a 4-manifold from M as follows:

  • First we build the product M × S1 in a similar way to s1Bundle(). That is: we build a tetrahedral prism for each original tetrahedron of M, glue the top and bottom tetrahedra of each prism together, and glue the walls of the prisms together according to the gluings between the original tetrahedra of M.
  • Then, for each point b on the real boundary ∂M, we collapse the fibre b × S1 to a single point. (Equivalently, we attach a copy of ∂M × D2 to the product M × S1 so that, for each point b on the boundary ∂M, the fibre b × S1 becomes the boundary of the corresponding disc b × D2.) We implement this as follows: for each boundary facet of M, we fold the corresponding prism wall in half, so that the top half folds onto the bottom.
  • If one or more of boundary facets of M are locked, then the corresponding prism walls will not folded onto themselves; that is, the fibres over those parts of the boundary will not be collapsed. See the section below on locks for further details.

Regarding real versus ideal boundary:

  • The second step (collapsing fibres) only acts on real boundary; that is, points b that lie on boundary triangles of M. It ignores ideal boundary, in the sense that ideal vertices will just be transformed as part of the product M × S1 (the first step), without the subsequent collapse/filling operation.
  • As a result, any ideal vertices of M will produce invalid edges in the resulting 4-maifold triangulation (i.e., edges whose links are the same surfaces as the links of the original ideal vertices of M).

Like s1Bundle(), the resulting triangulation will be very large: it creates 82 pentachora for each original tetrahedron of M. It is highly recommended that you call Triangulation<4>::simplify() afterwards if you do not need to preserve the combinatorial structure.

This routine handles locks as follows:

  • For any simplex in base that is locked, all of the pentachora and internal facets of the corresponding prism will also be locked, as well as the two tetrahedra at each end of the prism (which will be glued together, as explained above).
  • For any internal triangular facet of base that is locked, all of the tetrahedral facets on the corresponding prism wall(s) will be locked.
  • For any boundary facet of base that is locked, the corresponding prism wall will not be folded onto itself (i.e, the corresponding fibres will not be collapsed). Instead, all of the tetrahedral facets on that prism wall will be locked, and will remain as boundary facets of the final 4-dimensional triangulation.
  • If base has a mix of locked and unlocked boundary facets, you should aim to ensure that the locked and unlocked regions are separated by embedded curves in the boundary of M (i.e., there are no "pinch points" where the local picture has two or more locked regions meeting two or more unlocked regions). Otherwise you may find that these pinch points create invalid edges in the resulting 4-manifold triangulation (specifically, edges whose links are 2-spheres with two or more punctures).

Note that the current construction does not give an oriented triangulation (due to the specific choice of labelling); this may change in a future version of Regina.

Parameters
basethe 3-manifold triangulation M, as described above.
Returns
the 4-manifold obtained by spinning M around its boundary, as described above.

◆ 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 × 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 product is created as follows. For each original tetrahedron of M, we build a tetrahedral prism containing 82 pentachora. We then glue these prisms together in a manner that follows the gluings of the original tetrahedra. Moreover, we take the two copies of M that are formed from the tetrahedra at the two ends of these prisms, and glue these together according to the given monodromy. It is highly recommended that you call Triangulation<4>::simplify() afterwards if you do not need to preserve the combinatorial structure.

For any simplex in base that is locked, all of the pentachora and internal facets of the corresponding prism will also be locked. For any triangular facet of base that is locked, all of the tetrahedral facets on the corresponding prism wall(s) will likewise be locked. The two tetrahedra at the ends of each prism will not be locked (these are the tetrahedra along which the two copies of M are identified using the given monodromy).

Note that the current construction does not give an oriented triangulation (due to the specific choice of labelling); this may change in a future version of Regina.

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
basethe 3-manifold triangulation M, as described above.
monodromythe homeomorphism from M to itself, as described above.
Returns
the requested bundle.

◆ 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 Cappell-Shaneson 2-knot complement.

◆ cp2()

static Triangulation< 4 > regina::Example< 4 >::cp2 ( )
static

Returns a four-pentachoron triangulation of the standard complex projective plane.

This triangulation is minimal.

Under the orientation convention that we use for intersection forms, this triangulation gives the "plain" CP² with intersection form [1], not the reflected CP² with intersection form [-1].

Returns
the standard complex projective plane.

◆ doubleCone()

Triangulation< dim > regina::detail::ExampleFromLowDim< dim, available >::doubleCone ( const Triangulation< dim-1 > & base)
staticinherited

Returns a double cone over the given (dim-1)-dimensional triangulation.

If the given triangulation represents the manifold M, then this returns an ideal triangulation of the product M × I (with two ideal boundary components). A copy of the original triangulation base can be found at the centre of this construction, formed from the dim-simplices that sit between the two ideal vertices.

Note that, as a special case, if M is either a sphere or a ball, then this routine returns a (dim)-sphere or a (dim)-ball (since "ideal spheres" and "ideal balls" just become regular internal and boundary vertices respectively).

This construction is essentially the suspension of the triangulation base. We do not call it this however, since from a topological point of view, to form the ideal triangulation of M × I we "remove" the vertices at the apex of each cone.

If the given 3-dimensional triangulation is oriented, then the resulting 4-dimensional triangulation will be oriented also.

Warning
If the given (dim-1)-dimensional triangulation has any boundary whatsoever (either real or ideal), then unless it is a (dim-1)-ball, you will obtain an invalid dim-manifold triangulation as a result.
Returns
a double cone over the given triangulation.

◆ fourSphere()

Triangulation< 4 > regina::Example< 4 >::fourSphere ( )
inlinestatic

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

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

Returns
a two-pentachoron 4-sphere.

◆ fourTorus()

static Triangulation< 4 > regina::Example< 4 >::fourTorus ( )
static

Returns a triangulation of the standard 4-torus; that is, the product space T² × T².

Returns
the product space T² × T².

◆ iBundle()

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

Returns a triangulation of the product M × 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 is created as follows: for each original tetrahedron of M we build a tetrahedral prism containing 82 pentachora, and we then glue these prisms together in a manner that follows the gluings of the original tetrahedra. It is highly recommended that you call Triangulation<4>::simplify() afterwards if you do not need to preserve the combinatorial structure.

For any simplex in base that is locked, all of the pentachora and internal facets of the corresponding prism will also be locked. For any triangular facet of base that is locked, all of the tetrahedral facets on the corresponding prism wall(s) will likewise be locked.

Note that the current construction does not give an oriented triangulation (due to the specific choice of labelling); this may change in a future version of Regina.

Warning
If the given 3-manifold triangulation has ideal boundary, then you will obtain an invalid 4-manifold triangulation as a result.
Parameters
basethe 3-manifold triangulation M, as described above.
Returns
the product M × I.

◆ k3()

static Triangulation< 4 > regina::Example< 4 >::k3 ( )
static

Returns a triangulation of the standard K3 surface.

Be warned: this triangulation is fairly large.

Returns
the K3 surface.

◆ rp4()

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

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

Returns
real projective 4-space.

◆ s1Bundle()

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

Returns a triangulation of the product M × 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 is created as follows. For each original tetrahedron of M, we build a tetrahedral prism containing 82 pentachora. We then glue these prisms together in a manner that follows the gluings of the original tetrahedra, and we also glue together the two tetrahedra at each end of every prism. It is highly recommended that you call Triangulation<4>::simplify() afterwards if you do not need to preserve the combinatorial structure.

For any simplex in base that is locked, all of the pentachora and internal facets of the corresponding prism will also be locked, as well as the two tetrahedra at each end of the prism (which will be glued together, as explained above). For any triangular facet of base that is locked, all of the tetrahedral facets on the corresponding prism wall(s) will likewise be locked.

Note that the current construction does not give an oriented triangulation (due to the specific choice of labelling); this may change in a future version of Regina.

Warning
If the given 3-manifold triangulation has ideal boundary, then you will obtain an invalid 4-manifold triangulation as a result.
Parameters
basethe 3-manifold triangulation M, as described above.
Returns
the product M × S1.

◆ s2xs2()

static Triangulation< 4 > regina::Example< 4 >::s2xs2 ( )
static

Returns a six-pentachoron triangulation of the standard product S² × S².

This triangulation is minimal.

Returns
the standard product of two 2-spheres.

◆ s2xs2Twisted()

static Triangulation< 4 > regina::Example< 4 >::s2xs2Twisted ( )
static

Returns a six-pentachoron triangulation of the twisted product S² x~ S².

This manifold is diffeomorphic to CP² # -CP², where -CP² denotes CP² with its orientation reversed. This triangulation is minimal.

Returns
the twisted product of two 2-spheres.

◆ s3xs1()

Triangulation< 4 > regina::Example< 4 >::s3xs1 ( )
inlinestatic

Returns a two-pentachoron triangulation of the product space S³ × S¹.

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

Returns
the product S³ × S¹.

◆ s3xs1Twisted()

Triangulation< 4 > regina::Example< 4 >::s3xs1Twisted ( )
inlinestatic

Returns a two-pentachoron triangulation of the twisted product space S³ x~ S¹.

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

Returns
the twisted product S³ x~ S¹.

◆ simplicialFourSphere()

Triangulation< 4 > regina::Example< 4 >::simplicialFourSphere ( )
inlinestatic

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
the standard simplicial 4-sphere.

◆ simplicialSphere()

Triangulation< dim > regina::detail::ExampleBase< dim >::simplicialSphere ( )
staticinherited

Returns the standard (dim+2)-simplex triangulation of the dim-sphere as the boundary of a (dim+1)-simplex.

Note that the current construction does not give an oriented triangulation (due to the specific choice of labelling); this may change in a future version of Regina.

Returns
the standard simplicial dim-sphere.

◆ singleCone()

Triangulation< dim > regina::detail::ExampleFromLowDim< dim, available >::singleCone ( const Triangulation< dim-1 > & base)
staticinherited

Returns a single cone over the given (dim-1)-dimensional triangulation.

If the given triangulation represents the manifold M, then this returns a triangulation of the product M × I that has one real boundary component and one ideal boundary component. The triangulation of the real boundary component will be identical to the original (dim-1)-dimensional triangulation base.

If the given 3-dimensional triangulation is oriented, then the resulting 4-dimensional triangulation will be oriented also.

Warning
If the given (dim-1)-dimensional triangulation has any boundary whatsoever (either real or ideal), then unless it is a (dim-1)-ball, you will obtain an invalid dim-manifold triangulation as a result.
Returns
a single cone over the given triangulation.

◆ sphere()

Triangulation< dim > regina::detail::ExampleBase< dim >::sphere ( )
staticinherited

Closed Triangulations.

Returns a two-simplex triangulation of the dim-sphere.

Although the sphere is orientable, this triangulation will not be oriented since the gluings will all be identity permutations.

Returns
a two-simplex dim-sphere.

◆ sphereBundle()

Triangulation< dim > regina::detail::ExampleBase< dim >::sphereBundle ( )
staticinherited

Returns a two-simplex triangulation of the product space S^(dim-1) × S¹.

Note that the current construction does not give an oriented triangulation (due to the specific choice of labelling); this may change in a future version of Regina.

Returns
the product S^(dim-1) × S¹.

◆ spun()

static Triangulation< 4 > regina::Example< 4 >::spun ( const Link & knot,
StrandRef breakOpen = {} )
static

Returns an ideal triangulation of the complement of the 2-knot obtained by spinning the given 1-knot (without twisting).

The knot to be spun is passed as the first argument; the second (optional) argument allows you to specify where the knot should be broken open when carrying out the spinning construction.

The spinning construction is described by Artin in "Zur Isotopie zweidimensionaler Flächen im R_4", Abh. Math. Sem. Univ. Hamburg 4 (1925), no. 1, 174-177.

The final triangulation might (or might not) still contain internal vertices, in addition to the one ideal vertex that represents the 2-knot itself.

Warning
This routine could be slow, even when knot has very few crossings. This is because it typically goes via intermediate triangulations with thousands or even tens of thousands of pentachora, and simplifying such triangulations takes time.
Precondition
The argument knot is a classical knot diagram. That is, the link diagram is not virtual, and has exactly one link component.
Exceptions
FailedPreconditionThe given link diagram is empty, has multiple components, and/or is virtual (as opposed to classical).
Parameters
knotthe knot to be spun.
breakOpenindicates where to break open the given knot diagram when performing the spinning construction. See the StrandRef documentation for the convention on how arcs are represented using StrandRef objects. This may be a null reference (the default), in which case this routine will choose an arbitrary location to break the knot open.
Returns
an ideal triangulation of the resulting 2-knot.

◆ twistedBallBundle()

Triangulation< dim > regina::detail::ExampleBase< dim >::twistedBallBundle ( )
staticinherited

Returns a triangulation of the twisted product space B^(dim-1) x~ S¹.

This will use one simplex in even dimensions, or two simplices in odd dimensions.

Returns
the twisted product B^(dim-1) x~ S¹.

◆ twistedSphereBundle()

Triangulation< dim > regina::detail::ExampleBase< dim >::twistedSphereBundle ( )
staticinherited

Returns a two-simplex triangulation of the twisted product space S^(dim-1) x~ S¹.

Returns
the twisted product S^(dim-1) x~ S¹.

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