[GAP Forum] Questions on modules and coefficient rings
Max Horn
max at quendi.de
Tue Aug 17 16:10:43 BST 2010
Hi there,
I am currently working on a GAP package of my own. One of the things I am doing for that is writing my own kind of "(free) module" for group rings (for efficiency reasons I cannot use the default GAP representation) and doing so, I came across some things in GAP which I don't quite understand, and where I hope somebody can enlighten me:
* For algebra modules, GAP does this:
DeclareProperty( "IsLeftAlgebraModule", IsLeftModule );
DeclareProperty( "IsRightAlgebraModule", IsLeftModule );
So if I understand this correctly, for GAP, right algebra modules are a special kind of left modules? Why? I would have expected IsRightModule there.
* GAP allows CoefficientsRing only for polynomial rings:
DeclareAttribute( "CoefficientsRing", IsPolynomialRing );
But for free magma rings, one has to use LeftActingDomain -- this got me stuck at first (luckily chapter 63 of the GAP manual quickly helped with that). Still: Is there a particular reason for that distinction? Similarly, why can one only use LeftActingDomaing, but not also RightActingDomain (which is undocumented for some reason), on a free magma ring? The coefficient ring does act from both side on the free magma ring, and GAP happily allows me to do so.
* I make heavy use of group rings, and it is very frustrating that every invocation of GroupRing(Integers, G) returns a new, different object. For now I am working around that by defining a global function IntegralGroupRing, which stores the group ring in the family of the group G. But this is not very elegant, and furthermore fails if the user uses GroupRing directly.
Is there any hope that GroupRing will be changed (in future GAP versions) to return compatible (or even identical) group rings when invoked with identical parameters?
And in the meantime: Suppose I want to write a function or method that wants to take elements as parameter which are vectors of group ring elements (i.e. elements of a free module over a group ring): How would I detect such input (independently of concrete group ring, coefficient ring and group), e.g. for method selection?
Thanks,
Max
More information about the Forum
mailing list