# Singular

#### D.13.4.3 puiseuxExpansion

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

Usage:
puiseuxExpansion(f,n,#); f poly, n int, # list

Assume:
f is a non-constant polynomial in two variables which is not divisible by the first variable and which is squarefree as a power series over the complex numbers;
the base field is either the field of rational numbers or a finite extension thereof; monomial ordering is assumed to be local;
the optional parameter # can be the string 'subst'

Return:
list, where each entry of the list l describes the Newton-Puiseux
parametrisations of one branch of the plane curve singularity
at the origin defined by f; only the terms up to order n of each
parametetrisation are computed
l[i][1] = is a ring
l[i][2] = int
l[i][3] = string

WE NOW DESCRIBE THE LIST ENTRIES l[i] IN MORE DETAIL:
- the ring l[i][1] contains an ideal LIFT and the Newton-Puiseux parametrisation of the branch is given by x=t^N and y=LIFT[1], where N=l[i][2]
- if the base field had a parameter and a minimal polynomial, then the new base field will have a parameter and a new minimal polynomial, and LIFT[2] describes how the old parameter can be computed from the new one
- if a field extension with minimal polynomial of degree k was necessary, then to the one extension produced acutally k extensions correspond by replacing the parameter a successively by all zeros of the minimal polynomial
- if the option subst was set l[i][3] contains the polynomial where y has been substituted by y(t^{1/N}) as a string

Remark:
- it is best to use the procedure displayPuiseuxExpansion to display the result
- the procedure requires the Singular procedure absPrimdecGTZ to be present in the package primdec.lib
- if f is not squarefree it will be replaced by its squarefree part

Example:
 ```LIB "tropical.lib"; ==> Welcome to polymake version ==> Copyright (c) 1997-2015 ==> Ewgenij Gawrilow, Michael Joswig (TU Darmstadt) ==> http://www.polymake.org printlevel=1; ring r=0,(x,y),ds; poly f=x2-y4+x5y7; puiseuxExpansion(f,3,"subst"); ==> The procedure has created a list of lists. The jth entry of this list ==> contains a ring, an integer and an intvec. ==> In this ring lives an ideal representing the wanted lifting, ==> if the integer is N then in the parametrisation t has to be replaced by t\ ^1/N, ==> and if the ith component of the intvec is w[i] then the ith component in \ LIFT ==> should be multiplied by t^-w[i]/N in order to get the parametrisation. ==> ==> Suppose your list has the name L, then you can access the 1st ring via: ==> ==> def LIFTRing=L[1][1]; setring LIFTRing; LIFT; ==> ==> !!!! WARNING: The number of terms computed in the Puiseux expansion were ==> !!!! not enough to find all branches of the curve singularity! ==> [1]: ==> [1]: ==> // coefficients: QQ ==> // number of vars : 1 ==> // block 1 : ordering ls ==> // : names t ==> // block 2 : ordering C ==> [2]: ==> 2 ==> [3]: ==> (11/8)*t^(30/2) + (5/4)*t^(43/2) + (139/256)*t^(56/2) + (35/256)*t^\ (69/2) + (21/1024)*t^(82/2) + (7/4096)*t^(95/2) + (1/16384)*t^(108/2) ==> [2]: ==> [1]: ==> // coefficients: QQ ==> // number of vars : 1 ==> // block 1 : ordering ls ==> // : names t ==> // block 2 : ordering C ==> [2]: ==> 2 ==> [3]: ==> (11/8)*t^(30/2) + (-5/4)*t^(43/2) + (139/256)*t^(56/2) + (-35/256)*\ t^(69/2) + (21/1024)*t^(82/2) + (-7/4096)*t^(95/2) + (1/16384)*t^(108/2) ==> [3]: ==> [1]: ==> // coefficients: QQ(a) ==> // number of vars : 1 ==> // block 1 : ordering ls ==> // : names t ==> // block 2 : ordering C ==> [2]: ==> 2 ==> [3]: ==> (-a4+1)*t^(4/2) + (a7-a3)*t^(17/2) + (14a6-3a2)/8*t^(30/2) + (21a5-\ a)/16*t^(43/2) + (140a4-1)/256*t^(56/2) + (35a3)/256*t^(69/2) + (21a2)/10\ 24*t^(82/2) + (7a)/4096*t^(95/2) + (1/16384)*t^(108/2) displayPuiseuxExpansion(puiseuxExpansion(f,3)); ==> The procedure has created a list of lists. The jth entry of this list ==> contains a ring, an integer and an intvec. ==> In this ring lives an ideal representing the wanted lifting, ==> if the integer is N then in the parametrisation t has to be replaced by t\ ^1/N, ==> and if the ith component of the intvec is w[i] then the ith component in \ LIFT ==> should be multiplied by t^-w[i]/N in order to get the parametrisation. ==> ==> Suppose your list has the name L, then you can access the 1st ring via: ==> ==> def LIFTRing=L[1][1]; setring LIFTRing; LIFT; ==> ==> !!!! WARNING: The number of terms computed in the Puiseux expansion were ==> !!!! not enough to find all branches of the curve singularity! ==> ============================= ==> 1. Expansion: ==> ==> The Puiseux expansion lives in the ring ==> Q[[t^(1/2)]] ==> ==> The expansion has the form: ==> y=(1)*t^(1/2) + (1/4)*t^(14/2) ==> ==> ============================= ==> 2. Expansion: ==> ==> The Puiseux expansion lives in the ring ==> Q[[t^(1/2)]] ==> ==> The expansion has the form: ==> y=(-1)*t^(1/2) + (1/4)*t^(14/2) ==> ==> ============================= ==> 3. Expansion: ==> ==> The Puiseux expansion lives in the ring ==> Q[a]/0[[t^(1/2)]] ==> ==> The expansion has the form: ==> y=(a)*t^(1/2) + (1/4)*t^(14/2) ==> ```