tools/rebuild_pages.sh rebuilds the site within 5 minutes of a change; by hand: python3 -B tools/site.py.1RB0LE_1RC---_0RD0RB_1RE0LA_1RF0LF_1LD1RF
How it was proved
How we proved it never halts
SOBCv10's machine from another start: 4 rounds with a growing tail, then nested exceptions overflow into a cycler

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.
Overview
In one sentence
SOBCv10's machine from another start: 4 rounds with a growing tail, then nested exceptions overflow into a cycler
- Upstream
- PR submitted · PR #29opened 2026-10-16T19:10:32Z ·
verify/SOBCv10Tail.v· on Submissions → - Rocq proof
- check_kill PASS · first Oct 16 11:527,149 lines · 258 KB .v · compile 115.9 s · coqchk pass · 1 axioms · PASS Oct 16 11:52 (re-run Oct 16 11:56)· the .v file
- Automatic review
- 6 of 6 checks passtemplate: none · details in Proof →
- Class
- Shift-overflow bouncer counterours: Shift-overflow bouncer counter (sheet) · ours adds: that exits into a translated cycler: SOBCv10's table (its D start, mirrored), with a far-end tail that ends the rounds · high confidence
- On the list
- line 9 of
BB6_holdouts_663.txt· historical 740 line 10 · observe.json rank #10
Your calls on file 4
- funded
- option: spike · date: 2026-10-16 · outcome: Complete proof within the funded stage.
- next
- Await upstream review of PR #29.
- 2026-10-14 · plan
- W6-1 looks non-halting (SOBCv10's machine from another start, ending in a 919-step translated cycler): fund a planning stage for the formal proof, fund the full formalization, or park it?
- 2026-10-16 · spike
- W6-1's exit is proved in Rocq, but the full proof is about 14 x 2 h and one planned lemma needs restating: fund a 1-stage spike first, the full formalization, or park?
Mechanism
What to check here: the pictures show the mechanism that the rule table describes.
How it works: 3 notes
- Same table as SOBCv10.v (ours A..F = its D,E,F,A,B,C, mirrored; rules here use its frame, wall on the left; in our frame all is mirrored, Fig 2). Words: A=11111011 (0), B=11101111 (1), C, D, E markers, U=1011, X=0100, wall W=10100100, edge t=11. A hash = one signal from the wall into the words and back.
- Each hash adds one X to the wall's tally and increments a binary A/B counter; marker words absorb the carries. When all is B and a carry hits the edge, an exception turns the tally into n fresh hashes and leaves C A U^(2n), which takes 2(2^n-1) hashes to drain: exceptions come at tower-like times.
- Our run: exceptions at n = 0, 0, 28, 3*2^29-2, then n5 ~ 2^(n4+36.7), giving SOBCv10's post_ca state plus a far-end tail U^3 A t. The tail U^(2k+1) y is one digit with levels -1..4 (A, B, E t, D t, A t, B t). Each exception eats the last column's top digit, adds a U pair and sets the level to k+1-L: 3, -1, 4, 0. In exception 9 a decode carry hits B t: a nested exception E' starts, using exception 9's finished calls as its tally. E' (tail U^13 B t) triggers E'' long before its calls run out. E'''s raw pass overflows at U^13 and, without touching anything to its left, becomes a translated cycler (period 919, shift 3).
Figures for Checkpoint A
Orientation: the start-up exceptions, then a fixed block at the left and a band growing right.
Top ~16 rows: exceptions 1-3. Below: the left block (counter + fossil) stays put while the right part grows.
Top: one pass rewrites the right block. Then each zigzag from the right is one of the n=10 hashes.
More figures (1)Fig 4: bbchallenge Default view, 99,999 steps
Same view over 10x longer: after exception 3 only the tally band keeps growing.
Rules (13/13 validated)exact tape rewrites the proof will formalize, each re-checked by simulation
| rule | from ⟶ to | cases | steps | checked |
|---|---|---|---|---|
| emit (left_emit_call) | W X^u <F r ⟶ W X^(u+1) B> r | any u, any r | 1 hash | ✓10/10 |
| D absorb (primary_D_absorb) | W X^u B> A^p D R ⟶ W X^(u+2p) B> A^(p+1) R | — | 2p hashes | ✓10/10 |
| U pairs (initial_u_pairs) | W X^u B> A^p C A U^(2k) R ⟶ W X^(u+2p+1(2k-1)) B> A^(p+k) C A R | k >= 1 | 2p+1(2k-1) hashes | ✓10/10 |
| cd drain (exception_done_cd) | W B> C A U^(2n) R ⟶ W X^(2(2n-1)) B> A^n C A R | n >= 1 | 2(2n-1) hashes | ✓10/10 |
| frontier to exception (ordinary_all_A_to_exception) | W X^u B> A^m t ⟶ W B> U^(2n+1) B^m t | u + 2^m - 1 = 2n+1 | 2m hashes | ✓10/10 |
| canonical exception (sobc1_exception_from_seg) | W B> U^(2n+1) B^(e+1) t ⟶ W B> C A U^(2n) digits(ds) | n = 2^(e+1)-2+value(ds), |ds| = e+1 | — | ✓10/10 |
| (a) exception 4 family (ours) | W X^(2n+1) B> B^m C t C A^2 t2 ⟶ W B> C A U^(2n) A^(m-1) D^2 A U E A | n = 3*2^(m-1)-2; real run m = 30 | — | ✓4/4 |
| (b) fossil run after cd (ours) | W X^u B> A^p C A^m D^2 A U E A ⟶ W X^(u+H) B> B^(p+m+5) U B t | m even; real run m = 30, p = n4 | H = 2p-1(1292*2m+4)/3 - 1 hashes | ✓22/22 |
| (c)+(d) exception 5 (ours) | W X^(2n+1) B> B^W U B t ⟶ W B> C A U^(2n) A^(p-2) digits_(m+6)(R) U^3 A t | W = p+m+5, n = 2^p-2+2^(p-2)(1292*2^m+4)/3, R = (140*2^m+4)/3+4 | — | ✓14/14 |
| T1 tail timing (ours) | W X^u B> [digits, total V] U^(2k+1) y ⟶ exception trigger | tail level -1..4, any columns | 5*2W - V hashes (A=0, B=1, D=-1, E=-2; tail level at weight 2W) | ✓80/80 |
| T2 raw pass with tail (ours) | W B> U^(2n+1) ... B^w U^(2k+1) B t ⟶ ... E^(w-1) U^(2k+3) y, level(y) = k-1 | k = 0..5; k >= 6 overflows into the cycler (16/16) | — | ✓48/48 |
| T3 decode with tail (ours) | exception with n = n_s + (2-L)*2W-1 ⟶ SOBCv10's output columns, last one truncated; 2-L carries into the tail (or a deficit of L-2) | full exception vs segment decode, 25 random cases: 23 match; the other 2 are not decodes (one decode trigger, which then reaches the cycler, and one n = 0) | — | ✓23/23 |
| exit: decode trigger, nested exceptions, overflow, translated cycler (ours) | exception 9's decode, call h_t = 4*2W - S - 2: carry reaches B t ⟶ E' (tail U^13 B t) with n' = h_t calls; E'' on E' call h'' = 3*2W-1 - S - 2; its raw pass overflows at B^w U^13 B t into state B right of window 1000100010001000100010001000100010010001000100010001000100010010100100, blank beyond | 52 random layouts (h_t, h'' exact against hash-level sim, cycler reached, pending 0-300); 32 n' = f+1 threshold cases; overflow w = 1..30 with junk left (90); shift rule with random left (50) | overflow 1208 + 14(w-1) steps, never left of its start; then 919 steps per 3 cells, never reading the left, forever | ✓224/224 |
Compressed historythe tape as SOBCv10 frame: W X^u B> [right side]; rows indexed by hash count H (not TM steps), from the exact hash-level run work/hashlevel_run_ours.txt at 28 moments: where the rules are read off
| step | u (tally) | right side |
|---|---|---|
| 1 | 1 | B 1^2 |
| 1 | 1 | exception 1 fires, n = 0 |
| 1 | 0 | exception 2 fires, n = 0 |
| 4 | 3 | B U A C U^2 |
| 16 | 15 | B U A B A |
| 58 | 57 | exception 3 fires, n = 28 |
| 64 | 6 | A^2 C A U^55 A B^2 1^2 |
| 256 | 198 | A^3 B A^2 D C A U^45 A B^2 1^2 |
| 1,024 | 966 | A^3 B A^2 B^2 D C A U^41 A B^2 1^2 |
| 4,096 | 4,038 | A^3 B A^2 B^4 D C A U^37 A B^2 1^2 |
| 16,384 | 16,326 | A^3 B A^2 B^6 D C A U^33 A B^2 1^2 |
| 65,536 | 65,478 | A^3 B A^2 B^8 D C A U^29 A B^2 1^2 |
| 262,144 | 262,086 | A^3 B A^2 B^10 D C A U^25 A B^2 1^2 |
| 1,048,576 | 1,048,518 | A^3 B A^2 B^12 D C A U^21 A B^2 1^2 |
| 4,194,304 | 4,194,246 | A^3 B A^2 B^14 D C A U^17 A B^2 1^2 |
| 16,777,216 | 16,777,158 | A^3 B A^2 B^16 D C A U^13 A B^2 1^2 |
| 67,108,864 | 67,108,806 | A^3 B A^2 B^18 D C A U^9 A B^2 1^2 |
| 268,435,456 | 268,435,398 | A^3 B A^2 B^20 D C A U^5 A B^2 1^2 |
| 1,073,741,824 | 1,073,741,766 | A^3 B A^2 B^22 D C A U A B^2 1^2 |
| 1,342,177,280 | 1,342,177,222 | A^3 B A^2 B^22 A C A U A B^2 1^2 |
| 1,610,612,736 | 1,610,612,678 | A^3 B A^2 B^23 C A U A B^2 1^2 |
| 1,879,048,192 | 1,879,048,134 | A^3 B A^2 B^22 A D C 1^2 C A^2 1^4 |
| 2,147,483,648 | 2,147,483,590 | A^3 B A^2 B^23 D C 1^2 C A^2 1^4 |
| 2,415,919,104 | 2,415,919,046 | A^3 B A^2 B^22 A^2 C 1^2 C A^2 1^4 |
| 2,684,354,560 | 2,684,354,502 | A^3 B A^2 B^23 A C 1^2 C A^2 1^4 |
| 2,952,790,016 | 2,952,789,958 | A^3 B A^2 B^22 A B C 1^2 C A^2 1^4 |
| 3,221,225,472 | 3,221,225,414 | A^3 B A^2 B^24 C 1^2 C A^2 1^4 |
| 3,221,225,527 | 3,221,225,469 | exception 4 fires, n = 1610612734 |
u (tally)last 3,221,225,469right sidelast exception 4 fires, n = 1610612734Template comparisonSOBCv10.v: partly applies · the nearest solved proof, what carries over, and the transitions that differ
| 0 | 1 | |
|---|---|---|
| A | 1RB | 0LE |
| B | 1RC | --- |
| C | 0RD | 0RB |
| D | 1RE | 0LA |
| E | 1RF | 0LF |
| F | 1LD | 1RF |
- file
SOBCv10.v:3847- module
- —
- machine
1LB0RD_1LC0RC_1RA1LC_1LE0RB_1LF---_0LA0LE(12 transitions apart)- diff
same table: ours A,B,C,D,E,F = SOBCv10 D,E,F,A,B,C, mirrored; ours starts in its D- note
- Every SOBCv10 rule we use holds verbatim (same table). Our opening differs: 5 exceptions instead of 4. After exception 5 the run is SOBCv10's post_ca_state(round_post_unary c p, round_primary_width c p, [col]) with c = (n5-6)/2 and p = 3*2^28-4. col has 29 digits (2*14+1), value 391,468,375 (odd, safe), and the width dominance holds. But a far-end fossil U^3 A t follows the column, so sobc1_canonical_nonhalt does not apply as stated.
Proof strategy & riskshow the formal proof will go · 3 risks to watch
No infinite round invariant: the tail ends the SOBCv10 rounds at exception 9. The proof is a finite chain: the opening (families (a)-(d)) to SOBCv10's post_ca state, exceptions 6-9 as SOBCv10 rounds with the tail laws T1-T3, the decode trigger in exception 9, the nested exceptions E' and E'' (exact call counts from T1), a local overflow lemma and the translated cycler. See proof.md.
- ▲Exceptions 6-9 at real size are a model (T1-T3 plus SOBCv10's round formulas). The robustness argument (k = 6 always overflows into the cycler) makes the outcome safe, but the formal path needs the exact chain.
- ▲Families (b) and (d) are closed forms checked on small (p, m); at p = n4 they need induction proofs. Family (a) is checked exactly at m = 30.
- ▲Formalization is large: a tail-aware copy of SOBCv10's round machinery (4,234 lines upstream), used for four rounds.
Stats & provenance1.7·1013 steps simulated · 48,069 cells · the status in full · files
- simulated
- 1.7·1013 steps
- tape
- 48,069 cells · 25,188 nonzeros
- growth
- direct 1e9 steps (span 48,069); qsim block 4: 1.69e13 steps in 600 s, no rules; hash-level: 3,221,225,527 hashes to exception 4 (n4 = 3*2^29-2), exception 5 at about 2^(n4+36.7) hashes
- status now
- Complete blank-start nonhalting proof; three unchanged check_kill passes and completed kernel replays on the same source. (status.json, 2026-10-16)
- observer's note
- Exit closed: decode trigger -> nested exceptions E', E'' -> local overflow -> 919/3 translated cycler. proof.md written; formalization needs funding (decision.json).
- files
- observe.json · notes.md · proof.md · status.json · 1RB0LE_1RC---_0RD0RB_1RE0LA_1RF0LF_1LD1RF.v
Proof & checks
Kill 33 · Shift-overflow bouncer counter · the kill file ../../astra/decisions-20261016/w61/publication/Nonhalting.v: 7149 lines, 682 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).
1RB0LE_1RC---_0RD0RB_1RE0LA_1RF0LF_1LD1RFsha256 cd0bfee325f89704…
| ✓ | 1RB0LE_1RC---_0RD0RB_1RE0LA_1RF0LF_1LD1RF.v | cd0bfee325f89704… = checked |
| ✓ | submission/1RB0LE_1RC---_0RD0RB_1RE0LA_1RF0LF_1LD1RF.v | cd0bfee325f89704… = checked |
All 17 check_kill checks with their one-line results
| ✓ | args | 6x2 machine, framework module Individual62, mode nonhalt |
| ✓ | input | 264052 bytes, 7149 lines, 4779 sentences |
| ✓ | framework | HEAD 0940bb9cf434ba68f0c025dabfde45a219999973 == pin; no tracked changes under verify/ |
| ✓ | framework_build | 14 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 | 244 Require name(s) allowed; no top-level Variable/Context; no shadowing; Module/Section balanced |
| ✓ | tm_text | line 7124: TM_from_str "1RB0LE_1RC---_0RD0RB_1RE0LA_1RF0LF_1LD1RF" == <tm> (41 bytes) |
| ✓ | theorem_text | line 7139: nonhalt : ~halts tm c0 |
| ✓ | coq | coqc 8.20.1 ([local working file] |
| ✓ | names | halts, c0, TM_from_str resolved inside Individual62 |
| ✓ | compile | compiled in 115.9s with all appended checks |
| ✓ | tm_rocq | BB6Kill.Candidate.tm = BusyCoq.Individual62.TM_from_str "1RB0LE_1RC---_0RD0RB_1RE0LA_1RF0LF_1LD1RF" by eq_refl (in-file and isolated) |
| ✓ | theorem_rocq | nonhalt : ~ halts (TM_from_str "1RB0LE_1RC---_0RD0RB_1RE0LA_1RF0LF_1LD1RF") c0 with absolute names (in-file and isolated) |
| ✓ | isolation | only stock proof plugins loaded; guard/positivity/universe checking on, definitional UIP off |
| ✓ | assumptions | 1 assumption(s), all in the baseline |
| ✓ | coqchk | coqchk -norec BB6Kill.Candidate ok (18.8s); its context summary lists nothing of the file's own |
| ✓ | integrity | input sha256 and framework HEAD/cleanliness identical before and after |
2Where 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).
No single template: the .v header comment, proof.md and notes.md name no verify/… file as "adapted from" / template / mechanism, and status.json names no parent kill. Everything in section 3 is tagged new.
3Proof outlineCheck: the new items (green) carry the argument; the names read like the proof.md rules.
682 items in ../../astra/decisions-20261016/w61/publication/Nonhalting.v (7149 lines): 390 Lemma, 168 Definition, 83 Theorem, 32 Fixpoint, 4 Inductive, 3 Record, 2 Corollary. No template, so every item is new.
| # | kind | name | statement (no proof body) | line | vs template |
|---|---|---|---|---|---|
| 1 | Definition | source_tm | Definition source_tm := Eval compute in (TM_from_str "1LB0RD_1LC0RC_1RA1LC_1LE0RB_1LF---_0LA0LE"). | L33 | new |
| 2 | Definition | hash | Definition hash : DH0 * DH0 := ((B, []), (F, [])). | L41 | new |
| 3 | Lemma | hash_U | Lemma hash_U : segRLs source_tm hashes hashes U U. | L46 | new |
| 4 | Lemma | hash_A | Lemma hash_A : segRLs source_tm hashes [] A8 B8. | L51 | new |
| 5 | Lemma | hash_B | Lemma hash_B : segRLs source_tm hashes hashes B8 A8. | L56 | new |
| 6 | Lemma | hash_CAUU | Lemma hash_CAUU : segRLs source_tm hashes [] (C8 ++ A8 ++ U ++ U) (D8 ++ C8 ++ A8). | L61 | new |
| 7 | Lemma | hash_E | Lemma hash_E : segRLs source_tm hashes [] E8 D8. | L67 | new |
| 8 | Lemma | hash_D | Lemma hash_D : segRLs source_tm hashes [] D8 A8. | L72 | new |
| 9 | Inductive | BDigit | Inductive BDigit := BA | BB. | L76 | new |
| 10 | Definition | digit_word | Definition digit_word (d : BDigit) : list Sym := match d with BA => A8 | BB => B8 end. | L77 | new |
| 11 | Fixpoint | digits_word | Fixpoint digits_word (ds : list BDigit) : list Sym := match ds with | [] => [] | d :: ds' => digit_word d ++ digits_word ds' end. | L79 | new |
| 12 | Fixpoint | digits_value | Fixpoint digits_value (ds : list BDigit) : nat := match ds with | [] => 0 | BA :: ds' => 2 * digits_value ds' | BB :: ds' => 1 + 2 * digits_value ds' end. | L84 | new |
| 13 | Fixpoint | bfinish_count | Fixpoint bfinish_count (ds : list BDigit) (out : nat) : nat := match ds with | [] => out | BA :: ds' => 2 * bfinish_count ds' out + 1 | BB :: ds' => 2 * bfinish_count ds' out end. | L94 | new |
| 14 | Lemma | bfinish_repeat_BA_formula | Lemma bfinish_repeat_BA_formula w out : bfinish_count (repeat BA w) out = (out + 1) * 2^w - 1. | L101 | new |
| 15 | Lemma | hash_A_cycle | Lemma hash_A_cycle : segRLs source_tm (hashes^^2) hashes A8 A8. | L109 | new |
| 16 | Lemma | hash_B_cycle | Lemma hash_B_cycle : segRLs source_tm (hashes^^2) hashes B8 B8. | L114 | new |
| 17 | Lemma | hash_A_finish | Lemma hash_A_finish k : segRLs source_tm (hashes^^(2*k+1)) (hashes^^k) A8 B8. | L119 | new |
| 18 | Lemma | hash_B_finish | Lemma hash_B_finish k : segRLs source_tm (hashes^^(2*k)) (hashes^^k) B8 B8. | L128 | new |
| 19 | Lemma | hash_A_cycles | Lemma hash_A_cycles k : segRLs source_tm (hashes^^(2*k)) (hashes^^k) A8 A8. | L137 | new |
| 20 | Lemma | hash_E_even | Lemma hash_E_even n : segRLs source_tm (hashes^^(2*n+2)) (hashes^^n) E8 A8. | L147 | new |
| 21 | Lemma | hash_E_odd | Lemma hash_E_odd n : segRLs source_tm (hashes^^(2*n+3)) (hashes^^n) E8 B8. | L156 | new |
| 22 | Lemma | bfinish_spec | Lemma bfinish_spec ds out : segRLs source_tm (hashes^^(bfinish_count ds out)) (hashes^^out) (digits_word ds) (B8^^length ds). | L166 | new |
| 23 | Lemma | hashes_U | Lemma hashes_U n : segRLs source_tm (hashes^^n) (hashes^^n) U U. | L176 | new |
| 24 | Lemma | hashes_U_run | Lemma hashes_U_run signals width : segRLs source_tm (hashes^^signals) (hashes^^signals) (U^^width) (U^^width). | L182 | new |
| 25 | Lemma | segRLs_0inf | Lemma segRLs_0inf {hs input output} :
segRLs source_tm hs [] input output ->
sideRLs source_tm hs (input *> 0inf) (output *> 0inf). | L189 | new |
| 26 | Definition | common_left_wall | Definition common_left_wall : side := 0inf <* <[1;0;1;0;0;1;0;0]. | L195 | new |
| 27 | Lemma | sobc1_emit_hash | Lemma sobc1_emit_hash r :
common_left_wall {{{((F, []), L)}}} r -[source_tm]->+
common_left_wall {{{((B, []), R)}}} (U *> r). | L198 | new |
| 28 | Lemma | sobc1_hash_CABAD | Lemma sobc1_hash_CABAD k : segRLs source_tm hashes [] (C8 ++ A8^^k ++ B8 ++ A8 ++ D8) (D8 ++ C8^^k ++ B8 ++ U^^2 ++ A8). | L207 | new |
| 29 | Lemma | sobc1_hash_CAB1110 | Lemma sobc1_hash_CAB1110 k : segRLs source_tm hashes [] (C8 ++ A8^^k ++ B8 ++ [1;1;1;0]) (D8 ++ C8^^k ++ B8 ++ U). | L215 | new |
| 30 | Lemma | sobc1_extra_CC | Lemma sobc1_extra_CC : segRLs source_tm hashes [] (C8 ++ C8) (D8 ++ A8). | L223 | new |
| 31 | Definition | sobc12_left_wall | Definition sobc12_left_wall : side := 0inf <* <[1;0;1;0;0;1;0;0]. | L229 | new |
| 32 | Definition | sobc1_first_word | Definition sobc1_first_word : list Sym := U^^22 ++ A8^^3 ++ D8 ++ C8 ++ A8 ++ U^^28 ++ A8 ++ A8 ++ B8 ++ A8. | L232 | new |
| 33 | Definition | sobc1_first_call | Definition sobc1_first_call : Q * tape :=
sobc12_left_wall {{{((B, []), R)}}} (sobc1_first_word *> 0inf). | L235 | new |
| 34 | Lemma | sobc1_first_call_reachable | Lemma sobc1_first_call_reachable : c0 -[source_tm]->> 24396 / sobc1_first_call. | L238 | new |
| 35 | Definition | centered_step | Definition centered_step (d : Z) : Z := - ((d + 1) / 2). | L244 | new |
| 36 | Lemma | centered_step_twice | Lemma centered_step_twice d : centered_step (centered_step d) = (d + 1) / 4. | L246 | new |
| 37 | Definition | pow4 | Definition pow4 (k : nat) : Z := Z.of_nat (Nat.pow 4 k). | L251 | new |
| 38 | Definition | pow2 | Definition pow2 (k : nat) : Z := Z.of_nat (Nat.pow 2 k). | L252 | new |
| 39 | Lemma | pow4_succ | Lemma pow4_succ k : pow4 (S k) = 4 * pow4 k. | L254 | new |
| 40 | Lemma | pow2_pos | Lemma pow2_pos k : 0 < pow2 k. | L260 | new |
| 41 | Lemma | pow2_succ | Lemma pow2_succ k : pow2 (S k) = 2 * pow2 k. | L265 | new |
| 42 | Theorem | centered_converges_2w | Theorem centered_converges_2w w d : (2 <= w)%nat -> (- pow2 w < d < pow2 w)%Z -> Nat.iter (2 * w) centered_step d = 0. | L271 | new |
| 43 | Definition | stable_column_step | Definition stable_column_step (half v : Z) : Z := half - v / 2. | L282 | new |
| 44 | Lemma | stable_column_centered | Lemma stable_column_centered half p d : (2 * half = 3 * p - 1)%Z -> (p mod 2 = 1)%Z -> stable_column_step half (p + d) = p + centered_step d. | L287 | new |
| 45 | Lemma | stable_column_iter_centered | Lemma stable_column_iter_centered half p n d : (2 * half = 3 * p - 1)%Z -> (p mod 2 = 1)%Z -> Nat.iter n (stable_column_step half) (p + d) = p + Nat.iter n centered_step d. | L295 | new |
| 46 | Theorem | stable_column_converges_2w | Theorem stable_column_converges_2w half p w v : (2 <= w)%nat -> (2 * half = 3 * p - 1)%Z -> (p mod 2 = 1)%Z -> (- pow2 w < v - p < pow2 w)%Z -> Nat.iter (2 * w) (stable_column_step half) v = p. | L305 | new |
| 47 | Definition | odd_column_width | Definition odd_column_width (k : nat) : nat := (2 * k + 1)%nat. | L318 | new |
| 48 | Definition | odd_column_half | Definition odd_column_half (k : nat) : Z := pow4 k. | L319 | new |
| 49 | Fixpoint | odd_column_fixed | Fixpoint odd_column_fixed (k : nat) : Z := match k with O => 1 | S k' => 4 * odd_column_fixed k' - 1 end. | L320 | new |
| 50 | Lemma | odd_column_fixed_pos | Lemma odd_column_fixed_pos k : 0 < odd_column_fixed k. | L323 | new |
| 51 | Lemma | pow2_even_width | Lemma pow2_even_width k : pow2 (2 * k) = pow4 k. | L328 | new |
| 52 | Lemma | pow2_odd_width | Lemma pow2_odd_width k : pow2 (odd_column_width k) = 2 * odd_column_half k. | L336 | new |
| 53 | Lemma | odd_column_fixed_equation | Lemma odd_column_fixed_equation k : 2 * odd_column_half k = 3 * odd_column_fixed k - 1. | L344 | new |
| 54 | Lemma | odd_column_fixed_odd | Lemma odd_column_fixed_odd k : odd_column_fixed k mod 2 = 1. | L351 | new |
| 55 | Theorem | odd_column_converges | Theorem odd_column_converges k v : (1 <= k)%nat -> (- pow2 (odd_column_width k) < v - odd_column_fixed k < pow2 (odd_column_width k))%Z -> Nat.iter (2 * odd_column_width k) (stable_column_step (odd_column_half k)) v = odd_column_fixed k. | L356 | new |
| 56 | Fixpoint | initial_u_pair_calls | Fixpoint initial_u_pair_calls (primary pairs : nat) : nat := match pairs with | O => O | S pairs' => 2 * 2^primary + initial_u_pair_calls (S primary) pairs' end. | L371 | new |
| 57 | Definition | sobc1_initial_pre_calls | Definition sobc1_initial_pre_calls : nat := 2^3 + (initial_u_pair_calls 4 14 + (2^18 + (2^18 + (2^19 + (2^19 + (2^21 + (2^21 + 2^22))))))). | L376 | new |
| 58 | Lemma | initial_u_pair_calls_formula | Lemma initial_u_pair_calls_formula primary pairs : initial_u_pair_calls primary pairs = 2^(primary+1) * (2^pairs-1). | L381 | new |
| 59 | Definition | sobc1_first_half | Definition sobc1_first_half : nat := 2^23 + 2^22 + 2^20 - 2. | L394 | new |
| 60 | Lemma | sobc1_initial_total_half | Lemma sobc1_initial_total_half : 22 + sobc1_initial_pre_calls + (2^24-1) = 2*sobc1_first_half+1. | L399 | new |
| 61 | Theorem | standard_mixed_to_binary_out_spec | Theorem standard_mixed_to_binary_out_spec e ds out : length ds = S e -> segRLs source_tm (hashes ^^ ((out + 1) * 2 ^ (S e) - 2 + digits_value ds)) (hashes ^^ out) (E8^^e ++ A8) … +1 lines | L407 | new |
| 62 | Corollary | standard_mixed_to_binary_spec | Corollary standard_mixed_to_binary_spec e ds : length ds = S e -> segRLs source_tm (hashes ^^ (2 ^ (S e) - 2 + digits_value ds)) [] (E8^^e ++ A8) (digits_word ds). | L443 | new |
| 63 | Lemma | prefix_E_even | Lemma prefix_E_even k n input output carries : segRLs source_tm (hashes^^n) (hashes^^carries) input output -> segRLs source_tm (hashes^^(2^k*n+2*(2^k-1))) (hashes^^carries) (E8^^k ++ input) (A8^^k ++ output). | L453 | new |
| 64 | Definition | exception_pre_left | Definition exception_pre_left (n : nat) : side := ([1;0;1;0] ++ V4^^(2*n+2) ++ [1;0;1]) *> 0inf. | L468 | new |
| 65 | Definition | exception_call_left | Definition exception_call_left (remaining finished : nat) : side := (X4^^(2*finished+5) ++ V4^^(2*remaining) ++ [1;0;1]) *> 0inf. | L470 | new |
| 66 | Definition | exception_raw_source | Definition exception_raw_source (n w : nat) : Q * tape :=
common_left_wall {{{((B, []), R)}}}
((U^^(2*n+1) ++ B8^^(S w) ++ [1;1]) *> 0inf). | L472 | new |
| 67 | Definition | exception_pre | Definition exception_pre (n w : nat) : Q * tape :=
exception_pre_left n {{{((F, []), L)}}}
((E8^^w ++ A8) *> 0inf). | L475 | new |
| 68 | Lemma | raw_U_to_X | Lemma raw_U_to_X : segRR source_tm (B, []) (B, []) U X4. | L479 | new |
| 69 | Lemma | segRR_lpow_same | Lemma segRR_lpow_same h w v k : segRR source_tm h h w v -> segRR source_tm h h (w^^k) (v^^k). | L487 | new |
| 70 | Lemma | raw_Us_to_Xs | Lemma raw_Us_to_Xs k : segRR source_tm (B, []) (B, []) (U^^k) (X4^^k). | L498 | new |
| 71 | Lemma | raw_B_forward | Lemma raw_B_forward : segRR source_tm (B, []) (B, []) B8 Q8. | L505 | new |
| 72 | Lemma | raw_B_return | Lemma raw_B_return l r :
([1;0;1] *> Q8 *> l) {{{((F, []), L)}}} r -[source_tm]->+
([1;0;1] *> l) {{{((F, []), L)}}} (E8 *> r). | L513 | new |
| 73 | Lemma | raw_exception_tail_base | Lemma raw_exception_tail_base l :
l {{{((B, []), R)}}} ((B8 ++ [1;1]) *> 0inf) -[source_tm]->+
([1;0;1] *> l) {{{((F, []), L)}}} (A8 *> 0inf). | L522 | new |
| 74 | Lemma | raw_exception_tail | Lemma raw_exception_tail w l :
l {{{((B, []), R)}}}
((B8^^(S w) ++ [1;1]) *> 0inf) -[source_tm]->+
([1;0;1] *> l) {{{((F, []), L)}}}
((E8^^w ++ A8) *> 0inf). | L531 | new |
| 75 | Lemma | exception_pre_left_direct | Lemma exception_pre_left_direct n : ([1;0;1] *> X4^^(2*n+1) *> Q8 *> 0inf) = exception_pre_left n. | L548 | new |
| 76 | Lemma | exception_raw_to_pre | Lemma exception_raw_to_pre n w : exception_raw_source n w -[source_tm]->* exception_pre n w. | L556 | new |
| 77 | Definition | left_hash | Definition left_hash : DH0 * DH0 := ((F, []), (B, [])). | L570 | new |
| 78 | Lemma | left_hash_XX | Lemma left_hash_XX : segRLs (flip source_tm) [left_hash] [left_hash] (X4^^2) (X4^^2). | L572 | new |
| 79 | Lemma | left_relaunch_base | Lemma left_relaunch_base : segRLs (flip source_tm) [left_hash] [] (X4^^5 ++ V4^^2) (X4^^7). | L579 | new |
| 80 | Lemma | left_hash_X_pairs | Lemma left_hash_X_pairs k : segRLs (flip source_tm) [left_hash] [left_hash] (X4^^(2*k)) (X4^^(2*k)). | L586 | new |
| 81 | Lemma | left_launch_segment | Lemma left_launch_segment : segRLs (flip source_tm) [left_hash] [] ([1;0;1;0] ++ V4^^4) (X4^^5). | L596 | new |
| 82 | Lemma | exception_launch | Lemma exception_launch k : sideRLs (flip source_tm) [left_hash] (exception_pre_left (S k)) (exception_call_left k 0). | L603 | new |
| 83 | Lemma | exception_relaunch_side | Lemma exception_relaunch_side remaining finished : sideRLs (flip source_tm) [left_hash] (exception_call_left (S remaining) finished) (exception_call_left remaining (S finished)). | L616 | new |
| 84 | Lemma | exception_relaunches | Lemma exception_relaunches k finished : sideRLs (flip source_tm) ([left_hash]^^k) (exception_call_left k finished) (exception_call_left 0 (finished+k)). | L636 | new |
| 85 | Lemma | exception_calls | Lemma exception_calls k input output :
segRLs source_tm (hashes^^(S k)) [] input output ->
exception_call_left k 0 {{{((B, []), R)}}} (input *> 0inf)
-[source_tm]->+
exception_call_left 0 k {{{((F, []), L)}}} (output *> 0inf). | L648 | new |
| 86 | Definition | exception_done | Definition exception_done (n : nat) (output : list Sym) : Q * tape :=
common_left_wall {{{((B, []), R)}}}
((C8 ++ A8 ++ U^^(2*n) ++ output) *> 0inf). | L664 | new |
| 87 | Lemma | exception_exit | Lemma exception_exit k output :
exception_call_left 0 k {{{((F, []), L)}}} (output *> 0inf)
-[source_tm]->+ exception_done (S k) output. | L668 | new |
| 88 | Lemma | exception_launch_progress | Lemma exception_launch_progress k r :
exception_pre_left (S k) {{{((F, []), L)}}} r -[source_tm]->+
exception_call_left k 0 {{{((B, []), R)}}} r. | L678 | new |
| 89 | Lemma | exception_exit_zero | Lemma exception_exit_zero output :
exception_pre_left 0 {{{((F, []), L)}}} (output *> 0inf)
-[source_tm]->+ exception_done 0 output. | L685 | new |
| 90 | Lemma | exception_pre_from_seg | Lemma exception_pre_from_seg n input output :
segRLs source_tm (hashes^^n) [] input output ->
exception_pre_left n {{{((F, []), L)}}} (input *> 0inf)
-[source_tm]->+ exception_done n output. | L693 | new |
| 91 | Theorem | sobc1_exception_from_seg | Theorem sobc1_exception_from_seg n w output : segRLs source_tm (hashes^^n) [] (E8^^w ++ A8) output -> exception_raw_source n w -[source_tm]->* exception_done n output. | L706 | new |
| 92 | Fixpoint | even_residue | Fixpoint even_residue (n : nat) : Z := match n with | O => 3 | S n' => 4 * even_residue n' + 1 end. | L722 | new |
| 93 | Fixpoint | odd_residue | Fixpoint odd_residue (n : nat) : Z := match n with | O => 26 | S n' => 4 * odd_residue n' - 2 end. | L727 | new |
| 94 | Definition | even_residue_width | Definition even_residue_width (n : nat) : nat := (2 * n + 4)%nat. | L732 | new |
| 95 | Definition | odd_residue_width | Definition odd_residue_width (n : nat) : nat := (2 * n + 5)%nat. | L733 | new |
| 96 | Lemma | even_residue_bounds | Lemma even_residue_bounds n : 3 <= even_residue n <= pow2 (even_residue_width n) - 6. | L735 | new |
| 97 | Lemma | even_residue_S_lower | Lemma even_residue_S_lower n : 13 <= even_residue (S n). | L745 | new |
| 98 | Lemma | odd_residue_bounds | Lemma odd_residue_bounds n : 3 <= odd_residue n <= pow2 (odd_residue_width n) - 6. | L751 | new |
| 99 | Lemma | odd_residue_complement | Lemma odd_residue_complement n : odd_residue n = 2 * (pow2 (even_residue_width n) - even_residue n). | L763 | new |
| 100 | Lemma | even_residue_complement | Lemma even_residue_complement n : even_residue (S n) = 2 * (pow2 (odd_residue_width n) - odd_residue n) + 1. | L774 | new |
| 101 | Lemma | low_step_odd_to_even | Lemma low_step_odd_to_even n : pow2 (even_residue_width n) - odd_residue n / 2 = even_residue n. | L784 | new |
| 102 | Lemma | low_step_even_to_odd | Lemma low_step_even_to_odd n : pow2 (odd_residue_width n) - even_residue (S n) / 2 = odd_residue n. | L791 | new |
| 103 | Definition | z_birth_value | Definition z_birth_value (n : nat) : Z := 2 * (pow2 (even_residue_width (S n)) - even_residue (S n)) + 1. | L799 | new |
| 104 | Definition | z_birth_width | Definition z_birth_width (n : nat) : nat := (2 * n + 7)%nat. | L801 | new |
| 105 | Lemma | z_birth_complement | Lemma z_birth_complement n : z_birth_value n = 2 * (pow2 (even_residue_width (S n)) - even_residue (S n)) + 1. | L803 | new |
| 106 | Lemma | z_birth_zero | Lemma z_birth_zero : z_birth_value O = 103. | L810 | new |
| 107 | Lemma | z_birth_succ | Lemma z_birth_succ n : z_birth_value (S n) = 4 * z_birth_value n - 5. | L815 | new |
| 108 | Lemma | z_birth_bounds | Lemma z_birth_bounds n : 3 <= z_birth_value n <= pow2 (z_birth_width n) - 6. | L824 | new |
| 109 | Lemma | z_birth_first_low_step | Lemma z_birth_first_low_step n : pow2 (even_residue_width (S n)) - z_birth_value n / 2 = even_residue (S n). | L835 | new |
| 110 | Definition | low_slice | Definition low_slice (total : Z) (m : nat) (r v : Z) : Prop := exists high capacity, total = capacity * pow2 m /\ v = high * pow2 m + r /\ (0 <= high < capacity)%Z. | L844 | new |
| 111 | Lemma | low_slice_safe | Lemma low_slice_safe total m r v : low_slice total m r v -> (3 <= r <= pow2 m - 6)%Z -> (3 <= v <= total - 6)%Z. | L850 | new |
| 112 | Lemma | low_slice_step | Lemma low_slice_step total m r v (right_odd : bool) : low_slice total (S m) r v -> (3 <= r < pow2 (S m))%Z -> low_slice total m (pow2 m - r / 2) ((if right_odd then total / 2 else total) - v / 2). | L863 | new |
| 113 | Lemma | z_birth_low_slice | Lemma z_birth_low_slice n : low_slice (pow2 (z_birth_width n)) (z_birth_width n) (z_birth_value n) (z_birth_value n). | L882 | new |
| 114 | Inductive | LineagePhase | Inductive LineagePhase := | LBirth (n : nat) | LEven (n : nat) | LOdd (n : nat). | L888 | new |
| 115 | Definition | lineage_width | Definition lineage_width (p : LineagePhase) : nat := match p with | LBirth n => z_birth_width n | LEven n => even_residue_width n | LOdd n => odd_residue_width n end. | L892 | new |
| 116 | Definition | lineage_residue | Definition lineage_residue (p : LineagePhase) : Z := match p with | LBirth n => z_birth_value n | LEven n => even_residue n | LOdd n => odd_residue n end. | L898 | new |
| 117 | Inductive | lineage_next | Inductive lineage_next : LineagePhase -> LineagePhase -> Prop := | lineage_birth n : lineage_next (LBirth n) (LEven (S n)) | lineage_even n : lineage_next (LEven (S n)) (LOdd n) | lineage_odd n : lineage_next (LOdd n) (LEven n). | L904 | new |
| 118 | Definition | arbitrary_column_step | Definition arbitrary_column_step (total : Z) (right_odd : bool) (v : Z) : Z := (if right_odd then total / 2 else total) - v / 2. | L908 | new |
| 119 | Lemma | lineage_residue_bounds | Lemma lineage_residue_bounds p : (3 <= lineage_residue p <= pow2 (lineage_width p) - 6)%Z. | L911 | new |
| 120 | Lemma | lineage_next_width | Lemma lineage_next_width p p' : lineage_next p p' -> lineage_width p = S (lineage_width p'). | L920 | new |
| 121 | Lemma | lineage_next_low_step | Lemma lineage_next_low_step p p' : lineage_next p p' -> pow2 (lineage_width p') - lineage_residue p / 2 = lineage_residue p'. | L927 | new |
| 122 | Lemma | lineage_step_preserves_slice | Lemma lineage_step_preserves_slice total p p' v right_odd : lineage_next p p' -> low_slice total (lineage_width p) (lineage_residue p) v -> low_slice total (lineage_width p') (lineage_residue p') (arbitrary_column_step total right_odd v). | L938 | new |
| 123 | Definition | lineage_fuel | Definition lineage_fuel (p : LineagePhase) : nat := match p with | LBirth n => 2 * n + 3 | LEven n => 2 * n | LOdd n => 2 * n + 1 end. | L955 | new |
| 124 | Fixpoint | zinputs | Fixpoint zinputs (total : Z) (inputs : list bool) (v : Z) : Z := match inputs with | [] => v | b::inputs' => zinputs total inputs' (arbitrary_column_step total b v) end. | L961 | new |
| 125 | Theorem | lineage_inputs_safe | Theorem lineage_inputs_safe total p v inputs : (length inputs <= lineage_fuel p)%nat -> low_slice total (lineage_width p) (lineage_residue p) v -> (3 <= zinputs total inputs v <= total-6)%Z. | L967 | new |
| 126 | Definition | ordinary_left | Definition ordinary_left (u : nat) : side := X4^^u *> common_left_wall. | L984 | new |
| 127 | Lemma | left_emit_zero | Lemma left_emit_zero : sideRLs (flip source_tm) [left_hash] (ordinary_left 0) (ordinary_left 1). | L986 | new |
| 128 | Lemma | left_emit_one | Lemma left_emit_one : sideRLs (flip source_tm) [left_hash] (ordinary_left 1) (ordinary_left 2). | L997 | new |
| 129 | Lemma | nat_ind2 | Lemma nat_ind2 (P : nat -> Prop) : P 0%nat -> P 1%nat -> (forall n, P n -> P (S (S n))) -> forall n, P n. | L1008 | new |
| 130 | Lemma | left_emit_call | Lemma left_emit_call u : sideRLs (flip source_tm) [left_hash] (ordinary_left u) (ordinary_left (S u)). | L1019 | new |
| 131 | Lemma | left_emit_calls | Lemma left_emit_calls k u : sideRLs (flip source_tm) ([left_hash]^^k) (ordinary_left u) (ordinary_left (u+k)). | L1033 | new |
| 132 | Lemma | ordinary_emit_progress | Lemma ordinary_emit_progress u r :
ordinary_left u {{{((F, []), L)}}} r -[source_tm]->+
ordinary_left (S u) {{{((B, []), R)}}} r. | L1044 | new |
| 133 | Lemma | ordinary_seg_return | Lemma ordinary_seg_return k u input output r :
segRLs source_tm (hashes^^(S k)) [] input output ->
ordinary_left u {{{((B, []), R)}}} (input *> r) -[source_tm]->+
ordinary_left (u + k) {{{((F, []), L)}}} (output *> r). | L1051 | new |
| 134 | Lemma | ordinary_seg_run | Lemma ordinary_seg_run k u input output r :
segRLs source_tm (hashes^^(S k)) [] input output ->
ordinary_left u {{{((B, []), R)}}} (input *> r) -[source_tm]->+
ordinary_left (u + S k) {{{((B, []), R)}}} (output *> r). | L1068 | new |
| 135 | Lemma | ordinary_seg_run_pos | Lemma ordinary_seg_run_pos calls u input output r :
1 <= calls -> segRLs source_tm (hashes^^calls) [] input output ->
ordinary_left u {{{((B, []), R)}}} (input *> r) -[source_tm]->+
ordinary_left (u + calls) {{{((B, []), R)}}} (output *> r). | L1079 | new |
| 136 | Lemma | raw_X_return | Lemma raw_X_return l r :
(X4 *> l) {{{((F, []), L)}}} r -[source_tm]->+
l {{{((F, []), L)}}} (U *> r). | L1089 | new |
| 137 | Lemma | raw_X_returns | Lemma raw_X_returns u l r :
(X4^^u *> l) {{{((F, []), L)}}} r -[source_tm]->*
l {{{((F, []), L)}}} (U^^u *> r). | L1097 | new |
| 138 | Lemma | ordinary_return_wall | Lemma ordinary_return_wall u r :
ordinary_left u {{{((F, []), L)}}} r -[source_tm]->*
common_left_wall {{{((F, []), L)}}} (U^^u *> r). | L1111 | new |
| 139 | Lemma | ordinary_seg_to_wall | Lemma ordinary_seg_to_wall k u input output r :
segRLs source_tm (hashes^^(S k)) [] input output ->
ordinary_left u {{{((B, []), R)}}} (input *> r) -[source_tm]->+
common_left_wall {{{((B, []), R)}}}
((U^^(u + S k) ++ output) *> r). | L1119 | new |
| 140 | Fixpoint | z_tail_digits | Fixpoint z_tail_digits (n : nat) : list BDigit := match n with | O => [BA; BA; BB; BB] | S n' => BA :: BB :: z_tail_digits n' end. | L1134 | new |
| 141 | Definition | z_digits | Definition z_digits (n : nat) : list BDigit := BB :: BB :: BB :: z_tail_digits n. | L1139 | new |
| 142 | Lemma | z_tail_digits_length | Lemma z_tail_digits_length n : length (z_tail_digits n) = 2 * n + 4. | L1142 | new |
| 143 | Lemma | z_digits_length | Lemma z_digits_length n : length (z_digits n) = z_birth_width n. | L1147 | new |
| 144 | Lemma | z_digits_value_zero | Lemma z_digits_value_zero : digits_value (z_digits O) = 103. | L1154 | new |
| 145 | Lemma | z_digits_value_succ | Lemma z_digits_value_succ n : digits_value (z_digits (S n)) + 5 = 4 * digits_value (z_digits n). | L1159 | new |
| 146 | Theorem | z_digits_value | Theorem z_digits_value n : Z.of_nat (digits_value (z_digits n)) = z_birth_value n. | L1165 | new |
| 147 | Theorem | digits_exist | Theorem digits_exist width value : value < 2 ^ width -> exists ds, length ds = width /\ digits_value ds = value. | L1175 | new |
| 148 | Lemma | cd_start | Lemma cd_start : segRLs source_tm (hashes^^2) [] (C8 ++ A8 ++ U^^2) (A8 ++ C8 ++ A8). | L1202 | new |
| 149 | Definition | cd_calls | Definition cd_calls (n : nat) : nat := 2 * (2^n - 1). | L1208 | new |
| 150 | Definition | cd_input | Definition cd_input (n : nat) : list Sym := C8 ++ A8 ++ U^^(2*n). | L1209 | new |
| 151 | Definition | cd_output | Definition cd_output (n : nat) : list Sym := A8^^n ++ C8 ++ A8. | L1210 | new |
| 152 | Lemma | cd_batch | Lemma cd_batch n : segRLs source_tm (hashes^^cd_calls n) [] (cd_input n) (cd_output n). | L1212 | new |
| 153 | Definition | after_cd | Definition after_cd (n : nat) (tail : list Sym) : Q * tape :=
ordinary_left (cd_calls n) {{{((B, []), R)}}}
((cd_output n ++ tail) *> 0inf). | L1229 | new |
| 154 | Lemma | cd_calls_positive | Lemma cd_calls_positive n : 1 <= n -> 1 <= cd_calls n. | L1233 | new |
| 155 | Lemma | exception_done_cd | Lemma exception_done_cd n tail : 1 <= n -> exception_done n tail -[source_tm]->+ after_cd n tail. | L1241 | new |
| 156 | Lemma | all_A_cycles | Lemma all_A_cycles width signals : segRLs source_tm (hashes^^(signals * 2^width)) (hashes^^signals) (A8^^width) (A8^^width). | L1252 | new |
| 157 | Lemma | primary_lift | Lemma primary_lift signals width input output : segRLs source_tm (hashes^^signals) [] input output -> segRLs source_tm (hashes^^(signals*2^width)) [] (A8^^width ++ input) (A8^^width ++ output). | L1266 | new |
| 158 | Lemma | primary_one_rule | Lemma primary_one_rule p w1 w2 : segRLs source_tm hashes [] w1 w2 -> segRLs source_tm (hashes^^(2^p)) [] (A8^^p ++ w1) (A8^^p ++ w2). | L1274 | new |
| 159 | Definition | ca_pair_calls | Definition ca_pair_calls (width : nat) : nat := 2 * 2^width. | L1284 | new |
| 160 | Lemma | ca_pair0 | Lemma ca_pair0 : segRLs source_tm (hashes^^2) [] (C8 ++ C8) (A8^^2). | L1286 | new |
| 161 | Lemma | ca_pair | Lemma ca_pair width rest : segRLs source_tm (hashes^^ca_pair_calls width) [] (A8^^width ++ C8 ++ C8 ++ rest) (A8^^(width+2) ++ rest). | L1291 | new |
| 162 | Fixpoint | c_sweep_calls | Fixpoint c_sweep_calls (width pairs : nat) : nat := match pairs with | O => O | S pairs' => ca_pair_calls width + c_sweep_calls (width+2) pairs' end. | L1300 | new |
| 163 | Lemma | c_sweep | Lemma c_sweep width pairs rest : segRLs source_tm (hashes^^c_sweep_calls width pairs) [] (A8^^width ++ C8^^(2*pairs+1) ++ rest) (A8^^(width+2*pairs) ++ C8 ++ rest). | L1306 | new |
| 164 | Definition | ca_finish_calls | Definition ca_finish_calls (width : nat) : nat := 4 * 2^width. | L1324 | new |
| 165 | Lemma | ca_finish0 | Lemma ca_finish0 : segRLs source_tm (hashes^^4) [] (C8 ++ B8 ++ U ++ [1;1;1;1] ++ A8 ++ B8 ++ A8) (A8^^3 ++ U^^2 ++ B8 ++ B8). | L1326 | new |
| 166 | Lemma | ca_finish | Lemma ca_finish width rest :
segRLs source_tm
(hashes^^ca_finish_calls width) []
(A8^^width ++ C8 ++ B8 ++ U ++ [1;1;1;1] ++
A8 ++ B8 ++ A8 ++ rest)
(A8^^(width+3) ++ U^^2 ++ B8 ++ B8 ++ rest). | L1334 | new |
| 167 | Definition | ca_start_calls | Definition ca_start_calls (width : nat) : nat := 2 * 2^width. | L1345 | new |
| 168 | Lemma | ca_start0 | Lemma ca_start0 k : segRLs source_tm (hashes^^2) [] (C8 ++ A8^^k ++ B8 ++ B8 ++ A8 ++ B8 ++ A8) (A8 ++ C8^^k ++ B8 ++ U ++ [1;1;1;1] ++ A8 ++ B8 ++ A8). | L1347 | new |
| 169 | Lemma | ca_start | Lemma ca_start width k rest :
segRLs source_tm
(hashes^^ca_start_calls width) []
(A8^^width ++ C8 ++ A8^^k ++ B8 ++ B8 ++
A8 ++ B8 ++ A8 ++ rest)
(A8^^(width+1) ++ C8^^k ++ B8 ++ U ++ [1;1;1;1] ++
… +1 lines | L1364 | new |
| 170 | Definition | ca_calls | Definition ca_calls (primary pairs : nat) : nat := ca_start_calls primary + (c_sweep_calls (primary+1) pairs + ca_finish_calls (primary+1+2*pairs)). | L1376 | new |
| 171 | Lemma | ca_batch | Lemma ca_batch primary pairs rest :
segRLs source_tm
(hashes^^ca_calls primary pairs) []
(A8^^primary ++ C8 ++ A8^^(2*pairs+1) ++
B8 ++ B8 ++ A8 ++ B8 ++ A8 ++ rest)
(A8^^(primary+2*pairs+4) ++ U^^2 ++ B8 ++ B8 ++ rest). | L1381 | new |
| 172 | Record | BinaryColumn | Record BinaryColumn := mkBinaryColumn {
column_e : nat;
column_digits : list BDigit;
column_length : length column_digits = S column_e
}. | L1398 | new |
| 173 | Definition | mixed_column_word | Definition mixed_column_word (c : BinaryColumn) : list Sym := E8^^column_e c ++ A8. | L1403 | new |
| 174 | Definition | binary_column_word | Definition binary_column_word (c : BinaryColumn) : list Sym := digits_word (column_digits c). | L1405 | new |
| 175 | Definition | column_required | Definition column_required (out : nat) (c : BinaryColumn) : nat := (out + 1) * 2 ^ S (column_e c) - 2 + digits_value (column_digits c). | L1407 | new |
| 176 | Fixpoint | mixed_columns_required | Fixpoint mixed_columns_required (columns : list BinaryColumn) : nat := match columns with | [] => 0 | c :: columns' => column_required (mixed_columns_required columns') c end. | L1410 | new |
| 177 | Fixpoint | spaced_words | Fixpoint spaced_words (words : list (list Sym)) : list Sym := match words with | [] => [] | [word] => word | word :: words' => word ++ U^^2 ++ spaced_words words' end. | L1415 | new |
| 178 | Definition | mixed_columns_word | Definition mixed_columns_word columns := spaced_words (map mixed_column_word columns). | L1421 | new |
| 179 | Definition | binary_columns_word | Definition binary_columns_word columns := spaced_words (map binary_column_word columns). | L1423 | new |
| 180 | Lemma | mixed_column_spec | Lemma mixed_column_spec c out : segRLs source_tm (hashes ^^ column_required out c) (hashes ^^ out) (mixed_column_word c) (binary_column_word c). | L1426 | new |
| 181 | Theorem | mixed_columns_spec | Theorem mixed_columns_spec columns : segRLs source_tm (hashes ^^ mixed_columns_required columns) [] (mixed_columns_word columns) (binary_columns_word columns). | L1438 | new |
| 182 | Definition | widths_sum | Definition widths_sum (es : list nat) : nat := fold_right (fun e n => S e+n) 0%nat es. | L1459 | new |
| 183 | Lemma | widths_sum_nil | Lemma widths_sum_nil : widths_sum [] = 0%nat. | L1462 | new |
| 184 | Lemma | widths_sum_cons | Lemma widths_sum_cons e es : widths_sum (e::es) = S e + widths_sum es. | L1467 | new |
| 185 | Definition | columns_widths | Definition columns_widths columns := map S (map column_e columns). | L1471 | new |
| 186 | Definition | columns_width_sum | Definition columns_width_sum columns := fold_right Nat.add 0%nat (columns_widths columns). | L1472 | new |
| 187 | Lemma | columns_width_sum_cons | Lemma columns_width_sum_cons c columns : columns_width_sum (c :: columns) = S (column_e c) + columns_width_sum columns. | L1475 | new |
| 188 | Lemma | columns_width_sum_singleton | Lemma columns_width_sum_singleton c : columns_width_sum [c] = S (column_e c). | L1481 | new |
| 189 | Lemma | widths_sum_column_es | Lemma widths_sum_column_es columns : widths_sum (map column_e columns) = columns_width_sum columns. | L1487 | new |
| 190 | Lemma | map_S_injective | Lemma map_S_injective xs ys : map S xs = map S ys -> xs = ys. | L1494 | new |
| 191 | Lemma | columns_width_sum_positive | Lemma columns_width_sum_positive columns : columns <> [] -> 1 <= columns_width_sum columns. | L1501 | new |
| 192 | Fixpoint | geom4n | Fixpoint geom4n (n : nat) : nat := match n with | O => O | S n' => 1 + 4 * geom4n n' end. | L1506 | new |
| 193 | Definition | half_parameter | Definition half_parameter (n : nat) : nat := 2*n+6. | L1511 | new |
| 194 | Definition | round_primary_width | Definition round_primary_width (current previous : nat) : nat := half_parameter current + half_parameter previous + 6. | L1512 | new |
| 195 | Definition | round_outer_suffix | Definition round_outer_suffix (previous : nat) : list BDigit := [BB; BB; BA; BB; BA; BB] ++ z_tail_digits previous. | L1514 | new |
| 196 | Definition | round_outer_digits | Definition round_outer_digits (current previous : nat) : list BDigit := repeat BA (half_parameter current + 2) ++ round_outer_suffix previous. | L1516 | new |
| 197 | Definition | round_post_unary | Definition round_post_unary (current previous : nat) : nat := cd_calls (half_parameter current) + ca_calls (half_parameter current) (previous+4). | L1519 | new |
| 198 | Lemma | geom4n_succ | Lemma geom4n_succ n : geom4n (S n) = 1 + 4 * geom4n n. | L1523 | new |
| 199 | Lemma | c_sweep_calls_formula | Lemma c_sweep_calls_formula width pairs : c_sweep_calls width pairs = 2^(width+1) * geom4n pairs. | L1528 | new |
| 200 | Lemma | ca_calls_formula | Lemma ca_calls_formula primary pairs : ca_calls primary pairs = 2^(primary+1) + (2^(primary+2) * geom4n pairs + 2^(primary+2*pairs+3)). | L1540 | new |
| 201 | Lemma | cd_calls_formula | Lemma cd_calls_formula n : 1 <= n -> cd_calls n = 2^(n+1)-2. | L1557 | new |
| 202 | Lemma | round_post_unary_formula | Lemma round_post_unary_formula current previous :
round_post_unary current previous =
2^(half_parameter current+2) *
(1 + geom4n (previous+4) + 2^(2*(previous+4)+1)) - 2. | L1564 | new |
| 203 | Lemma | digits_value_app | Lemma digits_value_app ds1 ds2 : digits_value (ds1 ++ ds2) = digits_value ds1 + 2^(length ds1) * digits_value ds2. | L1588 | new |
| 204 | Lemma | digits_value_repeat_BA | Lemma digits_value_repeat_BA n : digits_value (repeat BA n) = 0%nat. | L1598 | new |
| 205 | Lemma | round_outer_suffix_length | Lemma round_outer_suffix_length previous : length (round_outer_suffix previous) = 2*previous+10. | L1603 | new |
| 206 | Lemma | round_outer_digits_length | Lemma round_outer_digits_length current previous : length (round_outer_digits current previous) = round_primary_width current previous. | L1610 | new |
| 207 | Lemma | round_outer_suffix_zero | Lemma round_outer_suffix_zero : digits_value (round_outer_suffix 0) = 811. | L1618 | new |
| 208 | Lemma | round_outer_suffix_succ | Lemma round_outer_suffix_succ previous : digits_value (round_outer_suffix (S previous)) + 1 = 4 * digits_value (round_outer_suffix previous). | L1623 | new |
| 209 | Lemma | round_outer_suffix_formula | Lemma round_outer_suffix_formula previous :
2 * digits_value (round_outer_suffix previous) =
1 + geom4n (previous+4) +
2^(2*(previous+4)+1) + 2^(2*(previous+4)+2). | L1632 | new |
| 210 | Lemma | round_outer_digits_value | Lemma round_outer_digits_value current previous :
digits_value (round_outer_digits current previous) =
2^(half_parameter current+1) *
(1 + geom4n (previous+4) +
2^(2*(previous+4)+1) + 2^(2*(previous+4)+2)). | L1659 | new |
| 211 | Theorem | round_unary_decodes_outer | Theorem round_unary_decodes_outer current previous :
round_post_unary current previous / 2 + 1 +
2^(round_primary_width current previous-1) =
digits_value (round_outer_digits current previous). | L1676 | new |
| 212 | Lemma | digits_word_repeat_BA | Lemma digits_word_repeat_BA n : digits_word (repeat BA n) = A8^^(n). | L1702 | new |
| 213 | Lemma | digits_word_app | Lemma digits_word_app ds1 ds2 : digits_word (ds1 ++ ds2) = digits_word ds1 ++ digits_word ds2. | L1709 | new |
| 214 | Lemma | round_outer_digits_word | Lemma round_outer_digits_word current previous : digits_word (round_outer_digits current previous) = A8^^(half_parameter current+2) ++ B8 ++ B8 ++ A8 ++ B8 ++ A8 ++ B8 ++ digits_word (z_tail_digits previous). | L1718 | new |
| 215 | Lemma | z_digits_word_split | Lemma z_digits_word_split previous : digits_word (z_digits previous) = B8 ++ B8 ++ B8 ++ digits_word (z_tail_digits previous). | L1730 | new |
| 216 | Lemma | sobc1_B_blank | Lemma sobc1_B_blank : sideRLs source_tm hashes (B8 *> 0inf) ((E8 ++ [1;1]) *> 0inf). | L1740 | new |
| 217 | Lemma | sobc1_Bs_blank | Lemma sobc1_Bs_blank w : sideRLs source_tm hashes ((B8^^(S w)) *> 0inf) ((A8^^w ++ E8 ++ [1;1]) *> 0inf). | L1748 | new |
| 218 | Lemma | sobc1_As_E | Lemma sobc1_As_E w : sideRLs source_tm (hashes^^(2^w)) ((A8^^w ++ E8 ++ [1;1]) *> 0inf) ((A8^^w ++ D8 ++ [1;1]) *> 0inf). | L1761 | new |
| 219 | Lemma | sobc1_As_D | Lemma sobc1_As_D w : sideRLs source_tm (hashes^^(2^w)) ((A8^^w ++ D8 ++ [1;1]) *> 0inf) ((A8^^(S w) ++ [1;1]) *> 0inf). | L1774 | new |
| 220 | Lemma | sobc1_B_edge | Lemma sobc1_B_edge w : sideRLs source_tm (hashes^^((2^(S w))+1)) ((B8^^(S w)) *> 0inf) ((A8^^(S w) ++ [1;1]) *> 0inf). | L1787 | new |
| 221 | Lemma | all_B_carry | Lemma all_B_carry w : segRLs source_tm hashes hashes (B8^^S w) (A8^^S w). | L1798 | new |
| 222 | Lemma | binary_column_carry_to_zero | Lemma binary_column_carry_to_zero c out : segRLs source_tm (hashes^^S (bfinish_count (column_digits c) out)) (hashes^^S out) (binary_column_word c) (A8^^S (column_e c)). | L1805 | new |
| 223 | Definition | all_A_columns_word | Definition all_A_columns_word columns := spaced_words (map (fun c => A8^^S (column_e c)) columns). | L1818 | new |
| 224 | Lemma | binary_columns_word_cons2 | Lemma binary_columns_word_cons2 c c' columns : binary_columns_word (c::c'::columns) = binary_column_word c ++ U^^2 ++ binary_columns_word (c'::columns). | L1821 | new |
| 225 | Lemma | all_A_columns_word_cons2 | Lemma all_A_columns_word_cons2 c c' columns : all_A_columns_word (c::c'::columns) = A8^^S (column_e c) ++ U^^2 ++ all_A_columns_word (c'::columns). | L1828 | new |
| 226 | Fixpoint | columns_frontier_count | Fixpoint columns_frontier_count (columns : list BinaryColumn) : nat :=
match columns with
| [] => 0
| [c] => bfinish_count (column_digits c) 0 +
2^S (column_e c) + 1
| c :: columns' =>
… +3 lines | L1834 | new |
| 227 | Lemma | columns_frontier_count_positive | Lemma columns_frontier_count_positive columns : columns <> [] -> 1 <= columns_frontier_count columns. | L1844 | new |
| 228 | Theorem | binary_columns_to_frontier | Theorem binary_columns_to_frontier columns : columns <> [] -> sideRLs source_tm (hashes^^columns_frontier_count columns) ((binary_columns_word columns) *> 0inf) ((all_A_columns_word columns ++ [1;1]) *> 0inf). | L1851 | new |
| 229 | Lemma | raw_separator_return | Lemma raw_separator_return l r :
([1;0;1] *> X4^^2 *> Q8 *> l) {{{((F, []), L)}}} r
-[source_tm]->+
([1;0;1] *> l) {{{((F, []), L)}}}
((A8 ++ U^^2) *> r). | L1886 | new |
| 230 | Lemma | raw_Bs_to_Qs | Lemma raw_Bs_to_Qs k : segRR source_tm (B, []) (B, []) (B8^^k) (Q8^^k). | L1896 | new |
| 231 | Lemma | raw_B_returns | Lemma raw_B_returns k l r :
([1;0;1] *> Q8^^k *> l) {{{((F, []), L)}}} r
-[source_tm]->*
([1;0;1] *> l) {{{((F, []), L)}}} (E8^^k *> r). | L1902 | new |
| 232 | Definition | full_exception_columns | Definition full_exception_columns es := spaced_words (map (fun e => B8^^S e) es) ++ [1;1]. | L1917 | new |
| 233 | Definition | initialized_mixed_columns | Definition initialized_mixed_columns es := spaced_words (map (fun e => E8^^e ++ A8) es). | L1919 | new |
| 234 | Lemma | full_exception_columns_cons2 | Lemma full_exception_columns_cons2 e e' es : full_exception_columns (e::e'::es) = B8^^S e ++ U^^2 ++ full_exception_columns (e'::es). | L1922 | new |
| 235 | Lemma | initialized_mixed_columns_cons2 | Lemma initialized_mixed_columns_cons2 e e' es : initialized_mixed_columns (e::e'::es) = (E8^^e ++ A8) ++ U^^2 ++ initialized_mixed_columns (e'::es). | L1930 | new |
| 236 | Lemma | raw_exception_columns | Lemma raw_exception_columns es l :
es <> [] ->
l {{{((B, []), R)}}} (full_exception_columns es *> 0inf)
-[source_tm]->+
([1;0;1] *> l) {{{((F, []), L)}}}
(initialized_mixed_columns es *> 0inf). | L1938 | new |
| 237 | Definition | exception_columns_raw_source | Definition exception_columns_raw_source (n : nat) (es : list nat) : Q * tape :=
common_left_wall {{{((B, []), R)}}}
((U^^(2*n+1) ++ full_exception_columns es) *> 0inf). | L1970 | new |
| 238 | Definition | exception_columns_pre | Definition exception_columns_pre (n : nat) (es : list nat) : Q * tape :=
exception_pre_left n {{{((F, []), L)}}}
(initialized_mixed_columns es *> 0inf). | L1973 | new |
| 239 | Lemma | exception_columns_raw_to_pre | Lemma exception_columns_raw_to_pre n es : es <> [] -> exception_columns_raw_source n es -[source_tm]->* exception_columns_pre n es. | L1977 | new |
| 240 | Theorem | sobc1_exception_columns_from_seg | Theorem sobc1_exception_columns_from_seg n es output : es <> [] -> segRLs source_tm (hashes^^n) [] (initialized_mixed_columns es) output -> exception_columns_raw_source n es -[source_tm]->* exception_done n output. | L1997 | new |
| 241 | Lemma | initialized_mixed_columns_eq | Lemma initialized_mixed_columns_eq es columns : columns_widths columns = map S es -> initialized_mixed_columns es = mixed_columns_word columns. | L2011 | new |
| 242 | Lemma | digits_value_BBBA_pairs | Lemma digits_value_BBBA_pairs k : digits_value ([BB; BA]^^k) = geom4n k. | L2020 | new |
| 243 | Definition | sobc1_second_tail_digits | Definition sobc1_second_tail_digits : list BDigit := [BB] ++ ([BB; BA]^^9) ++ [BA; BB; BB; BB; BA]. | L2028 | new |
| 244 | Lemma | sobc1_second_tail_length | Lemma sobc1_second_tail_length : length sobc1_second_tail_digits = 24. | L2031 | new |
| 245 | Lemma | sobc1_second_tail_value | Lemma sobc1_second_tail_value : 2 * digits_value sobc1_second_tail_digits = 1 + geom4n 10 + 7 * 2^21. | L2038 | new |
| 246 | Lemma | primary_D_absorb | Lemma primary_D_absorb primary rest : segRLs source_tm (hashes^^(2^primary)) [] (A8^^primary ++ D8 ++ rest) (A8^^(S primary) ++ rest). | L2055 | new |
| 247 | Lemma | initial_u_pairs | Lemma initial_u_pairs primary pairs rest : segRLs source_tm (hashes^^initial_u_pair_calls primary pairs) [] (A8^^primary ++ C8 ++ A8 ++ U^^(2*pairs) ++ rest) (A8^^(primary+pairs) ++ C8 ++ A8 ++ rest). | L2066 | new |
| 248 | Lemma | primary_one_side_rule | Lemma primary_one_side_rule primary input output : sideRLs source_tm hashes input output -> sideRLs source_tm (hashes^^(2^primary)) ((A8^^primary) *> input) ((A8^^primary) *> output). | L2094 | new |
| 249 | Lemma | bfinish_count_app | Lemma bfinish_count_app ds1 ds2 out : bfinish_count (ds1 ++ ds2) out = bfinish_count ds1 (bfinish_count ds2 out). | L2107 | new |
| 250 | Lemma | primary_single_B_D | Lemma primary_single_B_D low : segRLs source_tm (hashes^^(2^low)) [] (A8^^low ++ B8 ++ D8 ++ [1;1]) (A8^^(low+2) ++ [1;1]). | L2115 | new |
| 251 | Lemma | sobc1_initial_pre_side | Lemma sobc1_initial_pre_side :
sideRLs source_tm
(hashes^^sobc1_initial_pre_calls)
((A8^^3 ++ D8 ++ C8 ++ A8 ++ U^^28 ++
A8 ++ A8 ++ B8 ++ A8) *> 0inf)
((A8^^24 ++ [1;1]) *> 0inf). | L2141 | new |
| 252 | Lemma | zero_primary_finish_seg | Lemma zero_primary_finish_seg width rest : segRLs source_tm (hashes^^(2^width-1)) [] (A8^^width ++ rest) (B8^^width ++ rest). | L2176 | new |
| 253 | Lemma | ordinary_all_A_to_exception | Lemma ordinary_all_A_to_exception width u n :
1 <= width -> u+(2^width-1) = 2*n+1 ->
ordinary_left u {{{((B, []), R)}}}
((A8^^width ++ [1;1]) *> 0inf) -[source_tm]->+
exception_raw_source n (width-1). | L2188 | new |
| 254 | Lemma | sobc1_first_call_to_exception | Lemma sobc1_first_call_to_exception : sobc1_first_call -[source_tm]->* exception_raw_source sobc1_first_half 23. | L2207 | new |
| 255 | Lemma | bfinish_count_value | Lemma bfinish_count_value ds out : bfinish_count ds out + digits_value ds + 1 = (out+1) * 2^(length ds). | L2227 | new |
| 256 | Lemma | digits_value_bound | Lemma digits_value_bound ds : digits_value ds < 2^(length ds). | L2238 | new |
| 257 | Lemma | digits_value_BB_BB_lower | Lemma digits_value_BB_BB_lower ds : 3 <= digits_value (BB :: BB :: ds). | L2246 | new |
| 258 | Lemma | digits_value_BB_odd | Lemma digits_value_BB_odd ds : Nat.odd (digits_value (BB :: ds)) = true. | L2251 | new |
| 259 | Lemma | digits_value_msb_BA_safe | Lemma digits_value_msb_BA_safe ds : 3 <= length ds -> digits_value (ds ++ [BA]) <= 2^(length (ds ++ [BA]))-6. | L2256 | new |
| 260 | Lemma | binary_column_value_bound | Lemma binary_column_value_bound c : digits_value (column_digits c) < 2^S (column_e c). | L2276 | new |
| 261 | Definition | columns_frontier_next | Definition columns_frontier_next (columns : list BinaryColumn) : nat := match columns with | [] => 2 | _ => columns_frontier_count columns end. | L2282 | new |
| 262 | Lemma | columns_frontier_head_equation | Lemma columns_frontier_head_equation c columns :
columns_frontier_count (c :: columns) +
digits_value (column_digits c) =
columns_frontier_next columns * 2^S (column_e c). | L2288 | new |
| 263 | Lemma | pow2_S_odd_false | Lemma pow2_S_odd_false n : Nat.odd (2^S n) = false. | L2312 | new |
| 264 | Lemma | columns_frontier_head_parity | Lemma columns_frontier_head_parity c columns : Nat.odd (columns_frontier_count (c :: columns)) = Nat.odd (digits_value (column_digits c)). | L2318 | new |
| 265 | Definition | post_ca_side | Definition post_ca_side (primary : nat) (columns : list BinaryColumn) : side := ((A8^^primary ++ U^^2 ++ binary_columns_word columns) *> 0inf). | L2332 | new |
| 266 | Definition | all_A_frontier_side | Definition all_A_frontier_side (primary : nat) (columns : list BinaryColumn) : side := ((A8^^primary ++ U^^2 ++ all_A_columns_word columns ++ [1;1]) *> 0inf). | L2334 | new |
| 267 | Definition | post_ca_state | Definition post_ca_state
(unary primary : nat) (columns : list BinaryColumn) : Q * tape :=
ordinary_left unary {{{((B, []), R)}}} (post_ca_side primary columns). | L2338 | new |
| 268 | Definition | all_A_frontier_state | Definition all_A_frontier_state
(unary primary : nat) (columns : list BinaryColumn) : Q * tape :=
ordinary_left unary {{{((B, []), R)}}}
(all_A_frontier_side primary columns). | L2341 | new |
| 269 | Definition | post_to_frontier_calls | Definition post_to_frontier_calls (primary : nat) (columns : list BinaryColumn) : nat := columns_frontier_count columns * 2^primary. | L2345 | new |
| 270 | Lemma | post_ca_to_frontier_side | Lemma post_ca_to_frontier_side primary columns : columns <> [] -> sideRLs source_tm (hashes^^post_to_frontier_calls primary columns) (post_ca_side primary columns) (all_A_frontier_side primary columns). | L2349 | new |
| 271 | Theorem | post_ca_to_frontier | Theorem post_ca_to_frontier unary primary columns : columns <> [] -> post_ca_state unary primary columns -[source_tm]->* all_A_frontier_state (unary + post_to_frontier_calls primary columns) primary columns. | L2370 | new |
| 272 | Definition | all_A_widths_word | Definition all_A_widths_word es := spaced_words (map (fun e => A8^^S e) es). | L2382 | new |
| 273 | Lemma | all_A_widths_word_cons2 | Lemma all_A_widths_word_cons2 e e' es : all_A_widths_word (e::e'::es) = A8^^S e ++ U^^2 ++ all_A_widths_word (e'::es). | L2385 | new |
| 274 | Lemma | all_A_width_finish | Lemma all_A_width_finish e out : segRLs source_tm (hashes^^((out+1)*2^(S e)-1)) (hashes^^out) (A8^^S e) (B8^^S e). | L2392 | new |
| 275 | Lemma | all_A_widths_finish | Lemma all_A_widths_finish es : es <> [] -> segRLs source_tm (hashes^^(2^(widths_sum es)-1)) [] (all_A_widths_word es ++ [1;1]) (full_exception_columns es). | L2401 | new |
| 276 | Lemma | all_A_widths_to_exception | Lemma all_A_widths_to_exception es u n r :
es <> [] -> u + (2^(widths_sum es)-1) = 2*n+1 ->
ordinary_left u {{{((B, []), R)}}}
((all_A_widths_word es ++ [1;1]) *> r) -[source_tm]->+
common_left_wall {{{((B, []), R)}}}
((U^^(2*n+1) ++ full_exception_columns es) *> r). | L2428 | new |
| 277 | Definition | sobc1_middle_width | Definition sobc1_middle_width (n : nat) : nat := n+26. | L2452 | new |
| 278 | Definition | sobc1_before_second_finish_calls | Definition sobc1_before_second_finish_calls (n : nat) : nat := 2^n + (2^n + (c_sweep_calls (n+1) 10 + (2^(n+21) + (2^(n+21) + ((13*2^(n+22)-1) + (2^(n+26)+1)))))). | L2453 | new |
| 279 | Definition | sobc1_middle_index | Definition sobc1_middle_index : nat := 2^22 + 2^21 + 2^19 - 4. | L2457 | new |
| 280 | Lemma | sobc1_middle_index_half | Lemma sobc1_middle_index_half : half_parameter sobc1_middle_index = sobc1_first_half. | L2460 | new |
| 281 | Definition | sobc1_second_digits_at | Definition sobc1_second_digits_at (n : nat) : list BDigit := repeat BA (n+2) ++ sobc1_second_tail_digits. | L2475 | new |
| 282 | Lemma | sobc1_second_digits_at_length | Lemma sobc1_second_digits_at_length n : length (sobc1_second_digits_at n) = sobc1_middle_width n. | L2478 | new |
| 283 | Lemma | sobc1_second_digits_at_value | Lemma sobc1_second_digits_at_value n : digits_value (sobc1_second_digits_at n) = 2^(n+2) * digits_value sobc1_second_tail_digits. | L2485 | new |
| 284 | Definition | sobc1_second_digits | Definition sobc1_second_digits : list BDigit := sobc1_second_digits_at sobc1_first_half. | L2493 | new |
| 285 | Definition | sobc1_second_half | Definition sobc1_second_half : nat := 2^sobc1_middle_width sobc1_first_half - 2 + digits_value sobc1_second_digits. | L2495 | new |
| 286 | Lemma | sobc1_second_digits_length | Lemma sobc1_second_digits_length : length sobc1_second_digits = sobc1_middle_width sobc1_first_half. | L2499 | new |
| 287 | Lemma | sobc1_second_total_general | Lemma sobc1_second_total_general n :
1 <= n ->
cd_calls n + sobc1_before_second_finish_calls n +
(2^sobc1_middle_width n-1) =
2*(2^sobc1_middle_width n-2 +
digits_value (sobc1_second_digits_at n))+1. | L2506 | new |
| 288 | Lemma | sobc1_second_total_half | Lemma sobc1_second_total_half :
cd_calls sobc1_first_half +
sobc1_before_second_finish_calls sobc1_first_half +
(2^sobc1_middle_width sobc1_first_half-1) =
2*sobc1_second_half+1. | L2553 | new |
| 289 | Definition | column_value | Definition column_value (c : BinaryColumn) : nat := digits_value (column_digits c). | L2564 | new |
| 290 | Definition | column_width | Definition column_width (c : BinaryColumn) : nat := S (column_e c). | L2566 | new |
| 291 | Definition | column_safe | Definition column_safe (c : BinaryColumn) : Prop := 3 <= column_value c /\ column_value c <= 2^(column_width c)-6. | L2567 | new |
| 292 | Lemma | column_safe_lower | Lemma column_safe_lower c : column_safe c -> 3 <= column_value c. | L2570 | new |
| 293 | Definition | column_next_value | Definition column_next_value (right_odd : bool) (c : BinaryColumn) : nat := (if right_odd then 2^(column_e c) else 2^(S (column_e c))) - column_value c / 2. | L2574 | new |
| 294 | Definition | column_step | Definition column_step (right_odd : bool) (c c' : BinaryColumn) : Prop := column_e c' = column_e c /\ column_value c' = column_next_value right_odd c. | L2577 | new |
| 295 | Fixpoint | columns_step | Fixpoint columns_step
(columns columns' : list BinaryColumn) : Prop :=
match columns, columns' with
| [c], [c'] => column_step true c c'
| c :: d :: tail, c' :: rest' =>
column_step (Nat.odd (column_value d)) c c' /\
… +3 lines | L2581 | new |
| 296 | Lemma | column_next_value_bound | Lemma column_next_value_bound right_odd c : 3 <= column_value c -> column_next_value right_odd c < 2^(column_width c). | L2591 | new |
| 297 | Lemma | column_step_exists | Lemma column_step_exists right_odd c : 3 <= column_value c -> exists c', column_step right_odd c c'. | L2599 | new |
| 298 | Theorem | columns_step_exists | Theorem columns_step_exists columns : columns <> [] -> Forall column_safe columns -> exists columns', columns_step columns columns'. | L2614 | new |
| 299 | Lemma | columns_step_nonempty | Lemma columns_step_nonempty columns columns' : columns_step columns columns' -> columns <> [] /\ columns' <> []. | L2637 | new |
| 300 | Lemma | columns_step_widths | Lemma columns_step_widths columns columns' : columns_step columns columns' -> columns_widths columns' = columns_widths columns. | L2646 | new |
| 301 | Definition | ceil_half | Definition ceil_half (n : nat) : nat := (n+1)/2. | L2662 | new |
| 302 | Lemma | odd_true_witness | Lemma odd_true_witness n : Nat.odd n = true -> exists q, n = 2*q+1. | L2664 | new |
| 303 | Lemma | ceil_half_odd | Lemma ceil_half_odd q : ceil_half (2*q+1) = q+1. | L2670 | new |
| 304 | Lemma | ceil_half_scaled_sub | Lemma ceil_half_scaled_sub t w v : 1 <= t -> 1 <= w -> v < 2^w -> ceil_half (t*2^w-v) = t*2^(w-1)-v/2. | L2675 | new |
| 305 | Lemma | frontier_ceil_half | Lemma frontier_ceil_half c columns :
ceil_half (columns_frontier_count (c :: columns)) +
column_value c / 2 =
columns_frontier_next columns * 2^(column_e c). | L2686 | new |
| 306 | Lemma | odometer_cons_arith | Lemma odometer_cons_arith e s tailF tailR v v' : 1 <= s -> 1 <= tailF -> v < 2^(S e) -> tailR+2 = 2^(s-1)+ceil_half tailF -> v' = (if Nat.odd tailF then 2^e else 2^(S e))-v/2 -> (tailR+1)*2^(S e)-2+v'+2 = 2^(S e+s-1)+ceil_half (tailF*2^(S e)-v). | L2709 | new |
| 307 | Lemma | columns_step_width_sum | Lemma columns_step_width_sum columns columns' : columns_step columns columns' -> columns_width_sum columns' = columns_width_sum columns. | L2764 | new |
| 308 | Theorem | columns_step_required | Theorem columns_step_required columns columns' :
columns_step columns columns' ->
mixed_columns_required columns' + 2 =
2^(columns_width_sum columns - 1) +
ceil_half (columns_frontier_count columns). | L2774 | new |
| 309 | Lemma | round_primary_width_positive | Lemma round_primary_width_positive current previous : 1 <= round_primary_width current previous. | L2839 | new |
| 310 | Definition | round_outer_column | Definition round_outer_column (current previous : nat) : BinaryColumn. | L2844 | new |
| 311 | Lemma | round_outer_column_word | Lemma round_outer_column_word current previous : binary_column_word (round_outer_column current previous) = A8^^(half_parameter current+2) ++ B8 ++ B8 ++ A8 ++ B8 ++ A8 ++ B8 ++ digits_word (z_tail_digits previous). | L2852 | new |
| 312 | Lemma | round_post_unary_half_formula | Lemma round_post_unary_half_formula current previous :
round_post_unary current previous / 2 =
2^(half_parameter current+1) *
(1 + geom4n (previous+4) + 2^(2*(previous+4)+1)) - 1. | L2862 | new |
| 313 | Definition | round_frontier_unary | Definition round_frontier_unary
(current previous : nat) (columns : list BinaryColumn) : nat :=
round_post_unary current previous +
columns_frontier_count columns *
2^(round_primary_width current previous). | L2879 | new |
| 314 | Definition | round_next_half | Definition round_next_half
(current previous : nat) (columns : list BinaryColumn) : nat :=
round_frontier_unary current previous columns / 2 +
2^(round_primary_width current previous +
columns_width_sum columns - 1) - 1. | L2884 | new |
| 315 | Lemma | round_frontier_unary_half | Lemma round_frontier_unary_half current previous columns :
round_frontier_unary current previous columns / 2 =
round_post_unary current previous / 2 +
columns_frontier_count columns *
2^(round_primary_width current previous-1). | L2890 | new |
| 316 | Definition | round_next_index | Definition round_next_index current previous columns : nat := (round_next_half current previous columns - 6) / 2. | L2912 | new |
| 317 | Lemma | round_next_half_even_ge6 | Lemma round_next_half_even_ge6 current previous columns : columns <> [] -> exists k, round_next_half current previous columns = 2*k /\ 6 <= 2*k. | L2915 | new |
| 318 | Lemma | round_next_half_parameter | Lemma round_next_half_parameter current previous columns : columns <> [] -> round_next_half current previous columns = half_parameter (round_next_index current previous columns). | L2977 | new |
| 319 | Definition | columns_head_odd | Definition columns_head_odd (columns : list BinaryColumn) : Prop := match columns with | [] => False | c :: _ => Nat.odd (column_value c) = true end. | L2987 | new |
| 320 | Theorem | round_output_required | Theorem round_output_required current previous columns columns' :
columns <> [] ->
columns_step columns columns' ->
columns_head_odd columns ->
mixed_columns_required
(round_outer_column current previous :: columns') =
… +1 lines | L2993 | new |
| 321 | Definition | frontier_es | Definition frontier_es (current previous : nat) (columns : list BinaryColumn) : list nat := (round_primary_width current previous-1) :: map column_e columns. | L3046 | new |
| 322 | Definition | round_output_columns | Definition round_output_columns current previous columns' := round_outer_column current previous :: columns'. | L3049 | new |
| 323 | Lemma | round_frontier_exception_equation | Lemma round_frontier_exception_equation current previous columns :
columns <> [] ->
round_frontier_unary current previous columns+
(2^(round_primary_width current previous+
columns_width_sum columns)-1) =
2*round_next_half current previous columns+1. | L3052 | new |
| 324 | Theorem | all_A_frontier_to_exception_done | Theorem all_A_frontier_to_exception_done current previous columns columns' : columns <> [] -> columns_step columns columns' -> columns_head_odd columns -> all_A_frontier_state … +6 lines | L3096 | new |
| 325 | Definition | z_column | Definition z_column (previous : nat) : BinaryColumn. | L3153 | new |
| 326 | Lemma | z_column_word | Lemma z_column_word previous : binary_column_word (z_column previous) = digits_word (z_digits previous). | L3159 | new |
| 327 | Lemma | z_column_e | Lemma z_column_e previous : column_e (z_column previous) = half_parameter previous. | L3165 | new |
| 328 | Lemma | binary_columns_word_cons | Lemma binary_columns_word_cons c columns : columns <> [] -> binary_columns_word (c :: columns) = binary_column_word c ++ U^^2 ++ binary_columns_word columns. | L3171 | new |
| 329 | Lemma | ca_calls_positive | Lemma ca_calls_positive primary pairs : 1 <= ca_calls primary pairs. | L3179 | new |
| 330 | Lemma | exception_done_ca | Lemma exception_done_ca n pairs rest :
1 <= n ->
exception_done n
(A8^^(2*pairs) ++ B8++B8++A8++B8++A8++rest) -[source_tm]->+
ordinary_left (cd_calls n + ca_calls n pairs) {{{((B, []), R)}}}
((A8^^(n+2*pairs+4) ++ U^^2 ++ B8++B8++rest) *> 0inf). | L3184 | new |
| 331 | Theorem | exception_done_to_next_post | Theorem exception_done_to_next_post
current previous columns columns' :
columns <> [] ->
columns_step columns columns' ->
exception_done (round_next_half current previous columns)
(binary_columns_word
… +8 lines | L3209 | new |
| 332 | Theorem | sobc1_canonical_round | Theorem sobc1_canonical_round current previous columns columns' : columns <> [] -> columns_head_odd columns -> columns_step columns columns' -> post_ca_state (round_post_unary current previous) … +8 lines | L3248 | new |
| 333 | Definition | round_width_dominance | Definition round_width_dominance (current previous : nat) (columns : list BinaryColumn) : Prop := 2 * columns_width_sum columns + 4 <= half_parameter previous + 1 /\ 2 * (half_parameter previous + 1 + columns_width_sum columns) + 4 <= half_parameter current + 1. | L3274 | new |
| 334 | Lemma | pow2_linear_margin | Lemma pow2_linear_margin n : 2*n+8 <= 2^(n+5). | L3280 | new |
| 335 | Lemma | output_columns_width_sum | Lemma output_columns_width_sum previous columns columns' : columns_step columns columns' -> columns_width_sum (z_column previous :: columns') = half_parameter previous + 1 + columns_width_sum columns. | L3287 | new |
| 336 | Lemma | round_next_half_growth | Lemma round_next_half_growth current previous columns :
columns <> [] ->
2 * (half_parameter current + 1 +
(half_parameter previous + 1 + columns_width_sum columns)) + 4 <=
round_next_half current previous columns + 1. | L3297 | new |
| 337 | Theorem | round_width_dominance_step | Theorem round_width_dominance_step current previous columns columns' : columns <> [] -> columns_step columns columns' -> round_width_dominance current previous columns -> round_width_dominance … +2 lines | L3316 | new |
| 338 | Lemma | z_column_width | Lemma z_column_width previous : column_width (z_column previous) = z_birth_width previous. | L3334 | new |
| 339 | Lemma | z_column_value | Lemma z_column_value previous : Z.of_nat (column_value (z_column previous)) = z_birth_value previous. | L3341 | new |
| 340 | Lemma | z_birth_value_odd | Lemma z_birth_value_odd n : (z_birth_value n mod 2 = 1)%Z. | L3348 | new |
| 341 | Lemma | Zodd_of_nat | Lemma Zodd_of_nat n : Z.odd (Z.of_nat n) = Nat.odd n. | L3353 | new |
| 342 | Lemma | z_column_odd | Lemma z_column_odd previous : Nat.odd (column_value (z_column previous)) = true. | L3361 | new |
| 343 | Record | AbstractColumn | Record AbstractColumn := mkAbstractColumn {
abstract_width : nat;
abstract_value : Z;
}. | L3370 | new |
| 344 | Definition | abstract_of_column | Definition abstract_of_column (c : BinaryColumn) : AbstractColumn := mkAbstractColumn (column_width c) (Z.of_nat (column_value c)). | L3374 | new |
| 345 | Definition | abstract_safe | Definition abstract_safe (c : AbstractColumn) : Prop := (3 <= abstract_value c <= pow2 (abstract_width c)-6)%Z. | L3376 | new |
| 346 | Definition | abstract_step | Definition abstract_step (right_odd : bool) (c : AbstractColumn) : AbstractColumn := mkAbstractColumn (abstract_width c) (arbitrary_column_step (pow2 (abstract_width c)) right_odd (abstract_value c)). | L3378 | new |
| 347 | Fixpoint | abstract_columns_next | Fixpoint abstract_columns_next (columns : list AbstractColumn) : list AbstractColumn :=
match columns with
| [] => []
| c :: rest =>
match rest with
| [] => [abstract_step true c]
… +3 lines | L3381 | new |
| 348 | Definition | abstract_columns_iter | Definition abstract_columns_iter n columns := Nat.iter n abstract_columns_next columns. | L3390 | new |
| 349 | Definition | abstract_head_odd | Definition abstract_head_odd (columns : list AbstractColumn) : Prop := match columns with [] => False | c::_ => Z.odd (abstract_value c) = true end. | L3392 | new |
| 350 | Definition | abstract_columns_safe | Definition abstract_columns_safe := Forall abstract_safe. | L3394 | new |
| 351 | Definition | abstract_suffix_good | Definition abstract_suffix_good (settle : nat) (columns : list AbstractColumn) : Prop := columns <> [] /\ (forall n, abstract_columns_safe (abstract_columns_iter n columns)) /\ (forall n, settle <= n -> abstract_head_odd (abstract_columns_iter n columns)). | L3395 | new |
| 352 | Lemma | hd_nonempty | Lemma hd_nonempty {A} (x y : A) xs : xs <> [] -> hd x xs = hd y xs. | L3400 | new |
| 353 | Lemma | abstract_columns_next_nonempty | Lemma abstract_columns_next_nonempty columns : columns <> [] -> abstract_columns_next columns <> []. | L3405 | new |
| 354 | Lemma | abstract_columns_iter_nonempty | Lemma abstract_columns_iter_nonempty n columns : columns <> [] -> abstract_columns_iter n columns <> []. | L3410 | new |
| 355 | Lemma | abstract_columns_iter_succ_right | Lemma abstract_columns_iter_succ_right n columns : abstract_columns_next (abstract_columns_iter n columns) = abstract_columns_iter (S n) columns. | L3416 | new |
| 356 | Lemma | abstract_columns_iter_succ_left | Lemma abstract_columns_iter_succ_left n columns : abstract_columns_iter n (abstract_columns_next columns) = abstract_columns_iter (S n) columns. | L3421 | new |
| 357 | Lemma | abstract_columns_iter_add | Lemma abstract_columns_iter_add m n columns : abstract_columns_iter (m+n) columns = abstract_columns_iter n (abstract_columns_iter m columns). | L3428 | new |
| 358 | Lemma | abstract_columns_next_cons | Lemma abstract_columns_next_cons c columns : columns <> [] -> abstract_columns_next (c::columns) = abstract_step (Z.odd (abstract_value (hd c columns))) c :: abstract_columns_next columns. | L3433 | new |
| 359 | Lemma | abstract_columns_iter_cons | Lemma abstract_columns_iter_cons n c columns :
columns <> [] -> exists c',
abstract_columns_iter n (c::columns) =
c'::abstract_columns_iter n columns. | L3441 | new |
| 360 | Lemma | abstract_columns_iter_head_width | Lemma abstract_columns_iter_head_width n c columns : columns <> [] -> abstract_width (hd c (abstract_columns_iter n (c::columns))) = abstract_width c. | L3455 | new |
| 361 | Lemma | column_safe_abstract | Lemma column_safe_abstract c : column_safe c <-> abstract_safe (abstract_of_column c). | L3470 | new |
| 362 | Lemma | columns_safe_abstract | Lemma columns_safe_abstract columns : Forall column_safe columns <-> abstract_columns_safe (map abstract_of_column columns). | L3476 | new |
| 363 | Lemma | abstract_column_step | Lemma abstract_column_step c c' right_odd : column_safe c -> column_step right_odd c c' -> abstract_of_column c' = abstract_step right_odd (abstract_of_column c). | L3484 | new |
| 364 | Lemma | columns_step_abstract | Lemma columns_step_abstract columns columns' : Forall column_safe columns -> columns_step columns columns' -> map abstract_of_column columns' = abstract_columns_next (map abstract_of_column columns). | L3507 | new |
| 365 | Fixpoint | abstract_head_inputs | Fixpoint abstract_head_inputs (n : nat) (columns : list AbstractColumn) : list bool :=
match n with
| O => []
| S n' =>
match columns with
| [] => []
… +3 lines | L3531 | new |
| 366 | Lemma | abstract_head_inputs_length | Lemma abstract_head_inputs_length n columns : columns <> [] -> length (abstract_head_inputs n columns) = n. | L3541 | new |
| 367 | Definition | abstract_birth | Definition abstract_birth birth := mkAbstractColumn (z_birth_width birth) (z_birth_value birth). | L3550 | new |
| 368 | Lemma | abstract_birth_eq | Lemma abstract_birth_eq birth : abstract_birth birth = abstract_of_column (z_column birth). | L3552 | new |
| 369 | Lemma | abstract_iter_head_value | Lemma abstract_iter_head_value c columns n : columns <> [] -> abstract_value (hd c (abstract_columns_iter n (c::columns))) = zinputs (pow2 (abstract_width c)) (abstract_head_inputs n columns) (abstract_value c). | L3557 | new |
| 370 | Theorem | abstract_birth_early_safe | Theorem abstract_birth_early_safe birth columns n : columns <> [] -> n <= z_birth_width birth-4 -> abstract_safe (hd (abstract_birth birth) (abstract_columns_iter n (abstract_birth birth::columns))). | L3576 | new |
| 371 | Lemma | stable_step_safe_Z | Lemma stable_step_safe_Z width value : 4 <= width -> (3 <= value <= pow2 width-6)%Z -> (3 <= stable_column_step (pow2 (width-1)) value <= pow2 width-6)%Z. | L3595 | new |
| 372 | Lemma | zinputs_repeat_true | Lemma zinputs_repeat_true total n value : zinputs total (repeat true n) value = Nat.iter n (arbitrary_column_step total true) value. | L3611 | new |
| 373 | Lemma | arbitrary_true_iter | Lemma arbitrary_true_iter width n value : 1 <= width -> Nat.iter n (arbitrary_column_step (pow2 width) true) value = Nat.iter n (stable_column_step (pow2 (width-1))) value. | L3620 | new |
| 374 | Lemma | arbitrary_true_iter_safe | Lemma arbitrary_true_iter_safe width n value : 4 <= width -> (3 <= value <= pow2 width-6)%Z -> (3 <= Nat.iter n (arbitrary_column_step (pow2 width) true) value <= pow2 width-6)%Z. | L3632 | new |
| 375 | Theorem | z_odd_width_converges_odd | Theorem z_odd_width_converges_odd k value : 2 <= k -> (3 <= value <= pow2 (odd_column_width k)-6)%Z -> Z.odd (Nat.iter (2*odd_column_width k) (arbitrary_column_step (pow2 (odd_column_width k)) true) value) = true. | L3642 | new |
| 376 | Lemma | abstract_suffix_good_inputs | Lemma abstract_suffix_good_inputs settle columns q n : abstract_suffix_good settle columns -> settle <= q -> abstract_head_inputs n (abstract_columns_iter q columns) = repeat true n. | L3664 | new |
| 377 | Lemma | abstract_safe_width | Lemma abstract_safe_width c : abstract_safe c -> 4 <= abstract_width c. | L3680 | new |
| 378 | Theorem | abstract_suffix_good_prepend_birth | Theorem abstract_suffix_good_prepend_birth settle columns birth : abstract_suffix_good settle columns -> settle <= z_birth_width birth-4 -> abstract_suffix_good (settle+2*z_birth_width birth) (abstract_birth birth::columns). | L3687 | new |
| 379 | Lemma | abstract_singleton_iter | Lemma abstract_singleton_iter n c : abstract_columns_iter n [c] = [mkAbstractColumn (abstract_width c) (Nat.iter n (arbitrary_column_step (pow2 (abstract_width c)) true) (abstract_value c))]. | L3765 | new |
| 380 | Theorem | abstract_singleton_good | Theorem abstract_singleton_good k c : abstract_width c = odd_column_width k -> abstract_safe c -> abstract_suffix_good (2*abstract_width c) [c]. | L3776 | new |
| 381 | Lemma | abstract_suffix_good_shift | Lemma abstract_suffix_good_shift settle columns : abstract_suffix_good settle columns -> abstract_suffix_good (Nat.pred settle) (abstract_columns_next columns). | L3805 | new |
| 382 | Definition | columns_schedule | Definition columns_schedule (columns : list BinaryColumn) : Prop := exists settle, abstract_suffix_good settle (map abstract_of_column columns) /\ settle <= 2 * columns_width_sum columns. | L3815 | new |
| 383 | Definition | sobc1_round_invariant | Definition sobc1_round_invariant (current previous : nat) (columns : list BinaryColumn) : Prop := round_width_dominance current previous columns /\ columns_schedule columns /\ columns_head_odd columns. | L3819 | new |
| 384 | Theorem | sobc1_round_invariant_progress | Theorem sobc1_round_invariant_progress current previous columns :
sobc1_round_invariant current previous columns ->
exists columns',
post_ca_state (round_post_unary current previous)
(round_primary_width current previous) columns
-[source_tm]->+
… +9 lines | L3825 | new |
| 385 | Theorem | sobc1_canonical_nonhalt | Theorem sobc1_canonical_nonhalt current previous columns :
sobc1_round_invariant current previous columns ->
~ halts source_tm
(post_ca_state (round_post_unary current previous)
(round_primary_width current previous) columns). | L3872 | new |
| 386 | Definition | sobc1_second_base | Definition sobc1_second_base : nat :=
2^(sobc1_first_half+25)-1 +
2^(sobc1_first_half+1) *
digits_value sobc1_second_tail_digits. | L3892 | new |
| 387 | Definition | sobc1_current_index | Definition sobc1_current_index : nat := sobc1_second_base-3. | L3896 | new |
| 388 | Lemma | double_pred_sum_mul | Lemma double_pred_sum_mul a b c : 1 <= a -> 2*a-2+2*b*c = 2*(a-1+b*c). | L3898 | new |
| 389 | Lemma | sobc1_second_half_double_at | Lemma sobc1_second_half_double_at n : 2^sobc1_middle_width n-2 + digits_value (sobc1_second_digits_at n) = 2*(2^(n+25)-1 + 2^(n+1)*digits_value sobc1_second_tail_digits). | L3904 | new |
| 390 | Lemma | sobc1_second_half_double | Lemma sobc1_second_half_double : sobc1_second_half = 2*sobc1_second_base. | L3917 | new |
| 391 | Lemma | second_base_ge3_at | Lemma second_base_ge3_at n v : 3 <= 2^(n+25)-1 + 2^(n+1)*v. | L3924 | new |
| 392 | Lemma | sobc1_second_base_ge3 | Lemma sobc1_second_base_ge3 : 3 <= sobc1_second_base. | L3932 | new |
| 393 | Lemma | half_parameter_pred3 | Lemma half_parameter_pred3 n : 3 <= n -> half_parameter (n-3) = 2*n. | L3937 | new |
| 394 | Lemma | sobc1_current_index_half | Lemma sobc1_current_index_half : half_parameter sobc1_current_index = sobc1_second_half. | L3943 | new |
| 395 | Lemma | sobc1_first_half_large | Lemma sobc1_first_half_large : 46 <= sobc1_first_half+1. | L3951 | new |
| 396 | Lemma | entry_current_dominance | Lemma entry_current_dominance n v : 2*(n+22)+4 <= 2*(2^(n+25)-1+2^(n+1)*v)+1. | L3960 | new |
| 397 | Definition | sobc1_entry_rest | Definition sobc1_entry_rest : list BDigit := ([BB; BA]^^7) ++ [BA; BB; BB; BB; BA]. | L3972 | new |
| 398 | Definition | sobc1_entry_digits | Definition sobc1_entry_digits : list BDigit := [BB; BB] ++ sobc1_entry_rest. | L3974 | new |
| 399 | Lemma | sobc1_second_digits_split | Lemma sobc1_second_digits_split :
sobc1_second_digits =
repeat BA (sobc1_first_half+2) ++
[BB; BB; BA; BB; BA] ++ sobc1_entry_rest. | L3977 | new |
| 400 | Definition | sobc1_entry_column | Definition sobc1_entry_column : BinaryColumn := mkBinaryColumn 20 sobc1_entry_digits ltac:( unfold sobc1_entry_digits, sobc1_entry_rest; rewrite !length_app, lpow_length; reflexivity). | L3989 | new |
| 401 | Lemma | sobc1_entry_column_facts | Lemma sobc1_entry_column_facts : column_width sobc1_entry_column = odd_column_width 10 /\ column_safe sobc1_entry_column /\ Nat.odd (column_value sobc1_entry_column) = true. | L3994 | new |
| 402 | Theorem | sobc1_entry_invariant | Theorem sobc1_entry_invariant : sobc1_round_invariant sobc1_current_index sobc1_middle_index [sobc1_entry_column]. | L4014 | new |
| 403 | Definition | sobc1_first_output | Definition sobc1_first_output : list Sym := A8^^20 ++ B8 ++ A8 ++ D8 ++ A8. | L4038 | new |
| 404 | Lemma | sobc1_first_exception_seg | Lemma sobc1_first_exception_seg : segRLs source_tm (hashes^^sobc1_first_half) [] (E8^^23 ++ A8) sobc1_first_output. | L4041 | new |
| 405 | Definition | sobc1_middle_digits | Definition sobc1_middle_digits (n : nat) : list BDigit := repeat BA (n+22) ++ [BB; BB; BA; BA]. | L4065 | new |
| 406 | Lemma | sobc1_middle_digits_word | Lemma sobc1_middle_digits_word n : digits_word (sobc1_middle_digits n) = A8^^(n+22) ++ B8 ++ B8 ++ A8 ++ A8. | L4068 | new |
| 407 | Lemma | sobc1_middle_digits_length | Lemma sobc1_middle_digits_length n : length (sobc1_middle_digits n) = sobc1_middle_width n. | L4077 | new |
| 408 | Lemma | sobc1_middle_finish_count | Lemma sobc1_middle_finish_count n : bfinish_count (sobc1_middle_digits n) 0 = 13 * 2^(n+22) - 1. | L4084 | new |
| 409 | Lemma | sobc1_middle_to_zero_edge | Lemma sobc1_middle_to_zero_edge n :
sideRLs source_tm
(hashes^^
(13*2^(n+22)-1 + (2^(n+26)+1)))
((digits_word (sobc1_middle_digits n)) *> 0inf)
((A8^^(n+26) ++ [1;1]%sym) *> 0inf). | L4094 | new |
| 410 | Lemma | sobc1_initial_blank_bridge | Lemma sobc1_initial_blank_bridge : sideRLs source_tm hashes ((C8 ++ B8 ++ U^^2 ++ A8^^2) *> 0inf) ((D8 ++ B8 ++ B8 ++ A8 ++ A8) *> 0inf). | L4115 | new |
| 411 | Lemma | sobc1_after_cd_to_before_second_finish_side | Lemma sobc1_after_cd_to_before_second_finish_side n : sideRLs source_tm (hashes^^sobc1_before_second_finish_calls n) ((A8^^n ++ C8 ++ A8 ++ sobc1_first_output) *> 0inf) ((A8^^sobc1_middle_width n ++ [1;1]%sym) *> 0inf). | L4123 | new |
| 412 | Lemma | sobc1_after_cd_to_before_second_finish | Lemma sobc1_after_cd_to_before_second_finish n :
after_cd n sobc1_first_output -[source_tm]->*
ordinary_left (cd_calls n+sobc1_before_second_finish_calls n)
{{{((B, []), R)}}}
((A8^^sobc1_middle_width n++[1;1]) *> 0inf). | L4155 | new |
| 413 | Theorem | sobc1_first_done_to_second_exception | Theorem sobc1_first_done_to_second_exception : exception_done sobc1_first_half sobc1_first_output -[source_tm]->* exception_raw_source sobc1_second_half (sobc1_first_half+25). | L4168 | new |
| 414 | Lemma | sobc1_second_tail_word | Lemma sobc1_second_tail_word : digits_word sobc1_second_digits = A8^^(2*(sobc1_middle_index+4)) ++ B8++B8++A8++B8++A8++digits_word sobc1_entry_rest. | L4189 | new |
| 415 | Lemma | sobc1_entry_primary_width | Lemma sobc1_entry_primary_width : sobc1_second_half + 2*(sobc1_middle_index+4)+4 = round_primary_width sobc1_current_index sobc1_middle_index. | L4203 | new |
| 416 | Theorem | sobc1_c0_to_entry_post | Theorem sobc1_c0_to_entry_post : c0 -[source_tm]->* post_ca_state (round_post_unary sobc1_current_index sobc1_middle_index) (round_primary_width sobc1_current_index sobc1_middle_index) [sobc1_entry_column]. | L4217 | new |
| 417 | Theorem | sobc1_nonhalt | Theorem sobc1_nonhalt : ~ halts source_tm c0. | L4252 | new |
| 418 | Definition | y_after | Definition y_after (k : nat) : list Sym := match k with | 0%nat => A8 | 1%nat => B8 | 2%nat => E8 ++ [1;1] | 3%nat => D8 ++ [1;1] … +3 lines | L4298 | new |
| 419 | Definition | tail_word | Definition tail_word (k : nat) : list Sym := U^^(2*k+1) ++ B8 ++ [1;1]. | L4309 | new |
| 420 | Lemma | raw_tail_base | Lemma raw_tail_base k l : k <= 5 ->
l {{{((B, []), R)}}} ((B8 ++ U^^(2*k+1) ++ B8 ++ [1;1]) *> 0inf)
-[source_tm]->+
([1;0;1] *> l) {{{((F, []), L)}}} ((U^^(2*k+3) ++ y_after k) *> 0inf). | L4311 | new |
| 421 | Lemma | raw_tail_column | Lemma raw_tail_column k e l : k <= 5 ->
l {{{((B, []), R)}}} ((B8^^S e ++ tail_word k) *> 0inf)
-[source_tm]->+
([1;0;1] *> l) {{{((F, []), L)}}}
((E8^^e ++ U^^(2*k+3) ++ y_after k) *> 0inf). | L4321 | new |
| 422 | Definition | full_tail | Definition full_tail (es : list nat) (e k : nat) : list Sym := spaced_words (map (fun e => B8^^S e) es ++ [B8^^S e]) ++ tail_word k. | L4340 | new |
| 423 | Definition | mixed_tail | Definition mixed_tail (es : list nat) (e k : nat) : list Sym := spaced_words (map (fun e => E8^^e ++ A8) es ++ [E8^^e]) ++ U^^(2*k+3) ++ y_after k. | L4345 | new |
| 424 | Lemma | spaced_snoc_cons | Lemma spaced_snoc_cons (w : list Sym) ws x : spaced_words ((w :: ws) ++ [x]) = w ++ U^^2 ++ spaced_words (ws ++ [x]). | L4349 | new |
| 425 | Theorem | raw_tail_columns | Theorem raw_tail_columns es e k l : k <= 5 ->
l {{{((B, []), R)}}} (full_tail es e k *> 0inf)
-[source_tm]->+
([1;0;1] *> l) {{{((F, []), L)}}} (mixed_tail es e k *> 0inf). | L4355 | new |
| 426 | Definition | Yw | Definition Yw : list Sym := [1;0;0;0;1;0;0;0;1;0;0;0;1;0;0;0;1;0;0;0;1;0;0;0;1;0;0;0;1;0;0;0;1;0;0; 1;0;0;0;1;0;0;0;1;0;0;0;1;0;0;0;1;0;0;0;1;0;0;0;1;0;0;1;0;1;0;0;1;0;0]. | L4386 | new |
| 427 | Lemma | cycler_step | Lemma cycler_step L :
(rev Yw *> L) {{B}}> 0inf -[source_tm]->+ (rev Yw *> [0;0;1] *> L) {{B}}> 0inf. | L4391 | new |
| 428 | Theorem | cycler_nonhalt | Theorem cycler_nonhalt L : ~ halts source_tm ((rev Yw *> L) {{B}}> 0inf). | L4397 | new |
| 429 | Lemma | overflow_base | Lemma overflow_base l :
l {{{((B, []), R)}}} ((B8 ++ tail_word 6) *> 0inf)
-[source_tm]->+
(rev Yw *> [0;1;0;1] *> l) {{B}}> 0inf. | L4406 | new |
| 430 | Lemma | overflow_column | Lemma overflow_column e l : exists l',
l {{{((B, []), R)}}} ((B8^^S e ++ tail_word 6) *> 0inf)
-[source_tm]->+ (rev Yw *> l') {{B}}> 0inf. | L4414 | new |
| 431 | Theorem | overflow_columns | Theorem overflow_columns es e l : exists l',
l {{{((B, []), R)}}} (full_tail es e 6 *> 0inf)
-[source_tm]->+ (rev Yw *> l') {{B}}> 0inf. | L4425 | new |
| 432 | Theorem | exit_nonhalt | Theorem exit_nonhalt es e l :
~ halts source_tm (l {{{((B, []), R)}}} (full_tail es e 6 *> 0inf)). | L4444 | new |
| 433 | Definition | pre_left_far | Definition pre_left_far (n : nat) (far : side) : side := ([1;0;1;0] ++ V4^^(2*n+2)) *> far. | L4455 | new |
| 434 | Definition | call_left_far | Definition call_left_far (remaining finished : nat) (far : side) : side := (X4^^(2*finished+5) ++ V4^^(2*remaining)) *> far. | L4457 | new |
| 435 | Lemma | pre_rotate_list | Lemma pre_rotate_list m : [1;0;1] ++ X4^^(S m) = [1;0;1;0] ++ V4^^m ++ [0;1;0]. | L4460 | new |
| 436 | Lemma | nested_pre_left | Lemma nested_pre_left c f : [1;0;1] *> exception_call_left c f = pre_left_far (S f) ([0;1;0] *> V4^^(2*c) *> [1;0;1] *> 0inf). | L4476 | new |
| 437 | Lemma | launch_far | Lemma launch_far k far : sideRLs (flip source_tm) [left_hash] (pre_left_far (S k) far) (call_left_far k 0 far). | L4489 | new |
| 438 | Lemma | relaunch_far | Lemma relaunch_far remaining finished far : sideRLs (flip source_tm) [left_hash] (call_left_far (S remaining) finished far) (call_left_far remaining (S finished) far). | L4500 | new |
| 439 | Lemma | relaunches_far | Lemma relaunches_far k r finished far : sideRLs (flip source_tm) ([left_hash]^^k) (call_left_far (k + r) finished far) (call_left_far r (finished + k) far). | L4519 | new |
| 440 | Theorem | nested_launch | Theorem nested_launch h r far inp out :
segRLs source_tm (hashes^^h) [] inp out ->
pre_left_far (S (h + r)) far {{{((F, []), L)}}} (inp *> 0inf)
-[source_tm]->+
call_left_far r h far {{{((B, []), R)}}} (out *> 0inf). | L4534 | new |
| 441 | Lemma | E_to_B | Lemma E_to_B m : segRLs source_tm (hashes^^(3*(2^m-1))) [] (E8^^m) (B8^^m). | L4550 | new |
| 442 | Lemma | digits_word_repeat_BB | Lemma digits_word_repeat_BB n : digits_word (repeat BB n) = B8^^n. | L4559 | new |
| 443 | Lemma | digits_value_repeat_BB | Lemma digits_value_repeat_BB n : digits_value (repeat BB n) = 2^n - 1. | L4565 | new |
| 444 | Fixpoint | nested_required | Fixpoint nested_required (es : list nat) (e : nat) : nat :=
match es with
| [] => 3*(2^(S e)-1)
| e0 :: es' =>
(nested_required es' e + 1) * 2^(S e0) - 2 + (2^(S e0) - 1)
end. | L4574 | new |
| 445 | Lemma | nested_counter | Lemma nested_counter es e : segRLs source_tm (hashes^^nested_required es e) [] (spaced_words (map (fun e => E8^^e ++ A8) es ++ [E8^^S e])) (spaced_words (map (fun e => B8^^S e) es ++ [B8^^S e])). | L4581 | new |
| 446 | Theorem | nested_exit | Theorem nested_exit c f es e :
nested_required es e <= f ->
~ halts source_tm (exception_call_left c f {{{((B, []), R)}}}
(full_tail es (S e) 5 *> 0inf)). | L4602 | new |
| 447 | Inductive | SDigit | Inductive SDigit := SE | SD | SA | SB. | L4646 | new |
| 448 | Definition | sdigit_word | Definition sdigit_word (d : SDigit) : list Sym := match d with SE => E8 | SD => D8 | SA => A8 | SB => B8 end. | L4647 | new |
| 449 | Definition | sdigit_value | Definition sdigit_value (d : SDigit) : Z := match d with SE => (-2)%Z | SD => (-1)%Z | SA => 0%Z | SB => 1%Z end. | L4649 | new |
| 450 | Fixpoint | sdigits_word | Fixpoint sdigits_word (ds : list SDigit) : list Sym := match ds with [] => [] | d :: ds' => sdigit_word d ++ sdigits_word ds' end. | L4651 | new |
| 451 | Fixpoint | sdigits_value | Fixpoint sdigits_value (ds : list SDigit) : Z := match ds with | [] => 0%Z | d :: ds' => (sdigit_value d + 2 * sdigits_value ds')%Z end. | L4653 | new |
| 452 | Definition | sdigit_of | Definition sdigit_of (d : BDigit) : SDigit := match d with BA => SA | BB => SB end. | L4658 | new |
| 453 | Definition | tail_layout | Definition tail_layout (primary : nat) (zs : list BinaryColumn) (last : list SDigit) (k lv : nat) : list Sym := A8^^primary ++ U^^2 ++ spaced_words (map binary_column_word zs ++ [sdigits_word last]) ++ U^^(2*k+1) ++ y_after lv. | L4664 | new |
| 454 | Definition | post_ca_tail | Definition post_ca_tail (unary primary : nat) (zs : list BinaryColumn)
(last : list SDigit) (k lv : nat) : Q * tape :=
ordinary_left unary {{{((B, []), R)}}} (tail_layout primary zs last k lv *> 0inf). | L4670 | new |
| 455 | Fixpoint | zs_value | Fixpoint zs_value (o : nat) (zs : list BinaryColumn) : Z :=
match zs with
| [] => 0%Z
| c :: zs' => (2^Z.of_nat o * Z.of_nat (column_value c) +
zs_value (o + column_width c) zs')%Z
end. | L4676 | new |
| 456 | Definition | tail_W | Definition tail_W (primary : nat) zs (last : list SDigit) : nat := primary + columns_width_sum zs + length last. | L4684 | new |
| 457 | Definition | tail_V | Definition tail_V (primary : nat) zs last (lv : nat) : Z := (zs_value primary zs + 2^Z.of_nat (primary + columns_width_sum zs) * sdigits_value last + 2^Z.of_nat (tail_W primary zs last) * (Z.of_nat lv - 1))%Z. | L4686 | new |
| 458 | Definition | trigger_hash | Definition trigger_hash primary zs last lv : Z := (5 * 2^Z.of_nat (tail_W primary zs last) - tail_V primary zs last lv)%Z. | L4692 | new |
| 459 | Definition | tail_next_half | Definition tail_next_half current previous zs last lv : Z := ((Z.of_nat (round_post_unary current previous) + trigger_hash (round_primary_width current previous) zs last lv - 1) / 2)%Z. | L4696 | new |
| 460 | Definition | tail_next_index | Definition tail_next_index current previous zs last lv : nat := Z.to_nat ((tail_next_half current previous zs last lv - 6) / 2). | L4699 | new |
| 461 | Definition | eff_level | Definition eff_level (last : list SDigit) (lv : nat) : Z := ((sdigits_value last + 2^Z.of_nat (length last) * (Z.of_nat lv - 1)) / 2^Z.of_nat (length last))%Z. | L4703 | new |
| 462 | Definition | tail_triggers | Definition tail_triggers (k : nat) (last : list SDigit) (lv : nat) : Prop := (Z.of_nat k - 1 + (2 - eff_level last lv) >= 5)%Z. | L4708 | new |
| 463 | Definition | column_budget | Definition column_budget (n : nat) (c : BinaryColumn) : Prop :=
exists phase,
n <= lineage_fuel phase /\
low_slice (pow2 (column_width c)) (lineage_width phase)
(lineage_residue phase) (Z.of_nat (column_value c)). | L4723 | new |
| 464 | Lemma | column_budget_safe | Lemma column_budget_safe n c : column_budget n c -> column_safe c. | L4729 | new |
| 465 | Lemma | lineage_next_fuel | Lemma lineage_next_fuel phase : 1 <= lineage_fuel phase -> exists phase', lineage_next phase phase' /\ S (lineage_fuel phase') = lineage_fuel phase. | L4737 | new |
| 466 | Lemma | column_budget_step | Lemma column_budget_step n c c' b : column_budget (S n) c -> column_step b c c' -> column_budget n c'. | L4748 | new |
| 467 | Lemma | z_column_budget | Lemma z_column_budget previous : column_budget 3 (z_column previous). | L4764 | new |
| 468 | Fixpoint | tail_columns_step | Fixpoint tail_columns_step (right_odd : bool)
(cs cs' : list BinaryColumn) : Prop :=
match cs, cs' with
| [], [] => True
| c::rest, c'::rest' =>
column_step (match rest with [] => right_odd
… +4 lines | L4772 | new |
| 469 | Theorem | tail_columns_budget_step | Theorem tail_columns_budget_step n cs b : Forall (column_budget (S n)) cs -> exists cs', tail_columns_step b cs cs' /\ Forall (column_budget n) cs'. | L4783 | new |
| 470 | Lemma | column_budget_weaken | Lemma column_budget_weaken n m c : n <= m -> column_budget m c -> column_budget n c. | L4801 | new |
| 471 | Theorem | tail_columns_round_budget | Theorem tail_columns_round_budget k previous cs b : 1 <= k <= 3 -> Forall (column_budget (4-k)) cs -> exists cs', tail_columns_step b cs cs' /\ Forall (column_budget (4-S k)) (z_column previous :: cs'). | L4806 | new |
| 472 | Definition | phase_width | Definition phase_width k := 30-k. | L4832 | new |
| 473 | Definition | phase_value | Definition phase_value k : Z := match k with | 1 => 391468375%Z | 2 => (-195734187)%Z | 3 => 97867094%Z | _ => (-116042411)%Z … +1 lines | L4833 | new |
| 474 | Definition | phase_lv | Definition phase_lv k := match k with 1 => 4 | 2 => 1 | 3 => 5 | _ => 3 end. | L4840 | new |
| 475 | Definition | phase_eff | Definition phase_eff k : Z := ((phase_value k + 2^Z.of_nat (phase_width k) * (Z.of_nat (phase_lv k)-1)) / 2^Z.of_nat (phase_width k))%Z. | L4841 | new |
| 476 | Lemma | phase_effective_levels | Lemma phase_effective_levels : phase_eff 1 = 3%Z /\ phase_eff 2 = (-1)%Z /\ phase_eff 3 = 4%Z /\ phase_eff 4 = 0%Z. | L4845 | new |
| 477 | Lemma | phase_level_step | Lemma phase_level_step k : 1 <= k <= 3 -> phase_eff (S k) = (Z.of_nat k + 1 - phase_eff k)%Z. | L4850 | new |
| 478 | Lemma | phase_value_step | Lemma phase_value_step k :
1 <= k <= 3 ->
(phase_value (S k) mod 2^Z.of_nat (phase_width (S k)) =
2^Z.of_nat (phase_width (S k)) -
(phase_value k mod 2^Z.of_nat (phase_width k))/2)%Z. | L4857 | new |
| 479 | Lemma | phase_window | Lemma phase_window k : 1 <= k <= 4 -> (3 <= phase_value k + 2^Z.of_nat (phase_width k)*2)%Z /\ (phase_value k <= 2^Z.of_nat (phase_width k)-6)%Z. | L4867 | new |
| 480 | Record | finite_round_pre | Record finite_round_pre current previous zs last k lv : Prop := {
fr_stage : 1 <= k <= 4;
fr_columns : Forall (column_budget (4-k)) zs;
fr_head_odd : match zs with
| c::_ => Nat.odd (column_value c) = true
| [] => Z.odd (sdigits_value last) = true end;
… +8 lines | L4876 | new |
| 481 | Lemma | finite_pre_safe | Lemma finite_pre_safe current previous zs last k lv : finite_round_pre current previous zs last k lv -> Forall column_safe zs. | L4891 | new |
| 482 | Lemma | finite_pre_eff | Lemma finite_pre_eff current previous zs last k lv : finite_round_pre current previous zs last k lv -> eff_level last lv = phase_eff k. | L4898 | new |
| 483 | Lemma | finite_pre_nontrigger | Lemma finite_pre_nontrigger current previous zs last k lv : finite_round_pre current previous zs last k lv -> k <= 3 -> ~ tail_triggers k last lv. | L4905 | new |
| 484 | Lemma | finite_pre_trigger | Lemma finite_pre_trigger current previous zs last lv : finite_round_pre current previous zs last 4 lv -> tail_triggers 4 last lv. | L4917 | new |
| 485 | Definition | finite_round_obligation | Definition finite_round_obligation : Prop :=
forall current previous zs last k lv,
finite_round_pre current previous zs last k lv -> k <= 3 ->
exists zs' last' lv',
post_ca_tail (round_post_unary current previous)
(round_primary_width current previous) zs last k lv
… +7 lines | L4926 | new |
| 486 | Definition | finite_trigger_obligation | Definition finite_trigger_obligation : Prop :=
forall current previous zs last lv,
finite_round_pre current previous zs last 4 lv ->
exists c f es e,
post_ca_tail (round_post_unary current previous)
(round_primary_width current previous) zs last 4 lv
… +3 lines | L4940 | new |
| 487 | Definition | early_tail | Definition early_tail := U^^3 ++ A8 ++ B8^^2 ++ [1;1]. | L4969 | new |
| 488 | Definition | fourth_tail | Definition fourth_tail := C8 ++ [1;1] ++ C8 ++ A8^^2 ++ [1;1;1;1]. | L4970 | new |
| 489 | Lemma | opening_D_to_third_done | Lemma opening_D_to_third_done : (D;; tape0) -[source_tm]->* exception_done 28 early_tail. | L4972 | new |
| 490 | Lemma | opening_local_hash | Lemma opening_local_hash : segRLs source_tm hashes [] (C8 ++ A8 ++ U ++ A8 ++ B8^^2 ++ [1;1]) (D8 ++ fourth_tail). | L4979 | new |
| 491 | Definition | opening_after_cd_calls | Definition opening_after_cd_calls p := initial_u_pair_calls p 1 + (2^(p+1) + (2^(p+1) + (2^(p+2)-1))). | L4989 | new |
| 492 | Lemma | opening_after_cd_side | Lemma opening_after_cd_side p : sideRLs source_tm (hashes^^opening_after_cd_calls p) ((A8^^p ++ C8 ++ A8 ++ early_tail) *> 0inf) ((B8^^(p+2) ++ fourth_tail) *> 0inf). | L4993 | new |
| 493 | Definition | opening_n4 | Definition opening_n4 := 3*2^29-2. | L5011 | new |
| 494 | Lemma | opening_total_count_general | Lemma opening_total_count_general p : cd_calls p + opening_after_cd_calls p = 2*(3*2^(p+1)-2)+1. | L5013 | new |
| 495 | Lemma | opening_total_count | Lemma opening_total_count : cd_calls 28 + opening_after_cd_calls 28 = 2*opening_n4+1. | L5025 | new |
| 496 | Theorem | opening_D_to_fourth_frontier | Theorem opening_D_to_fourth_frontier :
(D;; tape0) -[source_tm]->*
ordinary_left (2*opening_n4+1) {{{((B, []), R)}}}
((B8^^30 ++ fourth_tail) *> 0inf). | L5029 | new |
| 497 | Fixpoint | sfinish_count | Fixpoint sfinish_count (ds : list SDigit) (out : nat) : nat :=
match ds with
| [] => out
| d::rest => 2*sfinish_count rest out +
match d with SE => 3 | SD => 2 | SA => 1 | SB => 0 end
end. | L5057 | new |
| 498 | Lemma | hash_D_finish | Lemma hash_D_finish n : segRLs source_tm (hashes^^(2*n+2)) (hashes^^n) D8 B8. | L5064 | new |
| 499 | Theorem | sfinish_spec | Theorem sfinish_spec ds out : segRLs source_tm (hashes^^sfinish_count ds out) (hashes^^out) (sdigits_word ds) (B8^^length ds). | L5072 | new |
| 500 | Theorem | sfinish_value | Theorem sfinish_value ds out : (Z.of_nat (sfinish_count ds out) + sdigits_value ds + 1 = (Z.of_nat out+1)*pow2 (length ds))%Z. | L5086 | new |
| 501 | Lemma | tail_level_finish | Lemma tail_level_finish lv : lv <= 5 -> sideRLs source_tm (hashes^^(5-lv)) (y_after lv *> 0inf) ((B8 ++ [1;1]) *> 0inf). | L5097 | new |
| 502 | Definition | last_finish_count | Definition last_finish_count last lv := sfinish_count last (5-lv). | L5106 | new |
| 503 | Lemma | last_to_frontier | Lemma last_to_frontier last k lv : lv <= 5 -> sideRLs source_tm (hashes^^last_finish_count last lv) ((sdigits_word last ++ U^^(2*k+1) ++ y_after lv) *> 0inf) ((B8^^length last ++ U^^(2*k+1) ++ B8 ++ [1;1]) *> 0inf). | L5107 | new |
| 504 | Fixpoint | columns_with_tail | Fixpoint columns_with_tail (zs : list BinaryColumn) (tail : list Sym) : list Sym := match zs with [] => tail | c::rest => binary_column_word c ++ U^^2 ++ columns_with_tail rest tail end. | L5120 | new |
| 505 | Fixpoint | all_B_with_tail | Fixpoint all_B_with_tail (zs : list BinaryColumn) (tail : list Sym) : list Sym := match zs with [] => tail | c::rest => B8^^column_width c ++ U^^2 ++ all_B_with_tail rest tail end. | L5123 | new |
| 506 | Fixpoint | columns_finish_count | Fixpoint columns_finish_count (zs : list BinaryColumn) (out : nat) : nat := match zs with [] => out | c::rest => bfinish_count (column_digits c) (columns_finish_count rest out) end. | L5126 | new |
| 507 | Lemma | columns_finish_tail | Lemma columns_finish_tail zs out input output : sideRLs source_tm (hashes^^out) (input *> 0inf) (output *> 0inf) -> sideRLs source_tm (hashes^^columns_finish_count zs out) (columns_with_tail zs input *> 0inf) (all_B_with_tail zs output *> 0inf). | L5130 | new |
| 508 | Definition | tail_finish_count | Definition tail_finish_count primary zs last lv := bfinish_count (repeat BA primary) (columns_finish_count zs (last_finish_count last lv)). | L5144 | new |
| 509 | Definition | tail_frontier | Definition tail_frontier primary zs (last : list SDigit) k := B8^^primary ++ U^^2 ++ all_B_with_tail zs (B8^^length last ++ U^^(2*k+1) ++ B8 ++ [1;1]). | L5146 | new |
| 510 | Lemma | spaced_cons_nonempty | Lemma spaced_cons_nonempty a xs : xs <> [] -> spaced_words (a::xs) = a ++ U^^2 ++ spaced_words xs. | L5150 | new |
| 511 | Lemma | tail_layout_chain | Lemma tail_layout_chain primary zs last k lv : tail_layout primary zs last k lv = A8^^primary ++ U^^2 ++ columns_with_tail zs (sdigits_word last ++ U^^(2*k+1) ++ y_after lv). | L5154 | new |
| 512 | Theorem | tail_to_frontier | Theorem tail_to_frontier primary zs last k lv : lv <= 5 -> sideRLs source_tm (hashes^^tail_finish_count primary zs last lv) (tail_layout primary zs last k lv *> 0inf) (tail_frontier primary zs last k *> 0inf). | L5172 | new |
| 513 | Lemma | pow2_add_local | Lemma pow2_add_local a b : (pow2 (a+b) = pow2 a * pow2 b)%Z. | L5192 | new |
| 514 | Lemma | pow2_Zpow | Lemma pow2_Zpow n : pow2 n = (2^Z.of_nat n)%Z. | L5195 | new |
| 515 | Lemma | bfinish_value_Z | Lemma bfinish_value_Z ds out : (Z.of_nat (bfinish_count ds out) + Z.of_nat (digits_value ds) + 1 = (Z.of_nat out+1)*pow2 (length ds))%Z. | L5198 | new |
| 516 | Fixpoint | columns_value_Z | Fixpoint columns_value_Z (zs : list BinaryColumn) : Z :=
match zs with [] => 0%Z
| c::rest => (Z.of_nat (column_value c) +
pow2 (column_width c)*columns_value_Z rest)%Z end. | L5206 | new |
| 517 | Lemma | zs_value_shift | Lemma zs_value_shift o zs : (zs_value o zs = pow2 o * columns_value_Z zs)%Z. | L5211 | new |
| 518 | Lemma | columns_finish_value | Lemma columns_finish_value zs out : (Z.of_nat (columns_finish_count zs out) + columns_value_Z zs + 1 = (Z.of_nat out+1)*pow2 (columns_width_sum zs))%Z. | L5219 | new |
| 519 | Theorem | trigger_hash_count | Theorem trigger_hash_count primary zs last lv : lv <= 5 -> Z.of_nat (S (tail_finish_count primary zs last lv)) = trigger_hash primary zs last lv. | L5237 | new |
| 520 | Definition | E_digit | Definition E_digit (n : N) : SDigit := match n with | N0 => SE | Npos xH => SD | Npos (xO _) => SA | Npos (xI _) => SB end. | L5278 | new |
| 521 | Definition | E_carry | Definition E_carry (n : N) : N := match n with | N0 | Npos xH => N0 | Npos (xO p) | Npos (xI p) => N.pred (Npos p) end. | L5283 | new |
| 522 | Fixpoint | E_decode | Fixpoint E_decode (width : nat) (n : N) : list SDigit * N :=
match width with
| O => ([], n)
| S w => let '(ds, out) := E_decode w (E_carry n) in
(E_digit n :: ds, out)
end. | L5288 | new |
| 523 | Lemma | E_digit_spec | Lemma E_digit_spec n : segRLs source_tm (hashes^^N.to_nat n) (hashes^^N.to_nat (E_carry n)) E8 (sdigit_word (E_digit n)). | L5295 | new |
| 524 | Theorem | E_decode_spec | Theorem E_decode_spec width n : segRLs source_tm (hashes^^N.to_nat n) (hashes^^N.to_nat (snd (E_decode width n))) (E8^^width) (sdigits_word (fst (E_decode width n))). | L5316 | new |
| 525 | Lemma | E_decode_length | Lemma E_decode_length width n : length (fst (E_decode width n)) = width. | L5328 | new |
| 526 | Lemma | E_digit_value | Lemma E_digit_value n : (Z.of_N n - 2 = sdigit_value (E_digit n) + 2*Z.of_N (E_carry n))%Z. | L5337 | new |
| 527 | Theorem | E_decode_value | Theorem E_decode_value width n : (sdigits_value (fst (E_decode width n)) + pow2 width * Z.of_N (snd (E_decode width n)) = Z.of_N n - 2*(pow2 width-1))%Z. | L5344 | new |
| 528 | Definition | opening_call_base | Definition opening_call_base : N := 462424812206%N. | L5370 | new |
| 529 | Definition | opening_digits | Definition opening_digits : list SDigit := [SA;SA;SA;SA;SB;SB;SA;SB;SA;SB;SA;SB;SA;SB;SA;SB;SA;SB;SA;SB;SA;SB;SA;SB;SA;SB;SA;SB;SA;SB;SA;SB;SB;SB;SA;SB]. | L5371 | new |
| 530 | Lemma | opening_decode_exact | Lemma opening_decode_exact : E_decode 36 opening_call_base = (opening_digits, 4%N). | L5373 | new |
| 531 | Lemma | opening_digits_value | Lemma opening_digits_value : sdigits_value opening_digits = 50107951792%Z. | L5377 | new |
| 532 | Lemma | opening_tail_four | Lemma opening_tail_four : sideRLs source_tm (hashes^^4) (A8 *> 0inf) ((A8 ++ [1;1]) *> 0inf). | L5380 | new |
| 533 | Lemma | opening_decode_base | Lemma opening_decode_base : sideRLs source_tm (hashes^^N.to_nat opening_call_base) ((E8^^36 ++ U^^3 ++ A8) *> 0inf) ((sdigits_word opening_digits ++ U^^3 ++ A8 ++ [1;1]) *> 0inf). | L5386 | new |
| 534 | Definition | opening_decode_calls | Definition opening_decode_calls k := 2^k*N.to_nat opening_call_base + 2*(2^k-1). | L5398 | new |
| 535 | Theorem | opening_decode | Theorem opening_decode k : sideRLs source_tm (hashes^^opening_decode_calls k) ((E8^^(k+36) ++ U^^3 ++ A8) *> 0inf) ((A8^^k ++ sdigits_word opening_digits ++ U^^3 ++ A8 ++ [1;1]) *> 0inf). | L5403 | new |
| 536 | Lemma | opening_call_base_formula | Lemma opening_call_base_formula : N.to_nat opening_call_base = (1292*2^30+4)/3 + 2. | L5416 | new |
| 537 | Theorem | opening_decode_calls_formula | Theorem opening_decode_calls_formula k : opening_decode_calls k = 2^(k+2)-2 + 2^k*((1292*2^30+4)/3). | L5425 | new |
| 538 | Definition | entry_n5 | Definition entry_n5 := opening_decode_calls (opening_n4-2). | L5452 | new |
| 539 | Definition | entry_current | Definition entry_current := (entry_n5-6)/2. | L5453 | new |
| 540 | Definition | entry_previous | Definition entry_previous := (opening_n4-6)/2. | L5454 | new |
| 541 | Definition | entry_rest | Definition entry_rest := skipn 9 opening_digits. | L5455 | new |
| 542 | Definition | entry_last | Definition entry_last := SB::SB::entry_rest. | L5456 | new |
| 543 | Definition | entry_state | Definition entry_state := post_ca_tail (round_post_unary entry_current entry_previous) (round_primary_width entry_current entry_previous) [] entry_last 1 4. | L5457 | new |
| 544 | Lemma | opening_n4_even_large | Lemma opening_n4_even_large : (exists q, opening_n4=2*q) /\ 64<=opening_n4. | L5461 | new |
| 545 | Lemma | even_index_half | Lemma even_index_half n : (exists q, n=2*q /\ 6<=2*q) -> half_parameter ((n-6)/2)=n. | L5473 | new |
| 546 | Lemma | entry_previous_half | Lemma entry_previous_half : half_parameter entry_previous=opening_n4. | L5479 | new |
| 547 | Lemma | opening_base_even | Lemma opening_base_even : exists b, N.to_nat opening_call_base=2*b. | L5487 | new |
| 548 | Lemma | opening_decode_even_ge6 | Lemma opening_decode_even_ge6 k : 2<=k -> exists q, opening_decode_calls k=2*q /\ 6<=2*q. | L5494 | new |
| 549 | Lemma | entry_n5_even_ge6 | Lemma entry_n5_even_ge6 : exists q, entry_n5=2*q /\ 6<=2*q. | L5504 | new |
| 550 | Lemma | entry_current_half | Lemma entry_current_half : half_parameter entry_current=entry_n5. | L5512 | new |
| 551 | Lemma | opening_entry_growth | Lemma opening_entry_growth n : 64<=n -> 2*(n+30)+4 <= opening_decode_calls (n-2)+1. | L5517 | new |
| 552 | Lemma | entry_last_facts | Lemma entry_last_facts : length entry_last=29 /\ sdigits_value entry_last=391468375%Z /\ Z.odd (sdigits_value entry_last)=true. | L5529 | new |
| 553 | Lemma | entry_opening_word | Lemma entry_opening_word : A8^^(opening_n4-2) ++ sdigits_word opening_digits ++ U^^3 ++ A8 ++ [1;1] = A8^^(2*(entry_previous+4)) ++ B8++B8++A8++B8++A8++ (sdigits_word entry_rest ++ U^^3 ++ A8 ++ [1;1]). | L5534 | new |
| 554 | Theorem | opening_exception_to_entry | Theorem opening_exception_to_entry : exception_done entry_n5 (A8^^(opening_n4-2) ++ sdigits_word opening_digits ++ U^^3 ++ A8 ++ [1;1]) -[source_tm]->+ entry_state. | L5550 | new |
| 555 | Theorem | entry_pre | Theorem entry_pre : finite_round_pre entry_current entry_previous [] entry_last 1 4. | L5571 | new |
| 556 | Definition | fossil_tail | Definition fossil_tail := C8 ++ [1;1] ++ C8 ++ U ++ [1;1] ++ U. | L5605 | new |
| 557 | Definition | fossil_start | Definition fossil_start m := C8 ++ A8^^m ++ D8 ++ D8 ++ A8 ++ U ++ E8 ++ A8. | L5606 | new |
| 558 | Lemma | fossil_scan | Lemma fossil_scan m : segRLs source_tm hashes [] (fossil_start m) (D8 ++ C8^^m ++ D8 ++ D8 ++ fossil_tail). | L5608 | new |
| 559 | Lemma | fossil_tail_finish | Lemma fossil_tail_finish : sideRLs source_tm (hashes^^25) (fossil_tail *> 0inf) ((B8^^2 ++ U ++ B8 ++ [1;1]) *> 0inf). | L5616 | new |
| 560 | Lemma | c_sweep_even | Lemma c_sweep_even width pairs rest : segRLs source_tm (hashes^^c_sweep_calls width pairs) [] (A8^^width ++ C8^^(2*pairs) ++ rest) (A8^^(width+2*pairs) ++ rest). | L5624 | new |
| 561 | Lemma | fossil_tail_lift | Lemma fossil_tail_lift width : sideRLs source_tm (hashes^^(25*2^width + (2^width-1))) ((A8^^width ++ fossil_tail) *> 0inf) ((B8^^(width+2) ++ U ++ B8 ++ [1;1]) *> 0inf). | L5641 | new |
| 562 | Definition | fossil_calls | Definition fossil_calls p k := 2^p + 2^p + c_sweep_calls (p+1) k + 2^(p+1+2*k) + 2^(p+2+2*k) + (25*2^(p+3+2*k) + (2^(p+3+2*k)-1)). | L5656 | new |
| 563 | Theorem | fossil_run | Theorem fossil_run p k : sideRLs source_tm (hashes^^fossil_calls p k) ((A8^^p ++ fossil_start (2*k)) *> 0inf) ((B8^^(p+2*k+5) ++ U ++ B8 ++ [1;1]) *> 0inf). | L5661 | new |
| 564 | Lemma | geom4n_power | Lemma geom4n_power k : 3 * geom4n k + 1 = 2^(2*k). | L5690 | new |
| 565 | Lemma | fossil_count_formula | Lemma fossil_count_formula n k : fossil_calls (S n) k = 2^n * ((1292*2^(2*k)+4)/3) - 1. | L5698 | new |
| 566 | Theorem | fossil_run_closed | Theorem fossil_run_closed n k : sideRLs source_tm (hashes^^(2^n * ((1292*2^(2*k)+4)/3) - 1)) ((A8^^(S n) ++ fossil_start (2*k)) *> 0inf) ((B8^^(S n+2*k+5) ++ U ++ B8 ++ [1;1]) *> 0inf). | L5715 | new |
| 567 | Definition | exception_done_side | Definition exception_done_side n (output : side) : Q * tape :=
common_left_wall {{{((B, []), R)}}}
((C8 ++ A8 ++ U^^(2*n)) *> output). | L5740 | new |
| 568 | Lemma | exception_exit_side | Lemma exception_exit_side k output :
exception_call_left 0 k {{{((F, []), L)}}} output -[source_tm]->+
exception_done_side (S k) output. | L5744 | new |
| 569 | Lemma | exception_exit_zero_side | Lemma exception_exit_zero_side output :
exception_pre_left 0 {{{((F, []), L)}}} output -[source_tm]->+
exception_done_side 0 output. | L5754 | new |
| 570 | Lemma | exception_calls_side | Lemma exception_calls_side k input output :
sideRLs source_tm (hashes^^(S k)) input output ->
exception_call_left k 0 {{{((B, []), R)}}} input -[source_tm]->+
exception_call_left 0 k {{{((F, []), L)}}} output. | L5762 | new |
| 571 | Theorem | exception_pre_from_side | Theorem exception_pre_from_side n input output :
sideRLs source_tm (hashes^^n) input output ->
exception_pre_left n {{{((F, []), L)}}} input -[source_tm]->+
exception_done_side n output. | L5777 | new |
| 572 | Corollary | exception_pre_from_side_word | Corollary exception_pre_from_side_word n input output :
sideRLs source_tm (hashes^^n) (input *> 0inf) (output *> 0inf) ->
exception_pre_left n {{{((F, []), L)}}} (input *> 0inf) -[source_tm]->+
exception_done n output. | L5790 | new |
| 573 | Lemma | ordinary_raw_pre_left | Lemma ordinary_raw_pre_left n : [1;0;1] *> ordinary_left (2*n+1) = exception_pre_left n. | L5801 | new |
| 574 | Lemma | ordinary_raw_pre_left_count | Lemma ordinary_raw_pre_left_count tally n : tally = 2*n+1 -> [1;0;1] *> ordinary_left tally = exception_pre_left n. | L5809 | new |
| 575 | Lemma | exception_relaunches_partial | Lemma exception_relaunches_partial h r finished : sideRLs (flip source_tm) ([left_hash]^^h) (exception_call_left (h+r) finished) (exception_call_left r (finished+h)). | L5813 | new |
| 576 | Theorem | exception_partial_side | Theorem exception_partial_side h r finished input output :
sideRLs source_tm (hashes^^h) input output ->
exception_call_left (h+r) finished {{{((B, []), R)}}} input -[source_tm]->*
exception_call_left r (finished+h) {{{((B, []), R)}}} output. | L5826 | new |
| 577 | Theorem | exception_launch_partial_side | Theorem exception_launch_partial_side h r input output :
sideRLs source_tm (hashes^^h) input output ->
exception_pre_left (S (h+r)) {{{((F, []), L)}}} input -[source_tm]->+
exception_call_left r h {{{((B, []), R)}}} output. | L5837 | new |
| 578 | Definition | fourth_output | Definition fourth_output := A8^^29 ++ D8 ++ D8 ++ A8 ++ U ++ E8 ++ A8. | L5866 | new |
| 579 | Definition | fourth_raw_output | Definition fourth_raw_output := E8^^30 ++ D8 ++ A8 ++ U ++ E8 ++ A8. | L5867 | new |
| 580 | Lemma | fourth_raw | Lemma fourth_raw l :
l {{{((B, []), R)}}} ((B8^^30 ++ fourth_tail) *> 0inf) -[source_tm]->+
([1;0;1] *> l) {{{((F, []), L)}}} (fourth_raw_output *> 0inf). | L5869 | new |
| 581 | Lemma | n4_binary | Lemma n4_binary : opening_n4 = N.to_nat 1610612734%N. | L5877 | new |
| 582 | Lemma | n4_large | Lemma n4_large : 10 <= opening_n4. | L5884 | new |
| 583 | Lemma | fourth_decode | Lemma fourth_decode : segRLs source_tm (hashes^^opening_n4) [] fourth_raw_output fourth_output. | L5889 | new |
| 584 | Theorem | fourth_frontier_to_done | Theorem fourth_frontier_to_done :
ordinary_left (2*opening_n4+1) {{{((B, []), R)}}}
((B8^^30 ++ fourth_tail) *> 0inf) -[source_tm]->+
exception_done opening_n4 fourth_output. | L5901 | new |
| 585 | Lemma | fourth_cd_to_fossil | Lemma fourth_cd_to_fossil :
exception_done opening_n4 fourth_output -[source_tm]->+
ordinary_left (cd_calls opening_n4) {{{((B, []), R)}}}
((A8^^opening_n4 ++ fossil_start 30) *> 0inf). | L5911 | new |
| 586 | Lemma | fossil_calls_positive_formula | Lemma fossil_calls_positive_formula p k : 1 <= p -> fossil_calls p k = 2^(p-1)*((1292*2^(2*k)+4)/3)-1. | L5924 | new |
| 587 | Lemma | fifth_total_tally_generic | Lemma fifth_total_tally_generic n : 2 <= n -> cd_calls n + fossil_calls n 15 = 2*opening_decode_calls (n-2)+1. | L5931 | new |
| 588 | Lemma | fifth_total_tally | Lemma fifth_total_tally : cd_calls opening_n4 + fossil_calls opening_n4 15 = 2*opening_decode_calls (opening_n4-2)+1. | L5956 | new |
| 589 | Definition | fifth_output | Definition fifth_output := A8^^(opening_n4-2) ++ sdigits_word opening_digits ++ U^^3 ++ A8 ++ [1;1]. | L5961 | new |
| 590 | Theorem | fossil_to_fifth_frontier | Theorem fossil_to_fifth_frontier :
ordinary_left (cd_calls opening_n4) {{{((B, []), R)}}}
((A8^^opening_n4 ++ fossil_start 30) *> 0inf) -[source_tm]->*
ordinary_left (2*opening_decode_calls (opening_n4-2)+1) {{{((B, []), R)}}}
((B8^^(opening_n4+35) ++ U ++ B8 ++ [1;1]) *> 0inf). | L5963 | new |
| 591 | Lemma | fifth_frontier_to_done_generic | Lemma fifth_frontier_to_done_generic n : 2 <= n ->
ordinary_left (2*opening_decode_calls (n-2)+1) {{{((B, []), R)}}}
((B8^^(n+35) ++ U ++ B8 ++ [1;1]) *> 0inf) -[source_tm]->+
exception_done (opening_decode_calls (n-2)) (A8^^(n-2) ++ sdigits_word opening_digits ++ U^^3 ++ A8 ++ [1;1]). | L5976 | new |
| 592 | Theorem | fifth_frontier_to_done | Theorem fifth_frontier_to_done :
ordinary_left (2*opening_decode_calls (opening_n4-2)+1) {{{((B, []), R)}}}
((B8^^(opening_n4+35) ++ U ++ B8 ++ [1;1]) *> 0inf) -[source_tm]->+
exception_done (opening_decode_calls (opening_n4-2)) fifth_output. | L5993 | new |
| 593 | Theorem | opening_D_to_fifth_done | Theorem opening_D_to_fifth_done : (D;; tape0) -[source_tm]->* exception_done (opening_decode_calls (opening_n4-2)) fifth_output. | L6001 | new |
| 594 | Definition | decode_budget | Definition decode_budget r := ceil_half r - 2. | L6025 | new |
| 595 | Lemma | column_decode_budget | Lemma column_decode_budget c c' r : 4 <= r -> column_step (Nat.odd r) c c' -> column_required (decode_budget r) c' = decode_budget (r*2^(column_width c)-column_value c). | L6027 | new |
| 596 | Fixpoint | right_remaining | Fixpoint right_remaining (cs : list BinaryColumn) (r : nat) : nat := match cs with | [] => r | c::rest => right_remaining rest r * 2^(column_width c) - column_value c end. | L6056 | new |
| 597 | Fixpoint | columns_input_count | Fixpoint columns_input_count (cs : list BinaryColumn) (out : nat) : nat := match cs with | [] => out | c::rest => column_required (columns_input_count rest out) c end. | L6061 | new |
| 598 | Lemma | right_remaining_lower | Lemma right_remaining_lower cs r : 1 <= r -> r <= right_remaining cs r. | L6067 | new |
| 599 | Lemma | right_remaining_head_parity | Lemma right_remaining_head_parity c cs r : 1 <= r -> Nat.odd (right_remaining (c::cs) r) = Nat.odd (column_value c). | L6079 | new |
| 600 | Theorem | columns_decode_budget | Theorem columns_decode_budget cs cs' r : 4 <= r -> tail_columns_step (Nat.odd r) cs cs' -> columns_input_count cs' (decode_budget r) = decode_budget (right_remaining cs r). | L6095 | new |
| 601 | Lemma | right_remaining_finish | Lemma right_remaining_finish cs last lv : right_remaining cs (S (last_finish_count last lv)) = S (columns_finish_count cs (last_finish_count last lv)). | L6111 | new |
| 602 | Fixpoint | mixed_with_tail | Fixpoint mixed_with_tail (cs : list BinaryColumn) (tail : list sym) : list sym := match cs with | [] => tail | c::rest => mixed_column_word c ++ U^^2 ++ mixed_with_tail rest tail end. | L6126 | new |
| 603 | Theorem | mixed_with_tail_spec | Theorem mixed_with_tail_spec cs out input output : sideRLs source_tm (hashes^^out) (input *> 0inf) (output *> 0inf) -> sideRLs source_tm (hashes^^columns_input_count cs out) (mixed_with_tail cs input *> 0inf) (columns_with_tail cs output *> 0inf). | L6132 | new |
| 604 | Lemma | mixed_with_tail_same_width | Lemma mixed_with_tail_same_width b cs cs' input : tail_columns_step b cs cs' -> mixed_with_tail cs input = mixed_with_tail cs' input. | L6145 | new |
| 605 | Theorem | tail_columns_decode | Theorem tail_columns_decode cs cs' r input output : 4 <= r -> tail_columns_step (Nat.odd r) cs cs' -> sideRLs source_tm (hashes^^decode_budget r) (input *> 0inf) (output *> 0inf) -> sideRLs source_tm (hashes^^decode_budget (right_remaining cs r)) (mixed_with_tail cs input *> 0inf) (columns_with_tail cs' output *> 0inf). | L6156 | new |
| 606 | Lemma | post_unary_even | Lemma post_unary_even current previous : round_post_unary current previous = 2*(round_post_unary current previous/2). | L6170 | new |
| 607 | Theorem | primary_decode_tally | Theorem primary_decode_tally current previous r : 4 <= r -> Nat.odd r = true -> round_post_unary current previous + (r*2^(round_primary_width current previous)-1) = 2*column_required (decode_budget r) (round_outer_column current previous)+1. | L6186 | new |
| 608 | Definition | decoded_last7 | Definition decoded_last7 := fst (E_decode 28 341136723%N). | L6226 | new |
| 609 | Definition | decoded_last8 | Definition decoded_last8 := fst (E_decode 27 768955732%N). | L6227 | new |
| 610 | Definition | decoded_last9 | Definition decoded_last9 := fst (E_decode 26 18175315%N). | L6228 | new |
| 611 | Lemma | decode_last7 | Lemma decode_last7 : E_decode 28 341136723%N = (decoded_last7, 0%N). | L6230 | new |
| 612 | Lemma | decode_last8 | Lemma decode_last8 : E_decode 27 768955732%N = (decoded_last8, 3%N). | L6232 | new |
| 613 | Lemma | decode_last9 | Lemma decode_last9 : E_decode 26 18175315%N = (decoded_last9, 0%N). | L6234 | new |
| 614 | Lemma | decode_trigger_frontier | Lemma decode_trigger_frontier : E_decode 25 134217725%N = (repeat SB 25, 1%N). | L6236 | new |
| 615 | Theorem | decoded_last_checkpoints | Theorem decoded_last_checkpoints : length decoded_last7 = 28 /\ sdigits_value decoded_last7 = (-195734187)%Z /\ length decoded_last8 = 27 /\ sdigits_value decoded_last8 = 97867094%Z /\ length decoded_last9 = 26 /\ sdigits_value decoded_last9 = (-116042411)%Z. | L6240 | new |
| 616 | Lemma | E_decode_tail_run | Lemma E_decode_tail_run width calls ds out k lv : E_decode width calls = (ds, out) -> sideRLs source_tm (hashes^^N.to_nat out) (y_after k *> 0inf) (y_after lv *> 0inf) -> sideRLs source_tm (hashes^^N.to_nat calls) ((E8^^width ++ U^^(2*k+3) ++ y_after k) *> 0inf) … +1 lines | L6246 | new |
| 617 | Theorem | last_case6_return | Theorem last_case6_return : sideRLs source_tm (hashes^^N.to_nat 341136723%N) ((E8^^28 ++ U^^5 ++ y_after 1) *> 0inf) ((sdigits_word decoded_last7 ++ U^^5 ++ y_after 1) *> 0inf). | L6263 | new |
| 618 | Theorem | last_case7_return | Theorem last_case7_return : sideRLs source_tm (hashes^^N.to_nat 768955732%N) ((E8^^27 ++ U^^7 ++ y_after 2) *> 0inf) ((sdigits_word decoded_last8 ++ U^^7 ++ y_after 5) *> 0inf). | L6272 | new |
| 619 | Theorem | last_case8_return | Theorem last_case8_return : sideRLs source_tm (hashes^^N.to_nat 18175315%N) ((E8^^26 ++ U^^9 ++ y_after 3) *> 0inf) ((sdigits_word decoded_last9 ++ U^^9 ++ y_after 3) *> 0inf). | L6281 | new |
| 620 | Theorem | last_case9_frontier | Theorem last_case9_frontier : sideRLs source_tm (hashes^^N.to_nat 134217725%N) ((E8^^25 ++ U^^11 ++ y_after 4) *> 0inf) ((B8^^25 ++ U^^11 ++ y_after 5) *> 0inf). | L6290 | new |
| 621 | Definition | phase_R | Definition phase_R (k : nat) : N := match k with | 1%nat => 682273449%N | 2%nat => 1537911467%N | 3%nat => 36350634%N | _ => 317369003%N end. | L6321 | new |
| 622 | Lemma | phase_R_value | Lemma phase_R_value k : 1 <= k <= 4 -> ((6-Z.of_nat (phase_lv k))*pow2 (phase_width k)-phase_value k = Z.of_N (phase_R k))%Z. | L6327 | new |
| 623 | Theorem | finite_last_R | Theorem finite_last_R current previous zs last k lv : finite_round_pre current previous zs last k lv -> S (last_finish_count last lv) = N.to_nat (phase_R k). | L6336 | new |
| 624 | Lemma | phase_R_large | Lemma phase_R_large k : (4 <= N.to_nat (phase_R k))%nat. | L6352 | new |
| 625 | Definition | next_last | Definition next_last k := match k with 1%nat => decoded_last7 | 2%nat => decoded_last8 | _ => decoded_last9 end. | L6358 | new |
| 626 | Lemma | phase_decode_budget | Lemma phase_decode_budget k : 1 <= k <= 3 -> decode_budget (N.to_nat (phase_R k)) = N.to_nat (match k with 1%nat => 341136723%N | 2%nat => 768955732%N | _ => 18175315%N end). | L6361 | new |
| 627 | Theorem | finite_last_decode | Theorem finite_last_decode k : 1 <= k <= 3 -> sideRLs source_tm (hashes^^decode_budget (N.to_nat (phase_R k))) ((E8^^(phase_width k-1) ++ U^^(2*k+3) ++ y_after k) *> 0inf) ((sdigits_word (next_last k) ++ U^^(2*k+3) ++ y_after (phase_lv (S k))) *> 0inf). | L6372 | new |
| 628 | Theorem | next_last_checkpoints | Theorem next_last_checkpoints k : 1 <= k <= 3 -> length (next_last k) = phase_width (S k) /\ sdigits_value (next_last k) = phase_value (S k). | L6385 | new |
| 629 | Lemma | N_to_nat_odd | Lemma N_to_nat_odd n : Nat.odd (N.to_nat n) = N.odd n. | L6398 | new |
| 630 | Lemma | phase_R_parity | Lemma phase_R_parity k : Nat.odd (N.to_nat (phase_R k)) = Z.odd (phase_value k). | L6407 | new |
| 631 | Lemma | finite_suffix_odd | Lemma finite_suffix_odd current previous zs last k lv : finite_round_pre current previous zs last k lv -> Nat.odd (right_remaining zs (N.to_nat (phase_R k))) = true. | L6414 | new |
| 632 | Theorem | finite_columns_decode | Theorem finite_columns_decode current previous zs last k lv : finite_round_pre current previous zs last k lv -> k<=3 -> exists zs', tail_columns_step (Nat.odd (N.to_nat (phase_R k))) zs zs' /\ Forall (column_budget (4-S k)) (z_column previous :: zs') /\ sideRLs source_tm (hashes^^decode_budget (right_remaining zs (N.to_nat (phase_R k)))) … +3 lines | L6425 | new |
| 633 | Definition | tail_frontier_state | Definition tail_frontier_state unary primary zs last k : Q * tape :=
ordinary_left unary {{{((B, []), R)}}} (tail_frontier primary zs last k *> 0inf). | L6457 | new |
| 634 | Theorem | post_tail_to_frontier | Theorem post_tail_to_frontier unary primary zs last k lv : lv <= 5 -> post_ca_tail unary primary zs last k lv -[source_tm]->* tail_frontier_state (unary + tail_finish_count primary zs last lv) primary zs last k. | L6460 | new |
| 635 | Lemma | all_B_tail_full | Lemma all_B_tail_full zs last k : all_B_with_tail zs (B8^^S last ++ tail_word k) = full_tail (map column_e zs) last k. | L6470 | new |
| 636 | Lemma | tail_frontier_full | Lemma tail_frontier_full primary zs last k e : length last = S e -> tail_frontier (S primary) zs last k = full_tail (primary :: map column_e zs) e k. | L6483 | new |
| 637 | Theorem | post_tail_raw | Theorem post_tail_raw unary primary zs last k lv e :
lv <= 5 -> k <= 5 -> length last = S e ->
post_ca_tail unary (S primary) zs last k lv -[source_tm]->+
([1;0;1] *> ordinary_left
(unary + tail_finish_count (S primary) zs last lv)) {{{((F, []), L)}}}
(mixed_tail (primary :: map column_e zs) e k *> 0inf). | L6495 | new |
| 638 | Lemma | mixed_tail_chain | Lemma mixed_tail_chain cs e k : mixed_tail (map column_e cs) e k = mixed_with_tail cs (E8^^e ++ U^^(2*k+3) ++ y_after k). | L6523 | new |
| 639 | Lemma | tail_finish_equation | Lemma tail_finish_equation primary zs last lv : S (tail_finish_count primary zs last lv) = S (columns_finish_count zs (last_finish_count last lv))*2^primary. | L6535 | new |
| 640 | Definition | finite_decode_count | Definition finite_decode_count current previous zs k := column_required (decode_budget (right_remaining zs (N.to_nat (phase_R k)))) (round_outer_column current previous). | L6545 | new |
| 641 | Definition | finite_decode_input | Definition finite_decode_input current previous zs k := mixed_with_tail (round_outer_column current previous :: zs) (E8^^(phase_width k-1) ++ U^^(2*k+3) ++ y_after k). | L6548 | new |
| 642 | Definition | finite_decode_output | Definition finite_decode_output current previous zs' k := columns_with_tail (round_outer_column current previous :: zs') (sdigits_word (next_last k) ++ U^^(2*k+3) ++ y_after (phase_lv (S k))). | L6551 | new |
| 643 | Theorem | finite_raw_to_pre | Theorem finite_raw_to_pre current previous zs last k lv :
finite_round_pre current previous zs last k lv ->
post_ca_tail (round_post_unary current previous)
(round_primary_width current previous) zs last k lv -[source_tm]->+
exception_pre_left (finite_decode_count current previous zs k) {{{((F, []), L)}}}
(finite_decode_input current previous zs k *> 0inf). | L6555 | new |
| 644 | Theorem | finite_decode_side | Theorem finite_decode_side current previous zs last k lv zs' : finite_round_pre current previous zs last k lv -> k<=3 -> tail_columns_step (Nat.odd (N.to_nat (phase_R k))) zs zs' -> sideRLs source_tm (hashes^^finite_decode_count current previous zs k) (finite_decode_input current previous zs k *> 0inf) (finite_decode_output current previous zs' k *> 0inf). | L6595 | new |
| 645 | Theorem | finite_exception_done | Theorem finite_exception_done current previous zs last k lv : finite_round_pre current previous zs last k lv -> k<=3 -> exists zs', tail_columns_step (Nat.odd (N.to_nat (phase_R k))) zs zs' /\ Forall (column_budget (4-S k)) (z_column previous :: zs') /\ post_ca_tail (round_post_unary current previous) … +3 lines | L6615 | new |
| 646 | Theorem | finite_done_to_next_post | Theorem finite_done_to_next_post current previous zs' k next : exception_done (half_parameter next) (finite_decode_output current previous zs' k) -[source_tm]->+ post_ca_tail (round_post_unary next current) (round_primary_width next current) (z_column previous :: zs') (next_last k) (S k) (phase_lv (S k)). | L6636 | new |
| 647 | Lemma | outer_decode_even_ge6 | Lemma outer_decode_even_ge6 current previous out : exists q, column_required out (round_outer_column current previous) = 2*q /\ 6 <= 2*q. | L6673 | new |
| 648 | Lemma | outer_decode_parameter | Lemma outer_decode_parameter current previous out : half_parameter ((column_required out (round_outer_column current previous)-6)/2) = column_required out (round_outer_column current previous). | L6701 | new |
| 649 | Lemma | outer_decode_lower | Lemma outer_decode_lower current previous out : 2^(round_primary_width current previous)-2 <= column_required out (round_outer_column current previous). | L6710 | new |
| 650 | Lemma | outer_decode_growth | Lemma outer_decode_growth current previous out suffix_width : 2*suffix_width+4 <= half_parameter previous+1 -> 2*(half_parameter current+1+half_parameter previous+suffix_width)+4 <= column_required out (round_outer_column current previous)+1. | L6721 | new |
| 651 | Lemma | tail_columns_step_width_sum | Lemma tail_columns_step_width_sum b cs cs' : tail_columns_step b cs cs' -> columns_width_sum cs' = columns_width_sum cs. | L6737 | new |
| 652 | Theorem | tail_width_dominance_step | Theorem tail_width_dominance_step current previous next out cs cs' (last last' : list SDigit) b : tail_columns_step b cs cs' -> length last = S (length last') -> half_parameter next = column_required out (round_outer_column current previous) -> (2*(columns_width_sum cs+length last)+4 <= half_parameter previous+1 /\ … +6 lines | L6748 | new |
| 653 | Lemma | tail_next_half_tally | Lemma tail_next_half_tally current previous cs last lv n : lv<=5 -> round_post_unary current previous + tail_finish_count (round_primary_width current previous) cs last lv = 2*n+1 -> tail_next_half current previous cs last lv = Z.of_nat n. | L6770 | new |
| 654 | Theorem | tail_next_parameter | Theorem tail_next_parameter current previous cs last lv out :
lv<=5 ->
round_post_unary current previous +
tail_finish_count (round_primary_width current previous) cs last lv =
2*column_required out (round_outer_column current previous)+1 ->
half_parameter (tail_next_index current previous cs last lv) =
… +1 lines | L6790 | new |
| 655 | Lemma | finite_tally | Lemma finite_tally current previous zs last k lv : finite_round_pre current previous zs last k lv -> round_post_unary current previous + tail_finish_count (round_primary_width current previous) zs last lv = 2*finite_decode_count current previous zs k+1. | L6825 | new |
| 656 | Lemma | finite_next_parameter | Lemma finite_next_parameter current previous zs last k lv : finite_round_pre current previous zs last k lv -> half_parameter (tail_next_index current previous zs last lv) = finite_decode_count current previous zs k. | L6843 | new |
| 657 | Theorem | finite_round_proved | Theorem finite_round_proved : finite_round_obligation. | L6855 | new |
| 658 | Fixpoint | full_finish_count | Fixpoint full_finish_count es out := match es with [] => out | e::rest => (full_finish_count rest out+2)*2^(S e)-3 end. | L6891 | new |
| 659 | Lemma | full_finish_prefix | Lemma full_finish_prefix es out input output : sideRLs source_tm (hashes^^out) (input *> 0inf) (output *> 0inf) -> sideRLs source_tm (hashes^^full_finish_count es out) ((spaced_words (map (fun e=>E8^^e++A8) es ++ [input])) *> 0inf) ((spaced_words (map (fun e=>B8^^S e) es ++ [output])) *> 0inf). | L6895 | new |
| 660 | Lemma | spaced_tail_append | Lemma spaced_tail_append ws x suffix : spaced_words (ws++[x++suffix]) = spaced_words (ws++[x]) ++ suffix. | L6915 | new |
| 661 | Definition | trigger_finish | Definition trigger_finish es := full_finish_count es (N.to_nat 134217725%N). | L6922 | new |
| 662 | Theorem | raw_four_to_frontier | Theorem raw_four_to_frontier es : sideRLs source_tm (hashes^^trigger_finish es) (mixed_tail es 25 4 *> 0inf) (full_tail es 24 5 *> 0inf). | L6924 | new |
| 663 | Lemma | full_finish_monotone | Lemma full_finish_monotone es a b : a<=b -> full_finish_count es a <= full_finish_count es b. | L6933 | new |
| 664 | Lemma | nested_required_finish | Lemma nested_required_finish es e : nested_required es e = full_finish_count es (3*(2^(S e)-1)). | L6939 | new |
| 665 | Lemma | trigger_finish_sufficient | Lemma trigger_finish_sufficient es : nested_required es 23 <= trigger_finish es. | L6949 | new |
| 666 | Lemma | full_finish_less_than_decode | Lemma full_finish_less_than_decode cs out small : small<out -> full_finish_count (map column_e cs) small < columns_input_count cs out. | L6958 | new |
| 667 | Lemma | safe_tail_steps | Lemma safe_tail_steps b cs : Forall column_safe cs -> exists cs', tail_columns_step b cs cs'. | L6969 | new |
| 668 | Lemma | tail_steps_es | Lemma tail_steps_es b cs cs' : tail_columns_step b cs cs' -> map column_e cs' = map column_e cs. | L6979 | new |
| 669 | Lemma | final_last_budget_gap | Lemma final_last_budget_gap : N.to_nat 134217725%N < decode_budget (N.to_nat (phase_R 4)). | L6990 | new |
| 670 | Lemma | final_decode_budget_gap | Lemma final_decode_budget_gap current previous zs last lv : finite_round_pre current previous zs last 4 lv -> trigger_finish (frontier_es current previous zs) < finite_decode_count current previous zs 4. | L7000 | new |
| 671 | Lemma | final_decode_input_raw | Lemma final_decode_input_raw current previous zs : finite_decode_input current previous zs 4 = mixed_tail (frontier_es current previous zs) 25 4. | L7017 | new |
| 672 | Theorem | finite_trigger_proved | Theorem finite_trigger_proved : finite_trigger_obligation. | L7027 | new |
| 673 | Lemma | halts_after_progress | Lemma halts_after_progress c c' : c -[source_tm]->+ c' -> halts source_tm c -> halts source_tm c'. | L7054 | new |
| 674 | Theorem | finite_entry_nonhalt | Theorem finite_entry_nonhalt current previous zs last lv : finite_round_pre current previous zs last 1 lv -> ~halts source_tm (post_ca_tail (round_post_unary current previous) (round_primary_width current previous) zs last 1 lv). | L7061 | new |
| 675 | Lemma | entry_count_compat | Lemma entry_count_compat : OpeningEntry.entry_n5 = OpeningDecode.opening_decode_calls (OpeningEarly.opening_n4-2). | L7097 | new |
| 676 | Lemma | fifth_word_compat | Lemma fifth_word_compat : OpeningLate.fifth_output = A8^^(OpeningEarly.opening_n4-2) ++ sdigits_word OpeningDecode.opening_digits ++ U^^3 ++ A8 ++ [1;1]. | L7102 | new |
| 677 | Lemma | blank_to_entry | Lemma blank_to_entry : (D;; tape0) -[SOBCv10.source_tm]->* OpeningEntry.entry_state. | L7108 | new |
| 678 | Lemma | sobc_D_nonhalt | Lemma sobc_D_nonhalt : ~ halts SOBCv10.source_tm (D;; tape0). | L7117 | new |
| 679 | Definition | tm | Definition tm := Eval compute in (TM_from_str "1RB0LE_1RC---_0RD0RB_1RE0LA_1RF0LF_1LD1RF"). | L7124 | new |
| 680 | Definition | phi | Definition phi (q : Q) : Q := match q with | A => D | B => E | C => F | D => A | E => B | F => C end. | L7127 | new |
| 681 | Lemma | original_permutation | Lemma original_permutation : Perm (flip tm) SOBCv10.source_tm phi. | L7132 | new |
| 682 | Lemma | nonhalt | Lemma nonhalt : ~ halts tm c0. | L7139 | new |
4What 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
- proof.md (working copy) · identical to the submitted copy
No heading with "rule", "carries over" or "unchanged" in proof.md.
5FamilyCheck: related machines are killed together or have a reason to be left open.
No related machine found (no parent link, table twin, follow-on row or mention).
6ChecklistCheck: 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 12 byte for byte
- ✓Statement is
~halts tm c0parsed from the .v and confirmed by check_kill (theorem_text, theorem_rocq) - ✓No axioms beyond baseline1 assumption(s); tools/assumptions_baseline.txt allows only functional_extensionality_dep
- ✓coqchk finished (optional)coqchk pass in 18.81 s
- ✓.v hash matches the checked hash.v = checked sha256 cd0bfee325f8…; submission/ copy = checked sha256 cd0bfee325f8…
- ✓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
- ○Family posted together?no other kill in the family
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. Re-run: python3 -B tools/killreview.py 1RB0LE_1RC---_0RD0RB_1RE0LA_1RF0LF_1LD1RF
Files
machines/<tm>/: 10 entries · raw notes, status, scripts, images
| name | size | changed |
|---|---|---|
| notes.md ↓ | 24 KB | 2026-10-16 12:09 |
| proof.md ↓ | 5.9 KB | 2026-10-16 12:09 |
| status.json ↓ | 4.7 KB | 2026-10-16 13:28 |
| observe.json ↓ | 15 KB | 2026-10-14 16:23 |
| 1RB0LE_1RC---_0RD0RB_1RE0LA_1RF0LF_1LD1RF.v ↓ | 258 KB | 2026-10-16 12:09 |
| decisions/ | 2 items | 2026-10-16 12:09 |
| img/ | 4 items | 2026-10-14 14:55 |
| rocq/ | 9 items | 2026-10-16 12:09 |
| submission/ | 11 items | 2026-10-16 12:09 |
| work/ | 20 items | 2026-10-14 15:54 |
status.json in full
{
"tm": "1RB0LE_1RC---_0RD0RB_1RE0LA_1RF0LF_1LD1RF",
"label": "W6-1",
"status": "KILLED_NONHALT",
"stage": "done",
"updated": "2026-10-16",
"reason": "Complete blank-start nonhalting proof; three unchanged check_kill passes and completed kernel replays on the same source.",
"confidence": "high",
"confidence_note": "The exact transition table reaches a 919-step cycle translating three cells left. Blank entry, finite counter rounds, nested trigger, and exit are proved in Rocq with only the allowed functional extensionality.",
"template": "SOBCv10.v (same table; ours A..F = SOBCv10 D,E,F,A,B,C, mirrored); sobc1_canonical_nonhalt at line 3847",
"siblings_same_table": {
"1LB0RD_1LC0RC_1RA1LC_1LE0RB_1LF---_0LA0LE": "start D, mirrored: SOBCv10.v (solved upstream)",
"1RB---_0RC0RA_1RD0LF_1RE0LE_1LC1RE_1RA0LD": "start B: TCv1.v (solved upstream)"
},
"next_goal": "Await upstream review of PR #29.",
"wave6_stage1": {
"tail_law": "tail U^(2k+1) y, level(y) in -1..4 (A, B, E t, D t, A t, B t); per exception k' = k+1, L' = k+1-L; last column w -> w-1, v -> 2^(w-1) - v//2",
"chain": "exc 6 (k=1, L=3) -> exc 7 (k=2, L=-1) -> exc 8 (k=3, L=4) -> exc 9 (k=4, L=0): decode trigger",
"exit": "decode trigger in exception 9, then a second counter phase (P1 ~256 long sweeps, P2 ~200 in the toy), then a translated cycler: state B at the right end of 1000100010001000100010001000100010010001000100010001000100010010100100, period 919, shift 3, backswing 67",
"evidence": "work/tail/*.out: modelA 80/80, modelD 23/25 (2 expected), rawlaw 48/48 + 16/16, decodetrig2 60/60 + 30/30, decodetrig3 8/8, mintrig 20/20, cycverify, sweeps2_n900",
"cryptid": "no"
},
"wave6_stage2": {
"exit": "decode trigger in exception 9 on call h_t = 4*2^W - S - 2 (n9 = h_t + c, c >= 0 pending) -> E' (T2 k=5: tail U^13 B t, last column 25 -> 24) with n' = h_t calls -> E'' on E' call h'' = 3*2^(W-1) - S - 2 -> raw pass right over the all-B counter -> overflow at B^24 U^13 B t (local, 1208 + 14(w-1) steps) -> cycler window Y, +3 cells per 919 steps",
"correction": "stage 1's P1 = exception 9's own call phase, P2 = the nested exception E' call phase; v/x blocks = exception_call_left's pending/finished calls",
"evidence": "work/s2: nested_a/b.out 52/52, eprime.out 32/32 (n' = f+1 threshold), overflow_check.out 90/90 + 50/50, t1_deficit.out 120/120, fam_a_m30.out (family (a) exact at m = 30)",
"proof_md": "written (informal chain from blank to the cycler; status table in section 7)",
"cryptid": "no"
},
"formal_planning": {
"date": "2026-10-14",
"proved": "rocq/W61Exit.v: raw_tail_base/column/columns (T2 k=0..5), overflow_base/column/columns (O), cycler_step/cycler_nonhalt (C), exit_nonhalt, nested_pre_left, launch_far, relaunches_far, nested_launch, nested_counter, nested_exit; Print Assumptions: funext only",
"stated": "rocq/W61Plan.v: tail_round, tail_round_trigger, opening, entry_pre (Admitted); sobc_D_nonhalt, perm and nonhalt proved from them",
"library": "unmodified SOBCv10.v compiled as W61.SOBCv10 (84 s, 0.8 GB)",
"estimate": "about 10 x 2 h (range 9-12): R1-R2 counter to trigger + T1, R3-R4 decode T3, R5 next post + invariant, R6 trigger round, R7-R8 opening, R9 single-file kill + check_kill",
"plan": "rocq/plan.md"
},
"outcome": "killed_nonhalt",
"killed_at": "2026-10-16T18:56:21Z",
"next": "Await upstream review of PR #29.",
"funded": {
"option": "spike",
"date": "2026-10-16",
"outcome": "Complete proof within the funded stage."
},
"kill": {
"file": "1RB0LE_1RC---_0RD0RB_1RE0LA_1RF0LF_1LD1RF.v",
"sha256": "cd0bfee325f897047164a4cc11325ca3e30d2acfadedf4c2abecec0a859327ca",
"lines": 7149,
"check_kill": "PASS in all three roles on identical source; Coq 8.20.1 native compilation and independent coqchk replays completed.",
"route": "Exact blank opening, finite safe-column budgets, signed last-column values, three returning rounds, nested overflow into a translated cycle.",
"submission": "submission/",
"checks": [
"submission/formalizer-gate.json",
"submission/independent-gate.json",
"submission/orchestrator-gate.json"
]
},
"completed_spike": {
"ended_at": "2026-10-16T11:57:40-07:00",
"source_sha256": "cd0bfee325f897047164a4cc11325ca3e30d2acfadedf4c2abecec0a859327ca",
"historical_plan": "rocq/plan.md",
"historical_plan_note": "The earlier plan and draft statements are retained as history; the complete proof uses a finite-horizon invariant and has no unfinished statements.",
"public_proof": "submission/proof.md"
},
"pr": "https://github.com/ccz181078/busycoq/pull/29",
"pr_state": "open",
"pr_file": "verify/SOBCv10Tail.v",
"pr_opened": "2026-10-16T19:10:32Z",
"pr_head_sha": "bcb95301c93afb961cb3ac3bcd83917767c12d1e",
"pr_comments": 0,
"posted": "2026-10-16 (Discord; user confirmed sent)"
}


