Differences between revisions 1 and 5 (spanning 4 versions)
Revision 1 as of 2010-10-09 11:21:09
Size: 3909
Editor: vdelecroix
Comment:
Revision 5 as of 2010-10-10 14:18:07
Size: 4016
Editor: vdelecroix
Comment:
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, ...).
Line 13: Line 13:
This project take part in the wider [[SageDynamicsProject]] == Quick links ==

  * [[dynamics]]: the wider project sage-dynamics (look at it in particular installation)
  * [[dynamics/examples]]: examples of code that uses the algorithms developed here
Line 19: Line 22:
 * 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 25: Line 28:
Where do we put Where do we put?
Line 27: Line 30:
 * 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 32: Line 35:
=== Port of other programs ===
 * 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++)
== Port of other programs ==
Line 38: Line 37:
=== Different representations/implementations for flat surfaces ===  * 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 ==
Line 40: Line 45:
  * 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 (covering of the torus) (almost in Sage)
  * hyperelliptic curves (specifying a double cover of the sphere)
 * Unfoldings of rational billiards
   * 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 homomorphism between translation surfaces
   * square-tiled surfaces/origamis (torus coverings) (almost in Sage)
   * pillow-case covers (almost in Sage)
   
* hyperelliptic curves (specifying a double cover of the sphere)
 * unfoldings of rational billiards
Line 51: Line 57:
=== Needed generic methods ===
 * switch between representations (the one to which everybody can be converted is triangulated flat surface)
 * 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)
 * action of SL(2,R) and isomorphisms (and functors)
 * Siegel Veech constants
 * Lyapunov exponents
== Needed generic methods ==
Line 59: Line 59:
=== Surface Group ===   * 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 and volumes
  * Lyapunov exponents
Line 61: Line 66:
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 == Surface groups ==
Line 63: Line 68:
 * [[http://www.warwick.ac.uk/~mareg/download/kbmag2/|kbmag]]: Knuth-Bendix in Monoids and Automatic Groups implemented by Derek Holt 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 70:
=== Hyperbolic geometry ===  * [[http://www.warwick.ac.uk/~mareg/download/kbmag2/|kbmag]]: Knuth-Bendix in monoids and automatic groups, implemented by Derek Holt

== Hyperbolic geometry ==
Line 67: Line 74:
 * 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
Line 72: Line 75:
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 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 [[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, ...).

  • dynamics: the wider project sage-dynamics (look at it in particular installation)

  • dynamics/examples: examples of code that uses the algorithms developed here

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 homomorphism between translation surfaces
    • square-tiled surfaces/origamis (torus coverings) (almost in Sage)
    • pillow-case covers (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 and volumes
  • 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)