# Operations with Fields

## `BaseRing(L): RngLocA -> Rng`

## `CoefficientRing(L): RngLocA -> Rng`

Return the coefficient field of the local field $L$. This is the field which was extended to construct $L$.

## `DefiningPolynomial(L): RngLocA -> RngUPolElt`

Return the polynomial used to define the local field $L$ as an extension of its coefficient field.

## `Degree(L): RngLocA -> RngIntElt`

Return the degree of the local field $L$, that is, the degree of its defining polynomial.

## `Degree(L, R): RngLocA, Rng -> RngIntElt`

Return the degree of $L$ as an extension of $R$ where $R$ is some coefficient ring of $L$.

## `InertiaDegree(L): RngLocA -> RngIntElt`

## `RamificationDegree(L): RngLocA -> RngIntElt`

## `RamificationIndex(L): RngLocA -> RngIntElt`

Return the degree of the inertial or totally ramified subfield of the local field $L$ as an extension of the coefficient field of $L$.

## `Precision(L): RngLocA -> RngIntElt`

Return the precision of the local field $L$. This is the maximum number of digits which can occur in an element of $L$, the difference between the valuation of an element of $L$ and the valuation of the term of highest valuation occurring in that element.

## `Prime(L): RngLocA -> RngElt`

Return the prime of the local field $L$. This is the same as the prime of the coefficient field of $L$.

## `Example: ops (ex-ef970a)`

Continuing from the first example we have :

```magma
> CoefficientRing(L);
7-adic field mod 7^50
> DefiningPolynomial(L);
$.1^6 + (32 + O(7^50))*$.1^5 + (390 + O(7^50))*$.1^4 + (2284 + O(7^50))*$.1^3 +
    (6588 + O(7^50))*$.1^2 + (8744 + O(7^50))*$.1 + 5452 + O(7^50)
> Precision(L);
150
> Prime(L);
7
> Degree(L); RamificationDegree(L); InertiaDegree(L);
6
3
2

```

## `QuotientRepresentation(L): RngLocA -> RngUPolRes`

Return the polynomial quotient ring which is isomorphic to the local field $L$ and is used to represent $L$.

## `RamifiedRepresentation(L): RngLocA -> FldPad, Map`

Return the local field isomorphic to the local field $L$ constructed as an unramified then a ramified extension and the map from $L$ into the isomorphic field.

## `Example: reps (ex-a41b45)`

We create a $1$ step local field and compute its representation as a $2$ step local field.

```magma
> P<x> := PolynomialRing(Integers());
> L<a> := LocalField(pAdicField(7, 50), x^6 - 49*x^2 + 686);
> L;
Extension of 7-adic field mod 7^50 by x^6 + O(7^50)*x^5 + O(7^50)*x^4 +
    O(7^50)*x^3 - (7^2 + O(7^52))*x^2 + O(7^50)*x + 2*7^3 + O(7^53)
> QuotientRepresentation(L);
Univariate Quotient Polynomial Algebra in $.1 over 7-adic field mod 7^50
with modulus $.1^6 + O(7^50)*$.1^5 + O(7^50)*$.1^4 + O(7^50)*$.1^3 - (7^2 +
    O(7^52))*$.1^2 + O(7^50)*$.1 + 2*7^3 + O(7^53)
> RR, m := RamifiedRepresentation(L);
> RR;
Totally ramified extension defined by the polynomial x^2 +
    417092732355694537113348201703437033788663*$.1^2 +
    586194602218356762336379252895075698537137*$.1 -
    130094113224633998166887533755901214096597
 over Unramified extension defined by the polynomial x^3 + 6*x + 2
 over 7-adic field mod 7^50
> m(L.1);
RR.1 + O(RR.1^92)
> RR.1 @@ m;
O(7^48)*$.1^5 + O(7^48)*$.1^4 + O(7^49)*$.1^3 + O(7^49)*$.1^2 + $.1 + O(7^50)
> CoefficientRing(RR).1 @@ m;
O(7^34)*$.1^5 - (954564700580430506024960512238*7^-1 + O(7^35))*$.1^4 +
    O(7^36)*$.1^3 + (1031213687115590174398504554631*7^-1 + O(7^35))*$.1^2 +
    O(7^37)*$.1 + 131284877366067295106350173568*7 + O(7^36)

```

## `AssignNames(~L, S): RngLocA, SeqEnum[MonStgElt]`

Assign the name in the sequence $S$ to the generator of the extension defining the local field $L$.

## `Name(L, i): RngLocA, RngIntElt -> RngLocAElt`

Return the generator of the local field $L$ which has assigned to it the name in the sequence $S$ which was input to `AssignNames`. The only valid input for $i$ is $1$.

## `Discriminant(L): RngLocA -> RngElt`

Return the discriminant of the local field $L$.

## `ResidueClassField(L): RngLocA -> Rng, Map`

Return the residue class field of the maximal order of the local field $L$ and the map between $L$ and its residue class field.

## `RelativeField(L, m): RngLocA, Map -> RngLocA, Map, Map`

Return $L$ as an extension of the domain of the map $m$ which should be a map from a subfield of $L$ (having the same coefficient ring as $L$) into $L$.

## Predicates on Fields

### `IsRamified(L): RngLocA -> BoolElt`

Return whether the local field $L$ has a non trivial ramified subfield, that is, the ramification degree of $L$ is greater than $1$.

### `IsTamelyRamified(L): RngLocA -> BoolElt`

### `IsWildlyRamified(L): RngLocA -> BoolElt`

Return whether the local field $L$ is tamely or wildly ramified.

### `IsTotallyRamified(L): RngLocA -> BoolElt`

Return whether the local field $L$ is a totally ramified extension, that is, $L$ has a trivial inertial subfield.

### `IsUnramified(L): RngLocA -> BoolElt`

Return whether the local field $L$ is equal to its inertial subfield.
