# Singular          #### D.10.1.3 BrillNoether

Procedure from library `brnoeth.lib` (see brnoeth_lib).

Usage:
BrillNoether(G,CURVE); G an intvec, CURVE a list

Return:
list of ideals (each of them with two homogeneous generators, which represent the numerator, resp. denominator, of a rational function).
The corresponding rational functions form a vector space basis of the linear system L(G), G a rational divisor over a non-singular curve.

Note:
The procedure must be called from the ring CURVE, where CURVE is the output of the procedure `NSplaces`.
The intvec G represents a rational divisor supported on the closed places of CURVE (e.g. `G=2,0,-1;` means 2 times the closed place 1 minus 1 times the closed place 3).

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); // the first 3 Places in C are of degree 1. // we define the rational divisor G = 4*C+4*C (of degree 8): intvec G=4,0,4; def R=C; setring R; list LG=BrillNoether(G,C); ==> Vector basis successfully computed // here is the vector basis of L(G): LG; ==> : ==> _=1 ==> _=1 ==> : ==> _=y ==> _=x ==> : ==> _=z ==> _=x ==> : ==> _=y2 ==> _=x2 ==> : ==> _=xz2+y3 ==> _=x3 ==> : ==> _=xyz2+y4 ==> _=x4 printlevel=plevel; ``` 