Regina Calculation Engine
Public Member Functions | List of all members
regina::NSFSAltSet Class Reference

Provides a variety of alternative representations of a single bounded Seifert fibred space. More...

#include <manifold/nsfsaltset.h>

Public Member Functions

 NSFSAltSet (const NSFSpace *sfs)
 Creates a new set of alternatives for the given Seifert fibred space. More...
 
void deleteAll ()
 Destroys all of the alternative representations in this set. More...
 
void deleteAll (NSFSpace *exception)
 Destroys all of the alternative representations in this set, except for the given exception. More...
 
void deleteAll (NSFSpace *exception1, NSFSpace *exception2)
 Destroys all of the alternative representations in this set, except for the two given exceptions. More...
 
unsigned size () const
 Returns the number of alternative spaces in this set. More...
 
NSFSpaceoperator[] (unsigned which) const
 Returns the requested alternative space. More...
 
const NMatrix2conversion (unsigned which) const
 Returns the conversion matrix for the requested alternative space. More...
 
bool reflected (unsigned which) const
 Returns whether or not a reflection was used when creating the requested alternative space. More...
 

Detailed Description

Provides a variety of alternative representations of a single bounded Seifert fibred space.

These alternatives are made possible by altering the curves made by the fibre and base orbifold on a boundary torus.

This class is designed to help in finding simple representations of graph manifolds (or, indeed, any non-geometric manifolds containing Seifert fibred blocks).

Each alternative comes with its own representation of the original Seifert fibred space, along with instructions for converting fibre/base curves on the boundary tori between the original and alternative spaces.

The alternative representations will generally be as simple as possible (and indeed simpler than the original where possible). In particular, each alternative space is guaranteed to have obstruction constant zero. The base orbifold may be changed entirely (for instance, an orientable Seifert fibred space over the Mobius band with no exceptional fibres will be converted to a Seifert fibred space over the disc with two exceptional fibres).

The conversions between boundary curves are described by a conversion matrix M as follows. Consider the first boundary torus. Let f_old and o_old be directed curves on this boundary representing the fibre and base orbifold of the original space, and let f_alt and o_alt be directed curves on this same boundary representing the fibre and base orbifold of the new alternative space. Then

    [f_alt]         [f_old]
    [     ]  =  M * [     ].
    [o_alt]         [o_old]

Note that this only applies to the first boundary torus! If the Seifert fibred space has more than one boundary, then for the remaining boundaries the unoriented fibre and base curves remain the same. More specifically, the directed fibre remains identical, and the directed curve representing the base orbifold is reversed if and only if a reflection was used in creating the alternative space, as returned by reflected().

See the page on Notation for Seifert fibred spaces for details on some of the terminology used above.

Warning
When an object of this class is destroyed, the alternative spaces it holds are not destroyed with it. One of the deleteAll() routines must be explicitly called to clean up properly.
Python:
Not present.

Constructor & Destructor Documentation

regina::NSFSAltSet::NSFSAltSet ( const NSFSpace sfs)

Creates a new set of alternatives for the given Seifert fibred space.

Note that in general, none of the alternatives will have a representation identical to the given space (generally these alternative representations will be simpler if possible).

Precondition
The given Seifert fibred space has at least one torus boundary.
Parameters
sfsthe original Seifert fibred space for which we are creating a set of alternative representations.

Member Function Documentation

const NMatrix2 & regina::NSFSAltSet::conversion ( unsigned  which) const
inline

Returns the conversion matrix for the requested alternative space.

This matrix describes the fibre and base curves of the alternative space on the first boundary torus in terms of the fibre and base curves of the original space (which was passed to the NSFSAltSet constructor). See the class notes above for details.

Note that this conversion matrix applies only to the first boundary torus! If there is more than one boundary, the remaining boundary conversions are simpler and depend only on whether a reflection has been used or not. See reflected() or the class notes for details.

Parameters
whichindicates which of the alternatives we should return the conversion matrix for; this must be between 0 and size()-1 inclusive.
Returns
the conversion matrix for the requested alternative space.
void regina::NSFSAltSet::deleteAll ( )

Destroys all of the alternative representations in this set.

This routine is for situations where none of the alternatives here are appropriate for keeping and using elsewhere.

void regina::NSFSAltSet::deleteAll ( NSFSpace exception)

Destroys all of the alternative representations in this set, except for the given exception.

If the given exception is null or is not one of the alternatives in this set, every alternative will be destroyed.

This routine is for situations where one of the alternatives has been kept for later use, and the rest are to be discarded.

Parameters
exceptionthe one alternative that should not be destroyed.
void regina::NSFSAltSet::deleteAll ( NSFSpace exception1,
NSFSpace exception2 
)

Destroys all of the alternative representations in this set, except for the two given exceptions.

If either exception is null or is not one of the alternatives in this set, it will be ignored (and this routine will behave like the one-exception or no-exceptions variant). Likewise, if both exceptions are the same then this routine will behave like the one-exception variant.

This routine is for situations where one of the alternatives has been kept for later use, but due to other operations that may have taken place (such as space swapping) it is only known that the alternative we kept is one of two possibilities.

Parameters
exception1the first alternative that should not be destroyed.
exception2the second alternative that should not be destroyed.
NSFSpace * regina::NSFSAltSet::operator[] ( unsigned  which) const
inline

Returns the requested alternative space.

Parameters
whichindicates which of the alternatives should be returned; this must be between 0 and size()-1 inclusive.
Returns
the requested alternative space.
bool regina::NSFSAltSet::reflected ( unsigned  which) const
inline

Returns whether or not a reflection was used when creating the requested alternative space.

This determines the conversion between boundary curves for all boundary tori after the first.

More specifically, if no reflection was used then the directed fibre and base curves are identical for the original and alternative spaces. If a reflection was used, then the directed fibres are identical but the directed base curves are reversed.

The conversion between curves on the first boundary torus is generally more complex, and is returned as a matrix by the conversion() routine.

Parameters
whichindicates which of the alternatives is being queried; this must be between 0 and size()-1 inclusive.
Returns
true if a reflection was used in creating the requested alternative space, or false if no reflection was used.
unsigned regina::NSFSAltSet::size ( ) const
inline

Returns the number of alternative spaces in this set.


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

Copyright © 1999-2014, 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@debian.org).