Ask Your Question

LMFDB Code for p-adic extensions gives NotImplementedError

asked 2022-06-28 13:54:05 +0100

updated 2022-06-28 13:54:17 +0100

I downloaded the Sage code from this page, which is supposed to give me all quartic extensions of the 2-adic integers. When I try to run the code, it gives me the error:

NotImplementedError: Extensions by general polynomials not yet supported.  Please use an unramified or Eisenstein polynomial.

A mwe for the error is given by the following code:

pAdicExtension(Qp(2, 100), PolynomialRing(Qp(2, 100),'x')([4, 0, 8, 0, 1]),var_name='x')

I am using SageMath 9.6, which I believe is the latest version, so it seems strange that code from the LMFDB would be giving me this error, since presumably they tested it before putting it up. Can anyone advise me on getting around this or fixing it?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2022-06-29 13:33:47 +0100

saraedum gravatar image

updated 2022-06-29 13:37:37 +0100

This kind of extension is not supported by SageMath yet. Such extensions (whose defining polynomial is neither unramified nor Eisenstein) are added by this merge request which has not been merged into SageMath yet.

I can only speculate that the LMFDB generated the code for an upcoming version of SageMath that will work once such extensions are available.

To create such an extension in SageMath 9.6 you would have to (manually) rewrite the extension as an unramified extension followed by an Eisenstein extension. (The change mentioned above essentially automates this.)

Alternatively, you could try to compile the branch referenced in the above merge request.

Depending on what you are trying to achieve, you could also try to use the henselization package that implements something similar. To install it, you do sage -pip --user install git+ or without the --user or replace sage -pip with just pip, depends how you installed SageMath in the first place.

Then the following should work:

sage: from henselization import Henselization
[you can likely ignore any warnings here]
sage: K = QQ.henselization(2)
sage: L.<a> = K.extension(K['x']([4, 0, 8, 0, 1]))
sage: a.valuation()
sage: L.residue_field()
Finite Field in u3 of size 2^2
sage: L.valuation().value_group()
Additive Abelian Group generated by 1/2

The field L is then essentially the 2-adic field that you're trying to construct but backed by exact number field elements.

edit flag offensive delete link more


We have weekly online meetings to discuss p-adics and SageMath. Feel free to join! The next one is tomorrow 06/30/2022 at 5pm Greek time. We'll probably meet on Zoom. Details are going to be posted in our Zulip channel at

saraedum gravatar imagesaraedum ( 2022-06-29 13:35:55 +0100 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


Asked: 2022-06-28 13:54:05 +0100

Seen: 131 times

Last updated: Jun 29 '22