# Degree localization of a rational function field

## Degree localization

Given $k(x)$ a (univariate) rational function field, there are two rings of interest, both of which are Euclidean:

• $$$k[x]$$$
• k_\infty(x) = {a/b | a, b \in k[x] \;\;\mbox{where}\;\; \deg(a) \leq \deg(b)}

The second of these rings is the localization of $k[1/x]$ at $(1/x)$ inside the rational function field $k(x)$, i.e. the localization of the function field at the point at infinity, i.e. the valuation ring for valuation $-$degree$(x)$.

We refer to this ring as the degree localization of the rational function field $k(x)$.

### Construction of the degree localization

The degree localization of a rational function field $k(x)$ can be constructed using a localization constructor, passing in the degree function as argument.

localizationMethod
localization(K::RationalFunctionField{T}, ::typeof(degree)) where T <: FieldElement

Return the localization of $k[1/x]$ at $(1/x)$ inside the rational function field $k(x)$, i.e. the localization of the function field at the point at infinity, i.e. the valuation ring for valuation $-$degree$(x)$. This is the ring $k_\infty(x) = \{ f/g | \deg(f) \leq \deg(g)\}$.

#### Example +

julia> K, x = RationalFunctionField(FlintQQ, "x");julia> R = localization(K, degree)Degree localization of Rational function field over Rational Field

### Elements of the degree localization

Elements of the degree localization are created using the parent object $R$ representing the degree localization

#### Example +

julia> K, x = RationalFunctionField(FlintQQ, "x");julia> R = localization(K, degree)Degree localization of Rational function field over Rational Fieldjulia> a = R()0julia> b = R(1)1julia> c = R((x + 1)//x)(x + 1)//x

Note that the degree of the denominator of the function field element passed to the constructor must be at least that of the numerator or an exception is raised.

### Element functionality

degreeMethod
 degree(a::KInftyElem)

Return the degree of the given element, i.e. degree(numerator) - degree(denominator).

valuationMethod
valuation(a::KInftyElem)

Return the degree valuation of the given element, i.e. -degree(a).

One can test whether a given element of a rational function field is in the degree localization.

inMethod
in(a::Generic.Rat{T}, R::KInftyRing{T}) where T <: FieldElement

Return true if the given element of the rational function field is an element of k_\infty(x), i.e. if degree(numerator) <= degree(denominator).

All basic arithmetic operations are provided for elements of the degree localization.

As the degree localization is a Euclidean ring, all standard Euclidean functions, including div, divrem, mod, gcd, gcdx, are provided.