Skip to content

\(5^2:4A_4\) as a subgroup of Held group He

The subgroup generators used on this page come from https://brauer.maths.qmul.ac.uk/Atlas/v3/spor/He/.

Claim

\[ \mathrm{He} = \langle a, b \mid a^2 = b^7 = (ab)^{17} = [a, b]^6 = [a, b^3]^5 = [a, babab^{-1}abab] = (ab)^4ab^2ab^{-3}ababab^{-1}ab^3ab^{-2}ab^2 = 1 \rangle. \]

The generators are claimed to generate a maximal subgroup isomorphic to \(5^2:4A_4\). More precisely, if

\[ H = \langle a,\ abab^2ab^{-3}ab \rangle, \]

then

\[ [\mathrm{He} : H] = 3,358,656. \]

On this page, we verify that the subgroup generated by these words has the claimed index.

The code

In libsemigroups_pybind11, the following script constructs the presentation for He, adds the generating pairs that define the maximal subgroup, and runs the Todd-Coxeter algorithm. The source code marks three of the presentation relations as redundant. We do not verify that these relations are redundant here.

Code
from libsemigroups_pybind11 import (
    Presentation,
    ToddCoxeter,
    congruence_kind,
    presentation,
)
from libsemigroups_pybind11.words import parse_relations as parse


# Setup the presentation object with the empty and inverses, so it can represent a group
p = Presentation("abAB")
p.contains_empty_word(True)
presentation.add_inverse_rules(p, "ABab")

# Add the defining relations
presentation.add_rule(p, parse("a^2"), "")
presentation.add_rule(p, parse("b^7"), "")
presentation.add_rule(p, parse("(ab)^17"), "")
presentation.add_rule(p, parse("(ab^3)^8"), "")  # redundant
presentation.add_rule(p, parse("(ab^2ab^2aBBB)^3"), "")  # redundant
presentation.add_rule(p, parse("(a,babaBabab)"), "")
presentation.add_rule(p, parse("(a,b^3)^5"), "")
presentation.add_rule(p, parse("(a,b)^6"), "")
presentation.add_rule(
    p, parse("ab(abaBB)^2ab^2aBab^2aBB(abaB)^2"), ""
)  # redundant, maybe useful.
presentation.add_rule(p, parse("(ab)^4ab^2aB^3ababaBab^3aB^2ab^2"), "")

presentation.balance(p, "abAB", "ABab")
presentation.replace_subword(p, "A", "a")
p.alphabet("abB")

tc = ToddCoxeter(congruence_kind.onesided, p)
tc.strategy(ToddCoxeter.options.strategy.felsch)

# takes approx 54s

# These generators are from the webpages of the ATLAS
tc.add_generating_pair("a", "")
tc.add_generating_pair(parse("abab^2aB^3ab"), "")

print(f"The index of the subgroup is {tc.number_of_classes()}")

The output

The truncated output of the enumeration is below:

