Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 15 additions & 2 deletions docs/.nav.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,13 @@ nav:
- "Mathieu group M22": examples/atlas/mathieu/m22.md
- "Mathieu group M23":
- examples/atlas/mathieu/m23/index.md
- "Presentation 1": examples/atlas/mathieu/m23/p1.md
- "Presentation 2": examples/atlas/mathieu/m23/p2.md
- "M11, P1": examples/atlas/mathieu/m23/p1_m11.md
- "M22, P1": examples/atlas/mathieu/m23/p1_m22.md
- "M11, P2": examples/atlas/mathieu/m23/p2_m11.md
- "M22, P2": examples/atlas/mathieu/m23/p2_m22.md
- "Mathieu group M24":
- examples/atlas/mathieu/m24/index.md
- "Mathieu group M24": examples/atlas/mathieu/m24.md
- "Leech lattice groups":
- examples/atlas/leech-lattice/hs.md
- "Janko group J2, Hall-Janko group HJ":
Expand All @@ -39,11 +40,23 @@ nav:
- "P2": examples/atlas/leech-lattice/j2/j2-p2.md
- "Conway group Co2":
- examples/atlas/leech-lattice/co2/index.md
- "U6(2):2": examples/atlas/leech-lattice/co2/2300.md
- "McLaughlin group McL":
- examples/atlas/leech-lattice/mcl/index.md
- "Monster sections":
- "Held group He":
- examples/atlas/monster-sections/he/index.md
- "S4(4):2": examples/atlas/monster-sections/he/2058.md
- "2^2.L3(4).S3": examples/atlas/monster-sections/he/8330.md
- "2^6:3.S6 (I)": examples/atlas/monster-sections/he/29155-i.md
- "2^6:3.S6 (II)": examples/atlas/monster-sections/he/29155-ii.md
- "2^(1+6).L3(2)": examples/atlas/monster-sections/he/187425.md
- "7^2:2.L2(7)": examples/atlas/monster-sections/he/244800.md
- "3.S7": examples/atlas/monster-sections/he/266560.md
- "7^(1+2):(3 x S3)": examples/atlas/monster-sections/he/652800.md
- "S4 x L3(2)": examples/atlas/monster-sections/he/999600.md
- "7:3 x L3(2)": examples/atlas/monster-sections/he/1142400.md
- "5^2:4A4": examples/atlas/monster-sections/he/3358656.md
- "Fischer group Fi22":
- examples/atlas/monster-sections/fi22/index.md
- "Pariahs":
Expand Down
36 changes: 20 additions & 16 deletions docs/examples/atlas/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ see more information.
<td class="correct-size">
<a href="mathieu/m22">M<sub>22</sub></a>
</td>
<td class="some-correct-index">
<td class="correct-size">
<a href="mathieu/m23">M<sub>23</sub></a>
</td>
<td class="correct-size">
Expand All @@ -97,13 +97,13 @@ see more information.
<td class="correct-size">
<a href="leech-lattice/j2">J<sub>2</sub></a>
</td>
<td class="no-presentation">Co<sub>1</sub></td>
<td class="work-in-progress">
<td class="no-presentation-known">Co<sub>1</sub></td>
<td class="correct-index">
<a href="leech-lattice/co2">Co<sub>2</sub></a>
</td>
<td class="no-presentation">Co<sub>3</sub></td>
<td class="no-presentation-in-atlas">Co<sub>3</sub></td>
<td class="work-in-progress"><a href="leech-lattice/mcl">McL</a></td>
<td class="no-presentation">Suz</td>
<td class="no-presentation-in-atlas">Suz</td>
</tr>
</table>
</div>
Expand All @@ -113,16 +113,16 @@ see more information.
<th colspan="8">Monster sections</th>
</tr>
<tr>
<td class="work-in-progress"><a href="monster-sections/he">He</a></td>
<td class="no-presentation">HN</td>
<td class="no-presentation">Th</td>
<td class="correct-index"><a href="monster-sections/he">He</a></td>
<td class="no-presentation-in-atlas">HN</td>
<td class="no-presentation-in-atlas">Th</td>
<td class="work-in-progress">
<a href="monster-sections/fi22">Fi<sub>22</sub></a>
</td>
<td class="no-presentation">Fi<sub>23</sub></td>
<td class="no-presentation">Fi<sub>24</sub>'</td>
<td class="no-presentation">B</td>
<td class="no-presentation">M</td>
<td class="no-presentation-in-atlas">Fi<sub>23</sub></td>
<td class="no-presentation-in-atlas">Fi<sub>24</sub>'</td>
<td class="no-presentation-in-atlas">B</td>
<td class="no-presentation-in-atlas">M</td>
</tr>
</table>
</div>
Expand All @@ -135,15 +135,15 @@ see more information.
<td class="correct-size">
<a href="pariahs/j1">J<sub>1</sub></a>
</td>
<td class="no-presentation">O'N</td>
<td class="no-presentation-in-atlas">O'N</td>
<td class="correct-size">
<a href="pariahs/j3">J<sub>3</sub></a>
</td>
<td class="correct-index-alt"><a href="pariahs/ru">Ru</a></td>
<td class="work-in-progress">
<a href="pariahs/j4">J<sub>4</sub></a>
</td>
<td class="no-presentation">Ly</td>
<td class="no-presentation-in-atlas">Ly</td>
</tr>
</table>
</div>
Expand Down Expand Up @@ -181,13 +181,14 @@ see more information.
presentation has at least 1 subgroup of the correct index.
</td>
</tr>
</tr>
<!--
<tr>
<td class="some-correct-index">
The presentation has at least 1 subgroup of the correct index, and
at least 1 subgroup whose index could not be verified.
</td>
</tr>
-->
<!-- <tr>
<td class="incorrect-size">
The presentation defines a group of the incorrect size
Expand All @@ -197,7 +198,10 @@ see more information.
<td class="work-in-progress">Work in progress.</td>
</tr>
<tr>
<td class="no-presentation">No presentation is provided.</td>
<td class="no-presentation-in-atlas">No presentation in ATLAS.</td>
</tr>
<tr>
<td class="no-presentation-known">No presentation known.</td>
</tr>
</table>
</div>
Expand Down
183 changes: 183 additions & 0 deletions docs/examples/atlas/leech-lattice/co2/2300.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,183 @@
# $U_6(2):2$ as a subgroup of Conway group Co~2~

