Weak p-adic Galois extensions

Let \(K\) be a \(p\)-adic number field. For our project we need to be able to compute with Galois extensions \(L/K\) of large ramification degree. For instance, we need to be able to compute the breaks of the ramification filtration of the Galois group of \(L/K\), as well as the corresponding subfields.

At the moment, computations with large Galois extensions of \(p\)-adic fields are still problematic. In particular, it seems difficult to obtain results which are provably correct. For this reason we do not work which \(p\)-adic numbers at all. Instead, we use our own class FakepAdicCompletion, in which a \(p\)-adic number field is approximated by a pair \((K_0, v_K)\), where \(K_0\) is a suitable number field and \(v_K\) is a \(p\)-adic valuation on \(K_0\) such that \(K\) is the completion of \(K_0\) at \(v_K\).

Let \(L/K\) be a finite field extension. We say that \(L/K\) is a weak Galois extension if the induced extension \(L^{nr}/K^{nr}\) is Galois. Given a polynomial \(f\) in \(K[x]\), we say that \(L/K\) is a weak splitting field for \(f\) if \(f\) splits over \(L^{nr}\).

Given a weak Galois extension \(L/K\), we have canonical isomorphisms between the following groups:

  • the Galois group of \(L^{nr}/K^{nr}\),
  • the inertia subgroup of the Galois closure of \(L/K\),

Moreover, this isomorphism respects the filtrations by higher ramification groups.

If \(L/K\) is totally ramified then the degree of \(L/K\) is equal to the degree of \(L^{nr}/K^{nr}\), which is equal to the order of the inertia subgroup of the Galois closure of \(L/K\). Therefore, our approach allows us to fully understand the inertia group of a Galois extension of \(p\)-adic fields, while keeping the degree of the field extensions with which one works as small as possible.

Our method can also be used to work with approximations of the subfields of a \(p\)-adic Galois extension corresponding to the higher ramification subgroups.

For \(u\geq 0\) we let \(L^{sh,u}\) denote the subfield of \(L^{sh}/K^{sh}\) corresponding to the \(u\) th filtration step of the Galois group of \(L^{sh}/K^{sh}\). Then the completion of \(L^{sh,u}\) agrees with the maximal unramified extension of the subextension \(\hat{L}^u\) of the Galois closure \(\hat{L}/\hat{K}\) corresponding to the \(u\) th ramification step. Moreover, there exists a finite extensions \(L^u/K\), together with an extension \(v_{L^u}\) of \(v_K\) to \(L^u\) such that

  • the strict henselization of \((L^u, v_{L^u})\) is isomorphic to \(L^{sh,u}\),
  • the completion of \((L^u, v_{L^u})\) agrees with \(\hat{L}^u\), up to a finite unramified extension.

Note that \(L^u\) will in general not be a subfield of \(L\) (and not even of the Galois closure of \(L/K\)).

In this module we define a class WeakPadicGaloisExtension, which realizes an approximation of a \(p\)-adic Galois extension, up to unramified extensions.

AUTHORS:

  • Stefan Wewers (2017-08-06): initial version

EXAMPLES:

This example is from the “Database of Local Fields”:

sage: from mclf import *
sage: v_3 = QQ.valuation(3)
sage: Q_3 = FakepAdicCompletion(QQ, v_3)
sage: R.<x> = QQ[]
sage: f = x^6+6*x^4+6*x^3+18
sage: L = WeakPadicGaloisExtension(Q_3, f)
sage: L.upper_jumps()
[0, 1/2]

TO DO:

class mclf.padic_extensions.weak_padic_galois_extensions.WeakPadicGaloisExtension(K, F, minimal_ramification=1)

Bases: mclf.padic_extensions.fake_padic_extensions.FakepAdicExtension

Return the weak p-adic splitting field of a polynomial.

INPUT:

  • K – a \(p\)-adic number field
  • F – a polynomial over the number field underlying \(K\), or a list of such polynomials
  • minimal_ramification – a positive integer (default: 1)

OUTPUT: the extension \(L/K\), where \(L\) is a weak splitting field of F whose ramification index over \(K\) is a multiple of minimal_ramification.

NOTE:

For the time being, F has to be defined oover \(\mathbb{Q}\), and minimal ramification has to be prime to \(p\).

factors_of_ramification_polynomial(precision=10)

Return the factorization of the ramification polynomial into factors with fixed slope.

