Skip to content

Mathieu group M23 (Presentation 2)

The claims on this page come from https://brauer.maths.qmul.ac.uk/Atlas/v3/pres/M23G1-P2.

The Python script includes the additional relation \([a,b]^6 = 1\), which does not appear in the presentation displayed on the ATLAS page. We do not verify that this relation is redundant here.

Claim

\[ \mathrm{M}_{23} = \langle a, b \mid a^2 = b^4 = (ab^2)^6 = (abab^{-1}ab^2)^4 = abababab^{-1}ab^2abab^{-1}abab^{-1}abababab^{-1}ab^{-1}ab^{-1} = abab^2abab^2abab^2ab^2ab^{-1}ab^2ab^{-1}abab^2abab^{-1}ab^2 = abab^2ab^2abab^2ab^2abab^2ab^2abab^2ab^2ab^{-1}ab^2ab^2ab^{-1}ab^2ab^2 = ababababab^2abab^{-1}abab^2ababab^{-1}ab^2abab^2ab^2abab^{-1}ab^{-1}abab^2 = 1 \rangle \]

with

\[ |\mathrm{M}_{23}| = 10,200,960. \]

On this page, we verify that the presentation used by the script defines a group of order \(10,200,960\).

The code

In libsemigroups_pybind11, the following script constructs the presentation for M23 and runs the Todd-Coxeter algorithm.

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

# 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_relations("a^2"), "")
presentation.add_rule(p, parse_relations("b^4"), "")
presentation.add_rule(p, parse_relations("(ab^2)^6"), "")
presentation.add_rule(p, parse_relations("(a,b)^6"), "")
presentation.add_rule(p, parse_relations("(abaBab^2)^4"), "")
presentation.add_rule(p, parse_relations("abababaBab^2abaBabaBabababaBaBaB"), "")
presentation.add_rule(
    p, parse_relations("abab^2abab^2abab^2ab^2aBab^2aBabab^2abaBab^2"), ""
)
presentation.add_rule(
    p,
    parse_relations("abab^2ab^2abab^2ab^2abab^2ab^2abab^2ab^2aBab^2ab^2aBab^2ab^2"),
    "",
)
presentation.add_rule(
    p, parse_relations("ababababab^2abaBabab^2ababaBab^2abab^2ab^2abaBaBabab^2"), ""
)

# Run the Todd-Coxeter algorithm
tc = ToddCoxeter(congruence_kind.twosided, p)
tc.strategy(tc.options.strategy.felsch)

