/machines/1RB1RA_1LC1LE_1RF1LD_1RE0LD_0LB0RA_---0RC/submission/proof.md · raw

1RB1RA_1LC1LE_1RF1LD_1RE0LD_0LB0RA_---0RC never halts

This machine keeps a binary counter on the right of the tape and a word of 10 pairs on its left. The word carries one flaw, an extra cell called the defect.

Each trip of the head from the counter into the word and back adds 1 to the counter. Every second trip also moves the defect two pairs further from the counter.

When the defect has left the word, the next trip runs to the blank left edge. A sweep there shifts the whole word by one cell, eats the lowest digits of the counter and plants a new defect. The word grows with every eat, and the counter stays at most twice the number of pairs. That bound keeps every eat inside the cases the rules cover, and no rule reaches the machine's only undefined transition.

0. Summary

The tape holds two things side by side.

Each count is one round trip of the head from the counter into the word and back. It adds 1 to the counter and changes the defect:

So two counts, INC1 then INC0, move the defect two pairs to the left.

When the defect has left the word, the next round trip finds no defect. It runs into the blank left edge, and a C/F sweep shifts the whole word by one cell into the counter's low end. This is an eat.

The proof is an induction over the eat configurations E(p, N), with the invariant J(p, N): 1 ≤ N ≤ 2p. Five macro rules M1–M5, one per residue class, take E(p, N) to a later eat configuration E(p', N'). Each one is a chain of exact rules, and J holds at the result.

piece argument in the .v
16 low-level rules (§3.1) exact finite runs and shift rules run inside the es proofs of the lemmas below
counter identities for C(n) and Q_k(x, y) (§2, §3.3) string identities C_odd, C_split, Dk_even, Dk_odd, Dk_full, Dk_inc
count rules INC1, INC0, INC011, OVF (§3.2) compositions of §3.1 Cnt1, Cnt0, Cnt011, ROvf
eat rules EAT, Y1–Y4 (§3.3) compositions of §3.1 LEat, Y1C, Y2C, Y3, Y4, Y1Q
walk lemmas W, W2, W0, B (§3.4) induction Wk, W2, W2Q, W0k, Bk
macro rules M1–M5 (§3.5) chains of the above BS1 … BS5
invariant J: coverage and closure (§4) by hand step_J
initial segment, 165 steps (§6) exact run init (171 steps, see §8)
step formulas checked numerically (§9) not needed by the proof

1. Rule table (busycoq comment-block style)

1RB1RA_1LC1LE_1RF1LD_1RE0LD_0LB0RA_---0RC          (only F0 is undefined; only C0 enters F)

counter    C(0) = 0^inf,  C(2n) = 0 0 C(n),  C(2n+1) = 1 1 C(n)        = BinInc [1;1] n
           t1(n) = number of trailing 1 bits of n
           D_k(x) = the k digits of x < 2^k, lowest first;   Q_k(x, y) = D_k(x) 0 C(y)
configs    G(w, R) = 0^inf w 0 1 1 B> 0 R          (count configuration: w a word, R a right half-tape)
           E(p, N) = G((10)^p, C(N)),  N >= 1       (eat configuration)
           Y(v, R) = 0^inf v 1 1 0 A> R
           R = (11)^k 0 0 R'  has  R+ = (00)^k 1 1 R'
           C(n)+ = C(n+1)  (k = t1(n));   Q_j(x, y)+ = Q_j(x+1, y) if x+1 < 2^j  (k = t1(x))

count rules, for every word u and every R = (11)^k 0 0 R'                               steps
INC1    G(u 1 (10)^b, R)              -> G(u 0 (10)^b, R+)                              6b + 4k + 24
INC0    G(u 0 1 0 0 (10)^b, R)        -> G(u 1 0 1 0 (10)^b, R+)                        6b + 4k + 32
INC011  G(u 1 0 1 1 0 0 (10)^b, R)    -> G(u 0 1 0 1 1 0 (10)^b, R+)                    6b + 4k + 40
OVF     G(u 1 (10)^b, Q_j(2^j-1, 2m+1)) -> G(u 0 (10)^(b+1) 1^(2j+1), C(m+1))           6b + 2j + 4 t1(m) + 29

