Explicit Isomorphism Between Two $p$-Groups in GAP

422 Views Asked by At

I was trying to find an isomorphism between two $p$-groups, say $G_1$ and $G_2$ in GAP.

I am using "anupq" and "sonata" package and both the groups are Pcp-groups. The available GAP commands, I found, are

  • IsIsomorphicPGroup : Only tests for isomorphism but does not return any explicit isomorphism.
  • IsomorphismGroups : Extremely slow as I am dealing with $p$-groups of high orders.

Using "IsIsomorphicPGroup" I found that $G_1$ and $G_2$ are isomorphic but I can not find a way to compute any explicit isomorphism. I was stuck.

It will be really helpful to me if someone suggest a GAP command and/or some method in GAP to find an explicit isomorphism.

Thanks in advance.

Addendum: Pasteable descriptions of the groups are given below:

G1:=PcGroupCode(955640327050884159907086343326037903249608121254657344251813252604839841049205\
928253819936651413089137658451601883818586226317596151455694910726535214017948\
592364716601333424997621599040461436158518049878550005884433797152129115721878\
3355,1594323);

G2:=PcGroupCode(119880391495293774233093786967542939562883947810316663646225196199229505601219\
647372529980143720441259762954784595217079537995955140290437544251478057697281\
21121849582846112554279125935293754034335404366719215627371184752858002092155,1594323);
1

There are 1 best solutions below

1
On BEST ANSWER

You can actually use anupq to compute an explicit isomorphism; To do this, use EpimorphismStandardPresentation on the two input groups; this actually gives an isomorphism here. However, the image is an fp group, where we cannot effectively do all computations we need. So we first convert the images to pc groups q1 and a2, and construct new epis on these. Since the groups G1 and G2 are isomorphic, their standard presesentations are equal, which allows use to trivially write down an iso between q1 and q2. Combining everything, we get the desired isomorphism. The following shows how to actually do this here.

In addition, I logged an issue on the anupq issue tracker to remind me to implement that for the next anupq releases.

gap> LoadPackage("anupq", false);
true
gap>
gap> G1:=PcGroupCode(9556403270508841599070863433260379032496081212546573442518132526048398410492059282538199366514130891376584516018838185862263175961514556949107265352140179485923647166013334249976215990404614361585180498785500058844337971521291157218783355,1594323);
<pc group of size 1594323 with 13 generators>
gap>
gap> G2:=PcGroupCode(11988039149529377423309378696754293956288394781031666364622519619922950560121964737252998014372044125976295478459521707953799595514029043754425147805769728121121849582846112554279125935293754034335404366719215627371184752858002092155,1594323);
<pc group of size 1594323 with 13 generators>
gap>
gap> epi1:=EpimorphismStandardPresentation(G1);;
gap> epi2:=EpimorphismStandardPresentation(G2);;
gap> q1:=PcGroupFpGroup(Range(epi1));;
gap> q2:=PcGroupFpGroup(Range(epi2));;
gap>
gap> iso_pc := GroupHomomorphismByImages(q1, q2);
[ f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13 ] -> [ f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13 ]
gap> Assert(0, iso_pc <> fail); # verify the two groups are really isomorphic
gap>
gap> epi1_pc := epi1 * GroupHomomorphismByImages(Range(epi1), q1);;
gap> IsBijective(epi1_pc); # force GAP to verify that the map is bijective
true
gap> epi2_pc := epi2 * GroupHomomorphismByImages(Range(epi2), q2);;
gap> IsBijective(epi2_pc); # force GAP to verify that the map is bijective
true
gap>
gap> iso := epi1_pc * iso_pc * InverseGeneralMapping(epi2_pc);
[ f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13 ] -> [ f1^2*f2^2*f4^2*f5*f6^2*f7^2*f8^2*f9*f10*f11^2*f12, f2*f4^2*f6^2*f7*f9*f10*f12^2*f13^2, f3^2*f5*f6^2*f7*f9^2,
  f4*f7*f8*f9^2*f10*f11^2*f13, f5^2*f7*f8*f9^2*f10^2*f11, f6*f7*f12^2*f13, f7^2*f8^2, f8*f10^2*f11*f12*f13, f9^2*f10^2*f12*f13, f10*f11*f13^2, f11^2*f13, f12*f13, f13^2 ]
gap>