BB(6) hunt
Machines / #3b

1RB0RD_1RC1RF_1LD0LE_1RA0LC_1RE1LC_0RA---

#3blocal proof 12Kill 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 four state letters renamed, started in the state that is #3's B instead of A. Watching it, you see the same countdown on a run of its own: the blocks have other lengths, and it is not a copy of #3's run.

Everything in #3's proof that does not depend on the start carries over unchanged: the nine moves, the checklist, and the argument that once the checklist holds at a checkpoint (every second regrouping of the list), it holds again at the next one. What is new is the opening. After 38,732 steps the run reaches a checkpoint with three pairs, the fewest the checklist allows, and every inequality holds there. From then on #3's argument applies, so this machine never halts either.

The Rocq file is #3's with the states renamed and a new opening. It replays the 38,732 steps, checks the checklist there, and proves the result for this table directly.

#12local proof number
1,309lines of Rocq
51 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

Kill #3's table renamed (A->D, B->A, C->B, D->C), started in #3's B: same 9 rules, its own orbit, 3-pair base.

Submitted mechanism Same table as #3, different start. Renaming the states by ρ: A→D, B→A, C→B, D→C (E and F fixed, no mirror) gives #3's table. ρ is the only one of the 720 × 2 maps that does. The machine starts in A = ρ(B), so it runs #3's machine from 0^inf B> 0^inf. (submission/README.md, Mechanism)

