#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: |
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) = f^{2}(Q)-f^{2}(P), which gives int(df*f,P, Q) = 1/2*(f^{2}(Q)-f^{2}(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)
Change History (17)
comment:1 Changed 13 years ago by
- Milestone changed from sage-3.4.2 to sage-4.0
comment:2 Changed 13 years ago by
comment:3 Changed 13 years ago by
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
- 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
Negation bug at #5947
Changed 13 years ago by
comment:6 Changed 13 years ago by
Also has fix for #5947
comment:7 Changed 13 years ago by
- 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
- 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
- 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
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
comment:11 Changed 13 years ago by
- 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
- 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
- Resolution set to fixed
- Status changed from new to closed
Merged in 4.0.1.alpha0.
comment:14 Changed 13 years ago by
- Merged in set to alpha0
- Reviewers set to Jen Balakrishnan
comment:15 Changed 13 years ago by
- Merged in changed from alpha0 to 4.0.1.alpha0
There already seems to be trouble with tiny integrals. Check this out: