Regina Calculation Engine
Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
regina::Isomorphism< dim > Class Template Reference

Represents a combinatorial isomorphism from one dim-manifold triangulation into another. More...

#include <triangulation/generic.h>

Inheritance diagram for regina::Isomorphism< dim >:
regina::detail::IsomorphismBase< dim > regina::Output< IsomorphismBase< dim > > regina::alias::IsomorphismImage< IsomorphismBase< dim >, dim >

Public Member Functions

 Isomorphism (unsigned nSimplices)
 Creates a new isomorphism with no initialisation. More...
 
 Isomorphism (const Isomorphism &src)=default
 Creates a copy of the given isomorphism. More...
 
 Isomorphism (Isomorphism &&src) noexcept=default
 Moves the given isomorphism into this new isomorphism. More...
 
unsigned size () const
 Returns the number of simplices in the source triangulation associated with this isomorphism. More...
 
int & simpImage (unsigned sourceSimp)
 Determines the image of the given source simplex under this isomorphism. More...
 
int simpImage (unsigned sourceSimp) const
 Determines the image of the given source simplex under this isomorphism. More...
 
Perm< dim+1 > & facetPerm (unsigned sourceSimp)
 Returns a read-write reference to the permutation that is applied to the (dim + 1) facets of the given source simplex under this isomorphism. More...
 
Perm< dim+1 > facetPerm (unsigned sourceSimp) const
 Determines the permutation that is applied to the (dim + 1) facets of the given source simplex under this isomorphism. More...
 
FacetSpec< dim > operator[] (const FacetSpec< dim > &source) const
 Determines the image of the given source simplex facet under this isomorphism. More...
 
bool isIdentity () const
 Determines whether or not this is an identity isomorphism. More...
 
Triangulation< dim > * apply (const Triangulation< dim > *original) const
 Applies this isomorphism to the given triangulation, and returns the result as a new triangulation. More...
 
void applyInPlace (Triangulation< dim > *tri) const
 Applies this isomorphism to the given triangulation, modifying the given triangulation directly. More...
 
void writeTextShort (std::ostream &out) const
 Writes a short text representation of this object to the given output stream. More...
 
void writeTextLong (std::ostream &out) const
 Writes a detailed text representation of this object to the given output stream. More...
 
std::string str () const
 Returns a short text representation of this object. More...
 
std::string utf8 () const
 Returns a short text representation of this object using unicode characters. More...
 
std::string detail () const
 Returns a detailed text representation of this object. More...
 

Static Public Member Functions

static Isomorphism< dim > identity (unsigned nSimplices)
 Returns the identity isomorphism for the given number of simplices. More...
 
static Isomorphism< dim > random (unsigned nSimplices, bool even=false)
 Returns a random isomorphism for the given number of simplices. More...
 

Protected Attributes

unsigned nSimplices_
 The number of simplices in the source triangulation. More...
 
int * simpImage_
 Stores the simplex of the destination triangulation that each simplex of the source triangulation maps to. More...
 
Perm< dim+1 > * facetPerm_
 The permutation applied to the facets of each source simplex. More...
 

Detailed Description

template<int dim>
class regina::Isomorphism< dim >

Represents a combinatorial isomorphism from one dim-manifold triangulation into another.

In essence, a combinatorial isomorphism from triangulation T to triangulation U is a one-to-one map from the simplices of T to the simplices of U that allows relabelling of both the simplices and their facets (or equivalently, their vertices), and that preserves gluings across adjacent simplices.

More precisely: An isomorphism consists of (i) a one-to-one map f from the simplices of T to the simplices of U, and (ii) for each simplex S of T, a permutation fS of the facets (0,...,dim) of S, for which the following condition holds:

Isomorphisms can be boundary complete or boundary incomplete. A boundary complete isomorphism satisfies the additional condition:

A boundary complete isomorphism thus indicates that a copy of triangulation T is present as an entire component (or components) of U, whereas a boundary incomplete isomorphism represents an embedding of a copy of triangulation T as a subcomplex of some possibly larger component (or components) of U.

Note that for all types of isomorphism, triangulation U is allowed to contain more simplices than triangulation T.

This class is designed to avoid deep copies wherever possible. In particular, it supports C++11 move constructors and move assignment, and calling routines that return an Isomorphism (e.g., identity() and random()) should not perform any unwanted deep copies.

Python
Python does not support templates. Instead this class can be used by appending the dimension as a suffix (e.g., Isomorphism2 and Isomorphism3 for dimensions 2 and 3).
Template Parameters
dimThe dimension of the underlying triangulation. This must be between 2 and 15 inclusive.

Member Function Documentation

◆ detail()

std::string regina::Output< IsomorphismBase< dim > , false >::detail ( ) const
inherited

Returns a detailed text representation of this object.

This text may span many lines, and should provide the user with all the information they could want. It should be human-readable, should not contain extremely long lines (which cause problems for users reading the output in a terminal), and should end with a final newline. There are no restrictions on the underlying character set.

Returns
a detailed text representation of this object.

◆ str()

std::string regina::Output< IsomorphismBase< dim > , false >::str ( ) const
inherited

Returns a short text representation of this object.

This text should be human-readable, should fit on a single line, and should not end with a newline. Where possible, it should use plain ASCII characters.

Python
In addition to str(), this is also used as the Python "stringification" function str().
Returns
a short text representation of this object.

◆ utf8()

std::string regina::Output< IsomorphismBase< dim > , false >::utf8 ( ) const
inherited

Returns a short text representation of this object using unicode characters.

Like str(), this text should be human-readable, should fit on a single line, and should not end with a newline. In addition, it may use unicode characters to make the output more pleasant to read. This string will be encoded in UTF-8.

Returns
a short text representation of this object.

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

Copyright © 1999-2021, 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).