Automorphisms

The group of relative automorphisms of the abelian extension is isomorphic via the Artin map to the ideal group used to define the field. After defining equations are computed, the user can explicitly map ideals that are coprime to the defining modulus to automorphisms of the field.

ArtinMap(A) : FldAb -> Map
For an abelian extension A of F, this returns the Artin map as a map from the set of ideals of F to the group of automorphisms of A over F. (This induces an isomorphism from the defining group of A to the group of automorphisms).

Since this function constructs the number field defined by A, this may involve a lengthy calculation.

FrobeniusAutomorphism(A, p) : FldAb, RngOrdIdl -> Map
Computes the relative automorphism of the abelian extension A that is the Frobenius automorphism of p. Since this function constructs the number field defined by A, this may involve a lengthy calculation.
AutomorphismGroup(A) : FldAb -> GrpFP, [Map], Map
    All: BoolElt                        Default: false
    Over: [Map]                         Default: [ ]
If IsNormal is true for the abelian extension A with the given parameters, then the automorphism group of A over k0 is computed. Since this function constructs the number field defined by A, this may involve a lengthy calculation.
ProbableAutomorphismGroup(A) : FldAb -> GrpFP, SeqEnum
    Factor: RingIntElt                  Default: 1
In case of A and it's base field k both begin normal over Q, the automorphism group G of A/Q is a group extension of the abelian group coming from the definition of A and the automorphism group of k/Q. This functions sets up the corresponding group extension problem and uses DistinctExtensions to compute all group theoretical possibilities for G. In case of several possible groups, a further selection based on cycle types and their frequencies is attempted. The optional parameter Factor is passed on to ImproveAutomorphismGroup to control the amount of time spent on improving the guess.

While this function can be much faster than the direct computation of the automorphism group, the result of this computation is in general not guaranteed. Furthermore, as there are groups that cannot be distinguished by cycle types and their frequencies alone, correctness cannot be achieved by increasing the value of Factor. The intended use of this function is to have a (reasonable fast) method of checking is the field under consideration has an interesting group before an unnecessary long call to AutomorphismGroup is attempted.

ImproveAutomorphismGroup(F, E) : FldAb, SeqEnum -> GrpFP, SeqEnum
    Factor: RngIntElt                   Default: 1
Given the output of ProbableAutomorphismGroup or ImproveAutomorphismGroup try to improve the quality of the guess by splitting more primes to get more data for a cycle-type frequency analysis.

Example FldAb_ProbableAutomorphismGroup (H41E8)

We will demonstrate the use of ProbableAutomorphismGroup by investigating extensions of Q(√(10)):
> k := NumberField(Polynomial([-10, 0, 1]));
> R, mR := RayClassGroup(4*3*5*MaximalOrder(k));
> s := [x`subgroup : x in Subgroups(R:Quot := [2,2])];
> a := [ AbelianExtension(Inverse(mq)*mR) where
>                             _, mq := quo<R|x> : x in s ];
> n := [ x : x in a | IsNormal(x:All)];
> ProbableAutomorphismGroup(n[2]);
Finitely presented group on 3 generators
Relations
    $.2^2 = Id($)
    $.3^2 = Id($)
    ($.2, $.3) = Id($)
    ($.1, $.2^-1) = Id($)
    $.1^-1 * $.3 * $.1 * $.3^-1 * $.2^-1 = Id($)
    $.1^2 = Id($)
This shows that since there is only one group extension of a V4 by C2 with the action induced from the action of the Galois group of k on R, the Automorphism group is already determined. On the other hand, for the first subgroup there are more possibilities:
> g, c := ProbableAutomorphismGroup(n[1]);
> #c;
2
We will try to find the "correct" guess by looking at the orders of elements which correspond to decomposition types and their frequencies:
> {* Order(x) : x in CosetImage(c[1], sub<c[1]|>) *};
{* 1, 2^^7 *}
> {* Order(x) : x in CosetImage(c[2], sub<c[2]|>) *};
{* 1, 2^^3, 4^^4 *}
So, if we find a prime of degree 4 we know it's the second group. Looking at the frequencies, we can be pretty confident that we should be able to find a suitable prime - if it exists. Since among the first 100 primes there is not a single prime with a factor of degree 4 we are pretty confident that the first group is the correct one. By setting the verbose level, we can see how the decision is made:
> _ := ImproveAutomorphismGroup(n[1], c:Factor := 2);
Orders and multiplicities are  [
    {* 1, 2^^7 *},
    {* 1, 2^^3, 4^^4 *}
]
Probable orders and multiplicities are  {* 1^^3, 2^^34 *}
Error terms are  [ 0.00699329636679632541587354133907,
0.993006703633203674584126458661 ]
This indicates that out of 37 primes considered, non had a degree 4 factor, thus we are confident that the first group is the correct one.
AbsoluteGaloisGroup(A) : FldAb -> GrpPerm, SeqEnum, GaloisData
Given an abelian extension, compute its Galois group over Q, ie. the abstract automorphism group of a Q-normal closure of A. This function requires the defining equations for A as a number field to be known, but is considerably faster than calling GaloisGroup for the number field directly. The group is returned as a permutation group. All roots of the defining polynomial of the coefficient field of A as well as of the defining polynomials of A itself are returned in some local field. The zeros as well as data required for further computations are contained in the 3rd return value.
TwoCocycle(A) : FldAb -> UserProgram
For an abelian extension that is normal over Q and defined over a normal base field k/Q, the automorphism group of A/Q is a group extension of the Galois group of k by A. As a group extension it corresponds to an element in the second cohomology group and can be represented by an explicit 2-cocycle with values in the norm group. This function computes such a cocycle. It can be used as an element of the second cohomology group of the cohomology module of A, see CohomologyModule.
V2.28, 13 July 2023