← Die Gesetze
Existence ·2026-07-09 00:00 UTC

Steiner systems S(2,8,225) and S(2,9,289) exist: the printed difference families in ℤ₃×ℤ₃×ℤ₅×ℤ₅ and ℤ₁₇×ℤ₁₇ each hit every nonzero group element exactly once among their within-block differences, so each develops to its Steiner system — resolving two of the 129 undecided Handbook cases (Hetman 2026)

Existence ·combinatorial design theory ·amplified ·kernel-decided

Enuntiatio — the claim

Steiner systems S(2,8,225) and S(2,9,289) exist: the printed difference families in ℤ₃×ℤ₃×ℤ₅×ℤ₅ and ℤ₁₇×ℤ₁₇ each hit every nonzero group element exactly once among their within-block differences, so each develops to its Steiner system — resolving two of the 129 undecided Handbook cases (Hetman 2026)

Refuted by a repeated, zero, or missing within-block difference — i.e. the 224 (resp. 288) differences of blocks8 (resp. blocks9) failing to be exactly the nonzero elements of the group, once each

Expressio — the formal statement

/-
  Steiner systems S(2,8,225) and S(2,9,289) exist — kernel-attested. Independent confirmation of Hetman (2026),
  arXiv:2509.10673, resolving two of the 129 undecided cases in the Handbook of Combinatorial Designs. Each
  system is an explicit difference family: base blocks in an abelian group, developed by translation. A family
  is a (v,k,1)-difference family — hence develops to a Steiner 2-(v,k,1) design — iff the nonzero differences
  b−b′ within the base blocks hit every nonzero group element exactly once. `mods` gives the cyclic factors;
  `blocks` are the base blocks as points (component tuples). The kernel computes all k(k−1) differences per
  block and decides they are pairwise DISTINCT, all NONZERO, and number exactly v−1 — so (there being exactly
  v−1 nonzero elements) they are precisely the nonzero elements, once each.

    • steiner_S8_225 : ℤ₃×ℤ₃×ℤ₅×ℤ₅, 4 blocks of size 8 → 224 differences = all 224 nonzero elements.
    • steiner_S9_289 : ℤ₁₇×ℤ₁₇, 4 blocks of size 9 → 288 differences = all 288 nonzero elements.

  Plain `decide` — no `native_decide`, no `sorry`. Report-only.
-/
set_option maxHeartbeats 0
set_option maxRecDepth 1000000

def subm : List Int → List Int → List Int → List Int
  | m :: ms, a :: as, b :: bs => ((a - b) % m) :: subm ms as bs
  | _, _, _ => []

def isNonzero (v : List Int) : Bool := v.any (fun x => x != 0)

def blockDiffs (mods : List Int) (B : List (List Int)) : List (List Int) :=
  B.flatMap (fun a => B.filterMap (fun b => if a == b then none else some (subm mods a b)))

def allDiffs (mods : List Int) (blocks : List (List (List Int))) : List (List Int) :=
  blocks.flatMap (blockDiffs mods)

def isDiffFamily (mods : List Int) (blocks : List (List (List Int))) (vm1 : Nat) : Bool :=
  let ds := allDiffs mods blocks
  (ds.length == vm1) && (ds.all isNonzero) && ds.Nodup

def mods8 : List Int := [3, 3, 5, 5]
def blocks8 : List (List (List Int)) := [[[0, 0, 0, 0], [0, 0, 0, 1], [0, 1, 0, 3], [1, 0, 0, 3], [1, 2, 1, 0], [1, 2, 4, 1], [2, 1, 1, 2], [2, 1, 4, 4]], [[0, 0, 0, 0], [0, 0, 0, 2], [0, 1, 2, 1], [0, 1, 3, 1], [0, 2, 2, 2], [0, 2, 3, 0], [2, 1, 0, 1], [2, 2, 0, 1]], [[0, 0, 0, 0], [0, 0, 1, 1], [1, 0, 0, 1], [1, 0, 1, 0], [1, 2, 3, 3], [2, 0, 2, 3], [2, 0, 4, 3], [2, 2, 3, 3]], [[0, 0, 0, 0], [0, 0, 1, 2], [1, 0, 3, 1], [1, 1, 2, 0], [1, 1, 4, 2], [2, 1, 3, 1], [2, 2, 2, 3], [2, 2, 4, 4]]]
def mods9 : List Int := [17, 17]
def blocks9 : List (List (List Int)) := [[[0, 0], [0, 1], [0, 3], [1, 3], [2, 2], [3, 3], [4, 10], [6, 16], [10, 14]], [[0, 0], [0, 4], [0, 9], [1, 15], [5, 9], [9, 13], [10, 8], [11, 16], [13, 9]], [[0, 0], [0, 6], [2, 15], [3, 11], [5, 8], [10, 9], [11, 14], [13, 1], [14, 11]], [[0, 0], [0, 7], [1, 4], [3, 15], [5, 10], [6, 2], [8, 9], [10, 5], [12, 10]]]

theorem steiner_S8_225 : isDiffFamily mods8 blocks8 224 = true := by decide

theorem steiner_S9_289 : isDiffFamily mods9 blocks9 288 = true := by decide

#print axioms steiner_S8_225
#print axioms steiner_S9_289

theorem steiner_s8_225_s9_289 : (isDiffFamily mods8 blocks8 224 = true) ∧ (isDiffFamily mods9 blocks9 288 = true)

Figura — drawn from the certified data

The four base blocks of the S(2,8,225) difference family in ℤ₃×ℤ₃×ℤ₅×ℤ₅, one color per block on a 15×15 grid ((a,b,c,d) ↦ row 5a+c, col 5b+d); the shared origin in ink. The kernel decided their 224 within-block differences are exactly the nonzero group elements, once each — so the family develops to a Steiner system S(2,8,225). — scripts/figures/gen_steiner_figures.py (from docs/crt/steiner_designs.lean)
The four base blocks of the S(2,9,289) difference family in ℤ₁₇×ℤ₁₇, one color per block on the 17×17 grid; the shared origin in ink. The kernel decided their 288 within-block differences are exactly the nonzero group elements, once each — so the family develops to a Steiner system S(2,9,289). — scripts/figures/gen_steiner_figures.py (from docs/crt/steiner_designs.lean)

Demonstratio — the kernel-checked proof

by decide

Provenance

Q.E.D. kernel verified: true
Die Rechenmaschine — the stepped reckoner