{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Perfect central extensions of $L_3(4)$ in the Monster group\n", "\n", "* Author: Thomas Breuer\n", "* Version: OSCAR version 1.0\n", "* Last modified: April 11, 2024\n", "\n", "There was [the question in MathOverflow](https://mathoverflow.net/questions/450255)\n", "which perfect central extensions of the simple group $G = L_3(4)$ are subgroups of the sporadic simple Monster group $M$.\n", "\n", "The following computations with [OSCAR](https://oscar.computeralgebra.de) answer this question except for one candidate." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\r", " ___ ____ ____ _ ____\n", " / _ \\ / ___| / ___| / \\ | _ \\ | Combining ANTIC, GAP, Polymake, Singular\n", "| | | |\\___ \\| | / _ \\ | |_) | | Type \"?Oscar\" for more information\n", "| |_| | ___) | |___ / ___ \\| _ < | Manual: https://docs.oscar-system.org\n", " \\___/ |____/ \\____/_/ \\_\\_| \\_\\ | Version 1.1.0-DEV\n" ] } ], "source": [ "using Oscar" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First we get the list of perfect central extensions of $G$ (assuming that their character tables are contained in the character table library)." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "14-element Vector{String}:\n", " \"L3(4)\"\n", " \"2.L3(4)\"\n", " \"3.L3(4)\"\n", " \"2^2.L3(4)\"\n", " \"4_1.L3(4)\"\n", " \"4_2.L3(4)\"\n", " \"6.L3(4)\"\n", " \"(2x4).L3(4)\"\n", " \"(2^2x3).L3(4)\"\n", " \"12_1.L3(4)\"\n", " \"12_2.L3(4)\"\n", " \"4^2.L3(4)\"\n", " \"(2x12).L3(4)\"\n", " \"(4^2x3).L3(4)\"" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "simp = character_table(\"L3(4)\");\n", "extnames = all_character_table_names(is_perfect => true);\n", "filter!(x -> endswith(x, \"L3(4)\"), extnames);\n", "ext = map(character_table, extnames);\n", "filter!(x -> length(class_positions_of_center(x)) == order(x) // order(simp), ext);\n", "sort!(ext, by = order);\n", "names = map(identifier, ext)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The fact that $G$ is *not* isomorphic to a subgroup of $M$ is shown at the end of the paper [On subgroups of the Monster containing $A_5$'s](http://dx.doi.org/10.1016/j.jalgebra.2003.11.014) by Petra E. Holmes and Robert A. Wilson.\n", "\n", "And the following embeddings of central extensions of $G$ in $M$ can be established using known subgroups of $M$.\n", "\n", "- $2.G < 2.U_4(3) < 2^2.U_6(2) < Fi_{23} < 3.Fi_{24}' < M$,\n", "- $2^2.G < He < 3.Fi_{24}' < M$,\n", "- $6.G < 2.G_2(4) < 6.Suz < 3^{1+12}_+.2Suz < M$.\n", "\n", "Note that $G$ is a subgroup of $U_4(3)$ but not of $2.U_4(3)$, $3.G$ is a subgroup of $G_2(4)$ but not of $2.G_2(4)$, and $G_2(4)$ is a subgroup of $Suz$ but not of $2.Suz$.\n", "\n", "The positive statements follow from the ATLAS of Finite Groups (pages 52, 97, 131) and the negative ones from the following computations.\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "length(possible_class_fusions(character_table(\"L3(4)\"),\n", " character_table(\"2.U4(3)\")))" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "length(possible_class_fusions(character_table(\"3.L3(4)\"),\n", " character_table(\"2.G2(4)\")))" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "length(possible_class_fusions(character_table(\"G2(4)\"),\n", " character_table(\"2.Suz\")))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The group $3.G$ centralizes an element of order three.\n", "If $3.G$ is a subgroup of $M$ then it is contained in\n", "a `3A` centralizer (of the structure $3.Fi_{24}'$),\n", "a `3B` centralizer (of the structure $3^{1+12}_+.2Suz$) or\n", "a `3C` centralizer (of the structure $3 \\times Th$).\n", "Clearly the case `3C` cannot occur,\n", "and `3B` is excluded by the fact that no class fusion between $3.G$\n", "and the `3B` normalizer $3^{1+12}_+.2Suz.2$ is possible." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "character table of 3^(1+12).2.Suz.2\n" ] } ], "source": [ "t = character_table(\"MN3B\");\n", "println(t)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "length(possible_class_fusions(character_table(\"3.L3(4)\"), t))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If $3.G$ is contained in the `3A` centralizer then this embedding induces one of $G$ into some maximal subgroup of\n", "$Fi_{24}'$.\n", "Using the known character tables of these maximal subgroups in GAP's character table library, one shows that only $Fi_{23}$ admits a class fusion, but this subgroup lifts to $3 \\times Fi_{23}$ in $3.Fi_{24}'$ and thus cannot lead to a subgroup of type $3.G$." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1-element Vector{Oscar.GAPGroupCharacterTable}:\n", " character table of Fi23" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mx = map(character_table, maxes(character_table(\"Fi24'\")));\n", "s = character_table(\"L3(4)\");\n", "filter(x -> length(possible_class_fusions(s, x)) > 0, mx)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The other candidates $m.G$ contain at least one central involution.\n", "If $m.G$ is a subgroup of $M$ then it is contained in\n", "a `2A` centralizer (of the structure $2.B$) or\n", "a `2B` centralizer (of the structure $2^{1+24}_+.Co_1$).\n", "Again we use `possible_class_fusions` to list all candidates for the class fusion,\n", "but here we prescribe the central involution of the `2A` or `2B`\n", "centralizer as an image of one central involution in $m.G$." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "9-element Vector{String}:\n", " \"4_1.L3(4)\"\n", " \"4_2.L3(4)\"\n", " \"(2x4).L3(4)\"\n", " \"(2^2x3).L3(4)\"\n", " \"12_1.L3(4)\"\n", " \"12_2.L3(4)\"\n", " \"4^2.L3(4)\"\n", " \"(2x12).L3(4)\"\n", " \"(4^2x3).L3(4)\"" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "done = [\"L3(4)\", \"2.L3(4)\", \"3.L3(4)\", \"2^2.L3(4)\", \"6.L3(4)\"];\n", "filter!(x -> !(x in done), names)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2-element Vector{Oscar.GAPGroupCharacterTable}:\n", " character table of 2.B\n", " character table of 2^1+24.Co1" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "invcent = map(character_table, [\"MN2A\", \"MN2B\"])" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2-element Vector{Vector{Int64}}:\n", " [1, 2]\n", " [1, 2]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "map(class_positions_of_center, invcent)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Computing possible class fusions from all character tables given by `names` to the two involution centralizers would take about an hour of CPU time. In the following, we leave out the group $(2 \\times 4).L_3(4)$." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1-element Vector{Vector{Any}}:\n", " [character table of 4_1.L3(4), character table of 2^1+24.Co1, 3]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cand = [];\n", "for name in names\n", " (name == \"(2x4).L3(4)\") && continue\n", " s = character_table(name)\n", " ords = orders_class_representatives(s)\n", " invpos = filter(i -> ords[i] == 2, class_positions_of_center(s))\n", " for i in invpos\n", " for t in invcent\n", " init = approximate_class_fusion(s, t)\n", " length(init) == 0 && continue\n", " init[i] = 2\n", " fus = possible_class_fusions(s, t, decompose = false, fusionmap = init)\n", " length(fus) == 0 || push!(cand, [ s, t, i, fus ])\n", " end\n", " end\n", "end;\n", "[x[1:3] for x in cand]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "(Note that we have called `possible_class_fusions` with the option `decompose = false`, in order to save space and time.)\n", "\n", "Thus it turns out that exactly one of the checked groups $m.G$ cannot be excluded this way.\n", "Namely, these character-theoretical criteria leave the possibility that $4_1.G$ may occur as a subgroup of $2^{1+24}_+.Co_1$.\n", "\n", "Moreover, we see that if this happens then the centre $C$ of $4_1.G$ lies inside the normal subgroup $N = 2^{1+24}_+$.\n", "The centralizer of $C$ in $N$ has order $2^{24}$, and the centralizer of $C$ in $2^{1+24}_+.Co_1$ has order\n", "$2^{24} \\cdot |Co_3|$. We see that $4_1.G$, if it exists as a subgroup of $2^{1+24}_+.Co_1$, must lie inside the subgroup $[2^{24}].Co_3$." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(character table of 4_1.L3(4), character table of 2^1+24.Co1, [[1, 5, 2, 5, 9, 8, 23, 27, 24, 27 … 71, 74, 114, 119, 115, 119, 114, 119, 115, 119]])" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s, t, fus = cand[1][1], cand[1][2], cand[1][4]" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4-element Vector{Int64}:\n", " 1\n", " 2\n", " 3\n", " 4" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "class_positions_of_center(s)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "true" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "5 in class_positions_of_pcore(t, 2)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(495766656000, 0)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "siz, _ = divrem( orders_centralizers(t)[5], 2^24 )" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1-element Vector{Oscar.GAPGroupCharacterTable}:\n", " character table of Co3" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mx = filter(x -> mod(order(x), siz) == 0,\n", " [character_table(x) for x in maxes(character_table(\"Co1\"))])" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "true" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "order(mx[1]) == siz" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I do not see a character-theoretic argument that could disprove the existence of such a $4_1.G$ type subgroup.\n", "\n", "Concerning the candidate $H = (2 \\times 4).L_3(4)$, it is enough to show that no fusions to the involution centralizers $C$ exist that map the central involution in class $4$ of $H$ to the central involution of $C$.\n", "This proves that $H$ does not embed into the Monster group." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "true" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = character_table(\"(2x4).L3(4)\"); 4 in class_positions_of_center(s)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t = invcent[1]; init = approximate_class_fusion(s, t); init[4] = 2;\n", "length(possible_class_fusions(s, t, decompose = false, fusionmap = init))" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t = invcent[2]; init = approximate_class_fusion(s, t); init[4] = 2;\n", "# The following computation needs about 10 minutes. We leave it out.\n", "# length(possible_class_fusions(s, t, decompose = false, fusionmap = init))" ] } ], "metadata": { "kernelspec": { "display_name": "Julia 1.8.5", "language": "julia", "name": "julia-1.8" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }