Skip to content

\(\mathrm{Co}_3\) 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,h,z\rangle \cong 2\times\mathrm{Co}_3, \]

then \(H/\langle z\rangle\cong\mathrm{Co}_3\) and

\[ [\mathrm{Co}_1:H/\langle z\rangle]=[G:H]=8,386,560. \]

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 1 minute and 47 seconds.

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 (*"abcdefh", 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 != 8_386_560:
    raise RuntimeError(f"expected index 8386560, 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 |   21.463s (20%) |             - (0%) |            - (0%) | 1min26s (80%)
#0: ToddCoxeter: phase 0.2 = 21.525s  | run 0 = 1min47s | all runs = 1min47s | elapsed = 1min47s
The index of the subgroup is 8386560

The computed index is the claimed index: \(8,386,560\).