@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/AXIOMS.md +6 -6
- package/CHALLENGES.md +11 -3
- package/README.md +22 -22
- package/forensic.md +4 -4
- package/index.md +22 -22
- package/package.json +1 -1
- package/paper.md +412 -377
- package/src/api/index.ts +3 -2
- package/src/proof/discovered.json +20 -0
- package/src/proof/energy.lean +7 -0
- package/src/proof/light.lean +6 -0
- package/src/proof/reach.lean +7 -0
- package/src/proof/speed.lean +5 -0
- package/src/proof/trial-all.json +24 -0
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`
|
|
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
|
]
|
package/src/proof/energy.lean
CHANGED
|
@@ -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
|
package/src/proof/light.lean
CHANGED
|
@@ -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.
|
package/src/proof/reach.lean
CHANGED
|
@@ -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
|
--
|
package/src/proof/speed.lean
CHANGED
|
@@ -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
|
package/src/proof/trial-all.json
CHANGED
|
@@ -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
|
]
|