I learned from https://oeis.org/A005432 that $S_6$ has $1455$ subgroups, how can I list them all in mathematica?
As the comment says, the direct approach cannot solve the problem.
I learned from https://oeis.org/A005432 that $S_6$ has $1455$ subgroups, how can I list them all in mathematica?
As the comment says, the direct approach cannot solve the problem.
Purpose of this answer: mainly to check whether FiniteGroupData
is outputting correct results up to isomorphisms.
TL;DR:
The output of FiniteGroupData[{"SymmetricGroup", 4}, "Subgroups"]
is missing the dihedral group.
The distribution of group orders in FiniteGroupData[{"SymmetricGroup", 6}, "Subgroups"]
seems correct although it could be a fluke as the output of FiniteGroupData[{"SymmetricGroup", 6}, "Subgroups"]
seems to be removed of duplicates of isomorphisms (see text for further detail of how that makes a comparison with available data difficult)
I used the online magma calculator http://magma.maths.usyd.edu.au/calc/ . The magma code first calculates all subgroups up to conjugation and then identifies each subgroup with a canonical reference group up to isomorphism.
I am not an expert in magma programming, I used a combination of https://mathoverflow.net/questions/82873/using-magma-for-group-theory/82881#82881, https://math.stackexchange.com/questions/3324896/determine-subgroup-langle-12-1324-rangle-of-group-s-4, magma documentation and Phind which is a search engine that has GPT4 and where search results can be toggled on or off (sometimes I feel its better to ask its memory rather than rely on keyword searches)
Note: In the following : •=\[Bullet]
and ⎵=\[UnderBracket]
FiniteGroupData
for $S_4$It does not seem like the output of FiniteGroupData
is complete. The dihedral group which is present in https://groupprops.subwiki.org/wiki/Subgroup_structure_of_symmetric_group:S4 and
https://math.stackexchange.com/questions/379841/how-to-enumerate-subgroups-of-each-order-of-s-4-by-hand is missing. The dihedral group is of order 8 whereas the other subgroups listed by FiniteGroupData
are not as shown from the output of :
FiniteGroupData[{"SymmetricGroup", 4}, "Subgroups"] // Map[FiniteGroupData[#, "Order"] &]
(*{1, 2, 3, 4, 4, 6, 12, 24}*)
This group is present in the output of the following Magma code that can be used in the online calculator. The results are presented in table format at the end of this section.
// Group definition
G := SymmetricGroup(4);
// Find all subgroups of G
subgroups := Subgroups(G);
// identify each subgroup
for S in subgroups do
id := IdentifyGroup(S`subgroup);
groupName := GroupName(SmallGroup(id[1], id[2]));
print "SubGroup:\n";
S`subgroup;
"\n-\n\nIsomorphic to :\n";
groupName;
print "\n---\n";
end for;
I used Mathematica to rewrite the string as a table:
StringCases[magma⎵output,
"Order = " ~~ (a : DigitCharacter ..) ~~
Shortest[___] ~~ ("Isomorphic to :
" ~~ Shortest[b__] ~~ "
---") :> {b, ToExpression@a}] // SortBy[Last] //
TableForm[#, TableHeadings -> {None, {"SubGroup", "Order"}}] &
Output:
$$ \begin{array}{cc} \text{SubGroup} & \text{Order} \\ \hline \text{C1} & 1 \\ \text{C2} & 2 \\ \text{C2} & 2 \\ \text{C3} & 3 \\ \text{C2${}^{\wedge}$2} & 4 \\ \text{C2${}^{\wedge}$2} & 4 \\ \text{C4} & 4 \\ \text{S3} & 6 \\ \text{D4} & 8 \\ \text{A4} & 12 \\ \text{S4} & 24 \\ \end{array} $$
The list is the same up to isomorphism as that of https://groupprops.subwiki.org/wiki/Subgroup_structure_of_symmetric_group:S4 .
Compare this result with that of FiniteGroupData
:
FiniteGroupData[{"SymmetricGroup", 4}, "Subgroups"] //
Map[{#, FiniteGroupData[#, "Order"]} &] //
TableForm[#,
TableHeadings -> {None, {"Subgroup", "Order"}}] & // TeXForm
$$ \begin{array}{cc} \text{Subgroup} & \text{Order} \\ \hline \text{Trivial} & 1 \\ \text{$\{$CyclicGroup, 2$\}$} & 2 \\ \text{$\{$CyclicGroup, 3$\}$} & 3 \\ \text{$\{$CyclicGroup, 4$\}$} & 4 \\ \text{Vierergruppe} & 4 \\ \text{$\{$SymmetricGroup, 3$\}$} & 6 \\ \text{$\{$AlternatingGroup, 4$\}$} & 12 \\ \text{$\{$SymmetricGroup, 4$\}$} & 24 \\ \end{array} $$
Notice that:
FiniteGroupData
does not show duplicates of isomorphism groups. I am not sure but this might make it difficult to reconstruct the permutation groups even with FiniteGroupData[#, "PermutationGroupRepresentation"] &
as naively information seems to be removed by creating isomorphisms and deleting duplicates.
$D_4$ which is a group of order 8 is missing in the output from FiniteGroupData
. It is however present in FiniteGroupData[{"SymmetricGroup", 4}, "SylowSubgroups"]
as mentioned in the comments.
FiniteGroupData
for $S_6$The outputs are given at the end of this section but they are quite long. As a quick check, I removed the duplicate subgroups (notice that this is potentially a risk as some of the subgroups in the output of FiniteGroupData
for $S_4$ were isomorphic to each other). I sorted the orders in both lists and I checked that the sorted lists of orders are the same
I got the following outputs :
Magma
(with duplicates)I used the same code with $S_6$. Changing the group in the magma code to G := SymmetricGroup(6);
$$ \begin{array}{cc} \text{SubGroup} & \text{Order} \\ \hline \text{C1} & 1 \\ \text{C2} & 2 \\ \text{C2} & 2 \\ \text{C2} & 2 \\ \text{C3} & 3 \\ \text{C3} & 3 \\ \text{C2${}^{\wedge}$2} & 4 \\ \text{C2${}^{\wedge}$2} & 4 \\ \text{C2${}^{\wedge}$2} & 4 \\ \text{C2${}^{\wedge}$2} & 4 \\ \text{C2${}^{\wedge}$2} & 4 \\ \text{C4} & 4 \\ \text{C4} & 4 \\ \text{C5} & 5 \\ \text{C6} & 6 \\ \text{C6} & 6 \\ \text{S3} & 6 \\ \text{S3} & 6 \\ \text{S3} & 6 \\ \text{S3} & 6 \\ \text{C2${}^{\wedge}$3} & 8 \\ \text{C2${}^{\wedge}$3} & 8 \\ \text{C2*C4} & 8 \\ \text{D4} & 8 \\ \text{D4} & 8 \\ \text{D4} & 8 \\ \text{D4} & 8 \\ \text{C3${}^{\wedge}$2} & 9 \\ \text{D5} & 10 \\ \text{A4} & 12 \\ \text{A4} & 12 \\ \text{D6} & 12 \\ \text{D6} & 12 \\ \text{C2*D4} & 16 \\ \text{C3*S3} & 18 \\ \text{C3*S3} & 18 \\ \text{C3:S3} & 18 \\ \text{F5} & 20 \\ \text{C2*A4} & 24 \\ \text{C2*A4} & 24 \\ \text{S4} & 24 \\ \text{S4} & 24 \\ \text{S4} & 24 \\ \text{S4} & 24 \\ \text{C3:S3.C2} & 36 \\ \text{S3${}^{\wedge}$2} & 36 \\ \text{S3${}^{\wedge}$2} & 36 \\ \text{C2*S4} & 48 \\ \text{C2*S4} & 48 \\ \text{A5} & 60 \\ \text{A5} & 60 \\ \text{S3wrC2} & 72 \\ \text{S5} & 120 \\ \text{S5} & 120 \\ \text{A6} & 360 \\ \text{S6} & 720 \\ \end{array} $$
FiniteGroupData
+ MagmaIn the code below, the magma⎵output
is the string output from the magma calculator :
FiniteGroupData•SubGroups =
FiniteGroupData[{"SymmetricGroup", 6}, "Subgroups"];
orders =
FiniteGroupData[{"SymmetricGroup", 6}, "Subgroups"] //
Map[FiniteGroupData[#, "Order"] &] // Sort;
output =
StringCases[magma⎵output,
"Order = " ~~ (a : DigitCharacter ..) ~~
Shortest[___] ~~ ("Isomorphic to :
" ~~ Shortest[b__] ~~ "
---") :> {b, ToExpression@a}] // SortBy[Last];
magma⎵subgroups =
output // DeleteDuplicatesBy[First] // Map[First];
{FiniteGroupData\[Bullet]SubGroups, magma\[UnderBracket]subgroups,
orders} // Transpose // TableForm
The output is wide the reader might need to use the horizontal scroll at the bottom.
NOTE that the table is only sorted by group order, the subgroups between the output of Magma and that of Mathematica do not necessarily correspond on each line.
$$ \begin{array}{ccc} \text{FiniteGroupData} & \text{Magma} & \text{Order} \\ \hline \text{Trivial} & \text{C1} & 1 \\ \text{$\{$CyclicGroup, 2$\}$} & \text{C2} & 2 \\ \text{$\{$CyclicGroup, 3$\}$} & \text{C3} & 3 \\ \text{$\{$CyclicGroup, 4$\}$} & \text{C2${}^{\wedge}$2} & 4 \\ \text{Vierergruppe} & \text{C4} & 4 \\ \text{$\{$CyclicGroup, 5$\}$} & \text{C5} & 5 \\ \text{$\{$CyclicGroup, 6$\}$} & \text{C6} & 6 \\ \text{$\{$AbelianGroup, $\{$2, 2, 2$\}\}$} & \text{S3} & 6 \\ \text{$\{$AbelianGroup, $\{$4, 2$\}\}$} & \text{C2${}^{\wedge}$3} & 8 \\ \text{$\{$SymmetricGroup, 3$\}$} & \text{C2*C4} & 8 \\ \text{$\{$DihedralGroup, 4$\}$} & \text{D4} & 8 \\ \text{$\{$AbelianGroup, $\{$3, 3$\}\}$} & \text{C3${}^{\wedge}$2} & 9 \\ \text{$\{$DihedralGroup, 5$\}$} & \text{D5} & 10 \\ \text{$\{$DihedralGroup, 6$\}$} & \text{A4} & 12 \\ \text{$\{$AlternatingGroup, 4$\}$} & \text{D6} & 12 \\ \text{$\{$DirectProduct, $\{\{$CyclicGroup, 2$\}$, $\{$DihedralGroup, 4$\}\}\}$} & \text{C2*D4} & 16 \\ \text{$\{$SemidirectProduct, $\{\{$CyclicGroup, 2$\}$, $\{$AbelianGroup, $\{$3, 3$\}\}\}\}$} & \text{C3*S3} & 18 \\ \text{$\{$DirectProduct, $\{\{$CyclicGroup, 3$\}$, $\{$SymmetricGroup, 3$\}\}\}$} & \text{C3:S3} & 18 \\ \text{$\{$SemidirectProduct, $\{\{$CyclicGroup, 4$\}$, $\{$CyclicGroup, 5$\}\}\}$} & \text{F5} & 20 \\ \text{$\{$DirectProduct, $\{\{$CyclicGroup, 2$\}$, $\{$AlternatingGroup, 4$\}\}\}$} & \text{C2*A4} & 24 \\ \text{$\{$SymmetricGroup, 4$\}$} & \text{S4} & 24 \\ \text{$\{$DirectProduct, $\{\{$SymmetricGroup, 3$\}$, $\{$SymmetricGroup, 3$\}\}\}$} & \text{C3:S3.C2} & 36 \\ \text{$\{$SemidirectProduct, $\{\{$CyclicGroup, 4$\}$, $\{$AbelianGroup, $\{$3, 3$\}\}\}\}$} & \text{S3${}^{\wedge}$2} & 36 \\ \text{$\{$DirectProduct, $\{\{$CyclicGroup, 2$\}$, $\{$SymmetricGroup, 4$\}\}\}$} & \text{C2*S4} & 48 \\ \text{$\{$AlternatingGroup, 5$\}$} & \text{A5} & 60 \\ \text{$\{$SemidirectProduct, $\{\{$CyclicGroup, 2$\}$, $\{$DirectProduct, $\{\{$SymmetricGroup, 3$\}$, $\{$SymmetricGroup, 3$\}\}\}\}\}$} & \text{S3wrC2} & 72 \\ \text{$\{$SymmetricGroup, 5$\}$} & \text{S5} & 120 \\ \text{$\{$AlternatingGroup, 6$\}$} & \text{A6} & 360 \\ \text{$\{$SymmetricGroup, 6$\}$} & \text{S6} & 720 \\ \end{array} $$
You can install GAP and parse the output:
gapsubgroups = RunProcess[
{"/Applications/gap-4.12.2/gap", "-q"}, (* change loc as needed *)
"StandardOutput",
"AllSubgroups(SymmetricGroup(6));"];
subgroups = gapsubgroups // (* ad hoc parsing -- sorry *)
StringReplace[#, "(())" -> "{Cycles@{}}"] & //
StringReplace[#, {"[" -> "{", "]" -> "}",
"(" ~~ c : ("," | DigitCharacter) ... ~~ ")" :>
"cyc[" <> c <> "]"}] & //
StringReplace[#, "Group" -> "PermutationGroup@"] & //
ToExpression //
ReplaceAll[{c : Verbatim[Times][__cyc] :>
Cycles[List @@ c /. cyc -> List], c_cyc :> Cycles[{List @@ c}]}];
Checks:
Length[subgroups]
(* 1455 *)
GroupOrder /@ subgroups //
Counts //
BarChart[#, ChartLabels -> Automatic, ImageSize -> 500] &
FiniteGroupData
.
$\endgroup$
Commented
May 13, 2023 at 1:08
In 13.2.1 on Windows 10
FiniteGroupData[{"SymmetricGroup", 6}, "Subgroups"]
{Trivial,{CyclicGroup,2},{CyclicGroup,3},{CyclicGroup,4},Vierergruppe,{CyclicGroup,5},{CyclicGroup,6},{AbelianGroup,{2,2,2}},{AbelianGroup,{4,2}},{SymmetricGroup,3},{DihedralGroup,4},{AbelianGroup,{3,3}},{DihedralGroup,5},{DihedralGroup,6},{AlternatingGroup,4},{DirectProduct,{{CyclicGroup,2},{DihedralGroup,4}}},{SemidirectProduct,{{CyclicGroup,2},{AbelianGroup,{3,3}}}},{DirectProduct,{{CyclicGroup,3},{SymmetricGroup,3}}},{SemidirectProduct,{{CyclicGroup,4},{CyclicGroup,5}}},{DirectProduct,{{CyclicGroup,2},{AlternatingGroup,4}}},{SymmetricGroup,4},{DirectProduct,{{SymmetricGroup,3},{SymmetricGroup,3}}},{SemidirectProduct,{{CyclicGroup,4},{AbelianGroup,{3,3}}}},{DirectProduct,{{CyclicGroup,2},{SymmetricGroup,4}}},{AlternatingGroup,5},{SemidirectProduct,{{CyclicGroup,2},{DirectProduct,{{SymmetricGroup,3},{SymmetricGroup,3}}}}},{SymmetricGroup,5},{AlternatingGroup,6},{SymmetricGroup,6}}
and then, for example,
FiniteGroupData[{"DihedralGroup", 6}, "Subgroups"]
{"Trivial", {"CyclicGroup", 2}, {"CyclicGroup", 3}, {"CyclicGroup", 6}, {"DihedralGroup", 2}, {"DihedralGroup", 3}, {"DihedralGroup", 6}}
and so on.
FiniteGroupData[{"SymmetricGroup", 4}, "Subgroups"] // Map[FiniteGroupData[#, "Order"] &]
does not show a subgroup of order 8. However there are dihedral subgroups of order 8 according to groupprops.subwiki.org/wiki/… and math.stackexchange.com/questions/379841/…
$\endgroup$
Commented
May 12, 2023 at 9:56
FiniteGroupData[]
fails to list all"Subgroups"
(just isomorphism classes are listed, I think), and"SubgroupElements"
, which lists all subgroups in general, fails on $S_6$. -- Sage/GAP seems to be able to do it: math.stackexchange.com/questions/3191186/… $\endgroup$FiniteGroupData
. I imagine it was created in part by data entry and contains errors. $D_4$ shows up here:FiniteGroupData[{"SymmetricGroup", 4}, "SylowSubgroups"]
. To the matter at hand: IsFiniteGroupData[{"SymmetricGroup", 6}, "Subgroups"]
complete? Note that equivalences up to conjugacy, automorphism, and isomorphism are different. I think "Subgroups" (supposedly) gives isomorphism classes, but I don't know for a fact that is what it's supposed to do. $\endgroup$