#5976: [with patch; needs work] Add an Elliptic Curve Isogeny object
---------------------------+------------------------------------------------
Reporter: shumow | Owner: shumow
Type: enhancement | Status: assigned
Priority: major | Milestone: sage-4.0
Component: number theory | Keywords: Elliptic Curves
---------------------------+------------------------------------------------
Comment(by shumow):
Replying to [comment:12 cremona]:
> Replying to [comment:11 shumow]:
> > Replying to [comment:10 cremona]:
> > > That is probably right, but how do you define "normalised"? I think
the definition is that the pull-back of the standard differential w_E =
dx/(2y+a1*x+a3) under the isgeny is again the standard differential; for
[m] the pull-back of w is m*w. Obviously this only makes sense for
separable isogenies, since otherwise the pull-back of w is 0.
> > >
> > > Or do you in fact mean "cyclic" isogeny?
> > >
> > > We definitely need to be able to handle non-normalised isogenies, if
only because the dual of a normalised isogeny is not normalised (using my
definition above).
> > >
> > > I'm in a rush, so apologise if this is nonsense.
> >
> > I don't mean "cyclic" isogeny. Yes, I meant the definition using the
pullback of the invariant differential, which I believe is equivalent to
that characterization that the isogeny map is defined by: (I(x),
c*y*I'(x)) and c == 1. Where I(x) is a rational map given by the various
different formulas/algorithms.
>
> OK, that's the definition I meant. (e.g. with this definition,
multiplication-by-m is normalised iff m=1, since c=m). Except that the
precise characterization you give is only correct when the curve has short
Weierstrass form (y^2=f(x)). Otherwise it something like (I(x),
cI'(x)(y+(a1*x+a3)/2) - (A1*I(x)+A3)/2) where E=[a1,a2,a3,...] and the
isogenous curve is [A1,A2,...].
>
I think this is correct. My apologies for using the short form, I just
grabbed the first one I saw in my notes.
> Since we are specifying the isogeny from its kernel, it is well-defined
up to an automorphism, so usually up to +/-1 (with the usual awkward
special cases). So if the user asks for an isogeny with a given kernel
they surely don't get to specify whether or not it is normalised (except
for the sign)?
Do you think it would be nice to give the expected isogeny even if it
isn't normalized in some cases?
For example, if the user asks for the dual isogeny, then we can use the
algorithms for computing normalized isogenies, and figure out what the
post isomorphism is to get back to the original Weierstrass model. This
addresses the problem of wanting to get the dual isogeny such that the
composition provides the expected multiplication by d map (where d is the
degree of the isogeny.)
We could also provide an option that if the domain and range curves are
isomorphic, then the code determines the isomorphism and post-composes
appropriately.
In the usual case, when the user specifies just the Kernel, then I agree,
they surely should not get to specify whether or not it is normalized
(except up to sign.)
I think that this solution is a good balance between allowing users who
want to naturally use non normalized isogenies in simple cases, and not
making the interface over complicated by trying to be overly flexible.
Thoughts?
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/5976#comment:13>
Sage <http://sagemath.org/>
Sage - Open Source Mathematical Software: Building the Car Instead of
Reinventing the Wheel
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---