@ceccec/millennium-solutions 9.1.0 → 9.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/AXIOMS.md CHANGED
@@ -5,11 +5,11 @@ title: The axiom index — what is assumed
5
5
  # The axiom index
6
6
 
7
7
  Every declaration in `src/proof` is checked with `#print axioms` on each build, and a dependency on any
8
- axiom fails the build rather than earning a footnote. All **628** report the same thing:
8
+ axiom fails the build rather than earning a footnote. All **634** report the same thing:
9
9
  *does not depend on any axioms*.
10
10
 
11
11
  That is a real property, and it is not the whole picture. **Axiom-free is not assumption-free.** These
12
- theorems rest on **319** definitions, and every one of them is a choice. A theorem about
12
+ theorems rest on **321** definitions, and every one of them is a choice. A theorem about
13
13
  `fall` is a theorem about the digital root only because `fall` is *defined* to be it. Both halves are
14
14
  indexed below, and the second is the longer one.
15
15
 
@@ -90,7 +90,7 @@ The pins in the control fixture follow the community practice of guarding `#prin
90
90
  `#guard_msgs`, which turns the axiom footprint into an executable regression test: the assertion is
91
91
  checked by the elaborator, and drift fails the build with a mismatch instead of passing unnoticed.
92
92
 
93
- ## What IS assumed: the 319 definitions
93
+ ## What IS assumed: the 321 definitions
94
94
 
95
95
  Each of these is a primitive of this deposit — not derived, not proved, chosen. They are listed in full
96
96
  because a reader checking a theorem must be able to read the definition it is about, and because a
@@ -181,7 +181,7 @@ def step : List Nat → List Nat
181
181
  def hh : Nat → List Nat → Bool
182
182
  ```
183
183
 
184
- ### `elementary.lean` — 24 definition(s), 32 theorem(s)
184
+ ### `elementary.lean` — 24 definition(s), 33 theorem(s)
185
185
 
186
186
  ```lean
