Skip to content

Janko group J1

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

Claim

\[ \mathrm{J}_1 = \langle a, b \mid a^2 = b^3 = (ab)^7 = (ab(abab^{−1})^3)^5 = (ab(abab^{−1})^6abab(ab^{−1})^2)^2 = 1 \rangle \]

with

\[ |\mathrm{J}_1| = 175,560. \]

On this page, we verify that the above claimed presentation of the Janko group J1 defines a group of order \(175,560\).

The code

In libsemigroups_pybind11, the following script constructs the presentation for J1 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)^7"), "")
presentation.add_rule(p, parse_relations("(ab(abaB)^3)^5"), "")
presentation.add_rule(p, parse_relations("(ab(abaB)^6abab(aB)^2)^2"), "")

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

Running the above script produces the following output:

Output from the Python script
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: RUN 0 START (strategy() = felsch)
#0: ToddCoxeter: |A| = 2, |R| = 9, |u| + |v| ∈ [2, 87], ∑(|u| + |v|) = 206
++++++++++++++++++++++++++++++++
#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 = 33µs | all runs = 33µs | elapsed = 99µs
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: FELSCH 0.0 STOP
#0: ToddCoxeter: FELSCH 0.0.1      |        active |           killed |         defined
#0: ToddCoxeter: nodes             |       175,560 |          263,717 |         439,277
#0: ToddCoxeter: diff 0.0.0        |      +175,559 |         +263,717 |        +439,276
#0: ToddCoxeter:                   |        active |          missing |      % complete
#0: ToddCoxeter: edges             |       351,120 |                0 |          100.0%
#0: ToddCoxeter: diff 0.0.0        |      +351,120 |               -2 |         +100.0%
#0: ToddCoxeter: phase 0.0 = 815ms | run 0 = 815ms | all runs = 815ms | elapsed = 815ms
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: LOOKAHEAD 0.1 START (lookahead_extent() = full, lookahead_style() = hlt)
#0: ToddCoxeter: LOOKAHEAD 0.1.0  |        active |           killed |         defined
#0: ToddCoxeter: nodes            |       175,560 |          263,717 |         439,277
#0: ToddCoxeter:                  |        active |          missing |      % complete
#0: ToddCoxeter: edges            |       351,120 |                0 |          100.0%
#0: ToddCoxeter: time             | run 0 = 815ms | all runs = 815ms | elapsed = 815ms
#0: ToddCoxeter: triggered because there are skipped definitions (175,560 active nodes)!
++++++++++++++++++++++++++++++++
#0: ToddCoxeter: LOOKAHEAD 0.1 STOP
#0: ToddCoxeter: LOOKAHEAD 0.1.1   |        active |           killed |         defined
#0: ToddCoxeter: nodes             |       175,560 |          263,717 |         439,277
#0: ToddCoxeter: diff 0.1.0        |            +0 |               +0 |              +0
#0: ToddCoxeter:                   |        active |          missing |      % complete
#0: ToddCoxeter: edges             |       351,120 |                0 |          100.0%
#0: ToddCoxeter: diff 0.1.0        |            +0 |               +0 |           +0.0%
#0: ToddCoxeter: phase 0.1 = 111ms | run 0 = 926ms | all runs = 926ms | elapsed = 926ms
#0: ToddCoxeter: lookahead_next() is now max(f x a = 351,120, m = 10,000) (-4,648,880)
#0: ToddCoxeter: because f x a < n
#0: ToddCoxeter: where:  a = number_of_nodes_active()     = 175,560
#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             |       175,560 |          263,717 |         439,277
#0: ToddCoxeter: diff 0.2.1        |            +0 |               +0 |              +0
#0: ToddCoxeter: diff 0.2.0        |            +0 |               +0 |              +0
#0: ToddCoxeter:                   |        active |          missing |      % complete
#0: ToddCoxeter: edges             |       351,120 |                0 |          100.0%
#0: ToddCoxeter: diff 0.2.1        |            +0 |               +0 |           +0.0%
#0: ToddCoxeter: diff 0.2.0        |            +0 |               +0 |           +0.0%
#0: ToddCoxeter: phase 0.2 = 111ms | run 0 = 926ms | all runs = 926ms | elapsed = 926ms
++++++++++++++++++++++++++++++++
#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 |   111ms (12%) |           - (0%) |          - (0%) |  815ms (88%)
#0: ToddCoxeter: phase 0.2 = 112ms    | run 0 = 927ms | all runs = 927ms | elapsed = 927ms
The size of the group is 175560

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