Analytic Theory

Probably the most significant difference between the class field theories for number fields and function fields is the fact that function fields allow an analytic description of abelian extensions in general where number fields (currently) only admit the analytical view for extensions of the rationals (cyclotomic fields) and imaginary quadratic fields (CM-theory).

The analytic description is based on Drinfeld-modules of rank 1 (or in the case of the rational function field the Carlitz-module). Informally, a Drinfeld module is a representation of some (infinite) maximal order of a function field into the ring of additive polynomials over some appropriate ring containing the original field. Similar to CM-theory, abelian extensions are then generated by adjoining torsion points under this action.

CarlitzModule(R, x) : RngUPolTwst, RngUPolElt -> RngUPolTwstElt
CarlitzModule(R, x) : RngUPolTwst, FldFunRatUElt -> RngUPolTwstElt
For a rational function field k = Fq(t) and a polynomial f in k[t], compute the image of f under the Carlitz module as an element in the ring of twisted polynomials R. Specifically, the Carlitz module is the representation induced by sending t to F + t where F is the transcendental element of R, the Frobenius of k. As Fq[t] is freely generated by t, this defines a homomorphism (a representation) of Fq[t] into the twisted polynomials over k.

Example FldFunAb_carlitz-module (H46E5)

We demonstrate how the Carlitz-module can be used to define abelian extensions of the rational function field.
> Fq<w> := GF(4);
> k<t> := RationalFunctionField(Fq);
> R<T> := TwistedPolynomials(k:q := 4);
Suppose we want to create the Ray-class field modulo p := t2 + t + w, ie we want to find an abelian extension unramified outside p and the infinite place.
> p := t^2+t+w;
> P := CarlitzModule(R, p);
> F := Polynomial(P);
> Factorisation(F);
[
    <T, 1>,
    <T^15 + (t^4 + t + 1)*T^3 + t^2 + t + w, 1>
]
> K := FunctionField($1[2][1]);
> a := Support(DifferentDivisor(K));
> a[1];
(t^2 + t + w, K.1)
> [ IsFinite(x) : x in a];
[ true, false, false, false, false, false ]
> RamificationIndex(a[1]);
15
So, this shows that the field has the ramification behaviour we wanted. However, the Carlitz-module will give us more information: We will demonstrate that the automorphism group of K is isomorphic to the unit group of Fq[t]/p under this module.
> q, mq := quo<Integers(k)|p>;
> au := func<X|Evaluate(Polynomial(CarlitzModule(R, X)), K.1)>;
> [ <IsUnit(x), Evaluate(DefiningPolynomial(K), au(x@@mq)) eq 0>
> : x in q];
[ <true, true>, <true, true>, <true, true>, <true, true>, <true,
true>, <true, true>, <true, true>, <true, true>, <true, true>, <true,
true>, <true, true>, <true, true>, <true, true>, <true, true>, <true,
true>, <false, false> ]
Now we try to create the same field using the algebraic class field machinery:
> D, U := NormGroup(K);
> Conductor(D, U);
($.1^2 + $.1 + w) + (1/$.1)
So this also shows that K is ramified exactly at p and the infinite places and, since the multiplicity is one, tamely ramified at both places.
> A := AbelianExtension(D, U);
> F := FunctionField(A);
> F;
Algebraic function field defined over Algebraic function field defined
over GF(2^2) by
$.2 + 1 by
$.1^3 + ($.1^2 + $.1 + w)^2
$.1^5 + w^2*$.1^3 + w*$.1 + (w^2*$.1^4 + w^2*$.1^2 + 1)/($.1^6 + $.1^5
    + w^2*$.1^4 + $.1^3 + $.1^2 + w^2*$.1 + 1)
> HasRoot(Polynomial(K, DefiningPolynomials(F)[1]));
true K.1^10 + (t^2 + t + w)*K.1^4 + (t^2 + t + w)*K.1
> HasRoot(Polynomial(K, DefiningPolynomials(F)[2]));
true w/(t^2 + t + w)*K.1^12 + (w*t^2 + w*t + 1)/(t^2 + t + w)*K.1^6 +
    w*K.1^3
AnalyticDrinfeldModule(F, p) : FldFun, PlcFunElt -> RngUPolTwstElt
For F a global function field and p a place, compute an algebraic description of "the" Drinfeld module of rank 1 defined for the ring of functions integral outside p. More precisely, let R be the ring of functions integral outside p, ie. functions having their only poles at R. In Magma this is represented by changing the representation of the function field so that p is the only infinite place. Then R becomes simply the finite maximal order. Furthermore, let C be the completion of F at p and tilde C be the closure of the algebraic closure of C, thus D will play the role of the complex numbers in this theory, while C is closely related to the reals. By means of mapping R to its image in D⊂C, we obtain a lattice Λ of rank 1. Related to this lattice are certain exponential functions (analytic functions where the set of zeros is Λ). The transformation behaviour of such functions can be used to define a map from R to the endomorphisms of C, represented as additive (twisted) polynomials. In particular, under suitable normalisation, the lattice Λ as defined above, the transformation behaviour can be realised over the Hilbert-class field of F. Since a Drinfeld module is uniquely defined by specifying a single image of a non-constant element of R, this function returns a non-constant (as first return value) and the image as a twisted polynomial over the Hilbert-class field as a second. In case the place is of degree one, the Drinfeld module will also be sign-normalized.
Extend(D, x, p) : RngUPolTwstElt, RngElt, PlcFunElt -> RngUPolTwstElt
Given D, the image of a non-constant element under a Drinfeld module for the ring R of functions integral outside p, an element x in R, compute the image of x.