parent 1RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB--- (#3; siblings #25, #24)

Upstream
Kill claimed · PR #15merged 2026-10-13 12:25 UTC by ccz181078 · Sk1Class2_v1.v · TM3 · on Submissions →
Rocq proof
check_kill PASS · first Oct 10 12:26
1,309 lines · 63 KB .v · compile 51.2 s · coqchk pass · 0 axioms · PASS Oct 10 12:26 (re-run Oct 10 17:03)
· 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 2ours: Skelet 1-like Class 2 (sheet) · ours adds: kill #3's table renamed by DABCEF (no mirror), started in #3's state B · high confidence
On the list
not on BB6_holdouts_663.txt (line 568 of the previous list) · historical 740 line 568
eqv ×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.

How it works: 3 notes
  • Every transition is #3's under rho = DABCEF (no mirror); the twin's blank run is #3's run from 0^inf B> 0^inf (lockstep 2e6 steps).
  • So #3's binary down-counter on (10)^p (01)^q pairs, its 9 macro rules and INV+(e) apply verbatim, with head state D.
  • Different orbit, not coupled to #3: base K(2;(47,32,0),(40,33,1),(13,34,1);-) at step 38,732 has 3 pairs (L*=3), not 4.

Figures for Checkpoint A

Fig 1 · This machine, every 1M steps to 1e9✓ Q1

Bands are pair blocks. Compare with Fig 2: same window, same sampling, same steps.

This machine, every 1M steps to 1e9
bbchallenge-defaultStart blankRows every 1,000,000 stepsWindow cells -81,510..409, 1 px = 32 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 32nd cell is drawn; all drawn cells are even · Colors: Sampling every 32nd cell turns the 1010..; tape into solid bands, so each colour edge is a pair boundary: vertical edge = digit block, slanted edge = (10)|(01) split; thin horizontal streaks = rows caught mid-sweep
Fig 2 · Parent kill #3, same view✓ Q1

Kill #3 from its own blank start, drawn exactly like Fig 1. Compare band shapes and the left edge.

Parent kill #3, same view
bbchallenge-defaultStart blankRows every 1,000,000 stepsWindow cells -81,510..409, 1 px = 32 cellsColors 1 0 on the drawn cells head
Rows: (1,001 rows, steps 0..1,000,000,000) of kill #3 1RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB---: big jumps between rows · Window: only every 32nd cell is drawn; all drawn cells are even · Colors: Sampling every 32nd cell turns the 1010..; tape into solid bands, so each colour edge is a pair boundary: vertical edge = digit block, slanted edge = (10)|(01) split; thin horizontal streaks = rows caught mid-sweep
Fig 3 · Left records up to the baseQ2

One row per new leftmost cell, so roughly 8 rows per decrement. The base is the last rows (step 38,732).

Left records up to the base
bbchallenge-defaultStart blankRows the start, then one row per new leftmost cellWindow cells -374..51, 1 px = 1 cellColors 1 0 on the drawn cells head
Rows: (375 rows, steps 0..38,792; not evenly spaced in time), 1 row = 2 px · Window: only every 2nd cell is drawn, 2 px wide; all drawn cells are even · Colors: green: always at the new left edge; On the 1010..; tape each band is a (10) or (01) run, so colour edges are pair boundaries
Fig 4 · Every cell across two re-pairs, annotatedQ2viewer ↗

A slice of Fig 3, one row per decrement, every cell drawn. Follow purple blocks and blue/orange borders down.

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 D reaches a new left edge with the tape reading (10)^h 11001... (21 rows, steps 3,520..21,790, all of them rows of Fig 3); 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,945 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 (1)Fig 5: bbchallenge default view, first 10,000 steps
Fig 5 · bbchallenge default view, first 10,000 stepsviewer ↗

The site's view: the tape grows 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 (9/9 validated)exact tape rewrites the proof will formalize, each re-checked by simulation
rulefrom ⟶ tocasesstepschecked
Dec
K(h; Z ++ (p,q+2,1) :: R; T)
⟶ K(h+4; touch Z ++ (p+1,q+1,0) :: R; T)
K(h;P;T) = 0^inf <D (10)^h 11001 [p_1,q_1,d_1]...[p_L,q_L,d_L] T 0^inf, [p,q,d] = (10)^p (01)^q s(d), s(1)=0001, s(0)=0010. Z = pairs below the first d=1, all d=0, q>=2; touch (p,q,d) = (p+1,q-1,1-d). #3's rule with <A read as <D—✓45/45
DecMerge
K(h; Z ++ (p,1,1) :: (p',q',d') :: R; T)
⟶ K(h+4; touch Z ++ (p+p'+3,q',d') :: R; T)
q runs out on the 1->0 digit: fuse with the next pair—✓45/45
DecMergeTail
K(h; Z ++ [(p,1,1)]; (10)t 1)
⟶ K(h+4; touch Z; (10)p+t+3 1)
the last pair runs out into the T1 tail—✓45/45
DecMergeEmpty
K(h; Z ++ [(p,1,1)]; -)
⟶ K(h+4; touch Z; (10)p+2 1)
the last pair runs out, no tail (never on the orbit)—✓45/45
End
K(h; Z ++ [(p,q+2,0)]; -)
⟶ K(h+4; touch Z ++ [(p+1,q+1,0)]; (10)1 1)
V = 0, no tail: adds tail T1(1)—✓45/45
EndLast
K(h; Z ++ [(p,1,0)]; -)
⟶ K(h+4; touch Z; (10)p+4 1)
V = 0, last q = 1: last pair becomes the tail—✓45/45
Ov
K(h; (p1+2,q1,0) :: Y; (10)t 1)
⟶ K(2; (h+5,p1+1,0) :: ovp q1 Y t; -)
V = 0 with tail: re-pairing (q_j, p_{j+1}), one more pair, h back to 2—✓45/45
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)
V = 0, last two q = 1: re-pairing with tail T2—✓45/45
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)]; -)
V = 0 with tail T2: End-like, appends pair (3,k+1,1)—✓45/45
Compressed historythe tape as 0∞ <D (10)2 11001 [p_1,q_1,0] [p_2,q_2,1] ... [p_L,q_L,1] 0∞ (right after each re-pairing) at 26 moments: where the rules are read off
0∞ <D (10)2 11001 [p_1,q_1,0] [p_2,q_2,1] ... [p_L,q_L,1] 0∞ (right after each re-pairing)
stepre-pairingstart typeLp_1q_1far pair (p,q)
1,0831L-start2117(3,2)
3,5202E-start22314(3,9)
6,9653L-start32326(7,2)
17,7384E-start24732(16,30)
23,8715L-start32350(28,2)
38,7326E-start34732(13,34)
56,0017L-start44756(32,2)
104,5108E-start49568(10,38)
165,9159L-start595116(36,2)
348,77610E-start5191140(7,42)
587,42111L-start6191236(40,2)
1,309,17812E-start6383284(4,46)
2,258,53513L-start7383476(44,2)
4,972,33214E-start6735564(1,50)
6,548,08115L-start7383828(48,2)
9,588,56616E-start6639540(12,87)
11,389,96317L-start7383732(85,2)
15,570,40018E-start7767572(9,91)
20,220,55719L-start8767956(89,2)
33,046,25820E-start81,5351,148(6,95)
49,091,35121L-start91,5351,916(93,2)
91,111,28422E-start82,8152,236(3,99)
116,290,88123L-start91,5353,196(97,2)
177,724,64624E-start83,0712,300(42,340)
208,390,41925L-start91,5353,452(338,2)
278,407,76026E-start93,0712,300(39,344)
re-pairinglast 26
2611,0832.8e8log xstep 1083: re-pairing = 1step 3520: re-pairing = 2step 6965: re-pairing = 3step 17738: re-pairing = 4step 23871: re-pairing = 5step 38732: re-pairing = 6step 56001: re-pairing = 7step 104510: re-pairing = 8step 165915: re-pairing = 9step 348776: re-pairing = 10step 587421: re-pairing = 11step 1309178: re-pairing = 12step 2258535: re-pairing = 13step 4972332: re-pairing = 14step 6548081: re-pairing = 15step 9588566: re-pairing = 16step 11389963: re-pairing = 17step 15570400: re-pairing = 18step 20220557: re-pairing = 19step 33046258: re-pairing = 20step 49091351: re-pairing = 21step 91111284: re-pairing = 22step 116290881: re-pairing = 23step 177724646: re-pairing = 24step 208390419: re-pairing = 25step 278407760: re-pairing = 26
start typelast E-start
not plottable
Llast 9
921,0832.8e8log xstep 1083: L = 2step 3520: L = 2step 6965: L = 3step 17738: L = 2step 23871: L = 3step 38732: L = 3step 56001: L = 4step 104510: L = 4step 165915: L = 5step 348776: L = 5step 587421: L = 6step 1309178: L = 6step 2258535: L = 7step 4972332: L = 6step 6548081: L = 7step 9588566: L = 6step 11389963: L = 7step 15570400: L = 7step 20220557: L = 8step 33046258: L = 8step 49091351: L = 9step 91111284: L = 8step 116290881: L = 9step 177724646: L = 8step 208390419: L = 9step 278407760: L = 9
p_1last 3,071
3,071111,0832.8e8log xstep 1083: p_1 = 11step 3520: p_1 = 23step 6965: p_1 = 23step 17738: p_1 = 47step 23871: p_1 = 23step 38732: p_1 = 47step 56001: p_1 = 47step 104510: p_1 = 95step 165915: p_1 = 95step 348776: p_1 = 191step 587421: p_1 = 191step 1309178: p_1 = 383step 2258535: p_1 = 383step 4972332: p_1 = 735step 6548081: p_1 = 383step 9588566: p_1 = 639step 11389963: p_1 = 383step 15570400: p_1 = 767step 20220557: p_1 = 767step 33046258: p_1 = 1535step 49091351: p_1 = 1535step 91111284: p_1 = 2815step 116290881: p_1 = 1535step 177724646: p_1 = 3071step 208390419: p_1 = 1535step 278407760: p_1 = 3071
q_1last 2,300
3,45271,0832.8e8log xstep 1083: q_1 = 7step 3520: q_1 = 14step 6965: q_1 = 26step 17738: q_1 = 32step 23871: q_1 = 50step 38732: q_1 = 32step 56001: q_1 = 56step 104510: q_1 = 68step 165915: q_1 = 116step 348776: q_1 = 140step 587421: q_1 = 236step 1309178: q_1 = 284step 2258535: q_1 = 476step 4972332: q_1 = 564step 6548081: q_1 = 828step 9588566: q_1 = 540step 11389963: q_1 = 732step 15570400: q_1 = 572step 20220557: q_1 = 956step 33046258: q_1 = 1148step 49091351: q_1 = 1916step 91111284: q_1 = 2236step 116290881: q_1 = 3196step 177724646: q_1 = 2300step 208390419: q_1 = 3452step 278407760: q_1 = 2300
far pair (p,q)last (39,344)
not plottable
Template comparisontemplate: applies · the nearest solved proof, what carries over, and the transitions that differ
01
A1RB0RD
B1RC1RF
C1LD0LE
D1RA0LC
E1RE1LC
F0RA---
file
—
module
—
machine
1RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB--- (8 transitions apart)
diff
none under rho = DABCEF: all 12 entries equal after renaming states (no mirror); the start state differs (#3's B)
note
Template = our kill #3's .v (machines/1RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB---/, sha256 cfa603a3..., check_kill PASS): rename {{A}}->{{D}}, {{B}}->{{A}}, {{D}}->{{C}}; new 38,732-step esx init and 3-pair base; J, Jstep, J_base script verbatim. Same recipe as #25.
Proof strategy & riskshow the formal proof will go · 3 risks to watch

Delta proof (proof.md): Lemma R (renaming) transports #3's rules, INV+(e) and the period theorem; only init and base change. Formal: #3's .v with rho applied to the state names, init = one esx of 38,732 steps to the 3-pair base, J_base by computation. Then tools/check_kill.sh.

  • ▲The base has 3 pairs (L* = 3, INV+(e)'s lower edge); the theorem covers it and J holds there, but it is the one structural difference from #3/#25/#24.
  • ▲A 38,732-step esx init; #3's 78,710-step one took about 30 s, so this should be fine.
  • ▲Discord #bb6 not searched for this string yet; search before posting.
Stats & provenance109 steps simulated · 79,454 cells · the status in full · files
simulated
109 steps
tape
79,454 cells · 39,718 nonzeros
growth
left edge ~ t^0.5 (cells -79,241..212 at 1e9; #3: 67,343 cells, 33,665 nonzeros)
status now
check_kill PASS, independently re-verified (status.json, 2026-10-10)
observer's note
Card for the delta; the live status is in status.json (CHECKPOINT_B: delta proof.md validated by check_proof.py)
files
observe.json · notes.md · proof.md · how_proved.md · status.json · 1RB0RD_1RC1RF_1LD0LE_1RA0LC_1RE1LC_0RA---.v

Proof & checks

6/6 automatic checks pass

Kill 12 · Skelet 1-like Class 2 · the kill file 1RB0RD_1RC1RF_1LD0LE_1RA0LC_1RE1LC_0RA---.v: 1309 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 B; different orbit
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
1RB0RD_1RC1RF_1LD0LE_1RA0LC_1RE1LC_0RA---
vs holdout list
✓ byte-exact: the .v literal (L29) == 2026-10-07_778.txt line 604 (41 bytes, via tools/holdouts.py)
Theorem
✓ Lemma nonhalt : ~ halts tm c0. L1274
check_kill
✓ PASS · 17/17 checks pass · compile 51.19 s · coqchk pass (16.9 s) · assumptions: 0 (closed) · 2026-10-11 00:03:51 UTC · submission/check_kill.txt
Checked .v
sha256 3291d99346a113b4…
✓1RB0RD_1RC1RF_1LD0LE_1RA0LC_1RE1LC_0RA---.v3291d99346a113b4… = checked
✓submission/1RB0RD_1RC1RF_1LD0LE_1RA0LC_1RE1LC_0RA---.v3291d99346a113b4… = 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
✓input64165 bytes, 1309 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 29: TM_from_str "1RB0RD_1RC1RF_1LD0LE_1RA0LC_1RE1LC_0RA---" == <tm> (41 bytes)
✓theorem_textline 1274: nonhalt : ~halts tm c0
✓coqcoqc 8.20.1 ([local working file]
✓nameshalts, c0, TM_from_str resolved inside Individual62
✓compilecompiled in 51.2s with all appended checks
✓tm_rocqBB6Kill.Candidate.tm = BusyCoq.Individual62.TM_from_str "1RB0RD_1RC1RF_1LD0LE_1RA0LC_1RE1LC_0RA---" by eq_refl (in-file and isolated)
✓theorem_rocqnonhalt : ~ halts (TM_from_str "1RB0RD_1RC1RF_1LD0LE_1RA0LC_1RE1LC_0RA---") 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 (16.9s); 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---); label: “#3b”; relation: “sibling of #3: #3's table renamed, different start state; its run differs (18% wider at 1e9)”; parent_note: “1RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB--- (#3; siblings #25, #24)”. Everything below is computed from the two machine strings, not read from notes.

✓ Identical to #3's table under the renaming A→D, B→A, C→B, D→C, E→E, F→F (#3's state → this machine's), no mirror. This machine starts in #3's state B (#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→ D1RA 0LC1RA 0LC✓start of #3
B1RC 0RA→ A1RB 0RD1RB 0RD✓start of this machine
C1RD 1RF→ B1RC 1RF1RC 1RF✓
D1LA 0LE→ C1LD 0LE1LD 0LE✓
E1RE 1LD→ E1RE 1LC1RE 1LC✓
F0RB ---→ F0RA ---0RA ---✓

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 B, not A, so the first steps differ; the numbers below read: different orbit, so expect the same kind of bands, not the same picture.

#3 (parent), from blank in its A
default view of 1RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB---
this machine (#3b), from blank in its A = #3's B
default view of 1RB0RD_1RC1RF_1LD0LE_1RA0LC_1RE1LC_0RA---
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 (#3b), from blank in its A = #3's B
blaze view of 1RB0RD_1RC1RF_1LD0LE_1RA0LC_1RE1LC_0RA---
763 rows of 131,072 steps · 1,478 columns, every 16th cell · nonzeros 11,806 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)

○ different orbit: 18% wider at 1e9 (79,454 vs 67,343 cells; nonzeros 39,718 vs 33,665); not a fixed offset: the cell gap reaches +12,111

stepscells visited (hi − lo + 1)nonzeros
#3thisratio (Δ)#3thisratio (Δ)
1e56727011.0432 (+29)3353481.0388 (+13)
1e62,2602,1990.9730 (-61)1,1251,0940.9724 (-31)
1e77,4436,9620.9354 (-481)3,7163,4780.9360 (-238)
1e822,09623,6261.0692 (+1,530)11,03911,8071.0696 (+768)
1e967,34379,4541.1798 (+12,111)33,66539,7181.1798 (+6,053)

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; #3 loosely follows busycoq's verify/SBCv6.v, Module TM21). A script applied proof.md §5, with no hand edits to proof scripts:

  • the TM string;
  • a simultaneous ρ-rename of the state names in the 14 sweep lemmas and K ({{A}}→{{D}}, {{B}}→{{A}}, {{D}}→{{C}});
  • init0 with (7,4) at 402 steps (a cross-check, not used by nonhalt);
  • a 3-pair base, and init (now 38,732 steps);
  • the header and rule-table comments.

Every es proof, the macro rules, J, Jstep, J_base and nonhalt are #3's text, unchanged, and the file compiled on the first attempt. After the renaming, 16 of #3's lines differ. The file is 1,309 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 23–1309 (header comment 1–22 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.24From BusyCoq Require Import Individual62.
19Require Import Arith Lia List.25Require Import Arith Lia List.
⋯ 12 identical lines (template 20–37, ours 26–43)
38 During the long rightward sweep a passed pair [p,q+1,0] is left behind as44 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. *)45 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 -->+47Lemma Start h r : 0inf <{{D}} [1;0]^^h *> [1;1;0;0;1] *> r -->+
42 0inf <* <[1;0]^^(4+h) <* <[1;1;1] <* [0] {{B}}> r.48 0inf <* <[1;0]^^(4+h) <* <[1;1;1] <* [0] {{A}}> r.
43Proof. es. Qed.49Proof. es. Qed.
45Lemma PassR l p q r : l <* [0] {{B}}> [1;0]^^p *> [0;1]^^(S q) *> [0;0;1;0] *> r -->*51Lemma PassR l p q r : l <* [0] {{A}}> [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.52 l <* [0] <* <[0;1]^^p <* <[1;1;0] <* <[0;1]^^q <* <[1;1] <* [0] {{A}}> r.
47Proof. es. Qed.53Proof. es. Qed.
49Lemma Borrow l p q r : l {{B}}> [1;0]^^p *> [0;1]^^(S (S q)) *> [0;0;0;1] *> r -->*55Lemma Borrow l p q r : l {{A}}> [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.56 l <{{C}} [1;0]^^(S p) *> [0;1]^^(S q) *> [0;0;1;0] *> r.
51Proof. es. Qed.57Proof. 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 -->*59Lemma PassL l p q r : l <* [0] <* <[0;1]^^p <* <[1;1;0] <* <[0;1]^^(S q) <* <[1;1] <* [0] <{{C}} r -->*
54 l <* [0] <{{D}} [1;0]^^(S p) *> [0;1]^^(S q) *> [0;0;0;1] *> r.60 l <* [0] <{{C}} [1;0]^^(S p) *> [0;1]^^(S q) *> [0;0;0;1] *> r.
55Proof. es. Qed.61Proof. es. Qed.
57Lemma EndPh h r : 0inf <* <[1;0]^^(4+h) <* <[1;1;1] <* [0] <{{D}} r -->*63Lemma EndPh h r : 0inf <* <[1;0]^^(4+h) <* <[1;1;1] <* [0] <{{C}} r -->*
58 0inf <{{A}} [1;0]^^(4+h) *> [1;1;0;0;1] *> r.64 0inf <{{D}} [1;0]^^(4+h) *> [1;1;0;0;1] *> r.
59Proof. es. Qed.65Proof. es. Qed.
61Lemma EndT l p q : l <* <[0;1]^^p <* <[1;1;0] <* <[0;1]^^(S q) <* <[1;1] <* [0] {{B}}> 0inf -->*67Lemma EndT l p q : l <* <[0;1]^^p <* <[1;1;0] <* <[0;1]^^(S q) <* <[1;1] <* [0] {{A}}> 0inf -->*
62 l <{{D}} [1;0]^^(S p) *> [0;1]^^(S q) *> [0;0;1;0] *> [1;0;1] *> 0inf.68 l <{{C}} [1;0]^^(S p) *> [0;1]^^(S q) *> [0;0;1;0] *> [1;0;1] *> 0inf.
63Proof. es. Qed.69Proof. es. Qed.
65Lemma EndLastT l p : l <* <[0;1]^^p <* <[1;1;0] <* <[1;1] <* [0] {{B}}> 0inf -->*71Lemma EndLastT l p : l <* <[0;1]^^p <* <[1;1;0] <* <[1;1] <* [0] {{A}}> 0inf -->*
66 l <{{D}} [1;0]^^(p+4) *> [1] *> 0inf.72 l <{{C}} [1;0]^^(p+4) *> [1] *> 0inf.
67Proof. es. Qed.73Proof. es. Qed.
69Lemma MergeB l p p' r : l {{B}}> [1;0]^^p *> [0;1] *> [0;0;0;1] *> [1;0]^^p' *> r -->*75Lemma MergeB l p p' r : l {{A}}> [1;0]^^p *> [0;1] *> [0;0;0;1] *> [1;0]^^p' *> r -->*
70 l <{{D}} [1;0]^^(p+p'+3) *> r.76 l <{{C}} [1;0]^^(p+p'+3) *> r.
71Proof. es. Qed.77Proof. es. Qed.
73Lemma MergeE l p : l {{B}}> [1;0]^^p *> [0;1] *> [0;0;0;1] *> 0inf -->*79Lemma MergeE l p : l {{A}}> [1;0]^^p *> [0;1] *> [0;0;0;1] *> 0inf -->*
74 l <{{D}} [1;0]^^(p+2) *> [1] *> 0inf.80 l <{{C}} [1;0]^^(p+2) *> [1] *> 0inf.
75Proof. es. Qed.81Proof. es. Qed.
77Lemma OvT l t : l <* [0] {{B}}> [1;0]^^t *> [1] *> 0inf -->*83Lemma OvT l t : l <* [0] {{A}}> [1;0]^^t *> [1] *> 0inf -->*
78 l <{{D}} [0;1]^^(S t) *> [0;0;0;1] *> 0inf.84 l <{{C}} [0;1]^^(S t) *> [0;0;0;1] *> 0inf.
79Proof. es. Qed.85Proof. es. Qed.
81Lemma OvL l p q r : l <* [0] <* <[0;1]^^(S p) <* <[1;1;0] <* <[0;1]^^q <* <[1;1] <{{D}} r -->*87Lemma OvL l p q r : l <* [0] <* <[0;1]^^(S p) <* <[1;1;0] <* <[0;1]^^q <* <[1;1] <{{C}} r -->*
82 l <{{D}} [0;1]^^(S p) *> [0;0;0;1] *> [1;0]^^(S q) *> r.88 l <{{C}} [0;1]^^(S p) *> [0;0;0;1] *> [1;0]^^(S q) *> r.
83Proof. es. Qed.89Proof. 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 -->*91Lemma OvEnd h p r : 0inf <* <[1;0]^^(4+h) <* <[1;1;1] <{{C}} [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.92 0inf <{{D}} [1;0]^^2 *> [1;1;0;0;1] *> [1;0]^^(h+5) *> [0;1]^^(S p) *> [0;0;1;0] *> r.
87Proof. es. Qed.93Proof. es. Qed.
89Lemma X1Sw l p r : l <* [0] <* <[0;1]^^(S p) <* <[1;1;0] <* <[1;1] <* [0] <{{D}} r -->*95Lemma X1Sw l p r : l <* [0] <* <[0;1]^^(S p) <* <[1;1;0] <* <[1;1] <* [0] <{{C}} r -->*
90 l <{{D}} [0;1]^^(S p) *> [0;0;1;0;1;0;1] *> r.96 l <{{C}} [0;1]^^(S p) *> [0;0;1;0;1;0;1] *> r.
91Proof. es. Qed.97Proof. 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 -->*99Lemma X2T l p q k : l <* <[0;1]^^p <* <[1;1;0] <* <[0;1]^^(S q) <* <[1;1] <* [0] {{A}}> [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.100 l <{{C}} [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.101Proof. es. Qed.
97(** * The family K (proof.md section 1) *)103(** * The family K (proof.md section 1) *)
⋯ 12 identical lines (template 99–113, ours 105–119)
114 end.120 end.
116Definition K (h : nat) (P : list (nat*nat*bool)) (T : Tl) : Q * tape :=122Definition 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).123 0inf <{{D}} [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].125Definition pre (h : nat) : side := 0inf <* <[1;0]^^(4+h) <* <[1;1;1].
121(** region left behind by the rightward sweep over pair (p,q,_) *)127(** region left behind by the rightward sweep over pair (p,q,_) *)
⋯ 25 identical lines (template 122–152, ours 128–158)
153Qed.159Qed.
155Lemma PassesR Z : Forall okR Z -> forall l r,161Lemma PassesR Z : Forall okR Z -> forall l r,
156 l <* [0] {{B}}> RP Z r -->* LP Z l <* [0] {{B}}> r.162 l <* [0] {{A}}> RP Z r -->* LP Z l <* [0] {{A}}> r.
157Proof.163Proof.
158 induction Z as [|[[p q] d] Z IH]; intros HZ l r; cbn [RP LP]; [finish|].164 induction Z as [|[[p q] d] Z IH]; intros HZ l r; cbn [RP LP]; [finish|].
⋯ 4 identical lines (template 159–162, ours 165–168)
163Qed.169Qed.
165Lemma PassesL Z : Forall okL Z -> forall l r,171Lemma PassesL Z : Forall okL Z -> forall l r,
166 LP Z l <* [0] <{{D}} r -->* l <* [0] <{{D}} RP (map touch Z) r.172 LP Z l <* [0] <{{C}} r -->* l <* [0] <{{C}} RP (map touch Z) r.
167Proof.173Proof.
168 induction Z as [|[[p q] d] Z IH]; intros HZ l r; cbn [RP LP map]; [finish|].174 induction Z as [|[[p q] d] Z IH]; intros HZ l r; cbn [RP LP map]; [finish|].
⋯ 4 identical lines (template 169–172, ours 175–178)
173Qed.179Qed.
175Lemma OvPasses Z : Forall okO Z -> forall l r,181Lemma OvPasses Z : Forall okO Z -> forall l r,
176 LP Z l <{{D}} r -->* l <{{D}} OvR Z r.182 LP Z l <{{C}} r -->* l <{{C}} OvR Z r.
177Proof.183Proof.
178 induction Z as [|[[p q] d] Z IH]; intros HZ l r; cbn [OvR LP]; [finish|].184 induction Z as [|[[p q] d] Z IH]; intros HZ l r; cbn [OvR LP]; [finish|].
⋯ 143 identical lines (template 179–338, ours 185–344)
339 cbn [RP sd]. rewrite ovpX_eq. replace (pb+4) with (S (pb+3)) by lia. rewrite tailB_eq. reflexivity.345 cbn [RP sd]. rewrite ovpX_eq. replace (pb+4) with (S (pb+3)) by lia. rewrite tailB_eq. reflexivity.
340Qed.346Qed.
342(** * Start (proof.md 3.7): c0 reaches K0 = K(2; (11,11,0); -) in 956 steps, and the base348(** * Start (proof.md section 2): c0 reaches K0' = K(2; (7,4,0); -) in 402 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.349 base E-start after overflow 6, K(2; (47,32,0),(40,33,1),(13,34,1); -), in 38,732 steps.
344 Both by direct execution ([esx]); the second takes about 30 s. *)
350 Both by direct execution ([esx]). *)
346Lemma init0 : c0 -->* K 2 [(11%nat, 11%nat, false)] TN.352Lemma init0 : c0 -->* K 2 [(7%nat, 4%nat, false)] TN.
347Proof. unfold K. cbn [RP RT sd]. esx. Qed.353Proof. unfold K. cbn [RP RT sd]. esx. Qed.
349Definition base : list (nat*nat*bool) :=355Definition 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)].356 [(47%nat, 32%nat, false); (40%nat, 33%nat, true); (13%nat, 34%nat, true)].
352Lemma init : c0 -->* K 2 base TN.358Lemma init : c0 -->* K 2 base TN.
353Proof. unfold K, base. cbn [RP RT sd]. esx. Qed.359Proof. unfold K, base. cbn [RP RT sd]. esx. Qed.
⋯ 824 identical lines (template 356–1273, ours 362–1279)
1275(*1281(*
1276```1282```
12771RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB---
12831RB0RD_1RC1RF_1LD0LE_1RA0LC_1RE1LC_0RA--- (= rho of 1RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB---, rho: A->D, B->A, C->B, D->C)
1279[p,q,d] := (10)^p (01)^q s(d), s(1) = 0001, s(0) = 0010 [RP]1285[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]1286K(h; P; T) := 0^inf <D (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]1287T 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)1288k := least j with d_j = 1; Z := pairs 1..k-1 (all d = 0, q >= 2)
⋯ 15 identical lines (template 1283–1298, ours 1289–1304)
1299invariant J (per pair, n = pairs to the right, tv = digit value from the pair up,1305invariant 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).1306 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); -)1307start: c0 -->(402) K(2; (7,4,0); -) -->(38,330) K(2; (47,32,0),(40,33,1),(13,34,1); -)
1302```1308```
1303*)1309*)
4Proof outlineCheck: the new items (green) carry the argument; the names read like the proof.md rules.

138 items in 1RB0RD_1RC1RF_1LD0LE_1RA0LC_1RE1LC_0RA---.v (1309 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 "1RB0RD_1RC1RF_1LD0LE_1RA0LC_1RE1LC_0RA---").
L29identicalexcept the TM string
2Lemmaev_eq
Lemma ev_eq {c1 c2 c2'} : c1 -->* c2 -> c2 = c2' -> c1 -->* c2'.
L36identical
3Lemmaprog_eq
Lemma prog_eq {c1 c2 c2'} : c1 -->+ c2 -> c2 = c2' -> c1 -->+ c2'.
L39identical
4LemmaStart
Lemma Start h r : 0inf <{{D}} [1;0]^^h *> [1;1;0;0;1] *> r -->+
0inf <* <[1;0]^^(4+h) <* <[1;1;1] <* [0] {{A}}> r.
L47adapted
5LemmaPassR
Lemma PassR l p q r : l <* [0] {{A}}> [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] {{A}}> r.
L51adapted
6LemmaBorrow
Lemma Borrow l p q r : l {{A}}> [1;0]^^p *> [0;1]^^(S (S q)) *> [0;0;0;1] *> r -->*
l <{{C}} [1;0]^^(S p) *> [0;1]^^(S q) *> [0;0;1;0] *> r.
L55adapted
7LemmaPassL
Lemma PassL l p q r : l <* [0] <* <[0;1]^^p <* <[1;1;0] <* <[0;1]^^(S q) <* <[1;1] <* [0] <{{C}} r -->*
l <* [0] <{{C}} [1;0]^^(S p) *> [0;1]^^(S q) *> [0;0;0;1] *> r.
L59adapted
8LemmaEndPh
Lemma EndPh h r : 0inf <* <[1;0]^^(4+h) <* <[1;1;1] <* [0] <{{C}} r -->*
0inf <{{D}} [1;0]^^(4+h) *> [1;1;0;0;1] *> r.
L63adapted
9LemmaEndT
Lemma EndT l p q : l <* <[0;1]^^p <* <[1;1;0] <* <[0;1]^^(S q) <* <[1;1] <* [0] {{A}}> 0inf -->*
l <{{C}} [1;0]^^(S p) *> [0;1]^^(S q) *> [0;0;1;0] *> [1;0;1] *> 0inf.
L67adapted
10LemmaEndLastT
Lemma EndLastT l p : l <* <[0;1]^^p <* <[1;1;0] <* <[1;1] <* [0] {{A}}> 0inf -->*
l <{{C}} [1;0]^^(p+4) *> [1] *> 0inf.
L71adapted
11LemmaMergeB
Lemma MergeB l p p' r : l {{A}}> [1;0]^^p *> [0;1] *> [0;0;0;1] *> [1;0]^^p' *> r -->*
l <{{C}} [1;0]^^(p+p'+3) *> r.
L75adapted
12LemmaMergeE
Lemma MergeE l p : l {{A}}> [1;0]^^p *> [0;1] *> [0;0;0;1] *> 0inf -->*
l <{{C}} [1;0]^^(p+2) *> [1] *> 0inf.
L79adapted
13LemmaOvT
Lemma OvT l t : l <* [0] {{A}}> [1;0]^^t *> [1] *> 0inf -->*
l <{{C}} [0;1]^^(S t) *> [0;0;0;1] *> 0inf.
L83adapted
14LemmaOvL
Lemma OvL l p q r : l <* [0] <* <[0;1]^^(S p) <* <[1;1;0] <* <[0;1]^^q <* <[1;1] <{{C}} r -->*
l <{{C}} [0;1]^^(S p) *> [0;0;0;1] *> [1;0]^^(S q) *> r.
L87adapted
15LemmaOvEnd
Lemma OvEnd h p r : 0inf <* <[1;0]^^(4+h) <* <[1;1;1] <{{C}} [0;1]^^(S (S p)) *> [0;0;0;1] *> r -->*
0inf <{{D}} [1;0]^^2 *> [1;1;0;0;1] *> [1;0]^^(h+5) *> [0;1]^^(S p) *> [0;0;1;0] *> r.
L91adapted
16LemmaX1Sw
Lemma X1Sw l p r : l <* [0] <* <[0;1]^^(S p) <* <[1;1;0] <* <[1;1] <* [0] <{{C}} r -->*
l <{{C}} [0;1]^^(S p) *> [0;0;1;0;1;0;1] *> r.
L95adapted
17LemmaX2T
Lemma X2T l p q k : l <* <[0;1]^^p <* <[1;1;0] <* <[0;1]^^(S q) <* <[1;1] <* [0] {{A}}> [1;0;1;1;0;1] *> [0;1]^^(S k) *> 0inf -->*
l <{{C}} [1;0]^^(S p) *> [0;1]^^(S q) *> [0;0;1;0] *> [1;0]^^3 *> [0;1]^^(S k) *> [0;0;0;1] *> 0inf.
L99adapted
18Definitionsd
Definition sd (d : bool) : list Sym := if d then [0;0;0;1] else [0;0;1;0].
L105identical
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.
L107identical
20InductiveTl
Inductive Tl := TN | TA (t : nat) | TB (k : nat).
L113identical
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.
L115identical
22DefinitionK
Definition K (h : nat) (P : list (nat*nat*bool)) (T : Tl) : Q * tape :=
0inf <{{D}} [1;0]^^h *> [1;1;0;0;1] *> RP P (RT T).
L122adapted
23Definitionpre
Definition pre (h : nat) : side := 0inf <* <[1;0]^^(4+h) <* <[1;1;1].
L125identical
24Definitionreg
Definition reg (p q : nat) (l : side) : side :=
l <* [0] <* <[0;1]^^p <* <[1;1;0] <* <[0;1]^^(pred q) <* <[1;1].
L128identical
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.
L131identical
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.
L138identical
27Definitiontouch
Definition touch (x : nat*nat*bool) : nat*nat*bool :=
let '(p,q,d) := x in (S p, pred q, negb d).
L144identical
28DefinitionokR
Definition okR (x : nat*nat*bool) : Prop := let '(p,q,d) := x in d = false /\ 1 <= q.
L147identical
29DefinitionokL
Definition okL (x : nat*nat*bool) : Prop := let '(p,q,d) := x in d = false /\ 2 <= q.
L148identical
30DefinitionokO
Definition okO (x : nat*nat*bool) : Prop := let '(p,q,d) := x in 1 <= p /\ 1 <= q.
L149identical
31LemmaRP_app
Lemma RP_app Z W r : RP (Z ++ W) r = RP Z (RP W r).
L151identical
32LemmaLP_app
Lemma LP_app Z W l : LP (Z ++ W) l = LP W (LP Z l).
L156identical
33LemmaPassesR
Lemma PassesR Z : Forall okR Z -> forall l r,
l <* [0] {{A}}> RP Z r -->* LP Z l <* [0] {{A}}> r.
L161adapted
34LemmaPassesL
Lemma PassesL Z : Forall okL Z -> forall l r,
LP Z l <* [0] <{{C}} r -->* l <* [0] <{{C}} RP (map touch Z) r.
L171adapted
35LemmaOvPasses
Lemma OvPasses Z : Forall okO Z -> forall l r,
LP Z l <{{C}} r -->* l <{{C}} OvR Z r.
L181adapted
36LemmaokL_R
Lemma okL_R Z : Forall okL Z -> Forall okR Z.
L191identical
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.
L198identical
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.
L209identical
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)).
L220identical
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)).
L231identical
41LemmaForall_snoc
Lemma Forall_snoc {A} (P : A -> Prop) Z x : Forall P Z -> P x -> Forall P (Z ++ [x]).
L242identical
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).
L245identical
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)).
L257identical
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.
L269identical
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.
L282identical
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).
L288identical
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.
L294identical
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.
L309identical
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).
L315identical
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).
L321identical
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)).
L329identical
52Lemmainit0
Lemma init0 : c0 -->* K 2 [(7%nat, 4%nat, false)] TN.
L352adapted
53Definitionbase
Definition base : list (nat*nat*bool) :=
[(47%nat, 32%nat, false); (40%nat, 33%nat, true); (13%nat, 34%nat, true)].
L355adapted
54Lemmainit
Lemma init : c0 -->* K 2 base TN.
L358identical
55Definitionbv
Definition bv (d : bool) : nat := if d then 1 else 0.
L370identical
56Fixpointdv
Fixpoint dv (P : list tri) : nat :=
match P with
| [] => 0
| (_,_,d) :: P' => bv d + 2 * dv P'
end.
L372identical
57Definitiondig
Definition dig (x : tri) : bool := let '(_,_,d) := x in d.
L378identical
58Definitiondig0
Definition dig0 (x : tri) : Prop := dig x = false.
L379identical
59Lemmadv_lt
Lemma dv_lt P : dv P < 2 ^ length P.
L383identical
60Lemmadv_zeros
Lemma dv_zeros Z R : Forall dig0 Z -> dv (Z ++ R) = 2 ^ length Z * dv R.
L389identical
61Lemmadv_tz
Lemma dv_tz Z R : Forall dig0 Z -> dv (map touch Z ++ R) + 1 = 2 ^ length Z + 2 ^ length Z * dv R.
L396identical
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.
L404identical
63LemmaAllI_app
Lemma AllI_app Pr Z : forall i R, AllI Pr i (Z ++ R) -> AllI Pr (i + length Z) R.
L410identical
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.
L417identical
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.
L425identical
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').
L434identical
67Inductivephase
Inductive phase := E1 | E2 | E1t | E2t | T0 | L1 | L2 | LX.
L455identical
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
L458identical
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
L501identical
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.
L522identical
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)).
L525identical
72DefinitionPCx
Definition PCx (ph : phase) (c4 : bool) (h : nat) := Lift (PC ph c4 h).
L528identical
73Lemmapow_pos
Lemma pow_pos n : 1 <= 2 ^ n.
L537identical
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).
L541identical
75Lemmapow_S
Lemma pow_S n : 2 ^ S n = 2 * 2 ^ n.
L549identical
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).
L557identical
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).
L573identical
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.
L582identical
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.
L591identical
80Definitionendtr
Definition endtr (ph ph' : phase) : Prop := (ph = E1 /\ ph' = E2) \/ (ph = E1t /\ ph' = E2t).
L599identical
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).
L601identical
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.
L609identical
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).
L618identical
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).
L627identical
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.
L635identical
86Lemmaob_x2_new
Lemma ob_x2_new h i k : 3 <= i -> 3 <= k -> PC E1t false h i 3 k 0 1.
L643identical
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)).
L651identical
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).
L657identical
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).
L669identical
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.
L685identical
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).
L697identical
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).
L704identical
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.
L712identical
94Lemmadv_zero
Lemma dv_zero Z : Forall dig0 Z -> dv Z = 0.
L721identical
95Lemmadv_tz'
Lemma dv_tz' Z R : Forall dig0 Z -> dv (map touch Z ++ R) = 2 ^ length Z - 1 + 2 ^ length Z * dv R.
L724identical
96Lemmaovp_len
Lemma ovp_len q Z t : length (ovp q Z t) = S (length Z).
L727identical
97Lemmaovp_dv
Lemma ovp_dv q Z t : dv (ovp q Z t) + 1 = 2 ^ S (length Z).
L730identical
98LemmaovpX_len
Lemma ovpX_len q Z pa : length (ovpX q Z pa) = S (length Z).
L736identical
99LemmaovpX_dv
Lemma ovpX_dv q Z pa : dv (ovpX q Z pa) + 1 = 2 ^ length Z.
L739identical
100FixpointlastOK
Fixpoint lastOK (Xp : nat -> Prop) (Z : list tri) : Prop :=
match Z with
| [] => True
| [(p,_,_)] => Xp p
| _ :: Z' => lastOK Xp Z'
end.
L745identical
101LemmalastOK_cons
Lemma lastOK_cons Xp p q d Z : lastOK Xp ((p,q,d) :: Z) -> (Z = [] -> Xp p) /\ lastOK Xp Z.
L752identical
102LemmalastOK_dec
Lemma lastOK_dec Z : lastOK (fun x => x = 4) Z \/ lastOK (fun x => x <> 4) Z.
L755identical
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).
L761identical
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)).
L779identical
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.
L801identical
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.
L807identical
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).
L820identical
108Lemmaeven2
Lemma even2 x : (2 * x) mod 2 = 0.
L834identical
109Lemmapc_len
Lemma pc_len (Pr : nat -> tri -> list tri -> Prop) i P : AllI Pr i P -> True.
L837identical
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).
L843identical
111Lemmasnoc_nn
Lemma snoc_nn (Z : list tri) y : Z ++ [y] <> [].
L864identical
112Definitionminlen
Definition minlen (ph : phase) : nat := match ph with LX => 3 | L2 => 1 | _ => 2 end.
L867identical
113Lemmahead_len
Lemma head_len ph c4 h x Y : PCx ph c4 h 1 x Y -> minlen ph <= length Y.
L869identical
114LemmaAllI_len
Lemma AllI_len ph c4 h P : P <> [] -> AllI (PCx ph c4 h) 1 P -> S (minlen ph) <= length P.
L875identical
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.
L880identical
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.
L886identical
117LemmaL2_c4_V0
Lemma L2_c4_V0 h i p q : PC L2 true h i p q 0 0 -> False.
L892identical
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.
L895identical
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).
L903identical
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.
L946identical
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)]).
L964identical
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)]).
L986identical
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.
L1009identical
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).
L1026identical
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)).
L1041identical
126Recordst
Record st := mkst { sh : nat; sP : list (nat*nat*bool); sT : Tl; sph : phase; sc4 : bool }.
L1060identical
127DefinitionCf
Definition Cf (s : st) : Q * tape := K (sh s) (sP s) (sT s).
L1062identical
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
L1064identical
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).
L1073identical
130Lemmasplit1
Lemma split1 (P : list tri) :
(exists Z x R, P = Z ++ x :: R /\ Forall dig0 Z /\ dig x = true) \/ Forall dig0 P.
L1076identical
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.
L1088identical
132LemmalastOK_True
Lemma lastOK_True Z : lastOK (fun _ => True) Z.
L1098identical
133LemmaForall_snoc_inv
Lemma Forall_snoc_inv (Pr : tri -> Prop) Z y : Forall Pr (Z ++ [y]) -> Forall Pr Z /\ Pr y.
L1101identical
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.
L1104identical
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.
L1112identical
136LemmaJstep
Lemma Jstep : forall s, J s -> exists s', Cf s -->+ Cf s' /\ J s'.
L1122identical
137LemmaJ_base
Lemma J_base : J (mkst 2 base TN E1 false).
L1268identical
138Lemmanonhalt
Lemma nonhalt : ~ halts tm c0.
L1274identical
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 147: The rules for this machine

