Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

First of all, your have a mismatch between the code and the out as the printed valuations have wrong signs (e.g., it should be root -9 rather than root 9).

Your statement that "the valuation of the roots should be the same" is not quite correct. The correct statement is that the valuations of the roots for $m=52$ form a subset of those for $m=53$, but not necessarily vice versa! And you do see this in your example.

One can verify explicitly that it does not work in the other direction here by taking a root with $\nu=-5$ for $m=53$ and plugging it in the polynomial for $m=52$:

p = 5

F=Qp(p, prec=200)        # prec=200 is quite enough here
v=valuations.pAdicValuation(F, 5)

h52 = hecke_series(p, 2, 2, 52).change_ring(QQ)         # a polynomial over QQ for m=52
h53 = hecke_series(p, 2, 2, 53).change_ring(QQ)         # a polynomial over QQ for m=53

r = next(root for root,_ in h53.roots(ring=F) if v(root)==-5)
print('root with v=-5:', r)
print('h53(r) over F:', h53.change_ring(F)(r))
print('h52(r) over F:', h52.change_ring(F)(r))

A shortened output here looks like

root with v=-5: 2*5^-5 + 3*5^-4 + 5^-3 + [...skipped...] + O(5^190)
h53(r) over F: O(5^171)
h52(r) over F: 5^-13 + 4*5^-11 + 2*5^-10 + [...skipped...] + O(5^171)

First of all, your have a mismatch between the code and the out output as the printed valuations have wrong signs (e.g., it should be root -9 rather than root 9).

Your statement that "the valuation of the roots should be the same" is not quite correct. The correct statement is that the valuations of the roots for $m=52$ form a subset of those for $m=53$, but not necessarily vice versa! And you do see this in your example.

One can verify explicitly that it does not work in the other direction here by taking a root with $\nu=-5$ for $m=53$ and plugging it in the polynomial for $m=52$:

p = 5

F=Qp(p, prec=200)        # prec=200 is quite enough here
v=valuations.pAdicValuation(F, 5)

h52 = hecke_series(p, 2, 2, 52).change_ring(QQ)         # a polynomial over QQ for m=52
h53 = hecke_series(p, 2, 2, 53).change_ring(QQ)         # a polynomial over QQ for m=53

r = next(root for root,_ in h53.roots(ring=F) if v(root)==-5)
print('root with v=-5:', r)
print('h53(r) over F:', h53.change_ring(F)(r))
print('h52(r) over F:', h52.change_ring(F)(r))

A shortened output here looks like

root with v=-5: 2*5^-5 + 3*5^-4 + 5^-3 + [...skipped...] + O(5^190)
h53(r) over F: O(5^171)
h52(r) over F: 5^-13 + 4*5^-11 + 2*5^-10 + [...skipped...] + O(5^171)