# Places

## Creation of Structures

### `Places(F): FldFun -> PlcFun`

The set of places of the algebraic function field $F/k$.

## Creation of Elements

### General Function Field Places

#### `Decomposition(F, P): FldFunG, PlcFunElt -> [ PlcFunElt ]`

```magma
Al: MonStgElt                    Default: 
```

A sequence containing all places of $F/k$ lying above the place $P$ of any coefficient field of $F$. The function field $F$ must be a finite extension of $k(x)$. If $F$ is an extension of a rational function field over ${\mathbb{Q}}$ or ${\mathbb{F}}_q$ by a single monic integral polynomial, $P$ is a finite place and `Al` is set to `"Montes"` then the Montes algorithm [[Stainsby, 2018](../../references.md#cite-2015arxiv150601904s)] will be used to compute the decomposition.

#### `DecompositionType(F, P): FldFun, PlcFunElt -> [ <RngIntElt, RngIntElt> ]`

Sequence of tuples of residue degrees and ramification indices of the places of $F/k$ lying over the place P of the coefficient field $k(x)$ of $F$. The function field $F$ must be a finite extension of $k(x)$.

#### `Zeros(a): FldFunElt -> [ PlcFunElt ]`

#### `Zeros(a): RngFunOrdElt -> [ PlcFunElt ]`

A sequence containing all zeros of the algebraic function $a$.

#### `Poles(a): FldFunElt -> [ PlcFunElt ]`

#### `Poles(a): RngFunOrdElt -> [ PlcFunElt ]`

A sequence containing all poles of the algebraic function $a$.

#### `S ! I: PlcFun, RngFunOrdIdl -> PlcFunElt`

#### `Place(I): RngFunOrdIdl -> PlcFunElt`

The place corresponding to the prime ideal $I$, where $I$ is defined over the ‘finite’ or ‘infinite’ maximal order and $S$ is the set of places of a function field.

#### `Support(D): DivFunElt -> [ PlcFunElt ], [ RngIntElt ]`

#### `Support(P): PlcFunElt -> [ PlcFunElt ], [ RngIntElt ]`

Sequences containing the places and exponents occurring in the divisor $D$.

#### `AssignNames(~P, s): PlcFunElt, [ MonStgElt ]`

Change the print name employed when displaying $P$ to be the first element in the sequence of strings $s$ which must have length $1$.

#### `InfinitePlaces(F): FldFun -> [PlcFunElt]`

The infinite places of the function field $F$.

### Global Function Field Places

In this section $F/k$ denotes a global function field.

#### `HasPlace(F, m): FldFun, RngIntElt -> PlcFunElt`

Returns `true` and a place of degree $m$ if and only if there exists such in the function field $F/k$; `false` otherwise.

#### `HasRandomPlace(F, m): FldFun, RngIntElt -> BoolElt, PlcFunElt`

Returns `true` and a random place of degree $m$ in the function field $F/k$ or (`false` if there are none).

#### `RandomPlace(F, m): FldFun, RngIntElt -> PlcFunElt`

Returns a random place of degree $m$ in the function field $F/k$ or throws an error if there is none.

#### `Places(F, m): FldFun, RngIntElt -> SeqEnum[PlcFunElt]`

A sequence containing the places of degree $m$ of the function field $F/k$.

#### `Example: Place Creation (ex-92c345)`

Some creation of places is illustrated below.

```magma
> P<t> := PolynomialRing(Integers());
> N := NumberField(t^2 + 2);
> P<x> := PolynomialRing(N);
> P<y> := PolynomialRing(P);
> F<c> := FunctionField(y^4 + x^5 - N.1^7);
> F;
Algebraic function field defined over Univariate rational function field over N
by
y^4 + x^5 + 8*N.1
> Zeros(c);
[ (x^5 + 8*N.1, c + x^5 + 8*N.1) ]
> P<y> := PolynomialRing(F);
> F2<d> := FunctionField(y^2 + F!N.1);
> Decomposition(F2, $1[1]);
[ (x^5 + 8*N.1, c + 2*x^5 + 16*N.1) ]
> DecompositionType(F2, $2[1]);
[ <2, 1> ]
> Places(F2)!$3[1];
(x^5 + 8*N.1, c + 2*x^5 + 16*N.1)

```

## Related Structures

### Parent and Category

The sets of function field places form the Magma category `PlcFun`. The notional power structure exists as parent but allows no operations.

#### `FunctionField(S): PlcFun -> FldFun`

The corresponding function field of the set of places $S$.

#### `DivisorGroup(F): FldFunG -> DivFun`

The group of divisors of the algebraic function field $F/k$, which is the free abelian group generated by the elements of the set of places of $F/k$.

## Structure Invariants

### General Function Fields

#### `WeierstrassPlaces(F): FldFunG -> [PlcFunElt]`

```magma
SeparatingElement: FldFunGElt                    Default: 
```

The Weierstrass places of the function field $F/k$. The semantics of calling `WeierstrassPlaces()` with $F/k$ or the zero divisor of $F/k$ are identical. See the description of [`WeierstrassPlaces`](divisors.md#function-divfunelt-weierstrassplaces).

### Global Function Fields

In this section $F/k$ denotes a global function field.

#### `NumberOfPlacesOfDegreeOneOverExactConstantField(F, m): FldFun, RngIntElt -> RngIntElt`

#### `NumberOfPlacesOfDegreeOneECF(F, m): FldFunG, RngIntElt -> RngIntElt`

The number of places of degree one in the constant field extension of degree $m$ of the function field $F/k$. Contrary to the `Degree()` function the degree is here taken over the respective exact constant fields.

#### `NumberOfPlacesOfDegreeOneOverExactConstantFieldBound(F, m): FldFun, RngIntElt -> RngIntElt`

#### `NumberOfPlacesOfDegreeOneECFBound(F, m): FldFunG, RngIntElt -> RngIntElt`

The minimum of the Serre and Ihara bound on the number of places of degree one in the constant field extension of degree $m$ of the function field $F/k$. Contrary to the `Degree()` function the degree is here taken over the respective exact constant fields.

#### `NumberOfPlacesOfDegreeOverExactConstantField(F, m): FldFunG, RngIntElt -> RngIntElt`

#### `NumberOfPlacesDegECF(F, m): FldFunG, RngIntElt -> RngIntElt`

The number of places of degree $m$ of the function field $F/k$. Contrary to the `Degree()` function the degree is here taken over the respective exact constant fields.

## Structure Predicates

### `S1 eq S2: PlcFun, PlcFun -> BoolElt`

### `S1 ne S2: PlcFun, PlcFun -> BoolElt`

## Element Operations

### Parent and Category

#### `Parent(P): PlcFunElt -> PlcFun`

#### `Category(P): PlcFunElt -> Cat`

### Arithmetic Operators

#### `- P: PlcFunElt -> DivFunElt`

#### `P1 + P2: PlcFunElt, PlcFunElt -> DivFunElt`

#### `P1 - P2: PlcFunElt, PlcFunElt -> DivFunElt`

#### `k * P: RngIntElt, PlcFunElt -> DivFunElt`

#### `P div k: PlcFunElt, RngIntElt -> DivFunElt`

#### `P mod k: PlcFunElt, RngIntElt -> DivFunElt`

#### `Quotrem(P, k): PlcFunElt, RngIntElt -> DivFunElt, DivFunElt`

Returns divisors $D_1, D_2$ such that the place $P = kD_1 + D_2$ and the exponents in $D_2$ are of absolute value less than $|k|$. The operations `div` and `mod` yield $D_1$ resp. $D_2$.

### Equality and Membership

#### `P1 eq P2: PlcFunElt, PlcFunElt -> BoolElt`

#### `P1 ne P2: PlcFunElt, PlcFunElt -> BoolElt`

#### `P in S: PlcFunElt, PlcFun -> BoolElt`

#### `P notin S: PlcFunElt, PlcFun -> BoolElt`

### Predicates on Elements

#### `IsFinite(P): PlcFunElt -> BoolElt`

Returns `true` if the place $P$ is a ‘finite’ place.

#### `IsWeierstrassPlace(P): PlcFunElt -> BoolElt`

#### `IsWeierstrassPlace(F, P): FldFunG, PlcFunElt -> BoolElt`

Whether the degree one place $P$ is a Weierstraß place of its function field $F$. See the description of [`WeierstrassPlaces`](divisors.md#function-divfunelt-weierstrassplaces).

### Other Element Operations

#### `FunctionField(P): PlcFunElt -> FldFun`

The function field that corresponds to the place $P$.

#### `Degree(P): PlcFunElt -> RngIntElt`

The degree of the place $P$ over the constant field of definition $k$.

#### `RamificationIndex(P): PlcFunElt -> RngIntElt`

#### `RamificationDegree(P): PlcFunElt -> RngIntElt`

The ramification index of the place $P$ over its subplace of the rational function field $k(x)$ (the function field of $P$ must be a finite extension of $k(x)$).

#### `InertiaDegree(P): PlcFunElt -> RngIntElt`

#### `ResidueClassDegree(P): PlcFunElt -> RngIntElt`

The degree of inertia (or residue class degree) of a place $P$ over the corresponding subplace of the rational function field (the function field of $P$ must be a finite extension of $k(x)$)

#### `Minimum(P): PlcFunElt -> RngElt`

A monic prime polynomial in $k[x]$ or $1/x$ or an ideal, corresponding to the place of the coefficient field of the function field of the place $P$ which $P$ lies above (the function field of $P$ must be a finite extension of $k(x)$).

#### `ResidueClassField(P): PlcFunElt -> Rng, Map`

The residue class field of the place $P$ and the map from the order of the place into the field.

#### `Evaluate(a, P): RngElt, PlcFunElt -> RngElt`

Evaluate the algebraic function $a$ at the place $P$. If it is not defined at $P$, infinity is returned.

#### `Lift(a, P): RngElt, PlcFunElt -> FldFunElt`

#### `Lift(i, P): Infty, PlcFunElt -> FldFunElt`

Lift the element $a$ of the residue class field of the place $P$ (including infinity) to an algebraic function.

#### `TwoGenerators(P): PlcFunElt -> FldFunGElt, FldFunGElt`

Two algebraic functions having the place $P$ as their unique common zero.

#### `LocalUniformizer(P): PlcFunElt -> FldFunGElt`

#### `UniformizingElement(P): PlcFunElt -> FldFunGElt`

A local uniformizing parameter at the place $P$.

#### `Valuation(a, P): FldFunElt, PlcFunElt -> RngIntElt`

The valuation of the element $a$ at the place $P$.

#### `Ideal(P): PlcFunElt -> RngFunOrdIdl`

Create a prime ideal corresponding to the place $P$.

#### `Norm(P): PlcFunElt -> DivFunElt`

The divisor of the norm of the ideal of the place $P$.

#### `Example: places (ex-bbb5e4)`

```magma
> R<x> := FunctionField(GF(9));
> P<y> := PolynomialRing(R);
> f := y^4 + (2*x^5 + x^4 + 2*x^3 + x^2)*y^2 + x^8
>      + 2*x^6 + x^5 +x^4 + x^3 + x^2;
> F<a> := FunctionField(f);
> Genus(F);
7
> NumberOfPlacesDegECF(F, 2);
28
> P := RandomPlace(F, 2);
> P;
(x^2 + $.1^2*x + $.1^7, a + $.1^5*x + $.1^5)
> LocalUniformizer(P);
x^2 + $.1^2*x + $.1^7
> TwoGenerators(P);
x^2 + $.1^2*x + $.1^7 a + $.1^5*x + $.1^5
> ResidueClassField(P);
Finite field of size 3^4
> Evaluate(1/LocalUniformizer(P), P);
Infinity
> Valuation(1/LocalUniformizer(P), P);
-1

```

## Completion at Places

### `Completion(F, p): FldFun, PlcFunElt -> RngSerLaur, Map`

### `Completion(O, p): RngFunOrd, PlcFunElt -> RngSerPow, Map`

```magma
Precision: RngIntElt                    Default: 20
```

The completion of the algebraic function field $F$ or an order $O$ of such at the place $p$ of $F$ or the function field of $O$. The map from $F$ or $O$ into the series ring is returned also.

The series ring returned is an infinite precision ring whose default precision for elements is given by the `Precision` parameter.
