# Galois Cohomology

Magma has some rudimentary functions to aid computations in Galois cohomology of number fields.

## `Hilbert90(a, M): FldNumElt, Map[FldNum, FldNum] -> FldNumElt`

```magma
S: [RngOrdIdl]                    Default: false
```

Let $K$ be a number field and $M:K \to K$ be an automorphism of $K$ furthermore, denote by $k$ the fixed field of $M$, thus $M$ generates the automorphism group of the relative cyclic extension $K/k$. For some element $a$ in $K$, such that $N_{K/k}(a) = 1$, this function will find some element $b$ such that $a=b/M(b)$. If `S` is given it should contain a sequence of prime ideals such that there exists some $b$ in the $S$-unit group over $S$.

## `SUnitCohomologyProcess(S, U): {RngOrdIdl}, GrpPerm -> {1}`

```magma
ClassGroup  : BoolElt                    Default: false
Ramification: BoolElt                    Default: false
```

Let $k$ be a normal number field with (abstract) automorphism group $G$. For a set of prime ideals $S$ of $k$, which is closed under the action of the subgroup $U$ of $G$, a process is created that allows working with the cohomology of the multiplicative group of $k$ - partially represented by a group of $S$-units. If `ClassGroup` is given, the set $S$ is enlarged to support the current generators of the class group. If `Ramification` is present, then all ramified primes are also included in $S$.

During the computations with this object the set $S$ can be increased to allow the representation of a larger number of elements.

## `IsGloballySplit(C, l): {}, UserProgram -> BoolElt, UserProgram`

```magma
Sub    : GrpPerm                       Default: false
verbose: Cohomology                    Default: Verbose : 2
```

For a cohomology process $C$ as created by [`SUnitCohomologyProcess`](#function-rngord-sunitcohomologyprocess) and a $2$-cocycle $l:U\times U \to k$ given as a Magma-function, decide if $l$ is split, ie. if there exists a $1$-cochain $m:U \to k$ such that $\delta m = l$ for the cohomological coboundary map $\delta$. If `Sub` is given it has to be a subgroup of the automorphism group of the number field underlying the cohomology process, otherwise the full automorphism group is used. This allows to restrict a cocycle easily.

As a fixed cocycle $l$ assumes only finitely many values, we can consider it as a cocycle with values in some suitable $S$-unit group. Similarly, it is exists, $m$ also has values in some $S'$-unit group for a potentially larger set $S'$. This function first tries to “remove” ideals from the support of $l$, to make the set $S$ as small as possible. Then the set is enlarged to make sure that $m$, if exists, can be found with values in the $S'=S$-unit group. Since the final problem now involves only finitely generated abelian groups, it can be solved by Magma’s general cohomology machinery.

## `IsSplitAsIdealAt(I, l): RngOrdFracIdl, UserProgram -> BoolElt, UserProgram, [RngOrdIdl]`

```magma
Sub: GrpPerm                    Default: false
```

Let $U$ be a subgroup of the automorphism group $G$ of some number field $k$, $l:U\times U \to k^*$ a $2$-cocycle and $I$ some ideal in $k$. If `Sub` is given, $U$ is taken to be `Sub`, otherwise $U := G$. Assuming that each element $l(u,v)$ has a valuation at all ideals in the $U$-orbit of $I$, ie. we have a unique decomposition of ideals $l(u,v) = J^{x(u, v)} A(u, v)$ for integers $x(u, v)$ and ideals $A(u, v)$ coprime to $J$ for all $J$ in $I^U$. Then we can use $l$ to define a cocycle with values in $I^U$ which is a finitely generated group. This function determines if this cocycle splits, and if so, computes a $1$-cochain with values in $I^U$ for some fixed ordering of $I^U$. The cochain and $I^U$ are returned on success.
