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

1RB---_1LC0LA_1LD0LC_1RE0LB_1RF0RE_1LC0RD: never halts (delta proof from W4-3)

This machine is W4-3, 1RB0RF_1RC0RB_1LD0RA_1LE0LD_1RB0LC_1LA--- (the parent), seen in a mirror (L and R swapped) and with its states renamed. It starts in the parent's state F instead of A. So its run is the mirror image of the parent's transition table run from F.

The parent's proof is an induction over record exits. Its invariant C_r(e) fixes the left word, a window of the chain and the right region exactly. The deep part of the chain is free, apart from residues and minimums.

This start reaches a record exit in C_r5(2) after 2,629,080,059,236 steps. From there the parent's induction runs unchanged. The two runs differ in five deep chain gaps, and nothing in the parent's argument reads their values.

1. The relation

1.1 Mirror and renaming

Write σ for the map from the parent's states to this machine's states, and φ for its inverse:

sigma:             A -> B,  B -> C,  C -> D,  D -> E,  E -> F,  F -> A
phi = sigma^-1:    A -> F,  B -> A,  C -> B,  D -> C,  E -> D,  F -> E

Row σ(q) of this table is the parent's row q, with every target state t replaced by σ(t) and every direction reversed. The symbols written are unchanged.

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

For example, the parent's C1 = 0RA becomes 0Lσ(A) = 0LB, which is this machine's D1. Among all 720 renamings, with and without the mirror, this is the only map from the parent's table to this one.

1.2 The run is a mirror image

For a configuration c of the parent's table, let c* be its mirror image with the head state renamed by σ:

cell x of c*  =  cell -x of c,      head cell of c*  =  -(head cell of c),      state of c*  =  σ(state of c)

Lemma R (mirror and relabelling). c → c′ in the parent's table exactly when c → c′ here. And c is halted exactly when c* is.

Both tables read the same symbol in corresponding states. Where the parent writes w, moves d and goes to t, this machine writes w, moves -d and goes to σ(t). The halting part holds because F1 is the parent's only undefined cell, and A1 = σ(F)1 is this machine's only undefined cell.

Start. The blank tape is its own mirror image, so 0^inf A> 0^inf is (0^inf F> 0^inf)*. So the run of this machine is the mirror image of the parent's table run from F, step for step.

Halting cell. Here only B1 = 0LA enters A, and the machine halts only when A then reads 1. B1 is the mirror image of the parent's A1 = 0RF under σ. So a halt here is the mirror image of a halt of the parent's table.

1.3 The mirror frame

From here on, positions are given in the mirror frame: cell x below is cell -x of this machine's own tape. Left and right are the parent's, and states are written in the parent's names.

At a record exit the head is in the parent's state B, which is this machine's C. On this machine's own tape it moves left there (C1 = 0LC).

2. The opening run

2.1 Records

The parent numbers its records by the moves of λ, the leftmost cell that has held 1 so far (P§3.1). In the mirror frame, λ is minus the rightmost cell of this machine's tape that has held 1. A left record is a move of λ by 3 cells in 3 consecutive steps.

On this start λ is set to 0 at step 1 and moves 1 cell at step 2. After that it moves by 1 or 2 cells only at

steps 48-49 (2 cells, to -6),   219-220 (2 cells, to -11),   6360 (1 cell, to -15)

Every other move is by 3 cells in 3 consecutive steps. The first seventeen such moves begin at steps

9, 56, 329, 7891, 10906, 20681, 76882, 422401, 621182,
1179635, 4613856, 6881197, 12196818, 43554645, 65364494, 114281959, 397794936

The parent's start-up has five small moves (steps 1, 6-7, 838-839, 7820 and 17531-17532). This start has one more 3-cell move in its start-up. So record n of this start is its (n + 1)-th 3-cell move, as P§9 says, and record 16 is the move at steps 397,794,936-938.

2.2 Record exits

P§3.3 defines the record exit of record n operationally. It is the first configuration after left record n in which

where h is the head cell, lo = λ - 1, and K = K0(r) + 2e for the class r = (n - 11) mod 6 and the epoch e = (n - 16) div 6.

On this start the record exits 16 to 28 are at these steps. Head cells are in the mirror frame; on this machine's own tape the head cell is the negative.

n class K step here step in the parent head cell (mirror frame)
16 r5 3 397,796,108 398,090,000 1,092
17 r0 3 596,875,569 597,235,689 157
18 r1 4 1,040,793,014 1,041,314,994 12,108
19 r2 3 3,598,921,325 3,599,625,653 83
20 r3 4 5,399,022,450 5,399,921,502 1,094
21 r4 4 9,399,104,027 9,400,202,219 159
22 r5 5 32,437,019,932 32,438,603,840 12,110
23 r0 5 48,670,515,653 48,672,647,129 3,831
24 r1 6 84,691,491,790 84,694,207,762 111,830
25 r2 5 292,076,818,381 292,080,132,229 161
26 r3 6 438,262,728,042 438,267,499,174 12,112
27 r4 6 762,517,234,175 762,523,648,427 3,833
28 r5 7 2,629,080,059,236 2,629,088,227,408 111,832

