The following happens in GAP 4.16.0 and in the master branch.
gap> G:= SymmetricGroup( 3 );;
gap> mods:= IrreducibleModules( G, GF(2) );;
gap> Extensions( G, mods[2][2] );
Error, the rewriting system must be confluent
[...]
As far as I understand, this happens because it is not obvious to which generating set of G the generators component of the module corresponds.
The chosen Extensions method is the one for pc groups (based on ExtensionSQ).
The documentation of Extensions( G, M ) does not state how G and M must be related, but the documentation belongs to the chapter "Pc Groups", and in fact the matrices in M.generators must belong to Pcgs( G ). The error disappears when this condition holds.
gap> mods[1];
[ (1,2,3), (1,2) ]
gap> GeneratorsOfGroup( G );
[ (1,2,3), (1,2) ]
gap> Pcgs( G );
Pcgs([ (2,3), (1,2,3) ])
gap> G:= GroupWithGenerators( [ (2,3), (1,2,3) ] );;
gap> mods:= IrreducibleModules( G, GF(2) );;
gap> mods[1]; # the matrices correspond to Pcgs( G )
[ (2,3), (1,2,3) ]
gap> Extensions( G, mods[2][2] );
[ <pc group of size 24 with 4 generators> ]
The situation is even more complicated:
Currently Extensions is documented only for solvable groups (since the return value is a list of pc groups).
The GAP library installs another Extensions( G, M ) method also for nonsolvable groups G, and this method expects M.generators to correspond to GeneratorsOfGroup( G ).
(This is because the method calls TwoCohomologyGeneric, which works with GeneratorsOfGroup( G ).
I had thought that TwoCohomologyGeneric is not installed as a method for TwoCohomology because the documentation for the latter explicitly states that the generators of the module must correspond to the Pcgs value of the group.
Perhaps the more general method for Extensions should better be called ExtensionsGeneric, and should not be installed as a method for Extensions.)
What would be a safe way to use the functions above?
First we call IrreducibleModules. The first return value is the generating set corresponding to the generators component of each module.
Then we want to call Extensions. If the input group is solvable and if the generators of the input module must correspond to the Pcgs value for the input group, is there a safe way to make sure that IrreducibleModules returns the modules relative to this pcgs?
The following happens in GAP 4.16.0 and in the master branch.
As far as I understand, this happens because it is not obvious to which generating set of
Gthegeneratorscomponent of the module corresponds.The chosen
Extensionsmethod is the one for pc groups (based onExtensionSQ).The documentation of
Extensions( G, M )does not state howGandMmust be related, but the documentation belongs to the chapter "Pc Groups", and in fact the matrices inM.generatorsmust belong toPcgs( G ). The error disappears when this condition holds.The situation is even more complicated:
Currently
Extensionsis documented only for solvable groups (since the return value is a list of pc groups).The GAP library installs another
Extensions( G, M )method also for nonsolvable groupsG, and this method expectsM.generatorsto correspond toGeneratorsOfGroup( G ).(This is because the method calls
TwoCohomologyGeneric, which works withGeneratorsOfGroup( G ).I had thought that
TwoCohomologyGenericis not installed as a method forTwoCohomologybecause the documentation for the latter explicitly states that thegeneratorsof the module must correspond to thePcgsvalue of the group.Perhaps the more general method for
Extensionsshould better be calledExtensionsGeneric, and should not be installed as a method forExtensions.)What would be a safe way to use the functions above?
First we call
IrreducibleModules. The first return value is the generating set corresponding to thegeneratorscomponent of each module.Then we want to call
Extensions. If the input group is solvable and if thegeneratorsof the input module must correspond to thePcgsvalue for the input group, is there a safe way to make sure thatIrreducibleModulesreturns the modules relative to this pcgs?