The subgroup generators used on this page come from
[https://brauer.maths.qmul.ac.uk/Atlas/v3/spor/Co2/](https://brauer.maths.qmul.ac.uk/Atlas/v3/spor/Co2/).

## Claim

$$
\mathrm{Co}_2 = \langle a, b \mid a^2 = b^5 = (ab^2)^9
= [a,b]^4 = [a,b^2]^4 = [a,bab]^3 = [a,bab^2ab]^2
= [a,bab^{-2}]^3 = [a,b^{-2}abab^{-2}]^2
= (abab^2ab^{-1}ab^{-2})^7 = 1 \rangle.
$$

The generators are claimed to generate a maximal subgroup isomorphic to
$U_6(2):2$. More precisely, if

$$
H = \langle a,\ (ab)^2 \rangle,
$$

then

$$
[\mathrm{Co}_2 : H] = 2,300.
$$

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 Co~2~, adds the generating pairs that define the maximal subgroup, and runs
the Todd-Coxeter algorithm. It uses the additional relation
$[a,b^2ab^2]^3 = 1$, which the source code marks as redundant but useful. We do
not verify that this relation is redundant here.

The code took about 1 minute 8 seconds to run on a 2024 MacBook Pro M4 with 48GB
of RAM:

```python
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^5"), "")
presentation.add_rule(p, parse("(ab^2)^9"), "")
presentation.add_rule(p, parse("(a,b)^4"), "")
presentation.add_rule(p, parse("(a,b^2)^4"), "")
presentation.add_rule(p, parse("(a,bab)^3"), "")
presentation.add_rule(p, parse("(a,bab^2ab)^2"), "")
presentation.add_rule(p, parse("(a,baB^2)^3"), "")
presentation.add_rule(p, parse("(a,B^2abaB^2)^2"), "")
presentation.add_rule(p, parse("(a,b^2ab^2)^3"), "") # Redundant, but useful.
presentation.add_rule(p, parse("(abab^2aBaB^2)^7"), "")

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

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

# Add generating pairs for the maximal subgroup
tc.add_generating_pair("a", "")
tc.add_generating_pair("abab", "")

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

## The output

The truncated output of the enumeration is below:

??? info "Truncated output from the Python script"

```
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: RUN 0 START (strategy() = felsch)
#0: ToddCoxeter: |A| = 3, |R| = 15, |u| + |v| ∈ [2, 70], ∑(|u| + |v|) = 302
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: FELSCH 0.0 START
#0: ToddCoxeter: FELSCH 0.0.0 | active | killed | defined
#0: ToddCoxeter: nodes | 3 | 0 | 3
#0: ToddCoxeter: | active | missing | % complete
#0: ToddCoxeter: edges | 5 | 4 | 55.6%
#0: ToddCoxeter: time | run 0 = 82µs | all runs = 82µs | elapsed = 132µs
++++++++++++++++++++++++++++++++
#1: ToddCoxeter: FELSCH 0.0.1 | active | killed | defined
#1: ToddCoxeter: nodes | 1,836,440 | 37,239 | 1,873,692
#1: ToddCoxeter: diff 0.0.0 | +1,836,437 | +37,239 | +1,873,689
#1: ToddCoxeter: | active | missing | % complete
#1: ToddCoxeter: edges | 4,163,654 | 1,345,666 | 75.6%
#1: ToddCoxeter: diff 0.0.0 | +4,163,649 | +1,345,662 | +20.0%
#1: ToddCoxeter: phase 0.0 = 1.000s | run 0 = 1.000s | all runs = 1.000s | elapsed = 1.000s
++++++++++++++++++++++++++++++++
#1: ToddCoxeter: FELSCH 0.0.2 | active | killed | defined
#1: ToddCoxeter: nodes | 3,697,682 | 73,383 | 3,771,084
#1: ToddCoxeter: diff 0.0.1 | +1,861,242 | +36,144 | +1,897,392
#1: ToddCoxeter: diff 0.0.0 | +3,697,679 | +73,383 | +3,771,081
#1: ToddCoxeter: | active | missing | % complete
#1: ToddCoxeter: edges | 8,383,347 | 2,709,699 | 75.6%
#1: ToddCoxeter: diff 0.0.1 | +4,219,693 | +1,364,033 | -0.0%
#1: ToddCoxeter: diff 0.0.0 | +8,383,342 | +2,709,695 | +20.0%
#1: ToddCoxeter: phase 0.0 = 2.005s | run 0 = 2.005s | all runs = 2.005s | elapsed = 2.005s
[... lines omitted ...]
++++++++++++++++++++++++++++++++
#1: ToddCoxeter: FELSCH 0.0.68 | active | killed | defined
#1: ToddCoxeter: nodes | 5,372,361 | 106,952,651 | 112,324,634
#1: ToddCoxeter: diff 0.0.67 | -31,972,961 | +31,973,060 | +0
#1: ToddCoxeter: diff 0.0.0 | +5,372,358 | +106,952,651 | +112,324,631
#1: ToddCoxeter: | active | missing | % complete
#1: ToddCoxeter: edges | 0 | 16,117,083 | 0.0%
#1: ToddCoxeter: diff 0.0.67 | +0 | -95,918,883 | +0.0%
#1: ToddCoxeter: diff 0.0.0 | -5 | +16,117,079 | -55.6%
#1: ToddCoxeter: phase 0.0 = 1min8s | run 0 = 1min8s | all runs = 1min8s | elapsed = 1min8s
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: FELSCH 0.0 STOP
#0: ToddCoxeter: FELSCH 0.0.69 | active | killed | defined
#0: ToddCoxeter: nodes | 4,600 | 112,320,034 | 112,324,634
#0: ToddCoxeter: diff 0.0.68 | -5,367,761 | +5,367,383 | +0
#0: ToddCoxeter: diff 0.0.0 | +4,597 | +112,320,034 | +112,324,631
#0: ToddCoxeter: | active | missing | % complete
#0: ToddCoxeter: edges | 13,800 | 0 | 100.0%
#0: ToddCoxeter: diff 0.0.68 | +13,800 | -16,117,083 | +100.0%
#0: ToddCoxeter: diff 0.0.0 | +13,795 | -4 | +44.4%
#0: ToddCoxeter: phase 0.0 = 1min8s | run 0 = 1min8s | all runs = 1min8s | elapsed = 1min8s
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: LOOKAHEAD 0.1 START (lookahead_extent() = full, lookahead_style() = hlt)
#0: ToddCoxeter: LOOKAHEAD 0.1.0 | active | killed | defined
#0: ToddCoxeter: nodes | 4,600 | 112,320,034 | 112,324,634
#0: ToddCoxeter: | active | missing | % complete
#0: ToddCoxeter: edges | 13,800 | 0 | 100.0%
#0: ToddCoxeter: time | run 0 = 1min8s | all runs = 1min8s | elapsed = 1min8s
#0: ToddCoxeter: triggered because there are skipped definitions (4,600 active nodes)!
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: LOOKAHEAD 0.1 STOP
#0: ToddCoxeter: LOOKAHEAD 0.1.1 | active | killed | defined
#0: ToddCoxeter: nodes | 2,300 | 112,322,334 | 112,324,634
#0: ToddCoxeter: diff 0.1.0 | -2,300 | +2,300 | +0
#0: ToddCoxeter: | active | missing | % complete
#0: ToddCoxeter: edges | 6,900 | 0 | 100.0%
#0: ToddCoxeter: diff 0.1.0 | -6,900 | +0 | +0.0%
#0: ToddCoxeter: phase 0.1 = 705µs | run 0 = 1min8s | all runs = 1min8s | elapsed = 1min8s
#0: ToddCoxeter: lookahead_next() is now max(f x a = 4,600, m = 10,000) (-4,990,000)
#0: ToddCoxeter: because f x a < n
#0: ToddCoxeter: where: a = number_of_nodes_active() = 2,300
#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.2 | active | killed | defined
#0: ToddCoxeter: nodes | 2,300 | 112,322,334 | 112,324,634
#0: ToddCoxeter: diff 0.2.1 | +0 | +0 | +0
#0: ToddCoxeter: diff 0.2.0 | -2,300 | +2,300 | +0
#0: ToddCoxeter: | active | missing | % complete
#0: ToddCoxeter: edges | 6,900 | 0 | 100.0%
#0: ToddCoxeter: diff 0.2.1 | +0 | +0 | +0.0%
#0: ToddCoxeter: diff 0.2.0 | -6,900 | +0 | +0.0%
#0: ToddCoxeter: phase 0.2 = 730µs | run 0 = 1min8s | all runs = 1min8s | elapsed = 1min8s
++++++++++++++++++++++++++++++++
#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 | 727µs (0%) | - (0%) | - (0%) | 1min8s (100%)
#0: ToddCoxeter: phase 0.2 = 752µs | run 0 = 1min8s | all runs = 1min8s | elapsed = 1min8s
The index of the subgroup is 2300
```

:material-checkbox-marked-circle-outline: The computed index is the same as
the claimed index: $2,300$.
31 changes: 26 additions & 5 deletions docs/examples/atlas/leech-lattice/co2/index.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,31 @@
# Conway group Co~2~

> Order: $42,305,421,312,000$
On this page, we provide links to verifications that the generators of maximal
subgroups of the Conway group Co~2~ from the ATLAS generate subgroups of the
correct index.

> Presentation:
> $\langle a, b \mid a^2 = b^5 = (abb)^9 = [a, b]^4 = [a, b^2]^4 = [a, bab]^3 = [a, bab^2ab]^2 = [a, bab^{−2}]^3 = [a, b^{−2}abab^{−2}]^2 = (abab^2ab^{−1}ab^{−2})^7 = 1 \rangle$
<div class="center-table" markdown>

!!! info "Work in Progress"
| Subgroup | Subgroup order | Index in Co~2~ | Verification |
| :------- | -------------: | -------------: | :----------: |
| [$U_6(2):2$](2300.md) | $18,393,661,440$ | $2,300$ | :material-checkbox-marked-circle-outline:{ style="color: #00c853" } |
| $2^{10}:\mathrm{M}_{22}:2$ | $908,328,960$ | $46,575$ | :material-close-circle-outline:{ style="color: #f44336" } |
| $\mathrm{McL}$ | $898,128,000$ | $47,104$ | :material-close-circle-outline:{ style="color: #f44336" } |
| $2^{1+8}.S_6(2)$ | $743,178,240$ | $56,925$ | :material-help-circle-outline: |
| $\mathrm{HS}:2$ | $88,704,000$ | $476,928$ | :material-help-circle-outline: |
| $(2^4 \times 2^{1+6}).A_8$ | $41,287,680$ | $1,024,650$ | :material-help-circle-outline: |
| $U_4(3):D_8$ | $26,127,360$ | $1,619,200$ | :material-help-circle-outline: |
| $2^{4+10}.(S_5 \times S_3)$ | $11,796,480$ | $3,586,275$ | :material-help-circle-outline: |
| $\mathrm{M}_{23}$ | $10,200,960$ | $4,147,200$ | :material-help-circle-outline: |
| $3^{1+4}.2^{1+4}.S_5$ | $933,120$ | $45,337,600$ | :material-help-circle-outline: |
| $5^{1+2}:4S_4$ | $12,000$ | $3,525,451,776$ | :material-help-circle-outline: |

This page is a work in progress.
**Key**

| Symbol | Meaning |
| :----: | :------ |
| :material-checkbox-marked-circle-outline:{ style="color: #00c853" } | We could verify the index. |
| :material-close-circle-outline:{ style="color: #f44336" } | The computation did not terminate, so we were unable to verify the index. |
| :material-help-circle-outline: | We have not yet attempted the computation. |

</div>
13 changes: 10 additions & 3 deletions docs/examples/atlas/mathieu/m23/index.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
# Mathieu group M~23~

On this page, we provide links to verifications that the maximal subgroups of
the Mathieu group M~23~ define groups of the correct index. Two presentations
are given for M~23~, and two maximal subgroups have generating pairs specified.
On this page, we provide links to verifications of two presentations of the
Mathieu group M~23~, and to attempts to verify the indices of two of its maximal
subgroups.

## Presentations

- [Presentation 1](p1.md)
:material-checkbox-marked-circle-outline:{ style="color: #00c853" }
- [Presentation 2](p2.md)
:material-checkbox-marked-circle-outline:{ style="color: #00c853" }

## Maximal subgroups

Expand Down
Loading