Extensions of Series Rings

Extensions of series rings are either unramified or totally ramified. Only series rings defined over finite fields can be extended. We recommend constructing polynomials from sequences rather than by addition of terms, especially over fields, to avoid some precision loss. For example, x4 + t will not have full precision in the constant coefficient as there will be a O term in the constant coefficient of x4 which will reduce its precision as a field element. Extensions require full precision polynomials and some polynomials such as x4 + t may not have enough precision to be used to construct an extension whereas the equivalent Polynomial([t, 0, 0, 0, 1]) will.

Contents

Constructions of Extensions

UnramifiedExtension(R, f) : RngSerPow[FldFin], RngUPolElt -> RngSerExt
UnramifiedExtension(R, f) : RngSerLaur[FldFin], RngUPolElt -> RngSerExt
UnramifiedExtension(R, f) : RngSerExt, RngUPolElt -> RngSerExt
Construct the unramified extension of R, a series ring or an extension thereof, defined by the inertial polynomial f, that is, adjoin a root of f to R.
TotallyRamifiedExtension(R, f) : RngSerPow[FldFin], RngUPolElt -> RngSerExt
TotallyRamifiedExtension(R, f) : RngSerLaur[FldFin], RngUPolElt -> RngSerExt
TotallyRamifiedExtension(R, f) : RngSerExt, RngUPolElt -> RngSerExt
    MaxPrecision: RngIntElt             Default: 
Construct a totally ramified extension of R, a series ring or an extension thereof, defined by the eisenstein polynomial f, that is, adjoin a root of f to R.

The parameter MaxPrecision defaults to the precision of R. It can be set to the maximum precision the coefficients of f are known to, which must not be less than the precision of R. This allows the precision of the result to be increased to the degree of f multiplied by this maximum precision.

The polynomial f may be given over a series ring or an extension of a series ring having a higher precision than R. This allows the precision of the result to be increased up to the precision the polynomial is known to (or MaxPrecision if set) without losing any of the polynomial known past the precision of R.

The precision of a ramified extension cannot be increased unless the defining polynomial is known to more precision than the coefficient ring, indicated either by providing the polynomial to greater precision or by setting MaxPrecision. This should be taken into account when constructing ramified extensions, especially if polynomials are to be factored over the extension.

ChangePrecision(E, r) : RngSerExt, RngIntElt -> RngSerExt
ChangePrecision(~E, r) : RngSerExt, RngIntElt ->
The extension of a series ring E with precision r. It is not possible to increase the precision of a ramified extension unless the parameter MaxPrecision was set on construction of the extension and r is less than or equal to this value multiplied by the ramification degree or the polynomial used in creating the extension was given to more precision than the coefficient ring of E.
FieldOfFractions(E) : RngSerExt -> RngSerExt
The field of fractions of the extension of a series ring E.

Example RngSer_extensions_eg (H50E5)

We show a simple creation of a two-step extension and change its precision.
> P<t> := PowerSeriesRing(GF(101), 50);
> PP<tt> := PowerSeriesRing(GF(101));
> R<x> := PolynomialRing(PP);
> U := UnramifiedExtension(P, x^2 + 2);
> T := TotallyRamifiedExtension(U, x^2 + tt*x + tt); T;
Extension of Extension of Power series ring in t over GF(101) with fixed
absolute precision 50 by x^2 + 2 + O(t^50) by x^2 + (t + O(t^50))*x + t +
    O(t^50)
> Precision($1);
100
> ChangePrecision($2, 200);
Extension of Extension of Power series ring in $.1 over GF(101) with fixed
absolute precision 100 by x^2 + 2 + O($.1^100) by x^2 + ($.1 + O($.1^100))*x +
    $.1 + O($.1^100)
> ChangePrecision($1, 1000);
Extension of Extension of Power series ring in $.1 over GF(101) with fixed
absolute precision 500 by x^2 + 2 + O($.1^500) by x^2 + ($.1 + O($.1^500))*x +
    $.1 + O($.1^500)
> ChangePrecision($1, 20);
Extension of Extension of Power series ring in $.1 over GF(101) with fixed
absolute precision 10 by x^2 + 2 + O($.1^10) by x^2 + ($.1 + O($.1^10))*x + $.1
    + O($.1^10)
