Skip to content

\(\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\).