[GAP Forum] building new group law from old one

Alexander Konovalov alexk at mcs.st-andrews.ac.uk
Mon Mar 25 22:46:15 GMT 2013


Dear Bill, dear Forum,

On 25 Mar 2013, at 18:23, Bill Allombert <Bill.Allombert at math.u-bordeaux1.fr> wrote:

> Dear GAP forum,
> 
> Let (G,.) a group such that [G,[G,G]] = 0.
> I like to define a new group law * such that
> a*b = ab[a,b]. It can be proven that (G,*) is also a group.
> 
> What is the nicest way to define (G,*) in GAP ?
> (I like to check whether (G,.) and (G,*) are isomorphic).
> 
> Cheers,
> Bill.

What about using ArithmeticElementCreator (see ?ArithmeticElementCreator).
For example, specify operations as follows:

gap> law:=rec(
> ElementName:="MyLaw",
> One:= a -> One(a),
> Multiplication:=function(a,b) return a*b*(a^-1*b^-1*a*b);end,
> Inverse:= a -> a^-1,
> MathInfo:=IsMultiplicativeElementWithInverse);;

gap> wrap:=ArithmeticElementCreator(law);
function( x ) ... end

Then create a group:

gap> G:=DihedralGroup(8);
<pc group of size 8 with 3 generators>
gap> g:=AsList(G);
[ <identity> of ..., f1, f2, f3, f1*f2, f1*f3, f2*f3, f1*f2*f3 ]

Now let's wrap all elements of G into new multiplicative elements 
and generate a group using all of them (don't know if I can take
the same generators; in larger example one can try to do successive
closures, if need be):

gap> t:=List(g,wrap);
[ <identity> of ..., f1, f2, f3, f1*f2, f1*f3, f2*f3, f1*f2*f3 ]
gap> H:=Group(t);
#I  default `IsGeneratorsOfMagmaWithInverses' method returns `true' for [ <identity> of ..., f1, f2, f3, f1*f2, f1*f3, f2*f3, f1*f2*f3 ]
<group with 8 generators>

The warning may be ignored. Now we see that in this example H is isomorphic to G:

gap> IdGroup(H);
[ 8, 3 ]

If your groups are very large, maybe a more low level approach would be needed, 
and isomorphism check will be tricker, but hope that the example above may help.

Best wishes,
Alexander





More information about the Forum mailing list