/machines/1RB---_0LC1RF_1LE0RD_0RB1RC_1RD0LE_0RC1RA/proof.md · raw

1RB---_0LC1RF_1LE0RD_0RB1RC_1RD0LE_0RC1RA: delta proof from kill #4 (Checkpoint B)

0. The map

twin state 0 1 = σ(parent state) parent 0 parent 1
A 1RB --- σ(F) 1RC ---
B 0LC 1RF σ(C) 0LD 1RE
C 1LE 0RD σ(D) 1LA 0RB
D 0RB 1RC σ(B) 0RC 1RD
E 1RD 0LE σ(A) 1RB 0LA
F 0RC 1RA σ(E) 0RD 1RF

The twin's row σ(s) is the parent's row s with every target state t replaced by σ(t); symbols and directions are unchanged. For example, parent C1 = 1RE becomes 1Rσ(E) = 1RF, which is twin B1. check_proof.py §S searches all 720 renamings, each with and without mirroring: σ is the only map that works.

Lemma R (relabelling). For a configuration c, let σc be c with its head state renamed by σ; the tape and the head position stay the same. Then c → c′ in the parent if and only if σc → σc′ in the twin, and c is halted exactly when σc is. So every parent run c →ⁿ c′ gives a twin run σc →ⁿ σc′ of the same length, and the converse also holds.

Start. The twin's c0 is 0^inf A> 0^inf = σ(0^inf F> 0^inf). - From F, the parent writes F0 = 1RC and is at 0^inf 1 C> 0^inf after one step. - From its own start A it does A0 = 1RB, B0 = 0RC and is at 0^inf 1 0 C> 0^inf after two steps.

These are different tapes, so the twin's run is the parent's machine on a different orbit, not the parent's run. §L checks the twin from blank against the relabelled parent from 0^inf F> 0^inf in lockstep for 2·10⁶ steps: identical at every step.

Halting cell. The twin's only undefined cell is A1 = σ(F1). By Lemma R, P§4's "Why F1 is never reached" becomes this: - The twin enters A only by F1 = 1RA (= σ of the parent's E1 = 1RF), inside FR3, FR4, FE1 and FE3. - Each time, A then reads a 0.

1. What carries over unchanged

parent item twin reason
P§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
P§3.1, the 21 shift rules identical, with the head states renamed; same step counts Lemma R; re-executed on the twin's own table: §A, exact
P§3.2 repeated rules (AL^a … D0R^t, CTR, OV, QC) and P§3.3 macro rules R1, R2, R3, R4, R5, R5o (R4o as a remark) identical, same step formulas and domains Lemma R; §A (ranges), §M (40 random instances per rule, simulated on the twin's table)
P§4 cycle states S(k,Y,Z), the cycle lemma with hypotheses (a)–(d), the hexagon R_N, (i)/(ii) and the parity remark (not a cryptid) identical the statements and proofs read only the rules and (k,Y,Z), never the start
P§4 progress (every macro rule contains ENDL) identical Lemma R
P§5 initial segment changed: §2 different start

The rules in busycoq comment style, for the twin:

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)]

2. What changes: the initial segment (replaces P§5)

Direct simulation of the twin from the blank tape (§I). A canonical configuration is a right-edge visit in state B that parses as P or Q.

twin step twin configuration how it is reached parent step parent configuration
22 … 399 P(1,1,0,0), P(2,2,0,0), P(2,3,0,1), P(3,5,1,0), P(3,7,1,2) simulation; P(3,7,1,2) has X = 1, so R2 does not apply 110 P(2,3,1,0)
1,711 Q(5,20,3,1,0) simulation (exact) 1,507 Q(5,17,1,2,2)
3,047 P(5,27,7,0) R5 2,826 P(5,25,7,0) (R3, R4)
4,371 P(5,31,7,4) R1^4 4,996 P(5,31,7,6)
4,864 Q(6,33,1,5,5) = S(5,5,5) R2 5,553 Q(6,33,1,5,7) = S(5,5,7)
6,186 Q(6,39,5,1,7) R3^2 7,003 Q(6,39,5,1,9)
14,036 P(6,60,16,0) R5 (no overflow: 39+14+7 = 60 ≤ 63) — (parent: R5o with m = 0)
15,825 P(6,63,16,3) R1^3 —
16,590 S(6,14,4) = Q(7,65,1,14,4) R2 17,215 S(6,16,0) = Q(7,65,1,16,0)

The step numbers in the "how" column are both direct-simulation values and the parent's runner step sums from 1,711 (they agree exactly, §I). The argument needs only the first and last rows: the exact 16,590-step run and its end configuration.

From step 1,711 on, every canonical configuration of the twin's run is the one the rules predict, at the predicted step: 857 of 857 to 3·10⁷ (§C).