eat rules, for every u, v, R'
EAT     G(u 0 0 0 (10)^b, R)          -> Y(u (10)^(b+2), R)            (any R)          4b + 17
Y1      Y(v, (11)^s 0 0 R')           -> G(v 1, (00)^(s-1) 1 1 R')     s >= 1           4s + 9
Y2      Y(v, 0 0 0 0 R')              -> G(v 1 1 1, R')                                 7
Y3      Y(v, 0 0 1 1 (11)^s 0 0 R')   -> G(v 1 1, 0^(2s+1) 1 1 R')     s >= 0           4s + 20
Y4      Y(v, 1 1 0 1 1 (11)^i 0 0 R') -> G(v 1 1 0 1, (00)^i 1 1 R')                    4i + 18

walks, for every u
W(a,b)  G((10)^a 1 (10)^b, C(n))      -> E(a+b+[a odd], n+a+1)          a+1 counts INC1, INC0, INC1, ...
W2      G(u (10)^2 1 (10)^b, R)       -> G(u 1 (10)^(b+2), R++)          INC1, INC0
W0      G(u 0 (10)^(2c+1) 0 (10)^d, R) -> G(u (10)^(2c+2+d), R+^(2c+1))  INC0, INC1, ..., INC0
B(t)    G(u 1^(2t+1), R)              -> G(u 0 (10)^t, R+^(t+1))         t+1 times INC1

eat to eat                                                                  E(p, N) -> E(p', N')
M1  N odd                EAT,Y1; W(p+2,0)                                   p+2+[p odd],  (N+1)/2 + p + 3
M2  N = 0 (mod 4)        EAT,Y2; INC1; W(p+2,1)                             p+3+[p odd],  N/4 + p + 4
M3  N = 8m+2             EAT,Y3(0); OVF(0,0); W(p+4,0)                      p+4+[p odd],  m + p + 6
M4  N = 16m+6            EAT,Y3(1); INC1; EAT,Y4; INC1; INC011; INC1; INC0  p+7,          m + 5
M5  N = (2m+1)2^(t+3)-2, t >= 1, p+7 >= 2^t
                         EAT,Y3(t+1); INC1; EAT,Y1(1); W2^(2^(t-1)-1);
                         OVF(2^t-2, t); B(t); W0(2^(t-1)-1, t)              p+7+t,        m + 2^t + t + 1

invariant J(p, N):  1 <= N <= 2p.   J(p, N) -> exactly one of M1..M5 applies, and J(p', N')
start      c0 -->(7) G(1, C(0)) -->(24, INC1) E(0,1) -->(134, M1) E(2,4)   (step 165),  J(2,4)
           (.v form, §8: EC 2 4 = E(2,4) after TS, at step 171)

2. Notation and configurations

2.1 Tapes and rules

2.2 The counter

For n ≥ 0 the right half-tape C(n) is defined by

C(0) = 0^inf,    C(2n) = 0 0 C(n),    C(2n+1) = 1 1 C(n)

For n ≥ 1, C(n) lists the binary digits of n below its leading 1, lowest first, as 11 for 1 and 00 for 0. Then comes 11 for the leading 1, then blanks.

This is busycoq's BinInc [1;1] n. The three equations are BinInc_O, BinInc_mul2 and BinInc_mul2add1 in BinaryCounter_v2.v.

Let t1(n) be the number of trailing 1 bits of n, and n'' = n >> (t1(n)+1). Then

C(n)   = (11)^k 0 0 C(n'')
C(n+1) = (00)^k 1 1 C(n'')         with k = t1(n)

This is the increment R → R+ used by every count: for R = (11)^k 0 0 R', R+ = (00)^k 1 1 R'. So C(n)+ = C(n+1).

2.3 The misaligned counter Q

For k ≥ 0, 0 ≤ x < 2^k and y ≥ 0, let D_k(x) be the k digits of x (lowest first, 11/00), and

Q_k(x, y) = D_k(x) 0 C(y)

This is a fixed-width counter followed by one extra 0 cell and then an ordinary counter. Only odd y = 2m+1 occurs, so Q_k(x, 2m+1) = D_k(x) 0 1 1 C(m).

For odd y, Q_k(x, y) is never a counter word C(n): after its first k digit pairs comes the pair 0 1. (For y = 0 it would be one, since Q_k(x, 0) = D_k(x) 0^inf = C(x), but y = 0 never occurs.)

2.4 Configurations

G(w, R) = 0^inf w 0 1 1 B> 0 R          count configuration
E(p, N) = G((10)^p, C(N)),  N >= 1       eat configuration
Y(v, R) = 0^inf v 1 1 0 A> R             the head after an eat sweep

(10)^a X (10)^b with X ∈ {1, 0} is a word with a one-cell defect.

