|  |  D.6.15.2 develop Procedure from libraryhnoether.lib(see  hnoether_lib).
 
Example:Usage:
develop(f [,n]); f poly, n int
Assume:
f is a bivariate polynomial (in the first 2 ring variables) and
irreducible as power series (for reducible f use hnexpansion).
Return:
list Lwith:
 
L[1]; matrix:         Each row contains the coefficients of the corresponding line of the
         Hamburger-Noether expansion (HNE). The end of the line is marked in
         the matrix by the first ring variable (usually x).
L[2]; intvec:         indicating the length of lines of the HNE
L[3]; int:         0  if the 1st ring variable was transversal (with respect to f), 1  if the variables were changed at the beginning of the
            computation,
 -1  if an error has occurred.
L[4]; poly:         the transformed polynomial of f to make it possible to extend the
         Hamburger-Noether development a posteriori without having to do
         all the previous calculation once again (0 if not needed)
L[5]; int:         1  if the curve has exactly one branch (i.e., is irreducible), 0  else (i.e., the curve has more than one HNE, or f is not valid).
 
Display:
The (non zero) elements of the HNE (if not called by another proc).
Note:
The optional parameter naffects only the computation of
the LAST line of the HNE. If it is given, the HN-matrixL[1]will have at leastncolumns.Otherwise, the number of columns will be chosen minimal such that the
matrix contains all necessary information (i.e., all lines of the HNE
but the last (which is in general infinite) have place).
 If
 nis negative, the algorithm is stopped as soon as the
computed information is sufficient forinvariants(L), but the
HN-matrixL[1]may still contain undetermined elements, which
are marked with the 2nd variable (of the basering).For time critical computations it is recommended to use
 ring ...,(x,y),lsas basering - it increases the algorithm's
speed.If
 printlevel>=0comments are displayed (default isprintlevel=0).
 See also:
 displayHNE;
 extdevelop;
 hnexpansion.|  | LIB "hnoether.lib";
ring exring = 7,(x,y),ds;
list Hne=develop(4x98+2x49y7+x11y14+2y14);
print(Hne[1]);
==> 0,0, 0,0,0,0,3,x,
==> 0,x, 0,0,0,0,0,0,
==> 0,0, 0,x,0,0,0,0,
==> 0,x, 0,0,0,0,0,0,
==> 0,-1,0,0,0,0,0,0 
// therefore the HNE is:
// z(-1)= 3*z(0)^7 + z(0)^7*z(1),
// z(0) = z(1)*z(2),       (there is 1 zero in the 2nd row before x)
// z(1) = z(2)^3*z(3),     (there are 3 zeroes in the 3rd row)
// z(2) = z(3)*z(4),
// z(3) = -z(4)^2 + 0*z(4)^3 +...+ 0*z(4)^8 + ?*z(4)^9 + ...
// (the missing x in the last line indicates that it is not complete.)
Hne[2];
==> 7,1,3,1,-1
param(Hne);
==> // ** Warning: result is exact up to order 20 in x and 104 in y !
==> _[1]=-x14
==> _[2]=-3x98-x109
// parametrization:   x(t)= -t^14+O(t^21),  y(t)= -3t^98+O(t^105)
// (the term -t^109 in y may have a wrong coefficient)
displayHNE(Hne);
==>   y = 3*x^7+z(1)*x^7
==>   x = z(1)*z(2)
==>   z(1) = z(2)^3*z(3)
==>   z(2) = z(3)*z(4)
==>   z(3) = -z(4)^2 + ..... (terms of degree >=9)
 | 
 
 |