Iterated extensions of Qp

11 views
Skip to first unread message

Julian Rüth

unread,
Oct 24, 2011, 11:20:07 AM10/24/11
to sag...@googlegroups.com
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

I posted the following two weeks ago on the sage-padics list. I
haven't seen any reaction since then — also there hadn't been any
activity on that list since June. Should I just wait a little
longer or has that list moved somewhere else?

Here's the original post:

I'm trying to do some computations with p-adics in sage but I'm running
into problems with iterated extensions of Qp.
Defining extensions of Qp works fine, but extensions of extensions never
worked for me.

As an example, I tried the following:

sage: K=Qp(3)
sage: R.<X>=K[]
sage: L.<xi>=K.extension(X^12 + 342/145*X^10 + 189/145*X^8 + 36/29*X^7 +
sage: 198/145*X^5 + 18/145*X^3 + 6/29*X^2 + 3/145)
sage: R.<T>=L[]
sage: f=1+3*T^3+3*T^5
sage: f2=f(T+xi)
sage: L.<y> = K.extension(T^3-f2.coeffs()[0])

The last line produces a lengthy stacktrace
(http://pastebin.com/xHmBPb0a) which ends in

sage.rings.padics.padic_ZZ_pX_CR_element.pAdicZZpXCRElement._integer_
ValueError: This element not well approximated by an integer.

Now I'm wondering, am I doing something wrong or are such
iterated extensions simply not supported?

Thanks,

julian

PS: I already did some sage hacking in the past, so if anybody had been
working on code that would make this work, I would be eager to help
with the coding.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.16 (GNU/Linux)

iEYEARECAAYFAk6lgicACgkQb76p5HH6xCmWxgCeJXnZmKvdsNABOfucE7aSMGcn
PJwAoK80pZZN12o3slsgI9jeL3B77kcS
=t9Rr
-----END PGP SIGNATURE-----

daveloeffler

unread,
Oct 24, 2011, 4:52:41 PM10/24/11
to sage-nt
I don't really understand your example. Here xi is a generator of L,
which is an extension of k, and the coefficients of f2 lie in L; but
you try to create an extension of K with modulus T^3 - f2.coeffs()[0].
(The fact that you try to call this new field L, while your example
already has a field called L, suggests you got a bit muddled). The
error message is spectacularly unhelpful, though: the code for
K.extension(...) should certainly check that the polynomial supplied
has coefficients in K.

Carping about your example aside, there is definitely a genuine bug
here. The following simplified version of the example also crashes,
differently:

----------------------------------------------------------------------
| Sage Version 4.7.2.rc0, Release Date: 2011-10-22 |
| Type notebook() for the GUI, and license() for information. |
----------------------------------------------------------------------
**********************************************************************
* *
* Warning: this is a prerelease version, and it may be unstable. *
* *
**********************************************************************
sage: K = Qp(3)
sage: R.<X> = K[]
sage: L.<a> = K.extension(X^2 - 3)
sage: S.<Y> = L[]
sage: M.<b> = L.extension(Y^3 + a)
Exception TypeError: "unhashable type:
'sage.rings.padics.padic_ZZ_pX_CR_element.pAdicZZpXCRElement'" in
'sage.rings.polynomial.polynomial_element.Polynomial._hash_c' ignored
Exception TypeError: "unhashable type:
'sage.rings.padics.padic_ZZ_pX_CR_element.pAdicZZpXCRElement'" in
'sage.rings.polynomial.polynomial_element.Polynomial._hash_c' ignored
---------------------------------------------------------------------------
AttributeError Traceback (most recent call
last)

[snip]

AttributeError:
'sage.rings.padics.padic_ZZ_pX_CR_element.pAdicZZpXCRElement' object
has no attribute 'lift'

Here it looks like the code for an extension is silently assuming that
the polynomial can be represented approximately using a datatype for
polynomials over Z / NZ, which is nonsense if the base is already a
nontrivial extension of Qp.

You should certainly open a ticket on the sage bug tracker for this.

Julian Rüth

unread,
Oct 24, 2011, 5:55:35 PM10/24/11
to sag...@googlegroups.com
* daveloeffler <dave.l...@gmail.com> [2011-10-24 13:52:41 -0700]:

> (The fact that you try to call this new field L, while your example
> already has a field called L, suggests you got a bit muddled). The
You're perfectly right here. I now understand what happened. I had seen
the error that your example produces. I upgraded to the latest sage beta
and reran my example but somehow did a copy&paste error, getting the
names of my fields confused.
I'll open a ticket regarding the strange error message I got - which I
can fix myself.

Back to the original error, thanks for clarifying this:

Having another look at the code and at the README.txt in the
rings/padics directory, it seems that there is no implementation for
such extensions of extensions of Qp, e.g. it says

"""
pAdicZZpXElement (padic_ZZ_pX_element.pyx) : unramified and
Eisenstein extensions of Qp and Zp, using ntl ZZ_pX
[...]
pAdicZZpEXElement (padic_ZZ_pEX_element.pyx, does not yet exist) :
generic absolute extensions of Qp and Zp, using ntl ZZ_pEX
[...]
pAdicRelExtElement (padic_rel_ext_element.pyx, does not yet exist)
: relative extensions of base and extension rings and fields.
"""

Can someone confirm that I understand this correctly?
I might try to implement some of the missing functionality — is anybody
else currently working on these things?

Thanks for your answers,

julian

David Roe

unread,
Oct 24, 2011, 9:37:38 PM10/24/11
to sag...@googlegroups.com
Sure enough, iterated extensions aren't implemented. See the
following pages which are part of the list of p-adic projects that
need work:

http://wiki.sagemath.org/padics/GeneralExtensions
http://wiki.sagemath.org/padics/RelativeExtensions

David

> --
> You received this message because you are subscribed to the Google Groups "sage-nt" group.
> To post to this group, send an email to sag...@googlegroups.com.
> To unsubscribe from this group, send email to sage-nt+u...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/sage-nt?hl=en-GB.
>
>

Reply all
Reply to author
Forward
0 new messages