@ceccec/millennium-solutions 9.2.9 → 9.3.0

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/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 **2658** ledger entries and **59** domains, recomputed each build. The advantage is
10
+ > Generated from the **2667** 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.
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 2658 receipts by the digital root of their address, the **sparsest** region is digit
37
- **3** (269) — a candidate area to examine, not a finding. The ledger is currently held
38
- at **2658** (the captain's cap): improving a theorem's name or proof heals the record without changing the
36
+ Grouping the 2667 receipts by the digital root of their address, the **sparsest** region is digit
37
+ **3** (270) — a candidate area to examine, not a finding. The ledger is currently held
38
+ at **2667** (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**.
@@ -19041,5 +19041,50 @@
19041
19041
  "key": "lean_nim_the_nim_sum_is_a_gf2_vector_addition_for_every_a_b_c",
19042
19042
  "name": "lean nim.lean: the_nim_sum_is_a_gf2_vector_addition_for_every_a_b_c — ∀ a b c : Nat, xorN a b = xorN b a ∧ xorN (xorN a b) c = xorN a (xorN b c) ∧ xorN (xorN a b) b = a ∧ xorN a 0 = a — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
19043
19043
  "receipt": "caa5c327-62cf-8171-9507-6453cfdaed0c"
19044
+ },
19045
+ {
19046
+ "key": "lean_sequences_a_bit_sum_over_one_more_position_adds_that_bit",
19047
+ "name": "lean sequences.lean: a_bit_sum_over_one_more_position_adds_that_bit — ∀ F m : Nat, (List.range (F + 1)).foldl (fun a i => a + m / 2 ^ i % 2) 0 = (List.range F).foldl (fun a i => a + m / 2 ^ i % 2) 0 + m / 2 ^ F % 2 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
19048
+ "receipt": "f5e71d05-068c-8beb-8470-541d3b4e8e8f"
19049
+ },
19050
+ {
19051
+ "key": "lean_sequences_halving_shifts_every_bit_down_by_one",
19052
+ "name": "lean sequences.lean: halving_shifts_every_bit_down_by_one — ∀ m i : Nat, m / 2 ^ (i + 1) = m / 2 / 2 ^ i — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
19053
+ "receipt": "a5201a6e-8f86-8eba-b004-a9c565b42613"
19054
+ },
19055
+ {
19056
+ "key": "lean_sequences_the_bits_of_a_number_are_its_low_bit_then_the_bits_of_its_half",
19057
+ "name": "lean sequences.lean: the_bits_of_a_number_are_its_low_bit_then_the_bits_of_its_half — ∀ F m : Nat, (List.range (F + 1)).foldl (fun a i => a + m / 2 ^ i % 2) 0 = m % 2 + (List.range F).foldl (fun a i => a + m / 2 / 2 ^ i % 2) 0 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
19058
+ "receipt": "2c2dcdbf-8b9f-8899-a682-4e33aabab23a"
19059
+ },
19060
+ {
19061
+ "key": "lean_sequences_bits_above_the_number_add_nothing",
19062
+ "name": "lean sequences.lean: bits_above_the_number_add_nothing — ∀ k F n : Nat, n < 2 ^ F → (List.range (F + k)).foldl (fun a i => a + n / 2 ^ i % 2) 0 = (List.range F).foldl (fun a i => a + n / 2 ^ i % 2) 0 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
19063
+ "receipt": "77439845-748b-811f-9015-a2c92709f76b"
19064
+ },
19065
+ {
19066
+ "key": "lean_sequences_a_number_is_below_two_to_its_own_power",
19067
+ "name": "lean sequences.lean: a_number_is_below_two_to_its_own_power — ∀ n : Nat, n < 2 ^ n — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
19068
+ "receipt": "4f5a709a-5de5-8424-881d-0c2675c278b0"
19069
+ },
19070
+ {
19071
+ "key": "lean_sequences_a_number_is_below_two_to_its_own_successor",
19072
+ "name": "lean sequences.lean: a_number_is_below_two_to_its_own_successor — ∀ n : Nat, n < 2 ^ (n + 1) — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
19073
+ "receipt": "586b3088-ac85-8e47-84f8-d82edb5f5aba"
19074
+ },
19075
+ {
19076
+ "key": "lean_sequences_doubling_preserves_the_bit_count_for_every_n",
19077
+ "name": "lean sequences.lean: doubling_preserves_the_bit_count_for_every_n — ∀ n : Nat, popcount (2 * n) = popcount n — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
19078
+ "receipt": "7006c6f5-3c8d-8158-a54e-6619e289159e"
19079
+ },
19080
+ {
19081
+ "key": "lean_sequences_the_odd_step_sets_exactly_one_further_bit_for_every_n",
19082
+ "name": "lean sequences.lean: the_odd_step_sets_exactly_one_further_bit_for_every_n — ∀ n : Nat, popcount (2 * n + 1) = popcount n + 1 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
19083
+ "receipt": "d9da9f38-b47d-836c-8b32-84ce53c93e9c"
19084
+ },
19085
+ {
19086
+ "key": "lean_sequences_thue_morse_doubling_recurrence_for_every_n",
19087
+ "name": "lean sequences.lean: thue_morse_doubling_recurrence_for_every_n — ∀ n : Nat, tm (2 * n) = tm n ∧ tm (2 * n + 1) = 1 - tm n — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
19088
+ "receipt": "50c8ad36-d08a-835c-8d63-559ac849c2cc"
19044
19089
  }
19045
19090
  ]
