veech_group#

The Veech group of a surface and related concepts.

EXAMPLES:

We write an element of the Veech group as an action on homology:

sage: from flatsurf import translation_surfaces
sage: S = translation_surfaces.square_torus()
sage: A = S.affine_automorphism_group()
sage: M = matrix([[1, 2], [0, 1]])
sage: f = A.derivative().section()(M, check=False)

sage: from flatsurf import SimplicialHomology
sage: H = SimplicialHomology(S)
sage: H.hom(f)
Induced endomorphism of H₁(Translation Surface in H_1(0) built from a square)
  Defn: Induced by Affine endomorphism of Translation Surface in H_1(0) built from a square
          Defn: Lift of linear action given by
                [1 2]
                [0 1]
flatsurf.geometry.veech_group.AffineAutomorphismGroup(surface)[source]#

Return the group of affine automorphisms of this surface, i.e., the group of homeomorphisms that can be locally expressed as affine transformations.

EXAMPLES:

sage: from flatsurf import dilation_surfaces, AffineAutomorphismGroup
sage: S = dilation_surfaces.genus_two_square(1/2, 1/3, 1/4, 1/5)
sage: AffineAutomorphismGroup(S)
AffineAutomorphismGroup(Genus 2 Positive Dilation Surface built from 2 right triangles and a hexagon)
class flatsurf.geometry.veech_group.AffineAutomorphismGroup_generic(surface)[source]#

A generic implementation of the group of affine automorphisms of a surface.

You should not create such a group directly. Use AffineAutomorphismGroup() or flatsurf.geometry.categories.dilation_surfaces.DilationSurfaces.ParentMethods.affine_automorphism_group().

Note

Currently, this group is mostly empty and just a container to hold on to the derivative() method.

We do not provide a category parameter here because it makes serialization overly complicated. (And we do not think that anybody is going to use it.)

EXAMPLES:

sage: from flatsurf import translation_surfaces
sage: S = translation_surfaces.square_torus()
sage: A = S.affine_automorphism_group()
derivative()[source]#

Return the derivative of this group, i.e., the map to GL_2(mathbb{R}) whose image is the VeechGroup().

EXAMPLES:

sage: from flatsurf import translation_surfaces
sage: S = translation_surfaces.square_torus()
sage: A = S.affine_automorphism_group()
sage: A.derivative()
Derivative morphism:
  From: AffineAutomorphismGroup(Translation Surface in H_1(0) built from a square)
  To:   General Linear Group of degree 2 over Rational Field
surface()[source]#

The surface for which this is the affine automorphism group.

EXAMPLES:

sage: from flatsurf import translation_surfaces
sage: S = translation_surfaces.square_torus()
sage: S.affine_automorphism_group().surface() is S
True
class flatsurf.geometry.veech_group.AffineAutomorphism_matrix(parent, matrix)[source]#

An affine automorphism of a surface that is an (arbitrary) lift of an element of GL_2(mathbb{R}).

EXAMPLES:

sage: from flatsurf import translation_surfaces
sage: S = translation_surfaces.square_torus()
sage: A = S.affine_automorphism_group()
sage: f = A.derivative().section()(matrix([[1, 3], [0, 1]]), check=False)
sage: f
Affine endomorphism of Translation Surface in H_1(0) built from a square
  Defn: Lift of linear action given by
        [1 3]
        [0 1]
class flatsurf.geometry.veech_group.DerivativeMap[source]#

The derivative from the AffineAutomorphismGroup to GL_2(mathbb{R}).

EXAMPLES:

sage: from flatsurf import translation_surfaces
sage: S = translation_surfaces.square_torus()
sage: A = S.affine_automorphism_group()
sage: d = A.derivative()
section()[source]#

Return a section of this map, i.e., a map that lifts a matrix in GL_2(mathbb{R}) to an affine automorphism.

EXAMPLES:

sage: from flatsurf import translation_surfaces
sage: S = translation_surfaces.square_torus()
sage: A = S.affine_automorphism_group()
sage: d = A.derivative()
sage: s = d.section()
class flatsurf.geometry.veech_group.SectionDerivativeMap(derivative)[source]#

A section of a DerivativeMap.

EXAMPLES:

sage: from flatsurf import translation_surfaces
sage: S = translation_surfaces.square_torus()
sage: A = S.affine_automorphism_group()
sage: d = A.derivative()
sage: s = d.section()
section()[source]#

Return a section of this section, i.e., the original map.

EXAMPLES:

sage: from flatsurf import translation_surfaces
sage: S = translation_surfaces.square_torus()
sage: A = S.affine_automorphism_group()
sage: d = A.derivative()
sage: s = d.section()

sage: s.section() is d
True
flatsurf.geometry.veech_group.VeechGroup(surface)[source]#

Return the Veech group of surface, i.e., the group of matrices that fix its vertices.

EXAMPLES:

sage: from flatsurf import dilation_surfaces, VeechGroup
sage: S = dilation_surfaces.genus_two_square(1/2, 1/3, 1/4, 1/5)
sage: VeechGroup(S)
VeechGroup(Genus 2 Positive Dilation Surface built from 2 right triangles and a hexagon)
class flatsurf.geometry.veech_group.VeechGroup_generic(surface, category=None)[source]#

A generic (currently essentially empty) implementation of the Veech group.

You should not create such a group directly. Use VeechGroup() or flatsurf.geometry.categories.dilation_surfaces.DilationSurfaces.ParentMethods.veech_group().

EXAMPLES:

sage: from flatsurf import translation_surfaces
sage: S = translation_surfaces.square_torus()
sage: V = S.veech_group()
gens()[source]#

Return generators of this group.

EXAMPLES:

sage: from flatsurf import translation_surfaces
sage: S = translation_surfaces.square_torus()
sage: V = S.veech_group()
sage: V.gens()
Traceback (most recent call last):
...
NotImplementedError: cannot compute generators of the Veech group yet
surface()[source]#

The surface for which this is the Veech group.

EXAMPLES:

sage: from flatsurf import translation_surfaces
sage: S = translation_surfaces.square_torus()
sage: S.veech_group().surface() is S
True