Opened 13 years ago

Closed 13 years ago

Last modified 13 years ago

#5948 closed defect (fixed)

[with patch, positive review] Coleman integrals of df*f

Reported by: jen Owned by: robertwb
Priority: major Milestone: sage-4.0.1
Component: algebraic geometry Keywords:
Cc: mabshoff, robertwb Merged in: 4.0.1.alpha0
Authors: Robert Bradshaw Reviewers: Jen Balakrishnan
Report Upstream: Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Status badges

Description

This is a problem arising from the computation of iterated Coleman integrals. It seems that (single) Coleman integrals of df*f for f coming from the MW-reduction are wrong.

Here's the setup:

sage: R.<x> = QQ['x']
sage: E= HyperellipticCurve(x^3-4*x+4)
sage: K = Qp(5,10)
sage: EK = E.change_ring(K)
sage: P = EK(2,2)
sage: Q = EK(-2,-2)
sage: P = EK.teichmuller(P)
sage: Q = EK.teichmuller(Q)
sage: import sage.schemes.elliptic_curves.monsky_washnitzer as monsky_washnitzer
sage: M_frob, forms = monsky_washnitzer.matrix_of_frobenius_hyperelliptic(EK)
sage: f = forms[0]

We know that int(df df,P,Q) = 1/2*int(df,P,Q)2, where the integral on the LHS is iterated and the integral on the RHS is a usual Coleman integral. Using a single Coleman integral to compute this gives

sage: 1/2*EK.coleman_integral(f.diff(),P,Q)^2
3*5^2 + 5^3 + 5^4 + 5^5 + 4*5^6 + 2*5^7 + 4*5^8 + 5^9 + 3*5^10 + 4*5^11 + O(5^12)

We also can expand int(df df,P,Q) = f(Q)*(f(Q)-f(P)) - int(df*f,P,Q) (*)

Now let's check the things on the RHS of (*)

sage: EK.coleman_integral(-f.diff(),P,Q) == f(Q[0],Q[1])-f(P[0],P[1])
True