187
187
  def properDivisorSum (n : Nat) : Nat := ((List.range' 1 (n - 1)).filter (fun d => n % d == 0)).foldl (· + ·) 0
@@ -207,10 +207,10 @@ def rgs : Nat → List (List Nat)
207
207
  def bellRow : Nat → List Nat
208
208
  def bellOf (n : Nat) : Nat := (bellRow n).headD 0
209
209
  def tetOf (r : Nat) : List Nat := (unitsMod 9).filter (fun d => d % 3 == r)
210
- def settledHere : Nat := 31
210
+ def settledHere : Nat := 32
211
211
  ```
212
212
 
213
- ### `energy.lean` — 30 definition(s), 19 theorem(s)
213
+ ### `energy.lean` — 31 definition(s), 20 theorem(s)
214
214
 
215
215
  ```lean
216
216
  def splitCost : Nat := 52000 -- Wh to electrolyse 1 kg H₂ (real cells: 50–55 kWh/kg; ideal is ~39.4)
@@ -243,9 +243,10 @@ def whPerLitreAt (kgPerM3 : Nat) : Nat := kgPerM3 * whPerKgH2 / 1000
243
243
  def tdsSeawater : Nat := 35000 -- mg of dissolved solids per litre
244
244
  def tdsTapWater : Nat := 50 -- mg per litre, ordinary supply
245
245
  def residueMg (litres tds : Nat) : Nat := litres * tds
246
+ def atomsOf (m : Nat) : Option (Nat × Nat) :=
246
247
  ```
247
248
 
248
- ### `families.lean` — 44 definition(s), 41 theorem(s)
249
+ ### `families.lean` — 44 definition(s), 43 theorem(s)
249
250
 
250
251
  ```lean
251
252
  def primesUpTo30 : List Nat := [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
@@ -291,7 +292,7 @@ def permsN : List Nat → List (List Nat)
291
292
  def isInvolution (p : List Nat) : Bool := (List.range p.length).all (fun i => p.getD (p.getD i 0) 0 == i)
292
293
  def telephone : Nat → Nat
293
294
  def schlafli : List (Nat × Nat) :=
294
- def settledHere : Nat := 40
295
+ def settledHere : Nat := 42
295
296
  ```
296
297
 
297
298
  ### `fnv.lean` — 13 definition(s), 13 theorem(s)
@@ -342,7 +343,7 @@ def saving (value verify : Nat) : Nat := value - verify
342
343
  def addr4 (x : Nat) : Nat := x % 16
343
344
  ```
344
345
 
345
- ### `light.lean` — 13 definition(s), 11 theorem(s)
346
+ ### `light.lean` — 13 definition(s), 12 theorem(s)
346
347
 
347
348
  ```lean
348
349
  def c : Nat := 299792458 -- m/s, exact
@@ -532,7 +533,7 @@ def sealBits : Nat := 128
532
533
  def refl (d : Nat) : Nat := 10 - d -- the shared reflection r(d) = 10 − d (the ½/heart-analogue centre)
533
534
  ```
534
535
 
535
- ### `z9.lean` — 7 definition(s), 21 theorem(s)
536
+ ### `z9.lean` — 8 definition(s), 22 theorem(s)
536
537
 
537
538
  ```lean
538
539
  def B : Nat := 9
@@ -541,7 +542,8 @@ def isUnit (d : Nat) : Bool := (List.range B).any (fun e => m9 (d * e) == 1)
541
542
  def units : List Nat := (List.range B).filter isUnit
542
543
  def pow9 (b e : Nat) : Nat := m9 (b ^ e)
543
544
  def orbit (k : Nat) : Nat := m9 (2 ^ k)
544
- def settledHere : Nat := 20
545
+ def logOrbit (u : Nat) : Option Nat := (List.range 6).find? (fun k => orbit k == u)
546
+ def settledHere : Nat := 21
545
547
  ```
546
548
 
547
549
  ### `z9plus.lean` — 16 definition(s), 32 theorem(s)
@@ -567,6 +569,6 @@ def gcd9 (a b : Nat) : Nat := gcdF (a + b + 1) a b
567
569
 
568
570
  ---
569
571
 
570
- **628** declarations, **0** axiom dependencies, **319** definitions they rest on.
572
+ **634** declarations, **0** axiom dependencies, **321** definitions they rest on.
571
573
  A content-address proves integrity, not truth, and an axiom index proves neither: it states what was
572
574
  assumed, so a reader can disagree with the assumptions rather than guess at them. `0/7`.
package/CHALLENGES.md CHANGED
@@ -18,11 +18,11 @@ title: Challenges
18
18
 
19
19
  **Humanity: 1 / 7** (6 open). **This deposit: 0 / 7** — it settles none of the seven itself.
20
20
 
21
- ## Discovered theorems (decidable, over ℤ/9) — 2567 standing in 1 families
21
+ ## Discovered theorems (decidable, over ℤ/9) — 2573 standing in 1 families
22
22
 
23
23
  Computed by exhaustion, each a monograph with its own page (`/theorem/<key>`) and chained receipt. Grouped by family (largest first) — easy to spot; use the search box for any keyword:
24
24
 
25
- ### lean (619)
25
+ ### lean (625)
26
26
 
27
27
  - [lean_address_raw_bytes_of_a](/theorem/lean_address_raw_bytes_of_a) — lean address.lean: raw_bytes_of_a — rawBytes A = [88, 118, 248, 251, 63, 149, 14, 202, 10, 251, 189, 97, 221, 134, 206, 204] — decided by the Lean kernel over its whole finite domain, axiom-free · `211de25d-e843…`
28
28
  - [lean_address_to_uuid_bytes_of_a](/theorem/lean_address_to_uuid_bytes_of_a) — lean address.lean: to_uuid_bytes_of_a — toUuidBytes A = [88, 118, 248, 251, 63, 149, 142, 202, 138, 251, 189, 97, 221, 134, 206, 204] — decided by the Lean kernel over its whole finite domain, axiom-free · `c3f88cb7-dd38…`
@@ -643,6 +643,12 @@ Computed by exhaustion, each a monograph with its own page (`/theorem/<key>`) an
643
643
  - [lean_speed_the_verify_in_nanoseconds_reads_back_its_microseconds](/theorem/lean_speed_the_verify_in_nanoseconds_reads_back_its_microseconds) — lean speed.lean: the_verify_in_nanoseconds_reads_back_its_microseconds — (List.range 1000).all (fun u =&gt; u * 1000 / 1000 == u) ∧ nsPerVerify = verifyUs * 1000 ∧ nsPerVerify / 1000 = verifyUs ∧ nsPerVerify &gt; 10000 — decided by the Lean kernel over its whole finite domain, axiom-free · `e8a082ef-9515…`
644
644
  - [lean_speed_the_width_is_the_ceiling_of_128_bits_over_the_symbol](/theorem/lean_speed_the_width_is_the_ceiling_of_128_bits_over_the_symbol) — lean speed.lean: the_width_is_the_ceiling_of_128_bits_over_the_symbol — (List.range' 1 8).all (fun b =&gt; charsFor b * b ≥ 128 && (charsFor b - 1) * b &lt; 128) ∧ charsFor 4 = hexChars ∧ charsFor 6 = hexbitChars ∧ hexbitChars &lt; hexChars ∧ hexbitChars * 100 / hexChars = 68 — decided by the Lean kernel over its whole finite domain, axiom-free · `5811891a-d052…`
645
645
  - [lean_speed_hexbits_are_slower_and_the_ratio_multiplies_back](/theorem/lean_speed_hexbits_are_slower_and_the_ratio_multiplies_back) — lean speed.lean: hexbits_are_slower_and_the_ratio_multiplies_back — (List.range' 1 20).all (fun b =&gt; (List.range 400).all (fun a =&gt; (a / b) * b ≤ a && a &lt; (a / b + 1) * b)) ∧ hexbitMs &gt; hexMs ∧ hexbitMs * 10 / hexMs = 18 — decided by the Lean kernel over its whole finite domain, axiom-free · `91a92ea5-bedd…`
646
+ - [lean_elementary_the_wythoff_sequences_partition_the_integers](/theorem/lean_elementary_the_wythoff_sequences_partition_the_integers) — lean elementary.lean: the_wythoff_sequences_partition_the_integers — (List.range' 1 50).all (fun m =&gt; ((List.range' 1 40).map lowerWythoff).count m + ((List.range' 1 40).map upperWythoff).count m == 1) — decided by the Lean kernel over its whole finite domain, axiom-free · `45729b78-1ded…`
647
+ - [lean_energy_the_atoms_read_back_from_the_mass](/theorem/lean_energy_the_atoms_read_back_from_the_mass) — lean energy.lean: the_atoms_read_back_from_the_mass — (List.range 10).all (fun h =&gt; (List.range 10).all (fun o =&gt; atomsOf (mass h o) == some (h, o))) ∧ atomsOf mgH2 = some (2, 0) ∧ atomsOf mgO2 = some (0, 2) ∧ atomsOf mgH2O = some (2, 1) — decided by the Lean kernel over its whole finite domain, axiom-free · `e49b5ab6-4f44…`
648
+ - [lean_families_invOf_is_an_inverse_and_an_involution_on_the_units](/theorem/lean_families_invOf_is_an_inverse_and_an_involution_on_the_units) — lean families.lean: invOf_is_an_inverse_and_an_involution_on_the_units — (List.range 9).all (fun d =&gt; match invOf d with | some e =&gt; d * e % 9 == 1 && invOf e == some d | none =&gt; gcd' d 9 != 1) — decided by the Lean kernel over its whole finite domain, axiom-free · `85ad9b47-1b45…`
649
+ - [lean_families_choose_is_invariant_under_the_involution_k_to_n_minus_k](/theorem/lean_families_choose_is_invariant_under_the_involution_k_to_n_minus_k) — lean families.lean: choose_is_invariant_under_the_involution_k_to_n_minus_k — (List.range 13).all (fun n =&gt; (List.range (n + 1)).all (fun k =&gt; choose n k == choose n (n - k) && n - (n - k) == k)) — decided by the Lean kernel over its whole finite domain, axiom-free · `0affa1b0-91a0…`
650
+ - [lean_light_the_second_returns_from_the_metre_and_the_period](/theorem/lean_light_the_second_returns_from_the_metre_and_the_period) — lean light.lean: the_second_returns_from_the_metre_and_the_period — (List.range 100).all (fun s =&gt; travel s / c == s && periods s / dNuCs == s) — decided by the Lean kernel over its whole finite domain, axiom-free · `04685db2-fda6…`
651
+ - [lean_z9_the_orbit_step_is_read_back_by_its_log](/theorem/lean_z9_the_orbit_step_is_read_back_by_its_log) — lean z9.lean: the_orbit_step_is_read_back_by_its_log — (List.range 6).all (fun k =&gt; logOrbit (orbit k) == some k) ∧ units.all (fun u =&gt; (logOrbit u).map orbit == some u) — decided by the Lean kernel over its whole finite domain, axiom-free · `e29d831e-5bde…`
646
652
 
647
653
  ### other — one-of-a-kind (0)
648
654
 
@@ -2227,4 +2233,4 @@ Each was withdrawn for want of a Lean proof and has since been given one, at a n
2227
2233
 
2228
2234
  </details>
2229
2235
 
2230
- Page content-address: `739e6f7e-4b0a-84de-84bb-bcea6054d238`. Integrity, not truth — decidable facts and cited status, never a proof of the six open conjectures.
2236
+ Page content-address: `7b1d92f4-42f9-8577-8d05-79f3a3d552ff`. Integrity, not truth — decidable facts and cited status, never a proof of the six open conjectures.
package/README.md CHANGED
@@ -11,12 +11,12 @@ last because the orbit never reaches it.
11
11
 
12
12
  ## 1 · What is proved
13
13
 
14
- - The formal layer holds 628 kernel-accepted declarations across 32 files, and no file uses sorry or native_decide outside a comment.
15
- <sub>SEALED · `8a4b7616-bc25-8fb3-bc42-b0b8e606da96`</sub>
16
- - 619 of those 628 are THEOREMS by this deposit's own rule — they close by decide, which is to say the kernel evaluates the proposition over its whole finite domain rather than accepting a declaration; the remaining 9 close by rfl and are declarations.
17
- <sub>SEALED · `4aaa302d-a672-8210-8f65-39e2a3026316`</sub>
18
- - 703 of them are sealed into the ledger, each carrying a receipt derived from the one before it.
19
- <sub>SEALED · `2291d903-c683-805a-b886-6ab7926eb31b`</sub>
14
+ - The formal layer holds 634 kernel-accepted declarations across 32 files, and no file uses sorry or native_decide outside a comment.
15
+ <sub>SEALED · `6f5ccdad-c187-8e2d-bf23-58c92517617d`</sub>
16
+ - 625 of those 634 are THEOREMS by this deposit's own rule — they close by decide, which is to say the kernel evaluates the proposition over its whole finite domain rather than accepting a declaration; the remaining 9 close by rfl and are declarations.
17
+ <sub>SEALED · `8f2469e5-0e30-8408-88ed-0cb288f40223`</sub>
18
+ - 709 of them are sealed into the ledger, each carrying a receipt derived from the one before it.
19
+ <sub>SEALED · `6f2c8aa9-68f9-87ce-9260-6cfce74abacb`</sub>
20
20
 
21
21
  ## 2 · The ring
22
22
 
@@ -39,10 +39,10 @@ last because the orbit never reaches it.
39
39
 
40
40
  ## 7 · The ledger
41
41
 
42
- - The ledger records 2567 entries with 0 chain breaks, 0 duplicate keys and 0 duplicate receipts.
43
- <sub>SEALED · `59b254fa-d4da-8f0f-9363-997bdc43830e`</sub>
44
- - The count is 2567, which is 320 octaves and 7 over — the octave is a target the theorems earn, never a quota they are invented to fill.
45
- <sub>SEALED · `02e65c78-ee20-89b5-862f-33019cfc6d89`</sub>
42
+ - The ledger records 2573 entries with 0 chain breaks, 0 duplicate keys and 0 duplicate receipts.
43
+ <sub>SEALED · `6e736c97-f39b-81b8-91b5-4b5723550eff`</sub>
44
+ - The count is 2573, which is 321 octaves and 5 over — the octave is a target the theorems earn, never a quota they are invented to fill.
45
+ <sub>SEALED · `a6f00b74-e9a8-8386-9058-95d4889958f6`</sub>
46
46
 
47
47
  ## 5 · What the gate does and does not do
48
48
 
@@ -78,9 +78,9 @@ walked, computed from the statements themselves. Nothing is chosen for this tabl
78
78
  | 7,529,536 | `gravity_holds_prose_code_and_paths` | `mechanical.lean` |
79
79
  | 96,000 | `the_area_of_an_integer_right_triangle_is_a_multiple_of_six` | `elementary.lean` |
80
80
  | 95,048 | `two_twenty_and_two_eighty_four_are_the_smallest_amicable_pair` | `demand2.lean` |
81
+ | 80,000 | `the_wythoff_sequences_partition_the_integers` | `elementary.lean` |
81
82
  | 46,656 | `the_powers_of_two_mod_nine_and_of_three_mod_seven_are_isomorphic` | `elementary.lean` |
82
83
  | 44,100 | `the_rejected_command_gets_a_receipt` | `mechanical.lean` |
83
- | 41,160 | `the_theorems_are_the_hull_and_hardware` | `mechanical.lean` |
84
84
 
85
85
  The largest domain settled here is **152,568,360,000 cases**, and it is finite — as every
86
86
  entry in this ledger is, because `by decide` works by exhausting a domain and an infinite one cannot be
@@ -90,7 +90,7 @@ results; it is the result, read off the same arithmetic that produced the table.
90
90
 
91
91
  ## 7 · The proofs, as they document themselves
92
92
 
93
- 32 Lean files in 7 wings, 628 declarations of which 619 are theorems. The prose in this section is read out of the
93
+ 32 Lean files in 7 wings, 634 declarations of which 625 are theorems. The prose in this section is read out of the
94
94
  sources — their frontmatter, their header comments and the comment above each theorem. Editing a proof edits
95
95
  this page; there is nowhere else to keep the description in step.
96
96
 
@@ -108,9 +108,9 @@ this page; there is nowhere else to keep the description in step.
108
108
 
109
109
  **The two-sided coin** — `coin.lean`, 12 theorem(s). One involution on ten digits, two sides, one fixed point, and one digit that leaves.
110
110
 
111
- **Elementary arithmetic** — `elementary.lean`, 32 theorem(s). the DECISION of each over a stated finite range, axiom-free, and the honest record of where the range stops short of what the older claim asserted. prior_art_search: the results are named in every undergraduate text; no search was needed to find them. prior_art_pool: named Elementary arithmetic, decided — the claims the ledger held in TypeScript, given a kernel.
111
+ **Elementary arithmetic** — `elementary.lean`, 33 theorem(s). the DECISION of each over a stated finite range, axiom-free, and the honest record of where the range stops short of what the older claim asserted. prior_art_search: the results are named in every undergraduate text; no search was needed to find them. prior_art_pool: named Elementary arithmetic, decided — the claims the ledger held in TypeScript, given a kernel.
112
112
 
113
- **Families over the ring** — `families.lean`, 41 theorem(s). The families, quantified. Proving at scale.
113
+ **Families over the ring** — `families.lean`, 43 theorem(s). The families, quantified. Proving at scale.
114
114
 
115
115
  **What every involution gives, and what it does not** — `involution.lean`, 8 theorem(s). transpositions, and that the number of fixed points therefore matches the parity of the set, is classical and long predates this deposit. It is the orbit-counting argument in any first course. What is this deposit's own here is the EXHAUSTIVE decision over ℤ/9 and the measured refusal below.
116
116
 
@@ -120,7 +120,7 @@ this page; there is nowhere else to keep the description in step.
120
120
 
121
121
  **The digit split** — `split.lean`, 19 theorem(s). mathematics and claim nothing. Stated precisely so the credit does not run past the earlier work: what is NOT claimed as prior art is the tokenisation itself — reading the digits as 0|12|3|45|6|78|9 by concatenating consecutive units into two-digit tokens, and the arithmetic that follows from it (every token a multiple of three, closure of the tokens under addition and multiplication). That arrangement is this deposit's presentation of a standard fact, and its verification is by exhaustion here. Crediting an earlier author for a presentation they did not make is the same defect as claiming their result, pointed the other way. prior_art_search: literature search performed 2026-09-05, terms "units and non-units of Z/9 multiplicative inverses group of units modulo 9"; prior art found and credited. prior_art_pool: mixed the digit grouping is generic arithmetic; the coin accounting it feeds is this deposit's. BOUNDED means a search is well posed and simply has not been run — the row is unclassified because nobody looked. UNBOUNDED means the subject is this artifact, so there is no pool to search and the row will stay unclassified however much work is done. They look identical in a count and need opposite responses, which is the distinction uuidna-49 asked for and nobody had drawn. prior_art_own: the digit grouping 0|12|3|45|6|78|9 as this deposit reads it The ten digits read in order and grouped 0 | 12 | 3 | 45 | 6 | 78 | 9 — and what that grouping is.
122
122
 
123
- **The ring ℤ/9** — `z9.lean`, 21 theorem(s). The ℤ/9 families — mechanically generated theorems, proved by decide rather than tested in TypeScript.
123
+ **The ring ℤ/9** — `z9.lean`, 22 theorem(s). The ℤ/9 families — mechanically generated theorems, proved by decide rather than tested in TypeScript.
124
124
 
125
125
  **Entanglement in the ring** — `z9plus.lean`, 32 theorem(s). z9.lean settled the families exhaustively. This settles the claims the ledger stated individually and never generalised: which residues squares and cubes can be, which residues are primitive roots, the period of the doubling orbit's digital root, and the identity behind digit-reversal invariance. Each is stated as an EQUIVALENCE or an exact set where the ledger stated instances, so the negative half is proved too.
126
126
 
@@ -132,11 +132,11 @@ this page; there is nowhere else to keep the description in step.
132
132
 
133
133
  **The named theorems people ask for** — `demand3.lean`, 7 theorem(s). The third and last tier the search data supports. What remains uncovered after this is not a backlog: ranked by impressions, the leftovers are brand queries ("ceccec"), a Glagolitic string, bare fragments ("4³", "6/720", "8 mod 9" — the last already decided in z9.lean), and the real-analysis cluster that was refused in demand2.lean and stays refused. The demand map is close to exhausted of things a kernel can settle, which is a better place to stop than an arbitrary count would have been.
134
134
 
135
- **The water loop** — `energy.lean`, 19 theorem(s). THE WATER LOOP, ACCOUNTED. Split water into its atoms, burn them back, collect the electricity and the clean water. Every step of that is real and buildable. The question is only ever the ledger, so here it is.
135
+ **The water loop** — `energy.lean`, 20 theorem(s). THE WATER LOOP, ACCOUNTED. Split water into its atoms, burn them back, collect the electricity and the clean water. Every step of that is real and buildable. The question is only ever the ledger, so here it is.
136
136
 
137
137
  **The Millennium floor** — `index.lean`, 11 theorem(s). Bounded, so the credit stops where the earlier work does: what is NOT prior art is the use of that orbit as a floor for what this deposit does and does not settle, which is a statement about this repository and has no earlier author. Verification by exhaustion in Lean is this deposit's contribution, and verification is not discovery. prior_art_search: literature search performed 2026-09-05, terms "doubling sequence modulo 9 orbit 1 2 4 8 7 5 cyclic group generator digital root"; prior art found and credited. prior_art_pool: bounded digit arithmetic of the doubling sequence; searchable independently of this deposit. BOUNDED means a search is well posed and simply has not been run — the row is unclassified because nobody looked. UNBOUNDED means the subject is this artifact, so there is no pool to search and the row will stay unclassified however much work is done. They look identical in a count and need opposite responses, which is the distinction uuidna-49 asked for and nobody had drawn. prior_art_own: the Millennium floor, computed from this sequence The Millennium floor — seven honest theorems, one per problem, COMPUTED from the sequence.
138
138
 
139
- **Light, space and time — arithmetic on numbers a standards body fixed** — `light.lean`, 11 theorem(s). Poids et Mesures, not results of this deposit: the metre from the speed of light (17th CGPM, 1983) and the seven defining constants fixed exactly in the 2019 revision of the SI, effective 20 May 2019 (BIPM, https://www.bipm.org/en/measurement-units/si-defining-constants). Nothing here measures anything.
139
+ **Light, space and time — arithmetic on numbers a standards body fixed** — `light.lean`, 12 theorem(s). Poids et Mesures, not results of this deposit: the metre from the speed of light (17th CGPM, 1983) and the seven defining constants fixed exactly in the 2019 revision of the SI, effective 20 May 2019 (BIPM, https://www.bipm.org/en/measurement-units/si-defining-constants). Nothing here measures anything.
140
140
 
141
141
  **Every phenomenon this deposit touches, and the rule for the rest** — `phenomena.lean`, 4 theorem(s). Générale des Poids et Mesures (2019 revision, effective 20 May 2019); the electrochemical results are Michael Faraday's laws of electrolysis, 1834, and the standard enthalpy of combustion of hydrogen. Every physical result named here has an earlier author or a standards body, and none is this deposit's.
142
142
 
@@ -172,7 +172,7 @@ this page; there is nowhere else to keep the description in step.
172
172
 
173
173
  **Recovered — claims that computed and were withdrawn for want of a proof** — `recovered.lean`, 15 theorem(s). material, credited. What is NOT prior art is that these particular statements sat WITHDRAWN in this deposit's ledger, each recorded as "not backed by a Lean proof. Its evidence is a TypeScript test", while every one is decidable in a line. prior_art_search: literature search performed 2026-09-05, terms "units and non-units of Z/9 multiplicative inverses group of units modulo 9"; prior art found and credited.
174
174
 
175
- 20 of 628 declarations carry no comment of their own and are shown here as the gap they are, not
175
+ 20 of 634 declarations carry no comment of their own and are shown here as the gap they are, not
176
176
  filled with a template.
177
177
 
178
178
  ## 8 · What this build measured about itself
@@ -181,14 +181,14 @@ Read from the artefacts at build time, never carried between runs.
181
181
 
182
182
  | measure | value |
183
183
  |---|---|
184
- | ledger entries | 2,567 — 320 octaves and 7 over |
185
- | standing — carries its own proof | **619** |
184
+ | ledger entries | 2,573 — 321 octaves and 5 over |
185
+ | standing — carries its own proof | **625** |
186
186
  | carried — withdrawn on its own evidence, proved by a live theorem | **434** |
187
187
  | withdrawn — nothing proves it | 1,514 |
188
- | proved in total | **1053** of 2,567 |
189
- | standing keys → distinct theorems | 619 sealed, 0 of them keyed twice, 0 unresolvable |
190
- | Lean files · theorems | 32 · 619 theorems (closed by exhaustion) + 9 rfl declarations, all axiom-free |
191
- | proved `by decide` | 619 of 628 |
188
+ | proved in total | **1059** of 2,573 |
189
+ | standing keys → distinct theorems | 625 sealed, 0 of them keyed twice, 0 unresolvable |
190
+ | Lean files · theorems | 32 · 625 theorems (closed by exhaustion) + 9 rfl declarations, all axiom-free |
191
+ | proved `by decide` | 625 of 634 |
192
192
  | claims a machine can render | 103 of 1,555 |
193
193
  | claims needing an author | 1,452 — reported, never faked |
194
194
 
@@ -227,4 +227,4 @@ whether the work restates someone earlier. [The paper](/paper) typesets every st
227
227
 
228
228
  ---
229
229
 
230
- *17 claims, all verified · 619 Lean theorems · 2567 ledger entries · trial root `d295e2c3-b6c1-83e3-8680-202e18691522` · integrity, not truth · 0/7*
230
+ *17 claims, all verified · 625 Lean theorems · 2573 ledger entries · trial root `6717495a-ed0a-89a4-8be2-36a9cd0aa068` · integrity, not truth · 0/7*
package/forensic.md CHANGED
@@ -5,18 +5,18 @@ title: Every state change, dated
5
5
  # Provenance of this deposit's ledger
6
6
 
7
7
  **Recomputed on every build** from git history and the append-only ledger. Regenerate with
8
- `npm run forensic`. Content-address `a77fb27f-8538-8d41-b1d6-d6eddf1ef263`.
8
+ `npm run forensic`. Content-address `d2ff7e87-7f32-8616-afb3-22a22b9b0f7b`.
9
9
 
10
10
  ## What this record establishes
11
11
 
12
12
  | | |
13
13
  |---|---:|
14
- | ledger entries | **2,567** |
15
- | standing — proved and sealed | 619 |
14
+ | ledger entries | **2,573** |
15
+ | standing — proved and sealed | 625 |
16
16
  | carried — withdrawn, proved by a live theorem | 434 |
17
17
  | withdrawn — nothing currently proves them | 1,514 |
18
18
  | receipt chain, recomputed | **0 breaks — intact** |
19
- | commits that changed ledger state | 574 |
19
+ | commits that changed ledger state | 575 |
20
20
 
21
21
  ## Why entries were withdrawn — the reason recorded at the time
22
22
 
@@ -46,8 +46,8 @@ At least one of them was recoverable: `thue_morse_doubling_recurrence` was withd
46
46
  | 2026-08-20 | 1,864 | `e6bb01bb5` | gates: green the three that were red — by fixing the authority |
47
47
  | 2026-08-20 | 25 | `959f8af2a` | lean: verify once instead of twice, and cache what the kernel |
48
48
  | 2026-09-04 | 24 | `5d319470d` | Item 12 executed: 24 duplicate addresses retired, and it broke |
49
+ | 2026-09-14 | 19 | `1c1b53f9a` | Nineteen more certificates become laws — the energy, speed, li |
49
50
  | 2026-09-07 | 13 | `301c67798` | `namespace Classical` shadowed Lean's, in a deposit whose stan |
50
- | 2026-09-05 | 7 | `43253e80b` | The self-certifying check knew one NAME, so it missed four — i |
51
51
 
52
52
  ## What this record does NOT establish
53
53
 
package/index.md CHANGED
@@ -17,12 +17,12 @@ last because the orbit never reaches it.
17
17
 
18
18
  ## 1 · What is proved
19
19
 
20
- - The formal layer holds 628 kernel-accepted declarations across 32 files, and no file uses sorry or native_decide outside a comment.
21
- <sub>SEALED · `8a4b7616-bc25-8fb3-bc42-b0b8e606da96`</sub>
22
- - 619 of those 628 are THEOREMS by this deposit's own rule — they close by decide, which is to say the kernel evaluates the proposition over its whole finite domain rather than accepting a declaration; the remaining 9 close by rfl and are declarations.
23
- <sub>SEALED · `4aaa302d-a672-8210-8f65-39e2a3026316`</sub>
24
- - 703 of them are sealed into the ledger, each carrying a receipt derived from the one before it.
25
- <sub>SEALED · `2291d903-c683-805a-b886-6ab7926eb31b`</sub>
20
+ - The formal layer holds 634 kernel-accepted declarations across 32 files, and no file uses sorry or native_decide outside a comment.
21
+ <sub>SEALED · `6f5ccdad-c187-8e2d-bf23-58c92517617d`</sub>
22
+ - 625 of those 634 are THEOREMS by this deposit's own rule — they close by decide, which is to say the kernel evaluates the proposition over its whole finite domain rather than accepting a declaration; the remaining 9 close by rfl and are declarations.
23
+ <sub>SEALED · `8f2469e5-0e30-8408-88ed-0cb288f40223`</sub>
24
+ - 709 of them are sealed into the ledger, each carrying a receipt derived from the one before it.
25
+ <sub>SEALED · `6f2c8aa9-68f9-87ce-9260-6cfce74abacb`</sub>
26
26
 
27
27
  ## 2 · The ring
28
28
 
@@ -45,10 +45,10 @@ last because the orbit never reaches it.
45
45
 
46
46
  ## 7 · The ledger
47
47
 
48
- - The ledger records 2567 entries with 0 chain breaks, 0 duplicate keys and 0 duplicate receipts.
49
- <sub>SEALED · `59b254fa-d4da-8f0f-9363-997bdc43830e`</sub>
50
- - The count is 2567, which is 320 octaves and 7 over — the octave is a target the theorems earn, never a quota they are invented to fill.
51
- <sub>SEALED · `02e65c78-ee20-89b5-862f-33019cfc6d89`</sub>
48
+ - The ledger records 2573 entries with 0 chain breaks, 0 duplicate keys and 0 duplicate receipts.
49
+ <sub>SEALED · `6e736c97-f39b-81b8-91b5-4b5723550eff`</sub>
50
+ - The count is 2573, which is 321 octaves and 5 over — the octave is a target the theorems earn, never a quota they are invented to fill.
51
+ <sub>SEALED · `a6f00b74-e9a8-8386-9058-95d4889958f6`</sub>
52
52
 
53
53
  ## 5 · What the gate does and does not do
54
54
 
@@ -84,9 +84,9 @@ walked, computed from the statements themselves. Nothing is chosen for this tabl
84
84
  | 7,529,536 | `gravity_holds_prose_code_and_paths` | `mechanical.lean` |
85
85
  | 96,000 | `the_area_of_an_integer_right_triangle_is_a_multiple_of_six` | `elementary.lean` |
86
86
  | 95,048 | `two_twenty_and_two_eighty_four_are_the_smallest_amicable_pair` | `demand2.lean` |
87
+ | 80,000 | `the_wythoff_sequences_partition_the_integers` | `elementary.lean` |
87
88
  | 46,656 | `the_powers_of_two_mod_nine_and_of_three_mod_seven_are_isomorphic` | `elementary.lean` |
88
89
  | 44,100 | `the_rejected_command_gets_a_receipt` | `mechanical.lean` |
89
- | 41,160 | `the_theorems_are_the_hull_and_hardware` | `mechanical.lean` |
90
90
 
91
91
  The largest domain settled here is **152,568,360,000 cases**, and it is finite — as every
92
92
  entry in this ledger is, because `by decide` works by exhausting a domain and an infinite one cannot be
@@ -96,7 +96,7 @@ results; it is the result, read off the same arithmetic that produced the table.
96
96
 
97
97
  ## 7 · The proofs, as they document themselves
98
98
 
99
- 32 Lean files in 7 wings, 628 declarations of which 619 are theorems. The prose in this section is read out of the
99
+ 32 Lean files in 7 wings, 634 declarations of which 625 are theorems. The prose in this section is read out of the
100
100
  sources — their frontmatter, their header comments and the comment above each theorem. Editing a proof edits
101
101
  this page; there is nowhere else to keep the description in step.
102
102
 
@@ -114,9 +114,9 @@ this page; there is nowhere else to keep the description in step.
114
114
 
115
115
  **The two-sided coin** — `coin.lean`, 12 theorem(s). One involution on ten digits, two sides, one fixed point, and one digit that leaves.
116
116
 
117
- **Elementary arithmetic** — `elementary.lean`, 32 theorem(s). the DECISION of each over a stated finite range, axiom-free, and the honest record of where the range stops short of what the older claim asserted. prior_art_search: the results are named in every undergraduate text; no search was needed to find them. prior_art_pool: named Elementary arithmetic, decided — the claims the ledger held in TypeScript, given a kernel.
117
+ **Elementary arithmetic** — `elementary.lean`, 33 theorem(s). the DECISION of each over a stated finite range, axiom-free, and the honest record of where the range stops short of what the older claim asserted. prior_art_search: the results are named in every undergraduate text; no search was needed to find them. prior_art_pool: named Elementary arithmetic, decided — the claims the ledger held in TypeScript, given a kernel.
118
118
 
119
- **Families over the ring** — `families.lean`, 41 theorem(s). The families, quantified. Proving at scale.
119
+ **Families over the ring** — `families.lean`, 43 theorem(s). The families, quantified. Proving at scale.
120
120
 
121
121
  **What every involution gives, and what it does not** — `involution.lean`, 8 theorem(s). transpositions, and that the number of fixed points therefore matches the parity of the set, is classical and long predates this deposit. It is the orbit-counting argument in any first course. What is this deposit's own here is the EXHAUSTIVE decision over ℤ/9 and the measured refusal below.
122
122
 
@@ -126,7 +126,7 @@ this page; there is nowhere else to keep the description in step.
126
126
 
127
127
  **The digit split** — `split.lean`, 19 theorem(s). mathematics and claim nothing. Stated precisely so the credit does not run past the earlier work: what is NOT claimed as prior art is the tokenisation itself — reading the digits as 0|12|3|45|6|78|9 by concatenating consecutive units into two-digit tokens, and the arithmetic that follows from it (every token a multiple of three, closure of the tokens under addition and multiplication). That arrangement is this deposit's presentation of a standard fact, and its verification is by exhaustion here. Crediting an earlier author for a presentation they did not make is the same defect as claiming their result, pointed the other way. prior_art_search: literature search performed 2026-09-05, terms "units and non-units of Z/9 multiplicative inverses group of units modulo 9"; prior art found and credited. prior_art_pool: mixed the digit grouping is generic arithmetic; the coin accounting it feeds is this deposit's. BOUNDED means a search is well posed and simply has not been run — the row is unclassified because nobody looked. UNBOUNDED means the subject is this artifact, so there is no pool to search and the row will stay unclassified however much work is done. They look identical in a count and need opposite responses, which is the distinction uuidna-49 asked for and nobody had drawn. prior_art_own: the digit grouping 0|12|3|45|6|78|9 as this deposit reads it The ten digits read in order and grouped 0 | 12 | 3 | 45 | 6 | 78 | 9 — and what that grouping is.
128
128
 
129
- **The ring ℤ/9** — `z9.lean`, 21 theorem(s). The ℤ/9 families — mechanically generated theorems, proved by decide rather than tested in TypeScript.
129
+ **The ring ℤ/9** — `z9.lean`, 22 theorem(s). The ℤ/9 families — mechanically generated theorems, proved by decide rather than tested in TypeScript.
130
130
 
131
131
  **Entanglement in the ring** — `z9plus.lean`, 32 theorem(s). z9.lean settled the families exhaustively. This settles the claims the ledger stated individually and never generalised: which residues squares and cubes can be, which residues are primitive roots, the period of the doubling orbit's digital root, and the identity behind digit-reversal invariance. Each is stated as an EQUIVALENCE or an exact set where the ledger stated instances, so the negative half is proved too.
132
132
 
@@ -138,11 +138,11 @@ this page; there is nowhere else to keep the description in step.
138
138
 
139
139
  **The named theorems people ask for** — `demand3.lean`, 7 theorem(s). The third and last tier the search data supports. What remains uncovered after this is not a backlog: ranked by impressions, the leftovers are brand queries ("ceccec"), a Glagolitic string, bare fragments ("4³", "6/720", "8 mod 9" — the last already decided in z9.lean), and the real-analysis cluster that was refused in demand2.lean and stays refused. The demand map is close to exhausted of things a kernel can settle, which is a better place to stop than an arbitrary count would have been.
140
140
 
141
- **The water loop** — `energy.lean`, 19 theorem(s). THE WATER LOOP, ACCOUNTED. Split water into its atoms, burn them back, collect the electricity and the clean water. Every step of that is real and buildable. The question is only ever the ledger, so here it is.
141
+ **The water loop** — `energy.lean`, 20 theorem(s). THE WATER LOOP, ACCOUNTED. Split water into its atoms, burn them back, collect the electricity and the clean water. Every step of that is real and buildable. The question is only ever the ledger, so here it is.
142
142
 
143
143
  **The Millennium floor** — `index.lean`, 11 theorem(s). Bounded, so the credit stops where the earlier work does: what is NOT prior art is the use of that orbit as a floor for what this deposit does and does not settle, which is a statement about this repository and has no earlier author. Verification by exhaustion in Lean is this deposit's contribution, and verification is not discovery. prior_art_search: literature search performed 2026-09-05, terms "doubling sequence modulo 9 orbit 1 2 4 8 7 5 cyclic group generator digital root"; prior art found and credited. prior_art_pool: bounded digit arithmetic of the doubling sequence; searchable independently of this deposit. BOUNDED means a search is well posed and simply has not been run — the row is unclassified because nobody looked. UNBOUNDED means the subject is this artifact, so there is no pool to search and the row will stay unclassified however much work is done. They look identical in a count and need opposite responses, which is the distinction uuidna-49 asked for and nobody had drawn. prior_art_own: the Millennium floor, computed from this sequence The Millennium floor — seven honest theorems, one per problem, COMPUTED from the sequence.
144
144
 
145
- **Light, space and time — arithmetic on numbers a standards body fixed** — `light.lean`, 11 theorem(s). Poids et Mesures, not results of this deposit: the metre from the speed of light (17th CGPM, 1983) and the seven defining constants fixed exactly in the 2019 revision of the SI, effective 20 May 2019 (BIPM, https://www.bipm.org/en/measurement-units/si-defining-constants). Nothing here measures anything.
145
+ **Light, space and time — arithmetic on numbers a standards body fixed** — `light.lean`, 12 theorem(s). Poids et Mesures, not results of this deposit: the metre from the speed of light (17th CGPM, 1983) and the seven defining constants fixed exactly in the 2019 revision of the SI, effective 20 May 2019 (BIPM, https://www.bipm.org/en/measurement-units/si-defining-constants). Nothing here measures anything.
146
146
 
147
147
  **Every phenomenon this deposit touches, and the rule for the rest** — `phenomena.lean`, 4 theorem(s). Générale des Poids et Mesures (2019 revision, effective 20 May 2019); the electrochemical results are Michael Faraday's laws of electrolysis, 1834, and the standard enthalpy of combustion of hydrogen. Every physical result named here has an earlier author or a standards body, and none is this deposit's.
148
148
 
@@ -178,7 +178,7 @@ this page; there is nowhere else to keep the description in step.
178
178
 
179
179
  **Recovered — claims that computed and were withdrawn for want of a proof** — `recovered.lean`, 15 theorem(s). material, credited. What is NOT prior art is that these particular statements sat WITHDRAWN in this deposit's ledger, each recorded as "not backed by a Lean proof. Its evidence is a TypeScript test", while every one is decidable in a line. prior_art_search: literature search performed 2026-09-05, terms "units and non-units of Z/9 multiplicative inverses group of units modulo 9"; prior art found and credited.
180
180
 
181
- 20 of 628 declarations carry no comment of their own and are shown here as the gap they are, not
181
+ 20 of 634 declarations carry no comment of their own and are shown here as the gap they are, not
182
182
  filled with a template.
183
183
 
184
184
  ## 8 · What this build measured about itself
@@ -187,14 +187,14 @@ Read from the artefacts at build time, never carried between runs.
187
187
 
188
188
  | measure | value |
189
189
  |---|---|
190
- | ledger entries | 2,567 — 320 octaves and 7 over |
191
- | standing — carries its own proof | **619** |
190
+ | ledger entries | 2,573 — 321 octaves and 5 over |
191
+ | standing — carries its own proof | **625** |
192
192
  | carried — withdrawn on its own evidence, proved by a live theorem | **434** |
193
193
  | withdrawn — nothing proves it | 1,514 |
194
- | proved in total | **1053** of 2,567 |
195
- | standing keys → distinct theorems | 619 sealed, 0 of them keyed twice, 0 unresolvable |
196
- | Lean files · theorems | 32 · 619 theorems (closed by exhaustion) + 9 rfl declarations, all axiom-free |
197
- | proved `by decide` | 619 of 628 |
194
+ | proved in total | **1059** of 2,573 |
195
+ | standing keys → distinct theorems | 625 sealed, 0 of them keyed twice, 0 unresolvable |
196
+ | Lean files · theorems | 32 · 625 theorems (closed by exhaustion) + 9 rfl declarations, all axiom-free |
197
+ | proved `by decide` | 625 of 634 |
198
198
  | claims a machine can render | 103 of 1,555 |
199
199
  | claims needing an author | 1,452 — reported, never faked |
200
200
 
@@ -216,4 +216,4 @@ because no test was written that would seal them.
216
216
 
217
217
  ---
218
218
 
219
- *17 claims, all verified · 619 Lean theorems · 2567 ledger entries · trial root `d295e2c3-b6c1-83e3-8680-202e18691522` · integrity, not truth · 0/7*
219
+ *17 claims, all verified · 625 Lean theorems · 2573 ledger entries · trial root `6717495a-ed0a-89a4-8be2-36a9cd0aa068` · integrity, not truth · 0/7*
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ceccec/millennium-solutions",
3
- "version": "9.1.0",
3
+ "version": "9.1.2",
4
4
  "description": "Verifiable, recomputable ℤ/9 vortex framework in ONE package — content-addressing, audit ledger, exact arithmetic (0/7), and the honesty toolkit. Facts only.",
5
5
  "author": {
6
6
  "name": "Tsvetan Rouschev",