# Galois Module Structure

If the base field $k$ for class field constructions is normal with respect to some subfield $k_0$, i.e. $k/k_0$ is normal with Galois group $G$ and if the defining modulus of the ideal group is $G$–invariant, then $G$ acts on the ideal group. The following functions view ideal groups as Galois modules. Given an abelian extension $A$ and parameters `All` and `Over`, we will consider this setup:

Let $k$ be the `BaseField` of $A$ and $k_1$ the coefficient field of $k$. If `All` is `true`, let $g := {\operatorname{Aut}}(k/k_1)$, otherwise, $g := \langle \hbox{\tt Over}\rangle$. In both cases we define $k_0 := {\operatorname{Fix}}(k, g)$. In particular, if $k$ is normal over the coefficient field $k_1$ then $k_0 = k_1$ and $g$ is the full Galois group.

In general $g$ is not required to contain $k_1$ automorphisms, so that any subset of the ${\mathbb{Q}}$ automorphism group is valid as input. By construction, $k$ is normal over $k_0$, and $g$ acts on the ideals of $k$. In general however, $g$ does not act on the ideal groups used to define $A$.

## Predicates

### `IsAbelian(A): FldAb -> BoolElt`

```magma
All : BoolElt                    Default: false
Over: [Map]                      Default: []
```

Returns `true` if and only if the abelian extension $A$ is abelian over $k_0$.

### `IsNormal(A): FldAb -> BoolElt`

```magma
All : BoolElt                    Default: false
Over: [Map]                      Default: []
```

Returns `true` if and only if the abelian extension $A$ is normal over $k_0$. This tests whether the defining ideal group is a $g$-module.

### `IsCentral(A): FldAb -> BoolElt`

```magma
All : BoolElt                    Default: false
Over: [Map]                      Default: []
```

Returns `true` if and only if the abelian extension $A$ is central over $k_0$. If $k$ is cyclic over $k_0$ then this is equivalent to checking if $A$ is abelian over $k_0$. This tests whether the defining ideal group is a $g$–module with trivial action: If $N$ is the norm group of $A$, the group extension

$$
1 \to N \to G \to g\to 1
$$

is central.

## Constructions

### `GenusField(A): FldAb -> FldAb`

```magma
All : BoolElt                    Default: false
Over: [Map]                      Default: []
```

The genus field is the maximal abelian extension of $k_0$ that is contained in the abelian extension $A$. The result of this function is an abelian extension of $k_0$.

### `H2_G_A(A): FldAb -> ModTupRng`

For $A$ such that $A$ is normal over ${\mathbb{Q}}$ with base field $k$ that is normal too, compute the 2nd cohomology group of the Galois group of $k$ acting on the ideal group defining $A$.

### `NormalSubfields(A): FldAb -> []`

```magma
Quot: SeqEnum[RngIntElt]                    Default: []
```

For an abelian extension, normal over $Q$ and defined over a normal number field $k$ as base field, return a list of all normal intermediate fields. If `Quot` is given, restrict to fields where the norm group has the abelian invariants as specified in `Quot`.

### `AbelianSubfield(A, U): FldAb, GrpAb -> FldAb`

### `FixedField(A, U): FldAb, GrpAb -> FldAb`

```magma
IsNormal: BoolElt                    Default: false
```

For an abelian extension $A$ with norm group map $G \to I$ for some finite abelian group $G$ and a subgroup $U<G$, define the field corresponding to $G/U$, ie. the field fixed by $U$. If `IsNormal` is given then any cohomology information that is present is transferred to the new field - if possible.

### `CohomologyModule(A): FldAb -> ModGrp, Map, Map, Map`

For an abelian extension $A$ defined over some normal field $k/Q$, compute the cohomology module (see Chapter [Cohomology and Extensions](../../FiniteGroups/CohomologyAndExtensions/index-cohomology-and-extensions.md#grpcohom-main)). The maps returned give the transition between the $Z$-modules used in the cohomology package and the ideal groups used to define $A$.

The first map returned maps between the automorphism group of $k$ (as an permutation group) and the actual automorphisms of the field. It is obtained as the third return value of [`AutomorphismGroup`](../GaloisGroupsAndAutomorphisms/automorphism.md#function-rngord-automorphismgroup).

The second map maps between the ideal group used to create $A$ and a standart representation of the same group.

The third map maps between the standart representation of the norm group and the $Z$-module.