A count is one G → G transition by INC1, INC0, INC011 or OVF. An eat is one G → G transition by EAT followed by a Y rule.

An eat configuration is a configuration E(p, N). A macro rule (§3.5) goes from one eat configuration to the next. M1–M3 contain one eat and M4–M5 contain two, so the run has more eats than eat configurations. Counts along the run below are always counts of eat configurations, or of eat-to-eat transitions (one fewer).

3. Rules

3.1 Low-level rules

Each rule is an exact run that never reads a cell outside the cells written in it (check L0 runs each one with every outside cell unknown). The five rules with a parameter n are shift rules: one block, then the induction hypothesis.

rule statement steps transitions
TS 0 1 1 B> 0 → <E 1 0 1 1 6 B0 C1 D1 D0 E0 B1
EB(n) (10)^n <E → <E (10)^n 2n (E0 B1)^n
X1 1 <E → 0 A> 1 E1
X0 0 1 0 0 <E → 1 0 A> 1 0 5 E0 B0 C1 D0 E1
F011 1 0 1 1 0 0 <E → 0 1 0 1 1 A> 0 14 E0 B0 C1 D1 D0 E0 B1 E1 A1 A0 B1 E1 A1 A1
AS(n) A> (10)^n 1 → (10)^n A> 1 4n (A1 A0 B1 E1)^n
A1s(n) A> 1^n → 1^n A> n A1^n
A01 A> 0 1 → 0 A> 1 3 A0 B1 E1
A0 A> 0 → 1 B> 1 A0
D1s(n) 1^n <D → <D 0^n n D1^n
DE(k), k ≥ 1 0 1^k A> 0 0 → <E 1 0^k 1 1 k+6 A0 B0 C1, D1s(k), D0 E0 B1
CARRY(k), k ≥ 0 1 0 1 1 (11)^k A> 0 0 → 0 1 1 B> 0 (00)^k 1 1 2k+11 DE(2k+2), X1, A1, A0
CF(n) C> (01)^n → (10)^n C> 2n (C0 F1)^n
EAT0(n) 0 0 0 <E (10)^n 1 → (10)^(n+2) C> 2n+6 E0 B0 C0 F1, CF(n+1)
CS 1 0 C> 1 → 1 1 0 A> 3 C1 D0 E1
Z0 0 A> 0 0 → 1 0 1 A> 6 A0 B0 C1 D0 E1 A1

What the main ones do:

3.2 Count rules

INC1. For every word u, b ≥ 0 and R = (11)^k 0 0 R':

G(u 1 (10)^b, R)  -->(6b+4k+24)  G(u 0 (10)^b, R+)
configuration rule
u 1 (10)^b 0 1 1 B> 0 R
u 1 (10)^b <E 1 0 1 1 R TS
u 1 <E (10)^(b+1) 1 1 R EB(b)
u 0 A> (10)^(b+1) 1 1 R X1
u 0 (10)^(b+1) A> 1 1 R AS(b+1)
u 0 (10)^b 1 0 1 1 (11)^k A> 0 0 R' A1s(2k+2)
u 0 (10)^b 0 1 1 B> 0 (00)^k 1 1 R' CARRY(k)

INC0. Same, with X0 and AS(b+2) instead of X1 and AS(b+1):

G(u 0 1 0 0 (10)^b, R)  -->(6b+4k+32)  G(u 1 0 1 0 (10)^b, R+)

After EB(b) the head is at u 0 1 0 0 <E (10)^(b+1) 1 1 R, and X0 gives u 1 0 A> 1 0 (10)^(b+1) 1 1 R. If u is empty, the 0 of 0 1 0 0 is the blank cell left of the word.

INC011. Same, with F011, A01 and AS(b+1):

G(u 1 0 1 1 0 0 (10)^b, R)  -->(6b+4k+40)  G(u 0 1 0 1 1 0 (10)^b, R+)

F011 ends at u 0 1 0 1 1 A> 0 (10)^(b+1) 1 1 R, and A01 moves A past that 0. This rule occurs only in M4 (b = 0).

OVF. For every u, b ≥ 0, j ≥ 0 and m ≥ 0, with i = t1(m):

G(u 1 (10)^b, Q_j(2^j-1, 2m+1))  -->(6b+2j+4i+29)  G(u 0 (10)^(b+1) 1^(2j+1), C(m+1))

The left part is that of INC1. The right part starts at u 0 (10)^(b+1) A> 1 1 (11)^j 0 1 1 C(m).