Both U and T have a field of fractions.
> FieldOfFractions(U);
Extension of Laurent series field in $.1 over GF(101) with fixed relative
precision 50 by (1 + O($.1^50))*x^2 + O($.1^50)*x + 2 + O($.1^50)
> FieldOfFractions(T);
Extension of Extension of Laurent series field in $.1 over GF(101) with fixed
relative precision 50 by (1 + O($.1^50))*x^2 + O($.1^50)*x + 2 + O($.1^50) by (1
    + O($.1^50))*x^2 + ($.1 + O($.1^50))*x + $.1 + O($.1^50)

Operations on Extensions

Precision(E) : RngSerExt -> RngIntElt
GetPrecision(E) : RngSerExt -> RngIntElt
The maximum precision elements of the extension of a series ring E may have.
CoefficientRing(E) : RngSerExt -> Rng
BaseRing(E) : RngSerExt -> Rng
The ring the extension of a series ring E was defined over.
DefiningPolynomial(E) : RngSerExt -> RngUPolElt
The polynomial used to define the extension E.
InertiaDegree(E) : RngSerExt -> RngIntElt
The degree of the extension E if E is an unramified extension, 1 otherwise.
RamificationIndex(E) : RngSerExt -> RngIntElt
RamificationDegree(E) : RngSerExt -> RngIntElt
The degree of the extension E if E is a totally ramified extension, 1 otherwise.
ResidueClassField(E) : RngSerExt -> FldFin
The residue class field of the extension E, that is, E / π E.
UniformizingElement(E) : RngSerExt -> RngSerExtElt
A uniformizing element for the extension E, that is, an element of E of valuation 1.
IntegerRing(E) : RngSerExt -> RngSerExt
Integers(E) : RngSerExt -> RngSerExt
RingOfIntegers(E) : RngSerExt -> RngSerExt
The ring of integers of the extension E of a series ring if E is a field (extension of a laurent series ring).
E1 eq E2 : RngSerExt, RngSerExt -> BoolElt
Whether extensions E1 and E2 are considered to be equal.
E . i : RngSerExt, RngIntElt -> RngSerExtElt
The primitive element of the extension E, that is, the root of the defining polynomial of E adjoined to the coefficient ring of E to construct E.
AssignNames(~E, S) : RngSerExt, [ MonStgElt ] ->
Assign the string in the sequence S to be the name of the primitive element of E, that is, the root of the defining polynomial adjoined to the coefficient ring of E to construct E.

Example RngSer_ext-ops (H50E6)

A number of the operations above are applied to a two-step extension
> L<t> := LaurentSeriesRing(GF(53), 30);
> P<x> := PolynomialRing(L);
> U := UnramifiedExtension(L, x^3 + 3*x^2 + x + 4);
> P<y> := PolynomialRing(U);
> T := TotallyRamifiedExtension(U, Polynomial([t, 0, 0, 0, 1]));
> Precision(U);
30
> Precision(T);
120
> CoefficientRing(U);
Laurent series field in t over GF(53) with fixed relative precision 30
> CoefficientRing(T);
Extension of Laurent series field in t over GF(53) with fixed relative precision
30 by (1 + O(t^30))*x^3 + (3 + O(t^30))*x^2 + (1 + O(t^30))*x + 4 + O(t^30)
> DefiningPolynomial(U);
(1 + O(t^30))*x^3 + (3 + O(t^30))*x^2 + (1 + O(t^30))*x + 4 + O(t^30)
> DefiningPolynomial(T);
(1 + O(t^30))*y^4 + O(t^30)*y^3 + O(t^30)*y^2 + O(t^30)*y + t + O(t^30)
> InertiaDegree(U);
3
> InertiaDegree(T);
1
> RamificationDegree(U);
1
> RamificationDegree(T);
4
> ResidueClassField(U);
Finite field of size 53^3
Mapping from: RngSerExt: U to GF(53^3)
> ResidueClassField(T);
Finite field of size 53^3
Mapping from: RngSerExt: T to GF(53^3)
> UniformizingElement(U);
t + O(t^31)
> UniformizingElement(T);
(1 + O(t^30))*$.1 + O(t^30)
> Integers(T);
Extension of Extension of Power series ring in $.1 over GF(53) with fixed
absolute precision 30 by x^3 + (3 + O($.1^30))*x^2 + x + 4 + O($.1^30) by x^4 +
    $.1 + O($.1^30)
> U.1;
(1 + O(t^30))*$.1 + O(t^30)
> T.1;
(1 + O(t^30))*$.1 + O(t^30)

Elements of Extensions

