curver.kernel.arc module

A module for representing (multi)arcs on triangulations.

class curver.kernel.arc.Arc(triangulation, geometric)[source]

Bases: curver.kernel.arc.MultiArc

A MultiArc with a single component.

components()[source]

Return a dictionary mapping components to their multiplicities.

connects_distinct_vertices()[source]

Return whether this arc connects between distict vertices of its underlying triangulation.

encode_halftwist(power=1)[source]

Return an Encoding of a right half twist about a regular neighbourhood of this arc, raised to the given power.

Assumes that this arc connects between distinct vertices.

parallel()[source]

Return an edge that this arc is parallel to.

Note that this is only defined for short arcs.

class curver.kernel.arc.MultiArc(triangulation, geometric)[source]

Bases: curver.kernel.lamination.Lamination

A Lamination in which every component is an Arc.

boundary()[source]

Return the multicurve which is the boundary of a regular neighbourhood of this multiarc.

explore_ball(radius)[source]

Extend this MultiArc to a triangulation and return all triangulations within the ball of the given radius of that one.

Runs in exp(radius) time. Note that this is only well-defined if this multiarc is filling.

is_minimal()[source]

Return whether this multiarc is minimal.

A multiarc is minimal if its weight is as small as possible.

Note that minimal ==> short.

is_multiarc()[source]

Return if this lamination is actually a multiarc.

is_multicurve()[source]

Return if this lamination is actually a multicurve.

is_polygonalisation()[source]

Return if this MultiArc is a polygonalisation, that is, if it cuts the surface into polygons.

is_short()[source]

Return whether this lamination is short.

A lamination is short if all of its non-peripheral components are parallel to edges of the triangulation that it is defined on. This makes computing its components very easy.

is_triangulation()[source]

Return if this MultiArc is a triangulation.

minimise(**kwargs)[source]

Return an encoding which maps this multiarc to a minimal one.

topological_type()[source]

Return the topological type of this multiarc.

Two multiarcs are in the same mapping class group orbit if and only their topological types are equal. These are labelled graphs and so equal means ‘label isomorphic’, so we return a custom class that uses networkx.is_isomorphic to determine equality.

vertices()[source]

Return set of vertices that the components of this MultiArc connects to.