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