
D.10.1.4 Weierstrass
Procedure from library brnoeth.lib (see brnoeth_lib).
 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.
Example:
 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;
 See also:
Adj_div;
BrillNoether;
NSplaces.
