|
D.5.5.3 reddevelop
Procedure from library hnoether.lib (see hnoether_lib).
- Usage:
- reddevelop(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 of a reducible curve
singularity usually does not exist in the originally given basering,
reddevelop 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:
- 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 = 32003,(x,y),dp;
poly f = x25+x24-4x23-1x22y+4x22+8x21y-2x21-12x20y-4x19y2+4x20+10x19y
+12x18y2-24x18y-20x17y2-4x16y3+x18+60x16y2+20x15y3-9x16y
-80x14y3-10x13y4+36x14y2+60x12y4+2x11y5-84x12y3-24x10y5
+126x10y4+4x8y6-126x8y5+84x6y6-36x4y7+9x2y8-1y9;
list hne=reddevelop(f);
==> finite HNE of one branch found
==> Change of basering (field extension) necessary!
==> HNE of one branch found
==> HNE of one branch found
==> HNE of one branch found
==> // result: 4 branch(es) successfully computed,
==> // basering has changed to HNEring
size(hne); // number of branches
==> 4
print(hne[1][1]); // HN-matrix of 1st branch
==> 0,1,x,0,
==> 0,x,0,0,
==> 0,2,1,x,
==> 0,1,x,0
print(hne[4][1]); // HN-matrix of 4th branch
==> 0,1,(-a+9380),(-4538a-14206)
// a ring change was necessary, a is a parameter
HNEring;
==> // characteristic : 32003
==> // 1 parameter : a
==> // minpoly : (a2-9380a-6469)
==> // number of vars : 2
==> // block 1 : ordering ls
==> // : names x y
==> // block 2 : ordering C
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.
|