Let D be an effective (positive) divisor. The ray class group modulo
D is a quotient of the group of divisors that are coprime to D modulo
certain principal divisors. It may be computed using the exact sequence:
1 to k x to O x m to Clm to Cl to 1
Note that in contrast to the number field case, the ray class group of a
function field is infinite.
The map returned as the second return value is the map from the
ray class group into the group of divisors and admits a pointwise inverse
for the computation of discrete logarithms.
Since this function uses the class group of the function field in an
essential way, it may be necessary for large examples to precompute the
class group. Using ClassGroup directly gives access
to options that may be necessary for complicated fields.
We will demonstrate the creation of some ray class and ray residue groups.
First we have to create a function field:
> k<w> := GF(4);
> kt<t> := PolynomialRing(k);
> ktx<x> := PolynomialRing(kt);
> K := FunctionField(x^3-w*t*x^2+x+t);
Now, to create some divisors:
> lp := Places(K, 2);
> D1 := 4*lp[2]+2*lp[6];
> D2 := &+Support(D1);
And now the groups:
> G1, mG1 := RayResidueRing(D1); G1;
Abelian Group isomorphic to Z/2 + Z/2 + Z/2 + Z/2 + Z/2 + Z/2 +
Z/2 + Z/4 + Z/60 + Z/60
Defined on 10 generators
Relations:
2*G1.1 = 0
2*G1.2 = 0
2*G1.3 = 0
2*G1.4 = 0
2*G1.5 = 0
2*G1.6 = 0
2*G1.7 = 0
4*G1.8 = 0
60*G1.9 = 0
60*G1.10 = 0
> G2, mG2 := RayResidueRing(D2); G2;
Abelian Group isomorphic to Z/15 + Z/15
Defined on 2 generators
Relations:
15*G2.1 = 0
15*G2.2 = 0
G
1 = O
D1 x should surject onto D
2 = O
D2 x since
D
2 | D
1:
> h := hom<G1 -> G2 | [G1.i@mG1@@mG2 : i in [1..Ngens(G1)]]>;
> Image(h) eq G2;
true
> [ h(G1.i) : i in [1..Ngens(G1)]];
[
0,
0,
0,
0,
0,
0,
0,
0,
G2.2,
G2.1
]
Ray class groups are similar and can be mapped in the same way:
> R1, mR1 := RayClassGroup(D1);
> R2, mR2 := RayClassGroup(D2); R2;
Abelian Group isomorphic to Z/5 + Z/15 + Z
Defined on 3 generators
Relations:
5*R2.1 = 0
15*R2.2 = 0
> hR := hom<R1 -> R2 | [R1.i@mR1@@mR2 : i in [1..Ngens(R1)]]>;
> Image(hR);
Abelian Group isomorphic to Z/5 + Z/15 + Z
Defined on 3 generators in supergroup R2:
$.1 = R2.1
$.2 = R2.2
$.3 = R2.3
Relations:
5*$.1 = 0
15*$.2 = 0
> $1 eq R2;
true
Note that the missing C
3 part in comparing G
2 and R
2 corresponds
to factoring by k
x . The free factor comes from the class group.
Now, let us investigate the defining exact sequence for R2:
> C, mC := ClassGroup(K);
> h1 := map<K -> G2 | x :-> (K!x)@@mG2>;
> h2 := hom<G2 -> R2 | [ G2.i@mG2@@mR2 : i in [1..Ngens(G2)]]>;
> h3 := hom<R2 -> C | [ R2.i@mR2@@mC : i in [1..Ngens(R2)]]>;
> sub<G2 | [h1(x) : x in k | x ne 0]> eq Kernel(h2);
> Image(h2) eq Kernel(h3);
> Image(h3) eq C;
So indeed, the exact sequence property holds.
[Next][Prev] [Right] [____]
[Up] [Index] [Root]