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