QQ:=FunctionField(Rationals()); P:=PolynomialRing(Rationals()); LL:=PowerSeriesRing(Rationals(), 7); // Die Zetafunktion zu Fuss: // Achtung, diese Funktion funktioniert nur fuer Geschlecht le 1 getAn:=function(F,n) g:=Genus(F); q:=# ConstantField(F); if n ge 2*g-1 then h:=ClassNumber(F); return h/(q-1)*(q^(n+1-g)-1); end if; An:=0; P:=Partitions(n); P:=[{*e : e in p*} : p in P]; //Folge von Multimengen NumPlaces:=[NumberOfPlacesOfDegreeOverExactConstantField(F,m) : m in [1..n]]; for p in P do s:=1; for a in p do s:=s*Binomial(NumPlaces[a]+Multiplicity(p,a)-1,NumPlaces[a]-1); end for; An:=An+s; end for; return An; end function; MyZeta:=function(F,n) zeta:=QQ!0; for l in [0..n] do zeta:=zeta+getAn(F,l)*t^l; end for; return zeta; end function; // Elliptischer Funktionenkoerper // supersingulaerer Fall: q:=31; K:=GF(q); F:=FunctionField(K); R:=PolynomialRing(F); F:=FunctionField(y^2-x^3+K!12*x); g:=Genus(F);g; MyZeta(F,6); zeta:=QQ!ZetaFunction(F); zeta; LL!zeta; lp:=P!LPolynomial(F); L:=NumberField(lp); roots:=Roots(lp,L); //Hasse-Weil [Sqrt(Norm(1/r[1])): r in roots]; N:=NumberOfPlacesOfDegreeOneOverExactConstantField(F); Abs(N-(q+1)); 2*g*Sqrt(q); // gewoehnlicher Fall q:=17; K:=GF(q); F:=FunctionField(K); R:=PolynomialRing(F); F:=FunctionField(y^2-x^3+K!12*x); g:=Genus(F);g; MyZeta(F,6); zeta:=QQ!ZetaFunction(F); lp:=P!LPolynomial(F); L:=NumberField(lp); roots:=Roots(lp,L); //Hasse-Weil [Sqrt(Norm(1/r[1])): r in roots]; N:=NumberOfPlacesOfDegreeOneOverExactConstantField(F); Abs(N-(q+1)); 2*g*Sqrt(q); // Ein maximaler Funktionenkoerper n:=3; q:=5; K:=GF(q^2); F:=FunctionField(K); R:=PolynomialRing(F); F:=FunctionField(y^n+x^(q+1)+K!1); time (MyZeta(F,6)); zeta:=QQ!ZetaFunction(F);zeta; LL!zeta; lp:=P!LPolynomial(F); roots:=Roots(lp); //Hasse-Weil [Abs(1/r[1]): r in roots]; // Man kann zeigen (Stichtenoth, Example 6.3.5), dass gilt: NumberOfPlacesOfDegreeOneOverExactConstantField(F); N:=q+1+n*(q^2-q);N; Genus(F); g:=Integers()!((n-1)*(q-1)/2);g; N eq q^2+1+2*g*q; // Wir haben also einen maximalen Funktionenkoerper. // Nach Hasse-Weil ist alpha_i=-q f.a. i, also gilt L:=P!(1+q*z)^(2*g);L; P!LPolynomial(F);