x * y : RngSerExtElt, RngSerExtElt -> RngSerExtElt
x + y : RngSerExtElt, RngSerExtElt -> RngSerExtElt
x - y : RngSerExtElt, RngSerExtElt -> RngSerExtElt
- x : RngSerExtElt -> RngSerExtElt
x ^ n : RngSerExtElt, RngIntElt -> RngSerExtElt
x div y : RngSerExtElt, RngSerExtElt -> RngSerExtElt
x / y : RngSerExtElt, RngSerExtElt -> RngSerExtElt
x eq y : RngSerExtElt, RngSerExtElt -> BoolElt
IsZero(e) : RngSerExtElt -> BoolElt
IsOne(e) : RngSerExtElt -> BoolElt
IsMinusOne(e) : RngSerExtElt -> BoolElt
IsUnit(e) : RngSerExtElt -> BoolElt
Valuation(e) : RngSerExtElt -> RngIntElt
The valuation of the element e of an extension of a series ring. This is the index of the largest power of π which divides e.
RelativePrecision(e) : RngSerExtElt -> RngIntElt
The relative precision of the element e of an extension of a series ring. This is the number of digits of e (in π) which are known.
AbsolutePrecision(e) : RngSerExtElt -> RngIntElt
The absolute precision of the element e of an extension of a series ring. This is the same as the sum of the relative precision of e and the valuation of e.
Coefficients(e) : RngSerExtElt -> [ RngElt ]
Eltseq(e) : RngSerExtElt -> [ RngElt ]
ElementToSequence(e) : RngSerExtElt -> [ RngElt ]
Given an element e of an extension of a series ring, return the coefficients of e with respect to the powers of the uniformizing element of the extension.

Example RngSer_serext-simple (H50E7)

We show some simple arithmetic with some elements of some extensions.
> P<t> := PowerSeriesRing(GF(101), 50);
> R<x> := PolynomialRing(P);
> U<u> := UnramifiedExtension(P, x^2 + 2*x + 3);
> UF := FieldOfFractions(U);
> R<y> := PolynomialRing(U);
> T<tt> := TotallyRamifiedExtension(U, y^2 + t*y + t);
> TF<tf> := FieldOfFractions(T);
> UF<uf> := FieldOfFractions(U);
> u + t;
u + t + O(t^50)
> uf * t;
($.1 + O($.1^50))*uf + O($.1^51)
> tf eq tt;
false
> tf - tt;
O($.1^50)*tf + O($.1^50)
> IsZero($1);
false
> Valuation($2);
100
> Valuation(tt);
1
> Valuation(U!t);
1
> Valuation(T!t);
2
> RelativePrecision(u);
50
> AbsolutePrecision(u);
50
> AbsolutePrecision(uf);
50
> RelativePrecision(uf);
50
> RelativePrecision(u - uf);
0
> AbsolutePrecision(u - uf);
50
> u^7;
(13 + O(t^50))*u + 71 + O(t^50)
> Coefficients($1);
[
    71 + O(t^50),
    13 + O(t^50)
]
> tt^8;
(4*t^4 + 91*t^5 + 6*t^6 + 100*t^7 + O(t^50))*tt + t^4 + 95*t^5 + 5*t^6 + 100*t^7
    + O(t^50)
> Coefficients($1);
[ t^4 + 95*t^5 + 5*t^6 + 100*t^7 + O(t^50), 4*t^4 + 91*t^5 + 6*t^6 + 100*t^7 +
    O(t^50) ]

Optimized Representation

OptimizedRepresentation(E) : RngSerExt -> RngSer, Map
OptimisedRepresentation(E) : RngSerExt -> RngSer, Map
An optimized representation for the unramified extension E of a series ring. The defining polynomial of E must be coercible into the residue class field. The result is a series ring over the residue class field of E and a map from E to this series ring.

Example RngSer_opt-rep (H50E8)

We give a simple example of the use of OptimizedRepresentation.
> P<t> := PowerSeriesRing(GF(101), 50);
> R<x> := PolynomialRing(P);
> U<u> := UnramifiedExtension(P, x^2 + 2*x + 3);
> U;
Extension of Power series ring in t over GF(101) with fixed absolute precision
50 by x^2 + (2 + O(t^50))*x + 3 + O(t^50)
> OptimizedRepresentation(U);
Power series ring in $.1 over GF(101^2) with fixed absolute precision 50
Mapping from: RngSerExt: U to Power series ring in s over GF(101^2) with fixed
absolute precision 50 given by a rule
V2.28, 13 July 2023