#### 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.

User manual for Singular version 4.4.1, 2025, generated by texi2html.