/machines/1RB0RF_1RC0RB_1LD0RA_1LE0LD_1RB0LC_1LA---/submission/family/pr_body.md · raw

Nonhalting proofs of three BB(6) holdouts (Skelet 1-like Class 2) that share one transition table: 1RB0RF_1RC0RB_1LD0RA_1LE0LD_1RB0LC_1LA--- (called the parent below) and the two holdouts that are its table under a state renaming (one of them also mirrored), each with a different start state.

With PR 15, PR 16 and a separate PR for 1RB0RD_1LC0RA_---1RD_1RA1LE_1RC0LF_1LE0LB (which halts), this covers 12 of the 14 Skelet 1-like Class 2 holdouts on the current list.

Three files, each with a top-level Lemma nonhalt: ~halts tm c0. for its own string. Each imports only Individual62 from busycoq.

machine sheet row file relation to the parent
1RB0RF_1RC0RB_1LD0RA_1LE0LD_1RB0LC_1LA--- 1281 verify/Skelet1LikeC2_1RB0RF_1RC0RB.v (2,583 lines) the parent, started in A
1RB0RA_1LC0RE_1LD0LC_1RA0LB_1RA0RF_1LE--- 1285 verify/Skelet1LikeC2_1RB0RA_1LC0RE.v (2,621 lines) rename the parent's states A→E, B→A, C→B, D→C, E→D (F fixed), no mirror; its start A is the parent's B
1RB---_1LC0LA_1LD0LC_1RE0LB_1RF0RE_1LC0RD 1290 verify/Skelet1LikeC2_1RB1RZ_1LC0LA.v (2,621 lines) mirror (L↔R) and rename A→B, B→C, C→D, D→E, E→F, F→A; its start A is the parent's F

In each case this is the only one of the 720 renamings, with or without the mirror, that fits. So the other two machines are the parent run from 0^inf B> 0^inf and 0^inf F> 0^inf (the second mirrored). These are different orbits of the same macro map. In both files phi is the inverse map, from the machine's states to the parent's.

In simulation both runs stay close to the parent's. Each reaches record exit 28 (below) about 2.63·10^12 steps in, with exactly the parent's window there. Its configuration there differs from the parent's only in deep chain gaps: one gap for the B start (a digit gap of 17 instead of 13), five gaps in two blocks for the F start.

Proof for the parent (verify/Skelet1LikeC2_1RB0RF_1RC0RB.v).

Between two blank ends the tape is alternating (…0101…) with a few exceptions, and the head sweeps across it. A sweep runs through a fixed 4-cycle of states and complements every cell it crosses:

moving right: B0 C1 A0 B1   (1RC 0RA 1RB 0RB)
moving left : D1 D0 E1 C0   (0LD 1LE 0LC 1LD)

This keeps the defects (edges between two equal cells) in place, so the defect pattern changes only when the head meets a defect. There the head passes, turns or wiggles, depending on the defect's position mod 4 against the head's phase; a turn or wiggle can also cancel two defects, which happens inside some right-region episodes and is covered by the same rules. The only halt (F reading 1, entered only by A1 = 0RF) is a rightward wiggle at a defect e with e + 1 also a defect.

The defects form a base-3 counter in three regions:

Every 81·3^K visits the left word overflows, the chain is regrouped one defect later, and the right region moves to the next of six classes r5, r0, …, r4. After six classes K is larger by 2 and the scale u below becomes 9u. The long gaps are affine in u, so they grow by a factor close to 9 but not exactly 9 (for example 74844u − 36 becomes 673596u − 36).

The invariant. At a record exit (just after a left record) of class r and epoch e, let K = K0(r) + 2e and u = 9^(e−2). The invariant C_r(e) fixes:

Lemma S maps C_r(e) to C_(r+1)(e), and C_r4(e) to C_r5(e+1), for e ≥ 2. X and Y stay in step with the counter by an exact cancellation of the u-terms (section 5.4 of the write-up).

The Coq proof.