configuration rule
u 0 (10)^(b+1) 1^(2j+2) A> 0 1 1 C(m) A1s(2j+2)
u 0 (10)^(b+1) 1^(2j+2) 0 A> 1 1 C(m) A01
u 0 (10)^(b+1) 1^(2j+1) 1 0 1 1 (11)^i A> 0 0 C(m'') A1s(2i+2), with C(m) = (11)^i 0 0 C(m'')
u 0 (10)^(b+1) 1^(2j+1) 0 1 1 B> 0 (00)^i 1 1 C(m'') CARRY(i)

The last line is G(u 0 (10)^(b+1) 1^(2j+1), C(m+1)) by §2.2. The overflowed digits stay on the tape as the block 1^(2j+1), and the next counts take it apart (rule B).

In the form used in the .v (§8), every count is "left part, then right part". The left part is the same for all R, and the right part is the same for all words.

3.3 Eat rules

EAT. For every word u, b ≥ 0 and right half-tape R:

G(u 0 0 0 (10)^b, R)  -->(4b+17)  Y(u (10)^(b+2), R)
configuration rule
u 0 0 0 (10)^b <E 1 0 1 1 R TS
u 0 0 0 <E (10)^(b+1) 1 1 R EB(b)
u (10)^(b+3) C> 1 R EAT0(b+1)
u (10)^(b+2) 1 1 0 A> R CS

An eat configuration has blank cells left of its word, so EAT applies to every E(p, N) with u empty and b = p. It also applies to G((10)^q, Q_s(1, y)) in M4 and M5.

Y rules. Each one starts at Y(v, R) = v 1 1 0 A> R.

rule R result steps chain
Y1(s), s ≥ 1 (11)^s 0 0 R' G(v 1, (00)^(s-1) 1 1 R') 4s+9 A1s(2s), CARRY(s−1)
Y2 0 0 0 0 R' G(v 1 1 1, R') 7 Z0, A0
Y3(s), s ≥ 0 0 0 1 1 (11)^s 0 0 R' G(v 1 1, 0^(2s+1) 1 1 R') 4s+20 Z0, A1s(2s+2), DE(2s+3), X1, A1s(1), A0
Y4(i) 1 1 0 1 1 (11)^i 0 0 R' G(v 1 1 0 1, (00)^i 1 1 R') 4i+18 A1s(2), A01, A1s(2i+2), CARRY(i)

Y1 is CARRY on the last two cells 1 0 of 1 1 0. In Y3, Z0 gives v 1 1 1 0 1 A>; after A1s the 1-run behind the 0 has length 2s+3, and DE(2s+3) ends with E reading the third 1; X1, A1 and A0 then stop at a G configuration.

What the Y rules do to the counter. These are the identities of §2.2 applied to the low digits of C(N) (check CQ).

N C(N) rule result
odd, s = t1(N) (11)^s 0 0 C(N >> (s+1)) Y1(s) G(v 1, C((N+1)/2))
≡ 0 (mod 4) 0 0 0 0 C(N/4) Y2 G(v 1 1 1, C(N/4))
≡ 2 (mod 4), N+2 = (2m+1)2^(s+2) 0 0 1 1 (11)^s 0 0 C(m) Y3(s) G(v 1 1, Q_s(0, 2m+1))

For the misaligned counter:

R rule result
Q_s(1, y) = 1 1 0 0 (00)^(s-2) 0 C(y), s ≥ 2 Y1(1) G(v 1, Q_(s-1)(1, y))
Q_1(1, 2m+1) = 1 1 0 1 1 C(m) Y4(t1(m)) G(v 1 1 0 1, C(m+1))

The cases N ≡ 2 (mod 4) split by s: s = 0 is N ≡ 2 (mod 8), s = 1 is N ≡ 6 (mod 16), and s ≥ 2 is N ≡ 14 (mod 16).

3.4 Walk lemmas

W(a, b). For a, b ≥ 0 and n ≥ 0:

G((10)^a 1 (10)^b, C(n))  -->*  E(a + b + [a odd], n + a + 1)        in a+1 counts INC1, INC0, INC1, ...

Proof. By induction on a, in steps of 2. - a = 0: INC1 with u empty gives G(0 (10)^b) = G((10)^b) = E(b, n+1). - a = 1: INC1 gives G(1 0 0 (10)^b). INC0 with u empty (its 0 is the blank cell) gives G(1 0 1 0 (10)^b) = E(b+2, n+2). - a ≥ 2: W2 with u = (10)^(a−2) gives G((10)^(a-2) 1 (10)^(b+2), C(n+2)), then the induction hypothesis. ∎

