Computing refined Chabauty-Kim loci for the thrice-punctured line
Sage code for the paper "Refined Chabauty–Kim calculations for the thrice-punctured line over
Let
To use the code in a Sage session, place the files "RefinedCK.sage" and "Zproots.sage" in the working directory and use the command load("RefinedCK.sage")
. The code has been tested with Sage 10.2.
Let
for some CK_depth_2_locus(p,q,N,a_q2)
computes this locus given
For
sage: p = 5; q = 3
sage: a = -Qp(p)(3).polylog(2)
sage: CK_depth_2_locus(p,q,10,a)
[2 + O(5^9),
2 + 4*5 + 4*5^2 + 4*5^3 + 4*5^4 + 4*5^5 + 4*5^6 + 4*5^7 + 4*5^8 + O(5^9),
3 + O(5^6),
3 + 5^2 + 2*5^3 + 5^4 + 3*5^5 + O(5^6),
4 + 4*5 + 4*5^2 + 4*5^3 + 4*5^4 + 4*5^5 + 4*5^6 + 4*5^7 + 4*5^8 + O(5^9),
4 + 5 + O(5^9)]
In addition to the expected points
The constant
of steinberg_decompositions
from the Sage code dcw_coefficients. The function depth2_constant(p,q,N,dec)
then computes
The following code computes
sage: p = 7; q = 19
sage: _,dec = steinberg_decompositions(bound=20, p=p)
sage: a = depth2_constant(p,q,10,dec[2,q])
sage: a
7^2 + 2*7^3 + 6*7^4 + 3*7^5 + 2*7^6 + 6*7^7 + 5*7^8 + O(7^10)
sage: CK_depth_2_locus(p,q,10,a)
[2 + 4*7 + 6*7^2 + 4*7^3 + 5*7^4 + 2*7^5 + 5*7^6 + 3*7^7 + 5*7^8 + O(7^9),
2 + O(7^9),
3 + 4*7 + 7^2 + 7^3 + 2*7^4 + 6*7^5 + 7^6 + 7^7 + O(7^8),
3 + 4*7 + 4*7^2 + 6*7^3 + 2*7^4 + 3*7^5 + 4*7^6 + 2*7^7 + O(7^8),
4 + 2*7 + 7^3 + 6*7^4 + 2*7^5 + 3*7^6 + 3*7^7 + 3*7^8 + O(7^9),
4 + 4*7 + 6*7^2 + 7^3 + 4*7^5 + O(7^9),
6 + 6*7 + 6*7^2 + 6*7^3 + 6*7^4 + 6*7^5 + 6*7^6 + 6*7^7 + 6*7^8 + O(7^9),
6 + 2*7 + 4*7^3 + 4*7^4 + 5*7^5 + 4*7^6 + 6*7^7 + 5*7^8 + O(7^9)]
The locus contains seven points in addition to the expected point
Let
where the DCW coefficient CK_depth_4_locus(p,q,N,coeffs)
computes an approximation of this refined Chabauty–Kim locus given Z_one_sixth_coeffs(p, N)
.
The following code computes the locus
sage: p = 5; q = 3; N = 10
sage: coeffs = Z_one_sixth_coeffs(p,N)
sage: coeffs
(2*5^2 + 2*5^3 + 2*5^4 + 5^5 + 2*5^6 + 4*5^7 + 5^8 + 4*5^9 + O(5^10),
1 + 2*5 + 2*5^2 + 2*5^5 + 5^6 + O(5^7),
3 + 5 + 3*5^2 + 2*5^4 + 3*5^5 + O(5^6),
2 + 2*5 + 2*5^2 + 5^3 + 3*5^4 + 4*5^5 + O(5^6))
sage: CK_depth_4_locus(p,q,N,coeffs)
[2 + 4*5 + 4*5^2 + 4*5^3 + 4*5^4 + 4*5^5 + 4*5^6 + 4*5^7 + 4*5^8 + O(5^9),
3 + O(5^6),
4 + 4*5 + 4*5^2 + 4*5^3 + 4*5^4 + 4*5^5 + 4*5^6 + 4*5^7 + 4*5^8 + O(5^9),
4 + 5 + O(5^9)]
The four numbers are precisely the
Computing roots of
The function Zproots(f, coeff_prec)
computes the set of roots in f
is a polynomial which approximates the power series coeff_prec
(Infinity by default) indicates that coefficients are only known up to this Zproots
takes precision questions into account, throwing a PrecisionError
if the precision is insufficient to decide whether a root modulo
If the polynomial
sage: K = Qp(2,prec=2)
sage: R.<t> = K['t']
sage: Zproots(t^2-1) # => PrecisionError
Increasing the precision to 3, we can compute its set of roots:
sage: K = Qp(2,prec=3)
sage: R.<t> = K['t']
sage: Zproots(t^2-1)
[1 + O(2^2), 1 + 2 + O(2^2)]
Note that the roots are only determined to precision 2, even though f is given with precision 3. Indeed, modulo 8, the polynomial
- [BD20] L. Alexander Betts, Netan Dogra, "The local theory of unipotent Kummer maps and refined Selmer schemes" (2020)
- [Kim05] Minhyong Kim, "The motivic fundamental group of
$\mathbb{P}^1 \smallsetminus \{0,1,\infty\}$ and the theorem of Siegel" (2005) - [Kim09] Minhyong Kim, "The unipotent Albanese map and Selmer varieties for curves" (2009)
- [Lüd24] Martin Lüdtke, "Refined Chabauty–Kim calculations for the thrice-punctured line over
$\mathbb{Z}[1/6]$ " (2024)