@ceccec/millennium-solutions 9.1.2 → 9.1.4

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/solutions.md CHANGED
@@ -17,8 +17,8 @@ Independent work · Tsvetan Rouschev · 2026-08-04 · DOI [10.5281/zenodo.218192
17
17
  |---|---|
18
18
  | gate | 1 (holds the floor) |
19
19
  | verdict | SEALED |
20
- | supporting formulas | 48/48 recompute true |
21
- | proof-of-verdict | `df0b19c1-c225-878b-b645-ca7a8fa8e6d5` |
20
+ | supporting formulas | 50/50 recompute true |
21
+ | proof-of-verdict | `89e2ec35-11c0-8fd3-ae37-bfffc1d8b32a` |
22
22
  | solved by the deposit | 0/7 |
23
23
 
24
24
  It reflects all seven and solves none — a bijection that relabels, it does not propagate proofs; 0/7.
@@ -32,8 +32,8 @@ Shown by what the gate drains — never asserted.
32
32
  | gate | 1 |
33
33
  | drained on | a proof-assertion phrase · token address `6f3dc604-345d…` |
34
34
  | verdict | REFUTED |
35
- | supporting formulas | 48/48 recompute true |
36
- | proof-of-verdict | `7081a7a1-e2ef-8461-aa78-a10593ab598a` |
35
+ | supporting formulas | 50/50 recompute true |
36
+ | proof-of-verdict | `13772a66-3f9e-8157-ba0a-ee4e416286d7` |
37
37
 
38
38
  ## Domains — the seven Clay problems
39
39
 
package/speedup.md CHANGED
@@ -7,7 +7,7 @@ head:
7
7
 
8
8
  # The real uuidna advantage — measured, in all domains
9
9
 
10
- > Generated from the **2543** ledger entries and **59** domains, recomputed each build. The advantage is
10
+ > Generated from the **2577** ledger entries and **59** domains, recomputed each build. The advantage is
11
11
  > real and **measured**, and honestly bounded: a **verification and reuse** complexity reduction — **not**
12
12
  > faster original compute, **not** faster than light, **not** quantum. `0/7`.
13
13
 
@@ -33,9 +33,9 @@ theorems verify in `⌈log₂N⌉`. So one proof covers the whole [rosetta](/):
33
33
 
34
34
  ## Discovery lead — a lead, never a verdict
35
35
 
36
- Grouping the 2543 receipts by the digital root of their address, the **sparsest** region is digit
37
- **3** (254) — a candidate area to examine, not a finding. The ledger is currently held
38
- at **2543** (the captain's cap): improving a theorem's name or proof heals the record without changing the
36
+ Grouping the 2577 receipts by the digital root of their address, the **sparsest** region is digit
37
+ **3** (261) — a candidate area to examine, not a finding. The ledger is currently held
38
+ at **2577** (the captain's cap): improving a theorem's name or proof heals the record without changing the
39
39
  count; discovering a new one would require lifting the cap.
40
40
 
41
41
  A content-address proves **integrity, not truth**. `0/7`.
package/src/api/index.ts CHANGED
@@ -136,13 +136,13 @@ export const domainOf = (statement: string): number => {
136
136
  * before keys had a namespace (`lean_units_are_six`) and one after (`lean_z9_units_are_six`). Both were live
137
137
  * and both are legitimate history, but counting a key as a theorem overstates the deposit. Those 24 second
138
138
  * addresses were retired in favour of their namespaced form, so no theorem now carries two. The 8 `rfl`
139
- * DECLARATIONS have no key at all, because seal-lean.ts seals `by decide` only — and they are declarations,
139
+ * DECLARATIONS have no key at all, because seal-lean.ts seals exhaustions (`by decide`) and proofs, never rfl — and they are declarations,
140
140
  * never theorems, by the definition this file states.
141
141
  *
142
142
  * Lean decides what a theorem is. Every count of theorems is taken from src/proof; a count of keys is
143
143
  * called a count of keys. */
144
144
  export interface Census {
145
- theorems: number; byDecide: number; rfl: number
145
+ theorems: number; byDecide: number; proved: number; rfl: number
146
146
  liveKeys: number; sealedTheorems: number; surplusKeys: number; unresolvableKeys: number; unsealed: number
147
147
  }
148
148
 
@@ -237,16 +237,20 @@ export const clayFloor = (): ClayFloor => {
237
237
  * declared constant proves the declaration and nothing else — it is not evidence." That is why seal-lean
238
238
  * seals `by decide` and refuses `rfl`, and it is the line taken here.
239
239
  *
240
- * A THEOREM OF THIS DEPOSIT is a declaration in src/proof that the Lean kernel accepts, free of `sorry`
241
- * and of axioms, and CLOSED BY EXHAUSTION over a stated finite domain. A declaration closed by `rfl` is a
242
- * definitional unfolding and is counted separately, never as a theorem. A key is an address and an entry
243
- * is a receipt; neither is a theorem, and scripts/contradictions.ts fails the build when either count is
244
- * printed next to the word. */
240
+ * A THEOREM OF THIS DEPOSIT is a declaration in src/proof that the Lean kernel accepts, free of `sorry`,
241
+ * and closed EITHER by exhaustion over a stated finite domain with no axiom at all, OR by a proof for every
242
+ * value resting only on the standard axioms propext and Quot.sound (lean.ts refuses anything else). The
243
+ * second kind was added 2026-09-14 — the user: "Go", on making real kernel proofs sealable — and seal-lean
244
+ * seals both, each marked as what it is. A declaration closed by `rfl` is a definitional unfolding and is
245
+ * counted separately, never as a theorem. A key is an address and an entry is a receipt; neither is a
246
+ * theorem, and scripts/contradictions.ts fails the build when either count is printed next to the word.
247
+ * (The first deploy after the proofs landed failed on exactly this: PRIOR-ART.md counted 629 sealed
248
+ * theorems while this count still read 625 exhaustions.) */
245
249
  export const THEOREM_DEFINITION =
246
- 'a declaration in src/proof that the Lean kernel accepts — sorry-free, axiom-free — and closes by exhaustion over a stated finite domain'
250
+ 'a declaration in src/proof that the Lean kernel accepts — sorry-free — and closes either by exhaustion over a stated finite domain with no axiom, or by a proof for every value on the standard axioms propext and Quot.sound'
247
251
 
248
252
  /** The count that definition yields. Everything reporting "theorems" should read this. */
249
- export const theoremCount = (): number => census().byDecide
253
+ export const theoremCount = (): number => { const c = census(); return c.byDecide + c.proved }
250
254
 
251
255
  /** THE DIGIT SPLIT, read off src/proof/split.lean rather than retyped.
252
256
  *
@@ -303,6 +307,7 @@ export const census = (): Census => {
303
307
  return {
304
308
  theorems: T.length,
305
309
  byDecide: T.filter((t) => t.tactic === 'by decide').length,
310
+ proved: T.filter((t) => t.tactic !== 'by decide' && t.tactic !== 'rfl').length,
306
311
  rfl: T.filter((t) => t.tactic === 'rfl').length,
307
312
  liveKeys: keys.length,
308
313
  sealedTheorems: named.size,
@@ -18616,5 +18616,25 @@
18616
18616
  "key": "lean_z9_the_orbit_step_is_read_back_by_its_log",
18617
18617
  "name": "lean z9.lean: the_orbit_step_is_read_back_by_its_log — (List.range 6).all (fun k => logOrbit (orbit k) == some k) ∧ units.all (fun u => (logOrbit u).map orbit == some u) — decided by the Lean kernel over its whole finite domain, axiom-free",
18618
18618
  "receipt": "e29d831e-5bde-8104-95bd-fc374ac46155"
18619
+ },
18620
+ {
18621
+ "key": "lean_energy_splitting_then_burning_is_the_identity_at_every_ledger_value",
18622
+ "name": "lean energy.lean: splitting_then_burning_is_the_identity_at_every_ledger_value — ∀ e : Nat, burnE (splitE e) = e — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18623
+ "receipt": "2105157a-992b-8d52-8c5d-b7103bc12c7a"
18624
+ },
18625
+ {
18626
+ "key": "lean_light_the_second_returns_from_the_metre_and_the_period_at_every_duration",
18627
+ "name": "lean light.lean: the_second_returns_from_the_metre_and_the_period_at_every_duration — ∀ s : Nat, travel s / c = s ∧ periods s / dNuCs = s — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18628
+ "receipt": "e6d8871f-bee4-8268-a94a-bdd31fdd6302"
18629
+ },
18630
+ {
18631
+ "key": "lean_reach_the_predecessor_returns_every_successor",
18632
+ "name": "lean reach.lean: the_predecessor_returns_every_successor — ∀ n : Nat, (n + 1) - 1 = n — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18633
+ "receipt": "a1d55ab6-baca-8250-a413-285dc2cc2d5c"
18634
+ },
18635
+ {
18636
+ "key": "lean_speed_the_microseconds_return_from_the_nanoseconds_at_every_count",
18637
+ "name": "lean speed.lean: the_microseconds_return_from_the_nanoseconds_at_every_count — ∀ u : Nat, u * 1000 / 1000 = u — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18638
+ "receipt": "98899238-b934-8157-ae53-8b60284e56ab"
18619
18639
  }
18620
18640
  ]
@@ -178,6 +178,13 @@ def burnE (e : Nat) : Nat := e - bondHundredthsKJ
178
178
  theorem splitting_then_burning_is_the_identity_at_the_ideal :
179
179
  (List.range 1000).all (fun e => burnE (splitE e) == e) ∧ pct burnYield splitCost = 23 := by decide
180
180
 
181
+ -- ── AND AT EVERY LEDGER VALUE, NOT A THOUSAND OF THEM. The theorem above decides the round trip below 1000;
182
+ -- this one PROVES it for every natural number, by the cancellation law of addition. A proof, not an
183
+ -- exhaustion — so it carries the standard axiom propext that core's lemmas rest on, and lean.ts prints it. ──
184
+ theorem splitting_then_burning_is_the_identity_at_every_ledger_value :
185
+ ∀ e : Nat, burnE (splitE e) = e := by
186
+ intro e; exact Nat.add_sub_cancel e bondHundredthsKJ
187
+
181
188
  -- ── WHAT A BUILDER RUNS INTO NEXT ────────────────────────────────────────────────────────────────────────
182
189
  -- The stoichiometry above is exact and favourable; these are the numbers that decide whether the machine can
183
190
  -- be built rather than whether it balances. They are the reason hydrogen systems are hard even when the
@@ -59,6 +59,12 @@ theorem travel_at_one_returns_the_defined_constant : travel 1 = c := by decide
59
59
  theorem the_second_returns_from_the_metre_and_the_period :
60
60
  (List.range 100).all (fun s => travel s / c == s && periods s / dNuCs == s) := by decide
61
61
 
62
+ -- And at EVERY duration, proved rather than decided: dividing by the constant that defines the map cancels it,
63
+ -- whatever the number of seconds. The standard axiom propext is carried and printed by lean.ts.
64
+ theorem the_second_returns_from_the_metre_and_the_period_at_every_duration :
65
+ ∀ s : Nat, travel s / c = s ∧ periods s / dNuCs = s := by
66
+ intro s; exact ⟨Nat.mul_div_cancel_left s (by decide), Nat.mul_div_cancel_left s (by decide)⟩
67
+
62
68
  -- ONE INTERVAL, TWO UNITS: the same second is 299792458 metres of light and 9192631770 caesium periods.
63
69
  -- That is the SI's join between space and time, and it is an identity between two definitions rather than
64
70
  -- a discovery about either.
@@ -61,6 +61,13 @@ theorem the_successor_leaves_every_domain_and_the_predecessor_returns :
61
61
  (bounds ++ [largestDomainHere]).all (fun n =>
62
62
  n + 1 > n && (n + 1) - 1 == n && (n + 1) % 2 != n % 2) := by decide
63
63
 
64
+ -- ── AND FOR EVERY n, WHICH NO EXHAUSTION ABOVE CAN SAY. The file's point is that `decide` stops at its bound;
65
+ -- this is what goes past it: a PROOF that the predecessor returns every successor, for all naturals at once.
66
+ -- It is the only kind of statement that reaches an unbounded domain, and it rests on the standard axiom
67
+ -- propext, printed by lean.ts. ──
68
+ theorem the_predecessor_returns_every_successor : ∀ n : Nat, (n + 1) - 1 = n := by
69
+ intro n; exact Nat.add_sub_cancel n 1
70
+
64
71
  -- ── 5 · A THEOREM NAMED FOR THE CLAY PROBLEMS THAT DECIDED NOTHING ABOUT THEM — DELETED ─────────────────
65
72
  -- `this_file_settles_none_of_the_seven` stood here and decided:
66
73
  --
@@ -88,6 +88,11 @@ theorem verification_grows_it_is_not_constant :
88
88
  -- the ledger next to the impressive one rather than only the impressive one being quotable. ──
89
89
  -- The nanosecond figure is not a second typed input: it is the microsecond input converted, and the
90
90
  -- conversion reads back at every microsecond count below a thousand. ──
91
+ -- ── The conversion reads back at EVERY count, proved rather than sampled — the theorem below it decides the
92
+ -- first thousand. A proof over all naturals, carrying the standard axiom propext (printed by lean.ts). ──
93
+ theorem the_microseconds_return_from_the_nanoseconds_at_every_count : ∀ u : Nat, u * 1000 / 1000 = u := by
94
+ intro u; exact Nat.mul_div_cancel u (by decide)
95
+
91
96
  theorem the_verify_in_nanoseconds_reads_back_its_microseconds :
92
97
  (List.range 1000).all (fun u => u * 1000 / 1000 == u) ∧
93
98
  nsPerVerify = verifyUs * 1000 ∧ nsPerVerify / 1000 = verifyUs ∧ nsPerVerify > 10000 := by decide
@@ -15436,5 +15436,29 @@
15436
15436
  "verdict": "UNVERIFIED",
15437
15437
  "ground": "no candidate in the current space — nothing to recompute",
15438
15438
  "receipt": "e29d831e-5bde-8104-95bd-fc374ac46155"
15439
+ },
15440
+ {
15441
+ "key": "lean_energy_splitting_then_burning_is_the_identity_at_every_ledger_value",
15442
+ "verdict": "UNVERIFIED",
15443
+ "ground": "no candidate in the current space — nothing to recompute",
15444
+ "receipt": "2105157a-992b-8d52-8c5d-b7103bc12c7a"
15445
+ },
15446
+ {
15447
+ "key": "lean_light_the_second_returns_from_the_metre_and_the_period_at_every_duration",
15448
+ "verdict": "UNVERIFIED",
15449
+ "ground": "no candidate in the current space — nothing to recompute",
15450
+ "receipt": "e6d8871f-bee4-8268-a94a-bdd31fdd6302"
15451
+ },
15452
+ {
15453
+ "key": "lean_reach_the_predecessor_returns_every_successor",
15454
+ "verdict": "UNVERIFIED",
15455
+ "ground": "no candidate in the current space — nothing to recompute",
15456
+ "receipt": "a1d55ab6-baca-8250-a413-285dc2cc2d5c"
15457
+ },
15458
+ {
15459
+ "key": "lean_speed_the_microseconds_return_from_the_nanoseconds_at_every_count",
15460
+ "verdict": "UNVERIFIED",
15461
+ "ground": "no candidate in the current space — nothing to recompute",
15462
+ "receipt": "98899238-b934-8157-ae53-8b60284e56ab"
15439
15463
  }
15440
15464
  ]