#### D.9.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 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[1][2], where CURVE is the output of the procedure `NSplaces`.
The intvec G represents a rational divisor supported on the closed places of CURVE[3] (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[3] are of degree 1. // we define the rational divisor G = 4*C[3][1]+4*C[3][3] (of degree 8): intvec G=4,0,4; def R=C[1][2]; setring R; list LG=BrillNoether(G,C); ==> Vector basis successfully computed // here is the vector basis of L(G): LG; ==> [1]: ==> _[1]=1 ==> _[2]=1 ==> [2]: ==> _[1]=y ==> _[2]=x ==> [3]: ==> _[1]=z ==> _[2]=x ==> [4]: ==> _[1]=y2 ==> _[2]=x2 ==> [5]: ==> _[1]=xz2+y3 ==> _[2]=x3 ==> [6]: ==> _[1]=xyz2+y4 ==> _[2]=x4 printlevel=plevel; ```