inv_step : Inv s -> exists s', cfgI s -->+ cfgI s' /\ Inv s'
init28   : c0 -->* ev_cfg [] (fun _ => const S0) cfg28
           (* record exit 28: 2,629,088,227,408 machine steps,
              18,571,896 simulator steps in 38 native_compute pieces *)

base28 runs the record-exit episode into the state of inv28 : Inv (C5, 2, 0%N, nus28) (class r5, epoch 2).

Finally, nonhalt is multistep_nonhalt with this base case, then progress_nonhalt_cond with Inv.

Templates. The outer shape follows verify/SBCv6.v, Module TM21: a configuration built from a list of digit blocks, one invariant with a closure lemma, and multistep_nonhalt + progress_nonhalt_cond. The simulator follows the idea of verify/Sk1like_TC_v1.v: a step function that is computed, proved correct once, and run by evaluation. New here: one macro step is a whole record interval (81·3^K visits), the invariant has six classes, and the right region needs the jump executor.

How the other two files reuse it.

Both are verify/Skelet1LikeC2_1RB0RF_1RC0RB.v with three changes:

file start of tmP simulator steps to record exit 28 Perm lemma at record exit 28, against the parent
verify/Skelet1LikeC2_1RB0RA_1LC0RE.v B;; tape0 18,571,902 Perm tm tmP phi one deep chain gap differs
verify/Skelet1LikeC2_1RB1RZ_1LC0LA.v F;; tape0 18,571,554 Perm (flip tm) tmP phi five deep chain gaps differ

The invariant asks of the deep gaps only their residue mod 4 and minimum, so no new induction is needed.

Checked on this branch (BB6 @ d026880) with Coq 8.20.1. The framework .vo files were built with make at 9cf9e88 and reused: d026880 differs from 9cf9e88 only by the eight Skelet1LikeC2 files of PR 15 and PR 16, so the framework is the same. Then, in verify/, for each of the three files:

coqc -Q . BusyCoq -Q ./BigInt BigInt -native-compiler yes Skelet1LikeC2_<…>.v
Print Assumptions Skelet1LikeC2_<…>.nonhalt.
timeout 600 coqchk -Q . BusyCoq -Q ./BigInt BigInt -norec BusyCoq.Skelet1LikeC2_<…>
file coqc Print Assumptions coqchk
verify/Skelet1LikeC2_1RB0RF_1RC0RB.v 71.0 s Closed under the global context no error, not finished after 600 s
verify/Skelet1LikeC2_1RB0RA_1LC0RE.v 62.7 s Closed under the global context no error, not finished after 600 s
verify/Skelet1LikeC2_1RB1RZ_1LC0LA.v 69.4 s Closed under the global context no error, not finished after 600 s

coqchk warns Native compiler is disabled, falling back to VM conversion test. After 600 s it was on ck_15 of the 38 base-case pieces ck_0 .. ck_37, in all three files. So these results rest on coqc's kernel check at Qed, with the VM and the native compiler in the trusted base. The times were measured on a lightly loaded machine.

File names. As in PR 15 and PR 16, the names are the class name plus the first transitions of each machine. It is four transitions, as in PR 16, because two-transition prefixes such as 1RB0RA_ are shared by many holdouts.

A module name cannot contain -, so in 1RB---_1LC0LA_… the undefined A1 is written 1RZ, the usual spelling of a halting transition (Z = halt state): verify/Skelet1LikeC2_1RB1RZ_1LC0LA.v. The exact string is in the file header and in TM_from_str.

Happy to rename them, or to put the three into one file with a Module per machine if you prefer.

Informal write-ups: one per machine, in the bbchallenge Discord (#bb6). The write-ups for the B and F starts build on the parent's.

AI disclosure: the informal proofs and the Coq formalizations were produced with Claude Code (Opus 5.5) and checked by compiling against unmodified busycoq, with Print Assumptions (coqchk does not finish within 600 s, see above). The results rest on the Coq files; extra verification and feedback are very welcome.

🤖 Generated with Claude Code