@ceccec/millennium-solutions 9.2.4 → 9.2.6
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/ACCOUNTING.md +7 -7
- package/AXIOMS.md +11 -11
- package/CHALLENGES.md +57 -3
- package/PRIOR-ART.md +19 -19
- package/README.md +27 -27
- package/dashboard.md +1 -1
- package/forensic.md +3 -3
- package/index.md +27 -27
- package/package.json +3 -1
- package/paper.md +802 -572
- package/speedup.md +4 -4
- package/src/api/gates.ts +2 -0
- package/src/proof/demand.lean +22 -0
- package/src/proof/demand3.lean +60 -0
- package/src/proof/discovered.json +135 -0
- package/src/proof/elementary.lean +25 -0
- package/src/proof/energy.lean +9 -0
- package/src/proof/families.lean +35 -3
- package/src/proof/mechanical.lean +34 -0
- package/src/proof/novelty.json +751 -0
- package/src/proof/reversal.lean +75 -0
- package/src/proof/split.lean +8 -0
- package/src/proof/trial-all.json +162 -0
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 **
|
|
10
|
+
> Generated from the **2607** 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
|
|
37
|
-
**3** (
|
|
38
|
-
at **
|
|
36
|
+
Grouping the 2607 receipts by the digital root of their address, the **sparsest** region is digit
|
|
37
|
+
**3** (265) — a candidate area to examine, not a finding. The ledger is currently held
|
|
38
|
+
at **2607** (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**.
|
package/src/api/gates.ts
CHANGED
|
@@ -102,6 +102,8 @@ export const UNRUN_BY_DESIGN: Record<string, string> = {
|
|
|
102
102
|
'verify-theorems': 'covered by gates-fire, and its subject is re-verified by forensics on every commit',
|
|
103
103
|
uses: 'discovery, not a gate: it reaches GDELT, Hacker News, Zenodo, OpenAlex, npm and GitHub, and what it finds is someone else\'s use of the work — whether it cites and pays — not a defect in this tree. It runs weekly in .github/workflows/uses.yml and reports in the run summary; it refuses only when no source measured anything',
|
|
104
104
|
'uses-mail': 'delivery, not a gate: it mails each lead uses.ts found to legal@psg.bg as an evidence dossier, from rights@uuidna.com through mail.psg.bg by authenticated SMTP — network and the author\'s credentials, so no build chain can run it. It runs weekly after uses.ts in .github/workflows/uses.yml, says NOT CONFIGURED when the SMTP secrets are unset, and refuses only when a send fails',
|
|
105
|
+
novelty: 'discovery, not a gate: it reaches the OEIS, zbMATH Open, OpenAlex, Crossref and arXiv to search the literature for each theorem, and records what was searched and what came back in src/proof/novelty.json — network a build about this tree must not depend on',
|
|
106
|
+
clusters: 'a generator, not a gate: it prepares one publication draft per proven cluster in .zenodo/clusters/ and reaches no network; it refuses only when a joint address fails to bind every receipt, which forensics and the seal already check on every run',
|
|
105
107
|
probe: 'the control harness, not a gate: it takes a file, a theorem and a mutation as arguments, so no chain can run it bare; gates-fire holds its control — a mutation that never reaches the theorem must be refused',
|
|
106
108
|
}
|
|
107
109
|
|
package/src/proof/demand.lean
CHANGED
|
@@ -109,4 +109,26 @@ theorem factorial_seven_is_five_thousand_and_forty :
|
|
|
109
109
|
theorem mantels_bound_is_n_squared_over_four :
|
|
110
110
|
(List.range' 1 20).all (fun n => (n / 2) * (n - n / 2) == n * n / 4) := by decide
|
|
111
111
|
|
|
112
|
+
|
|
113
|
+
-- ── the capped row above, proved for every value — no bound ───────────────────────────────────────────────────
|
|
114
|
+
-- mantels_bound_is_n_squared_over_four checked 1 ≤ n ≤ 20; this proves the identity for every n.
|
|
115
|
+
theorem mantels_bound_is_n_squared_over_four_for_every_n :
|
|
116
|
+
∀ n : Nat, (n / 2) * (n - n / 2) = n * n / 4 := by
|
|
117
|
+
intro n
|
|
118
|
+
rcases Nat.mod_two_eq_zero_or_one n with h | h
|
|
119
|
+
· obtain ⟨m, rfl⟩ : ∃ m, n = 2 * m := ⟨n / 2, by omega⟩
|
|
120
|
+
have h1 : 2 * m / 2 = m := by omega
|
|
121
|
+
have h2 : 2 * m * (2 * m) = 4 * (m * m) := by
|
|
122
|
+
rw [Nat.mul_assoc 2 m (2 * m), Nat.mul_comm m (2 * m), Nat.mul_assoc 2 m m]; omega
|
|
123
|
+
rw [h1, show 2 * m - m = m by omega, h2]
|
|
124
|
+
omega
|
|
125
|
+
· obtain ⟨m, rfl⟩ : ∃ m, n = 2 * m + 1 := ⟨n / 2, by omega⟩
|
|
126
|
+
have h1 : (2 * m + 1) / 2 = m := by omega
|
|
127
|
+
have h2 : (2 * m + 1) * (2 * m + 1) = 4 * (m * (m + 1)) + 1 := by
|
|
128
|
+
rw [Nat.mul_add m m 1, Nat.mul_one, Nat.add_mul, Nat.mul_add, Nat.mul_add, Nat.mul_one, Nat.one_mul]
|
|
129
|
+
rw [Nat.mul_assoc 2 m (2 * m), Nat.mul_comm m (2 * m), Nat.mul_assoc 2 m m]
|
|
130
|
+
omega
|
|
131
|
+
rw [h1, show 2 * m + 1 - m = m + 1 by omega, h2]
|
|
132
|
+
omega
|
|
133
|
+
|
|
112
134
|
end Demand
|
package/src/proof/demand3.lean
CHANGED
|
@@ -114,4 +114,64 @@ theorem havel_hakimi_decides_graphical_sequences :
|
|
|
114
114
|
hh 12 [3, 3, 3, 3] = true ∧ hh 12 [2, 2, 2] = true ∧
|
|
115
115
|
hh 12 [3, 3, 1, 1] = false ∧ hh 12 [4, 1, 1, 1, 1] = true ∧ hh 12 [5, 1, 1, 1, 1] = false := by decide
|
|
116
116
|
|
|
117
|
+
|
|
118
|
+
-- ── the capped rows above, proved for every value by induction — no bound ────────────────────────────────────
|
|
119
|
+
-- the_euler_characteristic_of_a_genus_g_surface checked g < 12; this proves χ(g) + 2g = 2 for every g.
|
|
120
|
+
theorem the_euler_characteristic_of_a_genus_g_surface_for_every_g :
|
|
121
|
+
∀ g : Nat, chi g + 2 * (g : Int) = 2 := by
|
|
122
|
+
intro g
|
|
123
|
+
unfold chi
|
|
124
|
+
omega
|
|
125
|
+
|
|
126
|
+
theorem a_repunit_has_the_residue_of_its_length_mod_three : ∀ n : Nat, repunit n % 3 = n % 3 := by
|
|
127
|
+
intro n
|
|
128
|
+
induction n with
|
|
129
|
+
| zero => rfl
|
|
130
|
+
| succ n ih =>
|
|
131
|
+
show (10 * repunit n + 1) % 3 = (n + 1) % 3
|
|
132
|
+
rw [Nat.add_mod, Nat.mul_mod, ih]
|
|
133
|
+
have h : n % 3 = 0 ∨ n % 3 = 1 ∨ n % 3 = 2 := by omega
|
|
134
|
+
rcases h with h | h | h <;> simp [h] <;> omega
|
|
135
|
+
|
|
136
|
+
-- repunit_divisibility_by_three_and_seven checked n ≤ 18; these prove both halves for every n.
|
|
137
|
+
theorem a_repunit_is_divisible_by_three_exactly_when_its_length_is_for_every_n :
|
|
138
|
+
∀ n : Nat, (repunit n % 3 = 0) ↔ (n % 3 = 0) := by
|
|
139
|
+
intro n
|
|
140
|
+
rw [a_repunit_has_the_residue_of_its_length_mod_three]
|
|
141
|
+
|
|
142
|
+
theorem repunit_of_a_sum : ∀ n k : Nat, repunit (n + k) = 10 ^ k * repunit n + repunit k := by
|
|
143
|
+
intro n k
|
|
144
|
+
induction k with
|
|
145
|
+
| zero => simp [repunit]
|
|
146
|
+
| succ k ih =>
|
|
147
|
+
show 10 * repunit (n + k) + 1 = 10 ^ (k + 1) * repunit n + (10 * repunit k + 1)
|
|
148
|
+
rw [ih, Nat.pow_succ, Nat.mul_add, ← Nat.mul_assoc, Nat.mul_comm 10 (10 ^ k)]
|
|
149
|
+
omega
|
|
150
|
+
|
|
151
|
+
theorem repunits_repeat_mod_seven_every_six_digits : ∀ n : Nat, repunit (n + 6) % 7 = repunit n % 7 := by
|
|
152
|
+
intro n
|
|
153
|
+
rw [repunit_of_a_sum, Nat.add_mod, Nat.mul_mod]
|
|
154
|
+
have h1 : 10 ^ 6 % 7 = 1 := by decide
|
|
155
|
+
have h2 : repunit 6 % 7 = 0 := by decide
|
|
156
|
+
rw [h1, h2, Nat.one_mul, Nat.add_zero]
|
|
157
|
+
omega
|
|
158
|
+
|
|
159
|
+
theorem a_repunit_has_the_residue_of_its_length_mod_six_mod_seven : ∀ n : Nat, repunit n % 7 = repunit (n % 6) % 7 := by
|
|
160
|
+
intro n
|
|
161
|
+
induction n using Nat.strongRecOn with
|
|
162
|
+
| _ n ih =>
|
|
163
|
+
if hn : n < 6 then rw [Nat.mod_eq_of_lt hn]
|
|
164
|
+
else
|
|
165
|
+
have e : n = (n - 6) + 6 := by omega
|
|
166
|
+
rw [e, repunits_repeat_mod_seven_every_six_digits, ih (n - 6) (by omega), Nat.add_mod_right]
|
|
167
|
+
|
|
168
|
+
theorem a_repunit_is_divisible_by_seven_exactly_when_six_divides_its_length_for_every_n :
|
|
169
|
+
∀ n : Nat, (repunit n % 7 = 0) ↔ (n % 6 = 0) := by
|
|
170
|
+
intro n
|
|
171
|
+
rw [a_repunit_has_the_residue_of_its_length_mod_six_mod_seven]
|
|
172
|
+
have h : n % 6 < 6 := Nat.mod_lt _ (by decide)
|
|
173
|
+
generalize n % 6 = j at h ⊢
|
|
174
|
+
revert j
|
|
175
|
+
decide
|
|
176
|
+
|
|
117
177
|
end Demand3
|
|
@@ -18651,5 +18651,140 @@
|
|
|
18651
18651
|
"key": "lean_flow_navier_stokes_flow_is_bounded_for_every_step",
|
|
18652
18652
|
"name": "lean flow.lean: navier_stokes_flow_is_bounded_for_every_step — ∀ k : Nat, orbit k < 9 ∧ span.contains (orbit k) = true — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18653
18653
|
"receipt": "6dec28f9-502b-86ee-8f87-d09f701ed7e7"
|
|
18654
|
+
},
|
|
18655
|
+
{
|
|
18656
|
+
"key": "lean_demand_mantels_bound_is_n_squared_over_four_for_every_n",
|
|
18657
|
+
"name": "lean demand.lean: mantels_bound_is_n_squared_over_four_for_every_n — ∀ n : Nat, (n / 2) * (n - n / 2) = n * n / 4 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18658
|
+
"receipt": "b9212e56-a3ea-8d6d-be87-f946b87d6b6c"
|
|
18659
|
+
},
|
|
18660
|
+
{
|
|
18661
|
+
"key": "lean_demand3_the_euler_characteristic_of_a_genus_g_surface_for_every_g",
|
|
18662
|
+
"name": "lean demand3.lean: the_euler_characteristic_of_a_genus_g_surface_for_every_g — ∀ g : Nat, chi g + 2 * (g : Int) = 2 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18663
|
+
"receipt": "a1a899d7-b3c5-8941-b02c-55f111d49fca"
|
|
18664
|
+
},
|
|
18665
|
+
{
|
|
18666
|
+
"key": "lean_demand3_a_repunit_has_the_residue_of_its_length_mod_three",
|
|
18667
|
+
"name": "lean demand3.lean: a_repunit_has_the_residue_of_its_length_mod_three — ∀ n : Nat, repunit n % 3 = n % 3 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18668
|
+
"receipt": "732113b8-a6d4-8b14-8681-6f31d2a78e30"
|
|
18669
|
+
},
|
|
18670
|
+
{
|
|
18671
|
+
"key": "lean_demand3_a_repunit_is_divisible_by_three_exactly_when_its_length_is_for_every_n",
|
|
18672
|
+
"name": "lean demand3.lean: a_repunit_is_divisible_by_three_exactly_when_its_length_is_for_every_n — ∀ n : Nat, (repunit n % 3 = 0) ↔ (n % 3 = 0) — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18673
|
+
"receipt": "93c43bd9-4707-8199-be02-c954c8916904"
|
|
18674
|
+
},
|
|
18675
|
+
{
|
|
18676
|
+
"key": "lean_demand3_repunit_of_a_sum",
|
|
18677
|
+
"name": "lean demand3.lean: repunit_of_a_sum — ∀ n k : Nat, repunit (n + k) = 10 ^ k * repunit n + repunit k — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18678
|
+
"receipt": "5558e77e-438c-84e4-9a58-2520685771a3"
|
|
18679
|
+
},
|
|
18680
|
+
{
|
|
18681
|
+
"key": "lean_demand3_repunits_repeat_mod_seven_every_six_digits",
|
|
18682
|
+
"name": "lean demand3.lean: repunits_repeat_mod_seven_every_six_digits — ∀ n : Nat, repunit (n + 6) % 7 = repunit n % 7 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18683
|
+
"receipt": "a67a8eec-997b-86f2-adbe-b77355dafc70"
|
|
18684
|
+
},
|
|
18685
|
+
{
|
|
18686
|
+
"key": "lean_demand3_a_repunit_has_the_residue_of_its_length_mod_six_mod_seven",
|
|
18687
|
+
"name": "lean demand3.lean: a_repunit_has_the_residue_of_its_length_mod_six_mod_seven — ∀ n : Nat, repunit n % 7 = repunit (n % 6) % 7 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18688
|
+
"receipt": "ec5bf7fe-1dd8-863d-8443-8682088d254b"
|
|
18689
|
+
},
|
|
18690
|
+
{
|
|
18691
|
+
"key": "lean_demand3_a_repunit_is_divisible_by_seven_exactly_when_six_divides_its_length_for_every_n",
|
|
18692
|
+
"name": "lean demand3.lean: a_repunit_is_divisible_by_seven_exactly_when_six_divides_its_length_for_every_n — ∀ n : Nat, (repunit n % 7 = 0) ↔ (n % 6 = 0) — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18693
|
+
"receipt": "2bb98278-186d-8284-9c6e-9c9e74177679"
|
|
18694
|
+
},
|
|
18695
|
+
{
|
|
18696
|
+
"key": "lean_elementary_the_interior_and_exterior_angles_are_n_straight_angles_for_every_n",
|
|
18697
|
+
"name": "lean elementary.lean: the_interior_and_exterior_angles_are_n_straight_angles_for_every_n — ∀ n : Nat, 2 ≤ n → (n - 2) * 180 + 360 = n * 180 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18698
|
+
"receipt": "d1fbd7f1-d1df-8c7f-bb56-d565780d1db2"
|
|
18699
|
+
},
|
|
18700
|
+
{
|
|
18701
|
+
"key": "lean_elementary_a_product_of_consecutive_numbers_is_even",
|
|
18702
|
+
"name": "lean elementary.lean: a_product_of_consecutive_numbers_is_even — ∀ n : Nat, n * (n + 1) % 2 = 0 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18703
|
+
"receipt": "cf763033-1ed3-82d8-866e-88ea2a38b2d1"
|
|
18704
|
+
},
|
|
18705
|
+
{
|
|
18706
|
+
"key": "lean_elementary_eight_times_a_triangular_number_plus_one_is_an_odd_square_for_every_n",
|
|
18707
|
+
"name": "lean elementary.lean: eight_times_a_triangular_number_plus_one_is_an_odd_square_for_every_n — ∀ n : Nat, 8 * (n * (n + 1) / 2) + 1 = (2 * n + 1) * (2 * n + 1) — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18708
|
+
"receipt": "1aa59ef6-880c-8e39-b946-1b88e426040e"
|
|
18709
|
+
},
|
|
18710
|
+
{
|
|
18711
|
+
"key": "lean_energy_two_parts_in_three_is_two_thirds_at_every_scale_for_every_m",
|
|
18712
|
+
"name": "lean energy.lean: two_parts_in_three_is_two_thirds_at_every_scale_for_every_m — ∀ m : Nat, 0 < m → pct (2 * m) (3 * m) = 66 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18713
|
+
"receipt": "9177c3d3-8280-8d65-9df5-c27b42454279"
|
|
18714
|
+
},
|
|
18715
|
+
{
|
|
18716
|
+
"key": "lean_families_the_powers_of_two_sum_to_one_less_than_the_next_for_every_n",
|
|
18717
|
+
"name": "lean families.lean: the_powers_of_two_sum_to_one_less_than_the_next_for_every_n — ∀ n : Nat, ((List.range (n + 1)).map (fun i => 2 ^ i)).foldl (· + ·) 0 = 2 ^ (n + 1) - 1 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18718
|
+
"receipt": "3cab57ca-4d36-8f80-a221-21c11d25adc9"
|
|
18719
|
+
},
|
|
18720
|
+
{
|
|
18721
|
+
"key": "lean_families_square_of_successor",
|
|
18722
|
+
"name": "lean families.lean: square_of_successor — ∀ n : Nat, (n + 1) * (n + 1) = n * n + 2 * n + 1 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18723
|
+
"receipt": "f9826dc5-b85d-8a85-800b-f6027e83a0cf"
|
|
18724
|
+
},
|
|
18725
|
+
{
|
|
18726
|
+
"key": "lean_families_the_first_n_odd_numbers_sum_to_n_squared_for_every_n",
|
|
18727
|
+
"name": "lean families.lean: the_first_n_odd_numbers_sum_to_n_squared_for_every_n — ∀ n : Nat, ((List.range n).map (fun i => 2 * i + 1)).foldl (· + ·) 0 = n * n — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18728
|
+
"receipt": "7baff487-adea-8866-9d67-71fbbb0cdee6"
|
|
18729
|
+
},
|
|
18730
|
+
{
|
|
18731
|
+
"key": "lean_mechanical_consecutive_squares_differ_by_the_odd_numbers",
|
|
18732
|
+
"name": "lean mechanical.lean: consecutive_squares_differ_by_the_odd_numbers — ∀ n : Nat, (n + 1) ^ 2 - n * n = 2 * n + 1 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18733
|
+
"receipt": "65131201-9df7-8805-8427-c1407fcd92cf"
|
|
18734
|
+
},
|
|
18735
|
+
{
|
|
18736
|
+
"key": "lean_mechanical_every_multiple_of_three_four_five_is_pythagorean",
|
|
18737
|
+
"name": "lean mechanical.lean: every_multiple_of_three_four_five_is_pythagorean — ∀ k : Nat, (3 * k) ^ 2 + (4 * k) ^ 2 = (5 * k) ^ 2 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18738
|
+
"receipt": "a20992d7-56ea-8048-a939-96fc2fdc451d"
|
|
18739
|
+
},
|
|
18740
|
+
{
|
|
18741
|
+
"key": "lean_mechanical_the_product_of_three_consecutive_numbers_is_even",
|
|
18742
|
+
"name": "lean mechanical.lean: the_product_of_three_consecutive_numbers_is_even — ∀ n : Nat, n * (n + 1) * (n + 2) % 2 = 0 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18743
|
+
"receipt": "0eb7327f-0789-8918-8365-8d4188436e01"
|
|
18744
|
+
},
|
|
18745
|
+
{
|
|
18746
|
+
"key": "lean_mechanical_the_product_of_three_consecutive_numbers_is_a_multiple_of_three",
|
|
18747
|
+
"name": "lean mechanical.lean: the_product_of_three_consecutive_numbers_is_a_multiple_of_three — ∀ n : Nat, n * (n + 1) * (n + 2) % 3 = 0 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18748
|
+
"receipt": "f3e2ee80-28d1-89e3-92c7-082265ef98dc"
|
|
18749
|
+
},
|
|
18750
|
+
{
|
|
18751
|
+
"key": "lean_mechanical_the_product_of_any_three_consecutive_integers_is_divisible_by_six_for_every_n",
|
|
18752
|
+
"name": "lean mechanical.lean: the_product_of_any_three_consecutive_integers_is_divisible_by_six_for_every_n — ∀ n : Nat, n * (n + 1) * (n + 2) % 6 = 0 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18753
|
+
"receipt": "65518577-2bc3-82a2-97f8-f6cd4f7d1b62"
|
|
18754
|
+
},
|
|
18755
|
+
{
|
|
18756
|
+
"key": "lean_reversal_foldl_add_start",
|
|
18757
|
+
"name": "lean reversal.lean: foldl_add_start — ∀ (l : List Nat) (a : Nat), l.foldl (· + ·) a = a + l.foldl (· + ·) 0 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18758
|
+
"receipt": "70a7cff5-e668-8f44-a8d0-797abfa246c8"
|
|
18759
|
+
},
|
|
18760
|
+
{
|
|
18761
|
+
"key": "lean_reversal_the_digits_sum_to_the_number_mod_nine_when_the_fuel_covers_them",
|
|
18762
|
+
"name": "lean reversal.lean: the_digits_sum_to_the_number_mod_nine_when_the_fuel_covers_them — ∀ f n : Nat, n < 10 ^ f → (digitsF f n).foldl (· + ·) 0 % 9 = n % 9 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18763
|
+
"receipt": "58d4c502-7f73-8e6c-923e-76fdf25fc81c"
|
|
18764
|
+
},
|
|
18765
|
+
{
|
|
18766
|
+
"key": "lean_reversal_a_number_is_below_ten_to_its_own_successor",
|
|
18767
|
+
"name": "lean reversal.lean: a_number_is_below_ten_to_its_own_successor — ∀ n : Nat, n < 10 ^ (n + 1) — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18768
|
+
"receipt": "dc7330c0-7a4c-8d99-9874-37c4c10fd1bb"
|
|
18769
|
+
},
|
|
18770
|
+
{
|
|
18771
|
+
"key": "lean_reversal_the_digit_sum_has_the_residue_of_the_number_mod_nine_for_every_n",
|
|
18772
|
+
"name": "lean reversal.lean: the_digit_sum_has_the_residue_of_the_number_mod_nine_for_every_n — ∀ n : Nat, digitSum n % 9 = n % 9 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18773
|
+
"receipt": "1a8922c4-c55c-88a0-b55a-23663d22fe49"
|
|
18774
|
+
},
|
|
18775
|
+
{
|
|
18776
|
+
"key": "lean_reversal_folding_by_ten_keeps_the_residue_of_the_digit_sum",
|
|
18777
|
+
"name": "lean reversal.lean: folding_by_ten_keeps_the_residue_of_the_digit_sum — ∀ (l : List Nat) (a : Nat), (l.foldl (fun a d => a * 10 + d) a) % 9 = (a + l.foldl (· + ·) 0) % 9 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18778
|
+
"receipt": "c7ce0223-8884-8e3a-84a1-dded449c3cb0"
|
|
18779
|
+
},
|
|
18780
|
+
{
|
|
18781
|
+
"key": "lean_reversal_reversal_keeps_the_residue_mod_nine_for_every_n",
|
|
18782
|
+
"name": "lean reversal.lean: reversal_keeps_the_residue_mod_nine_for_every_n — ∀ n : Nat, reverseNum n % 9 = n % 9 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18783
|
+
"receipt": "3159b043-f18c-8c28-b831-114d6dc70ce2"
|
|
18784
|
+
},
|
|
18785
|
+
{
|
|
18786
|
+
"key": "lean_split_the_coin_step_and_the_coins_are_inverse_for_every_c",
|
|
18787
|
+
"name": "lean split.lean: the_coin_step_and_the_coins_are_inverse_for_every_c — ∀ c : Nat, 3 * c / 3 = c ∧ (3 * c) % 3 = 0 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
|
|
18788
|
+
"receipt": "1c1ebe41-4e80-80ad-b352-e90a09922838"
|
|
18654
18789
|
}
|
|
18655
18790
|
]
|
|
@@ -398,4 +398,29 @@ theorem the_unit_graph_is_complete_bipartite_between_the_two_tetrahedra :
|
|
|
398
398
|
def settledHere : Nat := 32
|
|
399
399
|
theorem elementary_settles_its_range : settledHere = 32 := rfl
|
|
400
400
|
|
|
401
|
+
|
|
402
|
+
-- ── the capped rows above, proved for every value — no bound ──────────────────────────────────────────────────
|
|
403
|
+
-- the_interior_and_exterior_angles_are_n_straight_angles checked 3 ≤ n ≤ 32; this proves it for every n ≥ 2.
|
|
404
|
+
theorem the_interior_and_exterior_angles_are_n_straight_angles_for_every_n :
|
|
405
|
+
∀ n : Nat, 2 ≤ n → (n - 2) * 180 + 360 = n * 180 := by
|
|
406
|
+
intro n h
|
|
407
|
+
omega
|
|
408
|
+
|
|
409
|
+
theorem a_product_of_consecutive_numbers_is_even : ∀ n : Nat, n * (n + 1) % 2 = 0 := by
|
|
410
|
+
intro n
|
|
411
|
+
rcases Nat.mod_two_eq_zero_or_one n with h | h <;> simp [Nat.mul_mod, Nat.add_mod, h]
|
|
412
|
+
|
|
413
|
+
-- eight_times_a_triangular_number_plus_one_is_an_odd_square checked n < 60; this proves it for every n.
|
|
414
|
+
theorem eight_times_a_triangular_number_plus_one_is_an_odd_square_for_every_n :
|
|
415
|
+
∀ n : Nat, 8 * (n * (n + 1) / 2) + 1 = (2 * n + 1) * (2 * n + 1) := by
|
|
416
|
+
intro n
|
|
417
|
+
have hdiv : n * (n + 1) / 2 * 2 = n * (n + 1) :=
|
|
418
|
+
Nat.div_mul_cancel (Nat.dvd_of_mod_eq_zero (a_product_of_consecutive_numbers_is_even n))
|
|
419
|
+
have hexp : (2 * n + 1) * (2 * n + 1) = 4 * (n * (n + 1)) + 1 := by
|
|
420
|
+
rw [Nat.mul_add n n 1, Nat.mul_one, Nat.add_mul, Nat.mul_add, Nat.mul_add, Nat.mul_one, Nat.one_mul]
|
|
421
|
+
rw [Nat.mul_assoc 2 n (2 * n), Nat.mul_comm n (2 * n), Nat.mul_assoc 2 n n]
|
|
422
|
+
omega
|
|
423
|
+
rw [hexp]
|
|
424
|
+
omega
|
|
425
|
+
|
|
401
426
|
end Elementary
|
package/src/proof/energy.lean
CHANGED
|
@@ -279,4 +279,13 @@ theorem the_atoms_read_back_from_the_mass :
|
|
|
279
279
|
(List.range 10).all (fun h => (List.range 10).all (fun o => atomsOf (mass h o) == some (h, o))) ∧
|
|
280
280
|
atomsOf mgH2 = some (2, 0) ∧ atomsOf mgO2 = some (0, 2) ∧ atomsOf mgH2O = some (2, 1) := by decide
|
|
281
281
|
|
|
282
|
+
|
|
283
|
+
-- ── the capped row above, proved for every value — no bound ───────────────────────────────────────────────────
|
|
284
|
+
-- two_parts_in_three_is_two_thirds_at_every_scale checked 1 ≤ m ≤ 500; this proves the ratio part for every m.
|
|
285
|
+
theorem two_parts_in_three_is_two_thirds_at_every_scale_for_every_m :
|
|
286
|
+
∀ m : Nat, 0 < m → pct (2 * m) (3 * m) = 66 := by
|
|
287
|
+
intro m hm
|
|
288
|
+
unfold pct
|
|
289
|
+
rw [Nat.mul_comm 2 m, Nat.mul_assoc, Nat.mul_comm 3 m, Nat.mul_div_mul_left _ _ hm]
|
|
290
|
+
|
|
282
291
|
end Energy
|
package/src/proof/families.lean
CHANGED
|
@@ -184,9 +184,9 @@ def digitsF : Nat → Nat → List Nat
|
|
|
184
184
|
| 0, _ => []
|
|
185
185
|
| _, 0 => []
|
|
186
186
|
| Nat.succ f, n => n % 10 :: digitsF f (n / 10)
|
|
187
|
-
-- fuel
|
|
188
|
-
-- silently
|
|
189
|
-
def digitsOf (n : Nat) : List Nat := digitsF
|
|
187
|
+
-- the fuel is n + 1, which covers every digit of every n: the earlier fuel of 20 capped this at twenty digits
|
|
188
|
+
-- and silently truncated anything larger
|
|
189
|
+
def digitsOf (n : Nat) : List Nat := digitsF (n + 1) n
|
|
190
190
|
def reverseDigits (n : Nat) : Nat := (digitsOf n).foldl (fun a d => a * 10 + d) 0
|
|
191
191
|
def digitalRoot (n : Nat) : Nat := if n == 0 then 0 else 1 + (n - 1) % 9
|
|
192
192
|
|
|
@@ -447,4 +447,36 @@ theorem choose_is_invariant_under_the_involution_k_to_n_minus_k :
|
|
|
447
447
|
def settledHere : Nat := 42
|
|
448
448
|
theorem families_settle_their_ranges : settledHere = 42 := rfl
|
|
449
449
|
|
|
450
|
+
|
|
451
|
+
-- ── the capped rows above, proved for every value by induction — no bound ────────────────────────────────────
|
|
452
|
+
-- the_powers_of_two_sum_to_one_less_than_the_next checked n ≤ 40; this proves it for every n.
|
|
453
|
+
theorem the_powers_of_two_sum_to_one_less_than_the_next_for_every_n :
|
|
454
|
+
∀ n : Nat, ((List.range (n + 1)).map (fun i => 2 ^ i)).foldl (· + ·) 0 = 2 ^ (n + 1) - 1 := by
|
|
455
|
+
intro n
|
|
456
|
+
induction n with
|
|
457
|
+
| zero => decide
|
|
458
|
+
| succ n ih =>
|
|
459
|
+
rw [List.range_succ, List.map_append, List.foldl_append, ih]
|
|
460
|
+
simp only [List.map, List.foldl]
|
|
461
|
+
have h : 1 ≤ 2 ^ (n + 1) := Nat.one_le_two_pow
|
|
462
|
+
rw [Nat.pow_succ 2 (n + 1)]
|
|
463
|
+
omega
|
|
464
|
+
|
|
465
|
+
theorem square_of_successor : ∀ n : Nat, (n + 1) * (n + 1) = n * n + 2 * n + 1 := by
|
|
466
|
+
intro n
|
|
467
|
+
rw [Nat.add_mul, Nat.mul_add, Nat.mul_one, Nat.one_mul]
|
|
468
|
+
omega
|
|
469
|
+
|
|
470
|
+
-- the_first_n_odd_numbers_sum_to_n_squared checked n ≤ 200; this proves it for every n.
|
|
471
|
+
theorem the_first_n_odd_numbers_sum_to_n_squared_for_every_n :
|
|
472
|
+
∀ n : Nat, ((List.range n).map (fun i => 2 * i + 1)).foldl (· + ·) 0 = n * n := by
|
|
473
|
+
intro n
|
|
474
|
+
induction n with
|
|
475
|
+
| zero => decide
|
|
476
|
+
| succ n ih =>
|
|
477
|
+
rw [List.range_succ, List.map_append, List.foldl_append, ih]
|
|
478
|
+
simp only [List.map, List.foldl]
|
|
479
|
+
rw [square_of_successor]
|
|
480
|
+
omega
|
|
481
|
+
|
|
450
482
|
end Families
|
|
@@ -418,4 +418,38 @@ theorem a_reflexive_address_claim_holds_for_a_constant_function :
|
|
|
418
418
|
-- recording. What is now published beside them is exactly where a critic should aim, which is the whole of
|
|
419
419
|
-- what "claim boldly" can honestly mean — the falsifier travels with the claim.
|
|
420
420
|
|
|
421
|
+
|
|
422
|
+
-- ── the capped rows above, proved for every value by induction and case analysis — no bound ──────────────────
|
|
423
|
+
-- the_difference_of_consecutive_squares_is_the_odd_numbers checked n ≤ 500; this proves it for every n.
|
|
424
|
+
theorem consecutive_squares_differ_by_the_odd_numbers : ∀ n : Nat, (n + 1) ^ 2 - n * n = 2 * n + 1 := by
|
|
425
|
+
intro n
|
|
426
|
+
have h : (n + 1) ^ 2 = n * n + (2 * n + 1) := by
|
|
427
|
+
rw [Nat.pow_two, Nat.add_mul, Nat.mul_add, Nat.mul_one, Nat.one_mul]
|
|
428
|
+
omega
|
|
429
|
+
omega
|
|
430
|
+
|
|
431
|
+
-- there_are_infinitely_many_pythagorean_triples checked k ≤ 100; here every multiple of (3, 4, 5) is a triple, for every k.
|
|
432
|
+
-- prior_art_theorem: every_multiple_of_three_four_five_is_pythagorean — the 3-4-5 triangle, known in antiquity
|
|
433
|
+
theorem every_multiple_of_three_four_five_is_pythagorean : ∀ k : Nat, (3 * k) ^ 2 + (4 * k) ^ 2 = (5 * k) ^ 2 := by
|
|
434
|
+
intro k
|
|
435
|
+
rw [Nat.mul_pow, Nat.mul_pow, Nat.mul_pow]
|
|
436
|
+
omega
|
|
437
|
+
|
|
438
|
+
theorem the_product_of_three_consecutive_numbers_is_even : ∀ n : Nat, n * (n + 1) * (n + 2) % 2 = 0 := by
|
|
439
|
+
intro n
|
|
440
|
+
rcases Nat.mod_two_eq_zero_or_one n with h | h <;> simp [Nat.mul_mod, Nat.add_mod, h]
|
|
441
|
+
|
|
442
|
+
theorem the_product_of_three_consecutive_numbers_is_a_multiple_of_three : ∀ n : Nat, n * (n + 1) * (n + 2) % 3 = 0 := by
|
|
443
|
+
intro n
|
|
444
|
+
have : n % 3 = 0 ∨ n % 3 = 1 ∨ n % 3 = 2 := by omega
|
|
445
|
+
rcases this with h | h | h <;> simp [Nat.mul_mod, Nat.add_mod, h]
|
|
446
|
+
|
|
447
|
+
-- the_product_of_any_three_consecutive_integers_is_divisible_by_six checked n ≤ 500; this proves it for every n.
|
|
448
|
+
theorem the_product_of_any_three_consecutive_integers_is_divisible_by_six_for_every_n :
|
|
449
|
+
∀ n : Nat, n * (n + 1) * (n + 2) % 6 = 0 := by
|
|
450
|
+
intro n
|
|
451
|
+
have h2 := the_product_of_three_consecutive_numbers_is_even n
|
|
452
|
+
have h3 := the_product_of_three_consecutive_numbers_is_a_multiple_of_three n
|
|
453
|
+
omega
|
|
454
|
+
|
|
421
455
|
end Mechanical
|