On Jul 4, 2008, at 7:12 AM, John H Palmieri wrote:

> I'm running into a coercion problem.  I'm trying to define a class
> SteenrodAlgebra (based on the Algebra class); there should be one
> Steenrod algebra for each prime number p, and it is an algebra over
> GF(p).  For example, you can do
>
> sage: A5 = SteenrodAlgebra(5)
> sage: A7 = SteenrodAlgebra(7)

I just tried these lines, where do I import SteenrodAlgebra from? (Or  
is it not in standard Sage yet?)

> I have coercion working properly for addition, but not multiplication,
> and I really don't know why.  One way to define elements is to use a
> method called "P":
>
> sage: v = A5.P(1,2,3)
> sage: w = A7.P(4,5)
>
> The identity element of the Steenrod algebra is called P(0), and I
> have a _coerce_impl method which seems to work: it seems to coerce a
> scalar into the appropriate scalar multiple of P(0):
>
> sage: 3 + v
> 3 P(0) + P(1,2,3)
> sage: 11 + w      # addition here is mod 7
> 4 P(0) + P(4,5)
>
> Multiplication is broken, though:
>
> sage: 3 * v     # this works
> 3 P(1,2,3)
> sage: 11 * w
>
> gives me a traceback, and it appears that the problem is that Sage is
> testing whether A5.gen(0) is equal to A7.gen(0).  Why is A7.gen(0)
> involved?  I mean, w is in A7, but why is Sage interested in its 0th
> generator?  And why is A5.gen(0) involved in this at all, when I'm
> trying to multiply an element of A7 by an integer (which should coerce
> to an element of GF(7), and then into A7)?  If I interchange the order
> of evaluation here, doing 11 * w before 3 * v, then 11 * w works,
> while 3 * v gives the error.  By putting in some print statements in
> various places, I can see that even when 3 * v works, it is still
> calling A5.gen(0) the first time it is called; subsequent times, it
> doesn't call this.  (Is Sage caching information about generators
> somewhere, and is that perhaps causing problems, because I've done
> something wrong and not distinguished sufficiently between Steenrod
> algebras at different primes?)
>
> So I'm very confused.  Any ideas what I should look at to try to fix
> this?

Yes, Sage caches some information so it doesn't have to do the logic  
anew on each arithmetic operation. One thing to check is if A5 == A7  
succeeds. If you could post the traceback I could see if anything  
stands out to me.

- Robert




--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-support@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-support
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to