#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
-~----------~----~----~----~------~----~------~--~---

Reply via email to