#7927: Extend coleman integration to handle Weierstrass points
-----------------------------+----------------------------------------------
Reporter: robertwb | Owner: was
Type: defect | Status: needs_work
Priority: major | Milestone: sage-4.3.2
Component: number theory | Keywords:
Author: | Upstream: N/A
Reviewer: | Merged:
Work_issues: |
-----------------------------+----------------------------------------------
Changes (by kedlaya):
* status: new => needs_work
Comment:
The overlap needs to be taken care of somehow. It might be easiest for Jen
to incorporate whatever is appropriate from Robert's patch.
I'm dubious about the treatment of points in the infinite disc, on several
counts. One is whether the Frobenius gets the y-coordinate right, since I
think in both patches the check passes for trivial reasons whether or not
the y-coordinate is right. Under Robert's patch, one gets lucky: you win
as long as the square root of a p-adic number with unit part congruent to
1 mod p is guaranteed to be congruent to 1 mod p. This is undocumented but
appears to be true. Under Jen's patch, one does not get lucky:
{{{
sage: K = pAdicField(11, 5)
sage: x = polygen(K)
sage: C = HyperellipticCurve(x^5 + 33/16*x^4 + 3/4*x^3 + 3/8*x^2 - 1/4*x +
1/16)
sage: P = C.lift_x(11^(-2))
sage: C.frobenius(P)
(11^-22 + O(11^-17) : 10*11^-55 + 10*11^-54 + 10*11^-53 + 10*11^-52 +
10*11^-51 + O(11^-50) : 1 + O(11^5))
}}}
More seriously, computing Coleman integrals even between two points in the
infinite disc seems to be broken. Under Robert's patch, we have:
{{{
sage: K = pAdicField(11, 5)
sage: x = polygen(K)
sage: C = HyperellipticCurve(x^5 + 33/16*x^4 + 3/4*x^3 + 3/8*x^2 - 1/4*x +
1/16)
sage: P = C.lift_x(11^(-2))
sage: Q = C.lift_x(3*11^(-2))
sage: C.tiny_integrals_on_basis(P,Q)
[9*11^3 + 11^4 + 2*11^5 + 2*11^6 + 11^7 + O(11^8), 11^2 + 5*11^4 + 3*11^5
+ O(11^6), 8*11^-1 + 5 + 5*11 + 5*11^2 + 6*11^3 + O(11^4), 10*11^-3 +
3*11^-2 + 7*11^-1 + 5 + 8*11 + O(11^2)]
sage: C.coleman_integrals_on_basis(P, Q)
(10*11^-102 + 2*11^-101 + 9*11^-100 + 3*11^-99 + O(11^-98), 8*11^-102 +
2*11^-101 + 2*11^-100 + O(11^-98), 10*11^-103 + 8*11^-102 + 3*11^-101 +
6*11^-100 + 7*11^-99 + O(11^-98), 2*11^-103 + 5*11^-102 + 8*11^-100 +
5*11^-99 + O(11^-98))
}}}
The last two lines should be the same; right now, they aren't even of the
same return type (one is a list, one is a tuple).
Under Jen's patch, the last call returns an error instead:
{{{
---------------------------------------------------------------------------
ValueError Traceback (most recent call
last)
/scratch/sage-4.3.2.alpha0/<ipython console> in <module>()
/scratch/sage-4.3.2.alpha0/local/lib/python2.6/site-
packages/sage/schemes/hyperelliptic_curves/hyperelliptic_padic_field.pyc
in coleman_integrals_on_basis(self, P, Q)
136
137 prof("tiny integrals")
--> 138 TP = self.teichmuller(P)
139 # print "TP", TP
140 P_to_TP = V(self.tiny_integrals_on_basis(P, TP))
/scratch/sage-4.3.2.alpha0/local/lib/python2.6/site-
packages/sage/schemes/hyperelliptic_curves/hyperelliptic_padic_field.pyc
in teichmuller(self, P)
117 """
118 K = P[0].parent()
--> 119 x = K.teichmuller(P[0])
120 pts = self.lift_x(x, all=True)
121 p = K.prime()
/scratch/sage-4.3.2.alpha0/local/lib/python2.6/site-
packages/sage/rings/padics/padic_generic.pyc in teichmuller(self, x, prec)
376 prec = min(Integer(prec), self.precision_cap())
377 ans = self(x, prec)
--> 378 ans._teichmuller_set()
379 return ans
380
/scratch/sage-4.3.2.alpha0/local/lib/python2.6/site-
packages/sage/rings/padics/padic_capped_relative_element.so in
sage.rings.padics.padic_capped_relative_element.pAdicCappedRelativeElement._teichmuller_set
(sage/rings/padics/padic_capped_relative_element.c:17195)()
ValueError: cannot set negative valuation element to Teichmuller
representative.
}}}
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/7927#comment:2>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en.