It is a well known classical theorem that p-adic fields admit only finitely many different extensions of bounded degree (in contrast to number fields which have an infinite number of extensions of any degree). In his thesis, Pauli [Pau01a] developed explicit methods to enumerate those extensions.
E : RngIntElt : 0 var F : RngIntElt : 0 var Galois : BoolElt :false var vD : RngIntElt : -1 var j: RngIntElt Default: -1
Given a p-adic ring or field R and some positive integer n, compute all the extensions of R of degree n. At least one extension is given in every isomorphism class. The optional parameters can be used to impose restrictions on the fields returned. Note that j and vD must be unspecified (as -1) when F != 1 or when E and F are both not given.
The optional parameters can be used to limit the extensions in various ways:
- E specifies the ramification index. 0 implies no restriction.
- F specifies the inertia degree, 0 implies no restriction.
- vD specifies the valuation of the discriminant, -1 implies no restriction.
- j specifies the valuation of the discriminant via the formula vD := n + j - 1.
- Galois when set to true, limits the extensions to only list normal extensions.
E : RngIntElt : 0 var F : RngIntElt : 0 var Galois : BoolElt :false var vD : RngIntElt : -1 var j: RngIntElt Default: -1
Given a p-adic ring or field R and some positive integer n, compute the number of extensions of R of degree n. Similarly to the above function, the optional parameters can be used to impose restrictions on the fields returned. Note that j and vD must be unspecified (as -1) when F != 1 or when E and F are both not given.
Note that the count will not be the same as AllExtensions, as the latter need only be up to isomorphism.
Given a p-adic ring or field R and positive integers n and j, test if there exist totally ramified extensions of R of degree n with discriminant valuation n + j - 1.
There are 54 (totally ramified) extensions of degree 9 and discriminant 39 + 4 - 1 over (Q)3. There are six generating polynomials, each defining nine isomorphism classes. The possible (nontrivial) subfields of these have degree 3 and j0=1, of which there are two defining polynomials each with three isomorphism classes. Each of these degree 3 fields then admits two extensions with j1=1, which give six isomorphism classes. This gives a total of 27 degree 9 extensions that have a subfield of degree 3.
> R := pAdicRing(3,20); > _<x> := PolynomialRing(R); // for printing > NumberOfExtensions(R,9 : F:=1,j:=4); 54 > A9 := AllExtensions(R,9 : F:=1,j:=4); > [DefiningPolynomial(a) : a in A9]; [ x^9 + 3*x^4 + 3, x^9 + 6*x^4 + 3, x^9 + 3*x^4 + 3*x^3 + 3, x^9 + 6*x^4 + 3*x^3 + 3, x^9 + 3*x^4 + 6*x^3 + 3, x^9 + 6*x^4 + 6*x^3 + 3 ] > A3 := AllExtensions(R,3 : F:=1,j:=1); > NumberOfExtensions(A3[1],3 : F:=1,j:=1); 6 > [DefiningPolynomial(a) : a in A3]; [ x^3 + 3*x + 3, x^3 + 6*x + 3 ] > _<pi> := A3[1]; > _<y> := PolynomialRing(A3[1]); > B3 := AllExtensions(A3[1],3 : F:=1,j:=1); > [DefiningPolynomial(f) : f in B3]; [ y^3 + pi*y + pi, y^3 + 2*pi*y + pi ]
The other example concerns degree 10 extensions of (Q)5. Here there are 1818 total extensions, of which 1 is unramified and 2 have ramification degree 2, while 605 have ramification degree 5 and 1210 are totally ramified. With ramification degree 5, there are 145 defining polynomials over the unramified quadratic field, split into five j-groupings. As noted in [PR01], there is a further splitting in the j=4 grouping. Similarly, there are 145 defining polynomials over either of the two tamely ramified extensions of degree 2 over (Q)5. The resulting fields are in fact isomorphic in pairs, but the AllExtensions function still lists both fields in each pair. So it returns 438 fields (1+2+145+290) rather than the stated 293 isomorphism classes (1+2+145+145).
> R := pAdicRing(5,20); > NumberOfExtensions(R,10); 1818 > [NumberOfExtensions(R,10 : E:=e) : e in Divisors(10)]; [ 1, 2, 605, 1210 ] > U := UnramifiedExtension(R,2); > [#AllExtensions(U,5 : E:=5,j:=j0) : j0 in [1..5]]; [ 24, 24, 24, 48, 25 ] > // compare the above/below to (#K)/N in Pauli-Roblot > [#AllExtensions(R,10 : E:=10,j:=j0): j0 in [1..10]]; [ 8, 8, 8, 16, 0, 40, 40, 80, 40, 50 ] // twice P-R