tools/rebuild_pages.sh rebuilds the site within 5 minutes of a change; by hand: python3 -B tools/site.py.1RB0RA_1LC0LD_1LE1LD_0LB0RE_1RF0LA_---0RA
How we proved it never halts
#30's proof in a mirror, from a different start
#30 keeps a binary counter fed by a marker that bounces through a run of budget blocks. Each epoch begins by tidying a messy leftover in the counter, and #30's proof shows that the tidying costs only about the square root of the budget, so the budget never runs out mid-cleanup. This machine is #30's table seen in a mirror, with the state letters renamed. So its tape is #30's reversed: the counter is left of the head, and right of it come budget blocks 110 110 … 110, the 0 marker and used blocks 011 011 … 011.
What differs is the start. From the blank tape this machine acts like #30's table started in its fifth state, so it takes a different opening. Its first four epochs fall outside #30's proof, and in two of them the machine eats an untidy counter that simply happens not to halt. The fifth begins cleanly: at step 1,114 it is a tidy epoch start with budget 17.
From there 687 epochs are computed exactly, until the budget reaches 17,724 and the condition that #30's proof carries from epoch to epoch holds. After that, #30's argument carries it forever, so the missing table entry (#30's own, seen in the mirror) is never reached.
The Rocq proof keeps #30's development word for word, as a proof about #30's table. New are the 1,114-step opening from #30's fifth state, by verified simulation, the 687-epoch computation, and the check of #30's condition at its end. busycoq's mirror and renaming theorems then carry the result over to this machine.