Truncated output from the Python script
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: RUN 0 START (strategy() = felsch)
#0: ToddCoxeter: |A| = 3, |R| = 14, |u| + |v| ∈ [2, 40], ∑(|u| + |v|) = 259
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: FELSCH 0.0 START
#0: ToddCoxeter: FELSCH 0.0.0     |       active |          killed |         defined
#0: ToddCoxeter: nodes            |           10 |               0 |              10
#0: ToddCoxeter:                  |       active |         missing |      % complete
#0: ToddCoxeter: edges            |           12 |              18 |           40.0%
#0: ToddCoxeter: time             | run 0 = 54µs | all runs = 54µs | elapsed = 231µs
++++++++++++++++++++++++++++++++
#1: ToddCoxeter: FELSCH 0.0.1       |         active |            killed |          defined
#1: ToddCoxeter: nodes              |      2,432,372 |            62,383 |        2,494,757
#1: ToddCoxeter: diff 0.0.0         |     +2,432,362 |           +62,383 |       +2,494,747
#1: ToddCoxeter:                    |         active |           missing |       % complete
#1: ToddCoxeter: edges              |      5,157,707 |         2,139,409 |            70.7%
#1: ToddCoxeter: diff 0.0.0         |     +5,157,695 |        +2,139,391 |           +30.7%
#1: ToddCoxeter: phase 0.0 = 1.004s | run 0 = 1.004s | all runs = 1.004s | elapsed = 1.004s
++++++++++++++++++++++++++++++++
#1: ToddCoxeter: FELSCH 0.0.2       |         active |            killed |          defined
#1: ToddCoxeter: nodes              |      4,842,108 |           140,945 |        4,983,074
#1: ToddCoxeter: diff 0.0.1         |     +2,409,736 |           +78,562 |       +2,488,317
#1: ToddCoxeter: diff 0.0.0         |     +4,842,098 |          +140,945 |       +4,983,064
#1: ToddCoxeter:                    |         active |           missing |       % complete
#1: ToddCoxeter: edges              |     10,271,116 |         4,255,208 |            70.7%
#1: ToddCoxeter: diff 0.0.1         |     +5,113,409 |        +2,115,799 |            +0.0%
#1: ToddCoxeter: diff 0.0.0         |    +10,271,104 |        +4,255,190 |           +30.7%
#1: ToddCoxeter: phase 0.0 = 2.009s | run 0 = 2.009s | all runs = 2.009s | elapsed = 2.009s
++++++++++++++++++++++++++++++++
#1: ToddCoxeter: FELSCH 0.0.3       |         active |            killed |          defined
#1: ToddCoxeter: nodes              |      7,158,599 |           221,358 |        7,379,979
#1: ToddCoxeter: diff 0.0.2         |     +2,316,491 |           +80,413 |       +2,396,905
#1: ToddCoxeter: diff 0.0.0         |     +7,158,589 |          +221,358 |       +7,379,969
#1: ToddCoxeter:                    |         active |           missing |       % complete
#1: ToddCoxeter: edges              |     15,187,405 |         6,288,392 |            70.7%
#1: ToddCoxeter: diff 0.0.2         |     +4,916,289 |        +2,033,184 |            +0.0%
#1: ToddCoxeter: diff 0.0.0         |    +15,187,393 |        +6,288,374 |           +30.7%
#1: ToddCoxeter: phase 0.0 = 3.011s | run 0 = 3.011s | all runs = 3.011s | elapsed = 3.011s
++++++++++++++++++++++++++++++++
#1: ToddCoxeter: FELSCH 0.0.4       |         active |            killed |          defined
#1: ToddCoxeter: nodes              |      9,255,773 |           422,754 |        9,678,545
#1: ToddCoxeter: diff 0.0.3         |     +2,097,174 |          +201,396 |       +2,298,566
#1: ToddCoxeter: diff 0.0.0         |     +9,255,763 |          +422,754 |       +9,678,535
#1: ToddCoxeter:                    |         active |           missing |       % complete
#1: ToddCoxeter: edges              |     19,641,556 |         8,125,763 |            70.7%
#1: ToddCoxeter: diff 0.0.3         |     +4,454,151 |        +1,837,371 |            +0.0%
#1: ToddCoxeter: diff 0.0.0         |    +19,641,544 |        +8,125,745 |           +30.7%
#1: ToddCoxeter: phase 0.0 = 4.016s | run 0 = 4.016s | all runs = 4.016s | elapsed = 4.016s
++++++++++++++++++++++++++++++++
#1: ToddCoxeter: FELSCH 0.0.5       |         active |            killed |          defined
#1: ToddCoxeter: nodes              |      6,914,229 |         3,237,712 |       10,151,941
#1: ToddCoxeter: diff 0.0.4         |     -2,341,544 |        +2,814,958 |         +473,396
#1: ToddCoxeter: diff 0.0.0         |     +6,914,219 |        +3,237,712 |      +10,151,931
#1: ToddCoxeter:                    |         active |           missing |       % complete
#1: ToddCoxeter: edges              |     14,845,037 |         5,897,650 |            71.6%
[... lines omitted ...]
#0: ToddCoxeter: diff 0.1.0          |              +0 |                 +0 |                +0
#0: ToddCoxeter:                     |          active |            missing |        % complete
#0: ToddCoxeter: edges               |      10,075,968 |                  0 |            100.0%
#0: ToddCoxeter: diff 0.1.10         |              +0 |                 +0 |             +0.0%
#0: ToddCoxeter: diff 0.1.0          |              +0 |                 +0 |             +0.0%
#0: ToddCoxeter: phase 0.1 = 10.090s | run 0 = 54.796s | all runs = 54.796s | elapsed = 54.796s
#0: ToddCoxeter: lookahead_next() is now n x f = 10,000,000 (+5,000,000)
#0: ToddCoxeter: because: l < (l + a) / t = 839,664
#0: ToddCoxeter: where:  a = number_of_nodes_active()     = 3,358,656
#0: ToddCoxeter:         f = lookahead_growth_factor()    = 2
#0: ToddCoxeter:         l = nodes killed in lookahead    = 0
#0: ToddCoxeter:         n = lookahead_next()             = 5,000,000
#0: ToddCoxeter:         t = lookahead_growth_threshold() = 4
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: FELSCH 0.2.12       |          active |             killed |           defined
#0: ToddCoxeter: nodes               |       3,358,656 |          7,414,887 |        10,773,543
#0: ToddCoxeter: diff 0.2.11         |              +0 |                 +0 |                +0
#0: ToddCoxeter: diff 0.2.0          |              +0 |                 +0 |                +0
#0: ToddCoxeter:                     |          active |            missing |        % complete
#0: ToddCoxeter: edges               |      10,075,968 |                  0 |            100.0%
#0: ToddCoxeter: diff 0.2.11         |              +0 |                 +0 |             +0.0%
#0: ToddCoxeter: diff 0.2.0          |              +0 |                 +0 |             +0.0%
#0: ToddCoxeter: phase 0.2 = 10.090s | run 0 = 54.796s | all runs = 54.796s | elapsed = 54.796s
++++++++++++++++++++++++++++++++
#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 |   10.090s (18%) |             - (0%) |            - (0%) | 44.705s (82%)
#0: ToddCoxeter: phase 0.2 = 10.147s  | run 0 = 54.852s | all runs = 54.852s | elapsed = 54.852s
The index of the subgroup is 3358656

The computed index is the same as the claimed index: \(3,358,656\).