tools/rebuild_pages.sh rebuilds the site within 5 minutes of a change; by hand: python3 -B tools/site.py.1RB---_0LC1RF_1LE0RD_0RB1RC_1RD0LE_0RC1RA
How we proved it never halts
#4's proof, from a different start
#4 keeps a binary counter at the left end of the tape and a row of five-cell blocks to its right, "A" blocks 00111 and "B" blocks 10111. Each time the counter rolls over, a marker walks right through the A blocks and then turns all the B blocks into A blocks. #4b is #4's table with its state letters shuffled, started in the state that is #4's F instead of A, so watching it you see the same picture with different numbers.
Renaming states changes nothing the machine does to the tape, so all of #4's proof holds here as it stands. That includes the two formulas that take the block counts from one cycle start to the next (one for an even A count, one for odd), and the six-sided safe region that both formulas map into itself.
What is new is the opening. After 16,590 steps #4b is at a cycle start with 14 A blocks ahead of the marker and 4 B blocks beyond them, where #4 has 16 and 0 after 17,215 steps. That point is also inside the safe region, so from there the region argument keeps the run on the rails forever and the missing transition is never used. The two runs are not copies of each other: their even/odd choices already differ in the second cycle.
The Rocq proof is #4's file with the states renamed and the opening replaced. Every tape move is re-proved on #4b's own table by running it, and the first 16,590 steps are replayed exactly.

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.
Overview
In one sentence
Kill #4's table renamed EDBCFA, started in #4's F: same rules and hexagon; new base S(6,14,4) at step 16,590
Submitted mechanism #4's table, different start. Renaming the states by σ = EDBCFA (A→E, B→D, C→B, D→C, E→F, F→A), with no mirror, turns #4's table into this one. σ is the only one of the 720 × 2 maps that does. This machine starts in A = σ(F), so it runs #4's machine from 0^inf F> 0^inf. That is a different orbit of the same macro map, not #4's own run. (submission/README.md, Mechanism)
parent 1RB0LA_0RC1RD_0LD1RE_1LA0RB_0RD1RF_1RC--- (#4)
- Upstream
- Kill claimed · PR #24merged 2026-10-16 07:07 UTC by ccz181078 ·
SBCv13.v · TM2· on Submissions → - Rocq proof
- check_kill PASS · first Oct 10 12:25510 lines · 21 KB .v · compile 7.0 s · coqchk pass · 0 axioms · PASS Oct 10 12:25· the .v file
- Automatic review
- 6 of 6 checks passtemplate: #4's kill file (kill 2) (twin: parent kill's .v) · details in Proof →
- Class
- Sync bouncer counterours: Sync bouncer counter (sheet) · ours adds: kill #4's table renamed EDBCFA (no mirror), started in #4's F · high confidence
- On the list
- not on
BB6_holdouts_663.txt(line 14 of the previous list) · historical 740 line 14 - Derived from
1RB0LA_#4 Kill claimed0RC1RD_ 0LD1RE_ 1LA0RB_ 0RD1RF_ 1RC---
Mechanism
What to check here: the pictures show the mechanism that the rule table describes.
How it works: 3 notes
- Same machine as kill #4 up to state names (A->E, B->D, C->B, D->C, E->F, F->A); it starts in #4's F, so its orbit differs.
- Same words and rules as #4: binary counter (1010/0010) on the left, A/B blocks 00111/10111 and a front 111 on the right; R1-R5o.
- From blank it reaches S(6,14,4) = Q(7,65,1,14,4) at step 16,590, inside #4's hexagon (facet 4Y+2Z >= N tight); #4's cycle lemma does the rest.
Figures for Checkpoint A
Same view as the first figure on #4's card. Overflow resets are record rows 78, 122, 306, 390, 1,139.
Starts at the base S(6,14,4). Top: front steps; middle: conversion; then bounces until the overflow at the bottom.
More figures (2)Fig 3–4: Initial segment, every 16 steps · bbchallenge default view, first 10,000 steps
Steps 0 to 16,576: the run before the base. Rule-governed from step 1,711 (about row 107).
The site's view: a bouncer growing to the right from an almost fixed left end.
Rules (7/7 validated)exact tape rewrites the proof will formalize, each re-checked by simulation
| rule | from ⟶ to | cases | steps | checked |
|---|---|---|---|---|
| R1 P-bounce | 0∞ C_k(n) (00111)X (10111)z 00 B> 0∞ ⟶ 0∞ C_k(n+1) (00111)X (10111)z+1 00 B> 0∞ | n+1 <= 2^k-1 | 32X+32z+16t(n)+47, t(n) = trailing 1-bits of n | ✓40/40 |
| R2 overflow | 0∞ C_k(2k-1) (00111)X (10111)z 00 B> 0∞ ⟶ 0∞ C_(k+1)(2k+1) 00111 111 (00111)X-2 (10111)z+1 00 B> 0∞ | X >= 2 | 32X+32z+16k+61 | ✓40/40 |
| R3 front step | 0∞ C_k(n) (00111)x 111 (00111)y+2 (10111)z 00 B> 0∞ ⟶ 0∞ C_k(n+3) (00111)x+2 111 (00111)y (10111)z+1 00 B> 0∞ | n+3 <= 2^k-1, x >= 1 | 96x+32y+32z+16(t(n)+t(n+1)+t(n+2))+197 | ✓40/40 |
| R4 even conversion | 0∞ C_k(n) (00111)x 111 (10111)z 00 B> 0∞ ⟶ 0∞ C_k(n+z+2) (00111)x+z+1 00 B> 0∞ | n+z+2 <= 2^k-1 | — | ✓40/40 |
| R5 odd conversion | 0∞ C_k(n) (00111)x 111 00111 (10111)z 00 B> 0∞ ⟶ 0∞ C_k(n+2z+7) (00111)x+z+4 00 B> 0∞ | n+2z+7 <= 2^k-1 | — | ✓40/40 |
| R5o odd conversion + overflow | 0∞ C_k(n) (00111)x 111 00111 (10111)z 00 B> 0∞ ⟶ 0∞ C_(k+1)(2k+1+3m) (00111)1+2m 111 (00111)x+z+2-2m 00 B> 0∞ | m = n+2z+7-2^k >= 0, x+z+2-2m >= 1, 3m <= 2^k-2 | — | ✓40/40 |
| R4o (remark, never used) | 0∞ C_k(n) (00111)x 111 (10111)z 00 B> 0∞ ⟶ 0∞ C_(k+1)(2k+1+3m) (00111)1+2m 111 (00111)x+z-1-2m 00 B> 0∞ | m = n+z+2-2^k >= 0, x+z-1-2m >= 1, 3m <= 2^k-2 | — | ✓40/40 |
Compressed historythe tape as 0∞ C_k(n) (00111)x [111 (00111)y] (10111)z 00 B> 0∞ at 38 moments: where the rules are read off
| step | phase | k | n | x | y | z |
|---|---|---|---|---|---|---|
| 1,711 | Q | 5 | 20 | 3 | 1 | 0 |
| 3,047 | P | 5 | 27 | 7 | - | 0 |
| 4,371 | P | 5 | 31 | 7 | - | 4 |
| 4,864 | Q | 6 | 33 | 1 | 5 | 5 |
| 6,186 | Q | 6 | 39 | 5 | 1 | 7 |
| 14,036 | P | 6 | 60 | 16 | - | 0 |
| 15,825 | P | 6 | 63 | 16 | - | 3 |
| 16,590 | Q | 7 | 65 | 1 | 14 | 4 |
| 25,889 | Q | 7 | 86 | 15 | 0 | 11 |
| 34,947 | P | 7 | 99 | 27 | - | 0 |
| 72,951 | P | 7 | 127 | 27 | - | 28 |
| 74,884 | Q | 8 | 129 | 1 | 25 | 29 |
| 109,472 | Q | 8 | 165 | 25 | 1 | 41 |
| 248,150 | P | 8 | 254 | 70 | - | 0 |
| 250,437 | P | 8 | 255 | 70 | - | 1 |
| 252,898 | Q | 9 | 257 | 1 | 68 | 2 |
| 428,172 | Q | 9 | 359 | 69 | 0 | 36 |
| 535,510 | P | 9 | 397 | 106 | - | 0 |
| 1,135,428 | P | 9 | 511 | 106 | - | 114 |
| 1,142,673 | Q | 10 | 513 | 1 | 104 | 115 |
| 1,733,589 | Q | 10 | 669 | 105 | 0 | 167 |
| 2,759,783 | P | 10 | 838 | 273 | - | 0 |
| 4,932,158 | P | 10 | 1,023 | 273 | - | 185 |
| 4,947,035 | Q | 11 | 1,025 | 1 | 271 | 186 |
| 8,405,806 | Q | 11 | 1,430 | 271 | 1 | 321 |
| 17,498,220 | Q | 12 | 2,142 | 63 | 532 | 0 |
| 29,322,686 | Q | 12 | 2,940 | 595 | 0 | 266 |
| 35,576,808 | P | 12 | 3,208 | 862 | - | 0 |
| 72,673,681 | P | 12 | 4,095 | 862 | - | 887 |
| 72,729,902 | Q | 13 | 4,097 | 1 | 860 | 888 |
| 111,659,028 | Q | 13 | 5,387 | 861 | 0 | 1,318 |
| 175,916,622 | P | 13 | 6,707 | 2,180 | - | 0 |
| 314,746,210 | P | 13 | 8,191 | 2,180 | - | 1,484 |
| 314,863,727 | Q | 14 | 8,193 | 1 | 2,178 | 1,485 |
| 537,600,100 | Q | 14 | 11,460 | 2,179 | 0 | 2,574 |
| 823,412,430 | P | 14 | 14,036 | 4,754 | - | 0 |
| 1,268,701,603 | P | 14 | 16,383 | 4,754 | - | 2,347 |
| 1,268,929,120 | Q | 15 | 16,385 | 1 | 4,752 | 2,348 |
phaselast Qklast 15nlast 16,385xlast 1ylast 4,752zlast 2,348Template comparisontemplate: applies · the nearest solved proof, what carries over, and the transitions that differ
| 0 | 1 | |
|---|---|---|
| A | 1RB | --- |
| B | 0LC | 1RF |
| C | 1LE | 0RD |
| D | 0RB | 1RC |
| E | 1RD | 0LE |
| F | 0RC | 1RA |
- file
- —
- module
- —
- machine
1RB0LA_0RC1RD_0LD1RE_1LA0RB_0RD1RF_1RC---(11 transitions apart)- diff
none after renaming states by EDBCFA (no mirror); without renaming every cell differs. Start = #4's F- note
- Template = kill #4's passing .v (machines/1RB0LA_0RC1RD_0LD1RE_1LA0RB_0RD1RF_1RC---, sha256 51e3dea1...). Delta: TM string,
{{A}}->{{E}},{{C}}->{{B}},{{E}}->{{F}}, a 16,590-stepesxinit toCfgF 5 0 14 4;cycle_step/Invverbatim. rocq/plan_check.v compiles (6.7 s, closed).
Proof strategy & riskshow the formal proof will go · 2 risks to watch
Delta of kill #4 (proof.md section 5): #4's .v with state names renamed by EDBCFA and a new init (one 16,590-step esx to CfgF 5 0 14 4). cycle_step, Inv and all macro lemmas verbatim. rocq/plan_check.v already compiles; next: clean kill file + check_kill.
- ▲None found in the argument: the base sits on the hexagon facet 4Y+2Z >= N (tight, 64 = 64), which Inv allows (<=); #4's base is tight on the same facet.
- ▲On mxdys's UBRRBA_TODO and dyuan01's longitudinal lists (fair game per Dennis); re-read those threads before posting.
Stats & provenance3·109 steps simulated · 47,451 cells · the status in full · files
- simulated
- 3·109 steps
- tape
- 47,451 cells · 18,841 nonzeros
- growth
- span ~ t^0.5 (cycle k: ~2^k blocks in ~4^k steps); left edge -2 cells per cycle; 29,054 cells at 1e9 vs #4's 23,607
- status now
- check_kill PASS, independently re-verified (status.json, 2026-10-10)
- observer's note
- Relation to kill #4 established by simulation (unique renaming EDBCFA, lockstep, rules on the twin's table, base in the hexagon, orbit 9/9 cycle states to 5.04e9); delta proof.md validated (live status in status.json: CHECKPOINT_B).
- files
- observe.json · notes.md · proof.md · how_proved.md · status.json · 1RB---_0LC1RF_1LE0RD_0RB1RC_1RD0LE_0RC1RA.v
Proof & checks
Kill 11 · Sync bouncer counter · the kill file 1RB---_0LC1RF_1LE0RD_0RB1RC_1RD0LE_0RC1RA.v: 510 lines, 73 items · the package submission/
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).
1RB---_0LC1RF_1LE0RD_0RB1RC_1RD0LE_0RC1RAsha256 0c89b5109f87c793…
| ✓ | 1RB---_0LC1RF_1LE0RD_0RB1RC_1RD0LE_0RC1RA.v | 0c89b5109f87c793… = checked |
| ✓ | submission/1RB---_0LC1RF_1LE0RD_0RB1RC_1RD0LE_0RC1RA.v | 0c89b5109f87c793… = checked |
All 17 check_kill checks with their one-line results
| ✓ | args | 6x2 machine, framework module Individual62, mode nonhalt |
| ✓ | input | 21411 bytes, 510 lines, 532 sentences |
| ✓ | framework | HEAD 0940bb9cf434ba68f0c025dabfde45a219999973 == pin; no tracked changes under verify/ |
| ✓ | framework_build | 13 needed framework .vo files present and fresh, with native code no older than the .vo |
| ✓ | forbidden | none of 30 forbidden patterns occur (ground rule 1's words: anywhere; command words: outside comments and strings; comments never split a token) |
| ✓ | structure | 4 Require name(s) allowed; no top-level Variable/Context; no shadowing; Module/Section balanced |
| ✓ | tm_text | line 23: TM_from_str "1RB---_0LC1RF_1LE0RD_0RB1RC_1RD0LE_0RC1RA" == <tm> (41 bytes) |
| ✓ | theorem_text | line 471: nonhalt : ~halts tm c0 |
| ✓ | coq | coqc 8.20.1 ([local working file] |
| ✓ | names | halts, c0, TM_from_str resolved inside Individual62 |
| ✓ | compile | compiled in 7.0s with all appended checks |
| ✓ | tm_rocq | BB6Kill.Candidate.tm = BusyCoq.Individual62.TM_from_str "1RB---_0LC1RF_1LE0RD_0RB1RC_1RD0LE_0RC1RA" by eq_refl (in-file and isolated) |
| ✓ | theorem_rocq | nonhalt : ~ halts (TM_from_str "1RB---_0LC1RF_1LE0RD_0RB1RC_1RD0LE_0RC1RA") c0 with absolute names (in-file and isolated) |
| ✓ | isolation | only stock proof plugins loaded; guard/positivity/universe checking on, definitional UIP off |
| ✓ | assumptions | 0 assumption(s), all in the baseline |
| ✓ | coqchk | coqchk -norec BB6Kill.Candidate ok (2.1s); its context summary lists nothing of the file's own |
| ✓ | integrity | input sha256 and framework HEAD/cleanliness identical before and after |
2Same machine as #4?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 #4 as the parent (1RB0LA_0RC1RD_0LD1RE_1LA0RB_0RD1RF_1RC---); label: “#4b”; relation: “same transition table as #4 (states renamed), started in a different state; found by the family sweep”; parent_note: “1RB0LA_0RC1RD_0LD1RE_1LA0RB_0RD1RF_1RC--- (#4)”. Everything below is computed from the two machine strings, not read from notes.
✓ Identical to #4's table under the renaming A→E, B→D, C→B, D→C, E→F, F→A (#4's state → this machine's), no mirror. This machine starts in #4's state F (#4 itself starts in A). The only such map.
| #4 | #4's row (read 0, read 1) | σ | predicted row: renamed by σ | this machine's actual row | ||
|---|---|---|---|---|---|---|
| A | 1RB 0LA | → E | 1RD 0LE | 1RD 0LE | ✓ | start of #4 |
| B | 0RC 1RD | → D | 0RB 1RC | 0RB 1RC | ✓ | |
| C | 0LD 1RE | → B | 0LC 1RF | 0LC 1RF | ✓ | |
| D | 1LA 0RB | → C | 1LE 0RD | 1LE 0RD | ✓ | |
| E | 0RD 1RF | → F | 0RC 1RA | 0RC 1RA | ✓ | |
| F | 1RC --- | → A | 1RB --- | 1RB --- | ✓ | start of this machine |
Rows aligned by σ: each of #4's states X sits next to this machine's state σ(X). ✓ = the actual row equals #4's row with every target state renamed by σ; --- (halt) must stay ---. Searched: all 720 renamings × with/without mirror.
Same view, same settings on both sides. Look for the same band structure: it starts in #4's state F, not A, so the first steps differ; the numbers below read: different orbit, so expect the same kind of bands, not the same picture.
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.


Trajectory numbers, from blank (C core)
○ different orbit: 23% wider at 1e9 (29,054 vs 23,607 cells; nonzeros 12,016 vs 11,358); not a fixed offset: the cell gap reaches +5,447
| steps | cells visited (hi − lo + 1) | nonzeros | ||||
|---|---|---|---|---|---|---|
| #4 | this | ratio (Δ) | #4 | this | ratio (Δ) | |
| 1e5 | 353 | 358 | 1.0142 (+5) | 120 | 116 | 0.9667 (-4) |
| 1e6 | 772 | 1,034 | 1.3394 (+262) | 429 | 694 | 1.6177 (+265) |
| 1e7 | 2,677 | 3,015 | 1.1263 (+338) | 1,371 | 1,174 | 0.8563 (-197) |
| 1e8 | 10,403 | 10,453 | 1.0048 (+50) | 3,579 | 3,209 | 0.8966 (-370) |
| 1e9 | 23,607 | 29,054 | 1.2307 (+5,447) | 11,358 | 12,016 | 1.0579 (+658) |
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:28 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).
It extends kill #4's .v (504 lines; in #4's own package), which extends SBCv7.v Module TM4. A script applied proof.md §5, with every substitution count asserted:
- the TM string;
- σ applied to every state name
{{X}}:{{A}}→{{E}}37 times,{{C}}→{{B}}6,{{E}}→{{F}}35; init0/init(16,590 steps toCfgF 5 0 14 4) and the start index(5,0,14,4);- the header and the rule-table comment.
After the renaming, 4 code lines differ from #4's .v. The counter, the Gad conversion gadget (R4/R5/R5o), Inv and cycle_step are #4's text. It compiled and passed check_kill on the first attempt. 510 lines, imports only Individual62.
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.
Other references found:
- adapted from vendor/busycoq/verify/SBCv7.v Module TM4 (named in 1RB---_0LC1RF_1LE0RD_0RB1RC_1RD0LE_0RC1RA.v line 6)
Side-by-side diff: template (428 lines) vs ours (429 lines), 55 lines differ; runs of identical lines and long template-only runs folded
| template | ours | ||
|---|---|---|---|
| 14 | From BusyCoq Require Import Individual62. | 19 | From BusyCoq Require Import Individual62. |
| 15 | Require Import Arith Lia. | 20 | Require Import Arith Lia. |
| ⋯ 16 identical lines (template 16–38, ours 21–43) | |||
| 39 | Proof. intros H E. subst. exact H. Qed. | 44 | Proof. intros H E. subst. exact H. Qed. |
| 41 | (** * Shift rules (proof.md 3.1) *) | 46 | (** * Shift rules (proof.md 3.1) *) |
| 43 | Lemma ENDL l : l <* <[0;0] {{C}}> 0inf -->+ l <{{A}} [0;0;1] *> 0inf. Proof. es. Qed. | 48 | Lemma ENDL l : l <* <[0;0] {{B}}> 0inf -->+ l <{{E}} [0;0;1] *> 0inf. Proof. es. Qed. |
| 44 | Lemma AL l r : l <* bA <{{A}} [0;0;1] *> r -->* l <{{A}} [0;0;1] *> bAr *> r. Proof. es. Qed. | 49 | Lemma AL l r : l <* bA <{{E}} [0;0;1] *> r -->* l <{{E}} [0;0;1] *> bAr *> r. Proof. es. Qed. |
| 45 | Lemma BL l r : l <* bB <{{A}} [0;0;1] *> r -->* l <{{A}} [0;0;1] *> bBr *> r. Proof. es. Qed. | 50 | Lemma BL l r : l <* bB <{{E}} [0;0;1] *> r -->* l <{{E}} [0;0;1] *> bBr *> r. Proof. es. Qed. |
| 46 | Lemma AR l r : l <* <[0;0;1] {{E}}> bAr *> r -->* l <* bA <* <[0;0;1] {{E}}> r. Proof. es. Qed. | 51 | Lemma AR l r : l <* <[0;0;1] {{F}}> bAr *> r -->* l <* bA <* <[0;0;1] {{F}}> r. Proof. es. Qed. |
| 47 | Lemma BR l r : l <* <[0;0;1] {{E}}> bBr *> r -->* l <* bB <* <[0;0;1] {{E}}> r. Proof. es. Qed. | 52 | Lemma BR l r : l <* <[0;0;1] {{F}}> bBr *> r -->* l <* bB <* <[0;0;1] {{F}}> r. Proof. es. Qed. |
| 48 | Lemma ENDR l : l <* <[0;0;1] {{E}}> 0inf -->* l <* bB <* <[0;0] {{C}}> 0inf. Proof. es. Qed. | 53 | Lemma ENDR l : l <* <[0;0;1] {{F}}> 0inf -->* l <* bB <* <[0;0] {{B}}> 0inf. Proof. es. Qed. |
| 49 | Lemma D1L l r : l <* d1 <{{A}} [0;0;1] *> r -->* l <{{A}} [0;0;1] *> [0;1;0;1] *> r. Proof. es. Qed. | 54 | Lemma D1L l r : l <* d1 <{{E}} [0;0;1] *> r -->* l <{{E}} [0;0;1] *> [0;1;0;1] *> r. Proof. es. Qed. |
| 50 | Lemma FLIP l r : l <* d0 <{{A}} [0;0;1] *> r -->* l <* d1 <* <[0;0;1] {{E}}> r. Proof. es. Qed. | 55 | Lemma FLIP l r : l <* d0 <{{E}} [0;0;1] *> r -->* l <* d1 <* <[0;0;1] {{F}}> r. Proof. es. Qed. |
| 51 | Lemma D0R l r : l <* <[0;0;1] {{E}}> [0;1;0;1] *> r -->* l <* d0 <* <[0;0;1] {{E}}> r. Proof. es. Qed. | 56 | Lemma D0R l r : l <* <[0;0;1] {{F}}> [0;1;0;1] *> r -->* l <* d0 <* <[0;0;1] {{F}}> r. Proof. es. Qed. |
| 52 | Lemma D0R' l r : l <* <[0;0;1] {{E}}> [0;1] *> [0;1;0;1] *> r -->* l <* d0 <* <[0;0;1] {{E}}> [0;1] *> r. | 57 | Lemma D0R' l r : l <* <[0;0;1] {{F}}> [0;1] *> [0;1;0;1] *> r -->* l <* d0 <* <[0;0;1] {{F}}> [0;1] *> r. |
| 53 | Proof. es. Qed. | 58 | Proof. es. Qed. |
| 54 | Lemma OVL r : 0inf <{{A}} [0;0;1] *> [0;1;0;1] *> r -->* 0inf <* d1 <* <[0;0;1] {{E}}> [0;1] *> r. | 59 | Lemma OVL r : 0inf <{{E}} [0;0;1] *> [0;1;0;1] *> r -->* 0inf <* d1 <* <[0;0;1] {{F}}> [0;1] *> r. |
| 55 | Proof. es. Qed. | 60 | Proof. es. Qed. |
| 56 | Lemma OVR l r : l <* <[0;0;1] {{E}}> [0;1] *> bAr *> r -->* l <* d0 <{{A}} [0;0;1] *> [1;0;1] *> r. | 61 | Lemma OVR l r : l <* <[0;0;1] {{F}}> [0;1] *> bAr *> r -->* l <* d0 <{{E}} [0;0;1] *> [1;0;1] *> r. |
| 57 | Proof. es. Qed. | 62 | Proof. es. Qed. |
| 58 | Lemma FL l r : l <* bA <* <[1;1;1] <{{A}} [0;0;1] *> r -->* l <{{A}} [0;0;1] *> [0;0;1] *> bBr *> r. | 63 | Lemma FL l r : l <* bA <* <[1;1;1] <{{E}} [0;0;1] *> r -->* l <{{E}} [0;0;1] *> [0;0;1] *> bBr *> r. |
| 59 | Proof. es. Qed. | 64 | Proof. es. Qed. |
| 60 | Lemma FR1 l r : l <* <[0;0;1] {{E}}> [0;0;1] *> bBr *> r -->* l <* bA <{{A}} [0;0;1] *> [0;0;1] *> r. | 65 | Lemma FR1 l r : l <* <[0;0;1] {{F}}> [0;0;1] *> bBr *> r -->* l <* bA <{{E}} [0;0;1] *> [0;0;1] *> r. |
| 61 | Proof. es. Qed. | 66 | Proof. es. Qed. |
| 62 | Lemma FR2 l r : l <* <[0;0;1] {{E}}> [0;0;1] *> bAr *> r -->* l <* bA <{{A}} [0;0;1] *> [1;0;1] *> r. | 67 | Lemma FR2 l r : l <* <[0;0;1] {{F}}> [0;0;1] *> bAr *> r -->* l <* bA <{{E}} [0;0;1] *> [1;0;1] *> r. |
| 63 | Proof. es. Qed. | 68 | Proof. es. Qed. |
| 64 | Lemma FR3 l r : l <* <[0;0;1] {{E}}> [1;0;1] *> bAr *> r -->* l <* bA <* <[1;1;1] <* <[0;0;1] {{E}}> r. | 69 | Lemma FR3 l r : l <* <[0;0;1] {{F}}> [1;0;1] *> bAr *> r -->* l <* bA <* <[1;1;1] <* <[0;0;1] {{F}}> r. |
| 65 | Proof. es. Qed. | 70 | Proof. es. Qed. |
| 66 | Lemma FR4 l r : l <* <[0;0;1] {{E}}> [1;0;1] *> bBr *> r -->* l <{{A}} [0;0;1] *> [0;0;1] *> bAr *> r. | 71 | Lemma FR4 l r : l <* <[0;0;1] {{F}}> [1;0;1] *> bBr *> r -->* l <{{E}} [0;0;1] *> [0;0;1] *> bAr *> r. |
| 67 | Proof. es. Qed. | 72 | Proof. es. Qed. |
| 68 | Lemma FE0 l : l <* <[0;0;1] {{E}}> [0;0;1] *> 0inf -->* l <* bA <* <[0;0] {{C}}> 0inf. | 73 | Lemma FE0 l : l <* <[0;0;1] {{F}}> [0;0;1] *> 0inf -->* l <* bA <* <[0;0] {{B}}> 0inf. |
| 69 | Proof. es. Qed. | 74 | Proof. es. Qed. |
| 70 | Lemma FE1 l : l <* <[0;0;1] {{E}}> [1;0;1] *> 0inf -->* l <{{A}} [0;0;1] *> [0;0;1] *> [0;0;1] *> 0inf. | 75 | Lemma FE1 l : l <* <[0;0;1] {{F}}> [1;0;1] *> 0inf -->* l <{{E}} [0;0;1] *> [0;0;1] *> [0;0;1] *> 0inf. |
| 71 | Proof. es. Qed. | 76 | Proof. es. Qed. |
| 72 | Lemma FE2 l : l <* <[0;0;1] {{E}}> [0;0;1] *> [0;0;1] *> 0inf -->* l <* bA <{{A}} [0;0;1] *> [1] *> 0inf. | 77 | Lemma FE2 l : l <* <[0;0;1] {{F}}> [0;0;1] *> [0;0;1] *> 0inf -->* l <* bA <{{E}} [0;0;1] *> [1] *> 0inf. |
| 73 | Proof. es. Qed. | 78 | Proof. es. Qed. |
| 74 | Lemma FE3 l : l <* <[0;0;1] {{E}}> [1] *> 0inf -->* l <{{A}} [0;0;1] *> [0;0;1;1] *> 0inf. | 79 | Lemma FE3 l : l <* <[0;0;1] {{F}}> [1] *> 0inf -->* l <{{E}} [0;0;1] *> [0;0;1;1] *> 0inf. |
| 75 | Proof. es. Qed. | 80 | Proof. es. Qed. |
| 76 | Lemma FE4 l : l <* <[0;0;1] {{E}}> [0;0;1;1] *> 0inf -->* l <* bA <{{A}} [0;0;1] *> [0;0;1] *> 0inf. | 81 | Lemma FE4 l : l <* <[0;0;1] {{F}}> [0;0;1;1] *> 0inf -->* l <* bA <{{E}} [0;0;1] *> [0;0;1] *> 0inf. |
| 77 | Proof. es. Qed. | 82 | Proof. es. Qed. |
| 79 | (** * Repeated rules (proof.md 3.2) *) | 84 | (** * Repeated rules (proof.md 3.2) *) |
| 81 | Lemma ALs a : forall l r, l <* bA^^a <{{A}} [0;0;1] *> r -->* l <{{A}} [0;0;1] *> bAr^^a *> r. | 86 | Lemma ALs a : forall l r, l <* bA^^a <{{E}} [0;0;1] *> r -->* l <{{E}} [0;0;1] *> bAr^^a *> r. |
| 82 | Proof. | 87 | Proof. |
| 83 | induction a as [|a IH]; intros; [finish | rewrite !lpow_S, !Str_app_assoc; follow AL; follow IH; rewrite lpow_shift'; finish]. | 88 | induction a as [|a IH]; intros; [finish | rewrite !lpow_S, !Str_app_assoc; follow AL; follow IH; rewrite lpow_shift'; finish]. |
| 84 | Qed. | 89 | Qed. |
| 85 | Lemma BLs a : forall l r, l <* bB^^a <{{A}} [0;0;1] *> r -->* l <{{A}} [0;0;1] *> bBr^^a *> r. | 90 | Lemma BLs a : forall l r, l <* bB^^a <{{E}} [0;0;1] *> r -->* l <{{E}} [0;0;1] *> bBr^^a *> r. |
| 86 | Proof. | 91 | Proof. |
| 87 | induction a as [|a IH]; intros; [finish | rewrite !lpow_S, !Str_app_assoc; follow BL; follow IH; rewrite lpow_shift'; finish]. | 92 | induction a as [|a IH]; intros; [finish | rewrite !lpow_S, !Str_app_assoc; follow BL; follow IH; rewrite lpow_shift'; finish]. |
| 88 | Qed. | 93 | Qed. |
| 89 | Lemma ARs a : forall l r, l <* <[0;0;1] {{E}}> bAr^^a *> r -->* l <* bA^^a <* <[0;0;1] {{E}}> r. | 94 | Lemma ARs a : forall l r, l <* <[0;0;1] {{F}}> bAr^^a *> r -->* l <* bA^^a <* <[0;0;1] {{F}}> r. |
| 90 | Proof. | 95 | Proof. |
| 91 | induction a as [|a IH]; intros; [finish | rewrite !lpow_S, !Str_app_assoc; follow AR; follow IH; rewrite <-lpow_shift'; finish]. | 96 | induction a as [|a IH]; intros; [finish | rewrite !lpow_S, !Str_app_assoc; follow AR; follow IH; rewrite <-lpow_shift'; finish]. |
| 92 | Qed. | 97 | Qed. |
| 93 | Lemma BRs a : forall l r, l <* <[0;0;1] {{E}}> bBr^^a *> r -->* l <* bB^^a <* <[0;0;1] {{E}}> r. | 98 | Lemma BRs a : forall l r, l <* <[0;0;1] {{F}}> bBr^^a *> r -->* l <* bB^^a <* <[0;0;1] {{F}}> r. |
| 94 | Proof. | 99 | Proof. |
| 95 | induction a as [|a IH]; intros; [finish | rewrite !lpow_S, !Str_app_assoc; follow BR; follow IH; rewrite <-lpow_shift'; finish]. | 100 | induction a as [|a IH]; intros; [finish | rewrite !lpow_S, !Str_app_assoc; follow BR; follow IH; rewrite <-lpow_shift'; finish]. |
| 96 | Qed. | 101 | Qed. |
| 97 | Lemma D1Ls a : forall l r, l <* d1^^a <{{A}} [0;0;1] *> r -->* l <{{A}} [0;0;1] *> [0;1;0;1]^^a *> r. | 102 | Lemma D1Ls a : forall l r, l <* d1^^a <{{E}} [0;0;1] *> r -->* l <{{E}} [0;0;1] *> [0;1;0;1]^^a *> r. |
| 98 | Proof. | 103 | Proof. |
| 99 | induction a as [|a IH]; intros; [finish | rewrite !lpow_S, !Str_app_assoc; follow D1L; follow IH; rewrite lpow_shift'; finish]. | 104 | induction a as [|a IH]; intros; [finish | rewrite !lpow_S, !Str_app_assoc; follow D1L; follow IH; rewrite lpow_shift'; finish]. |
| 100 | Qed. | 105 | Qed. |
| 101 | Lemma D0R's a : forall l r, l <* <[0;0;1] {{E}}> [0;1] *> [0;1;0;1]^^a *> r -->* l <* d0^^a <* <[0;0;1] {{E}}> [0;1] *> r. | 106 | Lemma D0R's a : forall l r, l <* <[0;0;1] {{F}}> [0;1] *> [0;1;0;1]^^a *> r -->* l <* d0^^a <* <[0;0;1] {{F}}> [0;1] *> r. |
| 102 | Proof. | 107 | Proof. |
| 103 | induction a as [|a IH]; intros; [finish | rewrite !lpow_S, !Str_app_assoc; follow D0R'; follow IH; rewrite <-lpow_shift'; finish]. | 108 | induction a as [|a IH]; intros; [finish | rewrite !lpow_S, !Str_app_assoc; follow D0R'; follow IH; rewrite <-lpow_shift'; finish]. |
| ⋯ 13 identical lines (template 104–121, ours 109–126) | |||
| 123 | (** CTR: one increment, n+1 <= 2^k - 1 *) | 128 | (** CTR: one increment, n+1 <= 2^k - 1 *) |
| 124 | Lemma CTR k : forall n r, S n < 2^k -> | 129 | Lemma CTR k : forall n r, S n < 2^k -> |
| 125 | ctr k n <{{A}} [0;0;1] *> r -->* ctr k (S n) <* <[0;0;1] {{E}}> r. | 130 | ctr k n <{{E}} [0;0;1] *> r -->* ctr k (S n) <* <[0;0;1] {{F}}> r. |
| 126 | Proof. | 131 | Proof. |
| 127 | induction k as [|k IH]; intros n r H. | 132 | induction k as [|k IH]; intros n r H. |
| ⋯ 29 identical lines (template 128–159, ours 133–164) | |||
| 161 | (** OV: the counter overflows; it gains a digit and a new front 111 appears *) | 166 | (** OV: the counter overflows; it gains a digit and a new front 111 appears *) |
| 162 | Lemma OV k r : | 167 | Lemma OV k r : |
| 163 | ctr (S k) (2^(S k) - 1) <{{A}} [0;0;1] *> bAr *> bAr *> r -->* | 168 | ctr (S k) (2^(S k) - 1) <{{E}} [0;0;1] *> bAr *> bAr *> r -->* |
| 164 | ctr (S (S k)) (2^(S k) + 1) <* bA <* <[1;1;1] <* <[0;0;1] {{E}}> r. | 169 | ctr (S (S k)) (2^(S k) + 1) <* bA <* <[1;1;1] <* <[0;0;1] {{F}}> r. |
| 165 | Proof. | 170 | Proof. |
| 166 | rewrite ctr_ones, ctr_ov. | 171 | rewrite ctr_ones, ctr_ov. |
| ⋯ 3 identical lines (template 167–169, ours 172–174) | |||
| 171 | (** RT: a round trip of the head through the counter (no overflow) *) | 176 | (** RT: a round trip of the head through the counter (no overflow) *) |
| 172 | Lemma RT K n a r : S n < 2^K -> | 177 | Lemma RT K n a r : S n < 2^K -> |
| 173 | ctr K n <* bA^^a <{{A}} [0;0;1] *> r -->* ctr K (S n) <* bA^^a <* <[0;0;1] {{E}}> r. | 178 | ctr K n <* bA^^a <{{E}} [0;0;1] *> r -->* ctr K (S n) <* bA^^a <* <[0;0;1] {{F}}> r. |
| 174 | Proof. | 179 | Proof. |
| 175 | intros H. fw ALs. fw CTR. fw ARs. finish. | 180 | intros H. fw ALs. fw CTR. fw ARs. finish. |
| 176 | Qed. | 181 | Qed. |
| 178 | (** OVRT: a round trip that overflows the counter *) | 183 | (** OVRT: a round trip that overflows the counter *) |
| 179 | Lemma OVRT k a r : | 184 | Lemma OVRT k a r : |
| 180 | ctr (S k) (2^(S k) - 1) <* bA^^(S (S a)) <{{A}} [0;0;1] *> r -->* | 185 | ctr (S k) (2^(S k) - 1) <* bA^^(S (S a)) <{{E}} [0;0;1] *> r -->* |
| 181 | ctr (S (S k)) (2^(S k) + 1) <* bA <* <[1;1;1] <* bA^^a <* <[0;0;1] {{E}}> r. | 186 | ctr (S (S k)) (2^(S k) + 1) <* bA <* <[1;1;1] <* bA^^a <* <[0;0;1] {{F}}> r. |
| 182 | Proof. | 187 | Proof. |
| 183 | fw ALs. rewrite !lpow_S, !Str_app_assoc. fw OV. fw ARs. finish. | 188 | fw ALs. rewrite !lpow_S, !Str_app_assoc. fw OV. fw ARs. finish. |
| 184 | Qed. | 189 | Qed. |
| 186 | (** QC: one step of the front (3 round trips, the front moves 2 blocks right) *) | 191 | (** QC: one step of the front (3 round trips, the front moves 2 blocks right) *) |
| 187 | Lemma QC K n x y r : 3 + n < 2^K -> | 192 | Lemma QC K n x y r : 3 + n < 2^K -> |
| 188 | ctr K n <* bA^^(S x) <* <[1;1;1] <* bA^^(S (S y)) <{{A}} [0;0;1] *> r -->* | 193 | ctr K n <* bA^^(S x) <* <[1;1;1] <* bA^^(S (S y)) <{{E}} [0;0;1] *> r -->* |
| 189 | ctr K (3 + n) <* bA^^(S (S (S x))) <* <[1;1;1] <* bA^^y <* <[0;0;1] {{E}}> r. | 194 | ctr K (3 + n) <* bA^^(S (S (S x))) <* <[1;1;1] <* bA^^y <* <[0;0;1] {{F}}> r. |
| 190 | Proof. | 195 | Proof. |
| 191 | intros H. | 196 | intros H. |
| ⋯ 10 identical lines (template 192–201, ours 197–206) | |||
| 202 | Qed. | 207 | Qed. |
| 204 | (** * Configurations at the right edge (proof.md 1) *) | 209 | (** * Configurations at the right edge (proof.md 1) *) |
| 206 | Definition Pc K n X z := ctr K n <* bA^^X <* bB^^z <* <[0;0] {{C}}> 0inf. | 211 | Definition Pc K n X z := ctr K n <* bA^^X <* bB^^z <* <[0;0] {{B}}> 0inf. |
| 207 | Definition Qc K n x y z := ctr K n <* bA^^x <* <[1;1;1] <* bA^^y <* bB^^z <* <[0;0] {{C}}> 0inf. | 212 | Definition Qc K n x y z := ctr K n <* bA^^x <* <[1;1;1] <* bA^^y <* bB^^z <* <[0;0] {{B}}> 0inf. |
| 209 | Lemma R1 K n X z : S n < 2^K -> Pc K n X z -->+ Pc K (S n) X (S z). | 214 | Lemma R1 K n X z : S n < 2^K -> Pc K n X z -->+ Pc K (S n) X (S z). |
| 210 | Proof. | 215 | Proof. |
| ⋯ 36 identical lines (template 211–252, ours 216–257) | |||
| 253 | the head, with 0 or 1 new A block (Hit0 / Hit1), or ends at the right edge (FE0). | 258 | the head, with 0 or 1 new A block (Hit0 / Hit1), or ends at the right edge (FE0). |
| 254 | Gad G T D: G takes T rounds in all, which add D A blocks. *) | 259 | Gad G T D: G takes T rounds in all, which add D A blocks. *) |
| 256 | Definition Hit0 (G G' : side) := forall l, l <* <[0;0;1] {{E}}> G -->* l <{{A}} [0;0;1] *> G'. | 261 | Definition Hit0 (G G' : side) := forall l, l <* <[0;0;1] {{F}}> G -->* l <{{E}} [0;0;1] *> G'. |
| 257 | Definition Hit1 (G G' : side) := forall l, l <* <[0;0;1] {{E}}> G -->* l <* bA <{{A}} [0;0;1] *> G'. | 262 | Definition Hit1 (G G' : side) := forall l, l <* <[0;0;1] {{F}}> G -->* l <* bA <{{E}} [0;0;1] *> G'. |
| 259 | Inductive Gad : side -> nat -> nat -> Prop := | 264 | Inductive Gad : side -> nat -> nat -> Prop := |
| 260 | | Gad_end : Gad ([0;0;1] *> 0inf) 1%nat 1%nat | 265 | | Gad_end : Gad ([0;0;1] *> 0inf) 1%nat 1%nat |
| ⋯ 38 identical lines (template 261–304, ours 266–309) | |||
| 306 | (** All T rounds without overflow (R4, R5) *) | 311 | (** All T rounds without overflow (R4, R5) *) |
| 307 | Lemma ConvNo K : forall G T D, Gad G T D -> forall n a, n + T < 2^K -> | 312 | Lemma ConvNo K : forall G T D, Gad G T D -> forall n a, n + T < 2^K -> |
| 308 | ctr K n <* bA^^a <{{A}} [0;0;1] *> G -->* Pc K (n + T) (a + D) 0. | 313 | ctr K n <* bA^^a <{{E}} [0;0;1] *> G -->* Pc K (n + T) (a + D) 0. |
| 309 | Proof. | 314 | Proof. |
| 310 | induction 1 as [|G G' T D HH HG IH|G G' T D HH HG IH]; intros n a Hn. | 315 | induction 1 as [|G G' T D HH HG IH|G G' T D HH HG IH]; intros n a Hn. |
| ⋯ 6 identical lines (template 311–317, ours 316–322) | |||
| 318 | Lemma PostOV K : forall G T D, Gad G T D -> forall n x b y, | 323 | Lemma PostOV K : forall G T D, Gad G T D -> forall n x b y, |
| 319 | b + D = 2*T + y -> 1 <= y -> 3*T + n < 2^K -> | 324 | b + D = 2*T + y -> 1 <= y -> 3*T + n < 2^K -> |
| 320 | ctr K n <* bA^^(S x) <* <[1;1;1] <* bA^^b <{{A}} [0;0;1] *> G -->* | 325 | ctr K n <* bA^^(S x) <* <[1;1;1] <* bA^^b <{{E}} [0;0;1] *> G -->* |
| 321 | Qc K (3*T + n) (2*T + S x) y 0. | 326 | Qc K (3*T + n) (2*T + S x) y 0. |
| 322 | Proof. | 327 | Proof. |
| ⋯ 17 identical lines (template 323–340, ours 328–345) | |||
| 341 | n + T = 2^(S k) + m -> n < 2^(S k) -> a + D = 2 + 2*m + y -> 1 <= y -> | 346 | n + T = 2^(S k) + m -> n < 2^(S k) -> a + D = 2 + 2*m + y -> 1 <= y -> |
| 342 | 3*m + (2^(S k) + 1) < 2^(S (S k)) -> | 347 | 3*m + (2^(S k) + 1) < 2^(S (S k)) -> |
| 343 | ctr (S k) n <* bA^^a <{{A}} [0;0;1] *> G -->* | 348 | ctr (S k) n <* bA^^a <{{E}} [0;0;1] *> G -->* |
| 344 | Qc (S (S k)) (3*m + (2^(S k) + 1)) (1 + 2*m) y 0. | 349 | Qc (S (S k)) (3*m + (2^(S k) + 1)) (1 + 2*m) y 0. |
| 345 | Proof. | 350 | Proof. |
| ⋯ 26 identical lines (template 346–371, ours 351–376) | |||
| 373 | (** From a Q configuration with y in {0,1}: the front meets the B blocks *) | 378 | (** From a Q configuration with y in {0,1}: the front meets the B blocks *) |
| 374 | Lemma QG0 K n x z : Qc K n (S x) 0 z -->+ | 379 | Lemma QG0 K n x z : Qc K n (S x) 0 z -->+ |
| 375 | ctr K n <* bA^^x <{{A}} [0;0;1] *> [0;0;1] *> bBr^^(S z) *> 0inf. | 380 | ctr K n <* bA^^x <{{E}} [0;0;1] *> [0;0;1] *> bBr^^(S z) *> 0inf. |
| 376 | Proof. | 381 | Proof. |
| 377 | unfold Qc. fp ENDL. fw BLs. fw (FL (ctr K n <* bA^^x) (bBr^^z *> 0inf)). finish. | 382 | unfold Qc. fp ENDL. fw BLs. fw (FL (ctr K n <* bA^^x) (bBr^^z *> 0inf)). finish. |
| 378 | Qed. | 383 | Qed. |
| 380 | Lemma QG1 K n x z : Qc K n (S x) 1 z -->+ | 385 | Lemma QG1 K n x z : Qc K n (S x) 1 z -->+ |
| 381 | ctr K n <* bA^^x <{{A}} [0;0;1] *> [0;0;1] *> bBr *> bAr *> bBr^^z *> 0inf. | 386 | ctr K n <* bA^^x <{{E}} [0;0;1] *> [0;0;1] *> bBr *> bAr *> bBr^^z *> 0inf. |
| 382 | Proof. | 387 | Proof. |
| 383 | unfold Qc. fp ENDL. fw BLs. | 388 | unfold Qc. fp ENDL. fw BLs. |
| ⋯ 63 identical lines (template 384–454, ours 389–459) | |||
| 455 | f_equal; lia. | 460 | f_equal; lia. |
| 456 | Qed. | 461 | Qed. |
| 458 | (** * Start: c0 reaches Q(7,65,1,16,0) = CfgF 5 0 16 0 in 17,215 steps *) | 463 | (** * Start: c0 reaches Q(7,65,1,14,4) = CfgF 5 0 14 4 in 16,590 steps *) |
| 460 | Lemma init0 : c0 -->* 0inf <* d1 <* d0^^5 <* d1 <* bA <* <[1;1;1] <* bA^^16 <* <[0;0] {{C}}> 0inf. | 465 | Lemma init0 : c0 -->* 0inf <* d1 <* d0^^5 <* d1 <* bA <* <[1;1;1] <* bA^^14 <* bB^^4 <* <[0;0] {{B}}> 0inf. |
| 461 | Proof. esx. Qed. | 466 | Proof. esx. Qed. |
| 463 | Lemma init : c0 -->* CfgF 5 0 16 0. | 468 | Lemma init : c0 -->* CfgF 5 0 14 4. |
| 464 | Proof. apply init0. Qed. | 469 | Proof. apply init0. Qed. |
| 466 | Lemma nonhalt: ~halts tm c0. | 471 | Lemma nonhalt: ~halts tm c0. |
| 467 | Proof. | 472 | Proof. |
| 468 | eapply multistep_nonhalt. { apply init. } | 473 | eapply multistep_nonhalt. { apply init. } |
| 469 | apply (progress_nonhalt_cond tm _ (5,0,16,0)%nat | 474 | apply (progress_nonhalt_cond tm _ (5,0,14,4)%nat |
| 470 | (fun '(k,i,y,z) => CfgF k i y z) (fun '(k,i,y,z) => Inv k i y z)). | 475 | (fun '(k,i,y,z) => CfgF k i y z) (fun '(k,i,y,z) => Inv k i y z)). |
| 471 | - intros [[[k i] y] z] HI. | 476 | - intros [[[k i] y] z] HI. |
| ⋯ 5 identical lines (template 472–477, ours 477–482) | |||
| 478 | ``` | 483 | ``` |
| 479 | 1RB0LA_0RC1RD_0LD1RE_1LA0RB_0RD1RF_1RC--- | 484 | 1RB---_0LC1RF_1LE0RD_0RB1RC_1RD0LE_0RC1RA |
| 485 | (= sigma of 1RB0LA_0RC1RD_0LD1RE_1LA0RB_0RD1RF_1RC---, sigma = EDBCFA, no mirror) | ||
| 481 | C_k(n): n in k bits MSB first, digit 1 -> 1010 (d1), digit 0 -> 0010 (d0) [ctr k n] | 487 | C_k(n): n in k bits MSB first, digit 1 -> 1010 (d1), digit 0 -> 0010 (d0) [ctr k n] |
| 482 | A = 00111, B = 10111 left of the head; A' = 00101, B' = 00001 right of the head | 488 | A = 00111, B = 10111 left of the head; A' = 00101, B' = 00001 right of the head |
| 483 | moving head: <A 001 / 001 E> (TM4's hL / hR) | 489 | moving head: <E 001 / 001 F> (sigma of TM4's hL / hR) |
| 485 | P(k,n,X,z) := 0^inf C_k(n) A^X B^z 00 C> 0^inf [Pc] | 491 | P(k,n,X,z) := 0^inf C_k(n) A^X B^z 00 B> 0^inf [Pc] |
| 486 | Q(k,n,x,y,z) := 0^inf C_k(n) A^x 111 A^y B^z 00 C> 0^inf [Qc] | 492 | Q(k,n,x,y,z) := 0^inf C_k(n) A^x 111 A^y B^z 00 B> 0^inf [Qc] |
| 488 | R1 P(k,n,X,z) -->+ P(k,n+1,X,z+1) n+1 < 2^k | 494 | R1 P(k,n,X,z) -->+ P(k,n+1,X,z+1) n+1 < 2^k |
| 489 | R2 P(k,2^k-1,X+2,z) -->+ Q(k+1,2^k+1,1,X,z+1) | 495 | R2 P(k,2^k-1,X+2,z) -->+ Q(k+1,2^k+1,1,X,z+1) |
| ⋯ 9 identical lines (template 490–499, ours 496–505) | |||
| 500 | R5o, m = 3i+2z+8-N -> (k+1, m, 2i+z+3-2m, 0) overflow | 506 | R5o, m = 3i+2z+8-N -> (k+1, m, 2i+z+3-2m, 0) overflow |
| 501 | invariant: N >= 64, 8Y >= N, 8Y <= 3N, 3Z <= N, 8Z >= -N, 4Y+2Z >= N, 20Y+16Z <= 9N | 507 | invariant: N >= 64, 8Y >= N, 8Y <= 3N, 3Z <= N, 8Z >= -N, 4Y+2Z >= N, 20Y+16Z <= 9N |
| 502 | start: c0 -->(17215) Q(7,65,1,16,0), index (5,0,16,0) | ||
| 508 | start: c0 -->(16590) Q(7,65,1,14,4), index (5,0,14,4) [#4: c0 -->(17215) Q(7,65,1,16,0)] | ||
| 503 | ``` | 509 | ``` |
| 504 | *) | 510 | *) |
4Proof outlineCheck: the new items (green) carry the argument; the names read like the proof.md rules.
73 items in 1RB---_0LC1RF_1LE0RD_0RB1RC_1RD0LE_0RC1RA.v (510 lines): 64 Lemma, 7 Definition, 1 Fixpoint, 1 Inductive. 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.
| # | kind | name | statement (no proof body) | line | vs template |
|---|---|---|---|---|---|
| 1 | Definition | tm | Definition tm := Eval compute in (TM_from_str "1RB---_0LC1RF_1LE0RD_0RB1RC_1RD0LE_0RC1RA"). | L23 | identicalexcept the TM string |
| 2 | Lemma | ev_eq | Lemma ev_eq {c1 c2 c2'} : c1 -->* c2 -> c2 = c2' -> c1 -->* c2'. | L40 | identical |
| 3 | Lemma | prog_eq | Lemma prog_eq {c1 c2 c2'} : c1 -->+ c2 -> c2 = c2' -> c1 -->+ c2'. | L43 | identical |
| 4 | Lemma | ENDL | Lemma ENDL l : l <* <[0;0] {{B}}> 0inf -->+ l <{{E}} [0;0;1] *> 0inf. | L48 | adapted |
| 5 | Lemma | AL | Lemma AL l r : l <* bA <{{E}} [0;0;1] *> r -->* l <{{E}} [0;0;1] *> bAr *> r. | L49 | adapted |
| 6 | Lemma | BL | Lemma BL l r : l <* bB <{{E}} [0;0;1] *> r -->* l <{{E}} [0;0;1] *> bBr *> r. | L50 | adapted |
| 7 | Lemma | AR | Lemma AR l r : l <* <[0;0;1] {{F}}> bAr *> r -->* l <* bA <* <[0;0;1] {{F}}> r. | L51 | adapted |
| 8 | Lemma | BR | Lemma BR l r : l <* <[0;0;1] {{F}}> bBr *> r -->* l <* bB <* <[0;0;1] {{F}}> r. | L52 | adapted |
| 9 | Lemma | ENDR | Lemma ENDR l : l <* <[0;0;1] {{F}}> 0inf -->* l <* bB <* <[0;0] {{B}}> 0inf. | L53 | adapted |
| 10 | Lemma | D1L | Lemma D1L l r : l <* d1 <{{E}} [0;0;1] *> r -->* l <{{E}} [0;0;1] *> [0;1;0;1] *> r. | L54 | adapted |
| 11 | Lemma | FLIP | Lemma FLIP l r : l <* d0 <{{E}} [0;0;1] *> r -->* l <* d1 <* <[0;0;1] {{F}}> r. | L55 | adapted |
| 12 | Lemma | D0R | Lemma D0R l r : l <* <[0;0;1] {{F}}> [0;1;0;1] *> r -->* l <* d0 <* <[0;0;1] {{F}}> r. | L56 | adapted |
| 13 | Lemma | D0R' | Lemma D0R' l r : l <* <[0;0;1] {{F}}> [0;1] *> [0;1;0;1] *> r -->* l <* d0 <* <[0;0;1] {{F}}> [0;1] *> r. | L57 | adapted |
| 14 | Lemma | OVL | Lemma OVL r : 0inf <{{E}} [0;0;1] *> [0;1;0;1] *> r -->* 0inf <* d1 <* <[0;0;1] {{F}}> [0;1] *> r. | L59 | adapted |
| 15 | Lemma | OVR | Lemma OVR l r : l <* <[0;0;1] {{F}}> [0;1] *> bAr *> r -->* l <* d0 <{{E}} [0;0;1] *> [1;0;1] *> r. | L61 | adapted |
| 16 | Lemma | FL | Lemma FL l r : l <* bA <* <[1;1;1] <{{E}} [0;0;1] *> r -->* l <{{E}} [0;0;1] *> [0;0;1] *> bBr *> r. | L63 | adapted |
| 17 | Lemma | FR1 | Lemma FR1 l r : l <* <[0;0;1] {{F}}> [0;0;1] *> bBr *> r -->* l <* bA <{{E}} [0;0;1] *> [0;0;1] *> r. | L65 | adapted |
| 18 | Lemma | FR2 | Lemma FR2 l r : l <* <[0;0;1] {{F}}> [0;0;1] *> bAr *> r -->* l <* bA <{{E}} [0;0;1] *> [1;0;1] *> r. | L67 | adapted |
| 19 | Lemma | FR3 | Lemma FR3 l r : l <* <[0;0;1] {{F}}> [1;0;1] *> bAr *> r -->* l <* bA <* <[1;1;1] <* <[0;0;1] {{F}}> r. | L69 | adapted |
| 20 | Lemma | FR4 | Lemma FR4 l r : l <* <[0;0;1] {{F}}> [1;0;1] *> bBr *> r -->* l <{{E}} [0;0;1] *> [0;0;1] *> bAr *> r. | L71 | adapted |
| 21 | Lemma | FE0 | Lemma FE0 l : l <* <[0;0;1] {{F}}> [0;0;1] *> 0inf -->* l <* bA <* <[0;0] {{B}}> 0inf. | L73 | adapted |
| 22 | Lemma | FE1 | Lemma FE1 l : l <* <[0;0;1] {{F}}> [1;0;1] *> 0inf -->* l <{{E}} [0;0;1] *> [0;0;1] *> [0;0;1] *> 0inf. | L75 | adapted |
| 23 | Lemma | FE2 | Lemma FE2 l : l <* <[0;0;1] {{F}}> [0;0;1] *> [0;0;1] *> 0inf -->* l <* bA <{{E}} [0;0;1] *> [1] *> 0inf. | L77 | adapted |
| 24 | Lemma | FE3 | Lemma FE3 l : l <* <[0;0;1] {{F}}> [1] *> 0inf -->* l <{{E}} [0;0;1] *> [0;0;1;1] *> 0inf. | L79 | adapted |
| 25 | Lemma | FE4 | Lemma FE4 l : l <* <[0;0;1] {{F}}> [0;0;1;1] *> 0inf -->* l <* bA <{{E}} [0;0;1] *> [0;0;1] *> 0inf. | L81 | adapted |
| 26 | Lemma | ALs | Lemma ALs a : forall l r, l <* bA^^a <{{E}} [0;0;1] *> r -->* l <{{E}} [0;0;1] *> bAr^^a *> r. | L86 | adapted |
| 27 | Lemma | BLs | Lemma BLs a : forall l r, l <* bB^^a <{{E}} [0;0;1] *> r -->* l <{{E}} [0;0;1] *> bBr^^a *> r. | L90 | adapted |
| 28 | Lemma | ARs | Lemma ARs a : forall l r, l <* <[0;0;1] {{F}}> bAr^^a *> r -->* l <* bA^^a <* <[0;0;1] {{F}}> r. | L94 | adapted |
| 29 | Lemma | BRs | Lemma BRs a : forall l r, l <* <[0;0;1] {{F}}> bBr^^a *> r -->* l <* bB^^a <* <[0;0;1] {{F}}> r. | L98 | adapted |
| 30 | Lemma | D1Ls | Lemma D1Ls a : forall l r, l <* d1^^a <{{E}} [0;0;1] *> r -->* l <{{E}} [0;0;1] *> [0;1;0;1]^^a *> r. | L102 | adapted |
| 31 | Lemma | D0R's | Lemma D0R's a : forall l r, l <* <[0;0;1] {{F}}> [0;1] *> [0;1;0;1]^^a *> r -->* l <* d0^^a <* <[0;0;1] {{F}}> [0;1] *> r. | L106 | adapted |
| 32 | Fixpoint | ctr | Fixpoint ctr (k n : nat) : side := match k with | O => 0inf | S k => ctr k (Nat.div2 n) <* (if Nat.odd n then d1 else d0) end. | L113 | identical |
| 33 | Lemma | ctr_even | Lemma ctr_even k q : ctr (S k) (2*q) = ctr k q <* d0. | L119 | identical |
| 34 | Lemma | ctr_odd | Lemma ctr_odd k q : ctr (S k) (S (2*q)) = ctr k q <* d1. | L122 | identical |
| 35 | Lemma | pow2_pos | Lemma pow2_pos k : 1 <= 2^k. | L125 | identical |
| 36 | Lemma | CTR | Lemma CTR k : forall n r, S n < 2^k ->
ctr k n <{{E}} [0;0;1] *> r -->* ctr k (S n) <* <[0;0;1] {{F}}> r. | L129 | adapted |
| 37 | Lemma | ctr_ones | Lemma ctr_ones k : ctr k (2^k - 1) = 0inf <* d1^^k. | L144 | identical |
| 38 | Lemma | ctr_pow | Lemma ctr_pow k : ctr (S k) (2^k) = 0inf <* d1 <* d0^^k. | L153 | identical |
| 39 | Lemma | ctr_ov | Lemma ctr_ov k : ctr (S (S k)) (2^(S k) + 1) = 0inf <* d1 <* d0^^k <* d1. | L160 | identical |
| 40 | Lemma | OV | Lemma OV k r :
ctr (S k) (2^(S k) - 1) <{{E}} [0;0;1] *> bAr *> bAr *> r -->*
ctr (S (S k)) (2^(S k) + 1) <* bA <* <[1;1;1] <* <[0;0;1] {{F}}> r. | L167 | adapted |
| 41 | Lemma | RT | Lemma RT K n a r : S n < 2^K ->
ctr K n <* bA^^a <{{E}} [0;0;1] *> r -->* ctr K (S n) <* bA^^a <* <[0;0;1] {{F}}> r. | L177 | adapted |
| 42 | Lemma | OVRT | Lemma OVRT k a r :
ctr (S k) (2^(S k) - 1) <* bA^^(S (S a)) <{{E}} [0;0;1] *> r -->*
ctr (S (S k)) (2^(S k) + 1) <* bA <* <[1;1;1] <* bA^^a <* <[0;0;1] {{F}}> r. | L184 | adapted |
| 43 | Lemma | QC | Lemma QC K n x y r : 3 + n < 2^K ->
ctr K n <* bA^^(S x) <* <[1;1;1] <* bA^^(S (S y)) <{{E}} [0;0;1] *> r -->*
ctr K (3 + n) <* bA^^(S (S (S x))) <* <[1;1;1] <* bA^^y <* <[0;0;1] {{F}}> r. | L192 | adapted |
| 44 | Definition | Pc | Definition Pc K n X z := ctr K n <* bA^^X <* bB^^z <* <[0;0] {{B}}> 0inf. | L211 | adapted |
| 45 | Definition | Qc | Definition Qc K n x y z := ctr K n <* bA^^x <* <[1;1;1] <* bA^^y <* bB^^z <* <[0;0] {{B}}> 0inf. | L212 | adapted |
| 46 | Lemma | R1 | Lemma R1 K n X z : S n < 2^K -> Pc K n X z -->+ Pc K (S n) X (S z). | L214 | identical |
| 47 | Lemma | R1s | Lemma R1s K c : forall n X z, c + n < 2^K -> Pc K n X z -->* Pc K (c + n) X (c + z). | L220 | identical |
| 48 | Lemma | R2 | Lemma R2 k X z : Pc (S k) (2^(S k) - 1) (S (S X)) z -->+ Qc (S (S k)) (2^(S k) + 1) 1 X (S z). | L229 | identical |
| 49 | Lemma | Pfin | Lemma Pfin (k n X z n' x' X' z' : nat) : n < 2^(S k) -> X = 2 + X' -> n' = 2^(S k) + 1 -> x' = 1%nat -> z' = z + 2^(S k) - n -> Pc (S k) n X z -->+ Qc (S (S k)) n' x' X' z'. | L236 | identical |
| 50 | Lemma | R3 | Lemma R3 K n x y z : 3 + n < 2^K -> Qc K n (S x) (S (S y)) z -->+ Qc K (3 + n) (S (S (S x))) y (S z). | L247 | identical |
| 51 | Definition | Hit0 | Definition Hit0 (G G' : side) := forall l, l <* <[0;0;1] {{F}}> G -->* l <{{E}} [0;0;1] *> G'. | L261 | adapted |
| 52 | Definition | Hit1 | Definition Hit1 (G G' : side) := forall l, l <* <[0;0;1] {{F}}> G -->* l <* bA <{{E}} [0;0;1] *> G'. | L262 | adapted |
| 53 | Inductive | Gad | Inductive Gad : side -> nat -> nat -> Prop := | Gad_end : Gad ([0;0;1] *> 0inf) 1%nat 1%nat | Gad_h0 G G' T D : Hit0 G G' -> Gad G' T D -> Gad G (S T) D | Gad_h1 G G' T D : Hit1 G G' -> Gad G' T D -> Gad G (S T) (S D). | L264 | identical |
| 54 | Lemma | Gad_DT | Lemma Gad_DT G T D : Gad G T D -> D <= T. | L269 | identical |
| 55 | Lemma | Gad_eq | Lemma Gad_eq {G T D T' D'} : T = T' -> D = D' -> Gad G T D -> Gad G T' D'. | L272 | identical |
| 56 | Lemma | gad_even | Lemma gad_even z : Gad ([0;0;1] *> bBr^^z *> 0inf) (S z) (S z). | L276 | identical |
| 57 | Lemma | gad_tail | Lemma gad_tail : Gad ([1;0;1] *> 0inf) 5 3. | L284 | identical |
| 58 | Lemma | gad_mid | Lemma gad_mid z : Gad ([1;0;1] *> bBr^^z *> 0inf) (5 + 2*z) (3 + z). | L293 | identical |
| 59 | Lemma | gad_odd | Lemma gad_odd z : Gad ([0;0;1] *> bBr *> bAr *> bBr^^z *> 0inf) (7 + 2*z) (5 + z). | L303 | identical |
| 60 | Lemma | ConvNo | Lemma ConvNo K : forall G T D, Gad G T D -> forall n a, n + T < 2^K ->
ctr K n <* bA^^a <{{E}} [0;0;1] *> G -->* Pc K (n + T) (a + D) 0. | L312 | adapted |
| 61 | Lemma | PostOV | Lemma PostOV K : forall G T D, Gad G T D -> forall n x b y,
b + D = 2*T + y -> 1 <= y -> 3*T + n < 2^K ->
ctr K n <* bA^^(S x) <* <[1;1;1] <* bA^^b <{{E}} [0;0;1] *> G -->*
Qc K (3*T + n) (2*T + S x) y 0. | L323 | adapted |
| 62 | Lemma | ConvOV | Lemma ConvOV k : forall G T D, Gad G T D -> forall n a m y,
n + T = 2^(S k) + m -> n < 2^(S k) -> a + D = 2 + 2*m + y -> 1 <= y ->
3*m + (2^(S k) + 1) < 2^(S (S k)) ->
ctr (S k) n <* bA^^a <{{E}} [0;0;1] *> G -->*
Qc (S (S k)) (3*m + (2^(S k) + 1)) (1 + 2*m) y 0. | L345 | adapted |
| 63 | Lemma | QG0 | Lemma QG0 K n x z : Qc K n (S x) 0 z -->+
ctr K n <* bA^^x <{{E}} [0;0;1] *> [0;0;1] *> bBr^^(S z) *> 0inf. | L379 | adapted |
| 64 | Lemma | QG1 | Lemma QG1 K n x z : Qc K n (S x) 1 z -->+
ctr K n <* bA^^x <{{E}} [0;0;1] *> [0;0;1] *> bBr *> bAr *> bBr^^z *> 0inf. | L385 | adapted |
| 65 | Lemma | Conv0 | Lemma Conv0 K n x z : n + z + 2 < 2^K -> Qc K n (S x) 0 z -->+ Pc K (n + z + 2) (x + z + 2) 0. | L394 | identical |
| 66 | Lemma | Conv1 | Lemma Conv1 K n x z : n + 2*z + 7 < 2^K -> Qc K n (S x) 1 z -->+ Pc K (n + 2*z + 7) (x + z + 5) 0. | L403 | identical |
| 67 | Lemma | Conv1o | Lemma Conv1o (k m n x z n' x' y : nat) : n + 2*z + 7 = 2^(S k) + m -> n < 2^(S k) -> x + z + 5 = 2 + 2*m + y -> 1 <= y -> 3*m + (2^(S k) + 1) < 2^(S (S k)) -> n' = 3*m + (2^(S k) + 1) -> x' = 1 + 2*m -> Qc (S k) n (S x) 1 z -->+ Qc (S (S k)) n' x' y 0. | L412 | identical |
| 68 | Definition | CfgF | Definition CfgF (k i y z : nat) := Qc (S (S k)) (3*i + (2^(S k) + 1)) (1 + 2*i) y z. | L429 | identical |
| 69 | Definition | Inv | Definition Inv (k i y z : nat) : Prop := 64 <= 2^(S k) /\ 2^(S k) <= 8*(y + 2*i) /\ 8*(y + 2*i) <= 3 * 2^(S k) /\ 3*z <= 2^(S k) + 3*i /\ 8*i <= 8*z + 2^(S k) /\ 2^(S k) <= 4*y + 6*i + 2*z /\ 20*y + 24*i + 16*z <= 9 * 2^(S k). | L431 | identical |
| 70 | Lemma | cycle_step | Lemma cycle_step k i y z : Inv k i y z -> exists k' i' y' z', CfgF k i y z -->+ CfgF k' i' y' z' /\ Inv k' i' y' z'. | L436 | identical |
| 71 | Lemma | init0 | Lemma init0 : c0 -->* 0inf <* d1 <* d0^^5 <* d1 <* bA <* <[1;1;1] <* bA^^14 <* bB^^4 <* <[0;0] {{B}}> 0inf. | L465 | adapted |
| 72 | Lemma | init | Lemma init : c0 -->* CfgF 5 0 14 4. | L468 | adapted |
| 73 | Lemma | nonhalt | Lemma nonhalt: ~halts tm c0. | L471 | adapted |
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 · informal proof (submitted copy)
- submission/README.md · the package README
- submission/discord.md · Discord draft (not posted)
- submission/parent-proof.md · the parent's proof, as shipped
- proof.md (working copy) · differs from the submitted copy
| parent item | here | reason |
|---|---|---|
parent §1 words and families: C_k(n), A/B blocks, P(k,n,X,z), Q(k,n,x,y,z) |
the same words; the right-edge head state is B = σ(C), and the moving head is <E 001 / 001 F> (σ of <A 001 / 001 E>) |
Lemma R |
| parent §3.1, the 21 shift rules | identical, with the head states renamed; same step counts | Lemma R; in the .v each is re-proved by es on this machine's table |
| parent §3.2 repeated rules (AL^a … D0R^t, CTR, OV, QC) and parent §3.3 macro rules R1, R2, R3, R4, R5, R5o (R4o as a remark) | identical, with the same step formulas and domains | Lemma R; the .v re-proves them on this table with the parent's proof scripts |
| parent §4 cycle states S(k,Y,Z), the cycle lemma with hypotheses (a)–(d), the hexagon R_N, (i)/(ii) and the parity remark | identical | the statements and proofs read only the rules and (k,Y,Z), never the start |
| parent §4 progress (every macro rule contains ENDL) | identical | Lemma R |
| parent §5 initial segment | changed: §2 | different start |
The rules in busycoq comment style, for this machine:
1RB---_0LC1RF_1LE0RD_0RB1RC_1RD0LE_0RC1RA (= sigma of 1RB0LA_0RC1RD_0LD1RE_1LA0RB_0RD1RF_1RC---, sigma = EDBCFA)
C_k(n): n in k bits MSB first, 1 -> 1010, 0 -> 0010; A = 00111, B = 10111; moving head <E 001 / 001 F>
P(k,n,X,z) := 0^inf C_k(n) A^X B^z 00 B> 0^inf
Q(k,n,x,y,z) := 0^inf C_k(n) A^x 111 A^y B^z 00 B> 0^inf (x >= 1)
R1 P(k,n,X,z) --> P(k,n+1,X,z+1) n+1 <= 2^k-1
R2 P(k,2^k-1,X,z) --> Q(k+1,2^k+1,1,X-2,z+1) X >= 2
R3 Q(k,n,x,y+2,z) --> Q(k,n+3,x+2,y,z+1) n+3 <= 2^k-1
R4 Q(k,n,x,0,z) --> P(k,n+z+2,x+z+1,0) n+z+2 <= 2^k-1
R5 Q(k,n,x,1,z) --> P(k,n+2z+7,x+z+4,0) n+2z+7 <= 2^k-1
R5o Q(k,n,x,1,z) --> Q(k+1,2^k+1+3m,1+2m,x+z+2-2m,0) m := n+2z+7-2^k >= 0, x+z+2-2m >= 1, 3m <= 2^k-2
steps: R1 32X+32z+16t(n)+47, R2 32X+32z+16k+61, R3 96x+32y+32z+16(t(n)+t(n+1)+t(n+2))+197
cycle (N = 2^k): S(k,Y,Z) := Q(k+1, N+1+3m, 1+2m, Y-2m, Z+m), m = max(0,-Z)
S(k,2j,Z) -->+ S(k+1, 3j+Z, N-3-4j-Z)
S(k,2j+1,Z) -->+ S(k+1, 3j+3+Z, N-8-5j-2Z)
invariant (N >= 64): 8Y >= N, 8Y <= 3N, 3Z <= N, 8Z >= -N, 4Y+2Z >= N, 20Y+16Z <= 9N
start: c0 -->(16590) S(6,14,4) = Q(7,65,1,14,4) [parent: c0 -->(17215) S(6,16,0)]
6FamilyCheck: related machines are killed together or have a reason to be left open.
2 machines, 2 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.
| who | machine | status | relation to this kill |
|---|---|---|---|
| #4 kill 2 | 1RB0LA_0RC1RD_0LD1RE_1LA0RB_0RD1RF_1RC--- | ✓Killed: never halts | parent link; = #4b's table, run from state E; named in #4b's .v header; named in #4b's proof.md; named in #4b's notes.md · review · compared side by side above · mechanism |
| #4b kill 11 | 1RB---_0LC1RF_1LE0RD_0RB1RC_1RD0LE_0RC1RA | ✓Killed: never halts | this kill |
7ChecklistCheck: every ✓ is computed; the two ○ are yours to decide; an amber ! is an optional check that did not finish.
- ✓Machine string exactthe .v literal == holdout list line 17 byte for byte
- ✓Statement is
~halts tm c0parsed from the .v and confirmed by check_kill (theorem_text, theorem_rocq) - ✓No axioms beyond baseline0 assumption(s); tools/assumptions_baseline.txt allows only functional_extensionality_dep
- ✓coqchk finished (optional)coqchk pass in 2.11 s
- ✓.v hash matches the checked hash.v = checked sha256 0c89b5109f87…; submission/ copy = checked sha256 0c89b5109f87…
- ✓No repo-local paths in the .vcomments name no path of ours (vendor/, machines/, tools/, rocq/, scripts/, reports/, atlas/, data/, journal/, /home/); busycoq's own
verify/X.vis fine: none in the .v or the submission/ copy - ✓Public write-up is cleantools/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 L79: - 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: # 1RB---_0LC1RF_1LE0RD_0RB1RC_1RD0LE_0RC1RA: delta proof from kill #4 (Checkpoint B)
- proof.md L192: ## 7. Checkpoint B notes (Dennis)
- ○Family posted together?1 other kill(s) in the family: #4; 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 1RB---_0LC1RF_1LE0RD_0RB1RC_1RD0LE_0RC1RA
Files
machines/<tm>/: 13 entries · raw notes, status, scripts, images
| name | size | changed |
|---|---|---|
| notes.md ↓ | 8.4 KB | 2026-10-10 12:30 |
| proof.md ↓ | 17 KB | 2026-10-10 12:17 |
| how_proved.md ↓ | 1.4 KB | 2026-10-14 10:51 |
| status.json ↓ | 832 B | 2026-10-16 10:28 |
| observe.json ↓ | 12 KB | 2026-10-10 16:32 |
| 1RB---_0LC1RF_1LE0RD_0RB1RC_1RD0LE_0RC1RA.v ↓ | 21 KB | 2026-10-10 12:21 |
| img/ | 9 items | 2026-10-16 10:28 |
| rocq/ | 9 items | 2026-10-10 12:27 |
| submission/ | 6 items | 2026-10-14 10:10 |
| work/ | 9 items | 2026-10-10 15:58 |
| check_proof.out ↓ | 5.7 KB | 2026-10-10 12:16 |
| check_proof.py ↓ | 22 KB | 2026-10-10 12:16 |
| check_proof_k15.out ↓ | 5.8 KB | 2026-10-10 12:17 |
status.json in full
{
"tm": "1RB---_0LC1RF_1LE0RD_0RB1RC_1RD0LE_0RC1RA",
"status": "KILLED_NONHALT",
"stage": "done",
"updated": "2026-10-10",
"reason": "check_kill PASS, independently re-verified",
"parent": "1RB0LA_0RC1RD_0LD1RE_1LA0RB_0RD1RF_1RC---",
"parent_note": "1RB0LA_0RC1RD_0LD1RE_1LA0RB_0RD1RF_1RC--- (#4)",
"label": "#4b",
"relation": "same transition table as #4 (states renamed), started in a different state; found by the family sweep",
"pr": "https://github.com/ccz181078/busycoq/pull/24",
"pr_state": "merged",
"pr_file": "verify/M_1RBHHH_0LC1RF_1LE0RD_0RB1RC_1RD0LE_0RC1RA.v",
"pr_opened": "2026-10-15T22:46:17Z",
"pr_comments": 0,
"pr_head_sha": "1b57cbac0ccf590232647c1b29389f2efe7f26a4",
"posted": "2026-10-15 (Discord; user confirmed sent)",
"pr_merged_at": "2026-10-16T07:07:18Z",
"pr_merged_by": "ccz181078"
}1 contract warning
- rank: missing