The base, clause by clause. In the parent's Rocq coordinates the base is CfgF 5 0 14 4 = Qc 7 (3·0 + (2^6+1)) (1+2·0) 14 4. Inv 5 0 14 4 holds:

Inv clause value
64 ≤ 2^6 64 ≤ 64
2^6 ≤ 8(y+2i) 64 ≤ 112
8(y+2i) ≤ 3·2^6 112 ≤ 192
3z ≤ 2^6 + 3i 12 ≤ 64
8i ≤ 8z + 2^6 0 ≤ 96
2^6 ≤ 4y + 6i + 2z 64 ≤ 64 (tight)
20y + 24i + 16z ≤ 9·2^6 344 ≤ 576

In proof.md's coordinates (N = 64, Y = 14, Z = 4), every facet of the hexagon holds, and 4Y+2Z ≥ N is tight (64 = 64). The parent's base S(6,16,0) is tight on the same facet. The cycle-lemma hypotheses also hold there: - (a) Y+2Z = 22 ≥ 1; - (b) 3⌊Y/2⌋ = 21 ≤ 62; - Y = 14 is even, so F(14,4) = (25, 29). Then (c) holds: 25 ≥ 0, 25+58 ≥ 1 and 36 ≤ 126; - (d) Z′ = 29 ≥ 1.

All of these also follow from P§4 (i), since the base is in R_64. check_proof.py §B checks each clause, and includes two negative controls: Inv 5 0 13 4 and Inv 5 0 14 3 fail.

3. The argument (complete)

Theorem. 1RB---_0LC1RF_1LE0RD_0RB1RC_1RD0LE_0RC1RA does not halt from the blank tape.

  1. Initial segment. The twin runs from c0 to σS(6,14,4) in exactly 16,590 steps without halting. This is a finite exact computation (§I); in Rocq it is one esx.
  2. Base. (Y,Z) = (14,4) is in R_64 (§2).
  3. Transfer. Take P§4's cycle lemma and the invariance of R_N under F_N (proved in P§4 (i)–(ii), with the vertex check in P§7 §5). Together they say: for k ≥ 6 and (Y,Z) ∈ R_N, the parent goes S(k,Y,Z) →⁺ S(k+1,F_N(Y,Z)), and F_N(Y,Z) ∈ R_2N. - Their statements and proofs use only the P§2 rules and arithmetic on (k,Y,Z). - By Lemma R, each parent run S →⁺ S′ is a twin run σS →⁺ σS′ of the same length. - So the same holds for the twin's configurations σS.
  4. Conclusion. By induction from the base, the twin's run is an infinite chain of runs σS(k,·) →⁺ σS(k+1,·), each at least one step long. So it never halts. This is P§4's conclusion paragraph with "the run reaches S(6,16,0)" replaced by "the run reaches S(6,14,4)"; both points are in R_64. A twin run never reads A1, because by Lemma R it is the image of a parent run, which never reads F1 (P§4). ∎

Nothing in the parent's argument depends on its own orbit except P§5. The orbit statistics in P§5 and P§7 §6 (the history rows, the rule tallies) are evidence, not premises.

In the parent's .v this is visible directly: - cycle_step : 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' does not mention the start. - Only init (c0 -->* CfgF 5 0 16 0) and the last goal of nonhalt (Inv 5 0 16 0) do. §5 replaces exactly those two.

4. How the twin's orbit relates to the parent's (explanation, not a premise)

There is no exact coupling here, unlike #25 and #3, where one far exponent is +2 at every step. The two machines just visit different points of the same contracting map. Both stay in the hexagon, and the branch sequences differ:

k twin S(k,Y,Z), step branch parent S(k,Y,Z) branch
6 (14, 4), 16,590 even (16, 0) even
7 (25, 29), 74,884 odd (24, 29) even
8 (68, 2), 252,898 even (65, 48) odd
9 (104, 115), 1,142,673 even (147, −8) odd
10 (271, 186), 4,947,035 odd (214, 155) even
11 (594, −31), 17,498,220 even (476, 438) even
12 (860, 888), 72,729,902 even (1152, 655) even
13 (2178, 1485), 314,863,727 even (2383, 1134) odd
14 (4752, 2348), 1,268,929,120 even (4710, −39) even
15 (9476, 4529), 5,039,089,135 even (7026, 7000) even

5. Formalization delta (for the Rocq stage)

