aidevnn / FastGoat

What C# can do for studying Finite Groups, quotient groups, semi-direct products, homomorphisms, automorphisms group, characters table, minimalistic rings and fields manipulations, polynomials factoring, fields extensions and many more...
MIT No Attribution
10 stars 1 forks source link

Bug SemiDirect Product Klein by Symm3 isnt isomorphic to Symm4 #30

Closed aidevnn closed 1 year ago

aidevnn commented 1 year ago

Symmetric 4 group is isomorphic to Holomorph group of C2 x C2.

But the following code will output an invalid result.

var s4 = new Symm(4);
var V = Group.Generate("V", s4, s4[(1, 2), (3, 4)], s4[(1, 3), (2, 4)]);
var autV = Group.AutomorphismGroup(V);
DisplayGroup.AreIsomorphics(autV, new Symm(3));
var homs = Group.AllHomomorphisms(autV, autV);
var allSdp = homs.Select((theta, i) => Group.SemiDirectProd($"(V x: Aut[V])[{i}]", V, theta, autV)).ToList();
allSdp.ForEach(holV => DisplayGroup.AreIsomorphics(holV, s4));

output

Aut[V] IsIsomorphicTo S3 : True
...
(V x: Aut[V])[2] IsIsomorphicTo Symm4 : False
(V x: Aut[V])[3] IsIsomorphicTo Symm4 : False
...
aidevnn commented 1 year ago

The issue comes from an invalid automorphism composition order.

Now, $\textup{Hol}(\mathbf{C}_2 \times \mathbf{C}_2) \simeq \mathbf{S}_4$

The following code gives the correct result.

var V = Product.Generate(new Cn(2), new Cn(2));
var autV = Group.AutomorphismGroup(V);
DisplayGroup.AreIsomorphics(autV, new Symm(3));
var sdp = Group.SemiDirectProd(V, autV);
DisplayGroup.AreIsomorphics(sdp, new Symm(4));

will output

Aut[C2 x C2] IsIsomorphicTo Symm3 : True
(C2 x C2) x: (Aut[C2 x C2]) IsIsomorphicTo Symm4 : True