Skip to content

\(G_2(4)\) 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,e,f\rangle \cong G_2(4), \]

then

\[ [\mathrm{Suz}:H]=1,782. \]

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 25 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", "e", "f"):
    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 != 1_782:
    raise RuntimeError(f"expected index 1782, 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 |   700µs (3%) |          - (0%) |         - (0%) |   24ms (96%)
#0: ToddCoxeter: phase 0.2 = 717µs    | run 0 = 25ms | all runs = 25ms | elapsed = 25ms
The index of the subgroup is 1782

The computed index is the claimed index: \(1,782\).