Maple Files for Computation of Puiseux Expansions for Singular Points of Algebraic Curves


 - Work of David Weinberg and Nick Willis

The bracketed numbers in the Maple worksheets refer to the explanation at the bottom of this page.

4th Degree

5th Degree

6th Degree

[1] First we define the polynomial based on the Newton Polygon. Each point on the Polygon represents a term in the polynomial, where the vertical coordinate is equal to the x exponent and the horizontal coordinate is equal to the y exponent of the term. The coefficients are literal to include the entire family represented by the Polygon.

[2] The Puiseux algorithm computes terms until the jets differ. When the highest power of the coefficients of x in the jet is a fractional power we have multiple roots, so we can make the jets the same by setting the coefficient of that term equal to zero. This forces the Puiseux to calculate the next term, which has a higher power, and the splitting will be at that term.

[3] We reevaluate the polynomial where the coefficients of the highest power term in the Puiseux jet of the previous expansion are equal to zero. This requires that, when the expression is set to zero, we solve for a variable in order to make a substitution, so there will often be a solving step.

[4] As in [2], we want to make the jets the same. When the highest power of the coefficients of x in the jet is a whole power, we have multiple roots represented in a RootOf( ) expression. Therefore, we take the discriminant of the polynomial in _Z and set it equal to zero so that the coefficients in the highest power terms of the  jets will be the same.

[5] Once the polynomial factors, it is apparent that the curve is reducible. At this point, our proof is complete.  When it does not factor, we do not show the step, but we do attempt to factor the polynomial at every step.

[6] In this case, the polynomial does not factor, but we see from the Puiseux expansion that all of the jets have completely split.

[7] Because the numerator factors, we must consider both cases where the numerator is equal to zero.

[8] Using a T in the Puiseux argument will parameterize the output, making it easier for Maple to compute.  The Puiseux function can give unnecessarily large answers. Reading the following code into Maple before using the Puiseux function will help to prevent one (but not all) of the causes of these large answers, namely it will help to prevent some unnecessary expanding.