Frobenius on Monsky-Washnitzer cohomology of a hyperelliptic curve over GF(p),¶
for largish p
This is a wrapper for the matrix() function in hypellfrob.cpp.
AUTHOR:
- David Harvey (2007-05)
- David Harvey (2007-12): rewrote for hypellfrob version 2.0
-
sage.schemes.hyperelliptic_curves.hypellfrob.
hypellfrob
(p, N, Q)¶ Compute the matrix of Frobenius acting on the Monsky-Washnitzer cohomology of a hyperelliptic curve \(y^2 = Q(x)\), with respect to the basis \(x^i dx/y\), \(0 \leq i < 2g\).
INPUT:
- p – a prime
- Q – a monic polynomial in \(\ZZ[x]\) of odd degree. Must have no multiple roots mod p.
- N – precision parameter; the output matrix will be correct modulo \(p^N\).
PRECONDITIONS:
Must have \(p > (2g+1)(2N-1)\), where \(g = (\deg(Q)-1)/2\) is the genus of the curve.
ALGORITHM:
Described in “Kedlaya’s algorithm in larger characteristic” by David Harvey. Running time is theoretically soft-\(O(p^{1/2} N^{5/2} g^3)\).
Todo
Remove the restriction on \(p\). Probably by merging in Robert’s code, which eventually needs a fast C++/NTL implementation.
EXAMPLES:
sage: from sage.schemes.hyperelliptic_curves.hypellfrob import hypellfrob sage: R.<x> = PolynomialRing(ZZ) sage: f = x^5 + 2*x^2 + x + 1; p = 101 sage: M = hypellfrob(p, 4, f); M [ 91844754 + O(101^4) 38295665 + O(101^4) 44498269 + O(101^4) 11854028 + O(101^4)] [ 93514789 + O(101^4) 48987424 + O(101^4) 53287857 + O(101^4) 61431148 + O(101^4)] [ 77916046 + O(101^4) 60656459 + O(101^4) 101244586 + O(101^4) 56237448 + O(101^4)] [ 58643832 + O(101^4) 81727988 + O(101^4) 85294589 + O(101^4) 70104432 + O(101^4)] sage: -M.trace() 7 + O(101^4) sage: sum([legendre_symbol(f(i), p) for i in range(p)]) 7 sage: ZZ(M.det()) 10201 sage: M = hypellfrob(p, 1, f); M [ 0 + O(101) 0 + O(101) 93 + O(101) 62 + O(101)] [ 0 + O(101) 0 + O(101) 55 + O(101) 19 + O(101)] [ 0 + O(101) 0 + O(101) 65 + O(101) 42 + O(101)] [ 0 + O(101) 0 + O(101) 89 + O(101) 29 + O(101)]
AUTHORS:
- David Harvey (2007-05)
- David Harvey (2007-12): updated for hypellfrob version 2.0