Singular

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; ```