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
>>> from sage.all import *
>>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3))); Y
A sine-Gordon Y-system of type A with defining integer tuple (6, 4, 3)
>>> Y.plot()     #not tested
Y = SineGordonYsystem('A',(6,4,3)); Y
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
>>> from sage.all import *
>>> Y = SineGordonYsystem('D',(Integer(6),Integer(4),Integer(3))); Y
A sine-Gordon Y-system of type D with defining integer tuple (6, 4, 3)
>>> Y.plot()     #not tested
Y = SineGordonYsystem('D',(6,4,3)); Y
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)[source]

Bases: 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
>>> from sage.all import *
>>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3))); Y
A sine-Gordon Y-system of type A with defining integer tuple (6, 4, 3)
>>> Y.intervals()
(((0, 0, 'R'),),
 ((0, 17, 'L'),
  (17, 34, 'L'),
...
  (104, 105, 'R'),
  (105, 0, 'R')))
>>> Y.triangulation()
((17, 89),
 (17, 72),
 (34, 72),
...
 (102, 105),
 (103, 105))
>>> Y.plot()     #not tested
Y = SineGordonYsystem('A',(6,4,3)); Y
Y.intervals()
Y.triangulation()
Y.plot()     #not tested
F()[source]

Return the number of generations in self.

EXAMPLES:

sage: Y = SineGordonYsystem('A',(6,4,3))
sage: Y.F()
3
>>> from sage.all import *
>>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3)))
>>> Y.F()
3
Y = SineGordonYsystem('A',(6,4,3))
Y.F()
intervals()[source]

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')))
>>> from sage.all import *
>>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3)))
>>> Y.intervals()
(((0, 0, 'R'),),
 ((0, 17, 'L'),
  (17, 34, 'L'),
...
  (104, 105, 'R'),
  (105, 0, 'R')))
Y = SineGordonYsystem('A',(6,4,3))
Y.intervals()
na()[source]

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

EXAMPLES:

sage: Y = SineGordonYsystem('A',(6,4,3))
sage: Y.na()
(6, 4, 3)
>>> from sage.all import *
>>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3)))
>>> Y.na()
(6, 4, 3)
Y = SineGordonYsystem('A',(6,4,3))
Y.na()
pa()[source]

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)
>>> from sage.all import *
>>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3)))
>>> Y.pa()
(1, 6, 25)
Y = SineGordonYsystem('A',(6,4,3))
Y.pa()
plot(**kwds)[source]

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)                        # needs sage.plot
Graphics object consisting of 219 graphics primitives
>>> from sage.all import *
>>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3)))
>>> Y.plot()                      # long time (2s)                        # needs sage.plot
Graphics object consisting of 219 graphics primitives
Y = SineGordonYsystem('A',(6,4,3))
Y.plot()                      # long time (2s)                        # needs sage.plot
qa()[source]

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)
>>> from sage.all import *
>>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3)))
>>> Y.qa()
(6, 25, 81)
Y = SineGordonYsystem('A',(6,4,3))
Y.qa()
r()[source]

Return the number of vertices in the polygon realizing self.

EXAMPLES:

sage: Y = SineGordonYsystem('A',(6,4,3))
sage: Y.r()
106
>>> from sage.all import *
>>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3)))
>>> Y.r()
106
Y = SineGordonYsystem('A',(6,4,3))
Y.r()
rk()[source]

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)
>>> from sage.all import *
>>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3)))
>>> Y.rk()
(106, 17, 4)
Y = SineGordonYsystem('A',(6,4,3))
Y.rk()
triangulation()[source]

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))
>>> from sage.all import *
>>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3)))
>>> Y.triangulation()
((17, 89),
 (17, 72),
...
 (102, 105),
 (103, 105))
Y = SineGordonYsystem('A',(6,4,3))
Y.triangulation()
type()[source]

Return the type of self.

EXAMPLES:

sage: Y = SineGordonYsystem('A',(6,4,3))
sage: Y.type()
'A'
>>> from sage.all import *
>>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3)))
>>> Y.type()
'A'
Y = SineGordonYsystem('A',(6,4,3))
Y.type()
vertices()[source]

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
>>> from sage.all import *
>>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3)))
>>> Y.vertices()
Ring of integers modulo 106
Y = SineGordonYsystem('A',(6,4,3))
Y.vertices()