Tropical Secant Graphs of Monomial Curves
Tropical Secant Graphs of
Monomial Curves
Maria Angelica Cueto and Shaowei Lin
Disclaimer
The purpose of this website is to make available unpolished code that we wrote to
compute tropical secant graphs. However, there is no guarantee of
the correctness of the code, so use at your own risk.
Research Paper
The research paper "Tropical Secant Graphs of Monomial Curves" can be found here.
Singular Library
The Singular library can be downloaded here: tropsec.lib.
Put this file in your work directory and type the command
> LIB "tropsec.lib";
when you start your Singular session.
Tropical Secant Graph
To compute the tropical secant graph described in Definition 6.6 of the paper, use the command list gph = tropsec(exps);
where exps is an integer vector of exponents describing a monomial curve. This graph encodes the tropicalization of the first secant variety of the monomial curve described by exps. The vector exps must have at least four entries, start with zero as the first entry, be strictly increasing and the gcd of all the entries must be one.
It returns a list gph with two integer matrices.
- gph[1] is an ordered list of rays in the tropical secant
graph. Each row of the matrix gives the coordinates of a ray.
- gph[2] is an ordered list of edges in the tropical secant graph. Each row corresponds to an edge, and has three entries i, j, k. The entries i and j are indices of the rays defining the edge while the entry k is the weight of the edge.
Example
> LIB "tropsec.lib";
> intvec exps = 0,30,45,55,78;
> list gph = tropsec(exps);
> gph[1];
    1,0,0,0,0,
    0,1,0,0,0,
    0,0,1,0,0,
    0,0,0,1,0,
    0,0,0,0,1,
    0,30,30,30,30,
    0,30,45,45,45,
    0,30,45,55,55,
    1,1,0,0,0,
    1,0,1,0,0,
    1,1,1,0,0,
    1,0,0,1,0,
    0,1,0,1,0,
    0,0,1,1,0,
    1,1,1,1,0,
    1,0,0,0,1,
    0,1,0,0,1,
    1,1,0,0,1,
    0,0,1,0,1,
    1,1,1,0,1,
    0,0,0,1,1
> gph[2];
    5,6,30,
    6,7,345,
    1,5,30,
    2,6,15,
    3,7,345,
    8,0,6,
    8,1,6,
    9,0,15,
    9,2,15,
    10,0,4,
    10,1,4,
    10,2,4,
    11,0,75,
    11,3,75,
    12,1,30,
    12,3,30,
    13,2,15,
    13,3,15,
    14,0,10,
    14,1,10,
    14,2,10,
    14,3,30,
    15,0,180,
    15,4,180,
    16,1,105,
    16,4,105,
    17,0,3,
    17,1,3,
    17,4,15,
    18,2,75,
    18,4,75,
    19,0,3,
    19,1,3,
    19,2,6,
    19,4,15,
    20,3,165,
    20,4,165
Groebner Tropical Secant Graph
To compute the Groebner tropical secant graph described in
Definition 6.12, Theorem 6.13 (dim 6), Theorem 6.14 (dim 5), Lemma 7.3
(dim 4), Theorem 7.4 (dim 4) of the paper, use the command
list gph = grobsec(exps);
where
exps is an integer vector of exponents describing a monomial
curve.
It returns a list gph with the following items.
- gph[1] is a list of all the coordinates of the nodes
- gph[2] is a list of the edges in the form "i,j,m" which means the edge from node i to node j has weight m.
- gph[3] is a list of all the names of the nodes
- gph[4] is a list of all the names of the edges
- gph[5] is a list of all the partial overlaps and internal crossings predicted by the paper which makes it a groebner tropical secant graph.
Lastly, if you try our example "0,30,45,55,78", it says "integer
overflow error" because I did not use large integers to program this
code but just standard integers (i.e. between -65536 and 65536). I
could rewrite my code to do that, but that would take time, so I
decided to leave it alone.
Example
> LIB "tropsec.lib";
> intvec exps = 0,2,5,8,10;
> list gph = grobsec(exps);
> gph;
[1]:
    1,0,0,0,0,
    0,1,0,0,0,
    0,0,1,0,0,
    0,0,0,1,0,
    0,0,0,0,1,
    0,2,2,2,2,
    0,2,5,5,5,
    0,2,5,8,8,
    1,0,0,1,0,
    0,1,0,1,0,
    0,1,1,1,0,
    1,0,0,0,1,
    0,1,0,0,1,
    1,0,1,0,1,
    1,1,0,1,1
[2]:
    6,7,2,
    7,8,2,
    2,6,2,
    3,7,2,
    4,8,2,
    9,1,3,
    9,4,3,
    10,2,5,
    10,4,5,
    11,2,1,
    11,3,2,
    11,4,1,
    12,1,6,
    12,5,6,
    13,2,3,
    13,5,3,
    14,1,2,
    14,3,4,
    14,5,2,
    15,1,1,
    15,2,1,
    15,4,1,
    15,5,1
[3]:
    [1]:
        D0
    [2]:
        D1
    [3]:
        D2
    [4]:
        D3
    [5]:
        D4
    [6]:
        E1
    [7]:
        E2
    [8]:
        E3
    [9]:
        F1,0,0,1,0
    [10]:
        F0,1,0,1,0
    [11]:
        F0,1,1,1,0
    [12]:
        F1,0,0,0,1
    [13]:
        F0,1,0,0,1
    [14]:
        F1,0,1,0,1
    [15]:
        F1,1,0,1,1
[4]:
    [1]:
        E1
    [2]:
        E2
    [3]:
        D1
    [4]:
        D2
    [5]:
        D3
    [6]:
        F1,0,0,1,0:0
    [7]:
        F1,0,0,1,0:3
    [8]:
        F0,1,0,1,0:1
    [9]:
        F0,1,0,1,0:3
    [10]:
        F0,1,1,1,0:1
    [11]:
        F0,1,1,1,0:2
    [12]:
        F0,1,1,1,0:3
    [13]:
        F1,0,0,0,1:0
    [14]:
        F1,0,0,0,1:4
    [15]:
        F0,1,0,0,1:1
    [16]:
        F0,1,0,0,1:4
    [17]:
        F1,0,1,0,1:0
    [18]:
        F1,0,1,0,1:2
    [19]:
        F1,0,1,0,1:4
    [20]:
        F1,1,0,1,1:0
    [21]:
        F1,1,0,1,1:1
    [22]:
        F1,1,0,1,1:3
    [23]:
        F1,1,0,1,1:4
[5]:
    [1]:
        E1;F0,1,1,1,0:2;1
    [2]:
        E2;F0,1,1,1,0:2;1
    [3]:
        D2;F0,1,1,1,0:2;2
Suggestions and Bugs
While our code is unpolished, we are still interested in knowing if
there are any bugs. If you find any errors in the code or have any
comments or suggestions, please do not hesitate to contact Shaowei Lin
at
shaowei [at] math [dot] berkeley [dot] edu