[back] [prev] [next] [index] [root]

 


FindMaximalCentralField

Finds the maximal factorgroup where a list of automorphisms acts trivial.

Syntax:

sg := FindMaximalCentralField(o | I [, inf][, aut]);
sg := FindMaximalCentralField(G [, aut]);

Matrix
  sg  
describing the aditional relations
order
  o  
integral ideal
  I  
list
  inf  
of infinite places
AbelianGroup
  G  
must be from RayClassGroupToAbelianGroup
list
  aut  
of automorphisms of o, if omitted OrderAutomorphisms(o, []) is used.

Description:

no detailed description available yet


Example:

We'll investigate the ray class field mod m := (6)\p|1^\infty\p|2^\infty in k := Q(\sqrt{10}):

kash> o := OrderMaximal(Z, 2, 10);
Generating polynomial: x^2 - 10
Discriminant: 40 

kash> OrderAutomorphisms(o);
[ [0, 1], [0, -1] ]
kash> G := RayClassGroupToAbelianGroup(6*o, [1, 2]);
RayClassGroupToAbelianGroup(<6>, [ 1, 2 ])
Group with relations:
[2 0 0]
[0 4 0]
[0 0 2]
kash> rcg := FindMaximalCentralField(G);
[2 0 0]
[0 2 0]
[0 0 2]
[0 0 0]
[0 0 0]
[0 0 0]



Example:

Since rcg corresponds not to the whole group, we can construct two fields that are normal over Q: the ray class field modulo m and the maximal central extension of k:

kash> cf1 := RayClassField(6*o, [1, 2], rcg);
[ x^2 - 6, x^2 - 2, x^2 + 2 ]
kash> cf2 := RayClassField(6*o, [1, 2]);
[ x^2 - 6, x^2 + 2, x^4 + [8, -4]*x^2 + [28, -8] ]



Example:

Finally we'll compute defining equations and the automorphisms:

kash> O1 := RayClassFieldAuto(cf1);
[       F[1]
            /
           /
       E1[1]
      /
     /
    Q
    F  [ 1]     x^8 - 24*x^6 + 248*x^4 + 288*x^2 + 2704
    E 1[ 1]     x^2 - 10
    Discriminant: <17352869066524232277088370178392064> 
    , [ a, a*b, a*b*c, a*b*c*d, a*b*d, a*c, a*c*d, a*d, b, b*c, b*c*d, b*d, 
      c, c*d, d, e ] ]



Example:

… and see that O1 is abelian over Q whereas O2 is non-abelian. Since k is cyclic over Q, central extensions coincide with absolute abelian ones.

kash> a := O1[2][Position(O1[2], "a")];
a
kash> b := O1[2][Position(O1[2], "b")];;
kash> c := O1[2][Position(O1[2], "c")];;
kash> d := O1[2][Position(O1[2], "d")];;
kash> a*b = b*a; a*c = c*a; a*d = d*a;
true
true
true
kash> b*c = c*b; b*d = d*b; c*d = d*c;true
true
> true


<- back[back] [prev] [next] [index] [root]