regina::SFSAltSet Class Reference
Standard 3-Manifolds

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

`#include <manifold/sfsaltset.h>`

## Public Member Functions

| SFSAltSet (const SFSpace *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 (SFSpace *exception)
| Destroys all of the alternative representations in this set, except for the given exception. More...
void | deleteAll (SFSpace *exception1, SFSpace *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...
SFSpace * | operator[] (unsigned which) const
| Returns the requested alternative space. More...
const Matrix2 & | conversion (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

## SFSAltSet()

regina::SFSAltSet::SFSAltSet | ( | const SFSpace * | 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

  sfs | the original Seifert fibred space for which we are creating a set of alternative representations.

## Member Function Documentation

## conversion()

const Matrix2 & regina::SFSAltSet::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 SFSAltSet 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

  which | indicates 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.

## deleteAll() [1/3]

void regina::SFSAltSet::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.

## deleteAll() [2/3]

void regina::SFSAltSet::deleteAll | ( | SFSpace * | 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

  exception | the one alternative that should not be destroyed.

## deleteAll() [3/3]

void regina::SFSAltSet::deleteAll | ( | SFSpace * | exception1,
|  | SFSpace * | 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

  exception1 | the first alternative that should not be destroyed.
  exception2 | the second alternative that should not be destroyed.

## operator[]()

SFSpace * regina::SFSAltSet::operator[] | ( | unsigned | which | ) | const

inline

Returns the requested alternative space.

Parameters

  which | indicates which of the alternatives should be returned; this must be between 0 and size()-1 inclusive.

Returns
  the requested alternative space.

## reflected()

bool regina::SFSAltSet::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

  which | indicates 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.

## size()

unsigned regina::SFSAltSet::size | ( |  | ) | const

inline

Returns the number of alternative spaces in this set.

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

- manifold/sfsaltset.h

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