@@ -1,5 +1,6 @@
1
1
  import Fnv
2
2
  set_option maxRecDepth 4000000
3
+ set_option maxHeartbeats 2000000
3
4
  -- title: Sequences
4
5
  -- wing: the ring
5
6
  -- prior_art: named
@@ -79,13 +80,15 @@ theorem pisano_twentyfour_is_four_sixes :
79
80
  -- Withdrawn for want of a proof, not because it is false — and it HAS a decidable form. t(n) is the parity
80
81
  -- of the 1-bits of n. Doubling shifts every bit one place and introduces no new one, so the popcount is
81
82
  -- unchanged and t(2n) = t(n). 2n+1 sets exactly one further bit, so the parity flips: t(2n+1) = 1 − t(n).
82
- -- Both are decided below over a stated finite domain, which is what the withdrawal said was missing.
83
- def popcount (n : Nat) : Nat := (List.range 12).foldl (fun a i => a + n / 2 ^ i % 2) 0
83
+ -- Both are decided below over a stated finite domain, which is what the withdrawal said was missing, and
84
+ -- proved for every n at the end of this file.
85
+ -- The fuel is n + 1, which covers every bit of every n (n < 2^(n+1)); the earlier fuel of 12 counted only the
86
+ -- low twelve bits — a cap every statement here had to stay under.
87
+ def popcount (n : Nat) : Nat := (List.range (n + 1)).foldl (fun a i => a + n / 2 ^ i % 2) 0
84
88
  def tm (n : Nat) : Nat := popcount n % 2
85
89
 
86
- -- Domain: n < 200, so 2n+1 < 400 < 2^12 = 4096 and the twelve-bit popcount is exact over every value the
87
- -- statement touches. The bound is stated rather than assumed, because a popcount that silently truncated
88
- -- would make this hold for the wrong reason.
90
+ -- Domain: n < 200 — the decided instance of the law proved for every n at the end of this file. The popcount
91
+ -- no longer stops at twelve bits, so no statement here can hold for the wrong reason at any size.
89
92
  theorem thue_morse_doubling_recurrence :
90
93
  (List.range 200).all (fun n => tm (2 * n) == tm n && tm (2 * n + 1) == 1 - tm n) := by decide
91
94
 
@@ -133,4 +136,84 @@ theorem cassinis_identity_for_every_m :
133
136
  try simp only [Nat.mul_comm _ (OfNat.ofNat _), Nat.mul_left_comm _ (OfNat.ofNat _), Nat.reduceMul] at *
134
137
  all_goals omega
135
138
 
