flatsurf / sage-flatsurf

Flat surfaces in Sage
https://flatsurf.github.io/sage-flatsurf/
GNU General Public License v2.0
10 stars 10 forks source link

Cannot compute stratum of some translation surfaces #227

Open saraedum opened 1 year ago

saraedum commented 1 year ago

The following fails:

sage: from flatsurf import *
sage: import flipper
sage: t1 = (0r,1r,2r)
sage: t2 = (~0r,~1r,~2r)
sage: T = flipper.create_triangulation([t1,t2])
sage: L1 = T.lamination([1r,0r,1r])
sage: L2 = T.lamination([0r,1r,1r])
sage: h1 = L1.encode_twist()
sage: h2 = L2.encode_twist()
sage: h = h1*h2^(-1r)
sage: f = h.flat_structure()
sage: ts = translation_surfaces.from_flipper(h)
sage: ts.stratum()
NotImplementedError

@videlec wrote:

It is because there is no code to make the difference between translation and half-translation surfaces (when all angles are multiple of 2pi). In that very particular case, it is genus 1 and we know it must be translation. But in general it requires some homological computation. 9:16 PM To that purpose, we need to access the holonomy morphism H_1(S \ Sing; Z) -> R / Z which to a curve associates the rotation of the parallel transport along that curve (of course having it along a basis is enough). Such holonomy map is defined for any surface in the category of cone surfaces (and possibly more).

videlec commented 1 year ago

This problem is a particular case of the following : given a surface in category X, does there exists an isomorphic version that belongs to the subcategory Y ? (Here we are allowed to modify each polygon by an affine version but not to cut and paste them). In the ticket description X=half-translation surfaces and Y=translation surfaces.