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
13 stars 1 forks source link

Better method for creating Extension #45

Closed aidevnn closed 1 year ago

aidevnn commented 1 year ago

https://github.com/aidevnn/FastGoat/blob/f4a0e060d23f0b01c656152e9bb56c24711cba0a/FastGoat/Examples/NonSplitExtensionPart2.cs#L64-L66

The example of creating an Extension E from two groups N and G was invalid. It is impractical to compute all twisted actions for all maps exhaustively, and it needs to be fixed for exploring more groups of order 32.

aidevnn commented 1 year ago

Extension by C2, is easy to begin with. It already allows to create all groups of order 4, 8 and 16 recursively.

For groups of order 32, at this time, i build 44 groups by this way, need to correct some things to complete all 51 groups of order 32 in one shot.

aidevnn commented 1 year ago

It works. All 51 groups of order 32 found in one shot through Extension by C2 of all 14 groups of order 16. Let's push it now.

aidevnn commented 1 year ago

After numerous iterations, each lasting approximately 50 minutes, we successfully identified all 51 groups of order 32 using the Extension by C2 method. The process of searching for twisted actions was relatively quick, taking only a few minutes. However, the more time-consuming operation was filtering out redundancy by isomorphism.

Subsequent verifications were conducted manually with the assistance of GAP. By counting subgroups, conjugacy classes, and normal subgroups, we were able to identify 50 groups, with the exception of C8x:C2.

The code must be improved, and this challenge was very interesting to introduce Group Cohomology and Universal property of Extension.

Exemples of outputs.


##########################################################
################ Ext no   1 found   ######################
##########################################################
|Sm32[1]| = 32
Type        NonAbelianGroup
BaseGroup   Q16 . C2

Elements Orders : [1]:1, [2]:3, [4]:20, [8]:8

AllSubGr:38 AllConjsCl:30 AllNorms:22

##########################################################
################ Ext no   2 found   ######################
##########################################################
|Sm32[2]| = 32
Type        NonAbelianGroup
BaseGroup   Q16 . C2

Elements Orders : [1]:1, [2]:11, [4]:12, [8]:8

AllSubGr:46 AllConjsCl:31 AllNorms:20

##########################################################
################ Ext no   3 found   ######################
##########################################################
|Sm32[3]| = 32
Type        NonAbelianGroup
BaseGroup   Q16 . C2

Elements Orders : [1]:1, [2]:7, [4]:16, [8]:8

AllSubGr:42 AllConjsCl:30 AllNorms:20

##########################################################
################ Ext no   4 found   ######################
##########################################################
|Sm32[4]| = 32
Type        NonAbelianGroup
BaseGroup   Q16 . C2

Elements Orders : [1]:1, [2]:9, [4]:10, [8]:4, [16]:8

AllSubGr:28 AllConjsCl:13 AllNorms:8

##########################################################
################ Ext no   5 found   ######################
##########################################################
|Sm32[5]| = 32
Type        NonAbelianGroup
BaseGroup   Q16 . C2

Elements Orders : [1]:1, [2]:1, [4]:18, [8]:4, [16]:8

AllSubGr:20 AllConjsCl:12 AllNorms:8

.
.
.
.

##########################################################
################ Ext no  10 found   ######################
##########################################################
|Sm32[10]| = 32
Type        NonAbelianGroup
BaseGroup   (C2 x Q8) . C2

Elements Orders : [1]:1, [2]:15, [4]:16

AllSubGr:94 AllConjsCl:82 AllNorms:70

##########################################################
################ Ext no  11 found   ######################
##########################################################
|Sm32[11]| = 32
Type        NonAbelianGroup
BaseGroup   (C2 x Q8) . C2

Elements Orders : [1]:1, [2]:11, [4]:20

AllSubGr:58 AllConjsCl:38 AllNorms:22

.
.
.
.

##########################################################
################ Ext no  16 found   ######################
##########################################################
|Sm32[16]| = 32
Type        NonAbelianGroup
BaseGroup   (C8x:C2) . C2

Elements Orders : [1]:1, [2]:7, [4]:8, [8]:16

AllSubGr:38 AllConjsCl:34 AllNorms:30

##########################################################
################ Ext no  17 found   ######################
##########################################################
|Sm32[17]| = 32
Type        NonAbelianGroup
BaseGroup   (C8x:C2) . C2

Elements Orders : [1]:1, [2]:11, [4]:4, [8]:16

AllSubGr:42 AllConjsCl:23 AllNorms:12

##########################################################
################ Ext no  18 found   ######################
##########################################################
|Sm32[18]| = 32
Type        NonAbelianGroup
BaseGroup   (C8x:C2) . C2

Elements Orders : [1]:1, [2]:3, [4]:12, [8]:16

AllSubGr:26 AllConjsCl:19 AllNorms:12

##########################################################
################ Ext no  19 found   ######################
##########################################################
|Sm32[19]| = 32
Type        NonAbelianGroup
BaseGroup   (C8x:C2) . C2

