#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.

Reply via email to