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()
orflatsurf.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()
- __annotations__ = {}¶
- __module__ = 'flatsurf.geometry.veech_group'¶
- __reduce__()[source]¶
Return a serializable representation of this space.
EXAMPLES:
sage: from flatsurf import translation_surfaces sage: S = translation_surfaces.square_torus() sage: A = S.affine_automorphism_group() sage: loads(dumps(A)) == A True
- __repr__()[source]¶
Return a printable repreentation of this group.
EXAMPLES:
sage: from flatsurf import translation_surfaces sage: S = translation_surfaces.square_torus() sage: A = S.affine_automorphism_group() sage: A AffineAutomorphismGroup(Translation Surface in H_1(0) built from a square)
- 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
- 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]
- __annotations__ = {}¶
- __eq__(other)[source]¶
Return whether this morphism is indistinguishable from
other
.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: g = A.derivative().section()(matrix([[1, 3], [0, 1]]), check=False) sage: f == g True
- __hash__()[source]¶
Return a hash value for this automorphism that is compatible with
__eq__()
.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: g = A.derivative().section()(matrix([[1, 3], [0, 1]]), check=False) sage: hash(f) == hash(g) True
- __module__ = 'flatsurf.geometry.veech_group'¶
- __reduce__()[source]¶
Return a serializable representation of this automorphism.
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: loads(dumps(f)) == f True
- 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()
- __dict__ = mappingproxy({'__module__': 'flatsurf.geometry.veech_group', '__doc__': '\n The derivative from the :class:`AffineAutomorphismGroup` to\n `GL_2(\\mathbb{R})`.\n\n EXAMPLES::\n\n sage: from flatsurf import translation_surfaces\n sage: S = translation_surfaces.square_torus()\n sage: A = S.affine_automorphism_group()\n sage: d = A.derivative()\n\n TESTS::\n\n sage: from flatsurf.geometry.veech_group import DerivativeMap\n sage: isinstance(d, DerivativeMap)\n True\n\n sage: TestSuite(d).run()\n\n ', 'section': <function DerivativeMap.section>, '_repr_type': <function DerivativeMap._repr_type>, '__eq__': <function DerivativeMap.__eq__>, '__hash__': <function DerivativeMap.__hash__>, '__dict__': <attribute '__dict__' of 'DerivativeMap' objects>, '__annotations__': {}})¶
- __eq__(other)[source]¶
Return whether this derivative is indistinguishable from
other
.EXAMPLES:
sage: from flatsurf import translation_surfaces sage: S = translation_surfaces.square_torus() sage: A = S.affine_automorphism_group() sage: A.derivative() == A.derivative() True
- __hash__()[source]¶
Return a hash value for this derivative that is compatible with
__eq__()
.EXAMPLES:
sage: from flatsurf import translation_surfaces sage: S = translation_surfaces.square_torus() sage: A = S.affine_automorphism_group() sage: hash(A.derivative()) == hash(A.derivative()) True
- __module__ = 'flatsurf.geometry.veech_group'¶
- 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()
- __dict__ = mappingproxy({'__module__': 'flatsurf.geometry.veech_group', '__doc__': '\n A section of a :class:`DerivativeMap`.\n\n EXAMPLES::\n\n sage: from flatsurf import translation_surfaces\n sage: S = translation_surfaces.square_torus()\n sage: A = S.affine_automorphism_group()\n sage: d = A.derivative()\n sage: s = d.section()\n\n TESTS::\n\n sage: from flatsurf.geometry.veech_group import SectionDerivativeMap\n sage: isinstance(s, SectionDerivativeMap)\n True\n\n sage: TestSuite(s).run()\n\n ', '__init__': <function SectionDerivativeMap.__init__>, 'section': <function SectionDerivativeMap.section>, '_repr_type': <function SectionDerivativeMap._repr_type>, '_call_': <function SectionDerivativeMap._call_>, '_call_with_args': <function SectionDerivativeMap._call_with_args>, '__eq__': <function SectionDerivativeMap.__eq__>, '__hash__': <function SectionDerivativeMap.__hash__>, '__dict__': <attribute '__dict__' of 'SectionDerivativeMap' objects>, '__annotations__': {}})¶
- __eq__(other)[source]¶
Return whether this section is indistinguishable from
other
.EXAMPLES:
sage: from flatsurf import translation_surfaces sage: S = translation_surfaces.square_torus() sage: A = S.affine_automorphism_group() sage: A.derivative().section() == A.derivative().section() True
- __hash__()[source]¶
Return a hash value for this section that is compatible with
__eq__()
.EXAMPLES:
sage: from flatsurf import translation_surfaces sage: S = translation_surfaces.square_torus() sage: A = S.affine_automorphism_group() sage: hash(A.derivative().section()) == hash(A.derivative().section()) True
- __module__ = 'flatsurf.geometry.veech_group'¶
- 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()
orflatsurf.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()
- __contains__(x)[source]¶
Return whether
x
is contained in the Veech group.EXAMPLES:
sage: from flatsurf import translation_surfaces sage: S = translation_surfaces.square_torus() sage: V = S.veech_group() sage: m = matrix([[1, 0], [0, 1]]) sage: m in V True
- __eq__(other)[source]¶
Return whether this group is indistinguishable from
other
.EXAMPLES:
sage: from flatsurf import translation_surfaces sage: S = translation_surfaces.square_torus() sage: S.veech_group() == S.veech_group() True
- __hash__()[source]¶
Return a hash value for this group that is compatible with
__eq__()
.EXAMPLES:
sage: from flatsurf import translation_surfaces sage: S = translation_surfaces.square_torus() sage: hash(S.veech_group()) == hash(S.veech_group()) True
- __module__ = 'flatsurf.geometry.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