BB(6) hunt
Machines / #24

1RB0RE_1LC0RA_1LD0LB_1LA1LF_1LE1RA_0LC---

#24local proof 8Kill claimedSkelet 1-like Class 2bbchallenge ↗Explorerparent: #3

How we proved it never halts

#3's proof in a mirror, from a different start

#3 counts a binary number down on a list of pairs of blocks, like an odometer running backward, and its proof is a checklist of inequalities showing that a block only ever runs out where that is harmless. This machine is #3's table seen in a mirror, with left and right swapped and the state letters renamed, started in the state that is #3's D. Watching it is like watching #3 in a mirror: the same countdown, with the head working at the right end of the tape.

What is new is the opening. After 78,911 steps the run reaches the mirror image of the checkpoint #3's argument starts from (#3 gets there after 78,710 steps), except that the last pair has 25 copies of 01 instead of 24, which the checklist allows. From there #3's argument (the nine moves and the checklist, none of which depends on the start) applies unchanged, so it never halts. As far as the two runs have been simulated side by side, they then make the same move every time, with the one extra copy moving around among the blocks at the far end; the proof does not need this.

The Rocq file contains #3's whole proof for #3's own table and adds the 78,911-step opening from state D. It then checks that this table, mirrored and renamed, is exactly #3's, and uses two busycoq theorems (mirroring a machine or renaming its states does not change whether it halts) to carry the result over.

#8local proof number
1,364lines of Rocq
40 sto compile
6/6automatic checks
space-time diagram, first 10,000 steps from blank
The first 10,000 steps from a blank tape. Time runs down; white is 1.
About this picture

