|
D.5.5.1 HNdevelop
Procedure from library hnoether.lib (see hnoether_lib).
- Usage:
- HNdevelop(f); f poly
- Assume:
- f is a bivariate polynomial (in the first 2 ring variables)
- Create:
- ring with name
HNEring , variables x,y and ordering
ls over a field extension of the current basering's ground
field.
Since the Hamburger-Noether development usually does not exist
in the originally given basering, HNdevelop always defines
HNEring and CHANGES to it. The field extension is chosen
minimally.
- Return:
- list
L of lists L[i] (corresponding to the output of
develop(f[i]) , f[i] a branch of f, but the last entry being
omitted).
L[i][1] ; matrix:
- Each row contains the coefficients of the corresponding line of the
Hamburger-Noether expansion (HNE) for f[i]. The end of the line is
marked in the matrix by the first ring variable (usually x).
L[i][2] ; intvec:
- indicating the length of lines of the HNE
L[i][3] ; int:
- 0 if the 1st ring variable was transversal (with respect to f[i]),
1 if the variables were changed at the beginning of the
computation,
-1 if an error has occurred.
L[i][4] ; poly:
- the transformed polynomial of f[i] 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)
- Note:
HNdevelop decides which procedure (develop or
reddevelop ) applies best to the given problem and calls it.
If f is known to be irreducible as a power series, develop(f)
should be chosen instead to avoid the change of basering.
If printlevel>=0 comments are displayed (default is
printlevel=0 ).
Example:
| LIB "hnoether.lib";
// -------- prepare for example ---------
if (nameof(basering)=="HNEring") {
def rettering=HNEring;
kill HNEring;
}
// ------ the example starts here -------
ring r=0,(x,y),dp;
list hne=HNdevelop(x4-y6);
==> finite HNE found
==> finite HNE found
==> // result: 2 branch(es) successfully computed,
==> // basering has changed to HNEring
nameof(basering);
==> HNEring
size(hne); // number of branches
==> 2
print(hne[1][1]); // HN-matrix of 1st branch
==> 0,x,0,
==> 0,1,x
param(hne[1]); // parametrization of 1st branch
==> _[1]=x3
==> _[2]=x2
param(hne[2]); // parametrization of 2nd branch
==> _[1]=-x3
==> _[2]=-x2
kill HNEring,r;
// --- restore HNEring if previously defined ---
if (defined(rettering)) {
setring rettering;
def HNEring=rettering;
export HNEring;
}
| See also:
develop;
displayHNE;
essdevelop;
extdevelop;
param;
reddevelop.
|