None of these runs halts. The proof needs only the last line: the run from the blank tape to record exit 28 is one finite computation.

2.3 Record exit 28

At step 2,629,080,059,236 the configuration is, in the mirror frame:

lo = -94,    A = lo + 34 = -60,    B = 111,833,    hi = 2,961,776
head on cell B - 1 = 111,832, in state B (this machine's C), reading 1, moving right

On this machine's own tape the head is on cell -111,832, in state C, reading 1, moving left.

The left word is the ten defects

A - 32, -27, -26, -21, -20, -15, -14, -9, -8, -4

The chain has K = 7 blocks in state U0. Block 1 has m = 1, the others m = 3. Where a gap differs from the parent's record exit 28, the parent's value follows in parentheses.

block inter gap before its digit digit gap separator gaps
1 – 1 –
2 5 1 4, 4
3 5 1 4, 4
4 5 1 4, 4
5 5 (parent 9) 1 (parent 13) 8, 52 (parent 24, 44)
6 37 37 36, 936 (parent 36, 972)
7 2737 8277 24912, 74808

Block 1's digit is at A + 2 and its separator at A + 3. The last separator of block 7 is at B - 2 = 111,831.

The right region, read from B, is

B  -224493-  x1  -673559-  x2  -7-  x3  -9841-  x4  -1942040-  x5  -3-  hi

Against the parent's record exit 28 (the example of P§3.4):

3. The invariant holds at record exit 28

Record 28 has class r5 and epoch e = 2, so u = 9^(e-2) = 1 and K = K0(r5) + 2e = 3 + 4 = 7. Take the four parts of C_r5(2) in P§3.3 in turn.

(L) Left word. lo = A - 34, and the defects left of A are exactly the ten of 2.3. Also λ = lo + 1 = -93 is the leftmost cell that has ever held 1 (in the mirror frame), so this lo is the parent's lo.

(C) Chain. The defects in [A, B] are 4K - 2 = 26 defects forming K = 7 blocks in U0, with block 1 = (A+2; A+3) and the last separator at B - 2. Every gap has the residue and at least the smallest value of its role:

digit gaps      1, 1, 1, 1, 1, 37, 8277                              all 1 mod 4, all >= 1
separator gaps  4, 4, 4, 4, 4, 4, 8, 52, 36, 936, 24912, 74808       all 0 mod 4, all >= 4
inter gaps      5, 5, 5, 5, 37, 2737                                 all 1 mod 4, all >= 5

Consecutive bases then differ by 2 mod 4, as (C) requires.

(W) Window. J(r5) = 3. The last three chain gaps and the right region are V_r5(1) of P§3.4:

chain window:  8316u - 39,  24948u - 36,  74844u - 36                       = 8277, 24912, 74808
right region:  224532u - 39,  673596u - 37,  7,  (19683u - 1)/2,  1942056u - 16,  3
            =  224493,  673559,  7,  9841,  1942040,  3

(H) Head. The head is on cell B - 1 in state B, the cell holds 1, and state B moves right.

So record exit 28 is in C_r5(2). Its deep chain (blocks 1 to 6 and the inter gap of block 7) differs from the parent's in five gaps, all in blocks 5 and 6. (C) asks of the deep chain only residues and minimums, and those hold.

4. The argument

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

  1. Opening run. By Lemma R, the run of this machine is the mirror image of the parent's table run from 0^inf F> 0^inf. That run reaches record exit 28 after 2,629,080,059,236 steps without halting (section 2).
  2. Base. Record exit 28 is in C_r5(2) (section 3).
  3. Induction. Lemma S (P§6) is the step:

C_r(e) -->+ C_(r+1)(e) for e >= 2, without halting C_r4(e) -->+ C_r5(e + 1)

Its only hypothesis is the invariant (P§7 for the halting part). The deep chain enters only through the residues and minimums of (C). 4. The deep chain is free. The parent's formal proof states Lemma S this way. Its invariant Inv lists the chain as gap variables, and the deep part of that list is arbitrary (P§10.3). 5. Conclusion. So the parent's table, run from F, passes through infinitely many record exits and never halts. By Lemma R this machine does the same, in the mirror and with its states renamed. ∎

Nothing in the parent's argument after its base case depends on the parent's own orbit. Its base case (P§8) and its twelve concrete steps 16 → 28 are not used here: the configuration at record exit 28 is reached directly.

5. Why the runs agree so closely (explanation, not a premise)

At every record exit from 12 on (the earliest checked), the two runs' gap lists (lo → each defect → hi) have the same length. They differ in exactly five entries, always by the same amounts:

place      i      i+1     i+2     i+3     i+7
change    -4     -12     -16      +8     -36          (this run minus the parent's; -60 in all)

At every record the new left digit joins the chain, so the parse moves one defect along. The place i grows by one per record, as the single +4 gap of line 512 does.

So the record exits 16 to 25 of this start satisfy (L), (C) and (H), but their windows are not the parent's start-up windows of P Appendix C. (The parent's check_proof.py S7 maps each of them to the next on exact numbers.) Record exit 28 is the first record exit of epoch 2, where (W) is V_r5(1) exactly, and that is the base case used here.

This is an observation (checked at record exits 12 to 28, and to 33 with --full); the induction in section 4 does not need it. The start-ups differ before that: λ moves at different steps (2.1), and the five differences first appear somewhere before record exit 12.

6. Formalization delta

The .v in this directory proves Lemma nonhalt : ~ halts tm c0. along these lines. It is the parent's file with the following changes, and nothing else:

  1. Two tables. tm is this machine and tmP is the parent. The library part of the parent's file is copied byte for byte, with tm renamed tmP.

That part holds the simulator and its soundness, the chain and region lemmas, Lemma S, Inv and inv_step. 2. The base case: init28 : F;; tape0 -->* cfg28 for tmP, in 38 native_compute pieces of at most 500,000 simulator steps (18,571,554 in all). cfg28 is the record exit 28 of section 2.3, in the mirror frame (the parent's orientation). 3. The chain: L28 and nus28 are those of this run. inv28, base28 and the record-exit episode are the parent's text. In the gap variables (each block lists t, s, a, lp as (gap - minimum)/4, nearest block first):

this start: [18701; 6227; 2069; 683] [233; 8; 9; 8] [12; 1; 0; 0] [0; 0; 0; 0]^3 parent: [18701; 6227; 2069; 683] [242; 8; 9; 8] [10; 5; 3; 1] [0; 0; 0; 0]^3

The minimums are t = 4, s = 4, a = 1, lp = 5. So the second block (block 6 of section 2.3) has t = 4 + 4 x 233 = 936 against 4 + 4 x 242 = 972. The third block (block 5 of section 2.3) has

(t, s, a, lp) = (52, 8, 1, 5) against (44, 24, 13, 9) 4. The conjugacy: perm_sib : Perm (flip tm) tmP phi by computation. Then busycoq's flip_halts (Flip.v) and perm_halts (Permute.v) give halts tm c0 -> halts tmP (F;; tape0), and nonhalt_P : ~ halts tmP (F;; tape0) closes it.

check_proof.py S5 checks that cfg28, L28 and nus28 of the .v are the tape of the independent run of section 2 at record exit 28, and that the rest of the file is the parent's text. Whether it compiles is check_kill's verdict: PASS on sha256 48b42cafcdb8bf0653960ac7b4552c8cb99e4afe0f26623d183b8deb9020d1d3 (status line above).

7. Evidence

nice -n 10 python3 -B check_proof.py (default about 1 min; --full about 5 min). Output in check_proof.out and check_proof_full.out.

The opening run is computed by scripts/rlsim.py, the run-length simulator of line 512's delta stage (copied unchanged). It is independent of the parent's defect model and of the Coq simulator. It runs this machine's own table with every L and R swapped, and S2 checks it cell by cell against direct simulation of the unmirrored string.

§ what result
S1 line 588 of the 740 list byte-exact and once, parent line 341; holdouts.py contains; sheet row (class, no claim); not proved in busycoq (equivalence endpoint only) PASS 4/4
S2 σ with the mirror the only map (720 × 2), 12/12 cells; start = σ(F); A1 the only undefined cell, A entered only by B1; mirrored lockstep with the parent's table from F, 2·10⁶ steps; mirror-image tapes after 10⁹ steps (tools/sim.py); rlsim on the mirrored table = tools/sim.py on this table at 7 step counts up to 10⁸, and on the parent's table from F; rlsim's λ = direct simulation's PASS 7/7
S3 λ moves (start-up and 3-cell moves); record numbering one 3-cell move later than the parent's; operational record exits 12-28 (12-33 with --full) at the steps and head cells of the parent's defect-model snapshots for this start, for both runs; defect states equal to those snapshots; record exit 16 against direct simulation of this machine's own table PASS 7/7
S4 V table parsed from the parent's write-up; (L), (C), (H) at record exits 16-28 for both runs (an independent reading of P§3.3); C_r5(2) at 28 with V_r5(1) (C_r(2) with V_r(1) at 28-33 with --full); against the parent: from record exit 12 on the five-gap pattern of section 5, moving one place per record; from 26 on all five deep, same K, window and right region; the five at 28 in blocks 5 and 6 PASS 7/7 (8/8)
S5 the .v's cfg28 = the rlsim tape at record exit 28 (and the parent's cfg28 = the parent's), L28/nus28 decode, only nus28 blocks 2 and 3 differ; L28 = the chain of section 2.3 read backwards; library, invariant and base-step text = the parent's with tm → tmP; tm, tmP, init28, phi, perm_sib, nonhalt present; 38 pieces, 18,571,554 simulator steps PASS 7/7
S6 (--full) the parent's own check_proof.py --only S10, including its claims for this start (line 588) PASS
S7 the tables of 2.2 and 2.3 and the gap variables of section 6 are the computed data; so are the block gaps, gap variables and step counts of the short public write-up (submission/proof.md) PASS 4/4