#11474: Elliptic curves should be unique parent structures
-----------------------------------+--------------------------
       Reporter:  SimonKing        |        Owner:  cremona
           Type:  defect           |       Status:  needs_info
       Priority:  major            |    Milestone:  sage-6.2
      Component:  elliptic curves  |   Resolution:
       Keywords:  unique parent    |    Merged in:
        Authors:  Simon King       |    Reviewers:
Report Upstream:  N/A              |  Work issues:
         Branch:                   |       Commit:
   Dependencies:                   |     Stopgaps:
-----------------------------------+--------------------------

Comment (by pbruin):

 Replying to [comment:13 sbesnier]:
 > So, if I make it short:
 >
 > * the idea  would be to generalize the "abelian_group" method which is
 currently only avaible for EC on Galois fields to all the EC in order to
 have an actual "AbelianGroup" in the sage category system (in addition
 with "Scheme"). Hence, the "non-uniqueness of set of generators" problem
 is moved into this "new" class of "Abelian Group of points on EC..." and
 it is easy to make EC unique.
 > * Moreover, it would be nice to do the same separation between isogenies
 seen as scheme-morphim and isogenis seen as group-morphim.
 >
 > Am I right? May I begin to refactoring the code in this way?
 I think this sounds like a good plan.  It does have a certain the risk of
 becoming a big project, so be careful to split it into well-defined steps
 and to proceed one step at a time.

 Just some thoughts about the first of your two points for now.  Before
 doing any coding, I would say it is essential to have a clear picture of
 both the mathematical objects and the Sage (or Python) objects
 representing them, and of the relations between them.  Currently, given an
 elliptic curve ''E'' over a field ''K'', there are at least three kinds of
 objects to consider:
 - the Sage object `E` representing the curve itself as a scheme (type
 `EllipticCurve_rational_field` or similar);
 - the group of points `E(K)` (or more generally `E(L)` for an extension
 `L` of `K`), which does not care about the group structure but is the
 parent of (the Sage objects representing the) ''K''-rational points of
 ''E'' (type `SchemeHomset_points_abelian_variety_field`);
 - if ''K'' is a finite field, there is also `E.abelian_group()`, which
 returns an object of type `AdditiveAbelianGroupWrapper`.  This represents
 the group structure of `E(K)` concretely by returning a product of at most
 two finite cyclic groups and an embedding of this product into the
 "abstract" group `E(K)` (which in this case is an isomorphism).
 This looks like the right framework for elliptic curves over number fields
 as well, since the group of ''K''-points is finitely generated.  For
 general fields (e.g. '''C'''), it only makes sense to have the first two
 kinds of objects.  So writing a variant of `E.abelian_group()` for
 elliptic curves over number fields could be a logical first step.

 In general it is important to find out what functionality is already
 available, and how much of it you can use.  (Remember that a guiding
 principle of Sage is "building the car, not reinventing the wheel".  This
 originally refers to the fact that Sage builds on many other pieces of
 software, but it is also a good general slogan.)

 > I've disscussed today with Luca today and he thinks that would be good
 to create a new category "AbelianVarieties" which require to implement
 this "abelian_group" method. What do you think about that ?

 It would indeed be nice to have a category of Abelian varieties, but this
 is probably largely independent of the rest of what you want to do.  The
 current implementation of `EllipticCurve_finite_field.abelian_group()`
 does not refer to categories either.  I would guess it is easiest to do
 the other things first without involving a category of Abelian varieties
 (in the code; you can of course always keep it in mind as the place where
 things live mathematically).  If you need to specify a category somewhere,
 `Schemes(K)` will probably be good enough for now, since this is the
 category in which elliptic curves over ''K'' currently live.

--
Ticket URL: <http://trac.sagemath.org/ticket/11474#comment:14>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to