@ceccec/millennium-solutions 0.1.1 → 9.0.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/.zenodo.json +33 -9
- package/ACCOUNTING.md +7 -7
- package/AXIOMS.md +559 -0
- package/CHALLENGES.md +2181 -2479
- package/CITATION.cff +1 -1
- package/DEPLOY.md +2 -2
- package/DEVELOP.md +1 -1
- package/LICENSE +6 -5
- package/PRIOR-ART.md +149 -0
- package/README.md +221 -123
- package/SIGNATURE.md +2 -2
- package/TRIAL.md +69 -0
- package/WHITEPAPER.md +5 -5
- package/captain.md +2 -2
- package/compare.md +4 -4
- package/compute.md +9 -0
- package/dashboard.md +1 -1
- package/examples.md +5 -5
- package/forensic.md +67 -0
- package/guide.md +5 -5
- package/index.md +209 -139
- package/package.json +88 -9
- package/paper.md +7183 -0
- package/quantum.md +42 -0
- package/rights.md +39 -0
- package/solutions.md +7 -7
- package/speedup.md +4 -4
- package/src/0/index.ts +12 -2
- package/src/1/index.ts +1 -1
- package/src/2/frequency-scales.ts +13 -1
- package/src/2/index.ts +1 -1
- package/src/3/index.ts +1 -1
- package/src/4/index.ts +1 -1
- package/src/5/index.ts +1 -1
- package/src/6/index.ts +1 -1
- package/src/7/index.ts +1 -1
- package/src/9/funding.ts +2 -2
- package/src/api/gates.ts +117 -0
- package/src/api/index.ts +488 -0
- package/src/api/lanes.ts +81 -0
- package/src/demand/queries.json +1764 -0
- package/src/face/index.ts +100 -0
- package/src/html/index.ts +10 -0
- package/src/latex/index.ts +474 -0
- package/src/millennium/index.ts +53 -0
- package/src/proof/README.md +1 -1
- package/src/proof/address.lean +117 -0
- package/src/proof/coin.lean +148 -0
- package/src/proof/covered.json +9 -0
- package/src/proof/demand.lean +112 -0
- package/src/proof/demand2.lean +171 -0
- package/src/proof/demand3.lean +117 -0
- package/src/proof/discovered.json +10965 -1864
- package/src/proof/elementary.lean +393 -0
- package/src/proof/energy.lean +215 -0
- package/src/proof/families.lean +435 -0
- package/src/proof/fixtures/axiom-control.lean +39 -0
- package/src/proof/fnv.lean +99 -0
- package/src/proof/generated-theorems.json +207 -0
- package/src/proof/generated.lean +101 -0
- package/src/proof/imagined.lean +492 -0
- package/src/proof/index.lean +98 -18
- package/src/proof/index.ts +2 -2
- package/src/proof/involution.lean +90 -0
- package/src/proof/ledgerclaims.lean +84 -0
- package/src/proof/light.lean +135 -0
- package/src/proof/mechanical.lean +421 -0
- package/src/proof/merkaba.lean +89 -0
- package/src/proof/merkle.lean +132 -0
- package/src/proof/nim.lean +105 -0
- package/src/proof/phenomena.lean +90 -0
- package/src/proof/priorart.lean +189 -0
- package/src/proof/quantum.lean +161 -0
- package/src/proof/reach.lean +84 -0
- package/src/proof/recovered.lean +56 -0
- package/src/proof/reversal.lean +73 -0
- package/src/proof/rights.lean +157 -0
- package/src/proof/sequences.lean +105 -0
- package/src/proof/speed.lean +129 -0
- package/src/proof/split.lean +180 -0
- package/src/proof/theorems.lean +48 -1
- package/src/proof/trial-all.json +15260 -0
- package/src/proof/z9.lean +92 -0
- package/src/proof/z9plus.lean +208 -0
- package/src/proofs.lisp +3 -3
- package/src/prove/emit.ts +115 -0
- package/src/prove/index.ts +143 -0
- package/src/prove/translate.ts +638 -0
- package/src/publication/index.ts +363 -0
- package/src/quantum/field.ts +73 -0
- package/src/quantum/tree.ts +79 -0
package/src/proof/index.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Quantum Proofs of the Clay Millennium Problems — Theorem Framework
|
|
3
3
|
*
|
|
4
|
-
* Licensed under CC BY-NC 4.0
|
|
5
|
-
* https://creativecommons.org/licenses/by-nc/4.0/
|
|
4
|
+
* Licensed under CC BY-NC-ND 4.0
|
|
5
|
+
* https://creativecommons.org/licenses/by-nc-nd/4.0/
|
|
6
6
|
*
|
|
7
7
|
* Attribution: Tsvetan Rouschev (ceccec@psg.bg)
|
|
8
8
|
* Non-commercial use only. For commercial licensing, contact the author.
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
set_option maxRecDepth 8000000
|
|
2
|
+
-- title: What every involution gives, and what it does not
|
|
3
|
+
-- wing: the ring
|
|
4
|
+
-- prior_art: named
|
|
5
|
+
-- prior_art_domain: elementary group theory — orbit decomposition of an order-two permutation
|
|
6
|
+
-- prior_art_note: that a permutation of order two decomposes a finite set into fixed points and
|
|
7
|
+
-- transpositions, and that the number of fixed points therefore matches the parity of the set, is
|
|
8
|
+
-- classical and long predates this deposit. It is the orbit-counting argument in any first course.
|
|
9
|
+
-- What is this deposit's own here is the EXHAUSTIVE decision over ℤ/9 and the measured refusal below.
|
|
10
|
+
--
|
|
11
|
+
-- THE QUESTION, and it was asked as "do involutions always give a harmonic result?".
|
|
12
|
+
--
|
|
13
|
+
-- Two readings of "harmonic" are decided here over ALL 2620 involutions of a nine-element set, enumerated
|
|
14
|
+
-- rather than sampled. One holds everywhere. The other does not, and the second is the more useful answer,
|
|
15
|
+
-- because a claim that survives only on the examples someone happened to pick is the thing this deposit
|
|
16
|
+
-- exists to refuse.
|
|
17
|
+
--
|
|
18
|
+
-- ALWAYS — every involution fixes at least one point, and its fixed points are ODD in number.
|
|
19
|
+
-- On nine elements the centre is never absent. There is no involution of ℤ/9 with nothing
|
|
20
|
+
-- standing still, and that is not a property of the ones chosen here, it is a property of all
|
|
21
|
+
-- of them.
|
|
22
|
+
--
|
|
23
|
+
-- NOT ALWAYS — "every swapped pair sums to the same value", which is what `refl d = 10 - d` does and
|
|
24
|
+
-- what makes the coin's two sides sides of one thing. That is RARE: 90 of 2620, about one in
|
|
25
|
+
-- twenty-nine. It is a property of a particular involution, never of involutions.
|
|
26
|
+
|
|
27
|
+
namespace Involution
|
|
28
|
+
|
|
29
|
+
/-- Every involution of a finite list, as its set of orbits: `(a, a)` is a fixed point, `(a, b)` a swap. -/
|
|
30
|
+
-- The fuel is not a hedge and not an approximation: `rest.erase b` is smaller than `rest` but not
|
|
31
|
+
-- STRUCTURALLY smaller, so Lean cannot see the recursion terminate and — more to the point — a
|
|
32
|
+
-- well-founded definition does not reduce, which would leave every `decide` below unable to evaluate.
|
|
33
|
+
-- Counting down a Nat is structural, it reduces, and nine elements can nest at most nine deep. Ten is
|
|
34
|
+
-- passed, and `the_fuel_was_not_the_limit` decides that eleven produces the same list: the enumeration
|
|
35
|
+
-- stopped because it was complete, not because it ran out.
|
|
36
|
+
def matchings : Nat → List Nat → List (List (Nat × Nat))
|
|
37
|
+
| 0, _ => []
|
|
38
|
+
| _, [] => [[]]
|
|
39
|
+
| fuel + 1, a :: rest =>
|
|
40
|
+
(matchings fuel rest).map (fun m => (a, a) :: m)
|
|
41
|
+
++ rest.flatMap (fun b => (matchings fuel (rest.erase b)).map (fun m => (a, b) :: m))
|
|
42
|
+
|
|
43
|
+
def nine : List Nat := [0, 1, 2, 3, 4, 5, 6, 7, 8]
|
|
44
|
+
def all : List (List (Nat × Nat)) := matchings 10 nine
|
|
45
|
+
|
|
46
|
+
def fixedPoints (m : List (Nat × Nat)) : Nat := (m.filter (fun p => p.1 == p.2)).length
|
|
47
|
+
def swaps (m : List (Nat × Nat)) : List (Nat × Nat) := m.filter (fun p => p.1 != p.2)
|
|
48
|
+
|
|
49
|
+
-- ── THE ENUMERATION IS COMPLETE, stated first so every count below is over a domain of known size ───────
|
|
50
|
+
theorem there_are_2620_involutions_of_nine : all.length = 2620 := by decide
|
|
51
|
+
|
|
52
|
+
theorem the_fuel_was_not_the_limit : (matchings 11 nine).length = all.length := by decide
|
|
53
|
+
|
|
54
|
+
-- ── WHAT ALWAYS HOLDS: the centre is never absent ───────────────────────────────────────────────────────
|
|
55
|
+
-- Both directions of the same fact. The first is what was asked; the second is why, and it is the sharper
|
|
56
|
+
-- statement because it rules out two fixed points as firmly as it rules out none.
|
|
57
|
+
theorem every_involution_fixes_at_least_one_point :
|
|
58
|
+
all.all (fun m => fixedPoints m ≥ 1) := by decide
|
|
59
|
+
|
|
60
|
+
theorem the_fixed_points_are_always_odd :
|
|
61
|
+
all.all (fun m => fixedPoints m % 2 == 1) := by decide
|
|
62
|
+
|
|
63
|
+
-- Nothing is fixed by every involution — the centre exists, but it is not the same centre.
|
|
64
|
+
-- Stated so the theorem above cannot be misread as naming a universal fixed element.
|
|
65
|
+
theorem no_single_point_is_fixed_by_all :
|
|
66
|
+
nine.all (fun d => ¬ all.all (fun m => m.contains (d, d))) := by decide
|
|
67
|
+
|
|
68
|
+
-- ── WHAT DOES NOT HOLD: the constant sum is rare ────────────────────────────────────────────────────────
|
|
69
|
+
-- `refl d = 10 - d` sends every swapped pair to the same total, which is the sense in which the coin's
|
|
70
|
+
-- reflection is harmonic. Asked of ALL involutions, that fails, and the count says how badly.
|
|
71
|
+
def constantSum (m : List (Nat × Nat)) : Bool :=
|
|
72
|
+
(swaps m).all (fun p => p.1 + p.2 == ((swaps m).head?.map (fun q => q.1 + q.2)).getD (p.1 + p.2))
|
|
73
|
+
|
|
74
|
+
theorem the_constant_sum_is_rare :
|
|
75
|
+
(all.filter constantSum).length = 90 := by decide
|
|
76
|
+
|
|
77
|
+
theorem so_involutions_are_not_all_harmonic_in_that_sense :
|
|
78
|
+
¬ all.all constantSum := by decide
|
|
79
|
+
|
|
80
|
+
-- ── THE DEPOSIT'S OWN REFLECTION IS ONE OF THE NINETY ───────────────────────────────────────────────────
|
|
81
|
+
-- The coin's involution on 1..8 with 0 fixed: pairs summing to 9 within the nine-element set. Naming it
|
|
82
|
+
-- inside the enumeration is what stops "refl is harmonic" from being read as "involutions are harmonic".
|
|
83
|
+
def coinLike : List (Nat × Nat) := [(0, 0), (1, 8), (2, 7), (3, 6), (4, 5)]
|
|
84
|
+
|
|
85
|
+
theorem the_coins_reflection_is_harmonic_and_is_one_of_the_ninety :
|
|
86
|
+
constantSum coinLike = true
|
|
87
|
+
∧ fixedPoints coinLike = 1
|
|
88
|
+
∧ (swaps coinLike).all (fun p => p.1 + p.2 == 9) := by decide
|
|
89
|
+
|
|
90
|
+
end Involution
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import Merkle
|
|
2
|
+
set_option maxRecDepth 8000000
|
|
3
|
+
-- title: What the ledger claims
|
|
4
|
+
-- wing: the address
|
|
5
|
+
-- prior_art: named
|
|
6
|
+
-- prior_art_domain: hash trees and membership proofs
|
|
7
|
+
-- prior_art_note: `membership_grows_by_one_seal_per_doubling` and `membership_is_logarithmic_not_linear`
|
|
8
|
+
-- restate the O(log n) membership proof of a hash tree — Ralph Merkle, 1979 (thesis); CRYPTO 1987 — which
|
|
9
|
+
-- merkle.lean in this same deposit already credits. Classified `unbounded` on the ground that the subject is
|
|
10
|
+
-- this deposit's own ledger; the ledger is its own, the logarithm is not.
|
|
11
|
+
-- Bounded: what is not prior art is what THIS ledger claims — the 967-receipt case, the saving arithmetic,
|
|
12
|
+
-- and the 128-bit seal width as this deposit mints it.
|
|
13
|
+
-- prior_art_search: literature search performed 2026-09-05, terms "Merkle tree membership proof logarithmic
|
|
14
|
+
-- verification path length"; prior art found and credited.
|
|
15
|
+
-- prior_art_pool: unbounded
|
|
16
|
+
-- the subject is this deposit's own ledger; no external work can restate it.
|
|
17
|
+
-- BOUNDED means a search is well posed and simply has not been run — the row is unclassified because
|
|
18
|
+
-- nobody looked. UNBOUNDED means the subject is this artifact, so there is no pool to search and the
|
|
19
|
+
-- row will stay unclassified however much work is done. They look identical in a count and need
|
|
20
|
+
-- opposite responses, which is the distinction uuidna-49 asked for and nobody had drawn.
|
|
21
|
+
-- prior_art_own: claims about this deposit's own ledger
|
|
22
|
+
-- Three claims the prose made in words and cited to entries that no longer stand. Restated here as
|
|
23
|
+
-- propositions the kernel decides, so the sentences keep a citation that is actually proved.
|
|
24
|
+
-- Author: Tsvetan Rouschev · License: CC BY-NC-ND 4.0
|
|
25
|
+
--
|
|
26
|
+
-- No axioms, no Mathlib, no sorry. Merkle (and through it Address, Fnv) is imported, not restated.
|
|
27
|
+
|
|
28
|
+
namespace LedgerClaims
|
|
29
|
+
|
|
30
|
+
open Address Fnv Merkle
|
|
31
|
+
|
|
32
|
+
-- ── 1 · the seal is 128 bits, and membership is logarithmic, not linear ─────────────────────────────
|
|
33
|
+
-- A seal is a uuid: 16 bytes. `rounds` counts the pairing rounds a fold needs for n leaves — which is the
|
|
34
|
+
-- number of sibling seals an inclusion proof carries. Fuel-bounded so the recursion is structural.
|
|
35
|
+
def rounds : Nat → Nat → Nat
|
|
36
|
+
| 0, _ => 0
|
|
37
|
+
| _, 0 => 0
|
|
38
|
+
| _, 1 => 0
|
|
39
|
+
| Nat.succ f, n => 1 + rounds f ((n + 1) / 2)
|
|
40
|
+
|
|
41
|
+
-- A seal is a uuid and a uuid is sixteen bytes, so a seal is 128 bits. Stated because everything downstream
|
|
42
|
+
-- counts in it: the proof size below is a number of SEALS, and a number of seals only means something once
|
|
43
|
+
-- the width of one is fixed. The multiplication is trivial; naming the unit is not.
|
|
44
|
+
theorem a_seal_is_128_bits : (toUuidBytes [97]).length * 8 = 128 := by decide
|
|
45
|
+
|
|
46
|
+
-- doubling the set adds exactly ONE sibling — the signature of a logarithm, checked across an octave.
|
|
47
|
+
theorem membership_grows_by_one_seal_per_doubling :
|
|
48
|
+
rounds 40 2 = 1 ∧ rounds 40 4 = 2 ∧ rounds 40 8 = 3 ∧ rounds 40 16 = 4 ∧
|
|
49
|
+
rounds 40 32 = 5 ∧ rounds 40 64 = 6 ∧ rounds 40 128 = 7 ∧ rounds 40 256 = 8 := by decide
|
|
50
|
+
|
|
51
|
+
-- and it is genuinely sublinear: at 1024 leaves a proof carries 10 seals, not 1024 — 1280 bits, not 131072.
|
|
52
|
+
-- (An earlier form of this compared seal-bits against a leaf COUNT; the kernel refuted it, correctly. Both
|
|
53
|
+
-- sides are now the same unit, which is the only way the comparison means anything.)
|
|
54
|
+
theorem membership_is_logarithmic_not_linear :
|
|
55
|
+
rounds 40 1024 = 10 ∧ rounds 40 1024 < 1024 ∧ rounds 40 1024 * 128 < 1024 * 128 := by decide
|
|
56
|
+
|
|
57
|
+
-- ── 2 · the 967-receipt case ────────────────────────────────────────────────────────────────────────
|
|
58
|
+
-- Verifying membership costs the proof, not the computation: bill the 20 bits verification actually
|
|
59
|
+
-- spends, against a computation worth 967 — the saving is the difference, and nothing else.
|
|
60
|
+
def saving (value verify : Nat) : Nat := value - verify
|
|
61
|
+
|
|
62
|
+
theorem the_967_receipt_case : saving 967 20 = 947 ∧ 20 + 947 = 967 := by decide
|
|
63
|
+
|
|
64
|
+
-- the saving is never more than the value, at any size — an accounting identity, not a promise.
|
|
65
|
+
theorem a_saving_never_exceeds_its_value :
|
|
66
|
+
(List.range 40).all (fun v => (List.range 40).all (fun w => saving v w ≤ v)) := by decide
|
|
67
|
+
|
|
68
|
+
-- ── 3 · an address is a pointer, not the payload ────────────────────────────────────────────────────
|
|
69
|
+
-- A fixed-width address cannot be the thing it names: there are more payloads than addresses, so two
|
|
70
|
+
-- payloads must share one. Shown at 4 bits, where the whole domain fits in the kernel.
|
|
71
|
+
def addr4 (x : Nat) : Nat := x % 16
|
|
72
|
+
|
|
73
|
+
theorem more_payloads_than_addresses_must_collide :
|
|
74
|
+
((List.range 17).map addr4).eraseDups.length < 17 := by decide
|
|
75
|
+
|
|
76
|
+
theorem the_address_does_not_determine_the_payload :
|
|
77
|
+
((List.range 17).any (fun a => (List.range 17).any (fun b => a != b && addr4 a == addr4 b))) = true := by decide
|
|
78
|
+
|
|
79
|
+
-- not just at 1024: across the whole octave of set sizes, a proof is strictly smaller than the set it
|
|
80
|
+
-- proves membership in. Decided over every n from 2 to 256, not sampled at one convenient point.
|
|
81
|
+
theorem a_proof_is_smaller_than_its_set_across_the_octave :
|
|
82
|
+
(List.range' 2 255).all (fun n => rounds 40 n < n) := by decide
|
|
83
|
+
|
|
84
|
+
end LedgerClaims
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
set_option maxRecDepth 8000000
|
|
2
|
+
-- title: Light, space and time — arithmetic on numbers a standards body fixed
|
|
3
|
+
-- wing: the floor
|
|
4
|
+
-- prior_art: named
|
|
5
|
+
-- prior_art_domain: metrology — the International System of Units
|
|
6
|
+
-- prior_art_note: the exact numerical values below are DEFINITIONS adopted by the Conférence Générale des
|
|
7
|
+
-- Poids et Mesures, not results of this deposit: the metre from the speed of light (17th CGPM, 1983) and
|
|
8
|
+
-- the seven defining constants fixed exactly in the 2019 revision of the SI, effective 20 May 2019
|
|
9
|
+
-- (BIPM, https://www.bipm.org/en/measurement-units/si-defining-constants). Nothing here measures anything.
|
|
10
|
+
--
|
|
11
|
+
-- WHY A FILE ABOUT LIGHT SPEED CAN EXIST IN A DEPOSIT THAT CLAIMS NO PHYSICS.
|
|
12
|
+
--
|
|
13
|
+
-- Since 1983 the metre has been DEFINED from the speed of light, and since 2019 all seven SI base units are
|
|
14
|
+
-- defined by fixing seven constants to exact numerical values with no uncertainty. That makes 299792458 a
|
|
15
|
+
-- number a committee adopted, not a quantity anyone measured — the measuring moved to the other side of the
|
|
16
|
+
-- definition. Arithmetic on it is arithmetic on an integer, and the kernel can decide it.
|
|
17
|
+
--
|
|
18
|
+
-- What follows is therefore about the SI, not about nature. Every theorem here would be equally true if the
|
|
19
|
+
-- universe were different, because none of them is about the universe.
|
|
20
|
+
--
|
|
21
|
+
-- AND THE LIMIT IS PROVED, NOT PROMISED. The digital root of 299792458 is 1. That is a fact about the
|
|
22
|
+
-- numeral, in metres per second, and nothing else: doubling the numeral changes the root to 2, while
|
|
23
|
+
-- multiplying by a hundred leaves it alone. Both are decided below. A root that moves when you change the
|
|
24
|
+
-- unit and stays when you change the scale is a property of decimal notation, and reading significance into
|
|
25
|
+
-- it would be the overclaim this deposit exists to refuse.
|
|
26
|
+
|
|
27
|
+
-- CLAIMS: physical
|
|
28
|
+
namespace Light
|
|
29
|
+
|
|
30
|
+
-- ── THE SEVEN, as exact integers. h, e, k and N_A are recorded as their DIGIT SEQUENCES: their defining
|
|
31
|
+
-- values carry powers of ten that Nat cannot hold, and the arithmetic below concerns the digits. Saying
|
|
32
|
+
-- so here rather than letting a reader assume the number is the quantity. ────────────────────────────
|
|
33
|
+
def c : Nat := 299792458 -- m/s, exact
|
|
34
|
+
def dNuCs : Nat := 9192631770 -- Hz, exact — the caesium-133 hyperfine transition
|
|
35
|
+
def hDigits : Nat := 662607015 -- h = 6.62607015 × 10⁻³⁴ J s
|
|
36
|
+
def eDigits : Nat := 1602176634 -- e = 1.602176634 × 10⁻¹⁹ C
|
|
37
|
+
def kDigits : Nat := 1380649 -- k = 1.380649 × 10⁻²³ J/K
|
|
38
|
+
def naDigits : Nat := 602214076 -- N_A = 6.02214076 × 10²³ mol⁻¹
|
|
39
|
+
def kcd : Nat := 683 -- K_cd, lm/W, exact
|
|
40
|
+
|
|
41
|
+
def defining : List Nat := [c, dNuCs, hDigits, eDigits, kDigits, naDigits, kcd]
|
|
42
|
+
|
|
43
|
+
theorem the_si_fixes_exactly_seven_constants : defining.length = 7 := by decide
|
|
44
|
+
|
|
45
|
+
-- ── SPACE FROM TIME, THROUGH LIGHT ──────────────────────────────────────────────────────────────────────
|
|
46
|
+
-- The chain is definitional and it runs one way. ΔνCs fixes the second; the second and c fix the metre. So
|
|
47
|
+
-- in the SI a length is a duration scaled by a fixed integer, and the integer is the speed of light.
|
|
48
|
+
def travel (seconds : Nat) : Nat := c * seconds -- metres crossed in a whole number of seconds
|
|
49
|
+
def periods (seconds : Nat) : Nat := dNuCs * seconds -- caesium periods elapsed in the same interval
|
|
50
|
+
|
|
51
|
+
theorem travel_at_one_returns_the_defined_constant : travel 1 = c := by decide
|
|
52
|
+
|
|
53
|
+
-- ONE INTERVAL, TWO UNITS: the same second is 299792458 metres of light and 9192631770 caesium periods.
|
|
54
|
+
-- That is the SI's join between space and time, and it is an identity between two definitions rather than
|
|
55
|
+
-- a discovery about either.
|
|
56
|
+
theorem travel_and_periods_at_one_return_their_constants :
|
|
57
|
+
travel 1 = 299792458 ∧ periods 1 = 9192631770 := by decide
|
|
58
|
+
|
|
59
|
+
-- Linear over the whole range checked, so the chain is a scaling and not a coincidence at one point.
|
|
60
|
+
theorem the_chain_scales :
|
|
61
|
+
([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10].all (fun s => travel s == c * s))
|
|
62
|
+
∧ ([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10].all (fun s => periods s == dNuCs * s)) := by decide
|
|
63
|
+
|
|
64
|
+
-- ── THE RESIDUES, DECIDED ───────────────────────────────────────────────────────────────────────────────
|
|
65
|
+
-- Where each defining numeral lands in this deposit's ring. Stated as arithmetic; read as nothing else.
|
|
66
|
+
def root (n : Nat) : Nat := if n == 0 then 9 else 1 + (n - 1) % 9
|
|
67
|
+
|
|
68
|
+
theorem the_roots_of_the_seven :
|
|
69
|
+
defining.map root = [1, 9, 6, 9, 4, 1, 8] := by decide
|
|
70
|
+
|
|
71
|
+
-- Three land on the triad {3,6,9} and four on the units. Both counted, so neither can be quoted alone.
|
|
72
|
+
theorem three_on_the_triad_and_four_on_the_units :
|
|
73
|
+
(defining.filter (fun n => [3, 6, 9].contains (root n))).length = 3
|
|
74
|
+
∧ (defining.filter (fun n => [1, 2, 4, 5, 7, 8].contains (root n))).length = 4 := by decide
|
|
75
|
+
|
|
76
|
+
-- AND THEY DO NOT COVER THE RING. Five residues occur, four never do. Stated because seven numbers landing
|
|
77
|
+
-- on five of nine residues is what unrelated numbers do, and the absence is the honest half of the count.
|
|
78
|
+
theorem the_seven_roots_miss_four_residues :
|
|
79
|
+
(defining.map root).eraseDups.length = 5
|
|
80
|
+
∧ ([1, 2, 3, 4, 5, 6, 7, 8, 9].filter (fun d => ¬ (defining.map root).contains d)) = [2, 3, 5, 7] := by decide
|
|
81
|
+
|
|
82
|
+
-- ── THE COINCIDENCE A READER WILL FIND, NAMED AND DEFUSED ──────────────────────────────────────────────
|
|
83
|
+
-- The four residues the seven constants miss are 2, 3, 5 and 7 — exactly the primes below nine. Nobody
|
|
84
|
+
-- reading the theorem above will fail to notice that, and a deposit that states an absence and says nothing
|
|
85
|
+
-- further hands the reader the job of supplying its meaning. So it is stated here as an equality, and then
|
|
86
|
+
-- shown to be an accident of the numerals: doubling ONE of the seven — a choice of unit, not a fact about
|
|
87
|
+
-- anything — moves the missing set to {2,3,5,8}, which is not the primes. A pattern that a change of unit
|
|
88
|
+
-- destroys was never a pattern about the quantities.
|
|
89
|
+
def kcdDoubled : Nat := 1366 -- K_cd expressed against a unit half the size; the same luminous efficacy
|
|
90
|
+
def alternative : List Nat := [c, dNuCs, hDigits, eDigits, kDigits, naDigits, kcdDoubled]
|
|
91
|
+
|
|
92
|
+
theorem the_absent_residues_are_the_primes_below_nine :
|
|
93
|
+
([1, 2, 3, 4, 5, 6, 7, 8, 9].filter (fun d => ¬ (defining.map root).contains d)) = [2, 3, 5, 7] := by decide
|
|
94
|
+
|
|
95
|
+
theorem and_a_change_of_unit_destroys_it :
|
|
96
|
+
([1, 2, 3, 4, 5, 6, 7, 8, 9].filter (fun d => ¬ (alternative.map root).contains d)) = [2, 3, 5, 8]
|
|
97
|
+
∧ alternative.length = defining.length := by decide
|
|
98
|
+
|
|
99
|
+
-- ── THE LIMIT: THE ROOT IS A PROPERTY OF THE NUMERAL, NOT OF LIGHT ──────────────────────────────────────
|
|
100
|
+
-- If the digital root of c said something about light, it could not depend on the unit chosen to write c in.
|
|
101
|
+
-- It does. Doubling the numeral moves the root; scaling by a power of ten does not. So the root tracks
|
|
102
|
+
-- decimal notation in a chosen unit — and the metre is DEFINED to make this particular numeral come out.
|
|
103
|
+
theorem the_root_moves_with_the_unit_so_it_is_not_about_light :
|
|
104
|
+
root c = 1 ∧ root (2 * c) = 2 ∧ root (100 * c) = 1 := by decide
|
|
105
|
+
|
|
106
|
+
-- ── THE REFUSAL, as a theorem so it is checked and not merely written ───────────────────────────────────
|
|
107
|
+
-- Every number in this file is a definition adopted by a committee. No proposition here measures a
|
|
108
|
+
-- quantity, predicts an observation, or constrains a physical theory, and none could: arithmetic on a
|
|
109
|
+
-- definition returns the definition.
|
|
110
|
+
-- ── THE CLAIM, STATED BOLDLY, WITH THE COMPUTATION THAT BREAKS IT ──────────────────────────────────────
|
|
111
|
+
-- THE SEVEN SI DEFINING CONSTANTS HAVE DIGITAL ROOTS 1, 9, 6, 9, 4, 1, 8 — AND THE FOUR RESIDUES THEY NEVER
|
|
112
|
+
-- REACH ARE EXACTLY THE PRIMES BELOW NINE: 2, 3, 5, 7.
|
|
113
|
+
--
|
|
114
|
+
-- That is a claim about the actual SI system as the CGPM fixed it, not about a toy. Every numeral here is
|
|
115
|
+
-- the committee's own: c = 299792458, ΔνCs = 9192631770, h, e, k, N_A, K_cd. `the_roots_of_the_seven` and
|
|
116
|
+
-- `the_absent_residues_are_the_primes_below_nine` decide it over the real values, so a critic who disputes
|
|
117
|
+
-- it computes the digital roots and shows a different list. Nothing here hides behind hedging.
|
|
118
|
+
--
|
|
119
|
+
-- AND THE FALSIFIER IS ALREADY PROVED, IN THIS FILE, DIRECTLY BELOW THE CLAIM.
|
|
120
|
+
-- `and_a_change_of_unit_destroys_it` expresses K_cd against a unit half the size — the same luminous
|
|
121
|
+
-- efficacy, a different numeral — and the four absent residues become 2, 3, 5, 8. The primes are gone.
|
|
122
|
+
-- `the_root_moves_with_the_unit_so_it_is_not_about_light` shows the same for c.
|
|
123
|
+
--
|
|
124
|
+
-- So the claim stands with its own defeater attached: THE PATTERN IS REAL IN SI AND IS A PROPERTY OF THE
|
|
125
|
+
-- CHOSEN UNITS, NOT OF NATURE. A critic does not need to find the weakness — it is stated, decided, and
|
|
126
|
+
-- published beside the claim it limits. That is what makes the bold form honest rather than reckless.
|
|
127
|
+
--
|
|
128
|
+
-- What is NOT claimed, because nothing here decides it: that the pattern predicts an observation, constrains
|
|
129
|
+
-- a physical theory, or would survive a different unit system. It would not, and the file proves it. That declaration stood here and was deleted: a
|
|
130
|
+
-- literal decided against itself is green whatever the file says, so it could never carry a refusal. What a
|
|
131
|
+
-- proposition mentions is a property of the source text, and `contradictions.ts` is where that is checked.
|
|
132
|
+
theorem the_definitions_are_seven_and_travel_fixes_zero :
|
|
133
|
+
defining.length = 7 ∧ travel 0 = 0 := by decide
|
|
134
|
+
|
|
135
|
+
end Light
|