sine-Gordon Y-system plotter

This class builds the triangulations associated to sine-Gordon and reduced sine-Gordon Y-systems as constructed in [NS].

AUTHORS:

  • Salvatore Stella (2014-07-18): initial version

EXAMPLES:

A reduced sine-Gordon example with 3 generations:

sage: Y = SineGordonYsystem('A',(6,4,3)); Y
A sine-Gordon Y-system of type A with defining integer tuple (6, 4, 3)
sage: Y.plot()     #not tested

The same integer tuple but for the non-reduced case:

sage: Y = SineGordonYsystem('D',(6,4,3)); Y
A sine-Gordon Y-system of type D with defining integer tuple (6, 4, 3)
sage: Y.plot()     #not tested

Todo

The code for plotting is extremely slow.

REFERENCES:

[NS](1, 2, 3, 4, 5) T. Nakanishi, S. Stella, Wonder of sine-Gordon Y-systems, to appear in Trans. Amer. Math. Soc., arXiv 1212.6853
class sage.combinat.sine_gordon.SineGordonYsystem(X, na)

Bases: sage.structure.sage_object.SageObject

A class to model a (reduced) sine-Gordon Y-system

Note that the generations, together with all integer tuples, in this implementation are numbered from 0 while in [NS] they are numbered from 1

INPUT:

  • X – the type of the Y-system to construct (either ‘A’ or ‘D’)
  • na – the tuple of positive integers defining the Y-system with na[0] > 2

See [NS]

EXAMPLES:

sage: Y = SineGordonYsystem('A',(6,4,3)); Y
A sine-Gordon Y-system of type A with defining integer tuple (6, 4, 3)
sage: Y.intervals()
(((0, 0, 'R'),),
 ((0, 17, 'L'),
  (17, 34, 'L'),
...
  (104, 105, 'R'),
  (105, 0, 'R')))
sage: Y.triangulation()
((17, 89),
 (17, 72),
 (34, 72),
...
 (102, 105),
 (103, 105))
sage: Y.plot()     #not tested
F()

Return the number of generations in self.

EXAMPLES:

sage: Y = SineGordonYsystem('A',(6,4,3))
sage: Y.F()
3
intervals()

Return, divided by generation, the list of intervals used to construct the initial triangulation.

Each such interval is a triple (p, q, X) where p and q are the two extremal vertices of the interval and X is the type of the interval (one of ‘L’, ‘R’, ‘NL’, ‘NR’).

ALGORITHM:

The algorithm used here is the one described in section 5.1 of [NS]. The only difference is that we get rid of the special case of the first generation by treating the whole disk as a type ‘R’ interval.

EXAMPLES:

sage: Y = SineGordonYsystem('A',(6,4,3))
sage: Y.intervals()
(((0, 0, 'R'),),
 ((0, 17, 'L'),
  (17, 34, 'L'),
...
  (104, 105, 'R'),
  (105, 0, 'R')))
na()

Return the sequence of the integers \(n_a\) defining self.

EXAMPLES:

sage: Y = SineGordonYsystem('A',(6,4,3))
sage: Y.na()
(6, 4, 3)
pa()

Return the sequence of integers p_a, i.e. the total number of intervals of types ‘NL’ and ‘NR’ in the (a+1)-th generation.

EXAMPLES:

sage: Y = SineGordonYsystem('A',(6,4,3))
sage: Y.pa()
(1, 6, 25)
plot(**kwds)

Plot the initial triangulation associated to self.

INPUT:

  • radius - the radius of the disk; by default the length of the circle is the number of vertices
  • points_color - the color of the vertices; default ‘black’
  • points_size - the size of the vertices; default 7
  • triangulation_color - the color of the arcs; default ‘black’
  • triangulation_thickness - the thickness of the arcs; default 0.5
  • shading_color - the color of the shading used on neuter intervals; default ‘lightgray’
  • reflections_color - the color of the reflection axes; default ‘blue’
  • reflections_thickness - the thickness of the reflection axes; default 1

EXAMPLES:

sage: Y = SineGordonYsystem('A',(6,4,3))
sage: Y.plot()  # long time 2s
Graphics object consisting of 219 graphics primitives
qa()

Return the sequence of integers q_a, i.e. the total number of intervals of types ‘L’ and ‘R’ in the (a+1)-th generation.

EXAMPLES:

sage: Y = SineGordonYsystem('A',(6,4,3))
sage: Y.qa()
(6, 25, 81)
r()

Return the number of vertices in the polygon realizing self.

EXAMPLES:

sage: Y = SineGordonYsystem('A',(6,4,3))
sage: Y.r()
106
rk()

Return the sequence of integers r^{(k)}, i.e. the width of an interval of type ‘L’ or ‘R’ in the k-th generation.

EXAMPLES:

sage: Y = SineGordonYsystem('A',(6,4,3))
sage: Y.rk()
(106, 17, 4)
triangulation()

Return the initial triangulation of the polygon realizing self as a tuple of pairs of vertices.

Warning

In type ‘D’ the returned triangulation does NOT contain the two radii.

ALGORITHM:

We implement the four cases described by Figure 14 in [NS].

EXAMPLES:

sage: Y = SineGordonYsystem('A',(6,4,3))
sage: Y.triangulation()
((17, 89),
 (17, 72),
...
 (102, 105),
 (103, 105))
type()

Return the type of self.

EXAMPLES:

sage: Y = SineGordonYsystem('A',(6,4,3))
sage: Y.type()
'A'
vertices()

Return the vertices of the polygon realizing self as the ring of integers modulo self.r().

EXAMPLES:

sage: Y = SineGordonYsystem('A',(6,4,3))
sage: Y.vertices()
Ring of integers modulo 106