Differences between revisions 4 and 5
Revision 4 as of 2010-10-10 10:58:14
Size: 4023
Editor: slelievre
Comment: Fixed typos.
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 11: Line 11:
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. 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:
For examples of Sage code that uses the algorithms developed here, see [[dynamics/examples]]. == Quick links ==
Line 15: Line 15:
This project is part of the wider [[dynamics]] development.   * [[dynamics]]: the wider project sage-dynamics (look at it in particular installation)
  * [[dynamics/examples]]: examples of code that uses the algorithms developed here
Line 27: Line 28:
Where do we put Where do we put?
Line 34: Line 35:
=== Port of other programs === == Port of other programs ==
Line 40: Line 42:
=== Different representations/implementations for flat surfaces === == Different representations/implementations for flat surfaces ==
Line 42: Line 45:
  * rectangulated surface
   * suspension of iet (and li) (almost in Sage)
   * Thurston-Veech construction
  * triangulated surface
   * Delaunay surface (?)
  * rectangulated surface
   * suspension of iet (and li) (almost in Sage)
     * Thurston-Veech construction
   * triangulated surface
     * Delaunay surface (?)
Line 48: Line 51:
 * 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)
 * 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)
Line 53: Line 57:
=== 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
== Needed generic methods ==
Line 61: Line 59:
=== Surface groups ===   * 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 ==
Line 67: Line 72:
=== Hyperbolic geometry === == Hyperbolic geometry ==
Line 69: 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

 
* 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

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)