cert-machine · a classification by an AI, decided twice

The ten minimum universal sets of MacMahon cubes: a classification decided twice

A MacMahon cube is coloured with six colours, one per side; thirty varieties exist up to rotation. A collection is universal when, for every variety, eight of its cubes assemble into a 2×2×2 model with that variety's exterior. Haraguchi proved twelve cubes are the minimum; Johnson and Roldán conjectured in 2024 that exactly ten collections attain it. On 1 November 2026 Jason Davies published a proof, written by GPT-6 Astra and checked in Lean 4, with the witnesses and the search released. It was decided here twice, at commit d8856c97e43e…, with no code shared with the claimant: the sufficiency half from the 300 released constructions with our own geometry, and the whole classification through two independent kernels. The gaps come first.

Published, not peer-reviewed. The theorems are the kernel's: the lane below re-checks the build, that the ten stated theorems are the proved ones, and the axioms, under Lean's kernel and nanoda; the mathematics beyond what a kernel checks is not claimed here. The sufficiency check uses the claimant's table of thirty colourings as the labelling convention, after deciding that it lists every variety exactly once; everything else in it is ours. The claimant was told after this page was built.

tl;dr
  • The finding. The classification holds, twice over. Every one of the 300 released constructions builds its target under our rotations and slots, the ten witnessed sets are exactly the ten two-triangle sets, and the label table lists all 30 varieties once (sufficiency, from the bytes). The repository at the commit the Palomar registry names builds with its own toolchain, Comparator finds each of the ten theorems stating what the Mathlib-only challenge states, both kernels accept the proofs, and our own axiom report names nothing beyond propext, Classical.choice and Quot.sound (the whole theorem, through the kernels). The statement reads as the paper's Theorem 1.
  • The mechanism. Our own 24 proper rotations from signed axis permutations of determinant +1, our own eight corner slots, a perfect matching of cubes to slots searched here; the claimant's rotation indices, slot order, verifier and search ignored or read, never run. Then leanprover/comparator v4.35.0 with nanoda switched on, on the configuration the repository ships, on a hosted runner; the axioms printed from our file.
  • Check it. python3 instruments/macmahon/check.py --check re-derives the sufficiency record from the pinned witnesses; node tools/record-macmahon-kernel.js --check re-reads the kernel record from the run's artifact; gh workflow run macmahon-kernel.yml runs the lane again.
constructions built
300 of 300
ten sets × thirty targets, each a perfect matching under our 24 rotations and 8 slots
varieties in the table
30 of 30
six distinct colours each; pairwise inequivalent under rotation; every class once
minimum sets
10
the ten partitions of six labels into two triples, exactly
theorems through two kernels
10
Lean default kernel accepts the solution; nanoda kernel accepts the solution; axioms the three standard ones
red controls
3
a cube from outside the set, a target with two faces exchanged, reflections admitted: each refused
§1 · the gaps

What is taken on the paper's word, and what is not decided here

gapstatuswhere it is decided, if anywhere
The physical cubes are modelled discretely: six face directions, rotations as signed-axis permutations of determinant +1, a model's exterior as the outward faces of eight corner slots. That this is what "building a 2×2×2 model, exteriors only" means is the paper's declaration, and the reader's.read, not decidedthe challenge's own theorems certify the tables against that model (proper_rotation_iff, exposed_face_rule); the model itself is a convention
The necessity half — no other 12-multiset and no 11-multiset is universal — rests on the Lean proof: here it is decided through two kernels, not by an independent search.decided by the kernel lane onlycerts/macmahon-kernel.json (an independent exhaustive search is the stage not run)
The Palomar registry entry names commit d8856c9; the repository's HEAD on 3 November is one commit later, changing only the paper's date, its PDF and a figure script.readcorpus/macmahon/PINS.json: every Lean and configuration file identical at both commits
Priority beyond the cited sources is not established by the claimant (formalization.yaml says so) and not examined here.not examined—
§2 · the claim

Thirty cubes, twelve at a time

Conway's tableau names each variety by an ordered pair of distinct labels from A to F; the labels are not colours. The claim: a collection of twelve cubes is universal exactly when it is one copy of each variety whose two labels lie in the same triple of a partition of the six labels into two triples — the two disjoint triangles below — and there are ten such partitions, so ten minimum collections, none with a repeated variety, even when repeats are allowed.

