New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bug in elliptic curve Galois Representation #19229
Comments
comment:1
Tracked down to {{{_semistable_reducible_primes()}} in line 801:
where a is an integer, but then the code base-changes the base field to this field Q(sqrt(a)), and there is a problem since 'a' is the name of K's generator. This causes a ValueError which is caught in the wrong place in lines 292-4:
I will fix this by putting in a test for CM much earlier (which did not exist when this code was written). Also when constructing F we can make sure that the name of iots generator is not the same as that of K. |
Author: John Cremona |
This comment has been minimized.
This comment has been minimized.
Commit: |
New commits:
|
Branch: u/cremona/19229 |
comment:4
Fixed as follows: on construction of the GaloisRepresentation object the CM status of the elliptic curve is assessed and cached. This enables some cleaning of the code later where we never have to rely on the raising of exceptions to catch situations which only happen in the CM case. This does not in itself fix the bug, we just get a different error, so the second fix is to make the variable name of a number field constructed on one function not clash. Appropriate doctests added here and in the docstring for E.isogeny_class(). |
This comment has been minimized.
This comment has been minimized.
comment:6
Anyone out there? |
comment:7
What's the point of this "poor man's caching", why not use + self._has_cm = E.has_cm()
+ self._has_rational_cm = E.has_rational_cm() There seems to be an indentation problem with + # ramified primes Funny spacing: + if E .has_bad_reduction(P): |
comment:8
Replying to @jdemeyer:
No reason, but that is how it was, and this is a bug fix.
I will look at those. |
comment:10
I merged with current beta, fixed the two spacing issues, made 3 methods into cached_methods as suggested. I also tidied up imports in ell_number_field. Please re-review! |
comment:11
Did you do something while committing? I see you added files I recommend to fix this using |
comment:12
That was a mistake. git is showing up hundreds of .c, .cpp, .h files which makes "git status" hard to read and I added some files by mistake but then thought that I had removed them again. What a pain. I'll fix it. |
comment:13
Replying to @JohnCremona:
This isn't supposed to be like that. Do yourself a favour and remove those files. |
Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:
|
comment:15
Replying to @jdemeyer:
Any idea how they got there? None have anything to do with anything I have done. I presume a simple rm (not git) will suffice? I fixed the commit... |
comment:25
does no longer apply. |
comment:26
Dammit, I thought this was merged ages ago. So I'll fix it -- I am using it every day! |
comment:29
two failing doctests ! |
comment:30
I can guess which ones wince I noticed that there are two which sometoimes do work and sometimes do not. Since you do not tell me, I guess that these are the 2 6x6 matrices for the CM isogeny class example with class number 6. In my defence, I can assure you that on my machine the tests did pass before I uploaded the branch.... |
comment:31
To know the failing doctest, you have to click on the patchbot icon (currently yellow with a question mark) at the top right of this page. Then click on the "shortlog" link of the next-to-last report by "poseidon" patchbot. This is indeed a 66 matrix of numbers and a 66 matrix of lists. |
comment:32
Yes that is the thing I was expecting. Note that there is another bot on which the test passes. It's something nondeterministic in how I sort the curves in an isogeny class. |
comment:33
By the, this (sometimes) failing doctest has nothing whatsoever to do with the changes on this ticket, but there is some randomness creeping into the sorting of curves. |
comment:34
I have found a typo (several times):
Otherwise looks good to me (but I am no expert) |
comment:36
Would people be bothered if I marked the two strange doctests as "random" for the time being? Otherwise this sorting issue is delaying the merging of a genuine bug-fix. I have a strong personal incentive to get the sorting issue dealt with, but that should not be on this ticket anyway. I plan to update the branch accordingly. |
comment:37
Replying to @JohnCremona:
With proper documentation and a reference to the discussion, no problem. |
comment:38
Replying to @jdemeyer:
OK, I'll see if I can meet your high standards or "proper"! I corrected all occurrences of "infintely" also (2 here, but a few a other places). |
Reviewer: Frédéric Chapoton |
comment:41
ok, good enough for me |
Changed branch from u/cremona/19229 to |
is caused by
and in turn by
According to the documentation for the last function it should return [0] if and only if E has CM, which is does not:
(CM curves certainly have integral j-invariant, so you don't need to trust the is_cm() method to believe that!)
Component: elliptic curves
Keywords: Galois representations
Author: John Cremona
Branch/Commit:
8680baa
Reviewer: Frédéric Chapoton
Issue created by migration from https://trac.sagemath.org/ticket/19229
The text was updated successfully, but these errors were encountered: