/machines/1RB0RD_1LC0RA_---1RD_1RA1LE_1RC0LF_1LE0LB/submission/pr/pr_body.md · raw

A proof that one BB(6) holdout of class Skelet 1-like Class 2 halts: 1RB0RD_1LC0RA_---1RD_1RA1LE_1RC0LF_1LE0LB (sheet row 1286). It halts after about 1.77 × 10^44 steps. The Coq proof shows only that it halts; the step count is computed outside Coq (see below).

No other holdout has this table under a state renaming or the mirror. A separate PR covers the other table of this batch, 1RB0RF_1RC0RB_1LD0RA_1LE0LD_1RB0LC_1LA---, and the two holdouts that are that table (renamed, one of them also mirrored) from other start states.

One file, verify/Skelet1LikeC2Halt_1RB0RD_1LC0RA.v (1,142 lines), with a top-level Lemma halt: halts tm c0. for this string. It imports Individual62, LongitudinalHalt, Flip and Eqb from busycoq.

Where it can halt. The only halting transition is C0. C is entered only by B0 and E0, and in every case except B0 right after F1, C reads a 1. So the machine halts exactly when the head is in F on a 1 whose two left neighbours are 0 0:

0 0 1      with F on the 1

The counter. A right record is a configuration with the head in A on a blank cell and only blanks to its right. An increment is the run from one right record to the next.

At right records the tape reads as walls (maximal runs of at least two equal symbols) and gaps (the alternating stretches between them, given by their length):

0^inf  E  U_0  b_1  U_1  b_2  ..  b_n  U_n  b_T  [t]  A>

U_i = [x, M, m_1, Q_1, .., Q_r, y]        a digit, i >= 1

Each increment is one carry from the right. It passes the digits with bit 1 and stops at the first digit with bit 0. Every touch flips the bit and burns fuel: y − 1 in a single-marker digit (r = 0), y − 2 in a multi-marker one.

Why it runs out of fuel.

Proof (verify/Skelet1LikeC2Halt_1RB0RD_1LC0RA.v).

The proof is a checked replay of the run, built on one general lemma per kind of carry step. Everything runs in the mirrored machine tmf = flip tm, where the counter lies to the right of the head, and halt is flip_halts_iff applied to halt_tmf.

The rules.

Records and batches.

The run.

init     : c0 -[tmf]->* denote c342                 (* 342 steps, solve_init *)
run T c  := N_iter_until next (inl c) T
s_i      : run 5000 k_(i-1) = inl k_i               (* i = 1 .. 21, k_0 = c342 *)
s22      : run 5000 k21 = inr tt                    (* the halt *)

Relation to verify/Sk1Machines.v (Module TM91, a halting Skelet 1 machine, and Module Sk1Auto).

kept or changed what
kept one step function iterated by Eqb.N_iter_until and proved sound once with N_iter_until_spec (advance on run-length tapes there, next on unit records here)
kept untrusted proposals, certified at each use (propose here)
kept the halting streams of verify/LongitudinalHalt.v
changed the records are this machine's units (lists of passive walls with binary-number gaps) instead of run-length tapes
changed the rules are parametric unit lemmas rather than scans
changed closed-form batches replace bulk steps
changed the run is split into 22 chunks, and the proof runs in flip tm

Step count (computed, not proved). From the blank tape, the halting step included:

N = 176,522,930,997,643,289,094,015,905,898,381,767,890,130,463  ≈ 1.77 × 10^44

In busycoq's convention this is halts_in tm c0 (N − 1). The .v does not prove this number.

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/:

coqc -Q . BusyCoq -Q ./BigInt BigInt -native-compiler yes Skelet1LikeC2Halt_1RB0RD_1LC0RA.v
Print Assumptions Skelet1LikeC2Halt_1RB0RD_1LC0RA.halt.
coqchk -Q . BusyCoq -Q ./BigInt BigInt -norec BusyCoq.Skelet1LikeC2Halt_1RB0RD_1LC0RA
file coqc Print Assumptions coqchk
verify/Skelet1LikeC2Halt_1RB0RD_1LC0RA.v 69.8 s functional_extensionality_dep only passes (534.0 s)

functional_extensionality_dep comes from the framework lemma flip_halts_iff.

coqchk re-checks the 22 vm_cast_no_check chunks, and with them the whole run. The times were measured on a lightly loaded machine.

File name. As in PR 15 and PR 16, the name is the class name plus the first transitions, here four, because verify/Skelet1LikeC2_1RB0RD.v is already taken by PR 15 for another machine. Halt right after the class name marks a halting proof, as in verify/CubicCapHalt.v and verify/ChaoticBell1Halt.v.

Happy to rename it if you prefer another name.

Informal write-up: in the bbchallenge Discord (#bb6).

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 and coqchk. The results rest on the Coq files; extra verification and feedback are very welcome.

🤖 Generated with Claude Code