[GAP Forum] question

Robert Heffernan bob.heffernan at gmail.com
Tue Jan 29 14:50:59 GMT 2008

```Hi,

I've written a (very naive) function to test if two groups are
isoclinic.  However, it will sometimes return true and sometimes false
for the same two groups & I'm not sure why this is happening.

The code is below.  I would be very grateful for any suggestions,

thank you,
Bob Heffernan

# Code to test if two groups G and H are isoclinic.
# we want:
#   i) an isomorphism phi1 from G/Z(G) -> H/Z(H)
#  ii) an isomorphism phi2 from G' -> H'
# st. if
#  a) (g1Z(G))phi1=h1Z(H); and
#  b) (g2Z(G))phi1=h2Z(H)
# then
#  c) ([g1,g2])phi2 = [h1,h2]

# returns true if G~H
IsIsoclinic := function(G,H)
local DG,DH,ZG,ZH,GZG,HZH,phi1,phi2,elG,piG,piH,g1,g2,g1p,g2p,h1,h2;
G:=Image(IsomorphismPcGroup(G));
H:=Image(IsomorphismPcGroup(H));

DG:=DerivedSubgroup(G);
DH:=DerivedSubgroup(H);
ZG:=Centre(G);
ZH:=Centre(H);

GZG:=FactorGroup(G,ZG);
HZH:=FactorGroup(H,ZH);

phi1:=IsomorphismGroups(GZG,HZH);
if phi1=fail then return false; fi;
phi2:=IsomorphismGroups(DG,DH);
if phi2=fail then return false; fi;

elG:=Elements(G);

piG:=NaturalHomomorphismByNormalSubgroup(G,ZG);
piH:=NaturalHomomorphismByNormalSubgroup(H,ZH);

for g1 in elG do
for g2 in elG do
g1p:=Image(phi1, Image(piG, g1));
g2p:=Image(phi1, Image(piG, g2));
h1:=PreImagesRepresentative(piH, g1p);
h2:=PreImagesRepresentative(piH, g2p);
if not(Image(phi2, Comm(g1,g2))=Comm(h1,h2)) then return false; fi;
od;
od;
return true;
end;

```