139
+
140
+ -- ── the popcount rows above, proved for every n — no bound ───────────────────────────────────────────────
141
+ -- thue_morse_doubling_recurrence, doubling_preserves_the_parity_of_the_bits and the_odd_step_sets_exactly_one_
142
+ -- further_bit were decided over n < 200; these prove them for every n. The bits of m are its low bit and then the
143
+ -- bits of m / 2; positions above the number add nothing; so doubling keeps the count and the odd step adds one.
144
+ theorem a_bit_sum_over_one_more_position_adds_that_bit :
145
+ ∀ F m : Nat, (List.range (F + 1)).foldl (fun a i => a + m / 2 ^ i % 2) 0 =
146
+ (List.range F).foldl (fun a i => a + m / 2 ^ i % 2) 0 + m / 2 ^ F % 2 := by
147
+ intro F m
148
+ rw [List.range_succ, List.foldl_append]
149
+ rfl
150
+
151
+ theorem halving_shifts_every_bit_down_by_one : ∀ m i : Nat, m / 2 ^ (i + 1) = m / 2 / 2 ^ i := by
152
+ intro m i
153
+ rw [Nat.div_div_eq_div_mul, Nat.pow_succ, Nat.mul_comm]
154
+
155
+ theorem the_bits_of_a_number_are_its_low_bit_then_the_bits_of_its_half :
156
+ ∀ F m : Nat, (List.range (F + 1)).foldl (fun a i => a + m / 2 ^ i % 2) 0 =
157
+ m % 2 + (List.range F).foldl (fun a i => a + m / 2 / 2 ^ i % 2) 0 := by
158
+ intro F
159
+ induction F with
160
+ | zero => intro m; show 0 + m / 2 ^ 0 % 2 = m % 2 + 0; rw [Nat.pow_zero, Nat.div_one]; omega
161
+ | succ F ih =>
162
+ intro m
163
+ rw [a_bit_sum_over_one_more_position_adds_that_bit (F + 1) m, ih m,
164
+ a_bit_sum_over_one_more_position_adds_that_bit F (m / 2), halving_shifts_every_bit_down_by_one]
165
+ omega
166
+
167
+ theorem bits_above_the_number_add_nothing :
168
+ ∀ k F n : Nat, n < 2 ^ F → (List.range (F + k)).foldl (fun a i => a + n / 2 ^ i % 2) 0 =
169
+ (List.range F).foldl (fun a i => a + n / 2 ^ i % 2) 0 := by
170
+ intro k
171
+ induction k with
172
+ | zero => intro F n _; rfl
173
+ | succ k ih =>
174
+ intro F n h
175
+ rw [← Nat.add_assoc, a_bit_sum_over_one_more_position_adds_that_bit, ih F n h]
176
+ have hp : 2 ^ F ≤ 2 ^ (F + k) := Nat.pow_le_pow_right (by decide) (Nat.le_add_right F k)
177
+ rw [Nat.div_eq_of_lt (by omega), Nat.zero_mod, Nat.add_zero]
178
+
179
+ theorem a_number_is_below_two_to_its_own_power : ∀ n : Nat, n < 2 ^ n := by
180
+ intro n
181
+ induction n with
182
+ | zero => decide
183
+ | succ n ih =>
184
+ rw [Nat.pow_succ]
185
+ omega
186
+
187
+ theorem a_number_is_below_two_to_its_own_successor : ∀ n : Nat, n < 2 ^ (n + 1) := by
188
+ intro n
189
+ have h := a_number_is_below_two_to_its_own_power n
190
+ rw [Nat.pow_succ]
191
+ omega
192
+
193
+ theorem doubling_preserves_the_bit_count_for_every_n : ∀ n : Nat, popcount (2 * n) = popcount n := by
194
+ intro n
195
+ unfold popcount
196
+ rw [the_bits_of_a_number_are_its_low_bit_then_the_bits_of_its_half (2 * n) (2 * n),
197
+ show 2 * n / 2 = n by omega, show 2 * n % 2 = 0 by omega, Nat.zero_add]
198
+ cases n with
199
+ | zero => rfl
200
+ | succ m =>
201
+ have hlt : m + 1 < 2 ^ (m + 1 + 1) := a_number_is_below_two_to_its_own_successor (m + 1)
202
+ rw [show 2 * (m + 1) = m + 1 + 1 + m by omega, bits_above_the_number_add_nothing m (m + 1 + 1) (m + 1) hlt]
203
+
204
+ theorem the_odd_step_sets_exactly_one_further_bit_for_every_n : ∀ n : Nat, popcount (2 * n + 1) = popcount n + 1 := by
205
+ intro n
206
+ unfold popcount
207
+ rw [the_bits_of_a_number_are_its_low_bit_then_the_bits_of_its_half (2 * n + 1) (2 * n + 1),
208
+ show (2 * n + 1) / 2 = n by omega, show (2 * n + 1) % 2 = 1 by omega]
209
+ have hlt : n < 2 ^ (n + 1) := a_number_is_below_two_to_its_own_successor n
210
+ rw [show 2 * n + 1 = n + 1 + n by omega, bits_above_the_number_add_nothing n (n + 1) n hlt]
211
+ omega
212
+
213
+ theorem thue_morse_doubling_recurrence_for_every_n : ∀ n : Nat, tm (2 * n) = tm n ∧ tm (2 * n + 1) = 1 - tm n := by
214
+ intro n
215
+ unfold tm
216
+ rw [doubling_preserves_the_bit_count_for_every_n, the_odd_step_sets_exactly_one_further_bit_for_every_n]
217
+ exact ⟨rfl, by omega⟩
218
+
136
219
  end Sequences