About this picture
The standard picture (bbchallenge.org's Default view): each row is the whole tape at one step, time runs downward, and the head's path draws the pattern.
Claimed by someone else
We proved this machine locally, but our proof was still unsubmitted when we found it already covered upstream.
Submit completed proofs early. A local proof does not secure an upstream claim.
Upstream proof ↗ · Recorded timeline
What the timing evidence establishes
This describes upstream credit, not who first discovered the mathematics. The records do not establish adoption of our proof, first public push time, or whether an earlier submission would have secured credit.
Overview
In one sentence
BECv1 tm10 twin (E1 differs): spaced-digit counter eats a unary run; 7 rules validated, EatDigit open
Submitted mechanism The parent's table, from another start. Flip every direction (L↔R) and rename the states A, B, C, D, E, F to E, A, B, F, C, D, and you get the parent's table, all 12 entries. This is the only one of the 720 × 2 maps that does this. The machine starts in A, which is the parent's E, so it runs the parent's table from 0^inf E> 0^inf: a different orbit of the same epoch map. (submission/README.md, Mechanism)
- Upstream
- The blank-start machine never halts: PR_BEC.v.TM1 ↗. We also have a local proof. This upstream addition is separate from our merged submissions; adoption credit is not established.
- Rocq proof
- check_kill PASS · first Oct 11 00:081,790 lines · 90 KB .v · compile 17.3 s · coqchk pass · 0 axioms · PASS Oct 11 00:08 · from #30· the .v file
- Automatic review
- 6 of 6 checks passtemplate: #30's kill file (kill 15) (twin: parent kill's .v) · details in Proof →
- Class
- Bell eats counterours: Bell eats counter (sheet) · ours adds: BECv1 tm10 with a broken carry (spaced-digit binary counter + unary marker) · med confidence
- On the list
- not on
BB6_holdouts_663.txt(line 381 of the previous list) · historical 740 line 381 - Derived from
1RB0RF_#30 Kill claimed1RC1RF_ 1LD0RE_ ---0LE_ 1LA0LE_ 0RA0LC
Your calls on file 4
- 2026-10-10 · closure_ctl
- Make the next stage a closure stage (exhaustive L4 closure check plus a CTL certificate attempt), hand-derive the stale-1 cascade rules first, or park? (Dennis: go with all recommendations (2026-10-10))
- 2026-10-10 · flush_lemma
- Fund one stage for the flush lemma (cap the digits right of the transient, bound the flush time by the counter length, show the unary outgrows it), or park? (auto-applied: Claude's recommendation, under Dennis's standing instruction 'do your recommendations and continuously orchestrate' (2026-10-10, while he was away). Override any time.)
- 2026-10-10 · struct_invariant
- Fund one stage for a hand-written structural invariant (at most one transient, plus the cascade rules, checked exhaustively), run only a bigger background CTL sweep, or park? (auto-applied: Claude's recommendation, under Dennis's standing instruction 'do your recommendations and continuously orchestrate' (2026-10-10, while he was at lunch). Override any time.)
- 2026-10-11 · superseded
- Keep #7 parked until #28's flush lemma is proved and then port it (value-form bound), fund a value-form flush stage here now, or park for good? (Superseded 2026-10-11: #7 is #30's table started in #30's state E; killed via a delta proof from kill #30 (check_kill PASS).)
Mechanism
What to check here: the pictures show the mechanism that the rule table describes.
How it works: 3 notes
- Tape: a counter on the left, then a long run of 110 blocks holding a 2-cell 00 marker.
- Each round: A sweeps right to the marker, moves it 1 block left, B sweeps back, counter +1 (same as BECv1 tm10).
- Unlike tm10 (E1), digits are 111110 blocks spread through the 110 run; the marker eats the lowest digit on arrival.
Figures for Checkpoint A
One row each time E is entered moving left. Follow one dark diagonal (the 00 marker) down the rows.
Left edge pinned. Follow the white streaks: where each one starts and where it ends.
More figures (3)Fig 3–5: Blaze, 10 million steps · bbchallenge default view, first 10,000 steps · Closure escape: an L4 word halts
Bell-shaped left edge; each horizontal band is an epoch, ending when a digit is eaten.
The site's view of the first rounds: sweeps and the marker.
Follow the head's zig-zag left through the counter: the cascade bounces, then F reads 0 at the bottom.
Rules (7/7 validated)exact tape rewrites the proof will formalize, each re-checked by simulation
| rule | from ⟶ to | cases | steps | checked |
|---|---|---|---|---|
| R1 A-sweep (=BECv1 HR1) | l A> (011)n r ⟶ l (010)n A> r | — | 5n | ✓60/60 |
| R2 B-sweep back (=HR3) | l (010)n <B r ⟶ l <B (011)n r | — | 3n | ✓60/60 |
| R3 marker step (=HR2) | l A> 011 00 011 r ⟶ l <B 00 011 011 r | — | 11 | ✓60/60 |
| R4 marker birth at right end (=HE2) | l 010 A> 0∞ ⟶ l <B 00 011 0∞ | — | 6 | ✓60/60 |
| L0 round, low digit 0->1 | l 0 <E 11 (011)a+1 00 (011)b 0∞ ⟶ l 1 <E 11 (011)a 00 (011)b+1 0∞ | any left context l | 8a+16 | ✓60/60 |
| OP overflow 2 5 X -> 2 4 5 X | 0∞ <E 110 111110 X (110)G+2^f 00 (110)M 0∞ ⟶ 0∞ <E 110 11110 111110 X (110)G 00 (110)M+2^f 0∞ | X = (110)^g1 111110 ... (110)^gk 111110, gi>=1, k>=0; f=k+1; G,M>=0 | — | ✓120/120 |
| OQ overflow 2 4 5 X -> 2 5 2 5 X | 0∞ <E 110 11110 111110 X (110)G+2^(f+2) 00 (110)M 0∞ ⟶ 0∞ <E 110 111110 110 111110 X (110)G 00 (110)M+2^(f+2) 0∞ | X as in OP; f=k+1; G,M>=0 | — | ✓120/120 |
Compressed historythe tape as 0∞ <E 110 W (110)G 00 (110)M 0∞ at 40 moments: where the rules are read off
| step | W (counter word; 2=110 4=11110 5=111110 3=1110 z3=extra 00 marker) | G | M |
|---|---|---|---|
| 20,053,019 | 5 2^3 5 2^7 5 | 549 | 87 |
| 20,088,414 | 4 5 2^3 5 2^7 5 | 541 | 95 |
| 20,224,880 | 5 2 5 2^3 5 2^7 5 | 509 | 127 |
| 20,290,067 | 4 5 2 5 2^3 5 2^7 5 | 493 | 143 |
| 20,530,341 | 5 2 5 2 5 2^3 5 2^7 5 | 429 | 207 |
| 20,638,216 | 4 5 2 5 2 5 2^3 5 2^7 5 | 397 | 239 |
| 20,987,802 | 5 2 5 2 5 2 5 2^3 5 2^7 5 | 269 | 367 |
| 21,113,469 | 4 5 2 5 2 5 2 5 2^3 5 2^7 5 | 205 | 431 |
| 21,342,621 | 5 2 5 2 5 z3 2^4 5 | 641 | 9 |
| 21,474,698 | 4 z3 5 2^10 5 | 615 | 35 |
| 21,474,724 | 4 2 5 2^10 5 | 615 | 35 |
| 21,592,226 | 5 2^3 5 2^10 5 | 591 | 59 |
| 21,630,405 | 4 5 2^3 5 2^10 5 | 583 | 67 |
| 21,778,007 | 5 2 5 2^3 5 2^10 5 | 551 | 99 |
| 21,848,762 | 4 5 2 5 2^3 5 2^10 5 | 535 | 115 |
| 22,111,308 | 5 2 5 2 5 2^3 5 2^10 5 | 471 | 179 |
| 22,230,319 | 4 5 2 5 2 5 2^3 5 2^10 5 | 439 | 211 |
| 22,624,449 | 5 2 5 2 5 2 5 2^3 5 2^10 5 | 311 | 339 |
| 22,772,388 | 4 5 2 5 2 5 2 5 2^3 5 2^10 5 | 247 | 403 |
| 23,036,592 | 5 2 5 2 5 2 5 2 5 2^3 5 | 6 | 656 |
| 23,084,955 | 4 5 2 z3 2^9 5 | 658 | 9 |
| 23,085,024 | 4 3 2^13 5 | 658 | 9 |
| 23,095,714 | 4 4 2^13 5 | 656 | 11 |
| 23,138,087 | 4 2 z3 4 2^14 5 | 648 | 19 |
| 23,138,134 | 4 3 2^2 4 2^14 5 | 648 | 19 |
| 23,282,700 | 5 2 5 2^17 5 | 620 | 47 |
| 23,322,927 | 4 5 2 5 2^17 5 | 612 | 55 |
| 23,478,721 | 5 2 5 2 5 2^17 5 | 580 | 87 |
| 23,553,572 | 4 5 2 5 2 5 2^17 5 | 564 | 103 |
| 23,832,502 | 5 2 5 2 5 2 5 2^17 5 | 500 | 167 |
| 23,959,705 | 4 5 2 5 2 5 2 5 2^17 5 | 468 | 199 |
| 24,386,603 | 5 2 5 2 5 2 5 2 5 2^17 5 | 340 | 327 |
| 24,550,926 | 4 5 2 5 2 5 2 5 2 5 2^17 5 | 276 | 391 |
| 24,880,544 | 5 2 5 2 5 2 5 2 5 2 5 2^17 5 | 20 | 647 |
| 25,203,475 | 4 5 2 z3 2^3 5 | 634 | 61 |
| 25,203,544 | 4 3 2^7 5 | 634 | 61 |
| 25,213,802 | 4 4 2^7 5 | 632 | 63 |
| 25,254,447 | 4 2 z3 4 2^8 5 | 624 | 71 |
| 25,254,494 | 4 3 2^2 4 2^8 5 | 624 | 71 |
| 25,393,012 | 5 2 5 2^11 5 | 596 | 99 |
W (counter word; 2=110 4=11110 5=111110 3=1110 z3=extra 00 marker)last 5 2 5 2^11 5Glast 596Mlast 99Template comparisonBECv1_6x2_solved.v tm10: partly applies · the nearest solved proof, what carries over, and the transitions that differ
| 0 | 1 | |
|---|---|---|
| A | 1RB | 0RA |
| B | 1LC | 0LD |
| C | 1LE | 1LD |
| D | 0LB | 0RE |
| E | 1RF | 0LAtpl 1LE |
| F | --- | 0RA |
differs from the template
- file
BECv1_6x2_solved.v(+BECv1.vSection)- module
tm10 / nonhalt10 (line 88), cert Build_BEC_cert_v1 B A E A ... 1 0 0- machine
1RB0RA_1LC0LD_1LE1LD_0LB0RE_1RF1LE_---0RA(1 transition apart)- diff
E1: 0LA (ours) vs 1LE (tm10); all other 11 transitions equal- note
- Simulated our TM on tm10's cert: 10/11 hypotheses hold (HR1-3, HE0-3, HL1,3,4,5; 25/25 each); HL2 = binary carry 1<E1 -> <E11 fails 0/25. So the unary half carries over verbatim; LeftBinaryCounter must become a spaced-digit counter (5-blocks + 110 filler).
Proof strategy & riskshow the formal proof will go · 3 risks to watch
Keep BECv1's unary half (HR1-3, HE0-3 as es-lemmas). Replace LeftBinaryCounter by an Inductive digit list (5-digit + filler gaps, 4-mode at the MSB), BECv7.v style; prove OP/OQ by ind over sweeps + carries, then a finite EatDigit case table; close with progress_nonhalt_cond on a shape predicate (any gaps G,M), as BECv7's canonical.
- ▲EatDigit is messy: it makes 3/4/6 blocks and a transient second 00 marker; the case table may be large.
- ▲Digit gaps evolve irregularly (3,7 -> 10 -> 17 -> 11 ...): proof must quantify over all gaps (shape invariant), not track values.
- ▲mxdys's BECv1/IndBECv1 search failed here; expect new counter lemmas (BECv7-size file, 30-50 KB).
Stats & provenance109 steps simulated · 7,783 cells · the status in full · files
- simulated
- 109 steps
- tape
- 7,783 cells · 4,191 nonzeros
- growth
- left edge ~t^0.36 (bell), right edge ~t^0.27 (+2 cells per epoch, ~135 epochs by 1e9)
- status now
- check_kill PASS, independently re-verified (status.json, 2026-10-11)
- observer's note
- Mechanism found, 7 rules validated (540/540 sims); not cryptid-like: 0 halts in 1560 random shapes + 251 perturbed real configs; EatDigit table open.
- files
- observe.json · notes.md · proof.md · how_proved.md · status.json · 1RB0RA_1LC0LD_1LE1LD_0LB0RE_1RF0LA_---0RA.v
Proof & checks
Kill 16 · Bell eats counter · the kill file 1RB0RA_1LC0LD_1LE1LD_0LB0RE_1RF0LA_---0RA.v: 1790 lines, 223 items · the package submission/
1What is provedCheck: the string, the theorem and every check_kill line are green, and the .v on disk is the one that was checked (same sha256).
1RB0RA_1LC0LD_1LE1LD_0LB0RE_1RF0LA_---0RAsha256 dfb0fb2c8b2ab8a0…
| ✓ | 1RB0RA_1LC0LD_1LE1LD_0LB0RE_1RF0LA_---0RA.v | dfb0fb2c8b2ab8a0… = checked |
| ✓ | submission/1RB0RA_1LC0LD_1LE1LD_0LB0RE_1RF0LA_---0RA.v | dfb0fb2c8b2ab8a0… = checked |
All 17 check_kill checks with their one-line results
| ✓ | args | 6x2 machine, framework module Individual62, mode nonhalt |
| ✓ | input | 92012 bytes, 1790 lines, 2028 sentences |
| ✓ | framework | HEAD 0940bb9cf434ba68f0c025dabfde45a219999973 == pin; no tracked changes under verify/ |
| ✓ | framework_build | 13 needed framework .vo files present and fresh, with native code no older than the .vo |
| ✓ | forbidden | none of 30 forbidden patterns occur (ground rule 1's words: anywhere; command words: outside comments and strings; comments never split a token) |
| ✓ | structure | 5 Require name(s) allowed; no top-level Variable/Context; no shadowing; Module/Section balanced |
| ✓ | tm_text | line 54: TM_from_str "1RB0RA_1LC0LD_1LE1LD_0LB0RE_1RF0LA_---0RA" == <tm> (41 bytes) |
| ✓ | theorem_text | line 1761: nonhalt : ~halts tm c0 |
| ✓ | coq | coqc 8.20.1 ([local working file] |
| ✓ | names | halts, c0, TM_from_str resolved inside Individual62 |
| ✓ | compile | compiled in 17.3s with all appended checks |
| ✓ | tm_rocq | BB6Kill.Candidate.tm = BusyCoq.Individual62.TM_from_str "1RB0RA_1LC0LD_1LE1LD_0LB0RE_1RF0LA_---0RA" by eq_refl (in-file and isolated) |
| ✓ | theorem_rocq | nonhalt : ~ halts (TM_from_str "1RB0RA_1LC0LD_1LE1LD_0LB0RE_1RF0LA_---0RA") c0 with absolute names (in-file and isolated) |
| ✓ | isolation | only stock proof plugins loaded; guard/positivity/universe checking on, definitional UIP off |
| ✓ | assumptions | 0 assumption(s), all in the baseline |
| ✓ | coqchk | coqchk -norec BB6Kill.Candidate ok (71.5s); its context summary lists nothing of the file's own |
| ✓ | integrity | input sha256 and framework HEAD/cleanliness identical before and after |
2Same machine as #30?Check: every row of the table is ✓ under the computed renaming (or the listed differences are what status.json's relation says), the two pictures show the same bands, and the trajectory numbers agree with the claimed relation (a twin keeps a fixed small offset; a sibling's gap grows).
status.json names #30 as the parent (1RB0RF_1RC1RF_1LD0RE_---0LE_1LA0LE_0RA0LC); label: “#7”; relation: “sibling of #30: #30's table mirrored and renamed (A,B,C,D,E,F -> E,A,B,F,C,D), started in #30's state E”. Everything below is computed from the two machine strings, not read from notes.
✓ Identical to #30's table under the renaming A→B, B→C, C→E, D→F, E→A, F→D (#30's state → this machine's), with L and R swapped (mirror image). This machine starts in #30's state E (#30 itself starts in A). The only such map.
| #30 | #30's row (read 0, read 1) | σ | predicted row: renamed by σ, L/R swapped | this machine's actual row | ||
|---|---|---|---|---|---|---|
| A | 1RB 0RF | → B | 1LC 0LD | 1LC 0LD | ✓ | start of #30 |
| B | 1RC 1RF | → C | 1LE 1LD | 1LE 1LD | ✓ | |
| C | 1LD 0RE | → E | 1RF 0LA | 1RF 0LA | ✓ | |
| D | --- 0LE | → F | --- 0RA | --- 0RA | ✓ | |
| E | 1LA 0LE | → A | 1RB 0RA | 1RB 0RA | ✓ | start of this machine |
| F | 0RA 0LC | → D | 0LB 0RE | 0LB 0RE | ✓ |
Rows aligned by σ: each of #30's states X sits next to this machine's state σ(X). ✓ = the actual row equals #30's row with every target state renamed by σ and every move mirrored; --- (halt) must stay ---. Searched: all 720 renamings × with/without mirror.
Same view, same settings on both sides. Look for the same band structure: this machine is #30's table mirrored, so expect #30's picture flipped left to right; it starts in #30's state E, not A, so the first steps differ; the numbers below read: different orbit, so expect the same kind of bands, not the same picture.
The macro behaviour, identical settings on both sides: each picture is its machine's own visited span stretched to 800 px, so compare the shape and order of the bands, not their absolute width. Speed mode samples one cell per column, so a one-cell shift can swap orange and white inside a band; compare band edges, not colours. Here this machine is #30's table mirrored, so expect #30's picture flipped left to right.


Trajectory numbers, from blank (C core)
○ different orbit: 0.82% wider at 1e9 (7,783 vs 7,720 cells; nonzeros 4,191 vs 4,642); not a fixed offset: the cell gap reaches +63
| steps | cells visited (hi − lo + 1) | nonzeros | ||||
|---|---|---|---|---|---|---|
| #30 | this | ratio (Δ) | #30 | this | ratio (Δ) | |
| 1e5 | 286 | 309 | 1.0804 (+23) | 157 | 117 | 0.7452 (-40) |
| 1e6 | 661 | 684 | 1.0348 (+23) | 411 | 285 | 0.6934 (-126) |
| 1e7 | 1,549 | 1,501 | 0.9690 (-48) | 1,007 | 627 | 0.6226 (-380) |
| 1e8 | 3,430 | 3,448 | 1.0052 (+18) | 1,734 | 1,490 | 0.8593 (-244) |
| 1e9 | 7,720 | 7,783 | 1.0082 (+63) | 4,642 | 4,191 | 0.9028 (-451) |
Each machine from blank in its own start state, sim.py C core. Trajectory twin = cells and nonzeros stay within 16 of the parent's at every checkpoint (a fixed offset from a different start, not a growing gap). Cached in img/vs-parent.json (2026-10-16 10:28 PDT); --force recomputes.
3Where it came fromCheck: the template is the one you expect, and the measured reuse (tiles, the reuse figure, diff) agrees with what the README says was kept and changed (quoted).
The file extends the kill for 1RB0RF_1RC1RF_1LD0RE_---0LE_1LA0LE_0RA0LC, which is adapted from busycoq's verify/FractalBEC.v, tm10 (it keeps tm10's marker bounce RInc). What changed: tm is this machine, and the parent's table is tm30, with the step notations on it. The parent's init, fin694, inv694, nonhalt_from and nonhalt are replaced by init7, fin7, inv7, nonhalt_from_c (the start made generic), nonhalt_E and the conjugacy (phi, perm7, nonhalt). All other code is the parent's, verbatim. The file has 1,790 lines, every lemma top level, and imports only Individual62 from busycoq. The second TM_from_str literal (tm30) is our checker's only warning.
Top two bars: non-blank lines after the TM string is replaced by <TM> and whitespace is collapsed. Bottom bar: our Definitions/Lemmas/… by name.
Template-only names: init, B694, Y694, fin694, inv694, nonhalt_from
Other references found:
- template vendor/busycoq/verify/FractalBEC.v (named in submission/proof.md line 5)
Side-by-side diff: template (1511 lines) vs ours (1548 lines), 82 lines differ; runs of identical lines and long template-only runs folded
| template | ours | ||
|---|---|---|---|
| 27 | From BusyCoq Require Import Individual62. | 48 | From BusyCoq Require Import Individual62. |
| 28 | Require Import Lia. | 49 | Require Import Lia. |
| ⋯ 2 identical lines (template 29–30, ours 50–51) | |||
| 31 | Require Import Arith. | 52 | Require Import Arith. |
| 33 | Definition tm := Eval compute in (TM_from_str "1RB0RF_1RC1RF_1LD0RE_---0LE_1LA0LE_0RA0LC"). | 54 | Definition tm := Eval compute in (TM_from_str "1RB0RA_1LC0LD_1LE1LD_0LB0RE_1RF0LA_---0RA"). |
| 35 | Notation "c --> c'" := (c -[ tm ]-> c') (at level 40). | ||
| 55 | Definition tm30 := Eval compute in (TM_from_str "1RB0RF_1RC1RF_1LD0RE_---0LE_1LA0LE_0RA0LC"). | ||
| 36 | Notation "c -->* c'" := (c -[ tm ]->* c') (at level 40). | 57 | Notation "c --> c'" := (c -[ tm30 ]-> c') (at level 40). |
| 37 | Notation "c -->+ c'" := (c -[ tm ]->+ c') (at level 40). | 58 | Notation "c -->* c'" := (c -[ tm30 ]->* c') (at level 40). |
| 59 | Notation "c -->+ c'" := (c -[ tm30 ]->+ c') (at level 40). | ||
| 39 | Open Scope list. | 61 | Open Scope list. |
| 41 | (* ===================================================================== *) | 63 | (* ===================================================================== *) |
| ⋯ 236 identical lines (template 42–321, ours 64–343) | |||
| 322 | - apply Rst. | 344 | - apply Rst. |
| 323 | Qed. | 345 | Qed. |
| 325 | (* The blank tape reaches L(7, 000 010001) at step 304, then the restart gives K(1,8,t2). *) | ||
| 347 | Ltac solve_initE := | ||
| 326 | Lemma init : c0 -->* K 8 t2. | ||
| 348 | change (E, tape0) with (cconfig_to_config (nil,nil,S0,E)); | ||
| 327 | Proof. unfold K. cbn. solve_init. Qed. | ||
| 349 | repeat rewrite Str_cons_def; | ||
| 350 | repeat rewrite <-Str_app_assoc; | ||
| 351 | repeat rewrite simpl_directed_head_l; | ||
| 352 | repeat rewrite simpl_directed_head_r; | ||
| 353 | repeat rewrite l_const0_app_nil; | ||
| 354 | repeat rewrite r_const0_app_nil; | ||
| 355 | repeat rewrite config_to_cconfig; | ||
| 356 | apply cconfig_evstep_dec_spec with (n:=1000000); | ||
| 357 | vm_compute; | ||
| 358 | reflexivity. | ||
| 360 | (* The blank tape in state E reaches L(16, 0001) at step 1059, then the restart gives K(1,17,t1) | ||
| 361 | at step 1114. On this machine's own tape (mirrored, renamed): 0^inf 1000 (100)^16 101 B> 0^inf, | ||
| 362 | then 0^inf 1 <E (110)^17 0 011 0^inf. *) | ||
| 363 | Lemma init7 : E;; tape0 -->* K 17 t1. | ||
| 364 | Proof. unfold K. cbn - [tape0]. solve_initE. Qed. | ||
| 329 | (* ===================================================================== *) | 366 | (* ===================================================================== *) |
| 330 | (* Section 5. A computable model (fuel), sound for LP / Phi. *) | 367 | (* Section 5. A computable model (fuel), sound for LP / Phi. *) |
| ⋯ 1198 identical lines (template 331–1657, ours 368–1694) | |||
| 1658 | apply (next_inv k N n c bsp sp r HG Hs3 Hn HN HL); rewrite ?(MO_zero _ _ _ Hz); unfold Xf, Pf; lia. | 1695 | apply (next_inv k N n c bsp sp r HG Hs3 Hn HN HL); rewrite ?(MO_zero _ _ _ Hz); unfold Xf, Pf; lia. |
| 1659 | Qed. | 1696 | Qed. |
| 1661 | (* ---------- the finite part: the computable model from K(1,8,t2) to epoch 694 ---------- *) | 1698 | (* ---------- the finite part: the computable model from K(1,17,t1), 687 epochs to N = 17724 ---------- *) |
| 1663 | Fixpoint orbit (f n N : nat) (y : word) : option (nat * word) := | 1700 | Fixpoint orbit (f n N : nat) (y : word) : option (nat * word) := |
| 1664 | match n with | 1701 | match n with |
| ⋯ 8 identical lines (template 1665–1673, ours 1702–1710) | |||
| 1674 | eapply evstep_trans; [apply progress_evstep, epoch_tm, (proj2 (model_sound f) _ _ _ _ _ E) | exact (IH _ _ _ _ H)]. | 1711 | eapply evstep_trans; [apply progress_evstep, epoch_tm, (proj2 (model_sound f) _ _ _ _ _ E) | exact (IH _ _ _ _ H)]. |
| 1675 | Qed. | 1712 | Qed. |
| 1677 | Definition B694 : blks := [(false, 17); (true, 1); (true, 1); (true, 1); (true, 1); | 1714 | Definition B692 : blks := [(false, 6); (false, 1); (true, 1); (true, 1); (false, 1); |
| 1678 | (false, 1); (false, 1); (false, 1); (true, 1); (false, 0)]. | 1715 | (true, 1); (false, 1); (false, 1); (true, 1); (false, 0)]. |
| 1679 | Definition Y694 : word := p11 7 (gw B694 0). | 1716 | Definition Y692 : word := p11 16 (gw B692 0). |
| 1681 | Lemma fin694 : orbit 100000 691 8 t2 = Some (17713, Y694). | 1718 | Lemma fin7 : orbit 100000 687 17 t1 = Some (17724, Y692). |
| 1682 | Proof. vm_compute. reflexivity. Qed. | 1719 | Proof. vm_compute. reflexivity. Qed. |
| 1684 | Lemma inv694 : Inv 10 17713 Y694. | 1721 | Lemma inv7 : Inv 10 17724 Y692. |
| 1685 | Proof. | 1722 | Proof. |
| 1686 | unfold Inv. split; [apply Nat.leb_le; vm_compute; reflexivity|]. split; [apply Nat.leb_le; vm_compute; reflexivity|]. | 1723 | unfold Inv. split; [apply Nat.leb_le; vm_compute; reflexivity|]. split; [apply Nat.leb_le; vm_compute; reflexivity|]. |
| 1687 | left. exists 7, B694, 0. split; [reflexivity|]. split; [lia|]. split; [cbn; lia|]. | 1724 | left. exists 16, B692, 0. split; [reflexivity|]. split; [lia|]. split; [cbn; lia|]. |
| 1688 | split; [|split]; [apply Nat.leb_le; vm_compute; reflexivity | apply Nat.leb_le; vm_compute; reflexivity |]. | 1725 | split; [|split]; [apply Nat.leb_le; vm_compute; reflexivity | apply Nat.leb_le; vm_compute; reflexivity |]. |
| 1689 | apply Nat.leb_le; vm_compute; reflexivity. | 1726 | apply Nat.leb_le; vm_compute; reflexivity. |
| 1690 | Qed. | 1727 | Qed. |
| 1692 | Lemma nonhalt_from N0 y0 (P : nat -> word -> Prop) : | 1729 | Lemma nonhalt_from_c c N0 y0 (P : nat -> word -> Prop) : |
| 1693 | c0 -->* K N0 y0 -> P N0 y0 -> | 1730 | c -->* K N0 y0 -> P N0 y0 -> |
| 1694 | (forall N y, P N y -> exists k y', Phi 1 N y k y' /\ P (S k) y') -> | 1731 | (forall N y, P N y -> exists k y', Phi 1 N y k y' /\ P (S k) y') -> |
| 1695 | ~ halts tm c0. | 1732 | ~ halts tm30 c. |
| 1696 | Proof. | 1733 | Proof. |
| 1697 | intros H0 HP0 Hstep. | 1734 | intros H0 HP0 Hstep. |
| 1698 | eapply multistep_nonhalt. { exact H0. } | 1735 | eapply multistep_nonhalt. { exact H0. } |
| 1699 | apply (progress_nonhalt_cond tm (nat * word) (N0, y0) (fun i => K (fst i) (snd i)) | 1736 | apply (progress_nonhalt_cond tm30 (nat * word) (N0, y0) (fun i => K (fst i) (snd i)) |
| 1700 | (fun i => P (fst i) (snd i))); [| exact HP0]. | 1737 | (fun i => P (fst i) (snd i))); [| exact HP0]. |
| 1701 | intros [N y] HP. cbn in HP. | 1738 | intros [N y] HP. cbn in HP. |
| 1702 | destruct (Hstep N y HP) as (k & y' & HPhi & HP'). | 1739 | destruct (Hstep N y HP) as (k & y' & HPhi & HP'). |
| 1703 | exists (S k, y'). split; [apply epoch_tm, HPhi | exact HP']. | 1740 | exists (S k, y'). split; [apply epoch_tm, HPhi | exact HP']. |
| 1704 | Qed. | 1741 | Qed. |
| 1743 | Lemma nonhalt_E : ~ halts tm30 (E;; tape0). | ||
| 1744 | Proof. | ||
| 1745 | apply (nonhalt_from_c (E;; tape0) 17724 Y692 (fun N y => exists k, Inv k N y)). | ||
| 1746 | - eapply evstep_trans; [exact init7 | exact (orbit_sound _ _ _ _ _ _ fin7)]. | ||
| 1747 | - exists 10. exact inv7. | ||
| 1748 | - intros N y [k Hk]. destruct (inv_step k N y Hk) as (kk & y' & H1 & H2). exists kk, y'. split; [exact H1 | exact H2]. | ||
| 1749 | Qed. | ||
| 1751 | Definition phi (q : Q) : Q := | ||
| 1752 | match q with A => E | B => A | C => B | D => F | E => C | F => D end. | ||
| 1754 | Lemma perm7 : Perm (flip tm) tm30 phi. | ||
| 1755 | Proof. | ||
| 1756 | split. | ||
| 1757 | - intros [] [] H; cbn in *; try discriminate; reflexivity. | ||
| 1758 | - intros [] [] s' d q' H; cbn in *; inversion H; subst; reflexivity. | ||
| 1759 | Qed. | ||
| 1706 | Lemma nonhalt: ~halts tm c0. | 1761 | Lemma nonhalt: ~halts tm c0. |
| 1707 | Proof. | 1762 | Proof. |
| 1708 | apply (nonhalt_from 17713 Y694 (fun N y => exists k, Inv k N y)). | ||
| 1763 | intros H. apply flip_halts in H. | ||
| 1709 | - eapply evstep_trans; [exact init | exact (orbit_sound _ _ _ _ _ _ fin694)]. | ||
| 1764 | change (halts (flip tm) (A;; tape0)) in H. | ||
| 1710 | - exists 10. exact inv694. | ||
| 1765 | exact (nonhalt_E (perm_halts _ _ _ _ _ perm7 H)). | ||
| 1711 | - intros N y [k Hk]. destruct (inv_step k N y Hk) as (kk & y' & H1 & H2). exists kk, y'. split; [exact H1 | exact H2]. | ||
| 1712 | Qed. | 1766 | Qed. |
| 1714 | (* | 1768 | (* |
| 1715 | 0 1 | ||
| 1769 | 1RB0RA_1LC0LD_1LE1LD_0LB0RE_1RF0LA_---0RA (= mirror of 1RB0RF_1RC1RF_1LD0RE_---0LE_1LA0LE_0RA0LC renamed by | ||
| 1716 | A 1RB 0RF | ||
| 1770 | phi: A->E, B->A, C->B, D->F, E->C, F->D; tm30 = the parent) | ||
| 1717 | B 1RC 1RF | ||
| 1772 | tm 0 1 tm30 0 1 | ||
| 1718 | C 1LD 0RE | ||
| 1773 | A 1RB 0RA A 1RB 0RF | ||
| 1719 | D --- 0LE | ||
| 1774 | B 1LC 0LD B 1RC 1RF | ||
| 1720 | E 1LA 0LE | ||
| 1775 | C 1LE 1LD C 1LD 0RE | ||
| 1721 | F 0RA 0LC | ||
| 1776 | D 0LB 0RE D --- 0LE | ||
| 1777 | E 1RF 0LA E 1LA 0LE | ||
| 1778 | F --- 0RA F 0RA 0LC | ||
| 1780 | tm c0 = 0^inf A> 0^inf <-> tm30 from 0^inf E> 0^inf (flip_halts, Perm (flip tm) tm30 phi, perm_halts) | ||
| 1782 | Parent family (tm30), unchanged from the kill for 1RB0RF_1RC1RF_1LD0RE_---0LE_1LA0LE_0RA0LC: | ||
| 1723 | hub K(a,b,X) = 0^inf (110)^a 0 (011)^b C> X 0^inf | 1783 | hub K(a,b,X) = 0^inf (110)^a 0 (011)^b C> X 0^inf |
| 1784 | record L(k,T) = 0^inf <A 101 (001)^k T 0^inf | ||
| 1724 | pre-record L'(k,T) = 0^inf E> 0 01 (001)^k T 0^inf (E0 = 1LA, then the restart) | 1785 | pre-record L'(k,T) = 0^inf E> 0 01 (001)^k T 0^inf (E0 = 1LA, then the restart) |
| 1725 | start c0 -->* K(1,8,010001) | ||
| 1786 | start (tm30) 0^inf E> 0^inf -->(1059) L(16, 0001) -->(55) K(1,17,1) | ||
| 1787 | on tm's tape 0^inf 1000 (100)^16 101 B> 0^inf (step 1059), 0^inf 1 <E (110)^17 0 011 0^inf (step 1114) | ||
| 1788 | finite part K(1,17,1) -->* K(1,17724,Y692) in 687 epochs (fin7), Inv 10 holds there (inv7), | ||
| 1789 | and inv_step carries the invariant to every later epoch. | ||
| 1726 | *) | 1790 | *) |
4Proof outlineCheck: the new items (green) carry the argument; the names read like the proof.md rules.
223 items in 1RB0RA_1LC0LD_1LE1LD_0LB0RE_1RF0LA_---0RA.v (1790 lines): 160 Lemma, 43 Definition, 12 Fixpoint, 7 Inductive, 1 Theorem. Tags against the template: identical = same name and same text once each file's own TM string is <TM> (marked "except the TM string" when that is the only difference); adapted = same name, different text; new = no item of that name in the template part.
| # | kind | name | statement (no proof body) | line | vs template |
|---|---|---|---|---|---|
| 1 | Definition | tm | Definition tm := Eval compute in (TM_from_str "1RB0RA_1LC0LD_1LE1LD_0LB0RE_1RF0LA_---0RA"). | L54 | identicalexcept the TM string |
| 2 | Definition | tm30 | Definition tm30 := Eval compute in (TM_from_str "1RB0RF_1RC1RF_1LD0RE_---0LE_1LA0LE_0RA0LC"). | L55 | new |
| 3 | Lemma | LP0 | Lemma LP0 l r : l <* <[0;1;1] {{C}}> [0] *> r -->+ l <{{A}} [1;0;0;1] *> r. | L69 | identical |
| 4 | Lemma | LP0z | Lemma LP0z l : l <* <[0;1;1] {{C}}> 0inf -->+ l <{{A}} [1;0;0;1] *> 0inf. | L72 | identical |
| 5 | Lemma | LP11 | Lemma LP11 l r : l <* <[0;1;1] {{C}}> [1;1;0] *> r -->+ l <{{A}} [1;0;1;0;0;0] *> r. | L76 | identical |
| 6 | Lemma | LPCr | Lemma LPCr l e r : l <* <[0;1;1] {{C}}> [1;0;1] *> [0;0;1]^^e *> [0;0;0] *> r -->+
l <* <[0;1;1;1;1;1] <* <[0;1;1]^^e <* <[0;1;1] {{C}}> r. | L80 | identical |
| 7 | Lemma | LPCl0 | Lemma LPCl0 l e r : l <* <[0;1;1;1;1;1] <* <[0;1;1]^^e <{{A}} [1;0;0] *> r -->+
l <{{A}} [1;0;0;0;0;1] *> [0;0;1]^^e *> [0;0;0] *> r. | L85 | identical |
| 8 | Lemma | LPCl1 | Lemma LPCl1 l e r : l <* <[0;1;1;1;1;1] <* <[0;1;1]^^e <{{A}} [1;0;1;0;0;0] *> r -->+
l <{{A}} [1;0;0;0;0;1] *> [0;0;1]^^(S e) *> [0;0;0] *> r. | L89 | identical |
| 9 | Lemma | LP5r | Lemma LP5r l e r : l <* <[0;1;1] {{C}}> [1;0;0;0;1] *> [0;0;1]^^e *> [0;0;0] *> r -->+
l <* <[0;1;1;1;1] <* <[0;1;1]^^(S e) <* <[0;1;1] {{C}}> r. | L94 | identical |
| 10 | Lemma | LP5l0 | Lemma LP5l0 l e r : l <* <[0;1;1;1;1] <* <[0;1;1]^^(S e) <{{A}} [1;0;0] *> r -->+
l <{{A}} [1;0;0;0;1] *> [0;0;1]^^(S e) *> [0;0;0] *> r. | L98 | identical |
| 11 | Lemma | LP5l1 | Lemma LP5l1 l e r : l <* <[0;1;1;1;1] <* <[0;1;1]^^(S e) <{{A}} [1;0;1;0;0;0] *> r -->+
l <{{A}} [1;0;0;0;1] *> [0;0;1]^^(S (S e)) *> [0;0;0] *> r. | L102 | identical |
| 12 | Lemma | LP6r | Lemma LP6r l e r : l <* <[0;1;1] {{C}}> [1;0;1;0;1] *> [0;0;1]^^e *> [0;0;0] *> r -->+
l <* <[0;1;1;1] <* <[1;1;0] <* [0] <* <[0;1;1]^^(S e) {{C}}> r. | L107 | identical |
| 13 | Lemma | W10 | Lemma W10 l r : l <* <[0;1;1;1] <{{E}} r -->+ l <{{A}} [1;0;0;0] *> r. | L112 | identical |
| 14 | Lemma | RP0 | Lemma RP0 l n r : l <* [0] <* <[0;1;1]^^(S n) <{{A}} [1;0;0] *> r -->+
l <* <[1;1;0] <* [0] <* <[0;1;1]^^(S n) {{C}}> r. | L116 | identical |
| 15 | Lemma | RP1 | Lemma RP1 l n r : l <* [0] <* <[0;1;1]^^(S n) <{{A}} [1;0;1;0;0;0] *> r -->+
l <* <[1;1;0] <* [0] <* <[0;1;1]^^(S (S n)) {{C}}> r. | L120 | identical |
| 16 | Lemma | E1r | Lemma E1r l a e r : l <* <[1;1;0]^^a <* [0] <* <[0;1;1] {{C}}> [0;0;1]^^(S e) *> [0;0;0] *> r -->+
l <* <[1;1;0]^^(S (S a)) <* [0] <* <[0;1;1]^^(S e) {{C}}> r. | L125 | identical |
| 17 | Lemma | E2l0 | Lemma E2l0 l a e r : l <* <[1;1;0]^^a <* [0] <* <[0;1;1;1;1;1] <* <[0;1;1]^^e <{{A}} [1;0;0] *> r -->+
l <{{E}} [0;1] *> [0;0;1]^^a *> [0;0;0;1;1] *> [0;0;1]^^e *> [0;0;0] *> r. | L129 | identical |
| 18 | Lemma | E2l1 | Lemma E2l1 l a e r : l <* <[1;1;0]^^a <* [0] <* <[0;1;1;1;1;1] <* <[0;1;1]^^e <{{A}} [1;0;1;0;0;0] *> r -->+
l <{{E}} [0;1] *> [0;0;1]^^a *> [0;0;0;1;1] *> [0;0;1]^^(S e) *> [0;0;0] *> r. | L133 | identical |
| 19 | Lemma | Et0 | Lemma Et0 l a : l <* <[1;1;0]^^a <* [0] <* <[0;1;1] {{C}}> 0inf -->+
l <{{E}} [0;1] *> [0;0;1]^^(S a) *> [0;0;0;1] *> 0inf. | L137 | identical |
| 20 | Lemma | Et1 | Lemma Et1 l a : l <* <[1;1;0]^^a <* [0] <* <[0;1;1] {{C}}> [1] *> 0inf -->+
l <{{E}} [0;1] *> [0;0;1]^^a *> [0;0;0;0;1;0;0;1;0;0;0;1] *> 0inf. | L141 | identical |
| 21 | Lemma | Et2 | Lemma Et2 l a : l <* <[1;1;0]^^a <* [0] <* <[0;1;1] {{C}}> [0;1;0;0;0;1] *> 0inf -->+
l <{{E}} [0;1] *> [0;0;1]^^a *> [0;0;0;1;0;0;0;0;1;0;0;0;1] *> 0inf. | L145 | identical |
| 22 | Lemma | Et3 | Lemma Et3 l a : l <* <[1;1;0]^^a <* [0] <* <[0;1;1] {{C}}> [1;1;0;0;0;1] *> 0inf -->+
l <* <[1;1;0]^^(S a) <* [0] <* <[0;1;1] {{C}}> [0;0;1] *> 0inf. | L149 | identical |
| 23 | Lemma | Rst | Lemma Rst k r : const 0 <{{E}} [0;1] *> [0;0;1]^^k *> [0;0;0] *> r -->+
const 0 <* <[1;1;0] <* [0] <* <[0;1;1]^^(S k) {{C}}> r. | L154 | identical |
| 24 | Lemma | LPT1 | Lemma LPT1 l : l <* <[0;1;1] {{C}}> [1] *> 0inf -->+ l <{{A}} [1;0;0;0;1;0;0;0;1] *> 0inf. | L159 | identical |
| 25 | Lemma | LPT2 | Lemma LPT2 l : l <* <[0;1;1] {{C}}> [1;0;0;1;0;0;0;1] *> 0inf -->+
l <{{A}} [1;0;0] *> [0;1;0;0;1;0;0;0;0;1;0;0;1;0;0;0;1] *> 0inf. | L162 | identical |
| 26 | Lemma | LPT3 | Lemma LPT3 l : l <* <[0;1;1] {{C}}> [1;0;1;1;0;0;0;1] *> 0inf -->+
l <{{A}} [1;0;0] *> [0;0;0;1;0;0;0;0;1;0;0;0;1] *> 0inf. | L166 | identical |
| 27 | Lemma | LPT4 | Lemma LPT4 l : l <* <[0;1;1] {{C}}> [1;0;0;0;0;1;0;0;0;1] *> 0inf -->+
l <{{A}} [1;0;0] *> [0;1;0;0;0;0;1;0;0;1;0;0;0;1] *> 0inf. | L170 | identical |
| 28 | Lemma | LPT5 | Lemma LPT5 l : l <* <[0;1;1] {{C}}> [1;0;0;1;0;0;0;0;1;0;0;0;1] *> 0inf -->+
l <{{A}} [1;0;0] *> [0;1;0;0;1;0;0;0;1;0;0;0;0;1;0;0;0;1] *> 0inf. | L174 | identical |
| 29 | Lemma | LPT6 | Lemma LPT6 l : l <* <[0;1;1] {{C}}> [1;0;0;1;0;0;1;0;0;0;1] *> 0inf -->+
l <{{A}} [1;0;0] *> [0;1;0;0;1;0;0;1;0;0;0;1;0;0;0;0;1;0;0;0;1] *> 0inf. | L178 | identical |
| 30 | Lemma | z3 | Lemma z3 : [0;0;0] *> const 0 = const 0. | L182 | identical |
| 31 | Inductive | word | Inductive word : Type := | t0 | t1 | t2 | t3 | blk (d : bool) (e : nat) (w : word) | p11 (x : nat) (w : word) | p01 (x : nat) (w : word) | p00 (w : word) … +1 lines | L191 | identical |
| 32 | Definition | dsym | Definition dsym (d : bool) : Sym := if d then S1 else S0. | L199 | identical |
| 33 | Fixpoint | enc | Fixpoint enc (w : word) : side := match w with | t0 => const 0 | t1 => [1] *> const 0 | t2 => [0;1;0;0;0;1] *> const 0 | t3 => [1;1;0;0;0;1] *> const 0 … +6 lines | L201 | identical |
| 34 | Definition | addb | Definition addb (e : nat) (d : bool) : nat := if d then S e else e. | L214 | identical |
| 35 | Inductive | LP | Inductive LP : word -> word -> bool -> Prop := | LP_a e w : LP (blk false e w) (blk true e w) false | LP_b e w w' d : LP w w' d -> LP (blk true e w) (blk false (addb e d) w') false | LP_t0 : LP t0 t1 false | LP_t1 : LP t1 t2 false | LP_t2 : LP t2 t3 false … +22 lines | L219 | identical |
| 36 | Definition | outp | Definition outp (d : bool) (r : side) : side := if d then [1;0;1;0;0;0] *> r else [1;0;0] *> r. | L252 | identical |
| 37 | Definition | LPspec | Definition LPspec (w w' : word) (d : bool) : Prop :=
forall l, l <* <[0;1;1] {{C}}> enc w -->+ l <{{A}} outp d (enc w'). | L255 | identical |
| 38 | Definition | Phispec | Definition Phispec (a b : nat) (w : word) (k : nat) (y : word) : Prop :=
forall l, l <* <[1;1;0]^^a <* [0] <* <[0;1;1]^^b {{C}}> enc w -->+
l <{{E}} [0;1] *> [0;0;1]^^k *> [0;0;0] *> enc y. | L258 | identical |
| 39 | Lemma | enc_a0 | Lemma enc_a0 : enc (blk false 0 t0) = [0;0;1] *> const 0. | L262 | identical |
| 40 | Theorem | sound | Theorem sound : (forall w w' d, LP w w' d -> LPspec w w' d) /\ (forall a b w k y, Phi a b w k y -> Phispec a b w k y). | L269 | identical |
| 41 | Definition | K | Definition K (N : nat) (y : word) : Q * tape :=
const 0 <* <[1;1;0] <* [0] <* <[0;1;1]^^N {{C}}> enc y. | L337 | identical |
| 42 | Lemma | epoch_tm | Lemma epoch_tm N y k y' : Phi 1 N y k y' -> K N y -->+ K (S k) y'. | L340 | identical |
| 43 | Lemma | init7 | Lemma init7 : E;; tape0 -->* K 17 t1. | L363 | new |
| 44 | Fixpoint | lpf | Fixpoint lpf (n : nat) (w : word) {struct n} : option (word * bool) :=
match n with
| O => None
| S n' =>
match w with
| t0 => Some (t1, false)
… +58 lines | L370 | identical |
| 45 | Lemma | enc_p10t0 | Lemma enc_p10t0 : enc (p10 t0) = enc t1. | L435 | identical |
| 46 | Lemma | enc_p10t1 | Lemma enc_p10t1 : enc (p10 t1) = enc (blk true 0 t0). | L438 | identical |
| 47 | Lemma | enc_p00t0 | Lemma enc_p00t0 : enc (p00 t0) = enc t0. | L441 | identical |
| 48 | Lemma | enc_p00t1 | Lemma enc_p00t1 : enc (p00 t1) = enc (blk false 0 t0). | L444 | identical |
| 49 | Lemma | enc_p10p00t0 | Lemma enc_p10p00t0 : enc (p10 (p00 t0)) = enc t1. | L447 | identical |
| 50 | Lemma | enc_p10p00t1 | Lemma enc_p10p00t1 : enc (p10 (p00 t1)) = enc (p10 (blk false 0 t0)). | L450 | identical |
| 51 | Lemma | model_sound | Lemma model_sound n : (forall w w' d, lpf n w = Some (w', d) -> LP w w' d) /\ (forall a b w k y, phif n a b w = Some (k, y) -> Phi a b w k y). | L453 | identical |
| 52 | Definition | tl_of | Definition tl_of (s : nat) : word := match s with O => t0 | 1 => t1 | 2 => t2 | _ => t3 end. | L503 | identical |
| 53 | Fixpoint | gw | Fixpoint gw (bs : list (bool * nat)) (s : nat) : word := match bs with [] => tl_of s | (d, e) :: bs => blk d e (gw bs s) end. | L506 | identical |
| 54 | Fixpoint | ginc | Fixpoint ginc (bs : list (bool * nat)) (s : nat) : list (bool * nat) * nat * bool :=
match bs with
| [] => match s with O => ([], 1, false) | 1 => ([], 2, false) | 2 => ([], 3, false)
| _ => ([(false, 0)], O, true) end
| (false, e) :: bs => ((true, e) :: bs, s, false)
| (true, e) :: bs => let '(bs', s', d) := ginc bs s in ((false, addb e d) :: bs', s', false)
… +1 lines | L509 | identical |
| 55 | Fixpoint | gval | Fixpoint gval (bs : list (bool * nat)) (s : nat) : nat := match bs with [] => 4 + s | (d, _) :: bs => (if d then 1 else 0) + 2 * gval bs s end. | L517 | identical |
| 56 | Fixpoint | gsum | Fixpoint gsum (bs : list (bool * nat)) : nat := match bs with [] => O | (_, e) :: bs => e + gsum bs end. | L520 | identical |
| 57 | Lemma | ginc_LP | Lemma ginc_LP bs s : s <= 3 -> forall bs' s' d, ginc bs s = (bs', s', d) -> LP (gw bs s) (gw bs' s') d. | L523 | identical |
| 58 | Lemma | ginc_val | Lemma ginc_val bs s : s <= 3 -> forall bs' s' d, ginc bs s = (bs', s', d) -> gval bs' s' = S (gval bs s) /\ s' <= 3 /\ gsum bs' + length bs + (if d then 1 else 0) = gsum bs + length bs' /\ (d = true -> bs = []) /\ length bs <= length bs'. | L531 | identical |
| 59 | Lemma | gval_ge | Lemma gval_ge bs s : 4 <= gval bs s. | L544 | identical |
| 60 | Lemma | gval_len | Lemma gval_len bs s : length bs <= gval bs s. | L547 | identical |
| 61 | Definition | Psi | Definition Psi (bs : list (bool * nat)) (s b : nat) : nat := gval bs s + b + gsum bs - length bs. | L553 | identical |
| 62 | Definition | blks | Definition blks := list (bool * nat). | L561 | identical |
| 63 | Definition | b2n | Definition b2n (d : bool) : nat := if d then 1 else 0. | L562 | identical |
| 64 | Lemma | addb_b2n | Lemma addb_b2n e d : addb e d = e + b2n d. | L563 | identical |
| 65 | Inductive | GRes | Inductive GRes : Type := RE2 (k x : nat) (bs : blks) (s : nat) | RSp (k : nat) (y : word). | L566 | identical |
| 66 | Definition | rk | Definition rk (r : GRes) : nat := match r with RE2 k _ _ _ => k | RSp k _ => k end. | L567 | identical |
| 67 | Definition | ry | Definition ry (r : GRes) : word := match r with RE2 _ x bs s => p11 x (gw bs s) | RSp _ y => y end. | L568 | identical |
| 68 | Inductive | GPhi | Inductive GPhi : nat -> nat -> blks -> nat -> GRes -> Prop :=
| GB a b bs s bs' s' d r : ginc bs s = (bs', s', d) -> GPhi (S a) (addb (S b) d) bs' s' r ->
GPhi a (S (S b)) bs s r
| GE1 a e bs s r : GPhi (S (S a)) (S e) bs s r -> GPhi a 1 ((false, e) :: bs) s r
| GE2 a e bs s bs' s' d : ginc bs s = (bs', s', d) ->
GPhi a 1 ((true, e) :: bs) s (RE2 a (addb e d) bs' s')
… +4 lines | L571 | identical |
| 69 | Lemma | ginc_s3 | Lemma ginc_s3 bs s bs' s' d : s <= 3 -> ginc bs s = (bs', s', d) -> s' <= 3. | L582 | identical |
| 70 | Lemma | GPhi_sound | Lemma GPhi_sound a b bs s r : GPhi a b bs s r -> s <= 3 -> Phi a b (gw bs s) (rk r) (ry r). | L585 | identical |
| 71 | Lemma | GPhi_s3 | Lemma GPhi_s3 a b bs s r : GPhi a b bs s r -> s <= 3 -> match r with RE2 _ _ _ s2 => s2 <= 3 | RSp _ y => y = t1 \/ y = p01 1 t1 \/ y = p10 (p00 t2) end. | L597 | identical |
| 72 | Lemma | GPhi_rk | Lemma GPhi_rk a b bs s r : GPhi a b bs s r -> a + b <= S (rk r). | L604 | identical |
| 73 | Lemma | gcount | Lemma gcount : forall P bs s a b, s <= 3 -> 1 <= b -> Psi bs s b <= P -> exists r, GPhi a b bs s r. | L607 | identical |
| 74 | Inductive | LPs | Inductive LPs : word -> word -> nat -> nat -> Prop := | LPs_eq w w' : enc w = enc w' -> LPs w w' 0 0 | LPs_step w w1 w2 d n c : LP w w1 d -> LPs w1 w2 n c -> LPs w w2 (S n) (c + b2n d). | L640 | identical |
| 75 | Lemma | LPs_step' | Lemma LPs_step' w w1 w2 d n c c' : LP w w1 d -> LPs w1 w2 n c -> c' = c + b2n d -> LPs w w2 (S n) c'. | L644 | identical |
| 76 | Lemma | LPs_eql | Lemma LPs_eql w0 w1 w2 n c : enc w0 = enc w1 -> LPs w1 w2 n c -> LPs w0 w2 n c. | L647 | identical |
| 77 | Lemma | LPs_trans | Lemma LPs_trans w1 w2 w3 n c n' c' : LPs w1 w2 n c -> LPs w2 w3 n' c' -> LPs w1 w3 (n + n') (c + c'). | L654 | identical |
| 78 | Lemma | LPs_cn | Lemma LPs_cn w w' n c : LPs w w' n c -> c <= n. | L661 | identical |
| 79 | Lemma | LPs_hub | Lemma LPs_hub w w' n c : LPs w w' n c -> forall a B k y, n + 2 <= B + c -> Phi (a + n) (B + c - n) w' k y -> Phi a B w k y. | L664 | identical |
| 80 | Lemma | LPs_nest | Lemma LPs_nest y y' n c : LPs y y' n c -> forall k, LPs (blk false k y) (blk false (k + c) y') (2 * n) 0. | L678 | identical |
| 81 | Inductive | DigE | Inductive DigE : word -> nat -> nat -> blks -> nat -> Prop := | DE0 : DigE (p10 t0) 0 0 [] 1 | DE1 : DigE (p10 t1) 0 0 [(true, 0)] 0 | DE2 : DigE (p10 t2) 13 5 [(false, 0)] 2 | DE3 : DigE (p10 t3) 7 2 [(false, 0)] 2 | DEs0 : DigE t1 0 0 [] 1 … +2 lines | L688 | identical |
| 82 | Lemma | DigE_sound | Lemma DigE_sound y n c bs s : DigE y n c bs s -> LPs y (gw bs s) n c. | L700 | identical |
| 83 | Lemma | DigE_props | Lemma DigE_props y n c bs s : DigE y n c bs s -> n <= 13 /\ c <= 5 /\ length bs <= 1 /\ s <= 3 /\ Forall (fun e => e = 0) (map snd bs). | L703 | identical |
| 84 | Inductive | DigP | Inductive DigP : nat -> blks -> nat -> nat -> nat -> blks -> nat -> Prop :=
| DP x bs s n c bsp sp : DigT bs s n c bsp sp -> DigP x bs s (2 * x + 2 + n) (S x + c) bsp sp
with DigT : blks -> nat -> nat -> nat -> blks -> nat -> Prop :=
| DTa e bs s bs' s' d n c bsp sp : ginc bs s = (bs', s', d) ->
DigP (S (addb e d)) bs' s' n c bsp sp -> DigT ((false, e) :: bs) s (S (S n)) c bsp sp
| DTb e bs s k x bs2 s2 n c bsp sp : GPhi 1 (S e) bs s (RE2 k x bs2 s2) ->
… +4 lines | L710 | identical |
| 85 | Lemma | prefix_LPs | Lemma prefix_LPs x w : LPs (p11 x w) (p10 w) (2 * x + 2) (S x). | L725 | identical |
| 86 | Lemma | Dig_sound | Lemma Dig_sound : (forall x bs s n c bsp sp, DigP x bs s n c bsp sp -> s <= 3 -> LPs (p11 x (gw bs s)) (gw bsp sp) n c) /\ (forall bs s n c bsp sp, DigT bs s n c bsp sp -> s <= 3 -> LPs (p10 (gw bs s)) (gw bsp sp) n c). | L733 | identical |
| 87 | Lemma | Dig_sp | Lemma Dig_sp : (forall x bs s n c bsp sp, DigP x bs s n c bsp sp -> sp <= 3) /\ (forall bs s n c bsp sp, DigT bs s n c bsp sp -> sp <= 3). | L753 | identical |
| 88 | Lemma | epoch_ord | Lemma epoch_ord N x bs s n c bsp sp r : s <= 3 -> DigP x bs s n c bsp sp -> n + 2 <= N -> GPhi (1 + n) (N + c - n) bsp sp r -> Phi 1 N (p11 x (gw bs s)) (rk r) (ry r). | L761 | identical |
| 89 | Lemma | epoch_spec | Lemma epoch_spec N y n c bsp sp r : DigE y n c bsp sp -> n + 2 <= N -> GPhi (1 + n) (N + c - n) bsp sp r -> Phi 1 N y (rk r) (ry r). | L769 | identical |
| 90 | Definition | exs | Definition exs (bs : blks) : list nat := map snd bs. | L781 | identical |
| 91 | Fixpoint | bumpl | Fixpoint bumpl (l : list nat) : list nat := match l with [] => [] | e :: l' => match l' with [] => [S e] | _ => e :: bumpl l' end end. | L783 | identical |
| 92 | Lemma | length_bumpl | Lemma length_bumpl l : length (bumpl l) = length l. | L786 | identical |
| 93 | Lemma | length_exs | Lemma length_exs bs : length (exs bs) = length bs. | L789 | identical |
| 94 | Lemma | ginc_exps | Lemma ginc_exps bs s : s <= 3 -> forall bs' s' d, ginc bs s = (bs', s', d) -> (exs bs' = exs bs /\ d = false) \/ (exs bs' = bumpl (exs bs) ++ [0] /\ d = match bs with [] => true | _ => false end). | L793 | identical |
| 95 | Fixpoint | qsum | Fixpoint qsum (l : list nat) : nat := match l with [] => 0 | e :: l => S e + 2 * qsum l end. | L808 | identical |
| 96 | Definition | Qp | Definition Qp (f : nat) (bs : blks) (s p : nat) : nat := 2 ^ f * (gval bs s + 2 * qsum (exs bs) + p). | L809 | identical |
| 97 | Definition | QI | Definition QI (Q0 f : nat) (bs : blks) (s p : nat) : Prop := Qp f bs s p <= Q0 + 3 * 2 ^ (f + length bs). | L810 | identical |
| 98 | Lemma | qsum_app0 | Lemma qsum_app0 l : qsum (l ++ [0]) = qsum l + 2 ^ length l. | L812 | identical |
| 99 | Lemma | qsum_bumpl | Lemma qsum_bumpl l : l <> [] -> 2 * qsum (bumpl l) = 2 * qsum l + 2 ^ length l. | L815 | identical |
| 100 | Lemma | gval_lb | Lemma gval_lb bs s : 4 * 2 ^ length bs <= gval bs s. | L823 | identical |
| 101 | Lemma | gval_ub | Lemma gval_ub bs s : s <= 3 -> gval bs s < 8 * 2 ^ length bs. | L826 | identical |
| 102 | Lemma | QI_low | Lemma QI_low Q0 f bs s p : QI Q0 f bs s p -> 2 ^ (f + length bs) <= Q0. | L829 | identical |
| 103 | Lemma | QI_Ps | Lemma QI_Ps Q0 Ps f bs s p : QI Q0 f bs s p -> Q0 < 2 ^ (Ps + 1) -> f + length bs <= Ps. | L836 | identical |
| 104 | Lemma | QI_drop | Lemma QI_drop Q0 f bs s p : QI Q0 f bs s p -> QI Q0 f bs s 0. | L842 | identical |
| 105 | Lemma | QI_cons | Lemma QI_cons Q0 f dd e bs s p : QI Q0 f ((dd, e) :: bs) s 0 -> p <= S e -> QI Q0 (S f) bs s p. | L845 | identical |
| 106 | Lemma | QI_inc | Lemma QI_inc Q0 f bs s p bs' s' d : s <= 3 -> ginc bs s = (bs', s', d) -> QI Q0 f bs s (S p) -> QI Q0 f bs' s' (p + b2n d). | L858 | identical |
| 107 | Lemma | QI_et3 | Lemma QI_et3 Q0 f : QI Q0 f [] 3 0 -> QI Q0 f [(false, 0)] 0 0. | L885 | identical |
| 108 | Fixpoint | wpot | Fixpoint wpot (v : nat -> nat) (al be f : nat) (l : list nat) : nat := match l with [] => 0 | e :: l => v f * (al * e + be) + wpot v al be (S f) l end. | L890 | identical |
| 109 | Fixpoint | vsum | Fixpoint vsum (v : nat -> nat) (f m : nat) : nat := match m with 0 => 0 | S m => v f + vsum v (S f) m end. | L893 | identical |
| 110 | Definition | Pot | Definition Pot (v : nat -> nat) (al be ga Ps f : nat) (l : list nat) : nat := wpot v al be f l + ga * vsum v (f + length l) (Ps - (f + length l)). | L896 | identical |
| 111 | Definition | mono | Definition mono (v : nat -> nat) : Prop := forall i j, i <= j -> v i <= v j. | L899 | identical |
| 112 | Lemma | Pot_cons | Lemma Pot_cons v al be ga Ps f e l : Pot v al be ga Ps f (e :: l) = v f * (al * e + be) + Pot v al be ga Ps (S f) l. | L901 | identical |
| 113 | Lemma | wpot_app1 | Lemma wpot_app1 v al be f l x : wpot v al be f (l ++ [x]) = wpot v al be f l + v (f + length l) * (al * x + be). | L905 | identical |
| 114 | Lemma | wpot_bumpl | Lemma wpot_bumpl v al be f l : mono v -> wpot v al be f (bumpl l) <= wpot v al be f l + al * v (f + length l). | L912 | identical |
| 115 | Lemma | Pot_ov | Lemma Pot_ov v al be ga Ps f l : mono v -> al + be + 1 <= ga -> f + length l + 1 <= Ps -> Pot v al be ga Ps f (bumpl l ++ [0]) + v (f + length l) <= Pot v al be ga Ps f l. | L922 | identical |
| 116 | Lemma | Pot_inc | Lemma Pot_inc v al be ga Ps Q0 f bs s p bs' s' d : mono v -> al + be + 1 <= ga -> Q0 < 2 ^ (Ps + 1) -> s <= 3 -> ginc bs s = (bs', s', d) -> QI Q0 f bs s (S p) -> Pot v al be ga Ps f (exs bs') + b2n d * v f <= Pot v al be ga Ps f (exs bs). | L934 | identical |
| 117 | Lemma | GPhi_pot | Lemma GPhi_pot v al be ga Ps Q0 : mono v -> al + be + 1 <= ga -> 1 <= al -> 2 <= be -> Q0 < 2 ^ (Ps + 1) ->
forall a b bs s r, GPhi a b bs s r -> s <= 3 -> forall f U, QI Q0 f bs s (b - 1) ->
(forall q, f <= q -> U <= v q) ->
match r with
| RE2 k x bs2 s2 => exists h, QI Q0 (f + S h) bs2 s2 0 /\
U * k + Pot v al be ga Ps (f + S h) (exs bs2) + v (f + h) * (al * x + be) <=
… +3 lines | L949 | identical |
| 118 | Definition | w | Definition w (q : nat) : nat := 2 ^ ((q + 1) / 2). | L1018 | identical |
| 119 | Lemma | w_mono | Lemma w_mono : mono w. | L1020 | identical |
| 120 | Lemma | w_lev | Lemma w_lev l q : 2 * l <= q -> 2 ^ l <= w q. | L1023 | identical |
| 121 | Lemma | w_lev1 | Lemma w_lev1 l q : 2 * l + 1 <= q -> 2 ^ S l <= w q. | L1030 | identical |
| 122 | Lemma | GPhi_QI | Lemma GPhi_QI Q0 Ps a b bs s k x bs2 s2 f : Q0 < 2 ^ (Ps + 1) -> GPhi a b bs s (RE2 k x bs2 s2) -> s <= 3 -> QI Q0 f bs s (b - 1) -> exists h, QI Q0 (f + S h) bs2 s2 0. | L1037 | identical |
| 123 | Lemma | Dig_cost | Lemma Dig_cost Q0 Ps : Q0 < 2 ^ (Ps + 1) -> (forall x bs s n c bsp sp, DigP x bs s n c bsp sp -> s <= 3 -> forall l f, 2 * l <= f -> QI Q0 f bs s 0 -> 2 ^ l * n <= Pot w 2 8 11 Ps f (exs bs) + 2 ^ l * (2 * x + 2) + 13 * w Ps) /\ (forall bs s n c bsp sp, DigT bs s n c bsp sp -> s <= 3 -> forall l f, 2 * l <= f -> QI Q0 f bs s 0 -> 2 ^ l * n <= Pot w 2 8 11 Ps f (exs bs) + 13 * w Ps). | L1046 | identical |
| 124 | Fixpoint | MO | Fixpoint MO (u : nat -> nat) (l : nat) (es : list nat) : nat := match es with [] => 0 | e :: es => u l * e + MO u (S l) es end. | L1098 | identical |
| 125 | Definition | pu | Definition pu (u : nat -> nat) (l : nat) : nat := match l with 0 => 0 | S l' => u l' end. | L1101 | identical |
| 126 | Lemma | pu_le | Lemma pu_le u l : mono u -> pu u l <= u l. | L1103 | identical |
| 127 | Lemma | MO_zero | Lemma MO_zero u l es : Forall (fun e => e = 0) es -> MO u l es = 0. | L1106 | identical |
| 128 | Lemma | Dig_mass | Lemma Dig_mass u v Q0 Ps : mono v -> mono u -> (forall l q, 2 * l <= q -> u l <= v q) -> Q0 < 2 ^ (Ps + 1) -> (forall x bs s n c bsp sp, DigP x bs s n c bsp sp -> s <= 3 -> forall l f, 2 * l <= f -> QI Q0 f bs s 0 -> pu u l * c + MO u l (exs bsp) <= Pot v 1 3 5 Ps f (exs bs) + pu u l * S x + 6 * v Ps) /\ (forall bs s n c bsp sp, DigT bs s n c bsp sp -> s <= 3 -> forall l f, 2 * l <= f -> QI Q0 f bs s 0 -> pu u l * c + MO u l (exs bsp) <= Pot v 1 3 5 Ps f (exs bs) + 6 * v Ps). | L1110 | identical |
| 129 | Lemma | Dig_len | Lemma Dig_len Q0 Ps : Q0 < 2 ^ (Ps + 1) -> (forall x bs s n c bsp sp, DigP x bs s n c bsp sp -> s <= 3 -> forall l f, 2 * l <= f -> QI Q0 f bs s 0 -> 2 * (l + length bsp) <= Ps + 3) /\ (forall bs s n c bsp sp, DigT bs s n c bsp sp -> s <= 3 -> forall l f, 2 * l <= f -> QI Q0 f bs s 0 -> 2 * (l + length bsp) <= Ps + 3). | L1165 | identical |
| 130 | Lemma | pow_gt_self | Lemma pow_gt_self n : n < 2 ^ (n + 1). | L1190 | identical |
| 131 | Lemma | DigE_ex | Lemma DigE_ex y : y = t1 \/ y = p01 1 t1 \/ y = p10 (p00 t2) -> exists n c bsp sp, DigE y n c bsp sp. | L1193 | identical |
| 132 | Lemma | DigT_exists | Lemma DigT_exists Q0 : forall D f bs s, s <= 3 -> QI Q0 f bs s 0 -> Q0 + 1 - 2 ^ f <= D -> exists n c bsp sp, DigT bs s n c bsp sp. | L1197 | identical |
| 133 | Definition | Rel | Definition Rel (orig cur : list nat) : Prop := (forall i, S i < length cur -> nth i cur 0 <= nth i orig 0 + 1) /\ (forall i, length cur <= S i -> nth i cur 0 <= nth i orig 0). | L1231 | identical |
| 134 | Lemma | nth_bumpl | Lemma nth_bumpl l i : nth i (bumpl l) 0 = nth i l 0 + (if Nat.eqb (S i) (length l) then 1 else 0). | L1235 | identical |
| 135 | Lemma | nth_app0 | Lemma nth_app0 l i : nth i (l ++ [0]) 0 = nth i l 0. | L1244 | identical |
| 136 | Lemma | Rel_ov | Lemma Rel_ov orig l : Rel orig l -> Rel orig (bumpl l ++ [0]). | L1247 | identical |
| 137 | Lemma | Rel_inc | Lemma Rel_inc orig bs s bs' s' d : s <= 3 -> ginc bs s = (bs', s', d) -> Rel orig (exs bs) -> Rel orig (exs bs'). | L1257 | identical |
| 138 | Lemma | Rel_tl | Lemma Rel_tl orig cur : Rel orig cur -> Rel (tl orig) (tl cur). | L1263 | identical |
| 139 | Lemma | Rel_refl | Lemma Rel_refl l : Rel l l. | L1273 | identical |
| 140 | Lemma | GPhi_rel | Lemma GPhi_rel a b bs s r : GPhi a b bs s r -> s <= 3 -> forall orig, Rel orig (exs bs) -> match r with | RE2 k x bs2 s2 => exists h, Rel (skipn (S h) orig) (exs bs2) /\ x <= nth h orig 0 + 1 | RSp _ _ => True end. | L1276 | identical |
| 141 | Lemma | GPhi_val | Lemma GPhi_val a b bs s r : GPhi a b bs s r -> s <= 3 -> match r with RE2 k x bs2 s2 => 2 * gval bs2 s2 + a <= gval bs s + k + 2 | RSp _ _ => True end. | L1302 | identical |
| 142 | Definition | v2 | Definition v2 (q : nat) : nat := 2 ^ (q / 2). | L1317 | identical |
| 143 | Definition | p2 | Definition p2 (q : nat) : nat := 2 ^ S q. | L1318 | identical |
| 144 | Definition | cst1 | Definition cst1 (q : nat) : nat := 1. | L1319 | identical |
| 145 | Definition | u1 | Definition u1 (l : nat) : nat := match l with 0 => 0 | S l' => 2 * w l' end. | L1320 | identical |
| 146 | Definition | u2 | Definition u2 (l : nat) : nat := match l with 0 => 0 | S l' => 2 ^ S l' end. | L1321 | identical |
| 147 | Lemma | v2_mono | Lemma v2_mono : mono v2. | L1323 | identical |
| 148 | Lemma | p2_mono | Lemma p2_mono : mono p2. | L1325 | identical |
| 149 | Lemma | cst1_mono | Lemma cst1_mono : mono cst1. | L1327 | identical |
| 150 | Lemma | v2_le_w | Lemma v2_le_w q : v2 q <= w q. | L1329 | identical |
| 151 | Lemma | cst1_le_w | Lemma cst1_le_w q : cst1 q <= w q. | L1331 | identical |
| 152 | Lemma | u1_mono | Lemma u1_mono : mono u1. | L1334 | identical |
| 153 | Lemma | u1_w | Lemma u1_w l q : 2 * l <= q -> u1 l <= w q. | L1336 | identical |
| 154 | Lemma | u2_mono | Lemma u2_mono : mono u2. | L1347 | identical |
| 155 | Lemma | u2_v2 | Lemma u2_v2 l q : 2 * l <= q -> u2 l <= v2 q. | L1349 | identical |
| 156 | Lemma | MO_u1 | Lemma MO_u1 l es : MO u1 (S l) es = 2 * wpot w 1 0 l es. | L1356 | identical |
| 157 | Lemma | MO_u1_0 | Lemma MO_u1_0 es : MO u1 0 es = 2 * wpot w 1 0 0 (tl es). | L1358 | identical |
| 158 | Lemma | MO_u2 | Lemma MO_u2 l es : MO u2 (S l) es = wpot p2 1 0 l es. | L1360 | identical |
| 159 | Lemma | MO_u2_0 | Lemma MO_u2_0 es : MO u2 0 es = wpot p2 1 0 0 (tl es). | L1362 | identical |
| 160 | Lemma | nth_le_MO | Lemma nth_le_MO h es : forall l, nth h es 0 <= MO cst1 l es. | L1364 | identical |
| 161 | Lemma | wpot_shift | Lemma wpot_shift v al be f f' l : mono v -> f <= f' -> wpot v al be f l <= wpot v al be f' l. | L1370 | identical |
| 162 | Lemma | wpot_drop | Lemma wpot_drop v al be f h l : wpot v al be (f + h) (skipn h l) <= wpot v al be f l. | L1376 | identical |
| 163 | Lemma | wpot_skipn_tl | Lemma wpot_skipn_tl v h l : mono v -> wpot v 1 0 0 (skipn (S h) l) <= wpot v 1 0 0 (tl l). | L1382 | identical |
| 164 | Lemma | wpot_le_nth | Lemma wpot_le_nth v l1 : mono v -> forall l2 f, (forall i, nth i l1 0 <= nth i l2 0 + 1) -> wpot v 1 0 f l1 <= wpot v 1 0 f l2 + vsum v f (length l1). | L1388 | identical |
| 165 | Lemma | Rel_nth | Lemma Rel_nth orig cur : Rel orig cur -> forall i, nth i cur 0 <= nth i orig 0 + 1. | L1399 | identical |
| 166 | Lemma | wpot_split | Lemma wpot_split v al be f l : wpot v al be f l = wpot v al 0 f l + be * vsum v f (length l). | L1401 | identical |
| 167 | Lemma | wpot_scale2 | Lemma wpot_scale2 v f l : wpot v 2 0 f l = 2 * wpot v 1 0 f l. | L1403 | identical |
| 168 | Lemma | wpot_le_v | Lemma wpot_le_v v v' al be f l : (forall q, v q <= v' q) -> wpot v al be f l <= wpot v' al be f l. | L1405 | identical |
| 169 | Lemma | vsum_add | Lemma vsum_add v f m m' : vsum v f (m + m') = vsum v f m + vsum v (f + m) m'. | L1410 | identical |
| 170 | Lemma | vsum_mono_m | Lemma vsum_mono_m v f m m' : m <= m' -> vsum v f m <= vsum v f m'. | L1412 | identical |
| 171 | Lemma | vsum_cst1 | Lemma vsum_cst1 f m : vsum cst1 f m = m. | L1414 | identical |
| 172 | Lemma | vsum_p2 | Lemma vsum_p2 f m : vsum p2 f m + 2 ^ S f = 2 ^ S (f + m). | L1416 | identical |
| 173 | Lemma | wpot_p2_S | Lemma wpot_p2_S f l : wpot p2 1 0 (S f) l = 2 * wpot p2 1 0 f l. | L1421 | identical |
| 174 | Lemma | qsum_p2 | Lemma qsum_p2 l : 2 * qsum l + 2 = 2 ^ S (length l) + wpot p2 1 0 0 l. | L1423 | identical |
| 175 | Lemma | wpot_zero | Lemma wpot_zero v f l : Forall (fun e => e = 0) l -> wpot v 1 0 f l = 0. | L1428 | identical |
| 176 | Lemma | Pot_top | Lemma Pot_top v al be ga Ps l : be <= ga -> length l <= Ps -> Pot v al be ga Ps 0 l <= wpot v al 0 0 l + ga * vsum v 0 Ps. | L1430 | identical |
| 177 | Definition | Ws | Definition Ws (P : nat) : nat := vsum w 0 P. | L1442 | identical |
| 178 | Definition | V2s | Definition V2s (P : nat) : nat := vsum v2 0 P. | L1443 | identical |
| 179 | Definition | Pf | Definition Pf (k : nat) : nat := Nat.max 12 (k + 3). | L1444 | identical |
| 180 | Definition | Af | Definition Af (k : nat) : nat := 5 * Ws (Pf k) + 6 * w (Pf k) + 2 * Ws k. | L1445 | identical |
| 181 | Definition | Bf | Definition Bf (k : nat) : nat := Af k + 5 * V2s (Pf k) + 6 * v2 (Pf k) + 2 ^ (k + 1). | L1446 | identical |
| 182 | Definition | Xf | Definition Xf (k : nat) : nat := Af k + 5 * Pf k + 7. | L1447 | identical |
| 183 | Definition | Costf | Definition Costf (k : nat) : nat := 2 * Xf k + 2 + 2 * Af k + 11 * Ws (Pf k) + 13 * w (Pf k). | L1448 | identical |
| 184 | Definition | Nlo | Definition Nlo (k : nat) : nat := 2 ^ (k + 3) - 8 * 2 ^ ((Pf k + 3) / 2). | L1449 | identical |
| 185 | Definition | Nstar | Definition Nstar : nat := 17705. | L1450 | identical |
| 186 | Lemma | Pf_mono | Lemma Pf_mono k k' : k <= k' -> Pf k <= Pf k'. | L1452 | identical |
| 187 | Lemma | Ws_mono | Lemma Ws_mono P P' : P <= P' -> Ws P <= Ws P'. | L1454 | identical |
| 188 | Lemma | V2s_mono | Lemma V2s_mono P P' : P <= P' -> V2s P <= V2s P'. | L1456 | identical |
| 189 | Lemma | Af_mono | Lemma Af_mono k k' : k <= k' -> Af k <= Af k'. | L1458 | identical |
| 190 | Lemma | w_SS | Lemma w_SS q : w (S (S q)) = 2 * w q. | L1464 | identical |
| 191 | Lemma | v2_SS | Lemma v2_SS q : v2 (S (S q)) = 2 * v2 q. | L1469 | identical |
| 192 | Lemma | vsum_SS_w | Lemma vsum_SS_w f m : vsum w (S (S f)) m = 2 * vsum w f m. | L1474 | identical |
| 193 | Lemma | vsum_SS_v2 | Lemma vsum_SS_v2 f m : vsum v2 (S (S f)) m = 2 * vsum v2 f m. | L1476 | identical |
| 194 | Lemma | Ws_SS | Lemma Ws_SS P : Ws (S (S P)) = 2 * Ws P + 3. | L1478 | identical |
| 195 | Lemma | V2s_SS | Lemma V2s_SS P : V2s (S (S P)) = 2 * V2s P + 2. | L1480 | identical |
| 196 | Lemma | Pf_big | Lemma Pf_big k : 9 <= k -> Pf k = k + 3. | L1482 | identical |
| 197 | Lemma | Af_SS | Lemma Af_SS k : 9 <= k -> Af (S (S k)) = 2 * Af k + 21. | L1484 | identical |
| 198 | Definition | gB | Definition gB (k : nat) : nat := Af k + 5 * V2s (k + 3) + 6 * v2 (k + 3). | L1490 | identical |
| 199 | Lemma | gB_SS | Lemma gB_SS k : 9 <= k -> gB (S (S k)) = 2 * gB k + 31. | L1491 | identical |
| 200 | Lemma | gB_all | Lemma gB_all m : gB (10 + 2 * m) + 31 < 7 * 2 ^ (10 + 2 * m) /\ gB (11 + 2 * m) + 31 < 7 * 2 ^ (11 + 2 * m). | L1497 | identical |
| 201 | Lemma | gB_ge | Lemma gB_ge k : 10 <= k -> gB k + 31 < 7 * 2 ^ k. | L1506 | identical |
| 202 | Lemma | N1 | Lemma N1 k : 7 * 2 ^ k + Bf k < 2 ^ (Pf k + 1). | L1514 | identical |
| 203 | Lemma | Costf_SS | Lemma Costf_SS k : 9 <= k -> Costf (S (S k)) + 10 * (k + 3) = 2 * Costf k + 121. | L1525 | identical |
| 204 | Lemma | Nlo_SS | Lemma Nlo_SS k : 9 <= k -> Nlo (S (S k)) = 4 * 2 ^ (k + 3) - 16 * 2 ^ ((k + 6) / 2) /\ Nlo k = 2 ^ (k + 3) - 8 * 2 ^ ((k + 6) / 2). | L1531 | identical |
| 205 | Lemma | D_all | Lemma D_all m : Costf (12 + 2 * m) + 123 <= Nlo (12 + 2 * m) /\ Costf (13 + 2 * m) + 123 <= Nlo (13 + 2 * m). | L1543 | identical |
| 206 | Lemma | N2 | Lemma N2 k : Costf k + 2 <= Nstar \/ Costf k + 2 <= Nlo k. | L1555 | identical |
| 207 | Lemma | Nstar_ge | Lemma Nstar_ge : 15 <= Nstar. | L1569 | identical |
| 208 | Definition | Mw | Definition Mw (bs : blks) : nat := wpot w 1 0 0 (exs bs). | L1574 | identical |
| 209 | Definition | M2 | Definition M2 (bs : blks) : nat := wpot p2 1 0 0 (exs bs). | L1575 | identical |
| 210 | Definition | Inv | Definition Inv (k N : nat) (y : word) : Prop :=
Nstar <= N /\ Nlo k <= N /\
((exists x bs s, y = p11 x (gw bs s) /\ s <= 3 /\ length bs <= k /\
Mw bs <= Af k /\ M2 bs <= Bf k /\ x <= Xf k)
\/ y = t1 \/ y = p01 1 t1 \/ y = p10 (p00 t2)). | L1578 | identical |
| 211 | Lemma | next_inv | Lemma next_inv k N n c bsp sp r : GPhi (1 + n) (N + c - n) bsp sp r -> sp <= 3 -> n + 2 <= N -> Nstar <= N -> Nlo k <= N -> MO u1 0 (exs bsp) <= Af k + 5 * Ws (Pf k) + 6 * w (Pf k) -> MO u2 0 (exs bsp) <= Af k + 5 * V2s (Pf k) + 6 * v2 (Pf k) -> MO cst1 0 (exs bsp) + 1 <= Xf k -> 2 * length bsp <= Pf k + 3 -> … +1 lines | L1584 | identical |
| 212 | Lemma | inv_step | Lemma inv_step k N y : Inv k N y -> exists kk y', Phi 1 N y kk y' /\ exists k', Inv k' (S kk) y'. | L1641 | identical |
| 213 | Fixpoint | orbit | Fixpoint orbit (f n N : nat) (y : word) : option (nat * word) := match n with | O => Some (N, y) | S n => match phif f 1 N y with Some (k, y') => orbit f n (S k) y' | None => None end end. | L1700 | identical |
| 214 | Lemma | orbit_sound | Lemma orbit_sound f n : forall N y N' y', orbit f n N y = Some (N', y') -> K N y -->* K N' y'. | L1706 | identical |
| 215 | Definition | B692 | Definition B692 : blks := [(false, 6); (false, 1); (true, 1); (true, 1); (false, 1); (true, 1); (false, 1); (false, 1); (true, 1); (false, 0)]. | L1714 | new |
| 216 | Definition | Y692 | Definition Y692 : word := p11 16 (gw B692 0). | L1716 | new |
| 217 | Lemma | fin7 | Lemma fin7 : orbit 100000 687 17 t1 = Some (17724, Y692). | L1718 | new |
| 218 | Lemma | inv7 | Lemma inv7 : Inv 10 17724 Y692. | L1721 | new |
| 219 | Lemma | nonhalt_from_c | Lemma nonhalt_from_c c N0 y0 (P : nat -> word -> Prop) : c -->* K N0 y0 -> P N0 y0 -> (forall N y, P N y -> exists k y', Phi 1 N y k y' /\ P (S k) y') -> ~ halts tm30 c. | L1729 | new |
| 220 | Lemma | nonhalt_E | Lemma nonhalt_E : ~ halts tm30 (E;; tape0). | L1743 | new |
| 221 | Definition | phi | Definition phi (q : Q) : Q := match q with A => E | B => A | C => B | D => F | E => C | F => D end. | L1751 | new |
| 222 | Lemma | perm7 | Lemma perm7 : Perm (flip tm) tm30 phi. | L1754 | new |
| 223 | Lemma | nonhalt | Lemma nonhalt: ~halts tm c0. | L1761 | adapted |
5What a maintainer readsCheck: the rule table below is what the .v proves, and proof.md / README read cleanly for a maintainer.
- submission/proof.md · informal proof (submitted copy)
- submission/README.md · the package README
- submission/discord.md · Discord draft (not posted)
- submission/parent-proof.md · the parent's proof, as shipped
- proof.md (working copy) · differs from the submitted copy
The parent's argument has three kinds of parts. Statements about the table hold for every configuration. Statements about one epoch hold for any epoch K(1, N, Y) with Y ∈ H and enough budget. The rest is the orbit induction with its base and its finite part. Only the base and the finite part refer to the starting configuration.
| parent part | depends on the start? | for this machine |
|---|---|---|
| §1 the halting transition (D0 = this machine's F0) | no | §1 maps it |
| §3 rules W1–W11, S1–S3, RP0/RP1, LP*, B, eats E1g/E2g/E0/Et1–Et3, R, D6 (exact runs in every context) | no: statements about the table | unchanged |
| §4 Lemma H, eat coverage, the one-epoch corollary | no: for any epoch K(1, N, Y) with Y ∈ H |
unchanged |
| §5 D.0 (positions, (P1), (P2), Lemma P, Lemma C, termination of Φ) | no: per digestion | unchanged |
| D.1 cost recursion, D.2 levels, D.3 shape and mass bound, D.5 value bound | no: per epoch | unchanged |
| D.4(a), (b), (e), (r) | no: from epoch t to t+1 | unchanged |
| D.4(c) unrolling (the chain stops "at epoch 3 (whose residue t2 is special)") | only through the base | stops at e5 (residue t1, special) instead. In D.6 it is subsumed by the step (I2)t ⇒ (I2){t+1}. |
| D.6 orbit invariant (I1)–(I4) | only the base | base = §3. The step uses only D.4, Lemma C, D.5 and N_{t+1} > N_t |
| D.7 Bnd, Bnd_worst(κ), F = {0..11}, N* = 14,796, the closed-form tail for κ ≥ 64 | no: arithmetic in κ | unchanged |
| D.8 finite part (the epochs with N < N*) | yes | computed for this machine's orbit (§5) |
| §6 initial segment | yes | replaced by §2 |
| §7 conclusion | only "t ≥ 3" | reads "t ≥ 5" |
Spelled out:
- The induction runs from t = 5. While
N_t < N*, the step "epoch t finishes" (β_t ≤ N_t − 2) is the explicit computation of §5. ForN_t ≥ N*it is D.7, with the same case split onκ_t ∈ F. - Every epoch has
N_{t+1} ≥ N_t + 1(parent §4, corollary), so N reaches N* after finitely many epochs and stays above it. - Every epoch reaches the next left record. So the sequence of left records is infinite, and this machine never halts.
The parent's finite part cannot be reused. This machine's orbit from e5 shares no epoch (N, Y) with the parent's orbit from its epoch 3, nor with the third start's orbit, up to N = 20,000 (X6). The starts do not merge before the threshold, so this machine needs its own finite part.
6FamilyCheck: related machines are killed together or have a reason to be left open.
6 machines, 3 killed, 3 not. Family links: status.json parent, same transition table with another start (tools/dashboard.py), targeting.md follow-on rows, ledger "= twin" notes. A machine string named in a .v header / proof.md / notes.md is listed but does not make a family.
| who | machine | status | relation to this kill |
|---|---|---|---|
| #30 kill 15 | 1RB0RF_1RC1RF_1LD0RE_---0LE_1LA0LE_0RA0LC | ✓Killed: never halts | parent link; = #7's table mirrored, run from state B; named in #30's notes.md; named in #7's .v header; named in #7's proof.md; named in #7's notes.md · review · compared side by side above · mechanism |
| #7 kill 16 | 1RB0RA_1LC0LD_1LE1LD_0LB0RE_1RF0LA_---0RA | ✓Killed: never halts | this kill |
| #31 kill 17 | 1RB1RF_1LC0RD_---0LD_1LE0LD_1RA0RF_0RE0LB | ✓Killed: never halts | = #7's table mirrored, run from state C; named in #31's proof.md; named in #31's notes.md; named in #7's proof.md · review · mechanism |
| #10 | 1RB0RF_1RC1RF_1LD1RA_---0LE_1LA0LE_0RA0LC | ⚠Cryptid candidate | via #30: targeting: follow-on to #10; named in #30's notes.md · mechanism |
| #15 | 1RB1RF_1LC1RE_---0LD_1LE0LD_1RA0RF_0RE0LB | ⚠Cryptid candidate | via #31: targeting: follow-on to #15 · mechanism |
| #28 | 1RB0RA_1LC0LD_1LE1LD_0LB0RE_1RF1LB_---0RA | ⚠Cryptid candidate | targeting: follow-on to #7 · mechanism |
7ChecklistCheck: every ✓ is computed; the two ○ are yours to decide; an amber ! is an optional check that did not finish.
- ✓Machine string exactthe .v literal == holdout list line 405 byte for byte
- ✓Statement is
~halts tm c0parsed from the .v and confirmed by check_kill (theorem_text, theorem_rocq) - ✓No axioms beyond baseline0 assumption(s); tools/assumptions_baseline.txt allows only functional_extensionality_dep
- ✓coqchk finished (optional)coqchk pass in 71.46 s
- ✓.v hash matches the checked hash.v = checked sha256 dfb0fb2c8b2a…; submission/ copy = checked sha256 dfb0fb2c8b2a…
- ✓No repo-local paths in the .vcomments name no path of ours (vendor/, machines/, tools/, rocq/, scripts/, reports/, atlas/, data/, journal/, /home/); busycoq's own
verify/X.vis fine: none in the .v or the submission/ copy - ✓Public write-up is cleantools/writeup_lint.py on
submission/proof.md: 0 error(s) - ○proof.md reviewed by Dennis (Checkpoint B)no Checkpoint B note from Dennis found
- notes.md L61: - Checkpoint questions are now yes/no questions about the figures. Moved off the card (strategy calls, not figure reading; settle them in proof.md / Checkpoint B):
- ○Family posted together?2 other kill(s) in the family: #30, #31; the Discord draft names 2 of them; 3 member(s) not killed: #10, #15, #28
Generated by tools/killreview.py at 2026-10-16 13:29 PDT in 0.1 s from the files linked above; nothing in this review is hand-written except the box “How we proved it never halts” (above), which quotes how_proved.md. Re-run: python3 -B tools/killreview.py 1RB0RA_1LC0LD_1LE1LD_0LB0RE_1RF0LA_---0RA
Files
machines/<tm>/: 21 entries · raw notes, status, scripts, images
| name | size | changed |
|---|---|---|
| notes.md ↓ | 45 KB | 2026-10-11 00:13 |
| proof.md ↓ | 21 KB | 2026-10-10 23:55 |
| how_proved.md ↓ | 1.5 KB | 2026-10-14 10:51 |
| status.json ↓ | 377 B | 2026-10-11 00:12 |
| observe.json ↓ | 13 KB | 2026-10-10 13:13 |
| deepen.json ↓ | 20 KB | 2026-10-10 15:03 |
| 1RB0RA_1LC0LD_1LE1LD_0LB0RE_1RF0LA_---0RA.v ↓ | 90 KB | 2026-10-10 23:57 |
| data/ | 6 items | 2026-10-10 23:35 |
| decisions/ | 4 items | 2026-10-11 00:15 |
| img/ | 12 items | 2026-10-16 10:28 |
| rocq/ | 4 items | 2026-10-11 00:00 |
| scripts/ | 24 items | 2026-10-10 23:22 |
| submission/ | 6 items | 2026-10-11 00:12 |
| work/ | 1 item | 2026-10-11 00:15 |
| check_proof.py ↓ | 26 KB | 2026-10-10 23:51 |
| fuzz_shapes.py ↓ | 1.4 KB | 2026-10-10 00:39 |
| qsim.jsonl ↓ | 33 KB | 2026-10-10 00:08 |
| rulefit.json ↓ | 71 KB | 2026-10-10 00:11 |
| rulefit.txt ↓ | 2.9 KB | 2026-10-10 00:11 |
| validate_rules.py ↓ | 3.5 KB | 2026-10-10 00:38 |
| validation.json ↓ | 335 B | 2026-10-10 00:38 |
status.json in full
{
"tm": "1RB0RA_1LC0LD_1LE1LD_0LB0RE_1RF0LA_---0RA",
"status": "KILLED_NONHALT",
"stage": "done",
"updated": "2026-10-11",
"reason": "check_kill PASS, independently re-verified",
"label": "#7",
"parent": "1RB0RF_1RC1RF_1LD0RE_---0LE_1LA0LE_0RA0LC",
"relation": "sibling of #30: #30's table mirrored and renamed (A,B,C,D,E,F -> E,A,B,F,C,D), started in #30's state E"
}