So the first term is computed consistently (modulo the minor problem with f.diff() -- see #5947). The second term is the problem, and here's why: integrating by parts, we have int(f*df,P,Q) + int(df*f, P,Q) = f2(Q)-f2(P), which gives int(df*f,P, Q) = 1/2*(f2(Q)-f2(P)). ()

Computing the LHS of () gives:

sage: EK.coleman_integral(-f.diff()*f,P,Q)
2*5^2 + 2*5^3 + 2*5^4 + 5^6 + 5^7 + 4*5^8 + 2*5^10 + 3*5^11 + O(5^12)

Computing the RHS of () gives

sage: g = f^2
sage: 1/2*(g(Q[0],Q[1])-g(P[0],P[1]))
2*5^2 + 2*5^3 + 2*5^6 + 4*5^7 + 3*5^8 + 2*5^9 + 2*5^11 + O(5^12)

So they're good up to 2 digits, but no more. The RHS is the correct one:

sage: f(Q[0],Q[1])*(f(Q[0],Q[1])-f(P[0],P[1])) -
1/2*(g(Q[0],Q[1])-g(P[0],P[1])) ==
1/2*EK.coleman_integral(-f.diff(),P,Q)^2
True

Thus the bug is with

EK.coleman_integral(-f0.diff()*f0,P,Q)

I looked at the code briefly, but at first glance, it doesn't look like the coercion into MonskyWashnitzerDifferentialRing? changes much :

sage: EK.coleman_integral(-f0.diff()*f0,P,Q,True)         #skipping
the coercion step
2*5^2 + 2*5^3 + 2*5^4 + 5^6 + 5^7 + 4*5^8 + 5^11 + O(5^12)
sage: EK.coleman_integral(-f0.diff()*f0,P,Q,False)       #the usual
2*5^2 + 2*5^3 + 2*5^4 + 5^6 + 5^7 + 4*5^8 + 2*5^10 + 3*5^11 + O(5^12)

So maybe it's something with the reduction?

Attachments (2)

5948-coleman-reduce-forms.patch (8.9 KB) - added by robertwb 13 years ago.
5948-v2.patch (9.7 KB) - added by kedlaya 13 years ago.

Download all attachments as: .zip

Change History (17)

comment:1 Changed 13 years ago by mabshoff

  • Milestone changed from sage-3.4.2 to sage-4.0

comment:2 Changed 13 years ago by kedlaya

There already seems to be trouble with tiny integrals. Check this out:

sage: R.<x> = QQ['x']
sage: E= HyperellipticCurve(x^3-4*x+4)
sage: K = Qp(5,10)
sage: EK = E.change_ring(K)
sage: P = EK(2, 2)
sage: Q = EK.teichmuller(P)
sage: import sage.schemes.elliptic_curves.monsky_washnitzer as monsky_washnitzer
sage: M_frob, forms = monsky_washnitzer.matrix_of_frobenius_hyperelliptic(EK)
sage: f = forms[0]
sage: u = f.parent().gens()[0]
sage: u
x
sage: u.diff()
2*y*1 dx/2y
sage: EK.coleman_integral(-u.diff(), P, Q)
5 + 5^2 + 5^3 + 2*5^4 + 5^5 + 3*5^6 + 3*5^7 + 4*5^8 + O(5^10) # wrong
sage: u(Q[0], Q[1]) - u(P[0], P[1])
5 + 2*5^2 + 5^3 + 3*5^4 + 4*5^5 + 2*5^6 + 3*5^7 + 3*5^9 + O(5^10) # right

comment:3 Changed 13 years ago by robertwb

I think line 65 in hyperelliptic_padic_field:62 should be

            I = sum([f_dt[n]/(n+1) for n in xrange(f_dt.degree()+1)]) # \int_0^1 f dt

though this doesn't solve the issue...

comment:4 Changed 13 years ago by robertwb

  • Summary changed from Coleman integrals of df*f to [with patch, needs review] Coleman integrals of df*f

comment:5 Changed 13 years ago by robertwb

Negation bug at #5947

Changed 13 years ago by robertwb

comment:6 Changed 13 years ago by robertwb

Also has fix for #5947

comment:7 Changed 13 years ago by jen

  • Summary changed from [with patch, needs review] Coleman integrals of df*f to [with patch, positive review] Coleman integrals of df*f

The patch looks good and fixes the problems I had with iterated integrals.

comment:8 Changed 13 years ago by mabshoff

  • Summary changed from [with patch, positive review] Coleman integrals of df*f to [with patch, needs work] Coleman integrals of df*f

With this patch applied to my 4.0.rc1 merge tree I get one failure:

mabshoff@sage:/scratch/mabshoff/sage-4.0.rc1$ ./sage -t -long devel/sage/sage/schemes/elliptic_curves/monsky_washnitzer.py
sage -t -long "devel/sage/sage/schemes/elliptic_curves/monsky_washnitzer.py"
**********************************************************************
File "/scratch/mabshoff/sage-4.0.rc1/devel/sage/sage/schemes/elliptic_curves/monsky_washnitzer.py", line 2647:
    sage: y.diff().reduce_fast()
Expected:
    (y, (0, 0))
Got:
    (y*1, (0, 0))
**********************************************************************
1 items had failures:
   1 of  10 in __main__.example_50
***Test Failed*** 1 failures.
For whitespace errors, see the file /scratch/mabshoff/sage-4.0.rc1/tmp/.doctest_monsky_washnitzer.py
         [10.3 s]
exit code: 1024

Thoughts?

Cheers,

Michael

comment:9 Changed 13 years ago by mabshoff

  • Cc mhansen added

Thinking about this for a minute: This is probably due to new symbolics, but I am still hesitant to merge this until the symbolics issue is resolved. Once it is the positive review should be reinstated.

Cheers,

Michael

comment:10 Changed 13 years ago by robertwb

This is unrelated to the new symbolics, and the doctest should be changed. (Here the results is an element of the special hyperelliptic quotient ring, which has sub-optimal but still correct printing for trivial elements.)

Changed 13 years ago by kedlaya

comment:11 Changed 13 years ago by kedlaya

  • Cc mabshoff robertwb added; mhansen removed
  • Summary changed from [with patch, needs work] Coleman integrals of df*f to [with patch, needs review] Coleman integrals of df*f

Here's a new patch adding the one-line fix to the doctest.

comment:12 Changed 13 years ago by jen

  • Summary changed from [with patch, needs review] Coleman integrals of df*f to [with patch, positive review] Coleman integrals of df*f

Looks great!

comment:13 Changed 13 years ago by mhansen

  • Resolution set to fixed
  • Status changed from new to closed

Merged in 4.0.1.alpha0.

comment:14 Changed 13 years ago by mhansen

  • Authors set to Robert Bradshaw
  • Merged in set to alpha0
  • Reviewers set to Jen Balakrishnan

comment:15 Changed 13 years ago by davidloeffler

  • Merged in changed from alpha0 to 4.0.1.alpha0
Note: See TracTickets for help on using tickets.