### Navigation

- index
- modules |
- next |
- previous |
- Discrete dynamics »
- Abelian differentials and flat surfaces »

# Strata of differentials on Riemann surfaces

The space of Abelian (or quadratic) differentials is stratified by the degrees of the zeroes (and simple poles for quadratic differentials). Each stratum has one, two or three connected components and each is associated to an (extended) Rauzy class. The `connected_components()` method (only available for Abelian stratum) give the decomposition of a stratum (which corresponds to the SAGE object `AbelianStratum`).

The work for Abelian differentials was done by Maxim Kontsevich and Anton Zorich in [KonZor03] and for quadratic differentials by Erwan Lanneau in [Lan08]. Zorich gave an algorithm to pass from a connected component of a stratum to the associated Rauzy class (for both interval exchange transformations and linear involutions) in [Zor08] and is implemented for Abelian stratum at different level (approximately one for each component):

- for connected stratum `representative()`
- for hyperellitic component `representative()`
- for non hyperelliptic component, the algorithm is the same as for connected component
- for odd component `representative()`
- for even component `representative()`

The inverse operation (pass from an interval exchange transformation to the connected component) is partially written in [KonZor03] and simply named here `connected_component()`.

All the code here was first available on Mathematica [ZS].

REFERENCES:

[KonZor03] | (1, 2) M. Kontsevich, A. Zorich “Connected components of the moduli space of Abelian differentials with prescripebd singularities” Invent. math. 153, 631-678 (2003)

[Lan08] | E. Lanneau “Connected components of the strata of the moduli spaces of quadratic differentials”, Annales sci. de l’ENS, serie 4, fascicule 1, 41, 1-56 (2008)