Elements Orders : [1]:1, [2]:7, [4]:8, [8]:16

AllSubGr:34 AllConjsCl:31 AllNorms:28

.
.
.
.

##########################################################
################ Ext no  27 found   ######################
##########################################################
|Sm32[27]| = 32
Type        NonAbelianGroup
BaseGroup   ((C4xC2)x:C2) . C2

Elements Orders : [1]:1, [2]:19, [4]:12

AllSubGr:106 AllConjsCl:65 AllNorms:26

##########################################################
################ Ext no  28 found   ######################
##########################################################
|Sm32[28]| = 32
Type        NonAbelianGroup
BaseGroup   ((C4xC2)x:C2) . C2

Elements Orders : [1]:1, [2]:11, [4]:20

AllSubGr:58 AllConjsCl:39 AllNorms:22

##########################################################
################ Ext no  29 found   ######################
##########################################################
|Sm32[29]| = 32
Type        NonAbelianGroup
BaseGroup   ((C4xC2)x:C2) . C2

Elements Orders : [1]:1, [2]:15, [4]:16

AllSubGr:74 AllConjsCl:47 AllNorms:24

##########################################################
################ Ext no  30 found   ######################
##########################################################
|Sm32[30]| = 32
Type        NonAbelianGroup
BaseGroup   ((C4xC2)x:C2) . C2

Elements Orders : [1]:1, [2]:11, [4]:12, [8]:8

AllSubGr:46 AllConjsCl:25 AllNorms:14

.
.
.
.

##########################################################
################ Ext no  39 found   ######################
##########################################################
|Sm32[39]| = 32
Type        AbelianGroup
BaseGroup   C16 . C2

Elements Orders : [1]:1, [2]:3, [4]:4, [8]:8, [16]:16

AllSubGr:14 AllConjsCl:14 AllNorms:14

##########################################################
################ Ext no  40 found   ######################
##########################################################
|Sm32[40]| = 32
Type        AbelianGroup
BaseGroup   C16 . C2

Elements Orders : [1]:1, [2]:1, [4]:2, [8]:4, [16]:8, [32]:16

AllSubGr:6 AllConjsCl:6 AllNorms:6

##########################################################
################ Ext no  41 found   ######################
##########################################################
|Sm32[41]| = 32
Type        NonAbelianGroup
BaseGroup   C16 . C2

Elements Orders : [1]:1, [2]:3, [4]:4, [8]:8, [16]:16

AllSubGr:14 AllConjsCl:13 AllNorms:12

##########################################################
################ Ext no  42 found   ######################
##########################################################
|Sm32[42]| = 32
Type        AbelianGroup
BaseGroup   (C8 x C2) . C2

Elements Orders : [1]:1, [2]:7, [4]:8, [8]:16

AllSubGr:38 AllConjsCl:38 AllNorms:38

##########################################################
################ Ext no  43 found   ######################
##########################################################
|Sm32[43]| = 32
Type        AbelianGroup
BaseGroup   (C8 x C2) . C2

Elements Orders : [1]:1, [2]:3, [4]:12, [8]:16

AllSubGr:22 AllConjsCl:22 AllNorms:22

.
.
.
.

##########################################################
################ Ext no  49 found   ######################
##########################################################
|Sm32[49]| = 32
Type        AbelianGroup
BaseGroup   (C4 x C2 x C2) . C2

Elements Orders : [1]:1, [2]:15, [4]:16

AllSubGr:118 AllConjsCl:118 AllNorms:118

##########################################################
################ Ext no  50 found   ######################
##########################################################
|Sm32[50]| = 32
Type        NonAbelianGroup
BaseGroup   (C4 x C2 x C2) . C2

Elements Orders : [1]:1, [2]:7, [4]:24

AllSubGr:50 AllConjsCl:38 AllNorms:26

##########################################################
################ Ext no  51 found   ######################
##########################################################
|Sm32[51]| = 32
Type        AbelianGroup
BaseGroup   (C2 x C2 x C2 x C2) . C2

Elements Orders : [1]:1, [2]:31

AllSubGr:374 AllConjsCl:374 AllNorms:374
aidevnn commented 1 year ago

This issue should be reconsidered and reopened.

The current approach only utilizes the group property of 2-cocycles. However, 2-coboundaries, which form a subgroup of 2-cocycles, seem simpler to compute. Each newly discovered cocycle can be added to the 2-coboundaries to generate additional solutions, even if they might not be useful.

This method can help in exploring the cohomology for very small groups, allowing us to find effective solutions and enhance them over time.

aidevnn commented 1 year ago

A short exact sequence is a multipurpose tool for constructing groups, as it generalizes the notions of direct product, semidirect product, and non-split extension.

Then 2-coboundary computation enables the collection of 2-cocycles in cosets and improves the accuracy of the Depth First Search, to create all groups of the same order in one shot. This is a good start for manipulating group cohomology and this issue can now be closed.