Skip to content

Janko group J2, Hall–Janko group HJ (Presentation 1)

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

Claim

\[ \mathrm{J}_2 = \langle a,b \mid a^{2} = b^{3} = (ab)^{7} = [a,b]^{12} = (ababab^{-1}abab^{-1}ab^{-1} ababab^{-1}ab^{-1}abab^{-1})^{3} = 1 \rangle \]

with

\[ |\mathrm{J}_2| = 604,800. \]

On this page, we verify that the above claimed presentation of the Janko group J2 defines a group of order \(604,800\).

The code

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

The code below took about 3.25 seconds to run on a 2024 MacBook Pro M4 with 48GB of RAM:

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)^7"), "")
presentation.add_rule(p, parse_relations("(a,b)^12"), "")
presentation.add_rule(p, parse_relations("(ababaBabaBaBababaBaBabaB)^3"), "")

presentation.balance(p, "abAB", "ABab")
presentation.replace_subword(p, "A", "a")
presentation.replace_subword(p, "B", "bb")
p.alphabet("ab")

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

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

The output

The output of the enumeration is below:

Output from the Python script
#0: ToddCoxeter: RUN 0 START (strategy() = felsch)
#0: ToddCoxeter: |A| = 2, |R| = 9, |u| + |v| ∈ [2, 90], ∑(|u| + |v|) = 184
++++++++++++++++++++++++++++++++
#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 |               2 |           0.0%
#0: ToddCoxeter: time             | run 0 = 28µs | all runs = 28µs | elapsed = 70µs
++++++++++++++++++++++++++++++++
#1: ToddCoxeter: FELSCH 0.0.1       |         active |            killed |          defined
#1: ToddCoxeter: nodes              |        733,508 |            29,013 |          762,536
#1: ToddCoxeter: diff 0.0.0         |       +733,507 |           +29,013 |         +762,535
#1: ToddCoxeter:                    |         active |           missing |       % complete
#1: ToddCoxeter: edges              |      1,337,701 |           129,315 |            91.2%
#1: ToddCoxeter: diff 0.0.0         |     +1,337,701 |          +129,313 |           +91.2%
#1: ToddCoxeter: phase 0.0 = 1.001s | run 0 = 1.001s | all runs = 1.001s | elapsed = 1.001s
++++++++++++++++++++++++++++++++
#1: ToddCoxeter: FELSCH 0.0.2       |         active |            killed |          defined
#1: ToddCoxeter: nodes              |        534,945 |           533,309 |        1,068,260
#1: ToddCoxeter: diff 0.0.1         |       -198,563 |          +504,296 |         +305,724
#1: ToddCoxeter: diff 0.0.0         |       +534,944 |          +533,309 |       +1,068,259
#1: ToddCoxeter:                    |         active |           missing |       % complete
#1: ToddCoxeter: edges              |      1,044,193 |            25,697 |            97.6%
#1: ToddCoxeter: diff 0.0.1         |       -293,508 |          -103,618 |            +6.4%
#1: ToddCoxeter: diff 0.0.0         |     +1,044,193 |           +25,695 |           +97.6%
#1: ToddCoxeter: phase 0.0 = 2.003s | run 0 = 2.003s | all runs = 2.003s | elapsed = 2.003s
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: FELSCH 0.0 STOP
#0: ToddCoxeter: FELSCH 0.0.3       |         active |            killed |          defined
#0: ToddCoxeter: nodes              |        604,800 |           538,867 |        1,143,667
#0: ToddCoxeter: diff 0.0.2         |        +69,855 |            +5,558 |          +75,407
#0: ToddCoxeter: diff 0.0.0         |       +604,799 |          +538,867 |       +1,143,666
#0: ToddCoxeter:                    |         active |           missing |       % complete
#0: ToddCoxeter: edges              |      1,209,600 |                 0 |           100.0%
#0: ToddCoxeter: diff 0.0.2         |       +165,407 |           -25,697 |            +2.4%
#0: ToddCoxeter: diff 0.0.0         |     +1,209,600 |                -2 |          +100.0%
#0: ToddCoxeter: phase 0.0 = 3.007s | run 0 = 3.007s | all runs = 3.007s | elapsed = 3.007s
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: LOOKAHEAD 0.1 START (lookahead_extent() = full, lookahead_style() = hlt)
#0: ToddCoxeter: LOOKAHEAD 0.1.0  |         active |            killed |          defined
#0: ToddCoxeter: nodes            |        604,800 |           538,867 |        1,143,667
#0: ToddCoxeter:                  |         active |           missing |       % complete
#0: ToddCoxeter: edges            |      1,209,600 |                 0 |           100.0%
#0: ToddCoxeter: time             | run 0 = 3.007s | all runs = 3.007s | elapsed = 3.007s
#0: ToddCoxeter: triggered because there are skipped definitions (604,800 active nodes)!
++++++++++++++++++++++++++++++++
#1: ToddCoxeter: LOOKAHEAD 0.1.1    |         active |            killed |          defined
#1: ToddCoxeter: nodes              |        604,800 |           538,867 |        1,143,667
#1: ToddCoxeter: diff 0.1.0         |             +0 |                +0 |               +0
#1: ToddCoxeter:                    |         active |           missing |       % complete
#1: ToddCoxeter: edges              |      1,209,600 |                 0 |           100.0%
#1: ToddCoxeter: diff 0.1.0         |             +0 |                +0 |            +0.0%
#1: ToddCoxeter: phase 0.1 = 549µs  | run 0 = 3.008s | all runs = 3.008s | elapsed = 3.008s
#1: ToddCoxeter: lookahead progress |          ~0.1%
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: LOOKAHEAD 0.1 STOP
#0: ToddCoxeter: LOOKAHEAD 0.1.2   |         active |            killed |          defined
#0: ToddCoxeter: nodes             |        604,800 |           538,867 |        1,143,667
#0: ToddCoxeter: diff 0.1.1        |             +0 |                +0 |               +0
#0: ToddCoxeter: diff 0.1.0        |             +0 |                +0 |               +0
#0: ToddCoxeter:                   |         active |           missing |       % complete
#0: ToddCoxeter: edges             |      1,209,600 |                 0 |           100.0%
#0: ToddCoxeter: diff 0.1.1        |             +0 |                +0 |            +0.0%
#0: ToddCoxeter: diff 0.1.0        |             +0 |                +0 |            +0.0%
#0: ToddCoxeter: phase 0.1 = 296ms | run 0 = 3.303s | all runs = 3.303s | elapsed = 3.303s
#0: ToddCoxeter: lookahead_next() is now max(f x a = 1,209,600, m = 10,000) (-3,790,400)
#0: ToddCoxeter: because f x a < n
#0: ToddCoxeter: where:  a = number_of_nodes_active()     = 604,800
#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.3      |         active |            killed |          defined
#0: ToddCoxeter: nodes             |        604,800 |           538,867 |        1,143,667
#0: ToddCoxeter: diff 0.2.2        |             +0 |                +0 |               +0
#0: ToddCoxeter: diff 0.2.0        |             +0 |                +0 |               +0
#0: ToddCoxeter:                   |         active |           missing |       % complete
#0: ToddCoxeter: edges             |      1,209,600 |                 0 |           100.0%
#0: ToddCoxeter: diff 0.2.2        |             +0 |                +0 |            +0.0%
#0: ToddCoxeter: diff 0.2.0        |             +0 |                +0 |            +0.0%
#0: ToddCoxeter: phase 0.2 = 296ms | run 0 = 3.303s | all runs = 3.303s | elapsed = 3.303s
++++++++++++++++++++++++++++++++
#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 |     296ms (9%) |            - (0%) |           - (0%) | 3.007s (91%)
#0: ToddCoxeter: phase 0.2 = 298ms    | run 0 = 3.305s | all runs = 3.305s | elapsed = 3.305s
The size of the group is 604800

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