Thanks for your comments, David. I am having some success:
sage: A = AbelianGroup([2,3])
sage: A.list()
[1, f1, f1^2, f0, f0*f1, f0*f1^2]
sage: A = AbelianGroup([2,3],operation='+')
sage: A.list()
[0, f1, 2*f1, f0, f0+f1, f0+2*f1]
sage: A = AbelianGroup([2,3], names='ab')
sage: A.list()
[1, b, b^2, a, a*b, a*b^2]
sage: A = AbelianGroup([2,3],names='ab',operation='+')
sage: A.list()
[0, b, 2*b, a, a+b, a+2*b]
The one thing I cannot get to work in the additive case is (for
example) 2*g where g is a group element. I have tried all possible
combinations of __lmul__, _lmul_, __rmul__, _rmul_, but although I
have this ok:
sage: a,b=A.gens()
sage: b._lmul_(20)
2*b
sage: 2*b
inputting 20*b gives an error:
TypeError Traceback (most recent call last)
/home/john/sage-3.1.final/<ipython console> in <module>()
/home/john/sage-3.1.final/element.pyx in
sage.structure.element.RingElement.__mul__
(sage/structure/element.c:9190)()
/home/john/sage-3.1.final/coerce.pyx in
sage.structure.coerce.CoercionModel_cache_maps.bin_op
(sage/structure/coerce.c:6288)()
TypeError: unsupported operand parent(s) for '*': 'Integer Ring' and
'Additive Abelian Group isomorphic to C2 x C3'
Maybe someone who understands coercion can tell me how to get around this?
John
2008/8/28 David Joyner <[EMAIL PROTECTED]>:
>
> Since no one has emailed intelligent comments yet, I'll add my own
> not-so-intelligent but hopefully encouraging ones below:-)
>
> On Wed, Aug 27, 2008 at 3:18 PM, John Cremona <[EMAIL PROTECTED]> wrote:
>>
>> Currently in Sage, AbelianGroups are all multiplicative. There's a
>> TODO in abelian_groups.py which asks to implement additive groups.
>>
>> As I got fed up with this sort of thing:
>>
>> sage: E=EllipticCurve('11a1')
>> sage: T=E.torsion_subgroup()
>> sage: list(T)
>> [1, P, P^2, P^3, P^4]
>>
>> (where it should be something like [0,P,2*P,3*P,4*P] ), I started to
>> try to adapt abelian_group.py to allow for multiplicative groups.
>> I had some success (after changing just that file, all the original
>> doctests still passed, since I had it take the group operation to be
>> multiplication by default).
>
> Agreed, this definitely needs fixing.
>
>>
>> But then I found that AbelianGroupElement was derived from
>> MultiplicativeGroupElement which in turn is derived from
>> MonoidElement, while AdditiveGroupElement is derived from
>> ModuleElement. These two do have a common ancestor, plain Element.
>> I think will make it hard to write common code for additive group
>> elements and multiplicative group elements.
>
>
> I don't see the problem here. It seems to me that the only
> problem would arise if you are building a method which maps a
> group (G,*) to a group (G,+) (in which case maybe you get something
> circular), but I don't see why this is needed. I may be totally naive about
> this
> though.
>
>>
>> I think it might work to use MultiplicativeGroupElement even when the
>> operation is addition, but that would seem rather perverse. But it is
>> perhaps notable that AdditiveGroupElement is hardly ever used in Sage:
>> the only places are ine the definition of EllipticCurvePoint_field and
>> JacobianMorphism_divisor_class_field.
>>
>> I would welcome some comments on what we might do about this. In the
>> meantime I'll try to get AbelianGroupElements to behave additively
>> even though they are derived from MultiplicativeGroupElements.
>
>
> I'm not convinced this is the "right" procedure, but if it works and
> is well-documented
> then that is better than nothing!
>
>
>>
>> Relevant still-open tickets are:
>>
>> #1849: [with patch (part 1 of 2); not ready for review] rewrite abelian
>> groups
>> -- showing that William did a whole lot of work on this back in
>> January/February (I remember, we were working in the same room at the
>> time) which was not completed;
>>
>> and
>>
>> #3127: [duplicate] abelian groups (are lame?) -- bug in comparison of
>> subgroups ...
>> -- which is closed, but contains the comment from William:
>> WARNINGS:
>>
>> 1. David Roe is recently rumored to be rewriting abelian groups.
>> 2. I recently rewrote abelian groups but my patch rotted: #1849
>> 3. There are other known problems with subgroups of abelian groups: #2272
>>
>>
>> John
>>
>> >
>>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
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-devel
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---