W2. For every u, b ≥ 0 and R with two increments:

G(u 1 0 1 0 1 (10)^b, R)  -->  G(u 1 0 1 0 0 (10)^b, R+)  -->  G(u 1 1 0 1 0 (10)^b, R++) = G(u 1 (10)^(b+2), R++)

The first step is INC1. The second is INC0 with the word (u 1) 0 1 0 0 (10)^b.

W0(c, d). For every u, c, d ≥ 0 and R with 2c+1 increments:

G(u 0 (10)^(2c+1) 0 (10)^d, R)  -->*  G(u (10)^(2c+2+d), R+^(2c+1))        counts INC0, INC1, ..., INC0

Proof. By induction on c.

For c = 0 the word is u 0 1 0 0 (10)^d. Its first 0 is the first defect, and the last 0 of 1 0 0 is the second. INC0 cancels both:

G(u 0 1 0 0 (10)^d, R)  -INC0->  G(u 1 0 1 0 (10)^d, R+)

For c ≥ 1, INC0 and INC1 move the second defect two pairs left:

G(u 0 (10)^(2c-1) 1  0 1 0 0  (10)^d, R)  -INC0->  G(u 0 (10)^(2c-1) 1 (10)^(d+2), R+)
                                           -INC1->  G(u 0 (10)^(2c-1) 0 (10)^(d+2), R++)

The hypothesis applies with (c−1, d+2). ∎

B(t), the block stage. For every u, t ≥ 0 and R with t+1 increments:

G(u 1^(2t+1), R)  -->*  G(u 0 (10)^t, R+^(t+1))        t+1 counts INC1, with b = 0, 1, ..., t

Proof. For 0 ≤ j < t, INC1 with b = j takes (u 1^(2t-2j)) 1 (10)^j to u 1^(2t-2j) 0 (10)^j = u 1^(2t-2j-1) (10)^(j+1). At j = t, INC1 takes u 1 (10)^t to u 0 (10)^t. ∎

3.5 Eat-to-eat macro rules

Each macro rule goes from E(p, N) to a later eat configuration E(p', N'). The table of §1 gives the chains and the results. Here are the chains in full.

M1 (N odd).

E(p, N)  -EAT,Y1->  G((10)^(p+2) 1, C((N+1)/2))  -W(p+2,0)->  E(p+2+[p odd], (N+1)/2 + p + 3)

M2 (N ≡ 0 mod 4). INC1 with u = (10)^(p+2) 1 1 and b = 0:

E(p, N)  -EAT,Y2->  G((10)^(p+2) 1 1 1, C(N/4))  -INC1->  G((10)^(p+2) 1 (10), C(N/4+1))
         -W(p+2,1)->  E(p+3+[p odd], N/4 + p + 4)

M3 (N = 8m+2). OVF with j = 0, u = (10)^(p+2) 1 and b = 0. Note Q_0(0, 2m+1) = 0 1 1 C(m).

E(p, N)  -EAT,Y3(0)->  G((10)^(p+2) 1 1, Q_0(0, 2m+1))  -OVF->  G((10)^(p+2) 1 0 1 0 1, C(m+1)) = G((10)^(p+4) 1, C(m+1))
         -W(p+4,0)->  E(p+4+[p odd], m + p + 6)

M4 (N = 16m+6).

step rule G configuration reached
1 EAT, Y3(1) G((10)^(p+2) 1 1, Q_1(0, 2m+1))
2 INC1 (u = (10)^(p+2) 1, b = 0) G((10)^(p+3), Q_1(1, 2m+1))
3 EAT (b = p+3), Y4 G((10)^(p+5) 1 1 0 1, C(m+1))
4 INC1 (b = 0) G((10)^(p+5) 1 1 0 0, C(m+2))
5 INC011 (u = (10)^(p+4), b = 0) G((10)^(p+4) 0 1 0 1 1 0, C(m+3))
6 INC1 (b = 1) G((10)^(p+4) 0 1 0 0 1 0, C(m+4))
7 INC0 (u = (10)^(p+4), b = 1) G((10)^(p+7), C(m+5)) = E(p+7, m+5)

M5 (N = (2m+1)·2^(t+3) − 2, t ≥ 1, precondition p + 7 ≥ 2^t). Here s = t+1 ≥ 2.

