/reports/k42/atlas.md · raw

K42 F-entry atlas (stages 1 and 2)

Stage 2 result (last section): with mxdys's 5^k acceleration, exact on all 40 lines, every line ran to 10^169-10^194 Incs with no halt and no translated cycle. Verdict: a cryptid family. The rules are written out there, and the decision for Dennis is in decision.md.

2026-10-14. Strategy direction 2 (reports/strategy/directions.md, section 2 and the Critic). Everything here is in reports/k42/. All machines are written in core naming: 1RB0RC_1LC0RD_0LD0LC_1RE0LA_0RA<E1>_<F0>---, started on a blank tape in the member's start state. A mirrored member behaves identically, so it gets the same treatment.

In plain words

All 40 lines run one and the same counter: the Skelet-1-like counter that mxdys wrote down in Sk1like_TC_v1.v.

The counter never uses state F. F is entered at exactly one kind of moment: when the counter's carry runs into the two-cell digit 01. What the machine does next is the only thing that differs between the 40 lines.

That difference is a one-line rule per line. It says at which point of the counter's digit cycle the 01 is put back in. The 16 (E1, F0) variants give only 10 different rules, called escape classes A-J below.

Nothing settles within our reach. We ran every line for 2.4-4.6 million counter increments (5.4e12 to 4.0e13 steps, tapes of 7.2e6 to 1.4e7 cells): - no line halted; - no line repeated its configuration the way mxdys's proved siblings do (a "translated cycle"); - every F entry was an escape with a positive exponent after the 01, the harmless kind.

Verdict: all 40 are "unclear". They are Skelet-1-type counters, very likely non-halting, but with no route yet. There is one exact way to halt, and we can state it per class (question (b)). Six lines (classes I and J) halt at once if it ever happens; six more (class B) halt one carry later.

Answers in brief: - (a) There is only a partial recurrence. Escapes at the front of the tape come at n = 100·25^k − 11 or 400·25^k − 11, a base-5 pattern; everything else is irregular. - (b) E reads 11 only after a "glued" escape. The exact digit per class is in (b). - (c) Yes. The core preserves mxdys's 25-digit language, and each of the 10 escape classes needs checking once. The 40 lines form 21 distinct histories. - (d) Each class's nearest proof fails for a stated reason, see (d).

A finding for direction 1. Lines 64, 124 and 305 are not lockstep twins of Sk1like_TC_v1. Their digit histories leave mxdys's after the 6th, 6th and 3rd escape, so the planned ports should be expected to fail (last section before the tables).

Recommendation for stage 2. Running longer at the Inc level is pointless; it is already 2.4-4.6 million Incs per line. Two routes remain:

  1. Port mxdys's 5^k-Inc acceleration (RIncs in Sk1like_TC_v2.v, which moves n to n + dn + 5^k in one step) to Python. Then run one line per digit history (21 distinct histories once twins are grouped; see the tables) until a translated cycle appears. This is how Sk1like_TC_v2 was proved, after 1.7e10 accelerated macro-steps. It failed for line 496 at a tape of about 10^64, but nobody has reported runs for the other 9 classes.
  2. Find an invariant on the exponents that rules out a glued escape (exponent 0 right after the 01; see (b)). This is a question about the counter's arithmetic, so it is cryptid-like. Per the protocol, the rules are written down here and the family is flagged.

Route 1 is cheap (Python, a day) and can be stopped at any point. Route 2 is a research problem.

What was built (all Python, stdlib only)

File What it does
k42sim.py Exact simulator. The tape is run-length encoded in 4-cell blocks, and the head works in a 2-cell-block window, so whole runs b^m are crossed in one step. Every TM step is counted, and it stops on exact step counts.
validate.py, validate_1e9.jsonl Checks k42sim against tools/sim (C core) on all 40 member strings to 1e9 steps: final tape, state, head and every F-entry step agree on all 40 (ALL OK).
digits.py Reads a configuration in mxdys's representation: 0^inf D> w^n d1 w^m1 d2 w^m2 ... 001 0^inf with w = 0001. The 25 digits are named by their bits (0011 = D0011, ...).
mxinc.py A literal port of mxdys's RInc/Inc table from Sk1like_TC_v1.v. On his variant (E1 = 1RF, F0 = 1RB, start A), our reading of the TM agrees with his Inc on 63,943 consecutive increments, and reaches his x0 = (1, 0011^27 00001^8 001) at step 6,039.
atlas_run.py, runs/ The long runs: one JSON per line (runs/L<line>.json) with every F entry, the digit configuration at the start of that increment and right after it, the digits seen, growth checkpoints and a translated-cycle detector.
ruleprobe.py, d01rule.py, closure.py One-increment probes from hand-built digit configurations. They give the escape rule of every variant, held-out and proved (d01rule.json), and test it against every digit and exponent 0-6 (closure.json).
analyze.py, fpattern.py, proved_summary.py, twin64.py The per-line data (atlas_data.json), the F-entry pattern search (fpattern.txt), the proved-neighbour runs, and the 64/124/305 twin check (twin64.txt).
build_atlas.py, make_tables.py Generate this file from atlas_head.md, atlas_qa.md and the data. Edit those, not atlas.md.
members.py, members.tsv, upstream_variants.py, upstream_variants.tsv The 40 lines (42 within 2 transitions), and every upstream machine on the core with the file naming it.

How the counter works

A configuration at the start of an increment ("Inc") is

0^inf  D>  w^n  d1 w^m1  d2 w^m2  ...  dk w^mk  001 0^inf        (w = 0001)

