-
-
Notifications
You must be signed in to change notification settings - Fork 510
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
Isogeny small degree improvement #38995
base: develop
Are you sure you want to change the base?
Isogeny small degree improvement #38995
Conversation
Documentation preview for this PR (built with commit 5c55a8b; changes) is ready! 🎉 |
About correctness: looks reasonable to me. Over GF(31) there are only 2 5-isogenies, the others are defined over GF(31^2) and the output from that looks just like this output. Perhaps it would be safer to have the doctest just report that there are six 5-isogenies, to guard against future versions making different choices? My familiarity with the supersingular case is less than perfect! I note that of the 6 isogenous curves there are only 3 isomorphism classes, E itself (@3) another @2 and another unique. I think it is great that this works as it should making only a trivial change to the code in isogenies_small_degree which I wrote years ago. Can you explain the need for the new copy methods? |
The copy is from #38994 . Basically it's needed to make it work at all because of some implementation detail. Specifically, some part of the code requires making a new isogeny with a different pre-composed isomorphism, so it calls the internal method I think it's desirable for arbitrary objects to be copyable anyway, so I can't see any harm. (Or at least if it's desirable to make algebraic closure of finite field not copyable then at least raise a meaningful error, but at the moment It might separately be a good idea to refactor the code to avoid mutable state in isogeny objects (easy to introduce accidental bugs), but currently it's just internal implementation detail anyway. |
Since this PR contains the code from #38994, which does not have its own positive review yet, it probably makes sense to close that PR and integrate the "Fixes #38988" into this PR to avoid clutter/confusion (alternatively @JohnCremona could also add a positive review to #38994) |
… over algebraic closure of finite field
53847e4
to
94b11fe
Compare
Since figuring out what to do with Conway polynomial and non-unique representation of algebraic closure of finite field might take a long time, I decide to modify the thing to just use shallow copy instead. As far as I can see this doesn't cause any trouble (the whole reason we need the copy in the first place is because |
94b11fe
to
29fdc1e
Compare
Should be fixed now. Summary:
The reason why shallow copy doesn't work is explained in #39061 . Deep copy may work eventually (when #38994 is fixed), but fundamentally we don't need a deep copy anyway. … actually what is the pre/post isomorphism used for anyway? Can't you just adjust the internal parameters to fit the isomorphism somehow? The tests are preserved to the best of my ability. Some tests in On a separate note, it may be also interesting to consider making shallow copies work correctly on object types that has cached methods. |
29fdc1e
to
cfc0ecd
Compare
Allow the following to be called without error.
Inspired from, but independent from, #38373 . Whatever consensus on that issue might be.
Would be good if someone can sanity check that the output is actually correct. (although it looks correct to me.)
Strangely enough there is
even though when I comment that part out, the code seems to work well.
📝 Checklist