@ceccec/millennium-solutions 9.1.2 → 9.1.3

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/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
 
@@ -303,6 +303,7 @@ export const census = (): Census => {
303
303
  return {
304
304
  theorems: T.length,
305
305
  byDecide: T.filter((t) => t.tactic === 'by decide').length,
306
+ proved: T.filter((t) => t.tactic !== 'by decide' && t.tactic !== 'rfl').length,
306
307
  rfl: T.filter((t) => t.tactic === 'rfl').length,
307
308
  liveKeys: keys.length,
308
309
  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
  ]