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, \(x^4 + t\) will not have full precision in the constant coefficient as there will be a \(O\) term in the constant coefficient of \(x^4\) which will reduce its precision as a field element. Extensions require full precision polynomials and some polynomials such as \(x^4 + t\) may not have enough precision to be used to construct an extension whereas the equivalent Polynomial([t, 0, 0, 0, 1]) will.

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: Extensions Eg (ex-0fa010)#

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)

Run in calculator

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)

Run in calculator

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 / \pi 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: Ext Ops (ex-b88c0a)#

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)

Run in calculator

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 \(\pi\) 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 \(\pi\)) 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: Serext Simple (ex-77b403)#

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) ]

Run in calculator

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: Opt Rep (ex-95694d)#

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

Run in calculator