Skip to content

\(3.U_4(3):2\) as a subgroup of the Suzuki sporadic group Suz

The presentation and subgroup generators on this page come from page 97 of Praeger and Soicher's book.

Claim

If

\[ H=\langle a,b,c,d,f,g\rangle \cong 3.U_4(3):2, \]

then

\[ [\mathrm{Suz}:H]=22,880. \]

We verify the claimed index, but not the claimed isomorphism type. The presentation includes one relation marked as redundant in the machine-readable source. We do not verify that this relation is redundant here.

The code

The following self-contained script constructs the presentation and runs the Todd-Coxeter algorithm. The recorded run took about 206 milliseconds.

Code
from libsemigroups_pybind11 import (
    Presentation,
    ToddCoxeter,
    congruence_kind,
    presentation,
)

p = Presentation("abcdefg")
p.contains_empty_word(True)

# All Coxeter generators are involutions.
for letter in "abcdefg":
    presentation.add_rule(p, letter * 2, "")

# Labelled edges in a5b3c8d3e,b3f4g3b.
for word, exponent in (
    ("ab", 5),
    ("bc", 3),
    ("cd", 8),
    ("de", 3),
    ("bf", 3),
    ("fg", 4),
    ("bg", 3),
):
    presentation.add_rule(p, word * exponent, "")

# Unjoined vertices commute.
for word in (
    "ac",
    "ad",
    "ae",
    "af",
    "ag",
    "bd",
    "be",
    "ce",
    "cf",
    "cg",
    "df",
    "dg",
    "ef",
    "eg",
):
    presentation.add_rule(p, word * 2, "")

# Additional defining relations.
presentation.add_rule(p, "a", "cd" * 4)
presentation.add_rule(p, "a", "fg" * 2)
presentation.add_rule(p, "abcf" * 5, "")
presentation.add_rule(p, "bfg" * 5, "")
presentation.add_rule(p, (("bcdcd" * 5) + "e") * 3, "")

# Redundant relation included by GPL to assist coset enumeration.
presentation.add_rule(p, "abcg" * 5, "")

tc = ToddCoxeter(congruence_kind.onesided, p)
tc.strategy(ToddCoxeter.options.strategy.felsch).use_relations_in_extra(True)
for word in ("a", "b", "c", "d", "f", "g"):
    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 != 22_880:
    raise RuntimeError(f"expected index 22880, got {actual_index}")

The output

Truncated output from the Python script
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: RUN 0 START (strategy() = felsch)
#0: ToddCoxeter: |A| = 7, |R| = 34, |u| + |v| ∈ [2, 78], ∑(|u| + |v|) = 275
[... 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 |     13ms (6%) |           - (0%) |          - (0%) |  192ms (93%)
#0: ToddCoxeter: phase 0.2 = 13ms     | run 0 = 206ms | all runs = 206ms | elapsed = 206ms
The index of the subgroup is 22880

The computed index is the claimed index: \(22,880\).