The standard picture (bbchallenge.org's Default view): each row is the whole tape at one step, time runs downward, and the head's path draws the pattern.

bbchallenge-defaultStart blankRows steps 0 → 10,000, top to bottomWindow cells −200..199, left to rightColors 1 0 or unvisited

Overview

In one sentence

#3's table, mirrored, with a different start. Flip every direction (L↔R) and rename the states by φ: A→D, B→A, C→B, D→C, E→E, F→F, and you get #3's table, all 12 entries. φ is the only one of the 720 × 2 maps that does this. The twin starts in A, and φ(A) = D, so it is #3's machine run from 0^inf D> 0^inf: a different orbit of the same macro map. (submission/README.md, Mechanism)

Upstream
Kill claimed · PR #15merged 2026-10-13 12:25 UTC by ccz181078 · Sk1Class2_v1.v · TM4 · on Submissions →
Rocq proof
check_kill PASS · first Oct 10 10:21
1,364 lines · 65 KB .v · compile 39.9 s · coqchk pass · 0 axioms · PASS Oct 10 10:21 (re-run Oct 10 17:29) · from #3
· the .v file
Automatic review
6 of 6 checks passtemplate: #3's kill file (kill 4) (twin: parent kill's .v) · details in Proof →
Class
Skelet 1-like Class 2
On the list
not on BB6_holdouts_663.txt (line 586 of the previous list) · historical 740 line 586
#24eqv ×1sim 1e15
Derived from
1RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB---#3 Kill claimed

Mechanism

What to check here: the pictures show the mechanism that the rule table describes.

No observation of its own: twin of #3: #3's table mirrored and renamed, different start state, nearly identical run. Below are #3's figures, rules and history. #3's Checkpoint A questions (3) are on its page.

Figures

Fig 1 · One row per decrement, every 4th cell✓ Q1✓ Q2

One row per counter decrement, every 4th cell drawn. Watch the vertical and slanted colour edges, and where they kink.

One row per decrement, every 4th cell
bbchallenge-defaultStart blankRows one per counter decrementWindow cells -7,305..132, 1 px = 4 cellsColors 1 0 on the drawn cells head
Rows: each time A reaches a new left edge with the tape reading (10)^h 11001... (902 rows, steps 8..9,982,476); not evenly spaced in time · Window: only every 4th cell is drawn; all drawn cells are odd · Colors: The tape is 1010..; almost everywhere, so each band is one phase of it and each colour edge is a pair boundary: vertical edge = digit block (fixed), slanted edge = (10)|(01) split (moves 2 cells per borrow)
Fig 2 · Three decrements up close, every step✓ Q3

Every step from counter value 12. Compare how far each long sweep reaches over three decrements.

Three decrements up close, every step
bbchallenge-exploreStart constructed tape (below)Rows every step, 0..1,676 (1 step = 2 px tall)Window cells -24..151, 1 px = 0.5 cellsColors 0 1
Start: 0∞ <A (10)10 11001 (10)12 (01)9 0010 (10)6 (01)7 0010 (10)5 (01)6 0001 (10)4 (01)6 0001 0∞ · counter value 12 · Window: 1 cell = 2 px · Colors: head cell coloured by state: A red, B orange, C blue, D green, E magenta, F cyan
Fig 3 · Every cell across two re-pairs, annotated✓ Q1✓ Q2viewer ↗

The top-right corner of Fig 1, every cell drawn. Follow purple blocks and blue/orange borders down the rows.

Every cell across two re-pairs, annotated
customStart blankRows one per counter decrementWindow cells -152..47, 1 px = 1/3 cellColors 1 0 (10)-run of a pair (01)-run of a pair digit block (10)^h run at the left end marker 11001 tail head dashes: old (10)|(01) border carried down across a re-pair band dots: middle of an old digit block carried down the same way
Rows: each time A reaches a new left edge with the tape reading (10)^h 11001... (22 rows, steps 4,610..24,668, which are rows 11-32 of Fig 1); not evenly spaced in time; a yellow band marks each re-pair · Window: (1 cell = 3 px wide, 1 row = 14 px tall); from step 8,963 on, the (10)^h run at the left end continues past the left edge · Colors: Both lines run only across the yellow bands, never over a cell; The tints are translucent over the raw cells and come from parsing each row; every row parses completely; The inset magnifies the red box; the viewer can hide the tints
More figures (3)Fig 4–6: Blaze (speed mode), 100M steps · Snapshot every 1M steps, to 1 billion · bbchallenge default view, first 10,000 steps
Fig 4 · Blaze (speed mode), 100M steps

Sampling every 16th cell turns the pair list into orange/white bands; band edges are pair boundaries.

Blaze (speed mode), 100M steps
bbchallenge-blazeStart blankRows one snapshot every 131,072 stepsWindow cells -21,952..159, 1 px = 27.6 cellsColors 1 0 at the sampled cell
Rows: (763 rows, steps 0..1e8), stretched to 500 px (Blaze speed mode) · Window: one sampled cell per px; samples are every 16th cell · Colors: Sampling every 16th cell turns the 1010..; tape into solid bands, so each colour edge is a pair boundary; thin horizontal streaks = snapshots caught mid-sweep (a stretch shifted by one cell)
Fig 5 · Snapshot every 1M steps, to 1 billion

The same band picture out to 1e9 steps; the left edge grows like sqrt(t).

Snapshot every 1M steps, to 1 billion
bbchallenge-defaultStart blankRows every 1,000,000 stepsWindow cells -67,161..181, 1 px = 16 cellsColors 1 0 on the drawn cells head
Rows: (1,001 rows, steps 0..1,000,000,000): big jumps between rows · Window: only every 16th cell is drawn; all drawn cells are odd · Colors: Sampling every 16th cell turns the 1010..; tape into solid bands, so each colour edge is a pair boundary; thin horizontal streaks = rows caught mid-sweep (a stretch shifted by one cell)
Fig 6 · bbchallenge default view, first 10,000 stepsviewer ↗

The site's view: the tape grows mainly to the left; the right end barely moves.

bbchallenge default view, first 10,000 steps
bbchallenge-defaultStart blankRows 10,000 steps squeezed into 500 px rowsWindow cells -200..199, 1 px = 1 cellColors 1 0 or never visited head after a right/left move
Rows: 1 px row = 20 steps; the site blends steps 20y+9 and 20y+10
Rules (6/6 validated)exact tape rewrites the proof will formalize, each re-checked by simulation
rulefrom ⟶ tocasesstepschecked
Dec
0∞ <A (10)h 11001 Π_{i<k}[(10)a_i (01)b_i+1 0010] (10)p (01)q+1 0001 R
⟶ 0∞ <A (10)h+4 11001 Π_{i<k}[(10)a_i+1 (01)b_i 0001] (10)p+1 (01)q 0010 R
k=0..L-1 (borrow chain); b_i>=1, q>=1; any h mod 4; R = remaining pairs + any tail—✓48/48
DecMerge
0∞ <A (10)h 11001 Π_{i<k}[(10)a_i (01)b_i+1 0010] (10)p (01) 0001 (10)p2 (01)q2 s R
⟶ 0∞ <A (10)h+4 11001 Π_{i<k}[(10)a_i+1 (01)b_i 0001] (10)p+p2+3 (01)q2 s R
q hits 0 on a 1->0 digit: fuse with next pair; last pair fuses into tail: (10)^p (01) 0001 (10)^t 1 -> (10)^(p+t+3) 1—✓36/36
End
0∞ <A (10)h 11001 Π_{i<L}[(10)a_i (01)b_i+1 0010] (10)p (01)q+1 0010 0∞
⟶ 0∞ <A (10)h+4 11001 Π_{i<L}[(10)a_i+1 (01)b_i 0001] (10)p+1 (01)q 0010 101 0∞
all digits 0, no tail; b_i>=1, q>=1. q=0 (EndLast): last pair becomes tail (10)^(p+4) 1, validated 36/36—✓36/36
Ov
0∞ <A (10)h 11001 (10)a_1+1 (01)b_1 0010 Π_{j=2..L}[(10)a_j (01)b_j 0010] (10)t 1 0∞
⟶ 0∞ <A (10)2 11001 (10)h+5 (01)a_1 0010 Π_{j<L}[(10)b_j (01)a_(j+1) 0001] (10)b_L (01)t+1 0001 0∞
all digits 0, tail present; a_1>=1; new counter value 2^(L+1)-2—✓36/36
X1
0∞ <A (10)h 11001 (10)a_1+1 (01)b_1 0010 Π_{j=2..L-2}[(10)a_j (01)b_j 0010] (10)a (01) 0010 (10)b (01) 0010 0∞
⟶ 0∞ <A (10)2 11001 (10)h+5 (01)a_1 0010 Π_{j<L-2}[(10)b_j (01)a_(j+1) 0001] (10)b_(L-2) (01)a 0010 (101)2 (01)b+3 0∞
End with the last two q = 1 (seen once, step 251,973,021)—✓30/30
X2
0∞ <A (10)h 11001 Π_{j<L}[(10)a_j (01)b_j+1 0010] (10)p (01)q+1 0010 (101)2 (01)k 0∞
⟶ 0∞ <A (10)h+4 11001 Π_{j<L}[(10)a_j+1 (01)b_j 0001] (10)p+1 (01)q 0010 (10)3 (01)k 0001 0∞
all digits 0 with tail (101)^2(01)^k; returns to the normal family—✓30/30
Compressed historythe tape as 0∞ <A (10)h 11001 (10)p1 (01)q1 s(d1) (10)p2 (01)q2 s(d2) ... (10)pL (01)qL s(dL) T 0∞ [s(1)=0001, s(0)=0010; T = '' | (10)t 1 | (101)2 (01)k] at 24 moments: where the rules are read off
0∞ <A (10)h 11001 (10)p1 (01)q1 s(d1) (10)p2 (01)q2 s(d2) ... (10)pL (01)qL s(dL) T 0∞ [s(1)=0001, s(0)=0010; T = '' | (10)t 1 | (101)2 (01)k]
stephLV=sum d_j 2^(j-1)p1q1p2q2pLqLT
1,8452221111102102-
4,6102222314716716-
8,3192362326109142-
19,43623647321615420-
34,137241447562221182-
78,710241495683433124-
137,5472530951164645222-
276,38424141591327865643-
368,69325309518011089412-
598,4902530191140134133347-
868,551266219123694157452-
1,637,77225303832841421411484-
2,053,9452662191428238165822-
3,050,26226623832843342851188-
4,178,29927126383476190381862-
7,335,14427126767572286285892-
11,309,89328254767956382381902-
23,109,954282541,5351,148574573596-
38,479,639295101,5351,916766765942-
84,867,492295103,0712,3001,1501,1492100-
145,833,4572101,0223,0713,8361,5341,533982-
252,225,526292544,0954,0922,8142,0452863(101)^2 (01)^102 [X1]
277,337,2061,022107674,3503,8372,9421,9173102- [X2]
466,254,8792112,0466,1435,6282,5583,5811002-
hlast 2
1,02221,8454.7e8log xstep 1845: h = 2step 4610: h = 2step 8319: h = 2step 19436: h = 2step 34137: h = 2step 78710: h = 2step 137547: h = 2step 276384: h = 2step 368693: h = 2step 598490: h = 2step 868551: h = 2step 1637772: h = 2step 2053945: h = 2step 3050262: h = 2step 4178299: h = 2step 7335144: h = 2step 11309893: h = 2step 23109954: h = 2step 38479639: h = 2step 84867492: h = 2step 145833457: h = 2step 252225526: h = 2step 277337206: h = 1022step 466254879: h = 2
Llast 11
1121,8454.7e8log xstep 1845: L = 2step 4610: L = 2step 8319: L = 3step 19436: L = 3step 34137: L = 4step 78710: L = 4step 137547: L = 5step 276384: L = 4step 368693: L = 5step 598490: L = 5step 868551: L = 6step 1637772: L = 5step 2053945: L = 6step 3050262: L = 6step 4178299: L = 7step 7335144: L = 7step 11309893: L = 8step 23109954: L = 8step 38479639: L = 9step 84867492: L = 9step 145833457: L = 10step 252225526: L = 9step 277337206: L = 10step 466254879: L = 11
V=sum d_j 2^(j-1)last 2,046
2,04621,8454.7e8log xstep 1845: V=sum d_j 2^(j-1) = 2step 4610: V=sum d_j 2^(j-1) = 2step 8319: V=sum d_j 2^(j-1) = 6step 19436: V=sum d_j 2^(j-1) = 6step 34137: V=sum d_j 2^(j-1) = 14step 78710: V=sum d_j 2^(j-1) = 14step 137547: V=sum d_j 2^(j-1) = 30step 276384: V=sum d_j 2^(j-1) = 14step 368693: V=sum d_j 2^(j-1) = 30step 598490: V=sum d_j 2^(j-1) = 30step 868551: V=sum d_j 2^(j-1) = 62step 1637772: V=sum d_j 2^(j-1) = 30step 2053945: V=sum d_j 2^(j-1) = 62step 3050262: V=sum d_j 2^(j-1) = 62step 4178299: V=sum d_j 2^(j-1) = 126step 7335144: V=sum d_j 2^(j-1) = 126step 11309893: V=sum d_j 2^(j-1) = 254step 23109954: V=sum d_j 2^(j-1) = 254step 38479639: V=sum d_j 2^(j-1) = 510step 84867492: V=sum d_j 2^(j-1) = 510step 145833457: V=sum d_j 2^(j-1) = 1022step 252225526: V=sum d_j 2^(j-1) = 254step 277337206: V=sum d_j 2^(j-1) = 767step 466254879: V=sum d_j 2^(j-1) = 2046
p1last 6,143
6,143111,8454.7e8log xstep 1845: p1 = 11step 4610: p1 = 23step 8319: p1 = 23step 19436: p1 = 47step 34137: p1 = 47step 78710: p1 = 95step 137547: p1 = 95step 276384: p1 = 159step 368693: p1 = 95step 598490: p1 = 191step 868551: p1 = 191step 1637772: p1 = 383step 2053945: p1 = 191step 3050262: p1 = 383step 4178299: p1 = 383step 7335144: p1 = 767step 11309893: p1 = 767step 23109954: p1 = 1535step 38479639: p1 = 1535step 84867492: p1 = 3071step 145833457: p1 = 3071step 252225526: p1 = 4095step 277337206: p1 = 4350step 466254879: p1 = 6143
q1last 5,628
5,628111,8454.7e8log xstep 1845: q1 = 11step 4610: q1 = 14step 8319: q1 = 26step 19436: q1 = 32step 34137: q1 = 56step 78710: q1 = 68step 137547: q1 = 116step 276384: q1 = 132step 368693: q1 = 180step 598490: q1 = 140step 868551: q1 = 236step 1637772: q1 = 284step 2053945: q1 = 428step 3050262: q1 = 284step 4178299: q1 = 476step 7335144: q1 = 572step 11309893: q1 = 956step 23109954: q1 = 1148step 38479639: q1 = 1916step 84867492: q1 = 2300step 145833457: q1 = 3836step 252225526: q1 = 4092step 277337206: q1 = 3837step 466254879: q1 = 5628
p2last 2,558
2,94271,8454.7e8log xstep 1845: p2 = 10step 4610: p2 = 7step 8319: p2 = 10step 19436: p2 = 16step 34137: p2 = 22step 78710: p2 = 34step 137547: p2 = 46step 276384: p2 = 78step 368693: p2 = 110step 598490: p2 = 134step 868551: p2 = 94step 1637772: p2 = 142step 2053945: p2 = 238step 3050262: p2 = 334step 4178299: p2 = 190step 7335144: p2 = 286step 11309893: p2 = 382step 23109954: p2 = 574step 38479639: p2 = 766step 84867492: p2 = 1150step 145833457: p2 = 1534step 252225526: p2 = 2814step 277337206: p2 = 2942step 466254879: p2 = 2558
q2last 3,581
3,58121,8454.7e8log xstep 1845: q2 = 2step 4610: q2 = 16step 8319: q2 = 9step 19436: q2 = 15step 34137: q2 = 21step 78710: q2 = 33step 137547: q2 = 45step 276384: q2 = 65step 368693: q2 = 89step 598490: q2 = 133step 868551: q2 = 157step 1637772: q2 = 141step 2053945: q2 = 165step 3050262: q2 = 285step 4178299: q2 = 381step 7335144: q2 = 285step 11309893: q2 = 381step 23109954: q2 = 573step 38479639: q2 = 765step 84867492: q2 = 1149step 145833457: q2 = 1533step 252225526: q2 = 2045step 277337206: q2 = 1917step 466254879: q2 = 3581
pLlast 100
10011,8454.7e8log xstep 1845: pL = 10step 4610: pL = 7step 8319: pL = 14step 19436: pL = 4step 34137: pL = 18step 78710: pL = 1step 137547: pL = 22step 276384: pL = 6step 368693: pL = 41step 598490: pL = 3step 868551: pL = 45step 1637772: pL = 14step 2053945: pL = 82step 3050262: pL = 11step 4178299: pL = 86step 7335144: pL = 8step 11309893: pL = 90step 23109954: pL = 5step 38479639: pL = 94step 84867492: pL = 2step 145833457: pL = 98step 252225526: pL = 28step 277337206: pL = 3step 466254879: pL = 100
qLlast 2
10221,8454.7e8log xstep 1845: qL = 2step 4610: qL = 16step 8319: qL = 2step 19436: qL = 20step 34137: qL = 2step 78710: qL = 24step 137547: qL = 2step 276384: qL = 43step 368693: qL = 2step 598490: qL = 47step 868551: qL = 2step 1637772: qL = 84step 2053945: qL = 2step 3050262: qL = 88step 4178299: qL = 2step 7335144: qL = 92step 11309893: qL = 2step 23109954: qL = 96step 38479639: qL = 2step 84867492: qL = 100step 145833457: qL = 2step 252225526: qL = 63step 277337206: qL = 102step 466254879: qL = 2
Tlast -
not plottable
Template comparisonSBCv6.v TM21: partly applies · the nearest solved proof, what carries over, and the transitions that differ
01
A1RB0LD
B1RC0RA
C1RD1RF
D1LA0LE
E1RE1LD
F0RB---
file
SBCv6.v:3702
module
TM21
machine
1RB1LB_0LC1RD_0RA1LC_0RB1RE_0RD0LF_---1LE (11 transitions apart)
diff
8 of 11 defined transitions differ under the best state renaming (no mirror); Sk1like_TC_v1/v2 machines differ in 8-9
note
Same architecture (pair list + counter sweeps + overflow re-pairing + finite tail states = TM21's LIncs/Ov/LH1-3), but not its shapes: from TM21's init config this machine halts in 4,539 steps. Sk1like_TC (eventual cycler via native_compute) doesn't fit.

Proof & checks

6/6 automatic checks pass

Kill 8 · Skelet 1-like Class 2 · the kill file 1RB0RE_1LC0RA_1LD0LB_1LA1LF_1LE1RA_0LC---.v: 1364 lines, 142 items · the package submission/

✓ 6/6 automatic checks pass · Checkpoint B: no note from Dennis yet · template (twin: parent kill's .v): #3's kill file (kill 4) · 95% of our lines identical · vs #3: same table mirrored, started in #3's D; trajectory twin
1What is provedCheck: the string, the theorem and every check_kill line are green, and the .v on disk is the one that was checked (same sha256).
Machine
1RB0RE_1LC0RA_1LD0LB_1LA1LF_1LE1RA_0LC---
vs holdout list
✓ byte-exact: the .v literal (L34) == 2026-10-07_778.txt line 622 (41 bytes, via tools/holdouts.py)
Theorem
✓ Lemma nonhalt: ~halts tm c0. L1323
check_kill
✓ PASS · 17/17 checks pass · compile 39.91 s · coqchk pass (12.26 s) · assumptions: 0 (closed) · 2026-10-11 00:29:18 UTC · submission/check_kill.txt
Checked .v
sha256 d3ce657f1502916a…
✓1RB0RE_1LC0RA_1LD0LB_1LA1LF_1LE1RA_0LC---.vd3ce657f1502916a… = checked
✓submission/1RB0RE_1LC0RA_1LD0LB_1LA1LF_1LE1RA_0LC---.vd3ce657f1502916a… = checked
Status
✓Killed: never halts updated 2026-10-10
✓ args✓ input✓ framework✓ framework_build✓ forbidden✓ structure✓ tm_text✓ theorem_text✓ coq✓ names✓ compile✓ tm_rocq✓ theorem_rocq✓ isolation✓ assumptions✓ coqchk✓ integrity
All 17 check_kill checks with their one-line results
✓args6x2 machine, framework module Individual62, mode nonhalt
✓input67041 bytes, 1364 lines, 1500 sentences
✓frameworkHEAD 0940bb9cf434ba68f0c025dabfde45a219999973 == pin; no tracked changes under verify/
✓framework_build13 needed framework .vo files present and fresh, with native code no older than the .vo
✓forbiddennone of 30 forbidden patterns occur (ground rule 1's words: anywhere; command words: outside comments and strings; comments never split a token)
✓structure6 Require name(s) allowed; no top-level Variable/Context; no shadowing; Module/Section balanced
✓tm_textline 34: TM_from_str "1RB0RE_1LC0RA_1LD0LB_1LA1LF_1LE1RA_0LC---" == <tm> (41 bytes)
✓theorem_textline 1323: nonhalt : ~halts tm c0
✓coqcoqc 8.20.1 ([local working file]
✓nameshalts, c0, TM_from_str resolved inside Individual62
✓compilecompiled in 39.9s with all appended checks
✓tm_rocqBB6Kill.Candidate.tm = BusyCoq.Individual62.TM_from_str "1RB0RE_1LC0RA_1LD0LB_1LA1LF_1LE1RA_0LC---" by eq_refl (in-file and isolated)
✓theorem_rocqnonhalt : ~ halts (TM_from_str "1RB0RE_1LC0RA_1LD0LB_1LA1LF_1LE1RA_0LC---") c0 with absolute names (in-file and isolated)
✓isolationonly stock proof plugins loaded; guard/positivity/universe checking on, definitional UIP off
✓assumptions0 assumption(s), all in the baseline
✓coqchkcoqchk -norec BB6Kill.Candidate ok (12.3s); its context summary lists nothing of the file's own
✓integrityinput sha256 and framework HEAD/cleanliness identical before and after
2Same machine as #3?Check: every row of the table is ✓ under the computed renaming (or the listed differences are what status.json's relation says), the two pictures show the same bands, and the trajectory numbers agree with the claimed relation (a twin keeps a fixed small offset; a sibling's gap grows).

status.json names #3 as the parent (1RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB---); relation: “twin of #3: #3's table mirrored and renamed, different start state, nearly identical run”. Everything below is computed from the two machine strings, not read from notes.

✓ Identical to #3's table under the renaming A→B, B→C, C→D, D→A, E→E, F→F (#3's state → this machine's), with L and R swapped (mirror image). This machine starts in #3's state D (#3 itself starts in A). The only such map.

#3#3's row (read 0, read 1)σpredicted row: renamed by σ, L/R swappedthis machine's actual row
A1RB 0LD→ B1LC 0RA1LC 0RA✓start of #3
B1RC 0RA→ C1LD 0LB1LD 0LB✓
C1RD 1RF→ D1LA 1LF1LA 1LF✓
D1LA 0LE→ A1RB 0RE1RB 0RE✓start of this machine
E1RE 1LD→ E1LE 1RA1LE 1RA✓
F0RB ---→ F0LC ---0LC ---✓

Rows aligned by σ: each of #3's states X sits next to this machine's state σ(X). ✓ = the actual row equals #3's row with every target state renamed by σ and every move mirrored; --- (halt) must stay ---. Searched: all 720 renamings × with/without mirror.

Fig P1 · bbchallenge default view: #3 and this machine, first 10,000 steps

Same view, same settings on both sides. Look for the same band structure: this machine is #3's table mirrored, so expect #3's picture flipped left to right; it starts in #3's state D, not A, so the first steps differ; the numbers below read: trajectory twin, so after the start the bands should match line for line.

#3 (parent), from blank in its A
default view of 1RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB---
this machine (#24), from blank in its A = #3's D
default view of 1RB0RE_1LC0RA_1LD0LB_1LA1LF_1LE1RA_0LC---
bbchallenge-defaultStart blankRows steps 0 → 10,000, top to bottomWindow cells −200..199, left to rightColors 1 0 or unvisited
tools/diagram.py <tm> --as-site (the site's 400×500 canvas)
Fig P2 · Long run, Blaze (speed): #3 and this machine, 100 million steps

The macro behaviour, identical settings on both sides: each picture is its machine's own visited span stretched to 800 px, so compare the shape and order of the bands, not their absolute width. Speed mode samples one cell per column, so a one-cell shift can swap orange and white inside a band; compare band edges, not colours. Here this machine is #3's table mirrored, so expect #3's picture flipped left to right.

#3 (parent), from blank in its A
blaze view of 1RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB---
763 rows of 131,072 steps · 1,382 columns, every 16th cell · nonzeros 11,040 at 1e8
this machine (#24), from blank in its A = #3's D
blaze view of 1RB0RE_1LC0RA_1LD0LB_1LA1LF_1LE1RA_0LC---
763 rows of 131,072 steps · 1,382 columns, every 16th cell · nonzeros 11,042 at 1e8
bbchallenge-blazeStart blankRows steps 0 → 1e8Window the visited spanColors 1 0 at the sampled cell
Rows: one snapshot per row (Blaze time blocks), stretched to 500 px · Window: every k-th cell sampled, stretched to 800 px
tools/diagram.py <tm> --mode blaze --speed --as-site --steps 1e8

Trajectory numbers, from blank (C core)

✓ trajectory twin: within 0.003% at 1e9 (cells +2, nonzeros +0); the offset stays within 3 at every checkpoint instead of growing

stepscells visited (hi − lo + 1)nonzeros
#3thisratio (Δ)#3thisratio (Δ)
1e56726741.0030 (+2)3353351.0000 (+0)
1e62,2602,2621.0009 (+2)1,1251,1271.0018 (+2)
1e77,4437,4451.0003 (+2)3,7163,7181.0005 (+2)
1e822,09622,0981.0001 (+2)11,03911,0421.0003 (+3)
1e967,34367,3451.0000 (+2)33,66533,6651.0000 (+0)

Each machine from blank in its own start state, sim.py C core. Trajectory twin = cells and nonzeros stay within 16 of the parent's at every checkpoint (a fixed offset from a different start, not a growing gap). Cached in img/vs-parent.json (2026-10-16 10:29 PDT); --force recomputes.

3Where it came fromCheck: the template is the one you expect, and the measured reuse (tiles, the reuse figure, diff) agrees with what the README says was kept and changed (quoted).
twin: parent kill's .v #3's kill file (kill 4) machines/1RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB---/1RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB---.v · detected from status.json
95%of our lines identical to the template
4changed lines
52added lines (ours only)
9template lines dropped
134 / 4 / 4items identical / adapted / new
What the package README says it reused and changed (submission/README.md line 16, Template and what changed), quoted:

The file extends kill #3's .v (1,303 lines; in #3's own package). A script generated it, asserting each edit, and no hand edits were made afterwards. The changes:

  • tm is the twin, and #3's table becomes tm3, with the local -->*/-->+ bound to it;
  • solve_initD is busycoq's solve_init started in D (esx from a non-c0 start falls back to symbolic es, which did not finish);
  • init0, and base with far pair (1,25);
  • #3's nonhalt becomes nonhalt_D;
  • the conjugacy (phi, perm_twin, nonhalt, about 15 lines).

Every sweep, macro rule, J, Jstep and J_base is #3's text, unchanged, and the file compiled on the first attempt. In all, 22 of #3's lines were replaced and 82 lines added. The file is 1,363 lines and imports only Individual62 from busycoq. It is a direct proof on the holdout string. The second TM_from_str literal (#3's string, as tm3) is the only warning from our checker.

Fig P3 · Reuse of the template, line by line and by name

Top two bars: non-blank lines after the TM string is replaced by <TM> and whitespace is collapsed. Bottom bar: our Definitions/Lemmas/… by name.

ours 1172 lines
95% identical · 4 changed · 52 added
template 1129 lines
99% kept verbatim · 9 not in ours
our items 142
134 identical · 4 adapted · 4 new · 0 template-only
identicalchanged / adaptedours only (new)template only
Template part: whole file, lines 17–1303 (leading comment left out). Ours: lines 28–1364 (header comment 1–27 left out). Line diff: Python difflib SequenceMatcher; inside a replaced block, line pairs at least 75% alike count as changed, the rest as removed + added.

Other references found:

Side-by-side diff: template (1129 lines) vs ours (1172 lines), 65 lines differ; runs of identical lines and long template-only runs folded
identicalequal once each TM string is <TM>changedours onlytemplate only
templateours
18From BusyCoq Require Import Individual62.29From BusyCoq Require Import Individual62.
19Require Import Arith Lia List.30Require Import Arith Lia List.
20Require Import String.31Require Import String.
21Import ListNotations.32Import ListNotations.
23Definition tm := Eval compute in (TM_from_str "1RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB---").34Definition tm := Eval compute in (TM_from_str "1RB0RE_1LC0RA_1LD0LB_1LA1LF_1LE1RA_0LC---").
25Notation "c -->* c'" := (c -[ tm ]->* c') (at level 40).
36(** The parent machine (verify/Skelet1LikeC2_1RB0LD.v). Everything up to [nonhalt_D] is about [tm3]. *)
26Notation "c -->+ c'" := (c -[ tm ]->+ c') (at level 40).
37Definition tm3 := Eval compute in (TM_from_str "1RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB---").
39Notation "c -->* c'" := (c -[ tm3 ]->* c') (at level 40).
40Notation "c -->+ c'" := (c -[ tm3 ]->+ c') (at level 40).
28Open Scope list.42Open Scope list.
30Lemma ev_eq {c1 c2 c2'} : c1 -->* c2 -> c2 = c2' -> c1 -->* c2'.44Lemma ev_eq {c1 c2 c2'} : c1 -->* c2 -> c2 = c2' -> c1 -->* c2'.
⋯ 258 identical lines (template 31–338, ours 45–352)
339 cbn [RP sd]. rewrite ovpX_eq. replace (pb+4) with (S (pb+3)) by lia. rewrite tailB_eq. reflexivity.353 cbn [RP sd]. rewrite ovpX_eq. replace (pb+4) with (S (pb+3)) by lia. rewrite tailB_eq. reflexivity.
340Qed.354Qed.
342(** * Start (proof.md 3.7): c0 reaches K0 = K(2; (11,11,0); -) in 956 steps, and the base
356(** * Start (proof.md 3.7, twin column). The twin from c0 corresponds to the parent [tm3]
343 E-start after overflow 6, K(2; (95,68,0),(34,33,1),(10,15,1),(1,24,1); -), in 78,710 steps.
357 from (D;; tape0), step for step. That run reaches K0' = K(2; (11,12,0); -) in 1,021 steps,
344 Both by direct execution ([esx]); the second takes about 30 s. *)
358 and the base E-start after overflow 6, K(2; (95,68,0),(34,33,1),(10,15,1),(1,25,1); -), in
346Lemma init0 : c0 -->* K 2 [(11%nat, 11%nat, false)] TN.
359 78,911 steps. Both by direct execution. [esx] runs its fast [vm_compute] path only from c0
347Proof. unfold K. cbn [RP RT sd]. esx. Qed.
360 (from another start it falls back to symbolic [es], far too slow here), so [solve_initD] is
361 busycoq's [solve_init] with the start config rewritten to [cconfig_to_config (nil,nil,0,D)]. *)
363Ltac solve_initD :=
364 change (D, tape0) with (cconfig_to_config (nil,nil,0,D));
365 repeat rewrite Str_cons_def;
366 repeat rewrite <-Str_app_assoc;
367 repeat rewrite simpl_directed_head_l;
368 repeat rewrite simpl_directed_head_r;
369 repeat rewrite l_const0_app_nil;
370 repeat rewrite r_const0_app_nil;
371 repeat rewrite config_to_cconfig;
372 apply cconfig_evstep_dec_spec with (n:=1000000);
373 vm_compute;
374 reflexivity.
376Lemma init0 : D;; tape0 -->* K 2 [(11%nat, 12%nat, false)] TN.
377Proof. unfold K. cbn [RP RT sd]. solve_initD. Qed.
349Definition base : list (nat*nat*bool) :=379Definition base : list (nat*nat*bool) :=
350 [(95%nat, 68%nat, false); (34%nat, 33%nat, true); (10%nat, 15%nat, true); (1%nat, 24%nat, true)].380 [(95%nat, 68%nat, false); (34%nat, 33%nat, true); (10%nat, 15%nat, true); (1%nat, 25%nat, true)].
352Lemma init : c0 -->* K 2 base TN.382Lemma init : D;; tape0 -->* K 2 base TN.
353Proof. unfold K, base. cbn [RP RT sd]. esx. Qed.383Proof. unfold K, base. cbn [RP RT sd]. solve_initD. Qed.
356(** * The invariant (round 2). Arithmetic layer, then the step lemma. *)386(** * The invariant (round 2). Arithmetic layer, then the step lemma. *)
358Require Import ZifyNat.388Require Import ZifyNat.
⋯ 814 identical lines (template 359–1264, ours 389–1294)
1265 cbn [AllI]. unfold PCx, Lift, PC, PN, PI. cbn. repeat split; lia.1295 cbn [AllI]. unfold PCx, Lift, PC, PN, PI. cbn. repeat split; lia.
1266Qed.1296Qed.
1268Lemma nonhalt : ~ halts tm c0.
1298(** The parent never halts from 0^inf D> 0^inf. *)
1299Lemma nonhalt_D : ~ halts tm3 (D;; tape0).
1269Proof.1300Proof.
1270 apply multistep_nonhalt with (c' := K 2 base TN); [exact init|].1301 apply multistep_nonhalt with (c' := K 2 base TN); [exact init|].
1271 change (K 2 base TN) with (Cf (mkst 2 base TN E1 false)).1302 change (K 2 base TN) with (Cf (mkst 2 base TN E1 false)).
1272 apply progress_nonhalt_cond with (P := J); [exact Jstep | exact J_base].1303 apply progress_nonhalt_cond with (P := J); [exact Jstep | exact J_base].
1273Qed.1304Qed.
1306(** * Conjugacy (proof.md section 0, Lemma C).
1307 [flip tm] is the twin with every direction flipped (busycoq Flip.v); renaming its states
1308 by phi gives the parent exactly ([Perm], busycoq Permute.v: both the halting entry and
1309 all 11 transitions). [flip_halts]: halts tm c -> halts (flip tm) (flip_conf c), and
1310 flip_conf c0 = A;; tape0 (the blank tape is symmetric). [perm_halts]: halts (flip tm)
1311 (q;; t) -> halts tm3 (phi q;; t), and phi A = D. *)
1313Definition phi (q : Q) : Q :=
1314 match q with A => D | B => A | C => B | D => C | E => E | F => F end.
1316Lemma perm_twin : Perm (flip tm) tm3 phi.
1317Proof.
1318 split.
1319 - intros [] [] H; cbn in *; try discriminate; reflexivity.
1320 - intros [] [] s' d q' H; cbn in *; inversion H; subst; reflexivity.
1321Qed.
1323Lemma nonhalt: ~halts tm c0.
1324Proof.
1325 intros H. apply flip_halts in H.
1326 change (halts (flip tm) (A;; tape0)) in H.
1327 exact (nonhalt_D (perm_halts _ _ _ _ _ perm_twin H)).
1328Qed.
1275(*1330(*
1276```1331```
12771RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB---
13321RB0RE_1LC0RA_1LD0LB_1LA1LF_1LE1RA_0LC--- (= mirror of 1RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB--- renamed by
1333 phi: A->D, B->A, C->B, D->C, E->E, F->F;
1334 tm3 below = the parent)
1336twin c0 = 0^inf A> 0^inf <-> parent 0^inf D> 0^inf (flip_halts, Perm (flip tm) tm3 phi, perm_halts)
1338Parent family (tm3), unchanged from the parent's kill file verify/Skelet1LikeC2_1RB0LD.v:
1279[p,q,d] := (10)^p (01)^q s(d), s(1) = 0001, s(0) = 0010 [RP]1339[p,q,d] := (10)^p (01)^q s(d), s(1) = 0001, s(0) = 0010 [RP]
1280K(h; P; T) := 0^inf <A (10)^h 11001 [p_1,q_1,d_1] ... [p_L,q_L,d_L] T 0^inf [K]1340K(h; P; T) := 0^inf <A (10)^h 11001 [p_1,q_1,d_1] ... [p_L,q_L,d_L] T 0^inf [K]
1281T in { -, (10)^t 1, (101)^2 (01)^k } [TN, TA t, TB k]1341T in { -, (10)^t 1, (101)^2 (01)^k } [TN, TA t, TB k]
1282k := least j with d_j = 1; Z := pairs 1..k-1 (all d = 0, q >= 2)1342k := least j with d_j = 1; Z := pairs 1..k-1 (all d = 0, q >= 2)
1283touch (p,q,d) := (p+1, q-1, 1-d)1343touch (p,q,d) := (p+1, q-1, 1-d)
1344(on the twin's tape: K' = mirror image, 0^inf T^R [p_L,q_L,d_L]^R ... [p_1,q_1,d_1]^R 10011 (01)^h B> 0^inf)
1285Dec K(h; Z ++ (p,q+2,1) :: R; T) -->+ K(h+4; touch Z ++ (p+1,q+1,0) :: R; T)1346Dec K(h; Z ++ (p,q+2,1) :: R; T) -->+ K(h+4; touch Z ++ (p+1,q+1,0) :: R; T)
1286DecMerge K(h; Z ++ (p,1,1) :: (p',q',d') :: R; T) -->+ K(h+4; touch Z ++ (p+p'+3,q',d') :: R; T)1347DecMerge K(h; Z ++ (p,1,1) :: (p',q',d') :: R; T) -->+ K(h+4; touch Z ++ (p+p'+3,q',d') :: R; T)
⋯ 12 identical lines (template 1287–1298, ours 1348–1359)
1299invariant J (per pair, n = pairs to the right, tv = digit value from the pair up,1360invariant J (per pair, n = pairs to the right, tv = digit value from the pair up,
1300 Rt = tv + phase term): see Definitions PN, PI, TC, J; preserved by every rule (Jstep).1361 Rt = tv + phase term): see Definitions PN, PI, TC, J; preserved by every rule (Jstep).
1301start: c0 -->(956) K(2; (11,11,0); -) -->(77,754) K(2; (95,68,0),(34,33,1),(10,15,1),(1,24,1); -)1362start (tm3): 0^inf D> 0^inf -->(1,021) K(2; (11,12,0); -) -->(77,890) K(2; (95,68,0),(34,33,1),(10,15,1),(1,25,1); -)
1302```1363```
1303*)1364*)
4Proof outlineCheck: the new items (green) carry the argument; the names read like the proof.md rules.

142 items in 1RB0RE_1LC0RA_1LD0LB_1LA1LF_1LE1RA_0LC---.v (1364 lines): 104 Lemma, 27 Definition, 8 Fixpoint, 2 Inductive, 1 Record. Tags against the template: identical = same name and same text once each file's own TM string is <TM> (marked "except the TM string" when that is the only difference); adapted = same name, different text; new = no item of that name in the template part.

#kindnamestatement (no proof body)linevs template
1Definitiontm
Definition tm := Eval compute in (TM_from_str "1RB0RE_1LC0RA_1LD0LB_1LA1LF_1LE1RA_0LC---").
L34identicalexcept the TM string
2Definitiontm3
Definition tm3 := Eval compute in (TM_from_str "1RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB---").
L37new
3Lemmaev_eq
Lemma ev_eq {c1 c2 c2'} : c1 -->* c2 -> c2 = c2' -> c1 -->* c2'.
L44identical
4Lemmaprog_eq
Lemma prog_eq {c1 c2 c2'} : c1 -->+ c2 -> c2 = c2' -> c1 -->+ c2'.
L47identical
5LemmaStart
Lemma Start h r : 0inf <{{A}} [1;0]^^h *> [1;1;0;0;1] *> r -->+
0inf <* <[1;0]^^(4+h) <* <[1;1;1] <* [0] {{B}}> r.
L55identical
6LemmaPassR
Lemma PassR l p q r : l <* [0] {{B}}> [1;0]^^p *> [0;1]^^(S q) *> [0;0;1;0] *> r -->*
l <* [0] <* <[0;1]^^p <* <[1;1;0] <* <[0;1]^^q <* <[1;1] <* [0] {{B}}> r.
L59identical
7LemmaBorrow
Lemma Borrow l p q r : l {{B}}> [1;0]^^p *> [0;1]^^(S (S q)) *> [0;0;0;1] *> r -->*
l <{{D}} [1;0]^^(S p) *> [0;1]^^(S q) *> [0;0;1;0] *> r.
L63identical
8LemmaPassL
Lemma PassL l p q r : l <* [0] <* <[0;1]^^p <* <[1;1;0] <* <[0;1]^^(S q) <* <[1;1] <* [0] <{{D}} r -->*
l <* [0] <{{D}} [1;0]^^(S p) *> [0;1]^^(S q) *> [0;0;0;1] *> r.
L67identical
9LemmaEndPh
Lemma EndPh h r : 0inf <* <[1;0]^^(4+h) <* <[1;1;1] <* [0] <{{D}} r -->*
0inf <{{A}} [1;0]^^(4+h) *> [1;1;0;0;1] *> r.
L71identical
10LemmaEndT
Lemma EndT l p q : l <* <[0;1]^^p <* <[1;1;0] <* <[0;1]^^(S q) <* <[1;1] <* [0] {{B}}> 0inf -->*
l <{{D}} [1;0]^^(S p) *> [0;1]^^(S q) *> [0;0;1;0] *> [1;0;1] *> 0inf.
L75identical
11LemmaEndLastT
Lemma EndLastT l p : l <* <[0;1]^^p <* <[1;1;0] <* <[1;1] <* [0] {{B}}> 0inf -->*
l <{{D}} [1;0]^^(p+4) *> [1] *> 0inf.
L79identical
12LemmaMergeB
Lemma MergeB l p p' r : l {{B}}> [1;0]^^p *> [0;1] *> [0;0;0;1] *> [1;0]^^p' *> r -->*
l <{{D}} [1;0]^^(p+p'+3) *> r.
L83identical
13LemmaMergeE
Lemma MergeE l p : l {{B}}> [1;0]^^p *> [0;1] *> [0;0;0;1] *> 0inf -->*
l <{{D}} [1;0]^^(p+2) *> [1] *> 0inf.
L87identical
14LemmaOvT
Lemma OvT l t : l <* [0] {{B}}> [1;0]^^t *> [1] *> 0inf -->*
l <{{D}} [0;1]^^(S t) *> [0;0;0;1] *> 0inf.
L91identical
15LemmaOvL
Lemma OvL l p q r : l <* [0] <* <[0;1]^^(S p) <* <[1;1;0] <* <[0;1]^^q <* <[1;1] <{{D}} r -->*
l <{{D}} [0;1]^^(S p) *> [0;0;0;1] *> [1;0]^^(S q) *> r.
L95identical
16LemmaOvEnd
Lemma OvEnd h p r : 0inf <* <[1;0]^^(4+h) <* <[1;1;1] <{{D}} [0;1]^^(S (S p)) *> [0;0;0;1] *> r -->*
0inf <{{A}} [1;0]^^2 *> [1;1;0;0;1] *> [1;0]^^(h+5) *> [0;1]^^(S p) *> [0;0;1;0] *> r.
L99identical
17LemmaX1Sw
Lemma X1Sw l p r : l <* [0] <* <[0;1]^^(S p) <* <[1;1;0] <* <[1;1] <* [0] <{{D}} r -->*
l <{{D}} [0;1]^^(S p) *> [0;0;1;0;1;0;1] *> r.
L103identical
18LemmaX2T
Lemma X2T l p q k : l <* <[0;1]^^p <* <[1;1;0] <* <[0;1]^^(S q) <* <[1;1] <* [0] {{B}}> [1;0;1;1;0;1] *> [0;1]^^(S k) *> 0inf -->*
l <{{D}} [1;0]^^(S p) *> [0;1]^^(S q) *> [0;0;1;0] *> [1;0]^^3 *> [0;1]^^(S k) *> [0;0;0;1] *> 0inf.
L107identical
19Definitionsd
Definition sd (d : bool) : list Sym := if d then [0;0;0;1] else [0;0;1;0].
L113identical
20FixpointRP
Fixpoint RP (P : list (nat*nat*bool)) (r : side) : side :=
match P with
| [] => r
| (p,q,d) :: P' => [1;0]^^p *> [0;1]^^q *> sd d *> RP P' r
end.
L115identical
21InductiveTl
Inductive Tl := TN | TA (t : nat) | TB (k : nat).
L121identical
22DefinitionRT
Definition RT (T : Tl) : side :=
match T with
| TN => 0inf
| TA t => [1;0]^^t *> [1] *> 0inf
| TB k => [1;0;1;1;0;1] *> [0;1]^^k *> 0inf
end.
L123identical
23DefinitionK
Definition K (h : nat) (P : list (nat*nat*bool)) (T : Tl) : Q * tape :=
0inf <{{A}} [1;0]^^h *> [1;1;0;0;1] *> RP P (RT T).
L130identical
24Definitionpre
Definition pre (h : nat) : side := 0inf <* <[1;0]^^(4+h) <* <[1;1;1].
L133identical
25Definitionreg
Definition reg (p q : nat) (l : side) : side :=
l <* [0] <* <[0;1]^^p <* <[1;1;0] <* <[0;1]^^(pred q) <* <[1;1].
L136identical
26FixpointLP
Fixpoint LP (Z : list (nat*nat*bool)) (l : side) : side :=
match Z with
| [] => l
| (p,q,d) :: Z' => LP Z' (reg p q l)
end.
L139identical
27FixpointOvR
Fixpoint OvR (Z : list (nat*nat*bool)) (r : side) : side :=
match Z with
| [] => r
| (p,q,d) :: Z' => [0;1]^^p *> [0;0;0;1] *> [1;0]^^q *> OvR Z' r
end.
L146identical
28Definitiontouch
Definition touch (x : nat*nat*bool) : nat*nat*bool :=
let '(p,q,d) := x in (S p, pred q, negb d).
L152identical
29DefinitionokR
Definition okR (x : nat*nat*bool) : Prop := let '(p,q,d) := x in d = false /\ 1 <= q.
L155identical
30DefinitionokL
Definition okL (x : nat*nat*bool) : Prop := let '(p,q,d) := x in d = false /\ 2 <= q.
L156identical
31DefinitionokO
Definition okO (x : nat*nat*bool) : Prop := let '(p,q,d) := x in 1 <= p /\ 1 <= q.
L157identical
32LemmaRP_app
Lemma RP_app Z W r : RP (Z ++ W) r = RP Z (RP W r).
L159identical
33LemmaLP_app
Lemma LP_app Z W l : LP (Z ++ W) l = LP W (LP Z l).
L164identical
34LemmaPassesR
Lemma PassesR Z : Forall okR Z -> forall l r,
l <* [0] {{B}}> RP Z r -->* LP Z l <* [0] {{B}}> r.
L169identical
35LemmaPassesL
Lemma PassesL Z : Forall okL Z -> forall l r,
LP Z l <* [0] <{{D}} r -->* l <* [0] <{{D}} RP (map touch Z) r.
L179identical
36LemmaOvPasses
Lemma OvPasses Z : Forall okO Z -> forall l r,
LP Z l <{{D}} r -->* l <{{D}} OvR Z r.
L189identical
37LemmaokL_R
Lemma okL_R Z : Forall okL Z -> Forall okR Z.
L199identical
38LemmaDec
Lemma Dec h Z p q R T : Forall okL Z ->
K h (Z ++ (p, S (S q), true) :: R) T -->+ K (4+h) (map touch Z ++ (S p, S q, false) :: R) T.
L206identical
39LemmaDecMerge
Lemma DecMerge h Z p p' q' d' R T : Forall okL Z ->
K h (Z ++ (p, 1%nat, true) :: (p', q', d') :: R) T -->+ K (4+h) (map touch Z ++ (p+p'+3, q', d') :: R) T.
L217identical
40LemmaDecMergeTail
Lemma DecMergeTail h Z p t : Forall okL Z ->
K h (Z ++ [(p, 1%nat, true)]) (TA t) -->+ K (4+h) (map touch Z) (TA (p+t+3)).
L228identical
41LemmaDecMergeEmpty
Lemma DecMergeEmpty h Z p : Forall okL Z ->
K h (Z ++ [(p, 1%nat, true)]) TN -->+ K (4+h) (map touch Z) (TA (p+2)).
L239identical
42LemmaForall_snoc
Lemma Forall_snoc {A} (P : A -> Prop) Z x : Forall P Z -> P x -> Forall P (Z ++ [x]).
L250identical
43LemmaEndR
Lemma EndR h Z p q : Forall okL Z ->
K h (Z ++ [(p, S (S q), false)]) TN -->+ K (4+h) (map touch Z ++ [(S p, S q, false)]) (TA 1).
L253identical
44LemmaEndLast
Lemma EndLast h Z p : Forall okL Z ->
K h (Z ++ [(p, 1%nat, false)]) TN -->+ K (4+h) (map touch Z) (TA (p+4)).
L265identical
45LemmaX2
Lemma X2 h Z p q k : Forall okL Z ->
K h (Z ++ [(p, S (S q), false)]) (TB (S k)) -->+
K (4+h) (map touch Z ++ [(S p, S q, false); (3%nat, S k, true)]) TN.
L277identical
46Fixpointovp
Fixpoint ovp (q : nat) (Z : list (nat*nat*bool)) (t : nat) : list (nat*nat*bool) :=
match Z with
| [] => [(q, S t, true)]
| (p',q',_) :: Z' => (q, p', true) :: ovp q' Z' t
end.
L290identical
47Lemmaovp_eq
Lemma ovp_eq Z : forall q t, RP (ovp q Z t) 0inf = [1;0]^^q *> OvR Z ([0;1]^^(S t) *> [0;0;0;1] *> 0inf).
L296identical
48LemmaOv
Lemma Ov h p1 q1 Z t : 1 <= q1 -> Forall okR Z -> Forall okO Z ->
K h ((S (S p1), q1, false) :: Z) (TA t) -->+ K 2 ((h+5, S p1, false) :: ovp q1 Z t) TN.
L302identical
49FixpointovpX
Fixpoint ovpX (q : nat) (Z : list (nat*nat*bool)) (pa : nat) : list (nat*nat*bool) :=
match Z with
| [] => [(q, pa, false)]
| (p',q',_) :: Z' => (q, p', true) :: ovpX q' Z' pa
end.
L317identical
50LemmaovpX_eq
Lemma ovpX_eq Z : forall q pa r, RP (ovpX q Z pa) r = [1;0]^^q *> OvR Z ([0;1]^^pa *> [0;0;1;0] *> r).
L323identical
51LemmatailB_eq
Lemma tailB_eq n : [0;0;1;0;1;0;1] *> [1;0]^^(S n) *> [1] *> 0inf = [0;0;1;0] *> RT (TB n).
L329identical
52LemmaX1
Lemma X1 h p1 q1 Z pa pb : 1 <= q1 -> Forall okR Z -> Forall okO Z ->
K h ((S (S p1), q1, false) :: Z ++ [(S pa, 1%nat, false); (pb, 1%nat, false)]) TN -->+
K 2 ((h+5, S p1, false) :: ovpX q1 Z (S pa)) (TB (pb+3)).
L337identical
53Lemmainit0
Lemma init0 : D;; tape0 -->* K 2 [(11%nat, 12%nat, false)] TN.
L376adapted
54Definitionbase
Definition base : list (nat*nat*bool) :=
[(95%nat, 68%nat, false); (34%nat, 33%nat, true); (10%nat, 15%nat, true); (1%nat, 25%nat, true)].
L379adapted
55Lemmainit
Lemma init : D;; tape0 -->* K 2 base TN.
L382adapted
56Definitionbv
Definition bv (d : bool) : nat := if d then 1 else 0.
L394identical
57Fixpointdv
Fixpoint dv (P : list tri) : nat :=
match P with
| [] => 0
| (_,_,d) :: P' => bv d + 2 * dv P'
end.
L396identical
58Definitiondig
Definition dig (x : tri) : bool := let '(_,_,d) := x in d.
L402identical
59Definitiondig0
Definition dig0 (x : tri) : Prop := dig x = false.
L403identical
60Lemmadv_lt
Lemma dv_lt P : dv P < 2 ^ length P.
L407identical
61Lemmadv_zeros
Lemma dv_zeros Z R : Forall dig0 Z -> dv (Z ++ R) = 2 ^ length Z * dv R.
L413identical
62Lemmadv_tz
Lemma dv_tz Z R : Forall dig0 Z -> dv (map touch Z ++ R) + 1 = 2 ^ length Z + 2 ^ length Z * dv R.
L420identical
63FixpointAllI
Fixpoint AllI (Pr : nat -> tri -> list tri -> Prop) (i : nat) (P : list tri) : Prop :=
match P with
| [] => True
| x :: Y => Pr i x Y /\ AllI Pr (S i) Y
end.
L428identical
64LemmaAllI_app
Lemma AllI_app Pr Z : forall i R, AllI Pr i (Z ++ R) -> AllI Pr (i + length Z) R.
L434identical
65LemmaAllI_mono
Lemma AllI_mono (Pr Pr' : nat -> tri -> list tri -> Prop) P : forall i,
(forall j x Y, i <= j -> Pr j x Y -> Pr' j x Y) -> AllI Pr i P -> AllI Pr' i P.
L441identical
66LemmaAllI_shift
Lemma AllI_shift (Pr Pr' : nat -> tri -> list tri -> Prop) P : forall i,
(forall j x Y, i <= j -> Pr (S j) x Y -> Pr' j x Y) -> AllI Pr (S i) P -> AllI Pr' i P.
L449identical
67LemmaAllI_touchZ
Lemma AllI_touchZ (Pr Pr' : nat -> tri -> list tri -> Prop) R R' : forall Z i,
Forall dig0 Z ->
(forall j p q Zr, Forall dig0 Zr -> j + S (length Zr) = i + length Z ->
   Pr j (p,q,false) (Zr ++ R) -> Pr' j (S p, pred q, true) (map touch Zr ++ R')) ->
AllI Pr i (Z ++ R) -> AllI Pr' (i + length Z) R' -> AllI Pr' i (map touch Z ++ R').
L458identical
68Inductivephase
Inductive phase := E1 | E2 | E1t | E2t | T0 | L1 | L2 | LX.
L479identical
69DefinitionPN
Definition PN (ph : phase) (c4 : bool) (p q n tv : nat) : Prop :=
match ph with
| E1 => match n with
        | 0 => q >= tv + 2 ^ n + 1 /\ p + tv + 2 ^ n >= 3
        | S _ => q >= tv + 3 * 2 ^ n + 1 /\ (p + tv) mod 2 = 1 /\ p + tv + 2 ^ n >= 3 * 2 ^ n
        end
… +35 lines
L482identical
70DefinitionPI
Definition PI (ph : phase) (h i p q n tv : nat) : Prop :=
match i with
| 1 => h mod 2 = 0 /\
       match ph with
       | E1 | E1t => 2 <= n /\ p + tv + 2 ^ n + 3 >= 11 * 2 ^ n /\ h + 4 * (tv + 2 ^ n) + 6 >= 12 * 2 ^ n
       | E2 | E2t => 2 <= n /\ p + tv + 3 >= 11 * 2 ^ n /\ h + 4 * tv + 6 >= 12 * 2 ^ n
… +14 lines
L525identical
71DefinitionPC
Definition PC (ph : phase) (c4 : bool) (h i p q n tv : nat) : Prop :=
1 <= p /\ 1 <= q /\ PN ph c4 p q n tv /\ PI ph h i p q n tv.
L546identical
72DefinitionLift
Definition Lift (Pr : nat -> nat -> nat -> nat -> nat -> Prop) (i : nat) (x : tri) (Y : list tri) : Prop :=
let '(p,q,d) := x in Pr i p q (length Y) (dv (x :: Y)).
L549identical
73DefinitionPCx
Definition PCx (ph : phase) (c4 : bool) (h : nat) := Lift (PC ph c4 h).
L552identical
74Lemmapow_pos
Lemma pow_pos n : 1 <= 2 ^ n.
L561identical
75Lemmaob_touch
Lemma ob_touch ph c4 h i p q n tv : 1 <= tv -> 2 <= q ->
PC ph c4 h i p q n tv -> PC ph c4 (4 + h) i (S p) (pred q) n (tv - 1).
L565identical
76Lemmapow_S
Lemma pow_S n : 2 ^ S n = 2 * 2 ^ n.
L573identical
77Lemmaob_merge
Lemma ob_merge ph c4 h i p q n u U :
(ph = L1 \/ ph = L2 \/ ph = LX) ->
1 <= n -> 2 <= u -> u mod 2 = 0 -> U mod 2 = 0 -> U + u <= 2 * 2 ^ n ->
(ph = L1 -> U + u <= 2 ^ n) -> (ph = LX -> 2 <= n) -> (ph = L1 -> c4 = true -> 2 <= n) ->
(i = 1 -> 2 <= n) -> (ph = LX -> i = 1 -> 3 <= n) -> 2 <= q ->
PC ph c4 h i p q (S n) (u + 2 * U) -> PC ph c4 (4 + h) i (S p) (pred q) n (u - 1 + U).
L581identical
78Lemmaob_mt
Lemma ob_mt c4 h i p q n : 2 <= q -> (i = 1 -> 1 <= n) ->
PC L2 c4 h i p q (S n) (2 * 2 ^ n) -> PC L2 false (4 + h) i (S p) (pred q) n (2 * 2 ^ n - 1).
L597identical
79Lemmaob_fuse
Lemma ob_fuse ph c4 h h' k p p' q' n tv : (ph = L1 \/ ph = L2 \/ ph = LX) -> 3 <= k ->
PC ph c4 h (S k) p' q' n tv -> PC ph c4 h' k (p + p' + 3) q' n tv.
L606identical
80Lemmaob_far
Lemma ob_far ph c4 h h' i j p q n tv : 3 <= i -> 3 <= j ->
PC ph c4 h i p q n tv -> PC ph c4 h' j p q n tv.
L615identical
81Definitionendtr
Definition endtr (ph ph' : phase) : Prop := (ph = E1 /\ ph' = E2) \/ (ph = E1t /\ ph' = E2t).
L623identical
82Lemmaob_end
Lemma ob_end ph ph' h i p q n : endtr ph ph' -> 1 <= n -> 2 <= q ->
PC ph false h i p q n 0 -> PC ph' false (4 + h) i (S p) (pred q) n (2 ^ n - 1).
L625identical
83Lemmaob_end_top
Lemma ob_end_top ph ph' h i p q : endtr ph ph' -> 3 <= i ->
PC ph false h i p (S (S q)) 0 0 -> PC ph' false (4 + h) i (S p) (S q) 0 0.
L633identical
84Lemmaob_endlast
Lemma ob_endlast c4 h i p q n : 2 <= q ->
PC L1 c4 h i p q (S n) 0 -> PC L2 c4 (4 + h) i (S p) (pred q) n (2 * 2 ^ n - 1).
L642identical
85Lemmaob_x2
Lemma ob_x2 h i p q n : 1 <= n -> 2 <= q ->
PC T0 false h i p q n 0 -> PC E1t false (4 + h) i (S p) (pred q) (S n) (3 * 2 ^ n - 1).
L651identical
86Lemmaob_x2_top
Lemma ob_x2_top h i p q : 3 <= i ->
PC T0 false h i p (S (S q)) 0 0 -> PC E1t false (4 + h) i (S p) (S q) 1 2.
L659identical
87Lemmaob_x2_new
Lemma ob_x2_new h i k : 3 <= i -> 3 <= k -> PC E1t false h i 3 k 0 1.
L667identical
88Definitionovtr
Definition ovtr (ph ph' : phase) (c4' : bool) (Xp : nat -> Prop) : Prop :=
(ph = E2 /\ ph' = L1 /\ c4' = false /\ Xp = (fun x => x <> 4)) \/
(ph = E2 /\ ph' = LX /\ c4' = false /\ Xp = (fun x => x = 4)) \/
(ph = E2t /\ ph' = L1 /\ c4' = true /\ Xp = (fun _ => True)) \/
(ph = L2 /\ ph' = E1 /\ c4' = false /\ Xp = (fun _ => True)).
L675identical
89Lemmaob_ov_head
Lemma ob_ov_head ph ph' c4' Xp h p1 q1 n : ovtr ph ph' c4' Xp ->
PC ph false h 1 (S (S p1)) q1 n 0 -> PC ph' c4' 2 1 (h + 5) (S p1) (S n) (2 * (2 * 2 ^ n) - 2).
L681identical
90Lemmaob_ov_step
Lemma ob_ov_step ph ph' c4' Xp h i pp q p' q' m : ovtr ph ph' c4' Xp -> 1 <= i ->
PC ph false h i pp q (S m) 0 -> PC ph false h (S i) p' q' m 0 -> (m = 0 -> Xp p') ->
PC ph' c4' 2 (S i) q p' (S m) (2 * (2 * 2 ^ m) - 1).
L693identical
91Lemmaob_ov_base
Lemma ob_ov_base ph ph' c4' Xp h i pp q t : ovtr ph ph' c4' Xp -> 1 <= i ->
(ph = L2 -> 2 <= t) -> (ph <> L2 -> t = 1) ->
PC ph false h i pp q 0 0 -> PC ph' c4' 2 (S i) q (S t) 0 1.
L709identical
92Lemmaob_x1_head
Lemma ob_x1_head h p1 q1 n :
PC LX false h 1 (S (S p1)) q1 (S (S n)) 0 -> PC T0 false 2 1 (h + 5) (S p1) (S n) (2 * 2 ^ n - 2).
L721identical
93Lemmaob_x1_step
Lemma ob_x1_step h i pp q p' q' m : 1 <= i ->
PC LX false h i pp q (S (S (S m))) 0 -> PC LX false h (S i) p' q' (S (S m)) 0 ->
PC T0 false 2 (S i) q p' (S m) (2 * 2 ^ m - 1).
L728identical
94Lemmaob_x1_base
Lemma ob_x1_base h i pp q pa : 1 <= i ->
PC LX false h i pp q 2 0 -> PC LX false h (S i) (S pa) 1 1 0 -> PC T0 false 2 (S i) q (S pa) 0 0.
L736identical
95Lemmadv_zero
Lemma dv_zero Z : Forall dig0 Z -> dv Z = 0.
L745identical
96Lemmadv_tz'
Lemma dv_tz' Z R : Forall dig0 Z -> dv (map touch Z ++ R) = 2 ^ length Z - 1 + 2 ^ length Z * dv R.
L748identical
97Lemmaovp_len
Lemma ovp_len q Z t : length (ovp q Z t) = S (length Z).
L751identical
98Lemmaovp_dv
Lemma ovp_dv q Z t : dv (ovp q Z t) + 1 = 2 ^ S (length Z).
L754identical
99LemmaovpX_len
Lemma ovpX_len q Z pa : length (ovpX q Z pa) = S (length Z).
L760identical
100LemmaovpX_dv
Lemma ovpX_dv q Z pa : dv (ovpX q Z pa) + 1 = 2 ^ length Z.
L763identical
101FixpointlastOK
Fixpoint lastOK (Xp : nat -> Prop) (Z : list tri) : Prop :=
match Z with
| [] => True
| [(p,_,_)] => Xp p
| _ :: Z' => lastOK Xp Z'
end.
L769identical
102LemmalastOK_cons
Lemma lastOK_cons Xp p q d Z : lastOK Xp ((p,q,d) :: Z) -> (Z = [] -> Xp p) /\ lastOK Xp Z.
L776identical
103LemmalastOK_dec
Lemma lastOK_dec Z : lastOK (fun x => x = 4) Z \/ lastOK (fun x => x <> 4) Z.
L779identical
104LemmaAllI_ovp
Lemma AllI_ovp ph ph' c4' Xp h t : ovtr ph ph' c4' Xp -> (ph = L2 -> 2 <= t) -> (ph <> L2 -> t = 1) ->
forall Z i pp q, 1 <= i -> Forall dig0 Z -> lastOK Xp Z -> PC ph false h i pp q (length Z) 0 ->
AllI (PCx ph false h) (S i) Z -> AllI (PCx ph' c4' 2) (S i) (ovp q Z t).
L785identical
105LemmaAllI_ovpX
Lemma AllI_ovpX h pa pb : forall Z i pp q, 1 <= i -> Forall dig0 Z ->
PC LX false h i pp q (S (S (length Z))) 0 ->
AllI (PCx LX false h) (S i) (Z ++ [(S pa, 1, false); (pb, 1, false)]) ->
AllI (PCx T0 false 2) (S i) (ovpX q Z (S pa)).
L803identical
106Lemmapassq
Lemma passq ph c4 h i p q n tv : PC ph c4 h i p q n tv -> 2 <= tv -> tv mod 2 = 0 -> 2 <= q.
L825identical
107LemmaZ_okL
Lemma Z_okL ph c4 h : forall Z i x R, Forall dig0 Z -> dig x = true ->
AllI (PCx ph c4 h) i (Z ++ x :: R) -> Forall okL Z.
L831identical
108Lemmaborrow1
Lemma borrow1 ph c4 h k p n tv : 1 <= k -> tv mod 2 = 1 -> PC ph c4 h k p 1 n tv ->
(ph = L1 \/ ph = L2 \/ ph = LX) /\ 3 <= k /\
(ph = L1 -> 1 <= n /\ tv + 1 <= 2 ^ n /\ (c4 = true -> 2 <= n)) /\ (ph = LX -> 2 <= n).
L844identical
109Lemmaeven2
Lemma even2 x : (2 * x) mod 2 = 0.
L858identical
110Lemmapc_len
Lemma pc_len (Pr : nat -> tri -> list tri -> Prop) i P : AllI Pr i P -> True.
L861identical
111Lemmainv_Dec
Lemma inv_Dec ph c4 h Z p q R : Forall dig0 Z ->
AllI (PCx ph c4 h) 1 (Z ++ (p, S (S q), true) :: R) ->
AllI (PCx ph c4 (4 + h)) 1 (map touch Z ++ (S p, S q, false) :: R).
L867identical
112Lemmasnoc_nn
Lemma snoc_nn (Z : list tri) y : Z ++ [y] <> [].
L888identical
113Definitionminlen
Definition minlen (ph : phase) : nat := match ph with LX => 3 | L2 => 1 | _ => 2 end.
L891identical
114Lemmahead_len
Lemma head_len ph c4 h x Y : PCx ph c4 h 1 x Y -> minlen ph <= length Y.
L893identical
115LemmaAllI_len
Lemma AllI_len ph c4 h P : P <> [] -> AllI (PCx ph c4 h) 1 P -> S (minlen ph) <= length P.
L899identical
116Lemmaq2_V0
Lemma q2_V0 ph c4 h i p q n : PC ph c4 h i p q n 0 -> 1 <= n -> (ph = LX -> 2 <= n) -> 2 <= q.
L904identical
117Lemmap1_V0
Lemma p1_V0 ph c4 h p q n : PC ph c4 h 1 p q n 0 -> (ph = E2 \/ ph = E2t \/ ph = L2 \/ ph = LX) -> 2 <= p.
L910identical
118LemmaL2_c4_V0
Lemma L2_c4_V0 h i p q : PC L2 true h i p q 0 0 -> False.
L916identical
119LemmaAllI_okRO
Lemma AllI_okRO ph c4 h : forall Z i, Forall dig0 Z -> AllI (PCx ph c4 h) i Z -> Forall okR Z /\ Forall okO Z.
L919identical
120Lemmainv_Merge
Lemma inv_Merge ph c4 h Z p p' q' d' R0 : Forall dig0 Z ->
AllI (PCx ph c4 h) 1 (Z ++ (p, 1, true) :: (p', q', d') :: R0) ->
AllI (PCx ph c4 (4 + h)) 1 (map touch Z ++ (p + p' + 3, q', d') :: R0).
L927identical
121Lemmainv_MT
Lemma inv_MT c4 h Z p : Forall dig0 Z -> AllI (PCx L2 c4 h) 1 (Z ++ [(p, 1, true)]) ->
AllI (PCx L2 false (4 + h)) 1 (map touch Z) /\ 2 <= length Z.
L970identical
122Lemmainv_End
Lemma inv_End ph ph' h Z p q : endtr ph ph' -> Forall dig0 Z ->
AllI (PCx ph false h) 1 (Z ++ [(p, S (S q), false)]) ->
AllI (PCx ph' false (4 + h)) 1 (map touch Z ++ [(S p, S q, false)]).
L988identical
123Lemmainv_X2
Lemma inv_X2 h Z p q k : Forall dig0 Z -> 3 <= k ->
AllI (PCx T0 false h) 1 (Z ++ [(p, S (S q), false)]) ->
AllI (PCx E1t false (4 + h)) 1 (map touch Z ++ [(S p, S q, false); (3, k, true)]).
L1010identical
124Lemmainv_EndLast
Lemma inv_EndLast c4 h Z p : Forall dig0 Z -> AllI (PCx L1 c4 h) 1 (Z ++ [(p, 1, false)]) ->
AllI (PCx L2 c4 (4 + h)) 1 (map touch Z) /\ 2 <= length Z.
L1033identical
125Lemmainv_Ov
Lemma inv_Ov ph ph' c4' Xp h p1 q1 Z t : ovtr ph ph' c4' Xp -> (ph = L2 -> 2 <= t) -> (ph <> L2 -> t = 1) ->
Forall dig0 Z -> lastOK Xp Z ->
AllI (PCx ph false h) 1 ((S (S p1), q1, false) :: Z) ->
AllI (PCx ph' c4' 2) 1 ((h + 5, S p1, false) :: ovp q1 Z t).
L1050identical
126Lemmainv_X1
Lemma inv_X1 h p1 q1 Z pa pb : Forall dig0 Z ->
AllI (PCx LX false h) 1 ((S (S p1), q1, false) :: Z ++ [(S pa, 1, false); (pb, 1, false)]) ->
AllI (PCx T0 false 2) 1 ((h + 5, S p1, false) :: ovpX q1 Z (S pa)).
L1065identical
127Recordst
Record st := mkst { sh : nat; sP : list (nat*nat*bool); sT : Tl; sph : phase; sc4 : bool }.
L1084identical
128DefinitionCf
Definition Cf (s : st) : Q * tape := K (sh s) (sP s) (sT s).
L1086identical
129DefinitionTC
Definition TC (ph : phase) (c4 : bool) (T : Tl) : Prop :=
match ph with
| E1 | E1t | LX => T = TN /\ c4 = false
| L1 => T = TN
| E2 | E2t => T = TA 1 /\ c4 = false
| T0 => (exists k, T = TB k /\ 3 <= k) /\ c4 = false
… +2 lines
L1088identical
130DefinitionJ
Definition J (s : st) : Prop :=
sP s <> [] /\ TC (sph s) (sc4 s) (sT s) /\ AllI (PCx (sph s) (sc4 s) (sh s)) 1 (sP s).
L1097identical
131Lemmasplit1
Lemma split1 (P : list tri) :
(exists Z x R, P = Z ++ x :: R /\ Forall dig0 Z /\ dig x = true) \/ Forall dig0 P.
L1100identical
132LemmaZ_okL_V0
Lemma Z_okL_V0 ph c4 h y : ph <> LX -> forall Z i, Forall dig0 (Z ++ [y]) ->
AllI (PCx ph c4 h) i (Z ++ [y]) -> Forall okL Z.
L1112identical
133LemmalastOK_True
Lemma lastOK_True Z : lastOK (fun _ => True) Z.
L1122identical
134LemmaForall_snoc_inv
Lemma Forall_snoc_inv (Pr : tri -> Prop) Z y : Forall Pr (Z ++ [y]) -> Forall Pr Z /\ Pr y.
L1125identical
135Lemmalast_pc
Lemma last_pc ph c4 h Z p q d : Forall dig0 (Z ++ [(p,q,d)]) -> AllI (PCx ph c4 h) 1 (Z ++ [(p,q,d)]) ->
d = false /\ PC ph c4 h (1 + length Z) p q 0 0.
L1128identical
136Lemmafirst_pc
Lemma first_pc ph c4 h p q d Z : Forall dig0 ((p,q,d) :: Z) -> AllI (PCx ph c4 h) 1 ((p,q,d) :: Z) ->
d = false /\ PC ph c4 h 1 p q (length Z) 0 /\ Forall dig0 Z /\ AllI (PCx ph c4 h) 2 Z.
L1136identical
137LemmaJstep
Lemma Jstep : forall s, J s -> exists s', Cf s -->+ Cf s' /\ J s'.
L1146identical
138LemmaJ_base
Lemma J_base : J (mkst 2 base TN E1 false).
L1292identical
139Lemmanonhalt_D
Lemma nonhalt_D : ~ halts tm3 (D;; tape0).
L1299new
140Definitionphi
Definition phi (q : Q) : Q :=
match q with A => D | B => A | C => B | D => C | E => E | F => F end.
L1313new
141Lemmaperm_twin
Lemma perm_twin : Perm (flip tm) tm3 phi.
L1316new
142Lemmanonhalt
Lemma nonhalt: ~halts tm c0.
L1323adapted
5What a maintainer readsCheck: the rule table below is what the .v proves, and proof.md / README read cleanly for a maintainer.
submission/proof.md line 156: 2. Rules: unchanged

Every rule of parent §2 (Dec_k, DecMerge_k, DecMergeTail, DecMergeEmpty, End, EndLast, Ov, X1, X2) holds for K′ on the twin (Lemma C), with:

  • the same side conditions;
  • the same effect on (h, P, T);
  • the same number of steps.

The domain D and the outside cases (o1)–(o7) are the same sets of parameters.

For reference, here is the abstract form both machines share. In it:

  • Z: pairs with d = 0 and q ≥ 2;
  • touch (p,q,d) = (p+1,q-1,1-d);
  • ovp/ovpX: the parent's re-pairings.
Dec            (h; Z ++ (p,q+2,1) :: R; T)          -> (h+4; touch Z ++ (p+1,q+1,0) :: R; T)
DecMerge       (h; Z ++ (p,1,1) :: (p',q',d') :: R; T) -> (h+4; touch Z ++ (p+p'+3,q',d') :: R; T)
DecMergeTail   (h; Z ++ [(p,1,1)]; T1(t))           -> (h+4; touch Z; T1(p+t+3))
DecMergeEmpty  (h; Z ++ [(p,1,1)]; -)               -> (h+4; touch Z; T1(p+2))
End            (h; Z ++ [(p,q+2,0)]; -), V=0        -> (h+4; touch Z ++ [(p+1,q+1,0)]; T1(1))
EndLast        (h; Z ++ [(p,1,0)]; -), V=0          -> (h+4; touch Z; T1(p+4))
Ov             (h; (p1,q1,0) :: Z; T1(t)), V=0, p1>=2 -> (2; (h+5,p1-1,0) :: ovp q1 Z t; -)
X1             (h; (p1,q1,0) :: Z ++ [(pa,1,0);(pb,1,0)]; -), V=0, p1>=2 -> (2; (h+5,p1-1,0) :: ovpX q1 Z pa; T2(pb+3))
X2             (h; Z ++ [(p,q+2,0)]; T2(k)), V=0    -> (h+4; touch Z ++ [(p+1,q+1,0); (3,k,1)]; -)

As a check that does not go through Lemma C, 405 random rule instances (45 per rule, all h mod 4, sizes 2–300) were run on the twin's own table from mirrored words. They reach the predicted K′ exactly (§5).

6FamilyCheck: related machines are killed together or have a reason to be left open.

4 machines, 4 killed, 0 not. Family links: status.json parent, same transition table with another start (tools/dashboard.py), targeting.md follow-on rows, ledger "= twin" notes. A machine string named in a .v header / proof.md / notes.md is listed but does not make a family.

whomachinestatusrelation to this kill
#3 kill 41RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB---✓Killed: never haltsparent link; = #24's table mirrored, run from state B; targeting: follow-on to #3; named in #24's .v header; named in #24's proof.md; named in #24's notes.md; named in #3's notes.md · review · compared side by side above · mechanism
#25 kill 71RB1RF_1LC0LE_1RD0LB_1RA0RC_1RE1LB_0RD---✓Killed: never halts= #24's table mirrored, run from state D; named in #24's proof.md; named in #24's notes.md · review
#24 kill 81RB0RE_1LC0RA_1LD0LB_1LA1LF_1LE1RA_0LC---✓Killed: never haltsthis kill
#3b kill 121RB0RD_1RC1RF_1LD0LE_1RA0LC_1RE1LC_0RA---✓Killed: never halts= #24's table mirrored, run from state C; named in #3b's proof.md · review · mechanism
7ChecklistCheck: every ✓ is computed; the two ○ are yours to decide; an amber ! is an optional check that did not finish.
  • ✓
    Machine string exact
    the .v literal == holdout list line 622 byte for byte
  • ✓
    Statement is ~halts tm c0
    parsed from the .v and confirmed by check_kill (theorem_text, theorem_rocq)
  • ✓
    No axioms beyond baseline
    0 assumption(s); tools/assumptions_baseline.txt allows only functional_extensionality_dep
  • ✓
    coqchk finished (optional)
    coqchk pass in 12.26 s
  • ✓
    .v hash matches the checked hash
    .v = checked sha256 d3ce657f1502…; submission/ copy = checked sha256 d3ce657f1502…
  • ✓
    No repo-local paths in the .v
    comments name no path of ours (vendor/, machines/, tools/, rocq/, scripts/, reports/, atlas/, data/, journal/, /home/); busycoq's own verify/X.v is fine: none in the .v or the submission/ copy
  • ✓
    Public write-up is clean
    tools/writeup_lint.py on submission/proof.md: 0 error(s)
  • ○
    proof.md reviewed by Dennis (Checkpoint B)
    no Checkpoint B note from Dennis found
    • notes.md L59: - No Checkpoint B notes from Dennis were on file when this was packaged. If he adds any, fold them into proof.md and the submission copy first.
    • proof.md L1: # 1RB0RE_1LC0RA_1LD0LB_1LA1LF_1LE1RA_0LC---: informal proof (DELTA against kill #3; Checkpoint B)
    • proof.md L123: - Dennis's Checkpoint B reading (non-blocking).
  • ○
    Family posted together?
    3 other kill(s) in the family: #3, #25, #3b; the Discord draft names 2 of them

Generated by tools/killreview.py at 2026-10-16 13:29 PDT in 0.1 s from the files linked above; nothing in this review is hand-written except the box “How we proved it never halts” (above), which quotes how_proved.md. Re-run: python3 -B tools/killreview.py 1RB0RE_1LC0RA_1LD0LB_1LA1LF_1LE1RA_0LC---

Files

machines/<tm>/: 11 entries · raw notes, status, scripts, images

namesizechanged
notes.md ↓7.3 KB2026-10-10 10:24
proof.md ↓15 KB2026-10-10 10:12
how_proved.md ↓1.4 KB2026-10-14 10:51
status.json ↓650 B2026-10-13 06:44
1RB0RE_1LC0RA_1LD0LB_1LA1LF_1LE1RA_0LC---.v ↓65 KB2026-10-10 17:25
img/5 items2026-10-16 10:29
logs/1 item2026-10-10 09:42
rocq/9 items2026-10-10 10:22
submission/6 items2026-10-12 12:46
work/2 items2026-10-12 12:41
check_proof.py ↓22 KB2026-10-10 09:57
status.json in full
{
 "tm": "1RB0RE_1LC0RA_1LD0LB_1LA1LF_1LE1RA_0LC---",
 "status": "KILLED_NONHALT",
 "stage": "done",
 "updated": "2026-10-10",
 "reason": "check_kill PASS, independently re-verified",
 "parent": "1RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB---",
 "relation": "twin of #3: #3's table mirrored and renamed, different start state, nearly identical run",
 "pr": "https://github.com/ccz181078/busycoq/pull/15",
 "pr_file": "verify/Skelet1LikeC2_1RB0RE.v",
 "pr_state": "merged",
 "pr_opened": "2026-10-10",
 "posted": "2026-10-10 (bbchallenge Discord #bb6, by Dennis)",
 "pr_comments": 0,
 "pr_merged_at": "2026-10-13T12:25:47Z",
 "pr_merged_by": "ccz181078"
}