The rules are below in busycoq comment style, for this machine. They use two abbreviations:

Z             := pairs 1..k-1, all d = 0, q >= 2
touch (p,q,d) := (p+1, q-1, 1-d)
1RB0RD_1RC1RF_1LD0LE_1RA0LC_1RE1LC_0RA---       (= rho of 1RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB---,
                                                  rho: A->D, B->A, C->B, D->C, E, F fixed)

[p,q,d] := (10)^p (01)^q s(d),  s(1) = 0001, s(0) = 0010
K(h; P; T) := 0^inf <D (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 -->(402) K(2; (7,4,0); -) -->(38,330) K(2; (47,32,0),(40,33,1),(13,34,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; = #3b's table, run from state D; named in #3b's .v header; named in #3b's proof.md; named in #3b's notes.md · review · compared side by side above · mechanism
#25 kill 71RB1RF_1LC0LE_1RD0LB_1RA0RC_1RE1LB_0RD---✓Killed: never halts= #3b's table, run from state B; named in #3b's proof.md · review
#24 kill 81RB0RE_1LC0RA_1LD0LB_1LA1LF_1LE1RA_0LC---✓Killed: never halts= #3b's table mirrored, run from state C; named in #3b's proof.md · review
#3b kill 121RB0RD_1RC1RF_1LD0LE_1RA0LC_1RE1LC_0RA---✓Killed: never haltsthis kill
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 604 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 16.9 s
  • ✓
    .v hash matches the checked hash
    .v = checked sha256 3291d99346a1…; submission/ copy = checked sha256 3291d99346a1…
  • ✓
    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 L76: - proof.md, a copy built by `rocq/make_submission_proof.py` (each edit asserts exactly one match; the working proof.md is untouched). Updated: title, header (holdout lists, sheet, parent pointer, status, AI line), §5 hea
    • notes.md L84: - proof.md §7 has two open reviewer questions for Checkpoint B (delta form; 3-pair base at L* = 3 versus the 4-pair E-start at step 104,510). No notes from Dennis were on file when this was packaged. If he adds any, fold
    • proof.md L1: # 1RB0RD_1RC1RF_1LD0LE_1RA0LC_1RE1LC_0RA---: delta proof from kill #3 (Checkpoint B)
    • proof.md L205: ## 7. Checkpoint B (Dennis)
  • ○
    Family posted together?
    3 other kill(s) in the family: #3, #25, #24; the Discord draft names 1 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 1RB0RD_1RC1RF_1LD0LE_1RA0LC_1RE1LC_0RA---

Files

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

namesizechanged
notes.md ↓9.7 KB2026-10-10 17:00
proof.md ↓18 KB2026-10-10 12:12
how_proved.md ↓1.1 KB2026-10-14 10:51
status.json ↓756 B2026-10-13 06:44
observe.json ↓15 KB2026-10-10 17:57
1RB0RD_1RC1RF_1LD0LE_1RA0LC_1RE1LC_0RA---.v ↓63 KB2026-10-10 17:01
img/13 items2026-10-16 10:29
rocq/6 items2026-10-10 12:26
scripts/1 item2026-10-10 17:55
submission/6 items2026-10-12 12:56
work/2 items2026-10-12 12:41
check_proof.out ↓6.2 KB2026-10-10 12:08
check_proof.py ↓21 KB2026-10-10 12:07
check_proof_3e8.out ↓5.4 KB2026-10-10 12:09
check_proof_l600.out ↓5.4 KB2026-10-10 12:11
status.json in full
{
 "tm": "1RB0RD_1RC1RF_1LD0LE_1RA0LC_1RE1LC_0RA---",
 "status": "KILLED_NONHALT",
 "stage": "done",
 "updated": "2026-10-10",
 "reason": "check_kill PASS, independently re-verified",
 "parent": "1RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB---",
 "parent_note": "1RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB--- (#3; siblings #25, #24)",
 "label": "#3b",
 "relation": "sibling of #3: #3's table renamed, different start state; its run differs (18% wider at 1e9)",
 "pr": "https://github.com/ccz181078/busycoq/pull/15",
 "pr_file": "verify/Skelet1LikeC2_1RB0RD.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"
}
observe.json contract (tools/README-card.md):
2 contract warnings
  • rank: missing
  • diagrams: 4 primary (max 3)