Example FldFunAb_drinfeld (H46E6)

Although the code is not restricted to genus 1 (or 2) and even though hyperelliptic function fields can be handled in a more direct fashion, we will demonstrate the computation of a Drinfeld module on an elliptic curve.

We begin by defining a curve.

> k<w> := GF(4);
> kt<t> := PolynomialRing(k);
> kty<y> := PolynomialRing(kt);
> F := FunctionField(y^3+w*t^5+w*t);
> Genus(F);
1
> ClassNumber(F);
3
Now, to define a Drinfeld module, we need to single out an "infinite" place:
> p := InfinitePlaces(F)[1];
> Degree(p);
1
Since the place p is of degree 1, our Drinfeld module will be sign-normalised.
> A, D := AnalyticDrinfeldModule(F, p);
> H<h> := CoefficientRing(D);
> A;
w^2/(x + 1)*F.1
> D;
T_4^2 + ((w*x^5 + 1)/(x^5 + x)*$.1^2*h^2 + (w^2*x^5 + w^2*x^4 + w^2*x
+ 1)/(x^4 + x^3 + x^2 + x)*F.1^2*h + (x^4 + x^2 + w)/(x^2 +
1)*$.1^2)*T_4 + w^2/(x + 1)*F.1
So, the Drinfeld module is uniquely determined by the image of a single non-constant (A) which is chosen to have maximal valuation at p and sign 1.

The values of the Drinfeld module are defined over H which is the Hilbert-class field of F, ie. the maximal abelian unramified extension where p is completely split.

> Sign(A, p);
1
> Valuation(A, p);
-2
To compute the value of "the" Drinfeld module of a different element we use Extend:
> b := F!t;
> Extend(D, b, p);
w*T_4^3 + ((w*x^20 + w*x^19 + w*x^18 + w*x^17 + w*x^16 + w*x^15 +
w*x^14 + w*x^13 + w*x^12 + w*x^11 + w*x^10 + w*x^9 + w*x^8 + w*x^7 +
w*x^6 + w*x^5 + w*x^4 + w*x^3 + w*x^2 + w*x + w)/(x^4 + x^3 + x^2 +
x)*$.1^2*h^2 + (w^2*x^20 + w^2*x^19 + w^2*x^16 + w^2*x^15 + w^2*x^4 +
w^2*x^3 + w^2)/(x^3 + x^2 + x + 1)*$.1^2*h + (x^20 + x^18 + x^12 +
x^10 + w*x^4 + w*x^2 + w^2)/(x^2 + 1)*$.1^2)*T_4^2 + ((w*x^5 + w^2*x^3
+ w^2*x^2 + x + w)/(x^2 + 1)*$.1*h^2 + (w^2*x^5 + w^2*x^4 + x^3 +
w)/(x + 1)*$.1*h + (x^5 + w^2*x^3 + w*x^2 + w^2*x)*$.1)*T_4 + x
To compute a "Ray-class field" from here we can use the following:
> P := Places(F, 2)[1];
> a,b := TwoGenerators(P);
> GCD(Extend(D, a, p), Extend(D, b, p));
T_4^2 + ((w*x^5 + 1)/(x^5 + x)*$.1^2*h^2 + (w^2*x^5 + w^2*x^4 + w^2*x
+ 1)/(x^4 + x^3 + x^2 + x)*$.1^2*h + (x^4 + x^2 + w)/(x^2 +
1)*$.1^2)*T_4 + w^2/(x + 1)*$.1 + w^2
> Polynomial($1);
T_4^16 + ((w*x^5 + 1)/(x^5 + x)*F.1^2*h^2 + (w^2*x^5 + w^2*x^4 + w^2*x
    + 1)/(x^4 + x^3 + x^2 + x)*F.1^2*h + (x^4 + x^2 + w)/(x^2 +
    1)*F.1^2)*T_4^4 + (w^2/(x + 1)*F.1 + w^2)*T_4
> R := FunctionField($1 div Parent($1).1);
> R;
Algebraic function field defined over H by
T_4^15 + ((w*x^5 + 1)/(x^5 + x)*F.1^2*h^2 + (w^2*x^5 + w^2*x^4 + w^2*x
    + 1)/(x^4 + x^3 + x^2 + x)*F.1^2*h + (x^4 + x^2 + w)/(x^2 +
    1)*F.1^2)*T_4^3 + w^2/(x + 1)*F.1 + w^2
