# 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(...)
```

## Subpackages¶

### flipper.kernel¶

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.

Classes

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