Dear Bill, dear Forum,

On 25 Mar 2013, at 18:23, Bill Allombert <bill.allomb...@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



_______________________________________________
Forum mailing list
Forum@mail.gap-system.org
http://mail.gap-system.org/mailman/listinfo/forum

Reply via email to