# 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 list of integers (Weierstr. semigroup of the curve at place i up to m) WS list of ideals (the associated rational functions) ```

Note:
The procedure must be called from the ring CURVE, where CURVE is the output of the procedure `NSplaces`.
i represents the place CURVE[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[i]=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; setring R; // Place C 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; ==> : ==> 0 ==> : ==> 3 ==> : ==> 5 ==> : ==> 6 ==> : ==> 7 // and the second part are the corresponding functions : WS; ==> : ==> _=1 ==> _=1 ==> : ==> _=y ==> _=z ==> : ==> _=xy ==> _=z2 ==> : ==> _=y2 ==> _=z2 ==> : ==> _=y3 ==> _=xz2 printlevel=plevel; ``` 