curver.kernel.encoding.MappingClass

class curver.kernel.encoding.MappingClass(sequence)[source]

Bases: curver.kernel.encoding.Mapping

A Mapping from a Triangulation to itself.

That is, one where self.source_triangulation == self.target_triangulation.

asymptotic_translation_length()[source]

Return the asymptotic translation length of this mapping class on the curve complex.

From Algorithm 6 of [BellWebb16].

combine_isometries()

Return an equal Mapping which only has one isometry (at the front).

conjugate_by(other)[source]

Return this mapping class conjugated by other.

extract_twisting_multicurve()[source]

Return a MultiCurve c such that c.encode_twist() == self.

This raises a ValueError if no such MultiCurve exists.

flip_mapping()

Return a Mapping equal to self that only uses EdgeFlips and Isometries.

homology_matrix()

Return a matrix describing the action of this mapping on first homology (relative to the punctures).

The matrix is given with respect to the homology bases of the source and target triangulations.

intersection_matrix()

Return the matrix M = {signed_intersection(self(e_i), e’_j)}_{ij}. Here e_i and e’_j are the edges of self.source_triangulation and self.target_triangulation respectively.

Except when on S_{1,1}, this uniquely determines self.

inverse()

Return the inverse of this encoding.

is_conjugate_to(other)[source]

Return whether this mapping class is conjugate to other.

It would also be straightforward to check whether self^i ~~ other^j for some i, j.

In the periodic case we use the quotient orbifold and its covering map, the covering map is recorded via the preimage and holonomy fields. This is a total conjugacy invariant for periodic mapping classes by Theorem 9 of [Mosher07].

Currently, at least one mapping class must be is periodic.

is_identity()[source]

Return whether this mapping class is the identity.

is_in_torelli()[source]

Return whether this mapping class is in the Torelli subgroup.

is_multitwist()[source]

Return whether this mapping class is a Dehn twist about a multicurve.

is_periodic()[source]

Return whether this mapping class has finite order.

is_pseudo_anosov()[source]

Return whether this mapping class is pseudo-Anosov.

is_reducible()[source]

Return whether this mapping class is reducible.

nielsen_thurston_type()[source]

Return the Nielsen–Thurston type of this mapping class.

order()[source]

Return the order of this mapping class.

If this has infinite order then return 0.

package()

Return a small amount of info that self.source_triangulation can use to reconstruct this triangulation.

pl_action(multicurve)

Return the PartialLinearFunction that this Mapping applies to the given multicurve.

positive_asymptotic_translation_length()[source]

Return whether the asymptotic translation length of this mapping class on the curve complex is positive.

This uses Remark 4.7 of [BellWebb16] which is based on [GadreTsai11] and so is more efficient than doing:

self.asymptotic_translation_length() > 0
projective_invariant_lamination(curves=None)[source]

Return (d, L) such that self(L) == d * L.

May raise a ValueError if self is not pseudo-Anosov.

promote()

Return this Encoding in its finest form.

self_image()

Return the image of self.source_triangulation under self.

simplify()

Return a new Mapping that is equal to self.

This is obtained by combing the image of the source triangulation under self and so is (hopefully) simpler than self since it depends only on the endpoints.

subgroup()[source]

Return the FiniteSubgroup generated by this mapping class.

This mapping class must be periodic.

vertex_map()

Return the dictionary (vertex, self(vertex)) for each vertex in self.source_triangulation.

When self is a MappingClass this is a permutation of the vertices.

vertex_permutation()[source]

Return a permutation describing how the vertices of self.source_triangulation (labelled in sorted order) are permuted.