[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