1RB0RA_1LC0LD_1LE1LD_0LB0RE_1RF0LA_---0RA (#7): never halts (delta proof against kill #30)
- Machine:
1RB0RA_1LC0LD_1LE1LD_0LB0RE_1RF0LA_---0RA, viewer https://bbchallenge.org/1RB0RA_1LC0LD_1LE1LD_0LB0RE_1RF0LA_---0RA. Byte-exact on the 740-machine holdout list (data/holdouts/BB6_holdouts_740.txt, line 381) and on every list back to June 2024. - Parent: kill #30 =
1RB0RF_1RC1RF_1LD0RE_---0LE_1LA0LE_0RA0LC(KILLED_NONHALT). Its informal proof ismachines/1RB0RF_1RC1RF_1LD0RE_---0LE_1LA0LE_0RA0LC/proof.md(cited below as "#30 §n"), and its public write-up with the .v route ismachines/1RB0RF_1RC1RF_1LD0RE_---0LE_1LA0LE_0RA0LC/submission/proof.md(cited as "#30 .v §8.3"). - Relation: #7 is #30's transition table, mirrored and with its states renamed, started in #30's state E (Δ1).
- What this text adds: the conjugacy (Δ1), a new initial segment (Δ2), the base of #30's orbit induction at #7's fifth left record (Δ3), the reason why the rest of #30's argument holds word for word (Δ4), and #7's own finite part, for #30's informal threshold and for the threshold of #30's .v (Δ5).
- Checks:
check_proof.py(this directory) checks Δ1–Δ5 by direct simulation of both tables, and ties the Rocq draft of Δ6 to its storedcheck_killlog. It also re-runs #30's own check functions, imported from #30'scheck_proof.pyand not copied: #30's section D runs from #7's start with only the start changed. Results are in Δ7. - Status of this text: complete. Every step is either an exact finite simulation (Δ1, Δ2), an exact check of finitely many inequalities (Δ3, Δ5), or #30's proof applied unchanged (Δ4). #7's earlier STUCK analysis is superseded; see the last section.
Δ1. The conjugacy: #7 is #30 mirrored and renamed
#7 #30
0 1 0 1
A 1RB 0RA A 1RB 0RF
B 1LC 0LD B 1RC 1RF
C 1LE 1LD C 1LD 0RE
D 0LB 0RE D --- 0LE
E 1RF 0LA E 1LA 0LE
F --- 0RA F 0RA 0LC
The map. Let σ send #7's states to #30's:
| #7 state | A | B | C | D | E | F |
|---|---|---|---|---|---|---|
| σ (#30 state) | E | A | B | F | C | D |
Its inverse sends #30's A, B, C, D, E, F to #7's B, C, E, F, A, D. For every state q and symbol s:
#7[q][s] = (w, d, q') ⟺ #30[σq][s] = (w, −d, σq'),
and #7[q][s] is undefined exactly when #30[σq][s] is. The only such pair is #7's F0 and #30's D0. For example, #7's A row 1RB 0RA becomes 1LA 0LE, which is #30's E row.
- Uniqueness. Among all 720 permutations and both orientations, σ with the mirror is the only map that sends #7's table onto #30's (X1).
- Consequence. Map a configuration of #7 to its mirror image (cell x goes to cell −x) and rename its state by σ. One step of #7 then becomes one step of #30's table. #7's start
0^inf A> 0^infmaps to0^inf E> 0^inf. So #7 halts from the blank tape if and only if #30's table halts from the blank tape in state E. In busycoq this isflip_haltsplusperm_halts, as in #24 (Δ6). X2 checks the step-for-step correspondence over 2·10^6 steps, with full-tape comparisons at checkpoints. - Reading configurations across the mirror.
l q> rin #30's frame isrev(r) <(σ⁻¹q) rev(l)in #7's frame. The two configurations that Δ2 needs: L(16, 0001) = 0^inf <A 101 (001)^16 0001 0^infis0^inf 1000 (100)^16 101 B> 0^infin #7's frame;K(1, 17, 1) = 0^inf 110 0 (011)^17 C> 1 0^infis0^inf 1 <E (110)^17 0 011 0^infin #7's frame.- The third start. The same table is on the list a third time: Wave 4's W4-1 =
1RB1RF_1LC0RD_---0LD_1LE0LD_1RA0RF_0RE0LBis #30 renamed, with no mirror, and starts in #30's state B (X1). Another agent is working on it, and it is not covered here.
From here on everything is in #30's frame and uses #30's notation (#30 §2): hubs K(a, b, X), left records L(k, T), pre-records L'(k, T), the grammars G ⊂ O ⊂ H, the end words E*, budgets N = k + 1, ordinary and special residues.
Δ2. Initial segment (direct simulation)
Start from 0^inf E> 0^inf and use #30's table. Up to step 1059, the configurations of the form L(k, T) are exactly the five below. Here "of the form" means state A reads a blank, every cell to its left is blank, and 101 follows. X3 checks this at every step, with #7's own table in #7's frame.
| record | step | k (of L(k, T)) |
T | residue Y (T = 000 Y) | N = k+1 | kind | covered by #30's rules? |
|---|---|---|---|---|---|---|---|
| e1 | 15 | 0 | 0001 |
1 = t1 |
1 | special (G) | Et1 at once. The eat is at a G word, but N = 1 is not ≥ β + 2 |
| e2 | 81 | 1 | 000010010001 |
01 a z 1 |
2 | special (E*) | no: the digestion costs 2 > N − 2 = 0; the eat meets 11 a z 1 ∉ G |
| e3 | 183 | 3 | 0001000010001 |
10 00 010001 |
4 | special (E*) | no: it costs 11 > N − 2 = 2 |
| e4 | 573 | 5 | 000010010010001000110010001 |
01 a^2 z 1000110010001 |
6 | neither (Y ∉ H) | the epoch is covered (LP0/LP11/LPC on the prefix, then eats at G words, ending at e5), but (I1) fails at e4 |
| e5 | 1059 | 16 | 0001 |
1 = t1 |
17 | special (G) | yes: the base (Δ3) |
- The TM gets through e2 and e3 by eats at non-G words that happen not to halt, just as #30's own epoch 2 does (#30 §6). This part is pure simulation, so no rule is claimed for it.
- e4's residue is outside the invariant family, so e5 is the first record from which every record is in the family. Every epoch from there on is also covered by the rules.
- At step 1059 the whole tape is exactly
L(16, 0001). In #7's frame it is0^inf 1000 (100)^16 101 B> 0^inf. - The restart R (#30 §3.7,
3k + 7 = 55steps) gives the hubK(1, 17, t1)at step 1114. In #7's frame it is0^inf 1 <E (110)^17 0 011 0^inf. X3 checks this tape cell by cell. - No halt occurs before step 1114. X3 runs #7's own table, and X2 runs #30's table in lockstep with it.
- The column k is the record index of
L(k, T), the number of001blocks. It is not the k of #30's orbit invariant (D.6), which is k(W), the number of blocks of the residue's W (Δ3).
The next record is e6 = L(23, 000 10 00 010001) at step 2915, with N = 24.
Δ3. The base of #30's orbit induction, clause by clause
30's induction (#30 §5 D.6) starts at its epoch 3: L(7, 000 t2), N = 8, a special residue, κ = 0. #7's base is e5: L(16, 000 t1), N = 17, also a special residue.
The running maximum. In D.6, k_t is k(W_t), the number of blocks of the W in the residue Y_t = 11 a^x z W, and k(W) = 0 for a special residue. It is not the record index of L(k, T) in Δ2's table. The running maximum is taken from e5 on: κ_t := max_{5 ≤ s ≤ t} k(W_s). At the base, κ_5 = k(W_5) = 0: Y_5 = t1 is special and has no W. The record index of e5 is 16, but it does not enter the invariant. Read with it, (I4) would fail at the base, since N_lo(16) = 2^19 − 2^14 is far above 17. X4 checks both readings.
| clause (#30 D.6) | at e5 | holds |
|---|---|---|
form L(k, 000 Y), then R to K(1, k+1, Y) |
record index k = 16, Y = 1, so K(1, 17, 1) |
yes (simulated, X3) |
| Y ∈ H (needed for #30 §4, Lemma H) | 1 = t1 ∈ G ⊂ H |
yes |
| (I1) Y is ordinary or special | special: t1 ∈ G | yes |
(I2) if ordinary: η ≥ 0, S ≤ U(κ, ·), x ≤ xmax(κ) |
vacuous (no W) | yes |
(I3) c ≤ Γ(k, κ), so k + c ≤ G(κ), with k = k(W) and c = 0 if special |
k(W) = 0, c = 0, κ_5 = 0; 0 ≤ Γ(0, 0) = 0 and 0 ≤ G(0) = 0 |
yes |
(I4) N ≥ N_lo(κ) = 2^(κ+3) − 2^(⌊(G(κ)+1)/2⌋+4) |
17 ≥ N_lo(κ_5) = N_lo(0) = 8 − 16 = −8 |
yes |
epoch e5 finishes (β ≤ N − 2) |
Y ∈ G, so β = 0 ≤ 15; the next record is e6 | yes (model = TM) |
This is #30's base case, "κ = 0, special", word for word, with t1 in place of t2. Both are tails in G, so the digestion is empty and the reset D.4(r) applies.
No earlier record can serve as the base. At e1 (N = 1) the budget is below β + 2. The induction step from e2 or e3 fails, because their digestion does not fit in N, and #30's rules indeed do not cover those epochs. e4's residue is not in H, so (I1) fails there, although its epoch is computed by the rules and ends at e5. X4n checks all of this.
Δ4. Why the rest of #30's argument applies unchanged
30's argument has three kinds of parts. Statements about the table hold for every configuration. Statements about one epoch hold for any epoch K(1, N, Y) with Y ∈ H and enough budget. The rest is the orbit induction with its base and its finite part. Only the base and the finite part refer to the starting configuration.
| #30 part | depends on the start? | for #7 |
|---|---|---|
| §1 the halting transition (D0 = #7's F0) | no | Δ1 maps it |
| §3 rules W1–W11, S1–S3, RP0/RP1, LP*, B, eats E1g/E2g/E0/Et1–Et3, R, D6 (exact runs in every context) | no: statements about the table | unchanged |
| §4 Lemma H, eat coverage, the one-epoch corollary | no: for any epoch K(1, N, Y) with Y ∈ H |
unchanged |
| §5 D.0 (positions, (P1), (P2), Lemma P, Lemma C, termination of Φ) | no: per digestion | unchanged |
| D.1 cost recursion, D.2 levels, D.3 shape and mass bound, D.5 value bound | no: per epoch | unchanged |
| D.4(a), (b), (e), (r) | no: from epoch t to t+1 | unchanged |
| D.4(c) unrolling ("stops … at epoch 3, whose residue t2 is special") | only through the base | stops at e5 (residue t1, special) instead. In D.6 it is subsumed by the step (I2)t ⇒ (I2){t+1}. |
| D.6 orbit invariant (I1)–(I4) | only the base | base = Δ3. The step uses only D.4, Lemma C, D.5 and N_{t+1} > N_t |
| D.7 Bnd, Bnd_worst(κ), F = {0..11}, N* = 14,796, the closed-form tail for κ ≥ 64 | no: arithmetic in κ | unchanged |
| D.8 finite part (the epochs with N < N*) | yes | recomputed for #7's orbit (Δ5) |
| §6 initial segment | yes | replaced by Δ2 |
| §7 conclusion | only "t ≥ 3" | reads "t ≥ 5" |
Spelled out:
- The induction runs from t = 5. While N_t < N*, the step "epoch t finishes" (β_t ≤ N_t − 2) is the explicit computation of Δ5. For N_t ≥ N* it is D.7, with the same case split on κ_t ∈ F.
- Every epoch has N_{t+1} ≥ N_t + 1 (#30 §4 corollary), so N reaches N* after finitely many epochs and stays above it.
- Every epoch reaches the next left record. So the sequence of left records is infinite and #7 never halts.
#30's finite part cannot be reused. #7's orbit from e5 shares no epoch (N, Y) with #30's orbit from its epoch 3, nor with W4-1's orbit, up to N = 20,000. The three starts never merge before the threshold, so #7 needs its own finite part.
Δ5. #7's finite part
Informal route (#30's threshold N* = 14,796). The rules-only orbit (#30 §3, no TM inside) runs from K(1, 17, t1) (e5) on.
- The epochs with N < 14,796 are e5 to e591, 587 epochs. e592 has N = 14,804.
- None of them has an eat at a word outside G or a word without a rule, and each has β ≤ N − 2.
- check_proof.py runs #30's section D from e5 to N ≥ 400,000. The links of Lemma D (H3, FIN, D.1, Lemma C, D.2–D.5, D.4(a)–(c), (e), (r), D.6G, D.7a/b/n/s) hold on every epoch.
- The same orbit equals the TM's left records: a fresh Python run to 2·10^7 steps, and a C run to 10^11 steps (X5).
Formal route (#30's .v: Inv, threshold 17,705). #30's .v closes with nonhalt_from and the invariant ∃κ, Inv κ N Y (#30 .v §8.3). Inv contains N ≥ 17,705, so the .v's finite part must run until N first reaches 17,705:
- orbit f 687 17 t1 = Some (17724, Y_692): 687 epochs (e5..e691), landing at e692, the first record with N ≥ 17,705 (e691 has N = 17,670). Coq's vm_compute gives the same value: fin7 : orbit 100000 687 17 t1 = Some (17724, Y692) with Y692 := p11 16 (gw B692 0), where B692 lists the ten blocks of W below (Δ6).
- Y_692 = '11' a^16 z W, with W = a(6) z a(1) z b(1) z b(1) z a(1) z b(1) z a(1) z a(1) z b(1) z a(0) (bare tail). So k(W) = 10 and m(W) = 4,396.
- Inv 10 17724 Y_692 holds, clause by clause:
| clause | value | bound |
|---|---|---|
N ≥ Nstar |
17,724 | 17,705 |
N ≥ Nlo(10) = 2^13 − 8·2^⌊(13+3)/2⌋ |
17,724 | 6,144 |
Y = p11 x (gw bs s), s ≤ 3, length bs ≤ 10 |
x = 16, 10 blocks, s = 0 | yes |
Mw(W) = Σ w(q) e_q, w(q) = 2^⌊(q+1)/2⌋ |
66 | A(10) = 2,219 |
M2(W) = Σ 2^(q+1) e_q |
1,032 | B(10) = 5,601 |
x |
16 | X(10) = 2,291 |
(κ = 11 also works; κ = 10 is the least.) From there inv_step (proved in #30's .v, start-independent) carries Inv to every later epoch. As a check, Inv also holds at every later epoch of the rules-only orbit, with κ the running maximum, up to N ≥ 400,000 (V2).
- Transcription check. The Python bound functions reproduce #30's §8.3 table for κ = 8..13. The Python model reproduces #30's fin694 (orbit 691 8 t2 = (17713, Y694)) and inv694 (Mw 77, M2 1,054) exactly (V0). So the numbers above are what Coq's orbit and Inv should compute for #7.
Δ6. Rocq plan (delta)
Recipe: #30's .v plus the #24 bridge (atlas/rocq-notes.md, "#24 formalization round 1").
1. Top of the file. tm := TM_from_str "1RB0RA_1LC0LD_1LE1LD_0LB0RE_1RF0LA_---0RA" (#7) and tm30 := TM_from_str "1RB0RF_1RC1RF_1LD0RE_---0LE_1LA0LE_0RA0LC". The three step notations -->, -->* and -->+ are on tm30. check_kill only warns about the second literal.
2. Keep #30's .v verbatim up to and including orbit_sound. This covers Sections 1–10 (LP, Phi, sound, epoch_tm, the model, the potentials, Inv, inv_step, the threshold) and the start of Section 11 (orbit, orbit_sound). None of it depends on the start. It refers to the machine only through the notations, so it compiles on tm30 unchanged. Three of #30's lemmas are about #30's own start K(1, 8, t2): init : c0 -->* K 8 t2, fin694 and inv694. They still compile on tm30, but #7 does not use them, so they can be dropped.
3. Replace the rest of Section 11. #30's tail cannot stay verbatim. Its nonhalt_from is stated as ~ halts tm c0 and uses progress_nonhalt_cond tm, so it no longer typechecks against epoch_tm on tm30. Its Lemma nonhalt would also be defined twice. The new tail:
- nonhalt_from_c c N0 y0 P : c -->* K N0 y0 → P N0 y0 → (∀ N y, P N y → ∃ k y', Phi 1 N y k y' ∧ P (S k) y') → ~ halts tm30 c. This is #30's nonhalt_from with the start made generic and tm30 in place of tm.
- init7 : E;; tape0 -->* K 17 t1, 1,114 steps from state E. The proof is unfold K. cbn - [tape0]. followed by #30's solve_init script, with its first line replaced by change (E, tape0) with (cconfig_to_config (nil,nil,S0,E)). There are two tactic details. In #30's scope the literal 0 in #24's (nil,nil,0,D) parses as nat, so the cconfig head must be S0. And cbn -[tape0] collides with busycoq's -[ step-notation token, so it must be written cbn - [tape0], with a space.
- fin7 : orbit 100000 687 17 t1 = Some (17724, Y692) by vm_compute, with Y692 := p11 16 (gw B692 0) and B692 the ten blocks of Δ5. It is about the size of #30's 691-epoch fin694.
- inv7 : Inv 10 17724 Y692, by inv694's script with x = 16 (exists 16, B692, 0).
- nonhalt_E : ~ halts tm30 (E;; tape0), from nonhalt_from_c with P N y := ∃ k, Inv k N y, the start init7 followed by orbit_sound … fin7, the base inv7 and the step inv_step.
- phi = σ (A↦E, B↦A, C↦B, D↦F, E↦C, F↦D) and perm7 : Perm (flip tm) tm30 phi.
- nonhalt : ~halts tm c0 by flip_halts, then change (halts (flip tm) (A;; tape0)), then perm_halts with perm7 and nonhalt_E.
4. Header. Rewrite it for #7: the conjugacy, the start E, init7, the finite part to e692 (N = 17,724) and the bridge. #30's header describes the start K(1, 8, t2) and epoch 694.
5. State of the draft. rocq/M7_draft.v (sha256 3de5d2f4…92e5) is exactly steps 1–3: #30's text up to inv694 unchanged, without #30's nonhalt_from and nonhalt, and with the new tail. It compiles in about 17–20 s. tools/check_kill.sh gives PASS on 17 of 17 checks (rocq/check_kill_draft.out): coqchk passes in 127 s, Print Assumptions nonhalt is closed, and the only tm_text warning is the expected one for the second TM_from_str literal. Step 4 is still open: the draft's header comment is #30's, so the draft is not public-ready. RQ (Δ7) ties the stored log to the draft's hash, and the draft's B692 to the Python model.
6. Timing (wave 4 ranking): finish W4-1 and #7 before #30 is posted, and submit the three starts of this table as one family. W4-1's .v differs from #7's only in step 3 and the header (no mirror, start B, its own init, finite part and Inv).
Δ7. Checks (check_proof.py, seeds 1 and 2; data/check_proof_seed{1,2}.json)
- X0: the string is on the 740 list, line 381, and exactly once in each of the 28 stored holdout lists.
- X1: σ with the mirror is the unique conjugacy of #7's table onto #30's. #7's start A is #30's E. W4-1 is #30 renamed, with start B.
- X2: lockstep for 2·10^6 steps: #7 from blank in A against #30's table from blank in E, mirrored and renamed. States and positions are compared at every step, and the full tapes at 27 checkpoints. No halt.
- X3: with #7's own table, the L-form configurations up to step 1059 are exactly e1–e5 (steps 15, 81, 183, 573, 1059). The tapes at steps 1059 and 1114 are exactly the mirrors of
L(16, 0001)andK(1, 17, t1). #30's frame from E gives the same records, and the hub at step 1114 = 1059 + 3·16 + 7. - X4: (I1)–(I4) at e5, with κ_5 = k(W_5) = 0 (not the record index 16;
N_lo(16) = 2^19 − 2^14 > 17),Γ(0, 0) = 0,G(0) = 0andN_lo(0) = −8. e5's epoch ends at e6 =L(23, 000 1000010001). X4n: e1–e4 are not a valid base, and e4's epoch, although it is rule-covered, starts outside the family. - X5: the rules-only orbit from e5 equals the TM's left records.
- Python run to 2·10^7 steps: 46 records, of which 41 are compared, from e6 on.
- C run to 10^11 steps (
scripts/delta30/orbit_E.c, which is #30'sfs_orbit.cwith start E; log indata/orbit_E_1e11_LE.txt; 9 min): 517 records, of which 512 are compared, from e6 to N = 12,674. - Neither run halts.
- X6: W4-1's first records (#30's table from B) are
L(0, '')@4,L(2, 0001)@42 andL(7, 0001)@194. The orbits of #7 (from e5), #30 (from its epoch 3) and W4-1 (fromL(2, 0001)) share no epoch(N, Y)up to N ≥ 20,000. - D (#30's section D, from e5): runs to N = 400,004, the ranker's figure: 11,077 epochs, e5 to e11,081. H3, FIN, D.1, Lemma C, D.2–D.5, D.4(a)–(c), (e), (r), D.6G and D.7a/b/n/s pass on every epoch.
- Finite part below N*: 587 epochs. N* is first reached at e592, with N = 14,804.
- Special residues: 2 in G, 4 end words.
- Not used by the proof: c_t ∈ {0, 1} (7,134 and 3,943 epochs), β/Bnd ≤ 0.3788, κ = 15 at the end.
- V: V0 checks the transcription against #30's table,
fin694andinv694. V1:orbit 687 17 t1 = (17724, Y_692), that is, 687 epochs (e5..e691) landing at e692, with N = 17,670 at e691;Inv 10holds at e692. V2: Inv holds at the 10,389 later epochs, up to N ≥ 400,000 (κ goes up to 15). - RQ: the Rocq draft of Δ6 (
rocq/M7_draft.v) and its storedcheck_killlog. The log is a PASS for the draft's exact sha256, with 0 assumptions and coqchk passed. The draft statesinit7,fin7,inv7,nonhalt_E,perm7andnonhaltas Δ6 says. ItsB692equals the blocks the Python model computes at e692, and itsphiis X1's σ. - #30's table-level sections, unchanged: W1–W11, S1–S3, RP0/RP1, LP0/LP11/LPC/LP5/LPT/GI, D6, B, E1g/E2g/E0/Et1–Et3, R, H1/H2 (10,529 H words), D.0/D.3 end of digestion, the threshold (N* = 14,796, F = {0..11}, the κ ≥ 64 tail), and the adversarial residues (1,504 per seed, 40 TM epochs). They depend only on the table, and they pass here as they do in #30.
- Run time: about 95 s per seed. ALL PASS on seeds 1 and 2 (106 claims each; 93.7 s and 93.8 s; logs in
data/check_proof_seed{1,2}.log).
Earlier analysis (superseded, kept in notes.md)
Before this route, #7 was worked in its own frame over three funded stages (deepen, closure_ctl, struct_invariant, flush_lemma; notes.md from "Deepen pass" on, and decisions/). That analysis used round starts, swept tokens and a carry transducer, and it parked as STUCK on the flush lemma: no linear flush bound, and bounded-post H_3 escapes. It never noticed that the table is #30's. In #30's terms, the "slow carry" it could not bound is the nested digestion (D6). Lemma D bounds it in the counter's value, which is what the flush-lemma decision guessed (a value-form bound, as for #28). That analysis is superseded and is not used here.