|  |  D.10.1.4 Weierstrass Procedure from librarybrnoeth.lib(see  brnoeth_lib).
 
Example:Usage:
Weierstrass( i, m, CURVE ); i,m integers and CURVE a list
Return:
list WS of two lists:
|  |   WS[1] list of integers (Weierstr. semigroup of the curve at place i up to m)
  WS[2] list of ideals (the associated rational functions)
 | 
 
Note:
The procedure must be called from the ring CURVE[1][2],
where CURVE is the output of the procedure NSplaces.i represents the place CURVE[3][i].
 Rational functions are represented by numerator/denominator
in form of ideals with two homogeneous generators.
 
Warning:
The place must be rational, i.e., necessarily CURVE[3][i][1]=1. 
 
 See also:
 Adj_div;
 BrillNoether;
 NSplaces.|  | LIB "brnoeth.lib";
int plevel=printlevel;
printlevel=-1;
ring s=2,(x,y),lp;
list C=Adj_div(x3y+y3+x);
==> The genus of the curve is 3
C=NSplaces(1..4,C);
def R=C[1][2];
setring R;
// Place C[3][1] has degree 1 (i.e it is rational);
list WS=Weierstrass(1,7,C);
==> Vector basis successfully computed 
// the first part of the list is the Weierstrass semigroup up to 7 :
WS[1];
==> [1]:
==>    0
==> [2]:
==>    3
==> [3]:
==>    5
==> [4]:
==>    6
==> [5]:
==>    7
// and the second part are the corresponding functions :
WS[2];
==> [1]:
==>    _[1]=1
==>    _[2]=1
==> [2]:
==>    _[1]=y
==>    _[2]=z
==> [3]:
==>    _[1]=xy
==>    _[2]=z2
==> [4]:
==>    _[1]=y2
==>    _[2]=z2
==> [5]:
==>    _[1]=y3
==>    _[2]=xz2
printlevel=plevel;
 | 
 
 |