phase rule G configuration reached counts
(a) EAT, Y3(t+1) G((10)^(p+2) 1 1, Q_(t+1)(0, 2m+1)) 1
(b) INC1 G((10)^(p+3), Q_(t+1)(1, 2m+1)) 1
(c) EAT (b = p+3), Y1(1) G((10)^(p+5) 1, Q_t(1, 2m+1)) 1
(d) W2, 2^(t−1) − 1 times G((10)^(p+7-2^t) 1 (10)^(2^t-2), Q_t(2^t-1, 2m+1)) 2^t − 2
(e) OVF (b = 2^t − 2, j = t) G((10)^(p+7-2^t) 0 (10)^(2^t-1) 1^(2t+1), C(m+1)) 1
(f) B(t) G((10)^(p+7-2^t) 0 (10)^(2^t-1) 0 (10)^t, C(m+t+2)) t+1
(g) W0(2^(t−1) − 1, t) G((10)^(p+7+t), C(m+2^t+t+1)) = E(p+7+t, m+2^t+t+1) 2^t − 1

Notes on M5:

The closed form. The counter value is f = (N+1)/2, N/4, (N+6)/8 for M1–M3, and the number of low digits eaten is e = 1, 2, 3. Then

p' = p + 1 + e + [p odd],    N' = f + p' + [p even]

Where a macro rule ends. The induction does not need this paragraph: it only uses that each macro rule takes E(p, N) →+ E(p', N'). The checks below compare sampled eat configurations with the macro-rule orbit.

In all checked runs, the first eat configuration after the start was the macro endpoint; the nonhalting proof needs only positive reachability.

4. Invariant, coverage, closure

J(p, N):   1 <= N <= 2p

4.1 Coverage: under J, exactly one macro rule applies

The classes N odd, N ≡ 0 (mod 4) and N ≡ 2 (mod 4) partition N ≥ 1. For N ≡ 2 (mod 4) write N + 2 = (2m+1)·2^(s+2), with s, m determined by N. - s = 0 is M3 (m = (N−2)/8). - s = 1 is M4 (m = (N−6)/16). - s ≥ 2 is M5 with t = s − 1.

M5's precondition follows from J:

(2m+1) 2^(t+3) - 2 = N <= 2p    gives    (2m+1) 2^(t+2) <= p + 1,    so    2^t <= p + 1 <= p + 7

M1–M4 have no precondition.

4.2 Closure: J(p, N) implies J(p', N')

In every case N' ≥ 4. It remains to show N' ≤ 2p'.

∎

The bound is used with very little room only in M1 (N' ≤ 2p + 3 against 2p' ≥ 2p + 4). Along the blank-tape orbit, N/p = 2 at the start E(2, 4). After that it stays below 2 and comes close to it: over the next 2,000,000 eat configurations the maximum is 1.9999996, at E(5598694, 11197386).

5. Progress and halting

So the halting transition is reachable only through a C/F sweep that meets C> 0 0. The only C/F sweep in the rules is EAT0 inside EAT, and it runs over (10)^(b+1) 1, which has no 0 0. In every macro rule, EAT's three 0s are the blank cells left of the word.

6. Initial segment (exact)

c0 = 0^inf A> 0^inf  -->(7)   0^inf 1 0 1 1 B> 0 0^inf = G(1, C(0))         A0 B0 C1 D0 E1 A1 A0
                     -->(24)  G(0, C(1)) = E(0, 1)       at step 31          INC1 with u empty, b = 0, k = 0
                     -->(134) E(2, 4)                    at step 165         M1 with p = 0, N = 1

J(2, 4) holds: 1 ≤ 4 ≤ 4. (J(0, 1) does not, so the induction starts at E(2, 4).)

From there the orbit is E(2,4) → E(5,7) → E(8,12) → E(11,15) → E(14,22) → E(21,6) → … , with E(21,6) at step 3,097.

The macro rules, with their step formulas, reproduce a stored direct run to 10^11 steps (check Z). It has 2,092 eat configurations, from E(0,1) at step 31 to E(7367, 197) at step 99,939,266,761, so 2,091 eat-to-eat transitions. Configurations and step numbers all agree.

A second simulator, run fresh from the blank tape, agrees at every eat configuration as well:

Run step by step to step 3,000,000 (20,000,000 in the long run), the blank-tape run meets no eat configuration off the orbit.

7. Conclusion

7.1 Non-halting

  1. The run reaches E(2, 4) at step 165, and J(2, 4) holds (§6).
  2. If J(p, N), exactly one of M1–M5 applies (§4.1). It takes E(p, N) →+ E(p', N') as a finite chain of exact rules (§3), and J(p', N') holds (§4.2).
  3. No rule executes F0 (§5).