A B C D E F ABC | DEF A B C D E F ABD | CEF A B C D E F ABE | CDF A B C D E F ABF | CDE A B C D E F ACD | BEF A B C D E F ACE | BDF A B C D E F ACF | BDE A B C D E F ADE | BCF A B C D E F ADF | BCE A B C D E F AEF | BCD each triangle: the six varieties whose two tableau labels both lie in that triple; twelve cubes, every variety buildable
The ten minimum universal collections, one per partition of the six labels into two triples. Each triangle stands for the six ordered pairs inside its triple; the twelve cubes build every one of the thirty varieties.Record: certs/macmahon-witnesses.json · sha256 4627cdbad9d0The build refuses this figure if the ten witnessed sets are no longer the ten two-triangle sets, or a construction fails to build its target.
§3 · sufficiency, from the bytes

The 300 released constructions, re-decided with our own geometry

The claimant releases, for each of the ten sets and each of the thirty targets, the eight cubes used. instruments/macmahon/check.py (standard library) ignores his rotation indices and slot order: it builds the 24 proper rotations from the signed axis permutations of determinant +1, the eight corner slots as the sign patterns of three axes, and asks whether the eight cubes admit rotations and a one-to-one assignment to slots with every exposed face the target's colour, by a backtracking match. First it decides that the label table is a table of all thirty varieties: six distinct colours on every entry, thirty rotation classes, the same thirty as the 720 colourings of a cube give.

factdecidedword
T1 · the label table30 labelled colourings; 30 rotation classes, equal to the 30 classes of all colouringsCERTIFIED
T2 · the ten sets10 witnessed sets, 10 distinct, 10 two-triangle sets of the 10 partitionsCERTIFIED
T3 · the constructions300 of 300 build their targetCERTIFIED

Red controls. a witness with one cube swapped for a cube outside the set is NOT built (fired). the same eight cubes against the target with two faces exchanged are NOT built (fired). a rotation table that admits reflections (48 maps) merges the 30 varieties into 15, so T1 would fail under it (fired).

§4 · the kernel lane

The ten theorems, under two kernels

The repository ships a Comparator challenge: Challenge.lean states the ten theorems with sorry and imports only Mathlib; Solution.lean proves them. On a hosted runner (.github/workflows/macmahon-kernel.yml, run 41729708954) the repository at d8856c97e43e… was built with its own toolchain (Lean v4.35.0, Mathlib v4.35.0; cache 116 s, build 207 s) and audited by leanprover/comparator v4.35.0 with nanoda on, in 347 s. Comparator checks that each named theorem states exactly what the challenge states and replays the proofs; then #print axioms of the ten, from our own file.

theoremaxioms (our report)
minimum_sizeClassical.choice, Quot.sound, propext
physical_minimumClassical.choice, Quot.sound, propext
physical_exactly_tenClassical.choice, Quot.sound, propext
physical_iff_two_trianglesClassical.choice, Quot.sound, propext
physical_minimum_has_no_repeatsClassical.choice, Quot.sound, propext
proper_rotation_iffClassical.choice, Quot.sound, propext
exposed_face_rulepropext
face_colours_validClassical.choice, Quot.sound, propext
face_assignment_coverageClassical.choice, Quot.sound, propext
face_assignment_uniqueClassical.choice, Quot.sound, propext

What the kernels said. Lean default kernel accepts the solution; nanoda kernel accepts the solution; Comparator: each of the ten named theorems states what Challenge.lean states, uses only the permitted axioms, and its proof replays through Lean's kernel and through nanoda; our own #print axioms names only propext, Classical.choice, Quot.sound (exposed_face_rule: propext alone).

§5 · the statement, read

Does the Lean statement say what the paper says?

Challenge.lean (imports only Mathlib) read against the paper's Theorem 1 ("The minimum size of a universal collection is twelve. Exactly ten labelled collections attain that size, even when repeated varieties are permitted. Each unordered partition of the six labels into triples gives one; these are all; none has repeats.") — a reading, not a decision. Word: MATCHES.

§6 · what is claimed, and what is not

The limits

contact

Write to Carlos

Sent by Web3Forms to Carlos’s inbox; nothing stored here.

Or write to carlos@carlostoledo.co, or open the public pilot form on GitHub.