Thanks for the suggestion. But it does not work for me. Even though b.__rmul__(2) works , as do b.__mul__(2) and b.__lmul__(2) and b*2, 2*b still gives the error: non of my own mul functions are getting seen, it goes straight for the default which fails.
I just discovered that int(2)*b does work! I would love to know if this is a bug or a feature of coercion. Of course, it is probably my own fault for trying to get an additive group whose elements are of type MultiplcativeGroupElement.... but this is the *only* thing which does not work. John 2008/8/28 David Joyner <[EMAIL PROTECTED]>: > > On Thu, Aug 28, 2008 at 9:20 AM, John Cremona <[EMAIL PROTECTED]> wrote: >> >> 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? > > > Again, I'm not one who actually understand this, but I have some > comments anyway:-) > > I had the same problem in the Piecewise class. For a long time, > if > > sage: f1(x) = 1 > sage: f2(x) = 1 - x > sage: f = Piecewise([[(0,1),f1],[(1,2),f2]]) > > then f*2 would work but 2*f would break. Then C Boncelet suggested how > to fix this, > and now (SAGE Version 3.1.2.alpha1) it works like a charm: > > sage: 2*f > Piecewise defined function with 2 parts, [[(0, 1), x |--> 2], [(1, 2), > x |--> 2*(1 - x)]] > > If you think this will help with your problem, see > http://trac.sagemath.org/sage_trac/ticket/3655 > > > >> >> 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 sage-devel@googlegroups.com 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 -~----------~----~----~----~------~----~------~--~---