Differences between revisions 3 and 4
Revision 3 as of 2010-10-09 19:17:56
Size: 3989
Editor: vdelecroix
Comment:
Revision 4 as of 2010-10-10 10:58:14
Size: 4023
Editor: slelievre
Comment: Fixed typos.
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
For general mathematic references see the [[https://lma.homelinux.org/wiki/FlatSurfaces/FlatSurfaces|Flat surfaces wiki]]. A flat surface can be seen either For general mathematical reference see the [[https://lma.homelinux.org/wiki/FlatSurfaces/FlatSurfaces|Flat surfaces wiki]]. A flat surface can be seen either
Line 7: Line 7:
 * as a flat metric with no holonomy on a compact surface,
 * as a Riemann surface together with a non zero Abelian (or quadratic) differential, 
 * as a flat metric with trivial SO(2) holonomy on a compact surface,
 * as a Riemann surface together with a nonzero Abelian (or quadratic) differential,
Line 11: Line 11:
This page is aimed to be a roadmap for the implementations of various algorithm related to flat surfaces and more generally geometry/combinatoric/dynamic of surfaces (Mapping class group, train track, pseudo-Anosov dynamic, ...). For the moment we share the [[http://wiki.sagemath.org/combinat|sage-combinat repository]] with mercurial for the development. This page is aimed as a roadmap for the implementation of various algorithms related to flat surfaces and more generally geometry/combinatorics/dynamics of surfaces (mapping class group, train tracks, pseudo-Anosov dynamics, ...). For the moment we share the [[http://wiki.sagemath.org/combinat|sage-combinat repository]] with mercurial for the development.
Line 13: Line 13:
For examples using the algorithm developed here see [[dynamics/examples]]. For examples of Sage code that uses the algorithms developed here, see [[dynamics/examples]].
Line 15: Line 15:
This project take part in the wider [[dynamics]] development. This project is part of the wider [[dynamics]] development.
Line 21: Line 21:
 * sage.combinat.flat_surfaces (which contains various generic objects)
 * sage.combinat.flat_surfaces.iet (for interval exchange transformations stuff)
 * sage.combinat.flat_surfaces.origamis (for origamis/square tiled surfaces stuff)
 * sage.combinat.flat_surfaces (various generic objects)
 * sage.combinat.flat_surfaces.iet (interval exchange transformations)
 * sage.combinat.flat_surfaces.origamis (origamis/square-tiled surfaces)
Line 29: Line 29:
 * representation of surface group into PSL(2,R)
 * fundamental domains of such groups / Poincare polygons / Dirichlet fundamental domains
 * representations of surface groups into PSL(2,R)
 * fundamental domains of such groups / Poincaré polygons / Dirichlet fundamental domains
Line 35: Line 35:
 * Joshua Bowman program on iso-Delaunay tessellations (written in Java)
 * Finish Anton Zorich port of Interval Exchange Transformations and Linear Involutions (written in Mathematica)
 * Anton Zorich program for computing approximation of various Lyapunov exponents (written in C and Mathematica)
 * Alex Eskin program for analyzing saddle connections direction in a surface (written in C++)
 * Joshua Bowman's program on iso-Delaunay tessellations (written in Java)
 * Finish porting Anton Zorich's programs on interval exchange transformations and linear involutions (written in Mathematica)
 * Anton Zorich's program for computing approximations of various Lyapunov exponents (written in C and Mathematica)
 * Alex Eskin's program for analyzing saddle connection directions in a surface (written in C++)
Line 47: Line 47:
 * Algebraic curve with Abelian or quadratic differential
 * Coverings (make it relative)... need to implement maps between translation surfaces
  * square tiled surfaces/origamis (covering of the torus) (almost in Sage)
 * algebraic curve with Abelian or quadratic differential
 * coverings (make it relative)... need to implement maps between translation surfaces
  * square-tiled surfaces/origamis (torus coverings) (almost in Sage)
Line 51: Line 51:
 * Unfoldings of rational billiards  * unfoldings of rational billiards
Line 55: Line 55:
 * computing fundamental group and relative homology and homology (as well as functors between them)
 * maps between flat surfaces (and functors to fundamental group and homologies)
 * compute fundamental group, relative homology, and homology (as well as functors between them)
 * maps between flat surfaces (and functors to fundamental groups and homologies)
Line 58: Line 58:
 * Siegel Veech constants  * Siegel-Veech constants
Line 61: Line 61:
=== Surface Group === === Surface groups ===
Line 63: Line 63:
They are needed from two point of vue: the group of the surface itself and its stabilizer under SL(2,R) or PSL(2,R) action. There must be some software for dealing with surface group. We need to look at They are needed from two points of view: the group of the surface itself and the flat surface's stabilizer under the action of SL(2,R) or PSL(2,R). There must be some software for dealing with surface groups. We need to look at
Line 65: Line 65:
 * [[http://www.warwick.ac.uk/~mareg/download/kbmag2/|kbmag]]: Knuth-Bendix in Monoids and Automatic Groups implemented by Derek Holt  * [[http://www.warwick.ac.uk/~mareg/download/kbmag2/|kbmag]]: Knuth-Bendix in monoids and automatic groups, implemented by Derek Holt
Line 74: Line 74:
The [[http://egl.math.umd.edu/|Experimental Geometry Lab]] (university of Maryland) published a lot of Mathematica package/worksheets to deal with Kleinian adn Fuchsian groups, hyperbolic tessellations, etc... The [[http://egl.math.umd.edu/|Experimental geometry lab]] (University of Maryland) published a lot of Mathematica packages/worksheets to deal with Kleinian and Fuchsian groups, hyperbolic tessellations, etc.

Flat surfaces in Sage

Introduction

For general mathematical reference see the Flat surfaces wiki. A flat surface can be seen either

  • as a union of polygons glued along pairs of parallel sides,
  • as a flat metric with trivial SO(2) holonomy on a compact surface,
  • as a Riemann surface together with a nonzero Abelian (or quadratic) differential,
  • ...

This page is aimed as a roadmap for the implementation of various algorithms related to flat surfaces and more generally geometry/combinatorics/dynamics of surfaces (mapping class group, train tracks, pseudo-Anosov dynamics, ...). For the moment we share the sage-combinat repository with mercurial for the development.

For examples of Sage code that uses the algorithms developed here, see dynamics/examples.

This project is part of the wider dynamics development.

General architecture

For now the main structure is as follows

  • sage.combinat.flat_surfaces (various generic objects)
  • sage.combinat.flat_surfaces.iet (interval exchange transformations)
  • sage.combinat.flat_surfaces.origamis (origamis/square-tiled surfaces)
  • sage.geometry.hyperbolic_geometry (hyperbolic spaces)
  • sage.groups.surface_gps (abstract surface groups)

Where do we put

  • representations of surface groups into PSL(2,R)
  • fundamental domains of such groups / Poincaré polygons / Dirichlet fundamental domains

Roadmap

Port of other programs

  • Joshua Bowman's program on iso-Delaunay tessellations (written in Java)
  • Finish porting Anton Zorich's programs on interval exchange transformations and linear involutions (written in Mathematica)
  • Anton Zorich's program for computing approximations of various Lyapunov exponents (written in C and Mathematica)
  • Alex Eskin's program for analyzing saddle connection directions in a surface (written in C++)

Different representations/implementations for flat surfaces

  • (convex) polygonal surface
    • rectangulated surface
      • suspension of iet (and li) (almost in Sage)
      • Thurston-Veech construction
    • triangulated surface
      • Delaunay surface (?)
  • algebraic curve with Abelian or quadratic differential
  • coverings (make it relative)... need to implement maps between translation surfaces
    • square-tiled surfaces/origamis (torus coverings) (almost in Sage)
    • hyperelliptic curves (specifying a double cover of the sphere)
  • unfoldings of rational billiards

Needed generic methods

  • switch between representations (the one to which everybody can be converted is triangulated flat surface)
  • compute fundamental group, relative homology, and homology (as well as functors between them)
  • maps between flat surfaces (and functors to fundamental groups and homologies)
  • action of SL(2,R) and isomorphisms (and functors)
  • Siegel-Veech constants
  • Lyapunov exponents

Surface groups

They are needed from two points of view: the group of the surface itself and the flat surface's stabilizer under the action of SL(2,R) or PSL(2,R). There must be some software for dealing with surface groups. We need to look at

  • kbmag: Knuth-Bendix in monoids and automatic groups, implemented by Derek Holt

Hyperbolic geometry

This part is roughly implemented in trac #9439

  • the three 2D models: hyperbolic plane, hyperbolic disc and the hyperboloïd
  • points, geodesics and polygonal domains
  • tessellations (covering of HH by finite area convex polygonal domains)
  • Fuchsian groups, their fundamental domains and their associated tessellations

The Experimental geometry lab (University of Maryland) published a lot of Mathematica packages/worksheets to deal with Kleinian and Fuchsian groups, hyperbolic tessellations, etc.

dynamics/FlatSurfaces (last edited 2016-05-29 20:20:43 by chapoton)