[Zor08] | (1, 2, 3, 4, 5) A. Zorich “Explicit Jenkins-Strebel representatives of all strata of Abelian and quadratic differentials”, Journal of Modern Dynamics, vol. 2, no 1, 139-185 (2008) (http://www.math.psu.edu/jmd)

[ZS] | Anton Zorich, “Generalized Permutation software” (http://perso.univ-rennes1.fr/anton.zorich/Software/software_en.html)

Note

The quadratic strata are not yet implemented.

AUTHORS:

- Vincent Delecroix (2009-09-29): initial version

EXAMPLES:

Construction of a stratum from a list of singularity degrees:

    sage: a = AbelianStratum(1,1)
    sage: print a
    H(1, 1)
    sage: print a.genus()
    2
    sage: print a.nintervals()
    5

    sage: a = AbelianStratum(4,3,2,1)
    sage: print a
    H(4, 3, 2, 1)
    sage: print a.genus()
    6
    sage: print a.nintervals()
    15

By convention, the degrees are always written in decreasing order:

    sage: a1 = AbelianStratum(4,3,2,1)
    sage: a1
    H(4, 3, 2, 1)
    sage: a2 = AbelianStratum(2,3,1,4)
    sage: a2
    H(4, 3, 2, 1)
    sage: a1 == a2
    True

It is also possible to consider stratum with an incoming or an outgoing separatrix marked (the aim of this consideration is to attach a specified degree at the left or the right of the associated interval exchange transformation):

    sage: a_out = AbelianStratum(1, 1, marked_separatrix='out')
    sage: a_out
    H^out(1, 1)
    sage: a_in = AbelianStratum(1, 1, marked_separatrix='in')
    sage: a_in
    H^in(1, 1)
    sage: a_out == a_in
    False

Get a list of strata with constraints on genus or on the number of intervals of a representative:

    sage: for a in AbelianStrata(genus=3):
    ....:     print a
    H(4)
    H(3, 1)
    H(2, 2)
    H(2, 1, 1)
    H(1, 1, 1, 1)

    sage: for a in AbelianStrata(nintervals=5):
    ....:     print a
    H^out(0, 2)
    H^out(2, 0)
    H^out(1, 1)
    H^out(0, 0, 0, 0)

    sage: for a in AbelianStrata(genus=2, nintervals=5):
    ....:     print a
    H^out(0, 2)
    H^out(2, 0)
    H^out(1, 1)

Obtains the connected components of a stratum:

    sage: a = AbelianStratum(0)
    sage: print a.connected_components()
    [H_hyp(0)]

    sage: a = AbelianStratum(6)
    sage: cc = a.connected_components()
    sage: print cc
    [H_hyp(6), H_odd(6), H_even(6)]
    sage: for c in cc:
    ....:     print c, "\n", c.representative(alphabet=range(1,9))
    H_hyp(6)
    1 2 3 4 5 6 7 8
    8 7 6 5 4 3 2 1
    H_odd(6)
    1 2 3 4 5 6 7 8
    4 3 6 5 8 7 2 1
    H_even(6)
    1 2 3 4 5 6 7 8
    6 5 4 3 8 7 2 1

    sage: a = AbelianStratum(1, 1, 1, 1)
    sage: print a.connected_components()
    [H_c(1, 1, 1, 1)]
    sage: c = a.connected_components()[0]
    sage: print c.representative(alphabet="abcdefghi")
    a b c d e f g h i
    e d c f i h g b a

The zero attached on the left of the associated Abelian permutation corresponds to the first singularity degree:

    sage: a = AbelianStratum(4, 2, marked_separatrix='out')
    sage: b = AbelianStratum(2, 4, marked_separatrix='out')
    sage: print a == b
    False
    sage: print a, ":", a.connected_components()
    H^out(4, 2) : [H_odd^out(4, 2), H_even^out(4, 2)]
    sage: print b, ":", b.connected_components()
    H^out(2, 4) : [H_odd^out(2, 4), H_even^out(2, 4)]
    sage: a_odd, a_even = a.connected_components()
    sage: b_odd, b_even = b.connected_components()

The representatives are hence different:

    sage: print a_odd.representative(alphabet=range(1,10))
    1 2 3 4 5 6 7 8 9
    4 3 6 5 7 9 8 2 1
    sage: print b_odd.representative(alphabet=range(1,10))
    1 2 3 4 5 6 7 8 9
    4 3 5 7 6 9 8 2 1

    sage: print a_even.representative(alphabet=range(1,10))
    1 2 3 4 5 6 7 8 9
    6 5 4 3 7 9 8 2 1
    sage: print b_even.representative(alphabet=range(1,10))
    1 2 3 4 5 6 7 8 9
    7 6 5 4 3 9 8 2 1

You can retrieve the decomposition of the irreducible Abelian permutations into Rauzy diagrams from the classification of strata:

    sage: a = AbelianStrata(nintervals=4)
    sage: l = sum([stratum.connected_components() for stratum in a], [])
    sage: n = map(lambda x: x.rauzy_diagram().cardinality(), l)
    sage: for c,i in zip(l,n):
    ....:     print c, ":", i
    H_hyp^out(2) : 7
    H_hyp^out(0, 0, 0) : 6
    sage: print sum(n)
    13

    sage: a = AbelianStrata(nintervals=5)
    sage: l = sum([stratum.connected_components() for stratum in a], [])
    sage: n = map(lambda x: x.rauzy_diagram().cardinality(), l)
    sage: for c,i in zip(l,n):
    ....:     print c, ":", i
    H_hyp^out(0, 2) : 11
    H_hyp^out(2, 0) : 35
    H_hyp^out(1, 1) : 15
    H_hyp^out(0, 0, 0, 0) : 10
    sage: print sum(n)
    71

    sage: a = AbelianStrata(nintervals=6)
    sage: l = sum([stratum.connected_components() for stratum in a], [])
    sage: n = map(lambda x: x.rauzy_diagram().cardinality(), l)
    sage: for c,i in zip(l,n):
    ....:     print c, ":", i
    H_hyp^out(4) : 31
    H_odd^out(4) : 134
    H_hyp^out(0, 2, 0) : 66
    H_hyp^out(2, 0, 0) : 105
    H_hyp^out(0, 1, 1) : 20
    H_hyp^out(1, 1, 0) : 90
    H_hyp^out(0, 0, 0, 0, 0) : 15
    sage: print sum(n)
    461

`sage.dynamics.flat_surfaces.strata.``AbelianStrata`(genus=None, nintervals=None, marked_separatrix=None)

  Abelian strata.

  INPUT:

  - `genus` - a non negative integer or `None`
  - `nintervals` - a non negative integer or `None`
  - `marked_separatrix` - ‘no’ (for no marking), ‘in’ (for marking an incoming separatrix) or ‘out’ (for marking an outgoing separatrix)

  EXAMPLES:

  Abelian strata with a given genus:

      sage: for s in AbelianStrata(genus=1): print s
      H(0)

      sage: for s in AbelianStrata(genus=2): print s
      H(2)
      H(1, 1)

      sage: for s in AbelianStrata(genus=3): print s
      H(4)
      H(3, 1)
      H(2, 2)
      H(2, 1, 1)
      H(1, 1, 1, 1)

      sage: for s in AbelianStrata(genus=4): print s
      H(6)
      H(5, 1)
      H(4, 2)
      H(4, 1, 1)
      H(3, 3)
      H(3, 2, 1)
      H(3, 1, 1, 1)
      H(2, 2, 2)
      H(2, 2, 1, 1)
      H(2, 1, 1, 1, 1)
      H(1, 1, 1, 1, 1, 1)

  Abelian strata with a given number of intervals:

      sage: for s in AbelianStrata(nintervals=2): print s
      H^out(0)

      sage: for s in AbelianStrata(nintervals=3): print s
      H^out(0, 0)

      sage: for s in AbelianStrata(nintervals=4): print s
      H^out(2)
      H^out(0, 0, 0)

      sage: for s in AbelianStrata(nintervals=5): print s
      H^out(0, 2)
      H^out(2, 0)
      H^out(1, 1)
      H^out(0, 0, 0, 0)

  Abelian strata with both constraints:

      sage: for s in AbelianStrata(genus=2, nintervals=4): print s
      H^out(2)

      sage: for s in AbelianStrata(genus=5, nintervals=12): print s
      H^out(8, 0, 0)
      H^out(0, 8, 0)
      H^out(0, 7, 1)
      H^out(1, 7, 0)
      H^out(7, 1, 0)
      H^out(0, 6, 2)
      H^out(2, 6, 0)
      H^out(6, 2, 0)
      H^out(1, 6, 1)
      H^out(6, 1, 1)
      H^out(0, 5, 3)
      H^out(3, 5, 0)
      H^out(5, 3, 0)
      H^out(1, 5, 2)
      H^out(2, 5, 1)
      H^out(5, 2, 1)
      H^out(0, 4, 4)
      H^out(4, 4, 0)
      H^out(1, 4, 3)
      H^out(3, 4, 1)
      H^out(4, 3, 1)
      H^out(2, 4, 2)
      H^out(4, 2, 2)
      H^out(2, 3, 3)
      H^out(3, 3, 2)

class `sage.dynamics.flat_surfaces.strata.``AbelianStrata_all`(category=None, *keys, **opts)

  Bases: `sage.combinat.combinat.InfiniteAbstractCombinatorialClass`

  Abelian strata.

class `sage.dynamics.flat_surfaces.strata.``AbelianStrata_d`(nintervals=None, marked_separatrix=None)

  Bases: `sage.combinat.combinat.CombinatorialClass`

  Strata with constraint number of intervals.

  INPUT:

  - `nintervals` - an integer greater than 1
  - `marked_separatrix` - ‘no’, ‘out’ or ‘in’

class `sage.dynamics.flat_surfaces.strata.``AbelianStrata_g`(genus=None, marked_separatrix=None)

  Bases: `sage.combinat.combinat.CombinatorialClass`

  Stratas of genus g surfaces.

  INPUT:

  - `genus` - a non negative integer
  - `marked_separatrix` - ‘no’, ‘out’ or ‘in’

class `sage.dynamics.flat_surfaces.strata.``AbelianStrata_gd`(genus=None, nintervals=None, marked_separatrix=None)

  Bases: `sage.combinat.combinat.CombinatorialClass`

  Abelian strata of prescribed genus and number of intervals.

  INPUT:

  - `genus` - integer: the genus of the surfaces
  - `nintervals` - integer: the number of intervals
  - `marked_separatrix` - ‘no’, ‘in’ or ‘out’

class `sage.dynamics.flat_surfaces.strata.``AbelianStratum`(*l, **d)

  Bases: `sage.structure.sage_object.SageObject`

  Stratum of Abelian differentials.

  A stratum with a marked outgoing separatrix corresponds to Rauzy diagram with left induction, a stratum with marked incoming separatrix correspond to Rauzy diagram with right induction. If there is no marked separatrix, the associated Rauzy diagram is the extended Rauzy diagram (consideration of the `sage.dynamics.interval_exchanges.template.Permutation.symmetric()` operation of Boissy-Lanneau).

  When you want to specify a marked separatrix, the degree on which it is is the first term of your degrees list.

  INPUT:

  - `marked_separatrix` - `None` (default) or ‘in’ (for incoming separatrix) or ‘out’ (for outgoing separatrix).

  EXAMPLES:

  Creation of an Abelian stratum and get its connected components:

      sage: a = AbelianStratum(2, 2)
      sage: print a
      H(2, 2)
      sage: a.connected_components()
      [H_hyp(2, 2), H_odd(2, 2)]

  Specification of marked separatrix:

      sage: a = AbelianStratum(4,2,marked_separatrix='in')
      sage: print a
      H^in(4, 2)
      sage: b = AbelianStratum(2,4,marked_separatrix='in')
      sage: print b
      H^in(2, 4)
      sage: a == b
      False

      sage: a = AbelianStratum(4,2,marked_separatrix='out')
      sage: print a
      H^out(4, 2)
      sage: b = AbelianStratum(2,4,marked_separatrix='out')
      sage: print b
      H^out(2, 4)
      sage: a == b
      False

  Get a representative of a connected component:

      sage: a = AbelianStratum(2,2)
      sage: a_hyp, a_odd = a.connected_components()
      sage: print a_hyp.representative()
      1 2 3 4 5 6 7
      7 6 5 4 3 2 1
      sage: print a_odd.representative()
      0 1 2 3 4 5 6
      3 2 4 6 5 1 0

  You can choose the alphabet:

      sage: print a_odd.representative(alphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZ")
      A B C D E F G
      D C E G F B A

  By default, you get a reduced permutation, but you can specify that you want a labelled one:

      sage: p_reduced = a_odd.representative()
      sage: p_labelled = a_odd.representative(reduced=False)

  `connected_components`()

    Lists the connected components of the Stratum.

    OUTPUT:

    list – a list of connected components of stratum

    EXAMPLES:

        sage: AbelianStratum(0).connected_components()
        [H_hyp(0)]

        sage: AbelianStratum(2).connected_components()
        [H_hyp(2)]
        sage: AbelianStratum(1,1).connected_components()
        [H_hyp(1, 1)]

        sage: AbelianStratum(4).connected_components()
        [H_hyp(4), H_odd(4)]
        sage: AbelianStratum(3,1).connected_components()
        [H_c(3, 1)]
        sage: AbelianStratum(2,2).connected_components()
        [H_hyp(2, 2), H_odd(2, 2)]
        sage: AbelianStratum(2,1,1).connected_components()
        [H_c(2, 1, 1)]
        sage: AbelianStratum(1,1,1,1).connected_components()
        [H_c(1, 1, 1, 1)]

  `genus`()

    Returns the genus of the stratum.

    OUTPUT:

    integer – the genus

    EXAMPLES:

        sage: AbelianStratum(0).genus()
        1
        sage: AbelianStratum(1,1).genus()
        2
        sage: AbelianStratum(3,2,1).genus()
        4

  `is_connected`()

    Tests if the strata is connected.

    OUTPUT:

    boolean – `True` if it is connected else `False`

    EXAMPLES:

        sage: AbelianStratum(2).is_connected()
        True
        sage: AbelianStratum(2).connected_components()
        [H_hyp(2)]

        sage: AbelianStratum(2,2).is_connected()
        False
        sage: AbelianStratum(2,2).connected_components()
        [H_hyp(2, 2), H_odd(2, 2)]

  `nintervals`()

    Returns the number of intervals of any iet of the strata.

    OUTPUT:

    integer – the number of intervals for any associated iet

    EXAMPLES:

        sage: AbelianStratum(0).nintervals()
        2
        sage: AbelianStratum(0,0).nintervals()
        3
        sage: AbelianStratum(2).nintervals()
        4
        sage: AbelianStratum(1,1).nintervals()
        5

`sage.dynamics.flat_surfaces.strata.``CCA`

  alias of `ConnectedComponentOfAbelianStratum`

class `sage.dynamics.flat_surfaces.strata.``ConnectedComponentOfAbelianStratum`(parent)

  Bases: `sage.structure.sage_object.SageObject`

  Connected component of Abelian stratum.

  Warning

  Internal class! Do not use directly!

  TESTS:

  Tests for outgoing marked separatrices:

      sage: a = AbelianStratum(4,2,0,marked_separatrix='out')
      sage: a_odd, a_even = a.connected_components()
      sage: a_odd.representative().attached_out_degree()
      4
      sage: a_even.representative().attached_out_degree()
      4

      sage: a = AbelianStratum(2,4,0,marked_separatrix='out')
      sage: a_odd, a_even = a.connected_components()
      sage: a_odd.representative().attached_out_degree()
      2
      sage: a_even.representative().attached_out_degree()
      2

      sage: a = AbelianStratum(0,4,2,marked_separatrix='out')
      sage: a_odd, a_even = a.connected_components()
      sage: a_odd.representative().attached_out_degree()
      0
      sage: a_even.representative().attached_out_degree()
      0

      sage: a = AbelianStratum(3,2,1,marked_separatrix='out')
      sage: a_c = a.connected_components()[0]
      sage: a_c.representative().attached_out_degree()
      3

      sage: a = AbelianStratum(2,3,1,marked_separatrix='out')
      sage: a_c = a.connected_components()[0]
      sage: a_c.representative().attached_out_degree()
      2

      sage: a = AbelianStratum(1,3,2,marked_separatrix='out')
      sage: a_c = a.connected_components()[0]
      sage: a_c.representative().attached_out_degree()
      1

  Tests for incoming separatrices:

      sage: a = AbelianStratum(4,2,0,marked_separatrix='in')
      sage: a_odd, a_even = a.connected_components()
      sage: a_odd.representative().attached_in_degree()
      4
      sage: a_even.representative().attached_in_degree()
      4

      sage: a = AbelianStratum(2,4,0,marked_separatrix='in')
      sage: a_odd, a_even = a.connected_components()
      sage: a_odd.representative().attached_in_degree()
      2
      sage: a_even.representative().attached_in_degree()
      2

      sage: a = AbelianStratum(0,4,2,marked_separatrix='in')
      sage: a_odd, a_even = a.connected_components()
      sage: a_odd.representative().attached_in_degree()
      0
      sage: a_even.representative().attached_in_degree()
      0

      sage: a = AbelianStratum(3,2,1,marked_separatrix='in')
      sage: a_c = a.connected_components()[0]
      sage: a_c.representative().attached_in_degree()
      3

      sage: a = AbelianStratum(2,3,1,marked_separatrix='in')
      sage: a_c = a.connected_components()[0]
      sage: a_c.representative().attached_in_degree()
      2

      sage: a = AbelianStratum(1,3,2,marked_separatrix='in')
      sage: a_c = a.connected_components()[0]
      sage: a_c.representative().attached_in_degree()
      1

  `genus`()

    Returns the genus of the surfaces in this connected component.

    OUTPUT:

    integer – the genus of the surface

    EXAMPLES:

        sage: a = AbelianStratum(6,4,2,0,0)
        sage: c_odd, c_even = a.connected_components()
        sage: c_odd.genus()
        7
        sage: c_even.genus()
        7

        sage: a = AbelianStratum([1]*8)
        sage: c = a.connected_components()[0]
        sage: c.genus()
        5

  `nintervals`()

    Returns the number of intervals of the representative.

    OUTPUT:

    integer – the number of intervals in any representative

    EXAMPLES:

        sage: a = AbelianStratum(6,4,2,0,0)
        sage: c_odd, c_even = a.connected_components()
        sage: c_odd.nintervals()
        18
        sage: c_even.nintervals()
        18

        sage: a = AbelianStratum([1]*8)
        sage: c = a.connected_components()[0]
        sage: c.nintervals()
        17

  `parent`()

    The stratum of this component

    OUTPUT:

    stratum - the stratum where this component leaves

    EXAMPLES:

        sage: p = iet.Permutation('a b','b a')
        sage: c = p.connected_component()
        sage: c.parent()
        H(0)

  `rauzy_diagram`(reduced=True)

    Returns the Rauzy diagram associated to this connected component.

    OUTPUT:

    rauzy diagram – the Rauzy diagram associated to this stratum

    EXAMPLES:

        sage: c = AbelianStratum(0).connected_components()[0]
        sage: r = c.rauzy_diagram()

  `representative`(reduced=True, alphabet=None)

    Returns the Zorich representative of this connected component.

    Zorich constructs explicitely interval exchange transformations for each stratum in [Zor08].

    INPUT:

    - `reduced` - boolean (default: `True`): whether you obtain a reduced or labelled permutation
    - `alphabet` - an alphabet or `None`: whether you want to specify an alphabet for your permutation

    OUTPUT:

    permutation – a permutation which lives in this component

    EXAMPLES:

        sage: c = AbelianStratum(1,1,1,1).connected_components()[0]
        sage: print c
        H_c(1, 1, 1, 1)
        sage: p = c.representative(alphabet=range(9))
        sage: print p
        0 1 2 3 4 5 6 7 8
        4 3 2 5 8 7 6 1 0
        sage: p.connected_component()
        H_c(1, 1, 1, 1)

`sage.dynamics.flat_surfaces.strata.``EvenCCA`

  alias of `EvenConnectedComponentOfAbelianStratum`

class `sage.dynamics.flat_surfaces.strata.``EvenConnectedComponentOfAbelianStratum`(parent)

  Bases: `sage.dynamics.flat_surfaces.strata.ConnectedComponentOfAbelianStratum`

  Connected component of Abelian stratum with even spin structure.

  Warning

  Internal class! Do not use directly!

  `representative`(reduced=True, alphabet=None)

    Returns the Zorich representative of this connected component.

    Zorich constructs explicitely interval exchange transformations for each stratum in [Zor08].

    EXAMPLES:

        sage: c = AbelianStratum(6).connected_components()[2]
        sage: c
        H_even(6)
        sage: p = c.representative(alphabet=range(8))
        sage: p
        0 1 2 3 4 5 6 7
        5 4 3 2 7 6 1 0
        sage: p.connected_component()
        H_even(6)

        sage: c = AbelianStratum(4,4).connected_components()[2]
        sage: c
        H_even(4, 4)
        sage: p = c.representative(alphabet=range(11))
        sage: p
        0 1 2 3 4 5 6 7 8 9 10
        5 4 3 2 6 8 7 10 9 1 0
        sage: p.connected_component()
        H_even(4, 4)

`sage.dynamics.flat_surfaces.strata.``HypCCA`

  alias of `HypConnectedComponentOfAbelianStratum`

class `sage.dynamics.flat_surfaces.strata.``HypConnectedComponentOfAbelianStratum`(parent)

  Bases: `sage.dynamics.flat_surfaces.strata.ConnectedComponentOfAbelianStratum`

  Hyperelliptic component of Abelian stratum.

  Warning

  Internal class! Do not use directly!

  `representative`(reduced=True, alphabet=None)

    Returns the Zorich representative of this connected component.

    Zorich constructs explicitely interval exchange transformations for each stratum in [Zor08].

    INPUT:

    - `reduced` - boolean (defaut: `True`): whether you obtain a reduced or labelled permutation
    - `alphabet` - alphabet or `None` (defaut: `None`): whether you want to specify an alphabet for your representative

    EXAMPLES:

        sage: c = AbelianStratum(0).connected_components()[0]
        sage: c
        H_hyp(0)
        sage: p = c.representative(alphabet="01")
        sage: p
        0 1
        1 0
        sage: p.connected_component()
        H_hyp(0)

        sage: c = AbelianStratum(0,0).connected_components()[0]
        sage: c
        H_hyp(0, 0)
        sage: p = c.representative(alphabet="abc")
        sage: p
        a b c
        c b a
        sage: p.connected_component()
        H_hyp(0, 0)

        sage: c = AbelianStratum(2).connected_components()[0]
        sage: c
        H_hyp(2)
        sage: p = c.representative(alphabet="ABCD")
        sage: p
        A B C D
        D C B A
        sage: p.connected_component()
        H_hyp(2)

        sage: c = AbelianStratum(1,1).connected_components()[0]
        sage: c
        H_hyp(1, 1)
        sage: p = c.representative(alphabet="01234")
        sage: p
        0 1 2 3 4
        4 3 2 1 0
        sage: p.connected_component()
        H_hyp(1, 1)

`sage.dynamics.flat_surfaces.strata.``NonHypCCA`

  alias of `NonHypConnectedComponentOfAbelianStratum`

class `sage.dynamics.flat_surfaces.strata.``NonHypConnectedComponentOfAbelianStratum`(parent)

  Bases: `sage.dynamics.flat_surfaces.strata.ConnectedComponentOfAbelianStratum`

  Non hyperelliptic component of Abelian stratum.

  Warning

  Internal class! Do not use directly!

`sage.dynamics.flat_surfaces.strata.``OddCCA`

  alias of `OddConnectedComponentOfAbelianStratum`

class `sage.dynamics.flat_surfaces.strata.``OddConnectedComponentOfAbelianStratum`(parent)

  Bases: `sage.dynamics.flat_surfaces.strata.ConnectedComponentOfAbelianStratum`

  Connected component of an Abelian stratum with odd spin parity.

  Warning

  Internal class! Do not use directly!

  `representative`(reduced=True, alphabet=None)

    Returns the Zorich representative of this connected component.

    Zorich constructs explicitely interval exchange transformations for each stratum in [Zor08].

    EXAMPLES:

        sage: a = AbelianStratum(6).connected_components()[1]
        sage: print a.representative(alphabet=range(8))
        0 1 2 3 4 5 6 7
        3 2 5 4 7 6 1 0

        sage: a = AbelianStratum(4,4).connected_components()[1]
        sage: print a.representative(alphabet=range(11))
        0 1 2 3 4 5 6 7 8 9 10
        3 2 5 4 6 8 7 10 9 1 0

### Navigation

- index
- modules |
- next |
- previous |
- Discrete dynamics »
- Abelian differentials and flat surfaces »