This should be an abelian extension over F, ramified only at p and P. So let's try to verify that:
> f := MinimalPolynomial(R.1, F);
> Degree(f);
45
> Ra := FunctionField(f:Check := false);
> NormGroup(Ra:Cond := 1*p+P);
(1/x, 1/x^2*F.1) + (x^2 + x + w^2, F.1 + x + 1)
Abelian Group isomorphic to Z
Defined on 1 generator in supergroup:
    $.1 = 2*$.1 + 3*$.2 + $.3 (free)
> D, sub_group := $1;
> W := AbelianExtension(D, sub_group);
> W;
Abelian extension of type [ 3, 15 ]
Defined modulo (1/x, 1/x^2*$.1) + (x^2 + x + w^2, $.1 + x + 1)
over Algebraic function field defined over Univariate rational
function field over GF(2^2) by
y^3 + w*t^5 + w*t
> FunctionField(W);
Algebraic function field defined over F by
$.1^3 + (x + 1)^-2 * (x^2 + x + w^2)^-1 * (F.1 + w*x + w) * (F.1 +
    w^2*x + w^2)
$.1^3 + (x) * (x + 1)^-4 * (F.1 + x + 1)^2 * (x^2 + x + w^2)^-1 * (F.1
    + w*x + w) * (F.1 + w^2*x + w^2)
$.1^5 + (1/(x^2 + 1)*F.1^2 + w^2/(x + 1)*F.1 + (x^2 + x + 1))*$.1^3 +
    (w/(x^2 + 1)*F.1^2 + w*x*F.1 + (x^4 + x^2 + 1))*$.1 + (x^2 + x +
    1)/(x^2 + 1)*F.1^2 + w^2*x*F.1 + x^4 + w^2*x^2 + w*x + w^2
> WW := $1;
> [HasRoot(Polynomial(Ra, x)) : x in DefiningPolynomials(WW)];
[ true, true, true]
Exp(x, p) : RngElt, PlcFunElt -> RngUPolTwstElt
    InfBound: RngIntElt                 Default: 5
    Map: Map                            Default: id
    Class: DivFunElt                    Default: 0
    Limit: RngIntElt                    Default: ∞
    Scale: RngElt                       Default: false
In Drinfeld's theory of elliptic modules, one associates an exponential function to a lattice. The transformation of this function under scaling of the lattice gives then rise to the "Drinfeld-module". This function computes an approximation to the exponential of the "standard-lattice". More precisely: let R be the ring of functions integral outside the place p and let C be the completion of the function field at p. Considered as a subset of C, R is a 1-dimensional lattice Λ in Drinfelds sense. The exponential associated to this lattice is the function exp: z to z∏'(1 - z/l) where the product is taken over all non-zero lattice points l. This function can be seen to be an additive analytic function.

For n>0, let now L(np) be the Riemann-Roch spaces and fn : z to z∏'(1 - z/l) (the product is over the non-zero elements of L(np)). It can be seen that fn to exp as n to∞. This intrinsic computes fn for n equal the value of InfBound. If Limit is given then the twised polynomial representing fn is truncated at that term. If Class is given and contains the divisor d, then instead of L(np) we use L(np + d) which will approximate a (in general) non-isomorphic exponential coming from the lattice from the ideal representing the finite part of d.

If Map is given, then the map is applied to each element in L(np) first, thus allowing to compute analytic approximations instead of alegebraic ones. Additionally, if Scale is given, the elements of L(np) are multiplied by this value before the functions are formed, corresponding to a scaling of the lattice.

The exponential is evaluated at x, the first argument. Typically, x will be the transcendental element of a polynomial ring, a twisted polynomial ring or a power series ring.

AnalyticModule(x, p) : RngElt, PlcFunElt -> RngElt
    InfBound: RngIntElt                 Default: 5
    Map: Map                            Default: id
    Class: DivFunElt                    Default: 0
    Limit: RngIntElt                    Default: ∞
    Scale: RngElt                       Default: false
Let Λ be the lattice as described for Exp above. By Drinfeld's theory, the exponential functions of Λ and xΛ are related through some polynomial. This function computed the polynomial for x, which is "the" image of x under the Drinfeld module defined by Λ. The use of the parameters is as for Exp above.
CanNormalize(F) : RngUPolTwstElt -> BoolElt, RngUPolTwstElt, RngElt
Let F be a twisted polynomial, typically over a completion. This function tries to conjugate F so that the coefficients are integral with small valuations. On success, true, the new polynomial and the element used to normalise F is returned.
CanSignNormalize(F) : RngUPolTwstElt -> BoolElt, RngUPolTwstElt, RngElt
Let F be a twisted polynomial, typically over a completion. This function tries to conjugate F so that the highest coefficient is an element in the residue class field. On success, true, the new polynomial and the element used to normalise F is returned.
AlgebraicToAnalytic(F, p) : RngUPolTwstElt, PlcFunElt -> RngUPolTwstElt
Given a non-trivial image F under a Drinfeld module with the "infinite place" p, compute a basis for a submodule of the lattice underlying F. The parameter RelPrec is used to limit the number of coefficients of the exponential that are reconstructed, thus it also limits the dimenstion of the submodule.
V2.28, 13 July 2023