A terrace for every non-abelian group of order 256 and 384

76,325 witness records, a verifier that needs nothing but Python 3, and the logs of both checks run on the released files.

DOI 10.5281/zenodo.22785373 · repository · CC0 1.0 · dataset, 16 Sep 2026 · ORCID 0009-0005-0419-4070
Every non-abelian group of order 256 (56,070 of them) and of order 384 (20,154) has an explicit terrace here. Orders 256 and 384 were the two cases left open by Theorem 32(vi) of Ollis's dynamic survey; combined with that survey, every non-abelian group of order at most 511 is terraced.

What a terrace is

Let G be a finite group of order n with identity e. Order all its elements as a_1, …, a_n with a_1 = e, and form the n−1 differences b_i = (a_i)⁻¹ a_{i+1}. The ordering is a terrace when every element that is its own inverse occurs exactly once among the differences, and every other element occurs together with its inverse exactly twice in total. Bailey's conjecture, as the survey states it, is that every finite group is terraced except the elementary abelian 2-groups of order at least 4.

What is deposited

ordergroups in GAP's libraryabeliancovered here
25656,0922256,070
38420,1691520,154

One gzipped JSON object per record: the group as generator permutations with their relative orders, and the terrace as a list of element indices. 101 groups of order 384 carry two terraces, so there are 76,325 records for 76,224 groups. About 57 MB in total.

Checking it yourself

git clone https://github.com/SeverinVisionary/bailey-terraces-256-384
cd bailey-terraces-256-384
sh run_all.sh        # a few hours; Python 3 standard library only

Four checks, stopping at the first that is not exactly as expected: the files match their checksums; every record is a terrace of a genuine group of the stated order; nine deliberately wrong records are all rejected; and every non-abelian id of each order is present, counted against the library size minus the abelian groups. A fifth check needs GAP and confirms that each record's group really is the SmallGroup its id names:

python3 scripts/export_for_gap.py
gap -q scripts/check_ids.g

Both were run on the released files. Their unedited logs ship with the data, each headed by the SHA-256 of every file it read: 76,325 / 76,325 records verified, and 76,325 / 76,325 ids confirmed with 0 mismatches.

What it does not establish