\(\mathrm{Co}_2\) as a subgroup of Conway group Co1
The presentation and subgroup generators on this page come from Section 4.34, page 121, of Praeger and Soicher's book.
Claim
Let \(G\) be the group defined by the displayed presentation of \(2.\mathrm{Co}_1\), and let \(z\) be its displayed central involution. If
\[
H=\langle a,b,c,d,e,f,g,z\rangle \cong 2\times\mathrm{Co}_2,
\]
then \(H/\langle z\rangle\cong\mathrm{Co}_2\) and
\[
[\mathrm{Co}_1:H/\langle z\rangle]=[G:H]=98,280.
\]
We verify the claimed index, but not the claimed isomorphism type.
The code
The following self-contained script constructs the presentation and runs the Todd-Coxeter algorithm. The recorded run took about 729 milliseconds.
Code
from itertools import combinations
from libsemigroups_pybind11 import (
Presentation,
ToddCoxeter,
congruence_kind,
presentation,
)
def coxeter_presentation(
alphabet: str,
edge_orders: dict[str, int],
) -> Presentation:
p = Presentation(alphabet)
p.contains_empty_word(True)
for generator in alphabet:
presentation.add_rule(p, generator * 2, "")
for x, y in combinations(alphabet, 2):
word = x + y
presentation.add_rule(p, word * edge_orders.get(word, 2), "")
return p
p = coxeter_presentation(
"abcdefgh",
{
"ab": 3,
"ae": 4,
"ah": 3,
"bc": 5,
"bg": 4,
"bh": 4,
"cd": 3,
"ce": 3,
"cf": 4,
"df": 3,
"ef": 6,
"fg": 4,
"fh": 6,
},
)
presentation.add_rule(p, "a", "cf" * 2)
presentation.add_rule(p, "e", "bg" * 2)
presentation.add_rule(p, "b", "ef" * 3)
presentation.add_rule(p, "d", "bh" * 2)
presentation.add_rule(p, "d", "eah" * 3)
presentation.add_rule(p, "adfh" * 3, "")
presentation.add_rule(p, "baefg" * 3, "")
presentation.add_rule(p, "cef" * 7, "")
# The central involution in this presentation of 2.Co1.
centre = "adefcefgh" * 39
tc = ToddCoxeter(congruence_kind.onesided, p)
tc.strategy(ToddCoxeter.options.strategy.felsch).use_relations_in_extra(True)
for word in (*"abcdefg", centre):
tc.add_generating_pair(word, "")
tc.run()
actual_index = tc.number_of_classes()
print(f"The index of the subgroup is {actual_index}")
if actual_index != 98_280:
raise RuntimeError(f"expected index 98280, got {actual_index}")
The output
Truncated output from the Python script
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: RUN 0 START (strategy() = felsch)
#0: ToddCoxeter: |A| = 8, |R| = 44, |u| + |v| ∈ [2, 21], ∑(|u| + |v|) = 260
[... lines omitted ...]
#0: ToddCoxeter: RUN 0 STOP (finished)
#0: ToddCoxeter: run 0 | lookahead | lookbehind | hlt | felsch
#0: ToddCoxeter: num. phases | 1 | 0 | 0 | 1
#0: ToddCoxeter: time spent in phases | 34ms (5%) | - (0%) | - (0%) | 694ms (95%)
#0: ToddCoxeter: phase 0.2 = 35ms | run 0 = 729ms | all runs = 729ms | elapsed = 729ms
The index of the subgroup is 98280
The computed index is the claimed index: \(98,280\).