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\).