OUTPUT: a dictionary factors such that \(g=\) factors[s] is the maximal factor of the ramification polynomial \(G\) whose Newton polygon has a single slope \(s\). We omit the factor with slope \(s=-1\).

lower_jumps()

Return the upper jumps of the ramification filtration of this extension.

ramification_filtration(upper_numbering=False)

Return the list of ramification jumps.

INPUT:

  • upper_numbering – a boolean (default: False)

OUTPUT: an ordered list of pairs \((u, m_u)\), where \(u\) is a jump in the filtration of higher ramification groups and \(m_u\) is the order of the corresponding subgroup. The ordering is by increasing jumps.

If upper_numbering is False, then the filtration is defined as follows. Let \(L/K\) be a Galois extension of \(p\)-adic number fields, with Galois group \(G\). Let \(\pi\) be a prime element of \(L\), and let \(v_L\) denote the normalized valuation on \(L\) (such that \(v_L(\pi)=1\)). For \(u\geq 0\), the ramification subgroup \(G_u\) consists of all element \(\sigma\) of the inertia subgroup \(I\) of \(G\) such that

\[v_L(\sigma(\pi) - \pi) \geq i + 1.\]

In particular, \(I=G_0\). An integer \(u\geq 0\) is called a “jump” if \(G_{u+1}\) is strictly contained in \(G_u\). Note that this is equivalent to the condition that there exists an element \(\sigma\in G\) such that

\[v_L(\sigma(\pi) - \pi) = u + 1.\]

It follows that the ramification filtration can easily be read off from the Newton polygon (with respect to \(v_L\)) of the polynomial

\[G := P(x + \pi)/x,\]

where \(P\) is a minimal polynomial of \(\pi\) over \(K\). The polynomial \(G\) is called the ramification polynomial of the Galois extension \(L/K\).

ramification_polygon()

Return the ramification polygon of this extension.

The ramification polygon of a weak Galois extension \(L/K\) of \(p\)-adic number fields is the Newton polygon of the ramification polynomial, i.e. the polynomial

\[G := P(x+\pi)/x\]

where \(\pi\) is a prime element of \(L\) which generates the extension \(L/K\) and \(P\) is the minimal polynomial of \(\pi\) over \(K^{nr}\), the maximal unramified subextension of .

The (strictly negative) slopes of the ramification polygon (with respect to the valuation \(v_L\) on \(L\), normalized such that \(v_L(\pi_L)=1\)) correspond to the jumps in the filtration of higher ramification groups, and the abscissae of the vertices of the corresponding vertices are equal to the order of the ramification subgroups that occur in the filtration.

NOTE:

  • For the time being, we have to assume that \(K=\mathbb{Q}_p\). In this case we can choose for \(\pi\) the canonical generator of the absolute number field \(L_0\) underlying \(L\).
ramification_polynomial(precision=20)

Return the ramification polynomial of this weak Galois extension.

The ramification polynomial is the polynomial

\[G := P(x+\pi)/x\]

where \(\pi\) is a prime element of \(L\) which generates the extension \(L/K\) and \(P\) is the minimal polynomial of \(\pi\) over \(K^{nr}\), the maximal unramified subextension of .

NOTE:

  • For the time being, we have to assume that \(K=\mathbb{Q}_p\). In this case we can choose for \(\pi\) the canonical generator of the absolute number field \(L_0\) underlying \(L\).
ramification_subfield(u)

Return the ramification subfield corresponding to a given lower jump.

Here a nonnegative integer \(u \geq 0\) is called a lower jump for the weak \(p\)-adic Galois extension \(L/K\) if \(u\) is a jump in the filtration \((G_u)_{u\geq 0}\) of the Galois group \(G = Gal(L^{nr}/K^{nr})\) of the induced extension \(L^{nr}/K^{nr}\). This is equivalent to the following condition: there exists an element \(g\in G\), such that

\[v_L(g(\pi_L)-\pi_L) = u + 1.\]

Here \(v_L\) is the valuation of the extension field \(L\) and \(\pi_L\) is a prime element of \(L\). We normalize \(v_L\) such that \(v_L(\pi_L)=1\).

ramification_subfields(precision=1)

Return the ramification subfields of this weak Galois extension.

The set of all subfields is returned as dictionary, in which the keys are the lower jumps and the values are the corresponding subfields, given as extension of the base field.

upper_jumps()

Return the lower jumps of the ramification filtration of this extension.