BB(6) hunt
Machines / #25

1RB1RF_1LC0LE_1RD0LB_1RA0RC_1RE1LB_0RD---

#25local proof 7Kill claimedSkelet 1-like Class 2bbchallenge ↗Explorerparent: #3

How we proved it never halts

#3's proof, 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 with two pairs of state letters swapped, so it is #3 started in state C instead of A. Watching it, you see #3's countdown with one block at the far end of the list a little longer.

What is new is the opening: after 79,114 steps the run reaches the checkpoint #3's argument starts from (#3 gets there after 78,710 steps), except that the last pair has 26 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. Side by side, the two runs then make the same move every time, this one with its far block 2 copies longer and a growing number of steps behind. That explains why nothing else changes, but the proof does not rely on it.

The Rocq file is #3's with the state names swapped and a new opening. It replays the 79,114 steps, checks the checklist there, and proves the result for this table directly.

#7local proof number
1,308lines of Rocq
70 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

Same table as #3, different start. Renaming the states by σ = (A C)(B D), with no mirror, gives #3's table. σ is the only one of the 720 × 2 maps that does. The twin starts in A = σ(C), so it runs #3's machine from 0^inf C> 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 · TM1 · on Submissions →
Rocq proof
check_kill PASS · first Oct 10 10:02
1,308 lines · 63 KB .v · compile 69.8 s · coqchk pass · 0 axioms · PASS Oct 10 10:02 (re-run Oct 10 17:27) · 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 273 of the previous list) · historical 740 line 273
#25eqv ×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 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 7 · Skelet 1-like Class 2 · the kill file 1RB1RF_1LC0LE_1RD0LB_1RA0RC_1RE1LB_0RD---.v: 1308 lines, 138 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) · 96% of our lines identical · vs #3: same table, started in #3's C; 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
1RB1RF_1LC0LE_1RD0LB_1RA0RC_1RE1LB_0RD---
vs holdout list
✓ byte-exact: the .v literal (L28) == 2026-10-07_778.txt line 293 (41 bytes, via tools/holdouts.py)
Theorem
✓ Lemma nonhalt : ~ halts tm c0. L1273
check_kill
✓ PASS · 17/17 checks pass · compile 69.81 s · coqchk pass (24.7 s) · assumptions: 0 (closed) · 2026-10-11 00:27:11 UTC · submission/check_kill.txt
Checked .v
sha256 3f1cd822496258de…
✓1RB1RF_1LC0LE_1RD0LB_1RA0RC_1RE1LB_0RD---.v3f1cd822496258de… = checked
✓submission/1RB1RF_1LC0LE_1RD0LB_1RA0RC_1RE1LB_0RD---.v3f1cd822496258de… = 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
✓input64076 bytes, 1308 lines, 1484 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 28: TM_from_str "1RB1RF_1LC0LE_1RD0LB_1RA0RC_1RE1LB_0RD---" == <tm> (41 bytes)
✓theorem_textline 1273: nonhalt : ~halts tm c0
✓coqcoqc 8.20.1 ([local working file]
✓nameshalts, c0, TM_from_str resolved inside Individual62
✓compilecompiled in 69.8s with all appended checks
✓tm_rocqBB6Kill.Candidate.tm = BusyCoq.Individual62.TM_from_str "1RB1RF_1LC0LE_1RD0LB_1RA0RC_1RE1LB_0RD---" by eq_refl (in-file and isolated)
✓theorem_rocqnonhalt : ~ halts (TM_from_str "1RB1RF_1LC0LE_1RD0LB_1RA0RC_1RE1LB_0RD---") 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 (24.7s); 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 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→C, B→D, C→A, D→B, E→E, F→F (#3's state → this machine's), no mirror. This machine starts in #3's state C (#3 itself starts in A). The only such map.

#3#3's row (read 0, read 1)σpredicted row: renamed by σthis machine's actual row
A1RB 0LD→ C1RD 0LB1RD 0LB✓start of #3
B1RC 0RA→ D1RA 0RC1RA 0RC✓
C1RD 1RF→ A1RB 1RF1RB 1RF✓start of this machine
D1LA 0LE→ B1LC 0LE1LC 0LE✓
E1RE 1LD→ E1RE 1LB1RE 1LB✓
F0RB ---→ F0RD ---0RD ---✓

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 σ; --- (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: it starts in #3's state C, 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 (#25), from blank in its A = #3's C
default view of 1RB1RF_1LC0LE_1RD0LB_1RA0RC_1RE1LB_0RD---
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.

#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 (#25), from blank in its A = #3's C
blaze view of 1RB1RF_1LC0LE_1RD0LB_1RA0RC_1RE1LB_0RD---
763 rows of 131,072 steps · 1,382 columns, every 16th cell · nonzeros 11,043 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.0089% at 1e9 (cells +4, nonzeros +3); the offset stays within 4 at every checkpoint instead of growing

stepscells visited (hi − lo + 1)nonzeros
#3thisratio (Δ)#3thisratio (Δ)
1e56726761.0060 (+4)3353351.0000 (+0)
1e62,2602,2641.0018 (+4)1,1251,1281.0027 (+3)
1e77,4437,4471.0005 (+4)3,7163,7171.0003 (+1)
1e822,09622,1001.0002 (+4)11,03911,0421.0003 (+3)
1e967,34367,3471.0001 (+4)33,66533,6681.0001 (+3)

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
96%of our lines identical to the template
38changed lines
2added lines (ours only)
2template lines dropped
118 / 20 / 0items identical / adapted / new
What the package README says it reused and changed (submission/README.md line 18, Template and what changed), quoted:

It extends kill #3's .v (1,303 lines; in #3's own package). A script applied proof.md §5, with no hand edits:

  • the TM string;
  • a simultaneous σ-swap of the state names in the 14 sweep lemmas and K ({{A}}→{{C}}, {{B}}↔{{D}});
  • init0 with (11,13);
  • base with last pair (1,26), and init (now 79,114 steps);
  • the header and rule-table comments.

Every es proof, the macro rules, J, Jstep and J_base are #3's text, unchanged. The file compiled on the first attempt. Apart from the state names, 36 lines differ. The file is 1,307 lines and imports only Individual62 from busycoq. It is a direct proof on the holdout string, with no equivalence lemma.

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 1129 lines
96% identical · 38 changed · 2 added
template 1129 lines
96% kept verbatim · 2 not in ours
our items 138
118 identical · 20 adapted · 0 new · 0 template-only
identicalchanged / adaptedours only (new)template only
Template part: whole file, lines 17–1303 (leading comment left out). Ours: lines 22–1308 (header comment 1–21 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 (1129 lines), 42 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.23From BusyCoq Require Import Individual62.
19Require Import Arith Lia List.24Require Import Arith Lia List.
⋯ 12 identical lines (template 20–37, ours 25–42)
38 During the long rightward sweep a passed pair [p,q+1,0] is left behind as43 During the long rightward sweep a passed pair [p,q+1,0] is left behind as
39 region (paper) 0 (01)^p 110 (01)^q 11, the 0 being the boundary cell. *)44 region (paper) 0 (01)^p 110 (01)^q 11, the 0 being the boundary cell. *)
41Lemma Start h r : 0inf <{{A}} [1;0]^^h *> [1;1;0;0;1] *> r -->+46Lemma Start h r : 0inf <{{C}} [1;0]^^h *> [1;1;0;0;1] *> r -->+
42 0inf <* <[1;0]^^(4+h) <* <[1;1;1] <* [0] {{B}}> r.47 0inf <* <[1;0]^^(4+h) <* <[1;1;1] <* [0] {{D}}> r.
43Proof. es. Qed.48Proof. es. Qed.
45Lemma PassR l p q r : l <* [0] {{B}}> [1;0]^^p *> [0;1]^^(S q) *> [0;0;1;0] *> r -->*50Lemma PassR l p q r : l <* [0] {{D}}> [1;0]^^p *> [0;1]^^(S q) *> [0;0;1;0] *> r -->*
46 l <* [0] <* <[0;1]^^p <* <[1;1;0] <* <[0;1]^^q <* <[1;1] <* [0] {{B}}> r.51 l <* [0] <* <[0;1]^^p <* <[1;1;0] <* <[0;1]^^q <* <[1;1] <* [0] {{D}}> r.
47Proof. es. Qed.52Proof. es. Qed.
49Lemma Borrow l p q r : l {{B}}> [1;0]^^p *> [0;1]^^(S (S q)) *> [0;0;0;1] *> r -->*54Lemma Borrow l p q r : l {{D}}> [1;0]^^p *> [0;1]^^(S (S q)) *> [0;0;0;1] *> r -->*
50 l <{{D}} [1;0]^^(S p) *> [0;1]^^(S q) *> [0;0;1;0] *> r.55 l <{{B}} [1;0]^^(S p) *> [0;1]^^(S q) *> [0;0;1;0] *> r.
51Proof. es. Qed.56Proof. es. Qed.
53Lemma PassL l p q r : l <* [0] <* <[0;1]^^p <* <[1;1;0] <* <[0;1]^^(S q) <* <[1;1] <* [0] <{{D}} r -->*58Lemma PassL l p q r : l <* [0] <* <[0;1]^^p <* <[1;1;0] <* <[0;1]^^(S q) <* <[1;1] <* [0] <{{B}} r -->*
54 l <* [0] <{{D}} [1;0]^^(S p) *> [0;1]^^(S q) *> [0;0;0;1] *> r.59 l <* [0] <{{B}} [1;0]^^(S p) *> [0;1]^^(S q) *> [0;0;0;1] *> r.
55Proof. es. Qed.60Proof. es. Qed.
57Lemma EndPh h r : 0inf <* <[1;0]^^(4+h) <* <[1;1;1] <* [0] <{{D}} r -->*62Lemma EndPh h r : 0inf <* <[1;0]^^(4+h) <* <[1;1;1] <* [0] <{{B}} r -->*
58 0inf <{{A}} [1;0]^^(4+h) *> [1;1;0;0;1] *> r.63 0inf <{{C}} [1;0]^^(4+h) *> [1;1;0;0;1] *> r.
59Proof. es. Qed.64Proof. es. Qed.
61Lemma EndT l p q : l <* <[0;1]^^p <* <[1;1;0] <* <[0;1]^^(S q) <* <[1;1] <* [0] {{B}}> 0inf -->*66Lemma EndT l p q : l <* <[0;1]^^p <* <[1;1;0] <* <[0;1]^^(S q) <* <[1;1] <* [0] {{D}}> 0inf -->*
62 l <{{D}} [1;0]^^(S p) *> [0;1]^^(S q) *> [0;0;1;0] *> [1;0;1] *> 0inf.67 l <{{B}} [1;0]^^(S p) *> [0;1]^^(S q) *> [0;0;1;0] *> [1;0;1] *> 0inf.
63Proof. es. Qed.68Proof. es. Qed.
65Lemma EndLastT l p : l <* <[0;1]^^p <* <[1;1;0] <* <[1;1] <* [0] {{B}}> 0inf -->*70Lemma EndLastT l p : l <* <[0;1]^^p <* <[1;1;0] <* <[1;1] <* [0] {{D}}> 0inf -->*
66 l <{{D}} [1;0]^^(p+4) *> [1] *> 0inf.71 l <{{B}} [1;0]^^(p+4) *> [1] *> 0inf.
67Proof. es. Qed.72Proof. es. Qed.
69Lemma MergeB l p p' r : l {{B}}> [1;0]^^p *> [0;1] *> [0;0;0;1] *> [1;0]^^p' *> r -->*74Lemma MergeB l p p' r : l {{D}}> [1;0]^^p *> [0;1] *> [0;0;0;1] *> [1;0]^^p' *> r -->*
70 l <{{D}} [1;0]^^(p+p'+3) *> r.75 l <{{B}} [1;0]^^(p+p'+3) *> r.
71Proof. es. Qed.76Proof. es. Qed.
73Lemma MergeE l p : l {{B}}> [1;0]^^p *> [0;1] *> [0;0;0;1] *> 0inf -->*78Lemma MergeE l p : l {{D}}> [1;0]^^p *> [0;1] *> [0;0;0;1] *> 0inf -->*
74 l <{{D}} [1;0]^^(p+2) *> [1] *> 0inf.79 l <{{B}} [1;0]^^(p+2) *> [1] *> 0inf.
75Proof. es. Qed.80Proof. es. Qed.
77Lemma OvT l t : l <* [0] {{B}}> [1;0]^^t *> [1] *> 0inf -->*82Lemma OvT l t : l <* [0] {{D}}> [1;0]^^t *> [1] *> 0inf -->*
78 l <{{D}} [0;1]^^(S t) *> [0;0;0;1] *> 0inf.83 l <{{B}} [0;1]^^(S t) *> [0;0;0;1] *> 0inf.
79Proof. es. Qed.84Proof. es. Qed.
81Lemma OvL l p q r : l <* [0] <* <[0;1]^^(S p) <* <[1;1;0] <* <[0;1]^^q <* <[1;1] <{{D}} r -->*86Lemma OvL l p q r : l <* [0] <* <[0;1]^^(S p) <* <[1;1;0] <* <[0;1]^^q <* <[1;1] <{{B}} r -->*
82 l <{{D}} [0;1]^^(S p) *> [0;0;0;1] *> [1;0]^^(S q) *> r.87 l <{{B}} [0;1]^^(S p) *> [0;0;0;1] *> [1;0]^^(S q) *> r.
83Proof. es. Qed.88Proof. es. Qed.
85Lemma OvEnd h p r : 0inf <* <[1;0]^^(4+h) <* <[1;1;1] <{{D}} [0;1]^^(S (S p)) *> [0;0;0;1] *> r -->*90Lemma OvEnd h p r : 0inf <* <[1;0]^^(4+h) <* <[1;1;1] <{{B}} [0;1]^^(S (S p)) *> [0;0;0;1] *> r -->*
86 0inf <{{A}} [1;0]^^2 *> [1;1;0;0;1] *> [1;0]^^(h+5) *> [0;1]^^(S p) *> [0;0;1;0] *> r.91 0inf <{{C}} [1;0]^^2 *> [1;1;0;0;1] *> [1;0]^^(h+5) *> [0;1]^^(S p) *> [0;0;1;0] *> r.
87Proof. es. Qed.92Proof. es. Qed.
89Lemma X1Sw l p r : l <* [0] <* <[0;1]^^(S p) <* <[1;1;0] <* <[1;1] <* [0] <{{D}} r -->*94Lemma X1Sw l p r : l <* [0] <* <[0;1]^^(S p) <* <[1;1;0] <* <[1;1] <* [0] <{{B}} r -->*
90 l <{{D}} [0;1]^^(S p) *> [0;0;1;0;1;0;1] *> r.95 l <{{B}} [0;1]^^(S p) *> [0;0;1;0;1;0;1] *> r.
91Proof. es. Qed.96Proof. es. Qed.
93Lemma 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 -->*98Lemma X2T l p q k : l <* <[0;1]^^p <* <[1;1;0] <* <[0;1]^^(S q) <* <[1;1] <* [0] {{D}}> [1;0;1;1;0;1] *> [0;1]^^(S k) *> 0inf -->*
94 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.99 l <{{B}} [1;0]^^(S p) *> [0;1]^^(S q) *> [0;0;1;0] *> [1;0]^^3 *> [0;1]^^(S k) *> [0;0;0;1] *> 0inf.
95Proof. es. Qed.100Proof. es. Qed.
97(** * The family K (proof.md section 1) *)102(** * The family K (proof.md section 1) *)
⋯ 12 identical lines (template 99–113, ours 104–118)
114 end.119 end.
116Definition K (h : nat) (P : list (nat*nat*bool)) (T : Tl) : Q * tape :=121Definition K (h : nat) (P : list (nat*nat*bool)) (T : Tl) : Q * tape :=
117 0inf <{{A}} [1;0]^^h *> [1;1;0;0;1] *> RP P (RT T).122 0inf <{{C}} [1;0]^^h *> [1;1;0;0;1] *> RP P (RT T).
119Definition pre (h : nat) : side := 0inf <* <[1;0]^^(4+h) <* <[1;1;1].124Definition pre (h : nat) : side := 0inf <* <[1;0]^^(4+h) <* <[1;1;1].
121(** region left behind by the rightward sweep over pair (p,q,_) *)126(** region left behind by the rightward sweep over pair (p,q,_) *)
⋯ 25 identical lines (template 122–152, ours 127–157)
153Qed.158Qed.
155Lemma PassesR Z : Forall okR Z -> forall l r,160Lemma PassesR Z : Forall okR Z -> forall l r,
156 l <* [0] {{B}}> RP Z r -->* LP Z l <* [0] {{B}}> r.161 l <* [0] {{D}}> RP Z r -->* LP Z l <* [0] {{D}}> r.
157Proof.162Proof.
158 induction Z as [|[[p q] d] Z IH]; intros HZ l r; cbn [RP LP]; [finish|].163 induction Z as [|[[p q] d] Z IH]; intros HZ l r; cbn [RP LP]; [finish|].
⋯ 4 identical lines (template 159–162, ours 164–167)
163Qed.168Qed.
165Lemma PassesL Z : Forall okL Z -> forall l r,170Lemma PassesL Z : Forall okL Z -> forall l r,
166 LP Z l <* [0] <{{D}} r -->* l <* [0] <{{D}} RP (map touch Z) r.171 LP Z l <* [0] <{{B}} r -->* l <* [0] <{{B}} RP (map touch Z) r.
167Proof.172Proof.
168 induction Z as [|[[p q] d] Z IH]; intros HZ l r; cbn [RP LP map]; [finish|].173 induction Z as [|[[p q] d] Z IH]; intros HZ l r; cbn [RP LP map]; [finish|].
⋯ 4 identical lines (template 169–172, ours 174–177)
173Qed.178Qed.
175Lemma OvPasses Z : Forall okO Z -> forall l r,180Lemma OvPasses Z : Forall okO Z -> forall l r,
176 LP Z l <{{D}} r -->* l <{{D}} OvR Z r.181 LP Z l <{{B}} r -->* l <{{B}} OvR Z r.
177Proof.182Proof.
178 induction Z as [|[[p q] d] Z IH]; intros HZ l r; cbn [OvR LP]; [finish|].183 induction Z as [|[[p q] d] Z IH]; intros HZ l r; cbn [OvR LP]; [finish|].
⋯ 143 identical lines (template 179–338, ours 184–343)
339 cbn [RP sd]. rewrite ovpX_eq. replace (pb+4) with (S (pb+3)) by lia. rewrite tailB_eq. reflexivity.344 cbn [RP sd]. rewrite ovpX_eq. replace (pb+4) with (S (pb+3)) by lia. rewrite tailB_eq. reflexivity.
340Qed.345Qed.
342(** * Start (proof.md 3.7): c0 reaches K0 = K(2; (11,11,0); -) in 956 steps, and the base347(** * Start (proof.md section 2): c0 reaches K0' = K(2; (11,13,0); -) in 1,088 steps, and the
343 E-start after overflow 6, K(2; (95,68,0),(34,33,1),(10,15,1),(1,24,1); -), in 78,710 steps.348 base E-start after overflow 6, K(2; (95,68,0),(34,33,1),(10,15,1),(1,26,1); -), in 79,114
344 Both by direct execution ([esx]); the second takes about 30 s. *)
349 steps. Both by direct execution ([esx]). *)
346Lemma init0 : c0 -->* K 2 [(11%nat, 11%nat, false)] TN.351Lemma init0 : c0 -->* K 2 [(11%nat, 13%nat, false)] TN.
347Proof. unfold K. cbn [RP RT sd]. esx. Qed.352Proof. unfold K. cbn [RP RT sd]. esx. Qed.
349Definition base : list (nat*nat*bool) :=354Definition 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)].355 [(95%nat, 68%nat, false); (34%nat, 33%nat, true); (10%nat, 15%nat, true); (1%nat, 26%nat, true)].
352Lemma init : c0 -->* K 2 base TN.357Lemma init : c0 -->* K 2 base TN.
353Proof. unfold K, base. cbn [RP RT sd]. esx. Qed.358Proof. unfold K, base. cbn [RP RT sd]. esx. Qed.
⋯ 824 identical lines (template 356–1273, ours 361–1278)
1275(*1280(*
1276```1281```
12771RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB---
12821RB1RF_1LC0LE_1RD0LB_1RA0RC_1RE1LB_0RD--- (= sigma of 1RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB---, sigma = (A C)(B D))
1279[p,q,d] := (10)^p (01)^q s(d), s(1) = 0001, s(0) = 0010 [RP]1284[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]1285K(h; P; T) := 0^inf <C (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]1286T 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)1287k := least j with d_j = 1; Z := pairs 1..k-1 (all d = 0, q >= 2)
⋯ 15 identical lines (template 1283–1298, ours 1288–1303)
1299invariant J (per pair, n = pairs to the right, tv = digit value from the pair up,1304invariant 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).1305 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); -)1306start: c0 -->(1,088) K(2; (11,13,0); -) -->(78,026) K(2; (95,68,0),(34,33,1),(10,15,1),(1,26,1); -)
1302```1307```
1303*)1308*)
4Proof outlineCheck: the new items (green) carry the argument; the names read like the proof.md rules.

