On Wed, Aug 4, 2010 at 8:37 PM, Rob Beezer <[email protected]> wrote:
> I am implementing the group of units mod n (the multiplicative group
> of invertible elements of the ring Z_n).  Mostly I am interested in a
> non-trivial example of an infinite family of finite groups for
> students to work with, which can then also be used as an example of a
> direct product in accord with the classification of finite abelian
> groups.  Simple properties - order (group, elements), cyclic/non-
> cyclic, generators, subgroups - are of the most interest.  Doing so
> prompts the following observations and questions:
>
>
> AdditiveAbelianGroup
>
> This is a new addition to Sage, built on top of free modules over ZZ
> (which is itself around a year old).  Basically elements are
> represented as vectors of integers in a quotient of modules.  I have
> an implementation of the group-of-units built on top of this, using
> the vectors as exponents on generators.  But of course the base class
> is additive and my group is multiplicative, requiring adjustments such
> as redefining multiplication in the group of units in terms of
> addition in the additive group.  There are comments in the code
> suggesting subgroups could be coming.
>
>
> AbelianGroup
>
> This older class is really about multiplicative abelian groups.  It
> internally represents elements as vectors of exponents (as above), but
> prints elements as strings like  f1^2*f2^3  in accordance with GAP
> notation for groups described by generators.  There seems to be some
> dependence on GAP.  There is a command to get *all* subgroups (which
> would be very nice to use with beginning students).  I think I could
> have built my group of units on top of this class by redefiing some of
> the representations and making the parent/element relationship general
> enough to support derived classes.  This class already has the
> redefinitions of multiplicative operations (mul, pow, div) in terms of
> additive operations.  Curiously, the new AdditiveAbelianGroup classes
> derive (secondarily) from AbelianGroup, though I don't see just how
> this manifests itself.
>
>
> CommutativeAdditiveGroups
>
> This is part of the category framework.  I don't see
> CommutativeMultiplicativeGroups yet.  My group-of-units shows an
> "addition_table" available in tab-completion (additive as you might
> expect), but an attempt to call it results in an error that it is not
> available.  Again, for students, it would be nice to have the
> "multiplication_table" routine of the category code automatically
> available for the group-of-units.
>
>
> Questions:
>
> 1.  Will there be a MultiplicativeAbelianGroup class?  Should there
> be?  Should it derive from AdditiveAbelianGroup?

No.  That would break the incredibly important "is a" relationship
that one should *always* have when creating inheritance hierarchies in
object-oriented programming.

>  Or should it exist
> in parallel (so as to not confuse additive and multiplicative
> operations)?

Yes.

>
> 2.  How should all this plug-in to the categories framework?  Is this
> a simple matter?
>
>
> Short-term:  I'm not sure where to direct my energies for my group-of-
> units.
>
> Long-term:  After a few days of head-scratching, and some previous
> experience adding to the categories code, I have learned enough that I
> can probably contribute to this corner of the code.
>
> Comments, explanations, speculations, opinions, advice welcome.

It sounds to me like the "AbelianGroup" class you mention above that
depends somewhat on GAP
is basically the original code that David Joyner wrote long ago. The
AdditiveAbelianGroup class sounds
like the new code that David Loeffler wrote.  I would thus steer clear
of AbelianGroup if it is what I think it is.
You might check via "hg blame".

-- 
To post to this group, send an email to [email protected]
To unsubscribe from this group, send an email to 
[email protected]
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org

Reply via email to