The parameters describing a local ring or field are: the characteristic p of its residue class field, the inertia degree f or inertial polynomial f, the Eisenstein polynomial g of degree e describing the totally ramified extension of the inertia ring and the precision n. For local rings the precision is interpreted as an absolute precision, (specifying to what valuation the digits of the element are known) but for local fields it is interpreted as a relative precision, (specifying how many digits of the element are known).
By using the following functions any p-adic ring or field and any local ring or field can be created. Helper functions are provided to indicate whether a polynomial is inertial or eisenstein.
Precision: RngIntElt Default: 20
Create the ring (field) of p-adic integers (numbers) with precision n. If n is not given the floating p-adic ring (field) with infinite precision is created but elements except for the embedded integers and coercible rationals are created with the default precision given by Precision. The angle bracket notation can be used to assign a name to the uniformizing element e.g. Zp<t> := pAdicRing(p).
Form a local ring or field K by extending the inertia ring or field of L by the index f or the inertial polynomial f. The angle bracket notation can be used to assign a name to the uniformizing element and inertial element e.g. K<pi, a> := UnramifiedExtension(L, f). The same can be achieved by ext<L | f>. If f is an integer then L must have finite precision, otherwise L can be any local ring or field.
Form the totally ramified extension K of L defined by the polynomial g which is required to be an Eisenstein polynomial over L. The Eisenstein polynomial for the extended ring or field is obtained as the minimal polynomial of a root of g over the inertia ring or field of L. L can be any local ring or field. The angle bracket notation can be used to assign a name to the uniformizing element and the inertial element e.g. K<pi,a> := TotallyRamifiedExtension(L, g). The same can be achieved by ext<L | g>.
Create the local ring (field) whose inertial subring (subfield) is an unramified extension of degree f of the inertial subring (subfield) of L or an extension defined by the inertial polynomial f (or g) and whose ramified extension is a ramified extension of the ramified extension of L defined by the Eisenstein polynomial g (or f). If one of the arguments is an integer then L must have finite precision, otherwise L can be any local ring or field. The arguments cannot both define an unramified extension or both define a ramified extension. The angle bracket notation can be used to assign a name to the uniformizing element and the inertial element e.g. K<pi, a> := ext<L | f, g> or K<pi, a> := ext<L | g, f> The constructor can also be used with only one right hand side argument.
Return true iff g is an Eisenstein polynomial. The coefficients of g must lie in a local ring or field. The valuation used is that of the coefficient ring or field.
Return true iff g is an inertial polynomial. The coefficients of g must lie in a local ring or field. The residue field used is that of the ring corresponding to the coefficient ring or field.
> L<b, a> := ext<pAdicRing(5) | x^4 - x^3 + 2*x^2 - x + 2, x^4 + 125*x^2 + 5>; > P<y> := PolynomialRing(L); > T<d, c> := TotallyRamifiedExtension(L, y^3 + b^4*a^5*y + b*a^2); > T; Local Ring with Eisenstein polynomial x^12 + (-31230*c^3 - 31230*c^2 - 31230*c - 62460)*x^10 + (1219141375*c^3 - 487656550*c^2 + 487656550*c - 975313100)*x^8 + (1561625*c^3 + 10930250*c^2 + 10149875*c + 10930250)*x^6 + (-31250*c^3 + 14375*c^2 - 26875*c + 36250)*x^4 + (-68293750*c^3 + 87806250*c^2 + 195125000)*x^2 + 10*c^2 + 15*c + 10 over Inertia Ring of degree 4 over 5-adic RingWhen creating ramified extensions it is possible to lose accuracy when the coefficients of the polynomial are known to more precision than the base ring allows. In addition if the precision of the base ring is only 1 then there isn't even enough precision to allow the constant coefficient to be non-zero to that precision.
> L<p, a> := UnramifiedExtension(pAdicRing(5, 1), 3);
> TotallyRamifiedExtension(L, x^4 + 5); >> TotallyRamifiedExtension(L, x^4 + 5); ^ Runtime error in 'TotallyRamifiedExtension': Insufficient precision to extend the ring > L<p, a> := UnramifiedExtension(pAdicRing(5, 2), x^5 + x^2 + 2); > TotallyRamifiedExtension(L, x^4 + 5); Local Ring with Eisenstein polynomial x^4 + 5 over L > ext<L | x^4 + 125*x^2 + 5>; Local Ring with Eisenstein polynomial x^4 + 5 over L
These functions are provided to easily gain the field with the same invariants as a given ring and the ring with the same invariants as a given field.
The ring R of integers in the local field L. This is the set of elements of non-negative valuation.
The field of fractions F of the local ring L. The relative precision of F is the precision of L.
There are two attributes of local rings and fields that can be set and altered by the user.
Can be used to retrieve or set the default precision of the local ring or field L. If L is a fixed precision ring or field setting this attribute has no effect since its value will be constantly the same as the precision of the ring. If L is a floating (infinite precision) local ring or field, this will change the precision with which elements are created when they can't have infinite precision.
By default, elements of a p-adic ring are printed as integers, elements of an unramified extension are printed as polynomials in the inertial element and elements of a ramified extension are printed as a polynomial in pi over the inertial subring of degree strictly less than e where e is the ramification degree of the ring and pi is the uniformizer of the ring. The coefficients of the polynomial may have valuation. Field elements are printed with the valuation taken out and explicitly multiplied in. So an element of a p-adic field is printed as an integer co--prime to the prime of the field multiplied by the prime to the power of the valuation of the element. An element of a ramified extension is printed as pi^v times a polynomial in pi over the inertial subfield where v is the valuation of the element. At least one coefficient of the polynomial will have valuation zero.If the SeriesPrinting attribute is true then the elements of any local ring or field are printed as a power series in the uniformizing element with coefficients in the residue class field. Series printing has the advantage that the valuations of all the terms of the element can be seen.
> Zp<p> := pAdicRing(5, 30);
> p;
5
> Zp`SeriesPrinting := true;
> p;
p
> I<p, a> := UnramifiedExtension(Zp, 3);
> p;
p
> a;
a
> p - a^4;
(-2 - p^2 - p^3 - p^5 - p^6 - p^7 + 2*p^8 - 2*p^11 - 2*p^12 - 2*p^13 - p^14 +
2*p^15 + p^16 - 2*p^18 - 2*p^19 + 2*p^21 + 2*p^22 - 2*p^23 - p^25 - 2*p^26 +
2*p^27 - p^29)*a^2 + (-2 + p - 2*p^4 - 2*p^5 + 2*p^6 + 2*p^8 + p^9 - 2*p^10
+ 2*p^12 + 2*p^13 - p^14 - p^17 + p^18 - p^20 + p^21 - 2*p^22 - p^23 - p^24
- 2*p^26 - p^27 + p^28 - 2*p^29)*a - 2*p - p^2 - p^4 - 2*p^6 + p^7 - 2*p^10
+ p^11 + 2*p^12 + 2*p^13 + p^14 + p^15 + 2*p^16 + p^18 - p^19 - 2*p^20 -
2*p^21 - p^23 - p^24 + 2*p^25 + p^26 - 2*p^28 - p^29
This is consistent with Zp having SeriesPrinting on since the
p-adic coefficients are printed as series in p and I having
SeriesPrinting off since the element in the extension prints at the
top level as a polynomial in the inertial element a.
> Zp`SeriesPrinting := false;
> p;
5
> a;
a
> p - a^4;
-174659774575780565777*a^2 - 345782849124284351247*a - 258756843222138625660
> I`SeriesPrinting := true;
> p;
p
> a;
a
> p - a^4;
-2*a^2 - 2*a + (a - 2)*p + (-a^2 - 1)*p^2 - a^2*p^3 + (-2*a - 1)*p^4 + (-a^2 -
2*a)*p^5 + (-a^2 + 2*a - 2)*p^6 + (-a^2 + 1)*p^7 + (2*a^2 + 2*a)*p^8 + a*p^9
+ (-2*a - 2)*p^10 + (-2*a^2 + 1)*p^11 + (-2*a^2 + 2*a + 2)*p^12 + (-2*a^2 +
2*a + 2)*p^13 + (-a^2 - a + 1)*p^14 + (2*a^2 + 1)*p^15 + (a^2 + 2)*p^16 -
a*p^17 + (-2*a^2 + a + 1)*p^18 + (-2*a^2 - 1)*p^19 + (-a - 2)*p^20 + (2*a^2
+ a - 2)*p^21 + (2*a^2 - 2*a)*p^22 + (-2*a^2 - a - 1)*p^23 + (-a - 1)*p^24 +
(-a^2 + 2)*p^25 + (-2*a^2 - 2*a + 1)*p^26 + (2*a^2 - a)*p^27 + (a - 2)*p^28
+ (-a^2 - 2*a - 1)*p^29
> I`SeriesPrinting := false;
Now that I has SeriesPrinting on, the element of I prints
as a series in the uniformizing element (which is the prime) with coefficients
in the extension that are identical to their coercion into the residue
class field. With no series printing at all the element prints as a polynomial
in the inertia element with its p-adic coefficients printing as integers.
> P<x> := PolynomialRing(I); > L<b, a> := LocalRing(I, x^2 + 5); > b; b > a; a > b - a; -a + b > b - a + a*b^2 + 5*a^3; 318726006651259488600*a^2 + 264230431886649961879*a - 115681249486688052215 + bWith no series printing the elements print as polynomials in the uniformizing element with coefficients in the inertia ring which print according to the SeriesPrinting attribute of their parent.
> L`SeriesPrinting := true;
> b;
b
> a;
a
> b - a;
-a + b
> b - a + a*b^2 + 5*a^3;
-a + b + (-a - 2)*b^2 + (-a^2 + 1)*b^4 + (a^2 - 2)*b^6 + (2*a^2 - a + 1)*b^8 +
(-a^2 + 2*a + 2)*b^10 + (2*a^2 - 2*a)*b^12 + (-a^2 + 2)*b^14 + (-a^2 - a -
1)*b^16 - b^18 + (-a^2 - 2*a - 2)*b^20 + (2*a^2 + a + 2)*b^22 + (-a^2 - 2*a
- 2)*b^24 + (a^2 - 2*a - 1)*b^26 - b^28 + (-a^2 - 2*a - 2)*b^30 + (2*a^2 -
2*a - 2)*b^32 + (-a^2 - 2*a + 2)*b^34 + 2*a*b^36 + (-2*a^2 + a - 1)*b^38 +
(-a^2 + 2*a - 1)*b^40 + (-2*a^2 - a + 1)*b^42 + (-2*a^2 + a)*b^44 + (-2*a^2
- 1)*b^46 + (2*a^2 - 2*a - 1)*b^48 + (a^2 - 2*a - 2)*b^50 + (-a^2 + 2*a +
2)*b^52 + (2*a^2 + 1)*b^54 + (-a^2 + 2*a + 2)*b^56 + (-2*a^2 - a + 1)*b^58
Again with SeriesPrinting the element prints as a series in the
uniformizing element (now b) with coefficients in the inertia ring
which are identical to their coercion into the residue class field. Note that
the series printing attributes of subrings become uneffective when
SeriesPrinting is on for the super ring but have an effect when
it is off.
Elements with infinite precision can have infinite series expansions. In these cases when SeriesPrinting is on the series for the element will be printed to the default precision of the ring.
> R := pAdicRing(2);
> R!-1;
-1
> R`SeriesPrinting := true;
> R!-1;
1 + 2 + 2^2 + 2^3 + 2^4 + 2^5 + 2^6 + 2^7 + 2^8 + 2^9 + 2^10 + 2^11 + 2^12 +
2^13 + 2^14 + 2^15 + 2^16 + 2^17 + 2^18 + 2^19 + O(2^20)
All local rings and fields can also be created by a combination of the following functions. They have been provided to make creation easier by the variety of arguments they allow. In some cases these functions make it possible to create a local ring or field in one line whereas with the elementary functions several may be required. The LocalRing functions do not take local fields as arguments and similarly the LocalField functions do not take local rings as arguments.
Create the unramified extension of degree f of the p-adic ring (field) with precision n. If n is not given a finite precision is given to the resulting ring or field. The angle bracket notation can be used to assign a name to the uniformizing element and the root of unity of order p^f - 1 e.g. I<t,a> := LocalRing(p, f).
Create the unramified extension of degree f of the local ring (field) L with precision n. If the precision is not specified then it is inherited from L. If L is an infinite precision ring (field) then the precision must be specified, otherwise L can be any local ring or field. The angle bracket notation can be used to assign a name to the uniformizing element and the inertial element e.g. I<t,a> := LocalRing(L, f).
Precision: RngIntElt Default: 20
Create the totally ramified or unramified extension of the p-adic ring (field) defined by the polynomial g which must be either Eisenstein or Inertial. The polynomial g should have coefficients in (or coercible into) the p-adic ring. Note that the precision n refers to the uniformizing element of the extension, not to that of the underlying p-adic ring (field). It must be at least as great as the degree of g if g is an Eisenstein polynomial (for the p-adic subring or subfield to have precision at least one). If n is not given the ring or field is created with infinite precision. The defining polynomial of the extension is the polynomial g reduced to precision n which may be different to g. The angle bracket notation can be used to assign a name to the uniformizing element and the inertial element e.g. L<pi, a> := LocalField(p, g).
Precision: RngIntElt Default: 20
Create the totally ramified extension of the ring (field) L defined by the Eisenstein polynomial g or the unramified extension defined by the Inertial polynomial g of degree e. The polynomial g should have coefficients in (or coercible into) L. If the precision n is not specified then it is set to be that of L, multiplied by e if g is Eisenstein. The precision n must be greater than e if g is Eisenstein for the ring to be created (so that the p-adic subring or subfield can have precision at least one). The defining polynomial of the extension is the polynomial g reduced to precision n which may be different to g. The angle bracket notation can be used to assign a name to the uniformizing element and the inertial element e.g. K<pi,a> := LocalRing(L, g).
Precision: RngIntElt Default: 20
Create the totally ramified extension defined by the Eisenstein polynomial g (or f) of the unramified extension of degree f or defined by the inertial polynomial f (or g) of the p-adic ring or field. The polynomials g (and f) should have coefficients in (or coercible into) the p-adic ring. Note that the precision n refers to the uniformizing element of the ramified extension. It must be at least as great as the degree of the Eisenstein polynomial given (for the p-adic subring or subfield to have precision at least one). The defining polynomials are the polynomials f and g reduced to precision n which may differ to f and g. If n is not given the ring or field is created with infinite precision. The angle bracket notation can be used to assign a name to the uniformizing element and the inertial element e.g. L<pi,a> := LocalField(p, f, g).
> R<x> := PolynomialRing(Integers()); > LocalRing(LocalRing(5, 5), x^4 + 5, 5); Local Ring with Eisenstein polynomial x^4 + 5 over Inertia Ring of degree 5 over 5-adic Ring mod 5^2However, if the polynomial that defines the local ring is strictly over the Inertia Ring of the ring to be created then it is neatest to create the ring in several steps as shown below.
> I<p, a> := LocalRing(3, 2); > P<y> := PolynomialRing(I); > L<b, c> := LocalRing(I, y^4 + 27*a^4*y^3 - 81*y^2 + 3*y + 3*a); > L; Local Ring with Eisenstein polynomial x^4 - 27*x^3 - 81*x^2 + 3*x + 3*a over IEquivalently, since the precision of L was not specified, it could have been created using TotallyRamifiedExtension. A similar process is necessary when a ramified extension of an already ramified extension is made. In this case the polynomial must involve elements of the base ring in order for it to have a constant coefficient with valuation one, mandatory for the polynomial to be eisenstein.
> L<b, a> := LocalRing(5, x^4 - x^3 + 2*x^2 - x + 2, x^4 + 125*x^2 + 5); > P<y> := PolynomialRing(L); > T<d, c> := LocalRing(L, y^3 + b^4*a^5*y + b*a^2); > T; Local Ring with Eisenstein polynomial x^12 + (-31230*c^3 - 31230*c^2 - 31230*c - 62460)*x^10 + (1219141375*c^3 - 487656550*c^2 + 487656550*c - 975313100)*x^8 + (1561625*c^3 + 10930250*c^2 + 10149875*c + 10930250)*x^6 + (-31250*c^3 + 14375*c^2 - 26875*c + 36250)*x^4 + (-68293750*c^3 + 87806250*c^2 + 195125000)*x^2 + 10*c^2 + 15*c + 10 over Inertia Ring of degree 4 over 5-adic RingThis is the same ring that was created in the example in Section Elementary Creation Functions.
Local Fields can be created similarly. A few simple examples are given.
> LocalField(3, 2, x^3 - 3); Local Field with Eisenstein polynomial x^3 - 3 over Inertia Field of degree 2 over 3-adic Field mod 3^20 > LocalField(3, 2); Inertia Field of degree 2 over 3-adic Field mod 3^20 > LocalField(5, x^4 + 5); Local Field with Eisenstein polynomial x^4 + 5 over 5-adic Field > RingOfIntegers($1); Local Ring with Eisenstein polynomial x^4 + 5 over 5-adic Ring > FieldOfFractions($1); Local Field with Eisenstein polynomial x^4 + 5 over 5-adic Field > LocalField(2, x^2 + x + 1); Inertia Field of degree 2 over 2-adic Field