Copy the parent's .v (sha256 51e3dea1f666153c9884283725e1d166428c79fc7d13216c101e567b398ee923, 504 lines) and change only the following: 1. The TM string. Change it in TM_from_str, the header and the closing comment block. 2. State names. Rename {{X}} simultaneously by σ: {{A}} → {{E}} (37 occurrences), {{C}} → {{B}} (6), {{E}} → {{F}} (35). The parent names no other state. Every es proof goes through unchanged by Lemma R. For readability, also rename <A, C> and E> in the comments. 3. init. init0 : c0 -->* 0inf <* d1 <* d0^^5 <* d1 <* bA <* <[1;1;1] <* bA^^14 <* bB^^4 <* <[0;0] {{B}}> 0inf, by esx (16,590 steps), and init : c0 -->* CfgF 5 0 14 4, by apply init0. 4. nonhalt. Start index (5,0,14,4)%nat. The final unfold Inv. cbn. lia. closes Inv 5 0 14 4; the tight clause is a <=. 5. Everything else verbatim: the counter, QC, Gad and its lemmas, Conv0/Conv1/Conv1o, Inv, cycle_step. Update the closing comment's start line.

Plan check (done). rocq/make_plan_check.py applies items 1–4 (it checks the occurrence counts, and that the parent names only A, C and E) and writes rocq/plan_check.v. It also replaces the header comment with a "plan check" note and appends Print Assumptions nonhalt.. - Compiled with rocq/compile.sh (Coq 8.20.1, unmodified busycoq 0940bb9, -native-compiler yes, ulimit -v 8000000): 6.7 s, exit 0, "Closed under the global context". - Apart from state names, it differs from the parent's .v only in the header comment, the TM string (TM_from_str and the closing comment), init0/init, the start index, two comment lines and the appended Print Assumptions.

Still to do. - Produce machines/1RB---_0LC1RF_1LE0RD_0RB1RC_1RD0LE_0RC1RA/1RB---_0LC1RF_1LE0RD_0RB1RC_1RD0LE_0RC1RA.v: the same content with a proper header, and with the state letters in the closing comment block renamed. - Run tools/check_kill.sh on it. Only that PASS makes this a kill. - The proof is direct on the holdout string. Eqv_v2.v TM7 is not needed.

6. Evidence (check_proof.py, 7 s, ALL CHECKS PASSED; output in check_proof.out)

The script loads the parent's check_proof.py read-only, for its abstract model: the rule words and step counts, the derivation runner, the families, S/F and the hexagon. Everything that depends on the machine or the start is run on the twin's own table.

§ kind what
S exact EDBCFA is the unique renaming (720 × {plain, mirror}); the twin's start A = σ(F); the halting cells are A1 = σ(F1). Eqv_v2 TM7's tm is #4 renamed by BCDAEF (started in #4's D), and its mirror is the 1590-file member.
L range Lockstep, 2·10⁶ steps: the twin from blank equals the relabelled parent from 0^inf F> 0^inf at every step.
A exact The 21 shift rules, renamed, executed on the twin's table: every step count as claimed, A1 never read, all 11 defined transitions used. AL/BL/AR/BR^a for a ≤ 12; CTR for all 502 (k,n) with k ≤ 9; OV for k ≤ 9.
M sample R1, R2, R3, R4, R5, R4o, R5o: 40 random instances each (k ≤ 10, block counts up to 200 or 2^(k−1)). In each, the parent's runner predicts the result and step count, and direct simulation of the twin from the renamed start agrees.
I exact Blank → σQ(7,65,1,14,4) at exactly step 16,590. Also blank → Q(5,20,3,1,0) at 1,711, then R5, R1^4, R2, R3^2, R5, R1^3, R2 to the base with runner step sum 14,879 = 16,590 − 1,711.
C range Every canonical right-edge visit of the twin from step 1,711 to 3·10⁷, against the rule runner started at Q(5,20,3,1,0): 857 of 857 identical, in configuration and step. The other 12 right-edge B visits are the start and mid-conversion edge touches.
B exact Inv 5 0 14 4 (the parent's Rocq predicate, transcribed); the base is in N·R with 4Y+2Z ≥ N tight; (a)–(d) hold; negative controls fail as they should.
H exact The parent's own section 5 (exact rational hexagon vertex check, min slack 3/128, max 2u+v = 27/32), re-run unchanged.
O range The twin's orbit from the base to S(14,4752,2348) at step 1,268,929,120. The runner's predicted cycle states (8/8) and every phase-boundary configuration (38) are hit by chained direct simulation of the twin at the exact predicted steps; all points are in R; R4o is never used. Writes work/history_rows.json.

python3 -B check_proof.py --kmax 15 extends §O one level, to S(15,9476,4529) at step 5,039,089,135: 9/9 cycle states and 43 boundaries, ALL CHECKS PASSED in 22 s (check_proof_k15.out).

7. Checkpoint B notes (Dennis)

None on file yet. Fold any notes in here before submission.