Differences between revisions 1 and 2
Revision 1 as of 2010-10-09 11:21:09
Size: 3909
Editor: vdelecroix
Comment:
Revision 2 as of 2010-10-09 11:22:19
Size: 3911
Editor: vdelecroix
Comment:
Deletions are marked like this. Additions are marked like this.
Line 13: Line 13:
This project take part in the wider [[SageDynamicsProject]] This project take part in the wider [[dynamics]] development.

Flat surfaces in Sage

Introduction

For general mathematic references 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 no holonomy on a compact surface,
  • as a Riemann surface together with a non zero Abelian (or quadratic) differential,
  • ...

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 sage-combinat repository with mercurial for the development.

This project take part in the wider dynamics development.

General architecture

For now the main structure is as follows

  • 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.geometry.hyperbolic_geometry (hyperbolic spaces)
  • sage.groups.surface_gps (abstract surface groups)

Where do we put

  • representation of surface group into PSL(2,R)
  • fundamental domains of such groups / Poincare polygons / Dirichlet fundamental domains

Roadmap

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++)

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 (covering of the torus) (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)
  • 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

Surface Group

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

  • 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 package/worksheets to deal with Kleinian adn Fuchsian groups, hyperbolic tessellations, etc...

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