@@ -15946,5 +15946,59 @@
15946
15946
  "verdict": "UNVERIFIED",
15947
15947
  "ground": "no candidate in the current space — nothing to recompute",
15948
15948
  "receipt": "caa5c327-62cf-8171-9507-6453cfdaed0c"
15949
+ },
15950
+ {
15951
+ "key": "lean_sequences_a_bit_sum_over_one_more_position_adds_that_bit",
15952
+ "verdict": "UNVERIFIED",
15953
+ "ground": "no candidate in the current space — nothing to recompute",
15954
+ "receipt": "f5e71d05-068c-8beb-8470-541d3b4e8e8f"
15955
+ },
15956
+ {
15957
+ "key": "lean_sequences_halving_shifts_every_bit_down_by_one",
15958
+ "verdict": "UNVERIFIED",
15959
+ "ground": "no candidate in the current space — nothing to recompute",
15960
+ "receipt": "a5201a6e-8f86-8eba-b004-a9c565b42613"
15961
+ },
15962
+ {
15963
+ "key": "lean_sequences_the_bits_of_a_number_are_its_low_bit_then_the_bits_of_its_half",
15964
+ "verdict": "UNVERIFIED",
15965
+ "ground": "no candidate in the current space — nothing to recompute",
15966
+ "receipt": "2c2dcdbf-8b9f-8899-a682-4e33aabab23a"
15967
+ },
15968
+ {
15969
+ "key": "lean_sequences_bits_above_the_number_add_nothing",
15970
+ "verdict": "UNVERIFIED",
15971
+ "ground": "no candidate in the current space — nothing to recompute",
15972
+ "receipt": "77439845-748b-811f-9015-a2c92709f76b"
15973
+ },
15974
+ {
15975
+ "key": "lean_sequences_a_number_is_below_two_to_its_own_power",
15976
+ "verdict": "UNVERIFIED",
15977
+ "ground": "no candidate in the current space — nothing to recompute",
15978
+ "receipt": "4f5a709a-5de5-8424-881d-0c2675c278b0"
15979
+ },
15980
+ {
15981
+ "key": "lean_sequences_a_number_is_below_two_to_its_own_successor",
15982
+ "verdict": "UNVERIFIED",
15983
+ "ground": "no candidate in the current space — nothing to recompute",
15984
+ "receipt": "586b3088-ac85-8e47-84f8-d82edb5f5aba"
15985
+ },
15986
+ {
15987
+ "key": "lean_sequences_doubling_preserves_the_bit_count_for_every_n",
15988
+ "verdict": "UNVERIFIED",
15989
+ "ground": "no candidate in the current space — nothing to recompute",
15990
+ "receipt": "7006c6f5-3c8d-8158-a54e-6619e289159e"
15991
+ },
15992
+ {
15993
+ "key": "lean_sequences_the_odd_step_sets_exactly_one_further_bit_for_every_n",
15994
+ "verdict": "UNVERIFIED",
15995
+ "ground": "no candidate in the current space — nothing to recompute",
15996
+ "receipt": "d9da9f38-b47d-836c-8b32-84ce53c93e9c"
15997
+ },
15998
+ {
15999
+ "key": "lean_sequences_thue_morse_doubling_recurrence_for_every_n",
16000
+ "verdict": "UNVERIFIED",
16001
+ "ground": "no candidate in the current space — nothing to recompute",
16002
+ "receipt": "50c8ad36-d08a-835c-8d63-559ac849c2cc"
15949
16003
  }
15950
16004
  ]