One Inc is a pass to the right and back: - D sweeps right over w^n; - the carry is handed from digit to digit (mxdys's RInc, which recurses through 00111); - the head returns to the left end.

Each digit runs through a five-phase cycle:

0011 -> 0011001 -> 001101 -> 00111 -> (carry into the next digit) -> 00101 -> 0011

Its exponent drops by two per cycle and grows by whatever the carry hands back. Meanwhile w^n at the front gains one w per Inc, until a carry packs it into a new 0011 digit and n restarts at 1. When an exponent reaches 0, mxdys's rules merge neighbouring digits, and some of those merges produce the digit 01.

State F is used nowhere in the core rules. On mxdys's own variant, only three of his rules run through F: 01^m, 00101^0 00101^m and 0011101^m. The last two reduce to the first, because the counter builds a 01 at the front of the carry during the Inc. So F is entered exactly when the rightward carry pass, in phase D, meets a 01: D reads the 0 and E reads the 1.

The ten escape rules

Every variant has its own rule for an escape with a positive exponent m after the 01. It applies in all three F contexts (01^m, 00101^0 00101^m, 0011101^m) and also when the context is reached by recursion. The rules below were measured from n = 5 and 9 and from m = 1 to 6 (d01rule.py, ruleprobe.py); the results are linear in n and m.

Class (E1, F0) lines one Inc with 01 at the carry front
A (0RF, 0RA), (0RF, 1RB), (1RF, 0LD) 44 208 404 260 494 703 w^n 01 w^m r → w^(n+1) 00101 w^(m-1) r
B (0RF, 0LA), (0RF, 1RC), (1RF, 1LB) 263 266 67 321 664 688 → w^1 0011 w^n 001 w^(m-1) r
C (1RF, 0LA), (1RF, 1RC) 335 100 491 496 → w^(n+1) 00111 w^(m-1) r
D (1RF, 0RC), (1RF, 1RE) 420 587 673 306 361 413 → w^(n+1) 001101 w^(m-1), and the carry continues into r
E (1RF, 0RE) 407 571 578 → w^(n+1) 001111 w^(m-1), and the carry continues into r
F (0RF, 0LC) 92 129 411 → w^(n+1) 00001 w^(m-1) r
G (0RF, 0LB) 435 709 718 → w^1 0011 w^(n-1) 001 w^m r
H (0RF, 1LB) 64 124 305 → w^1 0011 w^(n-1) 0011001 w^(m-1) r
I (0RF, 0RD) 86 121 405 → w^(n+1) 00111 w^0 0011 w^(m-2) r (m ≥ 2)
J (0RF, 1RD) 285 421 713 → w^(n+1) 00001 w^0 0011 w^(m-2) r (m ≥ 2)

For comparison, mxdys's proved variant (1RF, 1RB) has the rule w^n 01 w^m r → w^1 0011 w^(n-1) 00001 01 w^(m-1) r. It keeps the 01, and only adds a digit in front of it.

Read plainly, each rule puts the escaped 01 back into the counter as one of the counter's own digits. Which digit depends on the class: 00101, 001, 00111, 001101, 001111, 00001 or 0011001, which is the same as choosing a phase of the five-phase digit cycle. After that the counter simply carries on.

(a) Do the F entries follow a recurrence?

Partly. Escapes at the very front of the tape (depth 0, context 00101^0 00101^x) happen at front numbers

n = 100·25^k − 11   or   n = 400·25^k − 11
(n = 89, 389, 2489, 9989, 62489, 249989, 1562489)

This holds for 97 of the 165 depth-0 00101^0 00101 escapes in all 40 runs. The others, and every escape of another kind or at greater depth, fit no such formula (fpattern.py).

That is a base-5 regularity. It matches the 5^k-Inc acceleration that mxdys uses in Sk1like_TC_v2.v (RIncs_spec', n → n + dn + 5^k).

Three things show no recurrence that we could find: - the escape's own exponent x; - the deeper exponents; - the escapes at depth ≥ 1, and the contexts 01^m and 0011101^m.

For example, line 260 has three escapes in a row at n = 62489, with x = 65525, 51913 and 35623. The gaps between F entries, counted in Incs, are irregular in every line (tables below). An F entry is simply the moment when a digit's exponent reaches 0 next to the right neighbour, so its timing inherits the full mixed-radix arithmetic of the counter.

(b) Can E ever read the 11 that leads to a halt?

Halting needs F to read a 1. F is entered only from E reading a 1. E reads a 1 only while the head is moving right, at the 1 of a 01. E is entered from D, or straight from F in classes D and E. When D is entered moving left, it always hands E a cell that was just written 0. So:

  1. The escape is safe when the 01 is followed by w (exponent m ≥ 1, or m ≥ 2 in classes I and J). F then reads the first 0 of w = 0001. - We checked every holdout variant, all four contexts, m = 1 to 6, and every one of mxdys's 25 digits as the next digit (closure.py). None of these halts. - In classes A, B, C, E, F, G and H every result parses back into mxdys's 25 digits. - Class D leaves the language when the digit after the escape is 001, 0010101 or 001011 (mxdys's Tp1 digits). It produces a digit 000001; we found no immediate halt. This does happen: on lines 306, 361, 587 and 673 the first escape (Inc 127-140) meets the tape's end digit 001. The new digit was present at 24 parsed Inc boundaries, and the runs went on normally. - Classes I and J do the same at m = 1 for eight next digits, and halt at m = 1 when the next digit is 001011.
  2. The dangerous case is a "glued" escape: exponent m = 0, so the 01 sits directly against the next digit. Per class: - I and J (lines 86 121 405 285 421 713): the machine halts in the same Inc whenever the glued digit starts with 0011. That is 16 of the 25 digits, since the tape 01 0011 lets F → D → E → F read 11. - B (lines 263 266 67 321 664 688): a glued 0011… digit turns into a digit starting 011. The machine halts the next time the carry reaches it. We checked this directly: from w^5 01 0011^2 … it halts at step 248-250. - A (0RF, 0RA) and C: a glued 001011 halts at once. - F: five glued digits create a digit starting 01…. - A (0RF, 1RB), A (1RF, 0LD), D, E, G, H: no immediate halt for any glued digit. Some glued digits leave the language.
  3. No digit in mxdys's language starts with 011, and every digit and w starts with 0. So, apart from the escapes, the rightward pass never meets 011 in phase.

In our runs every F entry had m ≥ 3 (327 F entries over the 40 lines), so no glued escape and no m = 1 escape ever occurred. The exact halting condition for each line is therefore: a glued escape (or, in I and J, an m = 1 escape) with the listed next digit. Whether one ever happens is a question about the counter's exponents.

(c) Is there a digit-language invariant, so each F0 is checked once?

Yes, for everything except the glued cases. - The core rules never touch F, and they are shared by all 40 lines. They are exactly mxdys's table. - F0 and E1 only enter through the escape rule, and the 16 variants have only 10 escape rules (table above). So each class needs checking once, not each line. - Language closure in the runs. Every Inc boundary we parsed decomposed into mxdys's 25 digits on every line: all Incs up to 20,000, then every 64th, plus the Inc before and after every F entry. Digits outside the 25 that appeared: 000001, only in class D (see (b)). - Escape-rule closure. For positive exponents, each class's escape rule maps mxdys's language into itself, apart from the class D and I/J exceptions in (b).

What the invariant does not give is the arithmetic fact a proof needs: that exponent-0 merges at an escape (and the class D, I and J exceptions) never happen. That is the open question for stage 2.

(d) Nearest proved analogue, and why its proof fails

Proved neighbours were found by changing one field of (E1, F0); d01rule.json has the full list. We ran each method's representative for 15 s (runs/P_*.json):

Upstream route Proved (E1, F0) What its machines do (our short runs) Holdouts it is nearest to Why it fails for them
hlin decider (Indv7.v: 11, Indv6.v: 1) E1 = 0RF: 0RB, 0RC, 1LA, 1LE, 1RA, 1RE; E1 = 1RF: 0LB, 0LC, 0RB, 0RD, 1LD; and (1RF, 0LE) F entered every ~100-140 Incs (2,876-3,922 F entries in 377k-457k Incs; the proved variants fall into identical pairs and triples). The escape fires all the time. Presumably that keeps the counter's top digits in a regular pattern, which is what hlin closes in about 1 s; we did not check hlin's certificate. (1RF, 0LE) traps the head between E and F: a plain cycler. A, F, G, I, J (E1 = 0RF); C, D, E (E1 = 1RF) In the holdouts the escape is rare: 5-13 F entries in 2.4M-4.6M Incs. The counter keeps its full arithmetic, so there is no regular pattern for hlin to find. The critic ran hlin at the proving config on 8 holdouts: 0/8.
TC decider (TCv1.v) (1RF, 1RA), (1RF, 1RD), starts B and D Escape creates a non-mxdys digit (0000011, 00000010011). F every ~37 Incs; the front repeats from Inc 4,270 with period 68: a translated cycle almost at once. C (1RF, 1RC), D (1RF, 1RE), J (0RF, 1RD) The holdouts' escape returns a live counter digit. No front repeat in 2.4M-4.6M Incs (detector below).
hand TC proof Sk1like_TC_v1.v (1RF, 1RB), starts A, B, D The escape keeps the 01 (00001 01). Our detector sees the tape front of Inc 8,321 come back at Inc 1,346,681. That is 1,338,360 Incs, twice mxdys's cycle of 669,179 Incs, which he reaches 1,339,069 Incs after x0. A (0RF, 1RB), B (1RF, 1LB), C (1RF, 1RC), D (1RF, 1RE) Same core, different escape digit. No repeat within our reach; mxdys reports line 496 (class C) at a tape of about 10^64 with no TC.
hand TC proofs Sk1like_TC_v2.v, TCv3.v (0RF, 0RE), starts A, B, D Escape → w^1 0011 w^n 0011 w^(m-1), and the carry continues into r (the 01 becomes an ordinary 0011 digit). 11 F entries in 916k Incs and no repeat in our 15 s run. mxdys needed 1.7e10 accelerated macro-steps (each up to 5^k Incs) before the TC. A (0RF, 0RA), E (1RF, 0RE), I (0RF, 0RD) The proof is a single long accelerated run to a TC. Nobody has shown that such a run ends for the holdout escape rules.

The one useful lesson. The proved variants are proved because their escape is either frequent (hlin, TC decider) or it eventually locks the counter into a translated cycle that a 5^k-accelerated run can find (the three hand proofs). The holdouts' escapes are rare and feed the counter. For them the only known route is the second one: a far longer accelerated run.

A warning for direction 1: lines 64, 124 and 305 are not lockstep twins of Sk1like_TC_v1

Direction 1 plans to port mxdys's proofs to three lines: 64 and 124 (twins of TM1 and TM3) and 305 (twin of TM2).

At the digit level these are different variants. The holdouts are class H, (0RF, 1LB); his proof is for (1RF, 1RB). The core is the same, but the escape writes 0011001 where his writes 00001 01.

Why they ran in lockstep to 3e8. Usually the next carry turns both digits into 001101, so the two machines reconverge.

Where they part. For line 305 we traced the split: it comes when the escaped digit sits directly behind a 0011 with exponent 0. For 64 and 124 we only located it, after the 6th F entry. - his variant runs 0011^0 0000101 → 0011000101 → … → 0011101, which is a new escape; - ours runs 0011^0 0011001 → 0011011001 → …, which is not.

Measured with twin64.py (output in twin64.txt):

Holdout Proved twin Identical F entries What happens next
64 (start B) TM1 the first 6, up to Inc 528,731 Different from then on. TM1's front repeats (its translated cycle) from Inc 673,211, period 1,338,360 Incs. Line 64 shows no repeat in 2.6M Incs.
124 (start D) TM3 the first 6 Different from then on. TM3's 2.0M-Inc run was too short to show its own cycle.
305 (start A) TM2 the first 3, up to Inc 711 Different from the 4th: TM2 escapes again at Inc 740, line 305 not until Inc 3,028. TM2 repeats from Inc 1.35M; line 305 shows no repeat in 3.9M Incs.

What this means for the port. Copying the TM1-TM3 modules will not close these lines. The 1.33M-step Inc chain runs into configurations where the holdout and the proved machine differ, so expect the port to fail coqc (direction 1's stop rule). These three lines belong to this family instead.

Per-member tables

Each line ran for 45 or 80 s of Python: 2.4M-4.6M Incs, 5.4e12-4.0e13 steps, tapes of 7.2e6-1.4e7 cells. Verdicts: - unclear (counter; no TC in reach): no halt, no repeat of the tape front (translated-cycle detector: the 12 runs nearest the head, compared at every Inc boundary with content-defined 1/16 sampling; it finds mxdys's cycle on his proved variant at Inc 1.35M), and no glued escape. - Lines that halted: none. - Lines with a front repeat: none.

How to read the columns: - F entries gives the Inc numbers of the F entries (one Inc is one counter increment). - escape contexts says which of the three contexts fired and how often. - twin names another line whose configuration at its F entries is identical apart from the exponent of the deepest digit, with the number of shared F entries and the Inc offset. Most twins differ only in the start state (offset 0 or 13 Incs) or in F0 within one escape class. The pair 100/578 spans classes C and E, whose escapes end in the same digits one carry apart. Grouping the twins gives 21 distinct histories: {44 494}, {64 124}, {67 263}, {86}, {92}, {100 578}, {121}, {129 411}, {208 703}, {260 404}, {266 321 664 688}, {285 421}, {305}, {306 361 587 673}, {335 491 496}, {405}, {407 571}, {413 420}, {435}, {709 718}, {713}. One proof per group would do, as long as no carry reaches the deepest digit (the twins can differ there).

Escape class A: (E1, F0) = (0RF, 0RA), (0RF, 1RB), (1RF, 0LD)

Escape rule (one Inc, 01 at the front of the carry): w^n 01 w^m r → w^(n+1) 00101 w^(m-1) r.

Halting trigger (closure.py): for (0RF, 0RA), a glued escape (m = 0) followed by 001011 halts at once; (0RF, 1RB) and (1RF, 0LD) have no glued context that halts at once.

line E1 / F0 / start reach F entries (Inc no.) escape contexts twin verdict
44 0RF / 0RA / D 1.1e13 steps, 2.7M Incs 6: 140, 543, 177465, 301448, 614981, 635808 00101^0 00101 ×4; 01^m ×2 260 (4/6, Inc +13), 404 (4/6, Inc +13), 494 (6/6, Inc +0) unclear (counter; no TC in reach)
208 0RF / 0RA / A 1.5e13 steps, 3.7M Incs 7: 129, 3065, 7863, 130414, 582928, 1022916, 2262920 00101^0 00101 ×4; 01^m ×3 703 (7/7, Inc +0) unclear (counter; no TC in reach)
260 0RF / 1RB / B 2.0e13 steps, 3.8M Incs 6: 127, 530, 177452, 301435, 411843, 3489386 00101^0 00101 ×5; 01^m ×1 44 (4/6, Inc -13), 404 (6/6, Inc +0), 494 (4/6, Inc -13) unclear (counter; no TC in reach)
404 0RF / 0RA / B 2.5e13 steps, 4.4M Incs 6: 127, 530, 177452, 301435, 411843, 3489386 00101^0 00101 ×5; 01^m ×1 44 (4/6, Inc -13), 260 (6/6, Inc +0), 494 (4/6, Inc -13) unclear (counter; no TC in reach)
494 1RF / 0LD / D 7.6e12 steps, 2.4M Incs 6: 140, 543, 177465, 301448, 614981, 635808 00101^0 00101 ×4; 01^m ×2 44 (6/6, Inc +0), 260 (4/6, Inc +13), 404 (4/6, Inc +13) unclear (counter; no TC in reach)
703 1RF / 0LD / A 1.1e13 steps, 2.8M Incs 7: 129, 3065, 7863, 130414, 582928, 1022916, 2262920 00101^0 00101 ×4; 01^m ×3 208 (7/7, Inc +0) unclear (counter; no TC in reach)

Escape class B: (E1, F0) = (0RF, 0LA), (0RF, 1RC), (1RF, 1LB)

Escape rule (one Inc, 01 at the front of the carry): w^n 01 w^m r → w^1 0011 w^n 001 w^(m-1) r.

Halting trigger (closure.py): a glued escape followed by any 0011… digit (or 001011) creates a digit starting 011, which halts the next time the carry reaches it.

line E1 / F0 / start reach F entries (Inc no.) escape contexts twin verdict
67 0RF / 1RC / A 1.1e13 steps, 2.7M Incs 7: 129, 3119, 3218, 126735, 126834, 1286917, 1287016 00101^0 00101 ×5; 01^m ×1; 0011101^m ×1 263 (7/7, Inc +0) unclear (counter; no TC in reach)
263 0RF / 0LA / A 2.8e13 steps, 3.9M Incs 8: 129, 3119, 3218, 126735, 126834, 1286917, 1287016, 3511780 00101^0 00101 ×6; 01^m ×1; 0011101^m ×1 67 (7/8, Inc +0) unclear (counter; no TC in reach)
266 0RF / 0LA / B 1.4e13 steps, 3.6M Incs 10: 127, 226, 332, 1875, 5038, 5137, 7551, 180665 ... 00101^0 00101 ×7; 01^m ×2; 0011101^m ×1 321 (10/10, Inc -13), 664 (10/10, Inc +0), 688 (10/10, Inc -13) unclear (counter; no TC in reach)
321 0RF / 1RC / D 1.5e13 steps, 3.8M Incs 10: 140, 239, 345, 1888, 5051, 5150, 7564, 180678 ... 00101^0 00101 ×7; 01^m ×2; 0011101^m ×1 266 (10/10, Inc +13), 664 (10/10, Inc +13), 688 (10/10, Inc +0) unclear (counter; no TC in reach)
664 0RF / 1RC / B 6.0e12 steps, 2.5M Incs 10: 127, 226, 332, 1875, 5038, 5137, 7551, 180665 ... 00101^0 00101 ×7; 01^m ×2; 0011101^m ×1 266 (10/10, Inc +0), 321 (10/10, Inc -13), 688 (10/10, Inc -13) unclear (counter; no TC in reach)
688 1RF / 1LB / D 6.8e12 steps, 2.6M Incs 10: 140, 239, 345, 1888, 5051, 5150, 7564, 180678 ... 00101^0 00101 ×7; 01^m ×2; 0011101^m ×1 266 (10/10, Inc +13), 321 (10/10, Inc +0), 664 (10/10, Inc +13) unclear (counter; no TC in reach)

Escape class C: (E1, F0) = (1RF, 0LA), (1RF, 1RC)

Escape rule (one Inc, 01 at the front of the carry): w^n 01 w^m r → w^(n+1) 00111 w^(m-1) r.

Halting trigger (closure.py): a glued escape followed by 001011 halts at once.

line E1 / F0 / start reach F entries (Inc no.) escape contexts twin verdict
100 1RF / 1RC / F 8.6e12 steps, 2.7M Incs 8: 129, 1912, 14480, 21205, 77267, 145092, 315096, 1637293 00101^0 00101 ×5; 0011101^m ×2; 01^m ×1 578 (8/8, Inc +0) unclear (counter; no TC in reach)
335 1RF / 0LA / B 2.2e13 steps, 4.6M Incs 10: 127, 2025, 10843, 320899, 515469, 596898, 3050500, 3185774 ... 00101^0 00101 ×6; 01^m ×2; 0011101^m ×2 491 (6/10, Inc +0), 496 (6/10, Inc -13) unclear (counter; no TC in reach)
491 1RF / 1RC / B 6.8e12 steps, 2.5M Incs 6: 127, 2025, 10843, 320899, 515469, 596898 00101^0 00101 ×3; 01^m ×2; 0011101^m ×1 335 (6/6, Inc +0), 496 (6/6, Inc -13) unclear (counter; no TC in reach)
496 1RF / 1RC / D 6.8e12 steps, 2.5M Incs 6: 140, 2038, 10856, 320912, 515482, 596911 00101^0 00101 ×3; 01^m ×2; 0011101^m ×1 335 (6/6, Inc +13), 491 (6/6, Inc +13) unclear (counter; no TC in reach)

Escape class D: (E1, F0) = (1RF, 0RC), (1RF, 1RE)

Escape rule (one Inc, 01 at the front of the carry): w^n 01 w^m r → w^(n+1) 001101 w^(m-1) + the carry runs on into r.

Halting trigger (closure.py): no glued context halts at once. An escape followed by 001, 0010101 or 001011 (any m) creates 000001. This happened on 4 of the 6 lines (306, 361, 587, 673), at their first escape, with no harm.

line E1 / F0 / start reach F entries (Inc no.) escape contexts twin verdict
306 1RF / 1RE / B 3.5e13 steps, 4.1M Incs 10: 127, 515, 12880, 12930, 24955, 64692, 64694, 386173 ... 01^m ×4; 00101^0 00101 ×3; 0011101^m ×3 361 (10/10, Inc -13), 587 (10/10, Inc -13), 673 (10/10, Inc +0) unclear (counter; no TC in reach)
361 1RF / 1RE / D 4.0e13 steps, 4.5M Incs 11: 140, 528, 12893, 12943, 24968, 64705, 64707, 386186 ... 01^m ×5; 00101^0 00101 ×3; 0011101^m ×3 306 (10/11, Inc +13), 587 (10/11, Inc +0), 673 (10/11, Inc +13) unclear (counter; no TC in reach)
413 1RF / 1RE / A 1.2e13 steps, 2.8M Incs 6: 129, 14792, 154509, 493034, 1672678, 1672680 00101^0 00101 ×4; 0011101^m ×1; 01^m ×1 420 (6/6, Inc +0) unclear (counter; no TC in reach)
420 1RF / 0RC / A 1.1e13 steps, 2.7M Incs 6: 129, 14792, 154509, 493034, 1672678, 1672680 00101^0 00101 ×4; 0011101^m ×1; 01^m ×1 413 (6/6, Inc +0) unclear (counter; no TC in reach)
587 1RF / 0RC / D 1.1e13 steps, 2.4M Incs 10: 140, 528, 12893, 12943, 24968, 64705, 64707, 386186 ... 01^m ×4; 00101^0 00101 ×3; 0011101^m ×3 306 (10/10, Inc +13), 361 (10/10, Inc +0), 673 (10/10, Inc +13) unclear (counter; no TC in reach)
673 1RF / 0RC / B 1.4e13 steps, 2.7M Incs 10: 127, 515, 12880, 12930, 24955, 64692, 64694, 386173 ... 01^m ×4; 00101^0 00101 ×3; 0011101^m ×3 306 (10/10, Inc +0), 361 (10/10, Inc -13), 587 (10/10, Inc -13) unclear (counter; no TC in reach)

Escape class E: (E1, F0) = (1RF, 0RE)

Escape rule (one Inc, 01 at the front of the carry): w^n 01 w^m r → w^(n+1) 001111 w^(m-1) + the carry runs on into r.

Halting trigger (closure.py): no glued context halts at once, and all of them stay in the language.

line E1 / F0 / start reach F entries (Inc no.) escape contexts twin verdict
407 1RF / 0RE / D 1.1e13 steps, 2.8M Incs 7: 140, 3901, 7611, 13240, 323296, 517866, 599295 00101^0 00101 ×4; 01^m ×2; 0011101^m ×1 571 (7/7, Inc +13) unclear (counter; no TC in reach)
571 1RF / 0RE / B 7.6e12 steps, 2.6M Incs 7: 127, 3888, 7598, 13227, 323283, 517853, 599282 00101^0 00101 ×4; 01^m ×2; 0011101^m ×1 407 (7/7, Inc -13) unclear (counter; no TC in reach)
578 1RF / 0RE / A 7.6e12 steps, 2.5M Incs 8: 129, 1912, 14480, 21205, 77267, 145092, 315096, 1637293 00101^0 00101 ×5; 0011101^m ×2; 01^m ×1 100 (8/8, Inc +0) unclear (counter; no TC in reach)

Escape class F: (E1, F0) = (0RF, 0LC)

Escape rule (one Inc, 01 at the front of the carry): w^n 01 w^m r → w^(n+1) 00001 w^(m-1) r.

Halting trigger (closure.py): no glued context halts at once; five of them create a digit starting 01 (not traced further).

line E1 / F0 / start reach F entries (Inc no.) escape contexts twin verdict
92 0RF / 0LC / A 1.2e13 steps, 2.8M Incs 5: 129, 1525, 13724, 27099, 137216 00101^0 00101 ×4; 0011101^m ×1 - unclear (counter; no TC in reach)
129 0RF / 0LC / B 2.0e13 steps, 3.7M Incs 8: 127, 530, 3773, 18769, 35653, 103427, 220210, 3239534 00101^0 00101 ×5; 01^m ×2; 0011101^m ×1 411 (7/8, Inc -13) unclear (counter; no TC in reach)
411 0RF / 0LC / D 9.6e12 steps, 2.8M Incs 7: 140, 543, 3786, 18782, 35666, 103440, 220223 00101^0 00101 ×5; 01^m ×2 129 (7/7, Inc +13) unclear (counter; no TC in reach)

Escape class G: (E1, F0) = (0RF, 0LB)

Escape rule (one Inc, 01 at the front of the carry): w^n 01 w^m r → w^1 0011 w^(n-1) 001 w^m r.

Halting trigger (closure.py): no glued context halts at once, and all of them stay in the language.

line E1 / F0 / start reach F entries (Inc no.) escape contexts twin verdict
435 0RF / 0LB / A 6.8e12 steps, 2.5M Incs 7: 129, 1579, 13832, 20057, 501187, 1386550, 1389249 00101^0 00101 ×4; 0011101^m ×2; 01^m ×1 - unclear (counter; no TC in reach)
709 0RF / 0LB / B 9.6e12 steps, 2.6M Incs 13: 127, 226, 2486, 5664, 7713, 87025, 90925, 91024 ... 00101^0 00101 ×8; 0011101^m ×3; 01^m ×2 718 (13/13, Inc -13) unclear (counter; no TC in reach)
718 0RF / 0LB / D 7.6e12 steps, 2.4M Incs 13: 140, 239, 2499, 5677, 7726, 87038, 90938, 91037 ... 00101^0 00101 ×8; 0011101^m ×3; 01^m ×2 709 (13/13, Inc +13) unclear (counter; no TC in reach)

Escape class H: (E1, F0) = (0RF, 1LB)

Escape rule (one Inc, 01 at the front of the carry): w^n 01 w^m r → w^1 0011 w^(n-1) 0011001 w^(m-1) r.

Halting trigger (closure.py): no glued context halts at once; some leave the language.

line E1 / F0 / start reach F entries (Inc no.) escape contexts twin verdict
64 0RF / 1LB / B 5.4e12 steps, 2.6M Incs 10: 127, 625, 1764, 207725, 370737, 528731, 560680, 756113 ... 00101^0 00101 ×6; 0011101^m ×3; 01^m ×1 124 (10/10, Inc -13) unclear (counter; no TC in reach)
124 0RF / 1LB / D 6.8e12 steps, 2.9M Incs 10: 140, 638, 1777, 207738, 370750, 528744, 560693, 756126 ... 00101^0 00101 ×6; 0011101^m ×3; 01^m ×1 64 (10/10, Inc +13) unclear (counter; no TC in reach)
305 0RF / 1LB / A 2.0e13 steps, 3.9M Incs 10: 129, 293, 711, 3028, 6066, 6500, 167186, 284449 ... 00101^0 00101 ×5; 0011101^m ×5 - unclear (counter; no TC in reach)

Escape class I: (E1, F0) = (0RF, 0RD)

Escape rule (one Inc, 01 at the front of the carry): w^n 01 w^m r → w^(n+1) 00111 w^0 0011 w^(m-2) r (m ≥ 2).

Halting trigger (closure.py): a glued escape followed by any 0011… digit halts at once; so does m = 1 followed by 001011.

line E1 / F0 / start reach F entries (Inc no.) escape contexts twin verdict
86 0RF / 0RD / A 6.8e12 steps, 2.6M Incs 11: 129, 4361, 8883, 56679, 124114, 362981, 565420, 1371030 ... 00101^0 00101 ×5; 01^m ×4; 0011101^m ×2 - unclear (counter; no TC in reach)
121 0RF / 0RD / B 7.6e12 steps, 2.9M Incs 6: 127, 739, 2011, 143086, 324775, 1543792 00101^0 00101 ×3; 0011101^m ×2; 01^m ×1 - unclear (counter; no TC in reach)
405 0RF / 0RD / D 9.6e12 steps, 3.0M Incs 9: 140, 4125, 8647, 56443, 123878, 362745, 565184, 1069180 ... 0011101^m ×4; 00101^0 00101 ×3; 01^m ×2 - unclear (counter; no TC in reach)

Escape class J: (E1, F0) = (0RF, 1RD)

Escape rule (one Inc, 01 at the front of the carry): w^n 01 w^m r → w^(n+1) 00001 w^0 0011 w^(m-2) r (m ≥ 2).

Halting trigger (closure.py): a glued escape followed by any 0011… digit halts at once; so does m = 1 followed by 001011.

line E1 / F0 / start reach F entries (Inc no.) escape contexts twin verdict
285 0RF / 1RD / B 9.6e12 steps, 3.5M Incs 7: 127, 2355, 12417, 14321, 17041, 1386087, 1496411 00101^0 00101 ×4; 0011101^m ×2; 01^m ×1 421 (7/7, Inc -13) unclear (counter; no TC in reach)
421 0RF / 1RD / D 6.0e12 steps, 2.8M Incs 7: 140, 2368, 12430, 14334, 17054, 1386100, 1496424 00101^0 00101 ×4; 0011101^m ×2; 01^m ×1 285 (7/7, Inc +13) unclear (counter; no TC in reach)
713 0RF / 1RD / A 7.6e12 steps, 2.5M Incs 6: 129, 356, 1849, 1918, 4737, 159666 00101^0 00101 ×5; 01^m ×1 - unclear (counter; no TC in reach)

Reproduce

All Python 3, stdlib only, from reports/k42/:

python3 -B members.py 1 > members.tsv                 # the 40 lines
python3 -B validate.py 1e9                            # k42sim vs tools/sim on all 40 (4 s + 0.2 s each)
python3 -B d01rule.py; python3 -B closure.py           # escape rules, closure (about 1 min)
runs/run_all.sh 80; runs/stage2_batch.sh               # long runs (2 processes, nice 10, ulimit -v 6e6)
python3 -B analyze.py; python3 -B fpattern.py; python3 -B build_atlas.py

runs/L<line>.json has, for each F entry: - the exact step and Inc number; - the digit configuration at the start of that Inc and right after it; - whether mxdys's own table would have made the same move (never, for a holdout escape: that is the variant difference); - the tape around the head in gap form.

Stage 2 (2026-10-14): the 5^k acceleration, and the verdict

In plain words

We ported mxdys's 5^k-Inc acceleration (RIncs from Sk1like_TC_v2.v) to Python and made it exact for all 16 variants: anything the shared core table does not cover is handed to the real machine.

It is exact and it finds his cycles. - From each line's first F entry it lands on stage 1's final configuration digit for digit, 2.4-4.6 million Incs later, on all 40 lines, with all 327 F entries in between. - On his two proved variants it finds his translated cycles with his exact periods: 669,180 Incs (Sk1like_TC_v1) and 518 Incs after 1.73e10 Incs (Sk1like_TC_v2).

Every line ran to 10^139-10^153 Incs in 40 s, then on to 10^169-10^194 Incs. mxdys's note on line 496 stops at a tape of about 10^64 cells. Nothing settled: - no line halted; - no line entered a translated cycle; - 261-443 escapes (F entries) per line, 13,228 in all.

The tape is a base-5 odometer, and that makes simulation hopeless. - The number of digits is log5(Incs), within 2. - The front holds huge numbers. The only exponents small enough to run down to 0 sit at the far end of the tape (the oldest digits) and in a few recurring "front gadgets" (classes B and G). - Halting needs an exponent of exactly 0 at an escape, so only those places matter. - The far end changes once per factor of 5 in Incs, and a digit dies there far more rarely still. Across the 40 continuations, which cover about 1,100 orders of magnitude of Incs in all, it happened once.

Verdict: (ii), a cryptid family. Whether a line halts depends on the outcome of an endless series of rare events at the tape's end. Each outcome is set by the residues of numbers inherited from the front, which have no pattern we can find.

Per the cryptid protocol: the exact rules are written below, the family is flagged, and the work stops here. There are no kills and no predicted halts. No family-proof route was found: the translated-cycle route is ruled out far beyond any reach that has produced a proof, and the digit language is not a regular invariant even for the proved variants.

What was built (stage 2; Python, stdlib only)

File What it does
accel.py The accelerated machine: mxdys's RIncs/Incs/Incss scheduler; the F-free part of his core table (core_rinc); and a TM oracle that runs one real Inc on a run-length tape built straight from the digits, so exponents of 10^190 cost nothing. validate and run modes.
calib.py Runs mxdys's proved variants from his start x0 and reports the front repeats (runs2/calib.json).
rules2.py Checks on the real machine that the context 00101 00101 w^m acts exactly like w w 01 w^m (runs2/rules2.json).
closure2.py Tests whether mxdys's digit language is closed under one Inc (runs2/closure2.json).
cont.py, endtrace.py, enddeaths.py, endglue.py Continue a run and trace the last 4 digits; count the deaths at the tape's end; run a glued death at the end on every variant (runs2/C*.json, runs2/E*.json, runs2/enddeaths.json, runs2/endglue.json).
analyze2.py, digitmap.py The per-line summary (runs2/summary.json, runs2/table.md) and the digit map at the escapes (runs2/digitmap.json).
runs2/A<line>.json Each 40 s run: checkpoints, every F event (Inc, depth, context, exponent m, next digit), the exact final configuration.

Validation and calibration

Exact reproduction (accel.py validate, all 40 lines). - Start: the configuration at the line's first F entry (stage 1, Inc 127-140). - Run: exactly as many Incs as stage 1 ran, in 1,048-1,844 accelerated macro steps. - Result: the same tape as stage 1's last configuration on all 40 lines, and the same F entries (327 in all). - Line 121 matches only once stage 1's Inc count is corrected (erratum below).

Core table against the machine. On the first 3,000 Incs after each line's first F entry, every Inc the F-free core table covers agrees with the machine: 119,885 of 119,885.

The second F context reduces to the first. One Inc from w^a 00101 00101 w^m r and from w^(a+2) 01 w^m r gives the same tape: - on all 16 variants; - at the front and behind a 00111 digit; - for random tails, m = 1-4 and a = 1-5; - 6,400 of 6,400 cases.

The third context, 0011101 w^m, is literally the tape 00111 01 w^m.

Calibration on mxdys's proved variants (calib.py, 30 s each, from his x0 = (1, 0011^27 00001^8 001)):

Variant His proof What our run finds
(1RF, 1RB), Sk1like_TC_v1 Inc_Sn 669179 = 669,180 Incs per cycle the first 4 digits and n repeat from Inc 7,423 to Inc 676,603: period 669,180
(0RF, 0RE), Sk1like_TC_v2 msteps' with T = 17,340,200,000, then T = 518 repeat from Inc 17,340,195,891 to Inc 17,340,196,409: period 518, onset 1.73e10
(0RF, 0RB), hlin-proved hlin certificate an escape about every 100 Incs; the tape stays at 3 digits (117,311 escapes in 1.2e7 Incs)

So the detector finds both of mxdys's cycles, with his exact periods.

Errata for stage 1. - Inc numbers. Stage 1 skipped Inc boundaries whose tape did not parse into mxdys's digits, so its Inc numbers are low: - by 2 or 11 on 26 lines, all of them before the first F entry, so differences and twin offsets are unaffected; - by 52 on line 121, 50 of them after its first F entry. - mxdys's cycle length. His Inc_Sn 669179 runs 669,180 Incs, so the cycle is 669,180 Incs, not 669,179. Stage 1's own measurement, 1,338,360 Incs = 2 × 669,180, was right.

The rules (cryptid protocol: written out)

1. Configuration (at the start of an Inc, core naming):

0^inf  D>  w^n  d1 w^m1  d2 w^m2  ...  dk w^mk  001 0^inf        (w = 0001, n >= 1)

Here d1..dk are mxdys's 25 digits (digits.MX). Rarely a digit falls outside them, such as class D's 000001 or a rewritten end of tape (below). Such cases are run on the machine itself.

2. Core (shared by all 16 variants; F is never entered). This is mxdys's RInc/Inc table of Sk1like_TC_v1.v and Sk1like_TC_v2.v with the rules that run through F removed (our port: mxinc.py; the F-free cut: accel.core_rinc). The digit cycle is

0011 -> 0011001 -> 001101 -> 00111 -> (carry into the next digit) -> 00101 -> 0011

Each digit's exponent loses 2 per cycle and gains what the next digit hands back. Exponent-0 merges follow his table.

3. Acceleration (all variants). Suppose d1..dk are all cycle digits (00101 0011 0011001 001101 00111) with m_j >= 2·5^(k-j). Then 5^k Incs take

n -> n + 5^(k-1) + 5^k
m_j -> m_j - 2·5^(k-j) + 5^(k-j-1)     (j < k)
m_k -> m_k - 2 + dn

Meanwhile the rest of the tape receives exactly one carry, which must return Tp0 with dn. This is RIncs_spec in Sk1like_TC_v2.v. Its proof only uses passes over the five cycle digits, which never reach state E or F, so it holds for every (E1, F0).

4. Escape: the only rule that depends on the variant. F is entered exactly when the carry meets a 01. Each class has one rule: what one Inc does to w^n 01 w^m r for m >= 1 (m >= 2 in classes I and J). The ten rules are in "The ten escape rules" above. The other two F contexts reduce to this one: - 00101^0 00101^m acts as 01^m with 2 more w in front (checked above); - 0011101^m is 00111^0 01^m.

5. Halting. F reads a 1 only after a glued escape: m = 0, or m = 1 in classes I and J. Which next digits make it halt, at once or one carry later, is listed per class in (b). So a line can halt only if some escape is ever glued.

Results per line (40 s each)

"Smallest m" is the smallest exponent after the 01 at any F entry. The last column is the far end of the tape at the end of the run (the terminal 001^0 last).

class line (E1, F0) / start reached (Incs) digits F entries smallest m (at Inc) smallest m after Inc 1e12 last digits of the final tape
A 44 0RF, 0RA / D 1e150 213 349 6 (1e48) 6 (1e48), next 001 00111^268758318 00111^97127563 0011001^3036092 00101^46204 00111^3 001^0
A 208 0RF, 0RA / A 1e148 213 340 74673 (1e8) 7.0e8 (1e13), next 00111 00101^17156022 0011^2928793 00101^1243332 00111^46755 001101^171062 001^0
A 260 0RF, 1RB / B 1e151 218 324 38097 (1e46) 38097 (1e46), next 00111 00111^230010 001101^3114265 0011001^13756 00101^54215 0011^2020 001^0
A 404 0RF, 0RA / B 1e152 218 325 38097 (1e46) 38097 (1e46), next 00111 00001^223510 00001^3112965 00001^13497 00001^54162 00001^2020 001^0
A 494 1RF, 0LD / D 1e149 212 348 6 (1e48) 6 (1e48), next 001 00111^268762620 00111^97128423 00111^3036265 00111^46238 00111^3 001^0
A 703 1RF, 0LD / A 1e148 212 340 74673 (1e8) 7.0e8 (1e13), next 00111 00111^17155753 00111^2928740 00111^1243321 00111^46753 00111^171062 001^0
B 67 0RF, 1RC / A 1e149 214 415 934 (1e18) 934 (1e18), next 0011 00111^25663868 00111^15259110 00111^3940508 00111^609769 00111^6 001^0
B 263 0RF, 0LA / A 1e149 213 413 934 (1e18) 934 (1e18), next 0011 00111^25666118 00111^15259560 00111^3940598 00111^609787 00111^6 001^0
B 266 0RF, 0LA / B 1e148 210 442 1632 (1e36) 1632 (1e36), next 001101 00111^26612 00111^164960 00111^266095 00111^233303 00111^377 001^0
B 321 0RF, 1RC / D 1e149 213 443 1632 (1e36) 1632 (1e36), next 001101 0011^19896 0011^163617 0011^265826 00111^233249 00111^385 001^0
B 664 0RF, 1RC / B 1e146 209 440 1632 (1e36) 1632 (1e36), next 001101 00111^33362 00111^166310 00111^266365 00111^233357 00111^377 001^0
B 688 1RF, 1LB / D 1e147 212 442 1632 (1e36) 1632 (1e36), next 001101 00111^27635 0011^165165 0011^266136 0011001^233311 00001^386 001^0
C 100 1RF, 1RC / F 1e148 211 283 257383 (1e7) 2.5e9 (1e15), next 0011001 00111^2697630 00111^2562544 00111^732712 00111^214980 00111^154 001^0
C 335 1RF, 0LA / B 1e151 216 279 128451 (1e7) 1.7e10 (1e14), next 00101 00111^6678727 00111^45872955 00111^368448 00111^144546 00111^150 001^0
C 491 1RF, 1RC / B 1e150 215 280 1597 (1e7) 1.7e10 (1e14), next 00101 00111^6687185 00101^45874647 00101^368787 0011001^144613 0011001^150 001^0
C 496 1RF, 1RC / D 1e149 214 280 1597 (1e7) 1.7e10 (1e14), next 00101 001101^6689477 0011001^45875104 00101^368879 0011^144632 0011001^158 001^0
D 306 1RF, 1RE / B 1e149 212 310 18 (1e7) 1.2e7 (1e15), next 00111 00111^3353838080 00111^8079062 00111^1386309 00111^170255 00111^5361 001^0
D 361 1RF, 1RE / D 1e150 211 280 18 (1e7) 1.2e7 (1e15), next 00111 00111^7563812 00111^1283259 00111^149645 00111^168 00111^7 001^0
D 413 1RF, 1RE / A 1e150 215 305 6029 (1e8) 11247 (1e14), next 00111 00111^1268974557 00111^136118707 00111^9568954 00111^178998 00111^63 001^0
D 420 1RF, 0RC / A 1e151 217 305 6029 (1e8) 11247 (1e14), next 00111 00001^1268972307 00001^136118257 00001^9568864 00001^178980 00001^64 001^0
D 587 1RF, 0RC / D 1e148 211 277 18 (1e7) 1.2e7 (1e15), next 00111 00111^7575062 00111^1285509 00111^150095 00111^258 00111^7 001^0
D 673 1RF, 0RC / B 1e149 213 312 18 (1e7) 1.2e7 (1e15), next 00111 0011001^3353836779 0011001^8078801 00111^1386257 001101^170245 00001^5362 001^0
E 407 1RF, 0RE / D 1e152 217 262 1733 (1e7) 2.6e10 (1e12), next 001101 0011001^5738546 0011001^45684918 00111^330841 0011001^137027 0011001^9 001^0
E 571 1RF, 0RE / B 1e151 216 261 1733 (1e7) 2.6e10 (1e12), next 001101 0011^5745437 00111^45686297 001101^331116 00111^137083 0011^2 001^0
E 578 1RF, 0RE / A 1e147 210 282 257383 (1e7) 2.5e9 (1e15), next 0011001 00111^2702130 00111^2563444 00111^732892 00111^215016 00111^154 001^0
F 92 0RF, 0LC / A 1e146 209 298 129189 (1e7) 2.8e7 (1e61), next 00111 00101^6173994 00101^4713978 0011^5303719 00111^116326 0011^8 001^0
F 129 0RF, 0LC / B 1e149 212 296 2638 (1e32) 2638 (1e32), next 0011001 00111^2990197631 00111^144048403 00111^110642802 00111^306759 00111^4535 001^0
F 411 0RF, 0LC / D 1e149 213 297 2638 (1e32) 2638 (1e32), next 0011001 00101^2990196904 00111^144048257 00101^110642774 0011^306753 001101^4543 001^0
G 435 0RF, 0LB / A 1e148 212 382 175023 (1e7) 2.4e10 (1e12), next 00111 0011^3653000 00101^3088717 00101^1142325 0011^106303 0011^447606 001^0
G 709 0RF, 0LB / B 1e147 210 394 47884 (1e19) 47884 (1e19), next 0011001 0011001^22992857 00101^5686108 0011^18147 0011001^55823 00111^1 001^0
G 718 0RF, 0LB / D 1e147 209 395 47884 (1e19) 47884 (1e19), next 0011001 00111^22991608 00111^5685857 00111^18097 00111^55814 00111^9 001^0
H 64 0RF, 1LB / B 1e139 197 344 136549 (1e8) 4.9e7 (1e125), next 00111 00111^3076368 0011^107855 00101^39660 00111^5183 00111^1 001^0
H 124 0RF, 1LB / D 1e139 200 343 136549 (1e8) 4.9e7 (1e125), next 00111 00111^3081993 0011^108980 00101^39885 00111^5228 00111^9 001^0
H 305 0RF, 1LB / A 1e145 207 374 2171 (1e12) 2171 (1e12), next 00111 00111^140959207 00111^7072852 00111^7309697 00111^421358 00111^521 001^0
I 86 0RF, 0RD / A 1e153 220 325 19059 (1e7) 107980 (1e35), next 001101 00111^506049189 00101^78540941 0011001^7455927 001101^103565 001101^15512 001^0
I 121 0RF, 0RD / B 1e153 219 305 130187 (1e7) 3.0e10 (1e13), next 00111 001101^377777455 0011^140058078 001101^143890 0011^881411 001101^11295 001^0
I 405 0RF, 0RD / D 1e150 216 317 77368 (1e7) 107980 (1e32), next 001101 00001^40478389 00001^6194614 00001^84247 00001^10554 00001^7 001^0
J 285 0RF, 1RD / B 1e146 209 266 350288 (1e13) 350288 (1e13), next 00111 00111^101153008 00111^1205320 00111^117751 00111^1191 00111^0 001^0
J 421 0RF, 1RD / D 1e146 209 268 350288 (1e13) 350288 (1e13), next 00111 00111^101149633 00111^1204645 00111^117616 00111^1164 00111^8 001^0
J 713 0RF, 1RD / A 1e147 209 287 68 (1e9) 4.4e10 (1e27), next 00101 00111^1267135 00111^2199057 00111^99301 00111^215 00111^71 001^0

What the table shows: - No halts, and no translated cycle. Exact repeats of n and the first 4 digits did occur on lines 64, 124 (1 each), 709, 718 (10 each) and the 6 class-B lines 67, 263, 266, 321, 664, 688 (50 each). Each is a short "front gadget" re-forming after the front resets: for example n=1 | 0011^3 00001^91 0011^1630 001101^0 … on line 67, at Incs 3.9e8, 6.2e9 and 2.1e24. The intervals grow, so this is not a cycle. The digits behind the gadget differ each time. - Escapes are mostly at the front (70%), with m growing with the scale. - The small m values come from two places: - recurring front gadgets in class B: m = 934 (lines 67, 263) and 1632 (266, 321, 664, 688). These come back with the same value again and again; line 67 has m = 1632 at Incs 1e8.6, 1e9.8, 1e24.3, 1e38.5, 1e68.4 and 1e92.0. Class G's smallest value, 47,884 (lines 709, 718), is a single escape deeper in the tape at Inc 1e19; - the tape's far end: m = 6 on lines 44 and 494 at Inc 1e48, an escape 01^6 001 against the terminal.

Where a halt could still come from: the far end of the tape

New digits are made at the front, so the oldest digits sit at the far end. Each far-end digit changes about once each time a carry runs the whole tape, and a whole-tape carry comes once per factor of 5 in Incs. Here is line 285 (class J) traced from Inc 1e6 to 1e188 (endtrace.py, cont.py; the last 4 digits, terminal last):

Inc digits far end of the tape
1e6.5 10 00101^154822 00101^8606 0011^1 001
1e40.6 58 001101^145786 00111^6798 00111^0 001
1e81.4 116 0011^134984 0011^4638 00001^1 001
1e122.6 176 00001^124096 00001^2460 00001^1 001
1e166.1 237 0011^111792 00101^0 0011001^0 001: the second-to-last digit has run out
1e166.1 236 0011^1175519 0011^111792 001^0 001: merged away (no escape); the next oldest digit moves up
1e188 269 00111^1174270 00111^111792 001

The pattern holds on every line we traced: - the last digit's exponent barely moves: it stays within 1-3 of a fixed value (0-1 on line 285, 3-4 on line 44 after its death at Inc 1e48, 447,605-447,606 on line 435); - the next digits lose a steady amount per digit added to the tape (about 37 and 187 on line 285), until one dies; - then an older digit, with a much larger exponent, moves up. Line 285: the 1,392 digit runs out at Inc 1e166 and the 111,792 digit moves up. Line 44: the 35 digit runs out at Inc 1e48 and the 50,750 digit moves up.

Each death is a single local event. Its outcome depends on the phases of the dying digit's neighbours at that moment, that is, on residues of numbers inherited from the front long ago.

Why simulation cannot settle it. The next digits at the far end lose only tens to hundreds per digit added to the tape, so a death there is separated from the next by tens to hundreds of orders of magnitude of Incs. Our runs saw 0 or 1 per line. A halt needs one specific outcome, out of an unbounded series of such events, whose inputs are residues of numbers with hundreds of digits.

The digit map at the escapes

At each escape the counter hands the escape rule two values: the exponent m and the next digit (digitmap.py). - Next digit. Over all 13,228 escapes, all five phases occur: 0011 2,114, 0011001 1,328, 001101 5,651, 00111 2,789, 00101 1,344, other 2. - No periodic tail. On no line is the second half of the next-digit sequence periodic, nor that of m mod 5. Line 44's first 90 escapes, coded a-e for the phases in the order above:

bbcddaedddccaadaacaacddbbdddeeecdaabaacccccdaacdacbbcdddddacddaacdedabbccbbccbbacecddaacee

Is the digit language a regular invariant? No

If one Inc mapped every tape of mxdys's language into the language without halting, the language itself would prove nonhalting. It does not, for any variant. We ran one Inc from 2,000 random tapes of the language per variant (exponents 0-3, closure2.py):

Variant(s) halt leave the language
10 holdout classes (A-H) 3-4 71-150
classes I and J 31 80-99
mxdys's proved (1RF, 1RB) and (0RF, 0RE) 3 73-133

The proved variants fail too, so the reachable tapes are a thin subset of the language. A regular invariant would have to track which phases can meet at the far end, which is the arithmetic above. No upstream decider closes any of the 16 holdout variants, and the critic's hlin run at the proving configuration was 0 of 8 (stage 1 (d)).

Verdict

Reproduce (stage 2)

From reports/k42/; each step is 2 processes, nice 10, ulimit -v 6e6:

python3 -B accel.py validate 44 64 ...        # exact reproduction of stage 1 (seconds per line)
python3 -B calib.py 30                         # mxdys's two cycles
python3 -B rules2.py 200 7; python3 -B closure2.py 2000 1; python3 -B endglue.py
runs2/run_all.sh 40                            # 40 s per line -> runs2/A<line>.json
runs2/cont_all.sh 30; python3 -B cont.py 285 60; python3 -B cont.py 713 60
python3 -B analyze2.py; python3 -B digitmap.py 44; python3 -B enddeaths.py; python3 -B build_atlas.py