teichmueller_curve#

Teichmueller curves of Origamis.

class surface_dynamics.flat_surfaces.origamis.teichmueller_curve.Cusp(parent, origami, slope)#

A cusp in a Teichmueller curve.

  • width of the cusp

  • cylinder decomposition

  • lengths

  • heights

  • a representative

cylinder_diagram(data=False)#

Return the cylinder diagram associated to this cusp.

slope()#

Return one slope

width()#

Return the width of the cusp

class surface_dynamics.flat_surfaces.origamis.teichmueller_curve.TeichmuellerCurve#
surface_dynamics.flat_surfaces.origamis.teichmueller_curve.TeichmuellerCurveOfOrigami(origami)#

Return the teichmueller curve for an origami

TESTS:

sage: from surface_dynamics import *

sage: o = Origami('(1,2)','(1,3)')
sage: o.teichmueller_curve() #indirect test
Teichmueller curve of the origami
(1)(2,3)
(1,2)(3)
class surface_dynamics.flat_surfaces.origamis.teichmueller_curve.TeichmuellerCurveOfOrigami_class(mapping, inv_mapping, l_edges, r_edges, s2_edges, s3_edges)#
an_element()#

Returns an origami in this Teichmueller curve.

Beware that the labels of the initial origami may have changed.

EXAMPLES:

sage: from surface_dynamics import *

sage: o = Origami('(1,2)','(1,3)')
sage: t = o.teichmueller_curve()
sage: t.origami()
(1)(2,3)
(1,2)(3)
cusp_representative_iterator()#

Iterator over the cusp of self.

Each term is a couple (o,w) where o is a representative of the cusp (an origami) and w is the width of the cusp (an integer).

cusp_representatives()#
orbit_graph(s2_edges=True, s3_edges=True, l_edges=False, r_edges=False, vertex_labels=True)#

Return the graph of action of PSL on this origami

INPUT:

  • return_map - return the list of origamis in the orbit

origami()#

Returns an origami in this Teichmueller curve.

Beware that the labels of the initial origami may have changed.

EXAMPLES:

sage: from surface_dynamics import *

sage: o = Origami('(1,2)','(1,3)')
sage: t = o.teichmueller_curve()
sage: t.origami()
(1)(2,3)
(1,2)(3)
plot_graph()#

Plot the graph of the veech group.

The graph corresponds to the action of the generators on the cosets determined by the Veech group in PSL(2,ZZ).

simplicial_action_generators()#

Return action of generators of the Veech group on homology

stratum()#

Returns the stratum of the Teichmueller curve

EXAMPLES:

sage: from surface_dynamics import *

sage: o = Origami('(1,2)','(1,3)')
sage: t = o.teichmueller_curve()
sage: t.stratum()
H_2(2)
sum_of_lyapunov_exponents()#

Returns the sum of Lyapunov exponents for this origami

EXAMPLES:

sage: from surface_dynamics import *

Let us consider few examples in H(2) for which the sum is independent of the origami:

sage: o = Origami('(1,2)','(1,3)')
sage: o.stratum()
H_2(2)
sage: o.sum_of_lyapunov_exponents()
4/3
sage: o = Origami('(1,2,3)(4,5,6)','(1,5,7)(2,6)(3,4)')
sage: o.stratum()
H_2(2)
sage: o.sum_of_lyapunov_exponents()
4/3

This is true as well for the stratum H(1,1):

sage: o = Origami('(1,2)','(1,3)(2,4)')
sage: o.stratum()
H_2(1^2)
sage: o.sum_of_lyapunov_exponents()
3/2
sage: o = Origami('(1,2,3,4,5,6,7)','(2,6)(3,7)')
sage: o.stratum()
H_2(1^2)
sage: o.sum_of_lyapunov_exponents()
3/2

ALGORITHM:

Kontsevich-Zorich formula

veech_group()#

Return the veech group of the Teichmueller curve

surface_dynamics.flat_surfaces.origamis.teichmueller_curve.TeichmuellerCurvesOfOrigamis(origamis, assume_normal_form=False, limit=0, verbose_level=0)#

Return a set of Teichmueller curve from a set of origamis

INPUT:

  • origamis - iterable of origamis

  • assume_normal_form - whether or not assume that each origami is in normal form

  • limit - integer (default: 0) - if positive, then stop the computation if the size of an orbit is bigger than limit.