#### D.13.6.5 tropicalCurve

Procedure from library `tropical.lib` (see tropical_lib).

Usage:
  tropicalCurve(tp[,#]); tp list, # optional list

Assume:
  tp is list of linear polynomials of the form ax+by+c
  with integers a, b and a rational number c representing a tropical Laurent polynomial defining a tropical plane curve; alternatively tp can be a polynomial in Q(t)[x,y] defining a tropical plane curve via the valuation map;
  the basering must have a global monomial ordering,
  two variables and up to one parameter!

Return:
  list, each entry i=1,...,size(l)-1 corresponds to a vertex in the tropical plane curve defined by tp
  l[i][1] = x-coordinate of the ith vertex
  l[i][2] = y-coordinate of the ith vertex
  l[i][3] = intmat, if j is an entry in the first row
  of intmat then the ith vertex of
  the tropical curve is connected to the
  jth vertex with multiplicity given
  by the corresponding entry in the second row
  l[i][4] = list of lists, the first entry of a list is a primitive integer vector defining the direction
  of an unbounded edge emerging from the ith vertex
  of the graph, the corresponding second entry in
  the list is the multiplicity of the unbounded edge
  l[i][5] = a polynomial whose monomials mark the vertices in the Newton polygon corresponding to the entries
  in tp which take the common minimum at the ith
  vertex -- if some coefficient a or b of the
  linear polynomials in the input was negative,
  then each monomial has to be shifted by
  the values in l[size(l)][3]
  l[size(l)][1] = list, the entries describe the boundary points of the Newton subdivision
  l[size(l)][2] = list, the entries are pairs of integer vectors defining an interior
  edge of the Newton subdivision
  l[size(l)][3] = intvec, the monomials occurring in l[i][5] have to be shifted by this vector
  in order to represent marked
  vertices in the Newton polygon

Note:
  here the tropical polynomial is supposed to be the MINIMUM of the linear forms in tp, unless the optional input #[1] is the string 'max'

Example:

    LIB "tropical.lib";
    ring r=(0,t),(x,y),dp;
    poly f=t*(x7+y7+1)+1/t*(x4+y4+x2+y2+x3y+xy3)+1/t7*x2y2;
    list graph=tropicalCurve(f);
    // the tropical curve has size(graph)-1 vertices
    size(graph)-1;
    // the coordinates of the first vertex are graph[1][1],graph[1][2];
    graph[1][1],graph[1][2];
    // the first vertex is connected to the vertices
    //     graph[1][3][1,1..ncols(graph[1][3])]
    intmat M=graph[1][3];
    M[1,1..ncols(graph[1][3])];
    // the weights of the edges to these vertices are
    //     graph[1][3][2,1..ncols(graph[1][3])]
    M[2,1..ncols(graph[1][3])];
    // from the first vertex emerge size(graph[1][4]) unbounded edges
    size(graph[1][4]);
    // the primitive integral direction vector of the first unbounded edge
    //     of the first vertex
    graph[1][4][1][1];
    // the weight of the first unbounded edge of the first vertex
    graph[1][4][1][2];
    // the monomials which are part of the Newton subdivision of the first vertex
    graph[1][5];
    // connecting the points in graph[size(graph)][1] we get
    //     the boundary of the Newton polytope
    graph[size(graph)][1];
    // an entry in graph[size(graph)][2] is a pair of points
    //     in the Newton polytope bounding an inner edge
    graph[size(graph)][2][1];

User manual for Singular version 4.4.1, 2025, generated by texi2html.