print(f"The size of the group defined by the presentation 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| = 4, |R| = 13, |u| + |v| ∈ [2, 48], ∑(|u| + |v|) = 248
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: FELSCH 0.0 START
#0: ToddCoxeter: FELSCH 0.0.0     |       active |          killed |        defined
#0: ToddCoxeter: nodes            |            1 |               0 |              1
#0: ToddCoxeter:                  |       active |         missing |     % complete
#0: ToddCoxeter: edges            |            0 |               4 |           0.0%
#0: ToddCoxeter: time             | run 0 = 26µs | all runs = 26µs | elapsed = 72µs
++++++++++++++++++++++++++++++++
#1: ToddCoxeter: FELSCH 0.0.1       |         active |            killed |          defined
#1: ToddCoxeter: nodes              |      1,275,486 |            25,934 |        1,301,428
#1: ToddCoxeter: diff 0.0.0         |     +1,275,485 |           +25,934 |       +1,301,427
#1: ToddCoxeter:                    |         active |           missing |       % complete
#1: ToddCoxeter: edges              |      3,967,993 |         1,133,951 |            77.8%
#1: ToddCoxeter: diff 0.0.0         |     +3,967,993 |        +1,133,947 |           +77.8%
#1: ToddCoxeter: phase 0.0 = 1.005s | run 0 = 1.005s | all runs = 1.005s | elapsed = 1.005s
++++++++++++++++++++++++++++++++
#1: ToddCoxeter: FELSCH 0.0.2       |         active |            killed |          defined
#1: ToddCoxeter: nodes              |      2,506,185 |            60,138 |        2,566,339
#1: ToddCoxeter: diff 0.0.1         |     +1,230,699 |           +34,204 |       +1,264,911
#1: ToddCoxeter: diff 0.0.0         |     +2,506,184 |           +60,138 |       +2,566,338
#1: ToddCoxeter:                    |         active |           missing |       % complete
#1: ToddCoxeter: edges              |      7,801,046 |         2,223,694 |            77.8%
#1: ToddCoxeter: diff 0.0.1         |     +3,833,053 |        +1,089,743 |            +0.0%
#1: ToddCoxeter: diff 0.0.0         |     +7,801,046 |        +2,223,690 |           +77.8%
#1: ToddCoxeter: phase 0.0 = 2.010s | run 0 = 2.010s | all runs = 2.010s | elapsed = 2.010s
++++++++++++++++++++++++++++++++
#1: ToddCoxeter: FELSCH 0.0.3       |         active |            killed |          defined
#1: ToddCoxeter: nodes              |      3,727,047 |            96,273 |        3,823,324
#1: ToddCoxeter: diff 0.0.2         |     +1,220,862 |           +36,135 |       +1,256,985
#1: ToddCoxeter: diff 0.0.0         |     +3,727,046 |           +96,273 |       +3,823,323
#1: ToddCoxeter:                    |         active |           missing |       % complete
#1: ToddCoxeter: edges              |     11,606,914 |         3,301,274 |            77.9%
#1: ToddCoxeter: diff 0.0.2         |     +3,805,868 |        +1,077,580 |            +0.0%
#1: ToddCoxeter: diff 0.0.0         |    +11,606,914 |        +3,301,270 |           +77.9%
#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              |      4,908,390 |           131,357 |        5,039,763
#1: ToddCoxeter: diff 0.0.3         |     +1,181,343 |           +35,084 |       +1,216,439
#1: ToddCoxeter: diff 0.0.0         |     +4,908,389 |          +131,357 |       +5,039,762
#1: ToddCoxeter:                    |         active |           missing |       % complete
#1: ToddCoxeter: edges              |     15,288,906 |         4,344,654 |            77.9%
#1: ToddCoxeter: diff 0.0.3         |     +3,681,992 |        +1,043,380 |            +0.0%
#1: ToddCoxeter: diff 0.0.0         |    +15,288,906 |        +4,344,650 |           +77.9%
#1: ToddCoxeter: phase 0.0 = 4.015s | run 0 = 4.015s | all runs = 4.015s | elapsed = 4.015s
++++++++++++++++++++++++++++++++
#1: ToddCoxeter: FELSCH 0.0.5       |         active |            killed |          defined
#1: ToddCoxeter: nodes              |      6,098,758 |           169,799 |        6,268,568
#1: ToddCoxeter: diff 0.0.4         |     +1,190,368 |           +38,442 |       +1,228,805
#1: ToddCoxeter: diff 0.0.0         |     +6,098,757 |          +169,799 |       +6,268,567
#1: ToddCoxeter:                    |         active |           missing |       % complete
#1: ToddCoxeter: edges              |     18,999,097 |         5,395,935 |            77.9%
[... lines omitted ...]
#0: ToddCoxeter: diff 0.1.53         |              +0 |                 +0 |                +0
#0: ToddCoxeter: diff 0.1.0          |              +0 |                 +0 |                +0
#0: ToddCoxeter:                     |          active |            missing |        % complete
#0: ToddCoxeter: edges               |      40,803,840 |                  0 |            100.0%
#0: ToddCoxeter: diff 0.1.53         |              +0 |                 +0 |             +0.0%
#0: ToddCoxeter: diff 0.1.0          |              +0 |                 +0 |             +0.0%
#0: ToddCoxeter: phase 0.1 = 53.174s | run 0 = 4min38s | all runs = 4min38s | elapsed = 4min38s
#0: ToddCoxeter: lookahead_next() is now max(f x a = 20,401,920, m = 10,000) (+15,401,920)
#0: ToddCoxeter: because a > n
#0: ToddCoxeter: where:  a = number_of_nodes_active()     = 10,200,960
#0: ToddCoxeter:         f = lookahead_growth_factor()    = 2
#0: ToddCoxeter:         m = lookahead_min()              = 10,000
#0: ToddCoxeter:         n = lookahead_next()             = 5,000,000
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: FELSCH 0.2.55       |          active |             killed |           defined
#0: ToddCoxeter: nodes               |      10,200,960 |         15,538,858 |        25,739,818
#0: ToddCoxeter: diff 0.2.54         |              +0 |                 +0 |                +0
#0: ToddCoxeter: diff 0.2.0          |              +0 |                 +0 |                +0
#0: ToddCoxeter:                     |          active |            missing |        % complete
#0: ToddCoxeter: edges               |      40,803,840 |                  0 |            100.0%
#0: ToddCoxeter: diff 0.2.54         |              +0 |                 +0 |             +0.0%
#0: ToddCoxeter: diff 0.2.0          |              +0 |                 +0 |             +0.0%
#0: ToddCoxeter: phase 0.2 = 53.174s | run 0 = 4min38s | all runs = 4min38s | elapsed = 4min38s
++++++++++++++++++++++++++++++++
#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 |   53.174s (19%) |             - (0%) |            - (0%) | 3min45s (81%)
#0: ToddCoxeter: phase 0.2 = 53.410s  | run 0 = 4min38s | all runs = 4min38s | elapsed = 4min38s
The size of the group defined by the presentation is 10200960

The computed size of the group matches the claimed size: \(10,200,960\).