#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 cremona):
Comments by David Kohel, posted by John Cremona from an email:
There's not too much for me to comment on, except that given (E,G), the
isogeny \phi_G: E -> E' is well-defined up to isomorphism of the codomain.
The condition on the pull-back of the standard invariant differential
rigidifies the choice of E' up to affine translations fixing leading
coefficients of x and y and possible automorphisms which are 1 mod (pi)
[pi = Frobenius], e.g. -1 = 1 mod (pi) in characteristic 2.
On notation, I've called my isogeny from kernel function Velu's isogeny.
In retrospect it might be useful to just plug in a point, or points,
and construct the kernel from the group elements using Velu's original
algorithm or by constructing the kernel polynomial psi(x) and applying
the algorithms of my thesis (which just reformulates Velu's construction
in terms of psi(x) rather than its roots).
Note that Velu retains the first coefficients a1, a2, a3, which makes
the codomain curve more rigid (killing off the affine translation).
I suggest a syntax like (note that I haven't actually inspected the
algorithm which has been implemented or its syntax):
E.isogeny_from_kernel(
kernel,
codomain=None,
order=None,
pullback_scalar=None,
algorithm=None)
The inputs are thus:
kernel : which is a kernel polynomial, a torsion point, or
list of torsion points; or, once such an class is created,
a torsion subgroup scheme.
codomain : the codomain curve, if one other than Velu's choice
is desired.
order : the order of the kernel (this can be inferred, but can
bypass a gcd with the 2-torsion polynomial).
pullback_scalar : [find a better name] the scalar f^*(w')/w
of the pullback of the standard invariant differential w'
on the codomain divided by that on the domain E.
algorithm : this was 'velu' or 'kohel', but is now redundant,
if I understand correctly the intended difference, since
it can be determined from the input type (to kernel).
Maybe an abelian_invariants=None (a list of one or two integers,
the first dividing the second, to indicate the group structure)
could be added, to differentiate cyclic and acyclic groups of the
same order. I think this may only be relevant to the algorithm
if 4 divides the order.
Unlike Magma, the returned object should be the isogeny (not the
codomain curve + isogeny). The codomain curve is part of the
isogeny data: E.isogeny_from_kernel(psi).codomain().
One could also define:
E.isogeny_codomain_from_kernel(...)
which only constructs the codomain (this is much more efficient,
and sometimes the isogeny is not desired).
Note that if one is interested in defining endomorphisms, then
one can define a homomorphism c of O = End(E) to R = E.base_ring()
(with kernel generated by Frobenius is finite characteristic),
and set the pullback scalar to c(alpha) when constructing an
isogeny from ker(alpha). This gives one control to determine
the right pullback scalar for endomorphisms. Is one then specifies
the codomain to be E (the domain curve), then one should be able
to recognize a a trivial identity isomorphism to tehis given
codomain.
Cheers,
David
P.S. I have my original Magma code for Velu isogenies if this
is of any use. In terms of notation, I tend to prefer torsion
polynomial as clearer in meaning to the standard term division
polynomial (which I have imposed on Magma and Sage).
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/5976#comment:15>
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
-~----------~----~----~----~------~----~------~--~---