Skip to content

Mathieu group M12

The claims on this page come from https://brauer.maths.qmul.ac.uk/Atlas/v3/spor/M12.

Claim

\[ \mathrm{M}_{12} = \langle a, b \mid a^2 = b^3 = (ab)^{11} = [a, b]^6 = (ababab^{−1})^6 = 1 \rangle \]

with

\[ |\mathrm{M}_{12}| = 95,040. \]

On this page, we verify that the above claimed presentation of the Mathieu group M12 defines a group of order \(95,040\).

The code

In libsemigroups_pybind11, the following script constructs the presentation for M12 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 word 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^3"), "")
presentation.add_rule(p, parse_relations("(ab)^11"), "")
presentation.add_rule(p, parse_relations("(a,b)^6"), "")
presentation.add_rule(p, parse_relations("(ababaB)^6"), "")


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

print(f"The size of the group is {tc.number_of_classes()}")

The output

Running the above script produces the following output:

Output from the Python script
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: running for approx. 10.000s
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: RUN 0 START (strategy() = hlt)
#0: ToddCoxeter: |A| = 4, |R| = 9, |u| + |v| ∈ [2, 36], ∑(|u| + |v|) = 95
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: HLT 0.0 START
#0: ToddCoxeter: HLT 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 = 21µs | all runs = 21µs | elapsed = 103µs
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: HLT 0.0 STOP
#0: ToddCoxeter: HLT 0.0.1         |        active |           killed |         defined
#0: ToddCoxeter: nodes             |     5,000,004 |        2,964,327 |       7,964,331
#0: ToddCoxeter: diff 0.0.0        |    +5,000,003 |       +2,964,327 |      +7,964,330
#0: ToddCoxeter:                   |        active |          missing |      % complete
#0: ToddCoxeter: edges             |     5,782,533 |       14,217,483 |           28.9%
#0: ToddCoxeter: diff 0.0.0        |    +5,782,533 |      +14,217,479 |          +28.9%
#0: ToddCoxeter: phase 0.0 = 624ms | run 0 = 624ms | all runs = 624ms | elapsed = 624ms
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: LOOKAHEAD 0.1 START (lookahead_extent() = partial, lookahead_style() = hlt)
#0: ToddCoxeter: LOOKAHEAD 0.1.0  |        active |           killed |         defined
#0: ToddCoxeter: nodes            |     5,000,004 |        2,964,327 |       7,964,331
#0: ToddCoxeter:                  |        active |          missing |      % complete
#0: ToddCoxeter: edges            |     5,782,533 |       14,217,483 |           28.9%
#0: ToddCoxeter: time             | run 0 = 624ms | all runs = 624ms | elapsed = 624ms
#0: ToddCoxeter: because a >= n
#0: ToddCoxeter: where:  a = number_of_nodes_active() = 5,000,004
#0: ToddCoxeter:         n = lookahead_next()         = 5,000,000
#0: ToddCoxeter: large collapse, number of coincidences 100,002 >= 100,000 = large_collapse()!
++++++++++++++++++++++++++++++++
#1: ToddCoxeter: LOOKAHEAD 0.1.1    |         active |            killed |          defined
#1: ToddCoxeter: nodes              |      1,909,907 |         6,057,700 |        7,964,331
#1: ToddCoxeter: diff 0.1.0         |     -3,090,097 |        +3,093,373 |               +0
#1: ToddCoxeter:                    |         active |           missing |       % complete
#1: ToddCoxeter: edges              |              0 |         7,639,628 |             0.0%
#1: ToddCoxeter: diff 0.1.0         |     -5,782,533 |        -6,577,855 |           -28.9%
#1: ToddCoxeter: phase 0.1 = 375ms  | run 0 = 1.001s | all runs = 1.001s | elapsed = 1.001s
#1: ToddCoxeter: lookahead progress |         ~32.6%
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: LOOKAHEAD 0.1 STOP
#0: ToddCoxeter: LOOKAHEAD 0.1.2   |         active |            killed |          defined
#0: ToddCoxeter: nodes             |         95,046 |         7,869,285 |        7,964,331
#0: ToddCoxeter: diff 0.1.1        |     -1,814,861 |        +1,811,585 |               +0
#0: ToddCoxeter: diff 0.1.0        |     -4,904,958 |        +4,904,958 |               +0
#0: ToddCoxeter:                   |         active |           missing |       % complete
#0: ToddCoxeter: edges             |        380,177 |                 7 |           100.0%
#0: ToddCoxeter: diff 0.1.1        |       +380,177 |        -7,639,621 |          +100.0%
#0: ToddCoxeter: diff 0.1.0        |     -5,402,356 |       -14,217,476 |           +71.1%
#0: ToddCoxeter: phase 0.1 = 491ms | run 0 = 1.116s | all runs = 1.116s | elapsed = 1.116s
#0: ToddCoxeter: lookahead_next() is now max(f x a = 190,092, m = 10,000) (-4,809,908)
#0: ToddCoxeter: because f x a < n
#0: ToddCoxeter: where:  a = number_of_nodes_active()     = 95,046
#0: ToddCoxeter:         f = lookahead_growth_factor()    = 2
#0: ToddCoxeter:         m = lookahead_min()              = 10,000
#0: ToddCoxeter:         n = lookahead_next()             = 5,000,000
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: HLT 0.2 START
#0: ToddCoxeter: HLT 0.2.0        |         active |            killed |          defined
#0: ToddCoxeter: nodes            |         95,046 |         7,869,285 |        7,964,331
#0: ToddCoxeter:                  |         active |           missing |       % complete
#0: ToddCoxeter: edges            |        380,177 |                 7 |           100.0%
#0: ToddCoxeter: time             | run 0 = 1.116s | all runs = 1.116s | elapsed = 1.116s
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: HLT 0.2 STOP
#0: ToddCoxeter: HLT 0.2.1        |         active |            killed |          defined
#0: ToddCoxeter: nodes            |         95,040 |         7,869,292 |        7,964,332
#0: ToddCoxeter: diff 0.2.0       |             -6 |                +7 |               +1
#0: ToddCoxeter:                  |         active |           missing |       % complete
#0: ToddCoxeter: edges            |        380,160 |                 0 |           100.0%
#0: ToddCoxeter: diff 0.2.0       |            -17 |                -7 |            +0.0%
#0: ToddCoxeter: phase 0.2 = 19ms | run 0 = 1.136s | all runs = 1.136s | elapsed = 1.136s
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: HLT 0.3.2        |         active |            killed |          defined
#0: ToddCoxeter: nodes            |         95,040 |         7,869,292 |        7,964,332
#0: ToddCoxeter: diff 0.3.1       |             +0 |                +0 |               +0
#0: ToddCoxeter: diff 0.3.0       |             -6 |                +7 |               +1
#0: ToddCoxeter:                  |         active |           missing |       % complete
#0: ToddCoxeter: edges            |        380,160 |                 0 |           100.0%
#0: ToddCoxeter: diff 0.3.1       |             +0 |                +0 |            +0.0%
#0: ToddCoxeter: diff 0.3.0       |            -17 |                -7 |            +0.0%
#0: ToddCoxeter: phase 0.3 = 19ms | run 0 = 1.136s | all runs = 1.136s | elapsed = 1.136s
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: RUN 0 STOP (finished)
#0: ToddCoxeter: run 0                |      lookahead |        lookbehind |              hlt |       felsch
#0: ToddCoxeter: num. phases          |              1 |                 0 |                2 |            0
#0: ToddCoxeter: time spent in phases |    491ms (43%) |            - (0%) |      644ms (57%) |       - (0%)
#0: ToddCoxeter: phase 0.3 = 20ms     | run 0 = 1.137s | all runs = 1.137s | elapsed = 1.137s
The size of the group is 95040

The computed size of the group matches the size of the group provided on the ATLAS: \(95,040\).