138 items in 1RB1RF_1LC0LE_1RD0LB_1RA0RC_1RE1LB_0RD---.v (1308 lines): 102 Lemma, 25 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 "1RB1RF_1LC0LE_1RD0LB_1RA0RC_1RE1LB_0RD---").
L28identicalexcept the TM string
2Lemmaev_eq
Lemma ev_eq {c1 c2 c2'} : c1 -->* c2 -> c2 = c2' -> c1 -->* c2'.
L35identical
3Lemmaprog_eq
Lemma prog_eq {c1 c2 c2'} : c1 -->+ c2 -> c2 = c2' -> c1 -->+ c2'.
L38identical
4LemmaStart
Lemma Start h r : 0inf <{{C}} [1;0]^^h *> [1;1;0;0;1] *> r -->+
0inf <* <[1;0]^^(4+h) <* <[1;1;1] <* [0] {{D}}> r.
L46adapted
5LemmaPassR
Lemma PassR l p q r : l <* [0] {{D}}> [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] {{D}}> r.
L50adapted
6LemmaBorrow
Lemma Borrow l p q r : l {{D}}> [1;0]^^p *> [0;1]^^(S (S q)) *> [0;0;0;1] *> r -->*
l <{{B}} [1;0]^^(S p) *> [0;1]^^(S q) *> [0;0;1;0] *> r.
L54adapted
7LemmaPassL
Lemma PassL l p q r : l <* [0] <* <[0;1]^^p <* <[1;1;0] <* <[0;1]^^(S q) <* <[1;1] <* [0] <{{B}} r -->*
l <* [0] <{{B}} [1;0]^^(S p) *> [0;1]^^(S q) *> [0;0;0;1] *> r.
L58adapted
8LemmaEndPh
Lemma EndPh h r : 0inf <* <[1;0]^^(4+h) <* <[1;1;1] <* [0] <{{B}} r -->*
0inf <{{C}} [1;0]^^(4+h) *> [1;1;0;0;1] *> r.
L62adapted
9LemmaEndT
Lemma EndT l p q : l <* <[0;1]^^p <* <[1;1;0] <* <[0;1]^^(S q) <* <[1;1] <* [0] {{D}}> 0inf -->*
l <{{B}} [1;0]^^(S p) *> [0;1]^^(S q) *> [0;0;1;0] *> [1;0;1] *> 0inf.
L66adapted
10LemmaEndLastT
Lemma EndLastT l p : l <* <[0;1]^^p <* <[1;1;0] <* <[1;1] <* [0] {{D}}> 0inf -->*
l <{{B}} [1;0]^^(p+4) *> [1] *> 0inf.
L70adapted
11LemmaMergeB
Lemma MergeB l p p' r : l {{D}}> [1;0]^^p *> [0;1] *> [0;0;0;1] *> [1;0]^^p' *> r -->*
l <{{B}} [1;0]^^(p+p'+3) *> r.
L74adapted
12LemmaMergeE
Lemma MergeE l p : l {{D}}> [1;0]^^p *> [0;1] *> [0;0;0;1] *> 0inf -->*
l <{{B}} [1;0]^^(p+2) *> [1] *> 0inf.
L78adapted
13LemmaOvT
Lemma OvT l t : l <* [0] {{D}}> [1;0]^^t *> [1] *> 0inf -->*
l <{{B}} [0;1]^^(S t) *> [0;0;0;1] *> 0inf.
L82adapted
14LemmaOvL
Lemma OvL l p q r : l <* [0] <* <[0;1]^^(S p) <* <[1;1;0] <* <[0;1]^^q <* <[1;1] <{{B}} r -->*
l <{{B}} [0;1]^^(S p) *> [0;0;0;1] *> [1;0]^^(S q) *> r.
L86adapted
15LemmaOvEnd
Lemma OvEnd h p r : 0inf <* <[1;0]^^(4+h) <* <[1;1;1] <{{B}} [0;1]^^(S (S p)) *> [0;0;0;1] *> r -->*
0inf <{{C}} [1;0]^^2 *> [1;1;0;0;1] *> [1;0]^^(h+5) *> [0;1]^^(S p) *> [0;0;1;0] *> r.
L90adapted
16LemmaX1Sw
Lemma X1Sw l p r : l <* [0] <* <[0;1]^^(S p) <* <[1;1;0] <* <[1;1] <* [0] <{{B}} r -->*
l <{{B}} [0;1]^^(S p) *> [0;0;1;0;1;0;1] *> r.
L94adapted
17LemmaX2T
Lemma X2T l p q k : l <* <[0;1]^^p <* <[1;1;0] <* <[0;1]^^(S q) <* <[1;1] <* [0] {{D}}> [1;0;1;1;0;1] *> [0;1]^^(S k) *> 0inf -->*
l <{{B}} [1;0]^^(S p) *> [0;1]^^(S q) *> [0;0;1;0] *> [1;0]^^3 *> [0;1]^^(S k) *> [0;0;0;1] *> 0inf.
L98adapted
18Definitionsd
Definition sd (d : bool) : list Sym := if d then [0;0;0;1] else [0;0;1;0].
L104identical
19FixpointRP
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.
L106identical
20InductiveTl
Inductive Tl := TN | TA (t : nat) | TB (k : nat).
L112identical
21DefinitionRT
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.
L114identical
22DefinitionK
Definition K (h : nat) (P : list (nat*nat*bool)) (T : Tl) : Q * tape :=
0inf <{{C}} [1;0]^^h *> [1;1;0;0;1] *> RP P (RT T).
L121adapted
23Definitionpre
Definition pre (h : nat) : side := 0inf <* <[1;0]^^(4+h) <* <[1;1;1].
L124identical
24Definitionreg
Definition reg (p q : nat) (l : side) : side :=
l <* [0] <* <[0;1]^^p <* <[1;1;0] <* <[0;1]^^(pred q) <* <[1;1].
L127identical
25FixpointLP
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.
L130identical
26FixpointOvR
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.
L137identical
27Definitiontouch
Definition touch (x : nat*nat*bool) : nat*nat*bool :=
let '(p,q,d) := x in (S p, pred q, negb d).
L143identical
28DefinitionokR
Definition okR (x : nat*nat*bool) : Prop := let '(p,q,d) := x in d = false /\ 1 <= q.
L146identical
29DefinitionokL
Definition okL (x : nat*nat*bool) : Prop := let '(p,q,d) := x in d = false /\ 2 <= q.
L147identical
30DefinitionokO
Definition okO (x : nat*nat*bool) : Prop := let '(p,q,d) := x in 1 <= p /\ 1 <= q.
L148identical
31LemmaRP_app
Lemma RP_app Z W r : RP (Z ++ W) r = RP Z (RP W r).
L150identical
32LemmaLP_app
Lemma LP_app Z W l : LP (Z ++ W) l = LP W (LP Z l).
L155identical
33LemmaPassesR
Lemma PassesR Z : Forall okR Z -> forall l r,
l <* [0] {{D}}> RP Z r -->* LP Z l <* [0] {{D}}> r.
L160adapted
34LemmaPassesL
Lemma PassesL Z : Forall okL Z -> forall l r,
LP Z l <* [0] <{{B}} r -->* l <* [0] <{{B}} RP (map touch Z) r.
L170adapted
35LemmaOvPasses
Lemma OvPasses Z : Forall okO Z -> forall l r,
LP Z l <{{B}} r -->* l <{{B}} OvR Z r.
L180adapted
36LemmaokL_R
Lemma okL_R Z : Forall okL Z -> Forall okR Z.
L190identical
37LemmaDec
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.
L197identical
38LemmaDecMerge
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.
L208identical
39LemmaDecMergeTail
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)).
L219identical
40LemmaDecMergeEmpty
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)).
L230identical
41LemmaForall_snoc
Lemma Forall_snoc {A} (P : A -> Prop) Z x : Forall P Z -> P x -> Forall P (Z ++ [x]).
L241identical
42LemmaEndR
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).
L244identical
43LemmaEndLast
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)).
L256identical
44LemmaX2
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.
L268identical
45Fixpointovp
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.
L281identical
46Lemmaovp_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).
L287identical
47LemmaOv
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.
L293identical
48FixpointovpX
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.
L308identical
49LemmaovpX_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).
L314identical
50LemmatailB_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).
L320identical
51LemmaX1
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)).
L328identical
52Lemmainit0
Lemma init0 : c0 -->* K 2 [(11%nat, 13%nat, false)] TN.
L351adapted
53Definitionbase
Definition base : list (nat*nat*bool) :=
[(95%nat, 68%nat, false); (34%nat, 33%nat, true); (10%nat, 15%nat, true); (1%nat, 26%nat, true)].
L354adapted
54Lemmainit
Lemma init : c0 -->* K 2 base TN.
L357identical
55Definitionbv
Definition bv (d : bool) : nat := if d then 1 else 0.
L369identical
56Fixpointdv
Fixpoint dv (P : list tri) : nat :=
match P with
| [] => 0
| (_,_,d) :: P' => bv d + 2 * dv P'
end.
L371identical
57Definitiondig
Definition dig (x : tri) : bool := let '(_,_,d) := x in d.
L377identical
58Definitiondig0
Definition dig0 (x : tri) : Prop := dig x = false.
L378identical
59Lemmadv_lt
Lemma dv_lt P : dv P < 2 ^ length P.
L382identical
60Lemmadv_zeros
Lemma dv_zeros Z R : Forall dig0 Z -> dv (Z ++ R) = 2 ^ length Z * dv R.
L388identical
61Lemmadv_tz
Lemma dv_tz Z R : Forall dig0 Z -> dv (map touch Z ++ R) + 1 = 2 ^ length Z + 2 ^ length Z * dv R.
L395identical
62FixpointAllI
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.
L403identical
63LemmaAllI_app
Lemma AllI_app Pr Z : forall i R, AllI Pr i (Z ++ R) -> AllI Pr (i + length Z) R.
L409identical
64LemmaAllI_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.
L416identical
65LemmaAllI_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.
L424identical
66LemmaAllI_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').
L433identical
67Inductivephase
Inductive phase := E1 | E2 | E1t | E2t | T0 | L1 | L2 | LX.
L454identical
68DefinitionPN
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
L457identical
69DefinitionPI
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
L500identical
70DefinitionPC
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.
L521identical
71DefinitionLift
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)).
L524identical
72DefinitionPCx
Definition PCx (ph : phase) (c4 : bool) (h : nat) := Lift (PC ph c4 h).
L527identical
73Lemmapow_pos
Lemma pow_pos n : 1 <= 2 ^ n.
L536identical
74Lemmaob_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).
L540identical
75Lemmapow_S
Lemma pow_S n : 2 ^ S n = 2 * 2 ^ n.
L548identical
76Lemmaob_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).
L556identical
77Lemmaob_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).
L572identical
78Lemmaob_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.
L581identical
79Lemmaob_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.
L590identical
80Definitionendtr
Definition endtr (ph ph' : phase) : Prop := (ph = E1 /\ ph' = E2) \/ (ph = E1t /\ ph' = E2t).
L598identical
81Lemmaob_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).
L600identical
82Lemmaob_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.
L608identical
83Lemmaob_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).
L617identical
84Lemmaob_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).
L626identical
85Lemmaob_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.
L634identical
86Lemmaob_x2_new
Lemma ob_x2_new h i k : 3 <= i -> 3 <= k -> PC E1t false h i 3 k 0 1.
L642identical
87Definitionovtr
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)).
L650identical
88Lemmaob_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).
L656identical
89Lemmaob_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).
L668identical
90Lemmaob_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.
L684identical
91Lemmaob_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).
L696identical
92Lemmaob_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).
L703identical
93Lemmaob_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.
L711identical
94Lemmadv_zero
Lemma dv_zero Z : Forall dig0 Z -> dv Z = 0.
L720identical
95Lemmadv_tz'
Lemma dv_tz' Z R : Forall dig0 Z -> dv (map touch Z ++ R) = 2 ^ length Z - 1 + 2 ^ length Z * dv R.
L723identical
96Lemmaovp_len
Lemma ovp_len q Z t : length (ovp q Z t) = S (length Z).
L726identical
97Lemmaovp_dv
Lemma ovp_dv q Z t : dv (ovp q Z t) + 1 = 2 ^ S (length Z).
L729identical
98LemmaovpX_len
Lemma ovpX_len q Z pa : length (ovpX q Z pa) = S (length Z).
L735identical
99LemmaovpX_dv
Lemma ovpX_dv q Z pa : dv (ovpX q Z pa) + 1 = 2 ^ length Z.
L738identical
100FixpointlastOK
Fixpoint lastOK (Xp : nat -> Prop) (Z : list tri) : Prop :=
match Z with
| [] => True
| [(p,_,_)] => Xp p
| _ :: Z' => lastOK Xp Z'
end.
L744identical
101LemmalastOK_cons
Lemma lastOK_cons Xp p q d Z : lastOK Xp ((p,q,d) :: Z) -> (Z = [] -> Xp p) /\ lastOK Xp Z.
L751identical
102LemmalastOK_dec
Lemma lastOK_dec Z : lastOK (fun x => x = 4) Z \/ lastOK (fun x => x <> 4) Z.
L754identical
103LemmaAllI_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).
L760identical
104LemmaAllI_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)).
L778identical
105Lemmapassq
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.
L800identical
106LemmaZ_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.
L806identical
107Lemmaborrow1
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).
L819identical
108Lemmaeven2
Lemma even2 x : (2 * x) mod 2 = 0.
L833identical
109Lemmapc_len
Lemma pc_len (Pr : nat -> tri -> list tri -> Prop) i P : AllI Pr i P -> True.
L836identical
110Lemmainv_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).
L842identical
111Lemmasnoc_nn
Lemma snoc_nn (Z : list tri) y : Z ++ [y] <> [].
L863identical
112Definitionminlen
Definition minlen (ph : phase) : nat := match ph with LX => 3 | L2 => 1 | _ => 2 end.
L866identical
113Lemmahead_len
Lemma head_len ph c4 h x Y : PCx ph c4 h 1 x Y -> minlen ph <= length Y.
L868identical
114LemmaAllI_len
Lemma AllI_len ph c4 h P : P <> [] -> AllI (PCx ph c4 h) 1 P -> S (minlen ph) <= length P.
L874identical
115Lemmaq2_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.
L879identical
116Lemmap1_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.
L885identical
117LemmaL2_c4_V0
Lemma L2_c4_V0 h i p q : PC L2 true h i p q 0 0 -> False.
L891identical
118LemmaAllI_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.
L894identical
119Lemmainv_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).
L902identical
120Lemmainv_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.
L945identical
121Lemmainv_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)]).
L963identical
122Lemmainv_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)]).
L985identical
123Lemmainv_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.
L1008identical
124Lemmainv_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).
L1025identical
125Lemmainv_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)).
L1040identical
126Recordst
Record st := mkst { sh : nat; sP : list (nat*nat*bool); sT : Tl; sph : phase; sc4 : bool }.
L1059identical
127DefinitionCf
Definition Cf (s : st) : Q * tape := K (sh s) (sP s) (sT s).
L1061identical
128DefinitionTC
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
L1063identical
129DefinitionJ
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).
L1072identical
130Lemmasplit1
Lemma split1 (P : list tri) :
(exists Z x R, P = Z ++ x :: R /\ Forall dig0 Z /\ dig x = true) \/ Forall dig0 P.
L1075identical
131LemmaZ_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.
L1087identical
132LemmalastOK_True
Lemma lastOK_True Z : lastOK (fun _ => True) Z.
L1097identical
133LemmaForall_snoc_inv
Lemma Forall_snoc_inv (Pr : tri -> Prop) Z y : Forall Pr (Z ++ [y]) -> Forall Pr Z /\ Pr y.
L1100identical
134Lemmalast_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.
L1103identical
135Lemmafirst_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.
L1111identical
136LemmaJstep
Lemma Jstep : forall s, J s -> exists s', Cf s -->+ Cf s' /\ J s'.
L1121identical
137LemmaJ_base
Lemma J_base : J (mkst 2 base TN E1 false).
L1267identical
138Lemmanonhalt
Lemma nonhalt : ~ halts tm c0.
L1273identical
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 152: The rules, for M