By induction the machine runs forever. In busycoq terms this is multistep_nonhalt to E(2, 4) (in the form of §8, EC 2 4 at step 171), then progress_nonhalt_cond with P := J on pairs (p, N).

7.2 Why it is not a cryptid

The branch taken at each eat depends on N mod 8 and on the 2-adic valuation of N+2. Along the orbit these look pseudo-random. But J is closed under every branch, by linear bounds and one power-of-2 bound in M5. No branch needs to be predicted, and none halts. So the proof rests on no claim about the order in which the branches occur.

8. Mapping to busycoq

8.1 What carries over from the template

The template is busycoq's verify/BECv5.v, Module TM1. The .v keeps its architecture:

What is different:

8.2 Configurations in the .v

The .v takes every configuration 6 steps later than the G form, after TS:

HF l r  :=  l <{{E}} [1;0;1;1] *> r            G(w, R) after TS, with l = 0inf <* w
EC p N  :=  HF (0inf <* [0;1]^^p) (C N)         E(p, N) after TS
C n     :=  BinInc [1;1] n                     the counter C(n) of §2.2

So in EC p N, state E reads the last cell of the word. Steps from EC to EC are the same as from E to E, so the macro rules are unchanged.

Only the start moves. init : c0 -->* EC 2 4 takes 171 steps: 165 to E(2, 4), then the 6 steps of TS.

List orientation. In busycoq a left side l <* xs lists xs from the head outward. So 0inf <* [0;1]^^p is (10)^p in tape order, and u <* [1;1;0;1] {{A}}> r is the tape u 1 0 1 1 A> r.

8.3 Counts as a left lemma and a right lemma

Every count is a left lemma followed by a right lemma.

Inc r r'  :=  forall l, l <* [1;1;0;1] {{A}}> r -->+ HF l r'

The counter gives IncC n : Inc (C n) (C (1+n)). The misaligned counter gives IncQ k x y : Inc (Q k x y) (Q k (S x) y) when x+1 < 2^k. A single 00 digit gives Inc00.

The count rules Cnt1, Cnt0 and Cnt011 take an Inc fact as a hypothesis. So the walk lemma W2 works on both counters:

8.4 Correspondence table

this write-up .v notes
C(n), §2.2 C n := BinInc [1;1] n; C_odd; C_split for N ≡ 2 (mod 4) BinInc_mul2, BinInc_mul2add1, BinInc_mulpow2sub1
D_k(x), Q_k(x, y), §2.3 Dk (a Fixpoint, low digit first), Q k x y := Dk k x *> [0] *> C y; Dk_even, Dk_odd, Dk_0, Dk_1, Dk_full
increment of Q, §2.3 Dk_inc (by induction on k), IncQ
A1s, CARRY, TS on any (11)^n 0 0 r RIncG one es
right part of a count on C(n) RInc RBinInc_spec with RIncG as its hypothesis
INC1, INC0, INC011 left parts, §3.2 L1, L0, L011 one es each
INC1, INC0, INC011, §3.2 Cnt1, Cnt0, Cnt011 left lemma, then Inc
OVF right part, §3.2 ROvf A1s, A01, A1s(2) by es, then RInc
EAT, §3.3 LEat on 0inf <* [0;1]^^b EB, EAT0, CS in one es
Y1 on C(2n+1), Y2, Y3(s), Y4, Y1(1) on Q, §3.3 Y1C, Y2C, Y3, Y4, Y1Q es, plus RInc in Y1C, Y4
W(a, b), §3.4 Wk, by lt_wf_ind on a result exponent a+b+a mod 2
W2, §3.4 W2, with two Inc hypotheses
W2 iterated in M5(d) W2Q, by induction on the number of steps i the block (10)^(2i) is written [0;1;0;1]^^i
B(t), §3.4 Bk, by induction on s stated with a trailing (10)^j
W0(c, d), §3.4 W0k, by induction on c
M1, M2, M3, M4, §3.5 BS1, BS2, BS3, BS4 each EC p N -->+ EC p' N'
M5, §3.5 BS5 p m t, hypothesis 2^(S t) <= p+7 the write-up's t is S t here
J, coverage and closure, §4 step_J see §8.5
initial segment, §6 init solve_init, 171 steps
§5 no separate lemma every rule is a -->+ run, so F0 is never executed
§7.1 nonhalt multistep_nonhalt, then progress_nonhalt_cond on nat*nat with P := J

