|
D.5.5.4 essdevelop
Procedure from library hnoether.lib (see hnoether_lib).
- Usage:
- essdevelop(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,
essdevelop 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] an "essential" branch of f, but the last
entry being omitted).
For more details type help reddevelop; .
- Note:
- If the HNE needs a field extension, some of the branches will be
conjugate. In this case
essdevelop reduces the computation to
one representative for each group of conjugate branches.
Note that the degree of each branch is in general less than the degree
of the field extension in which all HNEs can be put.
Use reddevelop or HNdevelop to compute a complete HNE,
i.e., a HNE for all branches.
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=2,(x,y),dp;
poly f=(x4+x2y+y2)*(x3+xy2+y3);
// --------- compute all branches: ---------
list hne=reddevelop(f);
==> Change of basering (field extension) necessary!
==> finite HNE found
==> finite HNE found
==> finite HNE found
==> Change of basering (field extension) necessary!
==> // new minimal polynomial: a6+a5+a3+a2+1
==> finite HNE found
==> finite HNE found
==> // result: 5 branch(es) successfully computed,
==> // basering has changed to HNEring
displayHNE(hne[1]); // HN-matrix of 1st branch
==> HNE[1]=y+(a^4+a^2)*z(0)
==> HNE[2]=x+z(0)
displayHNE(hne[4]); // HN-matrix of 4th branch
==> HNE[1]=y+(a^4+a^2+a)*z(0)^2
==> HNE[2]=x+z(0)
setring r;
kill HNEring;
// --- compute only one of conjugate branches: ---
list hne=essdevelop(f);
==> Change of basering (field extension) necessary!
==> finite HNE found
==> Change of basering (field extension) necessary!
==> // new minimal polynomial: a6+a5+a3+a2+1
==> finite HNE found
==> // result: 2 branch(es) successfully computed;
==> // note that conjugate branches are omitted and that the number
==> // of branches represented by each remaining one may vary!
==> // basering has changed to HNEring
displayHNE(hne);
==> // Hamburger-Noether development of branch nr.1:
==> HNE[1]=y+(a^4+a^2)*z(0)
==> HNE[2]=x+z(0)
==>
==> // Hamburger-Noether development of branch nr.2:
==> HNE[1]=y+(a^4+a^2+a)*z(0)^2
==> HNE[2]=x+z(0)
==>
// no. 1 of essdevelop represents no. 1 - 3 of reddevelop and
// no. 2 of essdevelop represents no. 4 + 5 of reddevelop
kill HNEring,r;
// --- restore HNEring if previously defined ---
if (defined(rettering)) {
setring rettering;
def HNEring=rettering;
export HNEring;
}
| See also:
HNdevelop;
develop;
extdevelop;
reddevelop.
|