The rules below are in busycoq comment style. They use two abbreviations:

Z              := pairs 1..k-1, all with d = 0 and q >= 2
touch (p,q,d)  := (p+1, q-1, 1-d)
1RB1RF_1LC0LE_1RD0LB_1RA0RC_1RE1LB_0RD---       (= sigma of 1RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB---, sigma = (A C)(B D))

[p,q,d] := (10)^p (01)^q s(d),  s(1) = 0001, s(0) = 0010
K(h; P; T) := 0^inf <C (10)^h 11001 [p_1,q_1,d_1] ... [p_L,q_L,d_L] T 0^inf,   T in { -, (10)^t 1, (101)^2 (01)^k }

Dec            K(h; Z ++ (p,q+2,1) :: R; T)             -->+ K(h+4; touch Z ++ (p+1,q+1,0) :: R; T)
DecMerge       K(h; Z ++ (p,1,1) :: (p',q',d') :: R; T)  -->+ K(h+4; touch Z ++ (p+p'+3,q',d') :: R; T)
DecMergeTail   K(h; Z ++ [(p,1,1)]; (10)^t 1)           -->+ K(h+4; touch Z; (10)^(p+t+3) 1)
DecMergeEmpty  K(h; Z ++ [(p,1,1)]; -)                  -->+ K(h+4; touch Z; (10)^(p+2) 1)
End            K(h; Z ++ [(p,q+2,0)]; -)                -->+ K(h+4; touch Z ++ [(p+1,q+1,0)]; (10)^1 1)
EndLast        K(h; Z ++ [(p,1,0)]; -)                  -->+ K(h+4; touch Z; (10)^(p+4) 1)
X2             K(h; Z ++ [(p,q+2,0)]; (101)^2 (01)^(k+1)) -->+ K(h+4; touch Z ++ [(p+1,q+1,0); (3,k+1,1)]; -)
Ov             K(h; (p1+2,q1,0) :: Y; (10)^t 1)         -->+ K(2; (h+5,p1+1,0) :: ovp q1 Y t; -)
X1             K(h; (p1+2,q1,0) :: Y ++ [(pa+1,1,0); (pb,1,0)]; -)
                                                        -->+ K(2; (h+5,p1+1,0) :: ovpX q1 Y (pa+1); (101)^2 (01)^(pb+3))
               (Ov, X1: Y all d = 0, all p,q >= 1, q1 >= 1)
               ovp q [] t = [(q,t+1,1)],    ovp q ((p',q',_) :: Y) t = (q,p',1) :: ovp q' Y t
               ovpX q [] pa = [(q,pa,0)],   ovpX q ((p',q',_) :: Y) pa = (q,p',1) :: ovpX q' Y pa

start: c0 -->(1,088) K(2; (11,13,0); -) -->(78,026) K(2; (95,68,0),(34,33,1),(10,15,1),(1,26,1); -)
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; = #25's table, run from state C; targeting: follow-on to #3; named in #25's .v header; named in #25's proof.md; named in #25'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 haltsthis kill
#24 kill 81RB0RE_1LC0RA_1LD0LB_1LA1LF_1LE1RA_0LC---✓Killed: never halts= #25's table mirrored, run from state B; named in #24's proof.md; named in #24's notes.md · review
#3b kill 121RB0RD_1RC1RF_1LD0LE_1RA0LC_1RE1LC_0RA---✓Killed: never halts= #25's table, run from state D; 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 293 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 24.7 s
  • ✓
    .v hash matches the checked hash
    .v = checked sha256 3f1cd8224962…; submission/ copy = checked sha256 3f1cd8224962…
  • ✓
    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 L55: - proof.md, a copy with updated title, header (status, AI line, parent pointer), §5 heading and a "Done as planned" paragraph with a delta-to-lemma map, plus a §7 note that no Checkpoint B notes were on file. The working
    • notes.md L63: - 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: # 1RB1RF_1LC0LE_1RD0LB_1RA0RC_1RE1LB_0RD---: delta proof from kill #3 (Checkpoint B)
    • proof.md L168: ## 7. Checkpoint B (Dennis)
  • ○
    Family posted together?
    3 other kill(s) in the family: #3, #24, #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 1RB1RF_1LC0LE_1RD0LB_1RA0RC_1RE1LB_0RD---

Files

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

namesizechanged
notes.md ↓6.5 KB2026-10-10 10:04
proof.md ↓14 KB2026-10-10 09:52
how_proved.md ↓1.2 KB2026-10-14 10:51
status.json ↓637 B2026-10-13 06:44
1RB1RF_1LC0LE_1RD0LB_1RA0RC_1RE1LB_0RD---.v ↓63 KB2026-10-10 17:25
img/5 items2026-10-16 10:29
rocq/6 items2026-10-10 10:02
submission/6 items2026-10-12 12:47
work/2 items2026-10-12 12:41
check_proof.out ↓5.1 KB2026-10-10 09:43
check_proof.py ↓20 KB2026-10-10 09:42
check_proof_l600.out ↓5.1 KB2026-10-10 09:52
status.json in full
{
 "tm": "1RB1RF_1LC0LE_1RD0LB_1RA0RC_1RE1LB_0RD---",
 "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 renamed, different start state, nearly identical run",
 "pr": "https://github.com/ccz181078/busycoq/pull/15",
 "pr_file": "verify/Skelet1LikeC2_1RB1RF.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"
}