Automating modular arithmetic in local fields using MAGMA

40 Views Asked by At

Let $f(X) = X^4 + a_3X^3 + a_2X^2 + a_1X + a_0$ be an Eisenstein polynomial over the $2$-adic numbers $\mathbb{Q}_2$. Let $\mathbb{Q}_2(\pi)/\mathbb{Q}_2$ be the totally ramified extension defined by $f(X)$, where $\pi$ is a root of $f(X)$. Write $v$ for the normalised valuation on $\mathbb{Q}_2(\pi)$ with $v(\pi) = 1$. Since $f(X)$ is Eisenstein, we have $v(a_0) = 4$. Assume that also $v(a_1) = 8, v(a_2) = 4, v(a_3) \geq 8$. Define $$ b_0^{(3)} = f(\pi + \pi^2 + \pi^3). $$ On Page $238$ of his paper, "On the construction of normal wildly ramified extensions over $\mathbb{Q}_2$", Lbekkouri states that "The computation gives" $$ b_0^{(3)} \equiv (a_2 + a_3 + \pi^4 + \pi^6 + \pi^8)\pi^4 \pmod{\pi^{13}}. $$ I have managed to do this by hand, but it's quite long and messy. A lot of it is routine though. For example, you start by expanding out the multinomials in $$ a_0 + a_1(\pi + \pi^2 + \pi^3) + a_2(\pi + \pi^2 + \pi^3)^2 + \ldots , $$ using $a_0 + a_1\pi + a_2\pi + \ldots = 0$, and then ignoring any terms with valuation more than $13$. This tidies things up a lot, and then you use some ad-hoc tricks to get it into the form stated by Lbekkouri. The ad-hoc tricks are probably hard to do in MAGMA, but it feels like at least the first part (expanding and removing high valuation terms) should be easy to do symbolically. I'm not very good with MAGMA though, so I don't know how to approach this. Currently do it for specific polynomials as follows:

k := ChangePrecision(pAdicField(2), 100);
S<X> := PolynomialRing(k);
f := X^4 + 2*X^3 + 6*X^2 + 4*X + 2;
L<pi> := SplittingField(f);
Evaluate(f, pi + pi^2 + pi^3);

What I'd like is the ability to declare symbolic variables a0,a1,a2,a3, ideally specifying their valuations, and define

f := X^4 + a3*X^3 + a2*X^2 + a1*X + a0;

Does anyone know how to do this?

1

There are 1 best solutions below

0
On

Only a partial answer but maybe this can set you on the right track.

After defining $k$, you can define a multivariate polynomial ring in a0, a1, a2, a3 over $k$, and then define S<x> to be a polynomial ring:

k := ChangePrecision(pAdicField(2), 100);
kprime<a0, a1, a2, a3> := PolynomialRing(k,4);
S<x> := PolynomialRing(kprime);
f := x^4 + a3*x^3 + a2*x^2 + a1*x + a0;

After this, I would suggest computing

Evaluate(f, x + x^2 + x^3) mod x^13

and then working from there. But Magma can't compute the splitting field of f in this context so you may have to come up with something clever. Also the result from Magma looks really ugly, maybe you can just use k = Rationals() and then do these computations to get a simplified version of the polynomial to work with before moving to the 2-adic numbers.