flipper package

Flipper is a program for computing the action of mapping classes on laminations on punctured surfaces using ideal triangulation coordinates.

It can decide the Nielsen–Thurston type of a given mapping class and, for pseudo-Anosov mapping classes, construct a layered, veering triangulation of their mapping torus, as described by Agol.

Get started by starting the GUI:

> import flipper.app
> flipper.app.start()

or by creating a Triangulation using the helper function:

> flipper.create_triangulation(...)

or from an isomorphism signature:

> flipper.create_triangulation_from_iso_sig(...)

or by loading one of the provided EquippedTriangulations using:

> flipper.load(...)



The flipper kernel.

Some of the functions and methods have assumptions on them. We denote in a functions docstring:

  • Assumes that

    If the assumptions are met then this function is guaranteed to terminate correctly. If not then this function will either:

    • terminate correctly, OR
    • a flipper.AssumptionError will be raised.
  • Assumes (and checks) that

    If the assumptions are met then this function is guaranteed to terminate correctly. If not then this a flipper.AssumptionError will be raised.


Bundle This represents a triangulation of a surface bundle over the circle.
Encoding This represents a map between two Triagulations.
EquippedTriangulation This represents a triangulation along with a collection of named laminations and mapping classes on it.
AbortError An exception for aborting computations with.
ApproximationError An exception for when a calculation has been done to insufficient accuracy.
AssumptionError An exception for when an assumptions is false.
ComputationError An exception for when computations fail.
FatalError An exception for when we reach something mathematically impossible.
FlatStructure This represents a triangulation with a flat structure.
Vector2 This represents a point in RR^2.
Lamination This represents a lamination on an triangulation.
Matrix This represents a matrix.
EdgeFlip Represents the change to a lamination caused by flipping an edge.
Isometry This represents an isometry from one Triangulation to another.
LinearTransformation Represents the change to a lamination caused by a linear map.
Move This represents an abstract move between triangulations and provides the framework for subclassing.
Permutation This represents a permutation in Sym(n).
SplittingSequence This represents a sequence of flips of an Triangulation.
SplittingSequences This represents a sequence of flips of an Triangulation.
Corner This represents a corner of a triangulation
Edge This represents an oriented edge, labelled with an integer.
Triangle This represents a triangle.
Triangulation This represents a triangulation of a punctured surface.
Vertex This represents a vertex, labelled with an integer.
Tetrahedron This represents a tetrahedron.
Triangulation3 This represents triangulation, that is a collection of tetrahedra.


flipper.census module

A module for loading flipper databases.


Return the requsted database.

flipper.load module

Some standard example surfaces with mapping classes defined on them. Mainly used for running tests on. These can be accessed through the load(SURFACE) function.


Nathans origional version.


Nathans origional version.


Return the requested example EquippedTriangulation.

Available surfaces:
‘S_0_4’, ‘S_1_1’, ‘S_1_1m’, ‘S_1_2’, ‘S_1_2p’, ‘S_2_1’, ‘S_2_1b’, ‘S_3_1’, ‘S_3_1b’, ‘E_12’, ‘E_24’, ‘E_36’, and ‘SB_n’ where n is an integer >= 4.

flipper.surface module

flipper.surface.LP(genus, num_punctures)[source]