Small helpers:

8.5 The residue split in step_J

step_J states: if 1 <= N <= 2*p, then EC p N -->+ EC p' N' for some p', N' with 1 <= N' <= 2*p'. The proof splits N in three steps.

  1. Nat.Even_or_Odd N. The odd case is M1 (BS1).
  2. For N = 2K, Nat.Even_or_Odd K. The case K even is M2 (BS2).
  3. For N = 4K'+2, busycoq's lowbitS_cases K' writes K'+1 = (2x+1)·2^i. Then i = 0 is M3, i = 1 is M4 and i ≥ 2 is M5.

In the M5 case, the proof names T := 2^i and adds x <= x*T by nia. Every remaining bound is then linear in T and closes by lia.

No decider certificates are involved.

9. Numerical sanity checks

These are evidence only; the result rests on the .v file alone. Every claim of §1–§6 was also tested numerically, with simulators that are independent of the .v.

A windowed run starts from the cells written in a rule, with every other cell unknown. Reading an unknown cell fails the check, so a rule that passes holds for every left and right context.

All 108 checks pass with two random seeds, and in a longer run with larger ranges.

check what is checked size (seed 1)
T F0 is the only undefined transition; C0 is the only transition into F
TEETH every single-transition mutation of the table (the 77 that change a used transition) fails some L1 windowed check b, k ≤ 2
L0 every rule of §3.1 by a windowed run, with its exact transition string; no F0. CARRY = DE + X1 + A1 + A0 and DE(1) = A0 + TS. C0 occurs only in EAT0 and CF n, k ≤ 40
CQ the identities of §2.2–2.3 and the counter tables of §3.3; for odd y, Q_k(x, y) is not a counter word (its pair k is 0 1), while Q_k(x, 0) = C(x) n < 4096 plus 3,000 random n < 2^120; every Q_k(x, y) with k ≤ 8
L1 INC1, INC0, INC011, OVF, EAT, Y1–Y4 by windowed runs (any u, any R'), with the step formulas; each one also as the concatenation of its §3.1 chain, transition by transition b, k ≤ 10 exhaustive (484 per count rule), plus 600 random with b ≤ 300
X the rules of §3.2–3.3 applied by pattern, against the direct TM at every G configuration, configuration and step count 200 random E(p, N), p ≤ 120 (55,928 G transitions)
W W(a, b); W2, W0 and B(t) for random words u; W2 and OVF on Q_t a ≤ 40; 1,500 random each
M for every E(p, N) with p ≤ 80, N ≤ 2p: the chain of §3.5, in rule names, step counts and end state, and the closed form. Also random large states, and the direct TM on random states and on every 6 mod 8 boundary case (t ≤ 6, m ≤ 2, p = 2^t − 7, 2^t − 6, 2^t, (N+1)/2: 66 cases). On each direct run whose chain has at most 300,000 steps, every TM step is tested: the first eat configuration after the start is the end of the chain 6,480 states; 400 random (p ≤ 2000, N < 2^60); 216 direct TM runs, 177 of them watched step by step (10,988,446 TM steps)
INV coverage (M5's precondition and 2^(t+2)(2m+1) ≤ p+1), closure, p' ≥ p + 2 every state with p ≤ 1500 (2,251,500 states; longer run: p ≤ 3000), plus 300,000 random up to p ~ 2^80
Z 7 steps to G(1, C(0)) with their transitions; G(1, C(0)) and E(0, 1) are the only G configurations to step 31; E(2, 4) at step 165 and EC 2 4 at step 171; the stored 10^11-step run's 2,092 eat configurations equal the model, step numbers included; a fresh direct run agrees at every eat configuration; every step from blank: the eat configurations met are exactly those of the model orbit; J, and N < 2p after E(2, 4), along the model orbit fresh: 174 eat configurations to step 59,308,869 (longer run: 337 to step 399,190,301); every step: to step 3,000,000 (longer run: 20,000,000); orbit: 300,000 eat configurations (longer run: 2,000,000)
NEG below the precondition (p + 7 < 2^t) the run does not follow M5 t = 4..7

The windowed runs (L0, L1) are proofs of the finite rules. Each parametric rule is proved by the composition written in §3. The windowed runs on parameter ranges and the direct TM runs check that the compositions and step formulas are right.

AI assistance: this proof sketch, the scripts and the checks were produced with the help of Claude (Anthropic); corrections from an independent audit by GPT-6 Astra (OpenAI).