@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
|
@@ -0,0 +1,492 @@
|
|
|
1
|
+
import Z9
|
|
2
|
+
set_option maxRecDepth 8000000
|
|
3
|
+
-- title: What enumeration proposed and the kernel kept
|
|
4
|
+
-- wing: the imagined
|
|
5
|
+
-- prior_art: named
|
|
6
|
+
-- prior_art_domain: elementary number theory — the unit group of Z/9
|
|
7
|
+
-- prior_art_note: the doubling orbit 1,2,4,8,7,5 is the cyclic group U(9), which is cyclic of order 6 generated by 2, with units {1,2,4,5,7,8} = φ(9); 2 and 5 are its only generators. Standard elementary number theory, in Gauss and in every abstract-algebra text. The closure statements quantify that structure. Searched 2026-09-04, term "multiplicative group of units mod 9 cyclic order 6 generated by 2"; prior art found and credited
|
|
8
|
+
-- prior_art_search: literature search performed 2026-09-04 — see the note for the terms and the result
|
|
9
|
+
-- IMAGINED — proposed by scripts/imagine.ts, which enumerated every map-against-subset and map-between-subsets
|
|
10
|
+
-- statement its primitives can express, kept the ones true by exhaustion, and then discarded every one that
|
|
11
|
+
-- also holds for all its siblings. A property true of everything names nothing. What is left is what the
|
|
12
|
+
-- kernel accepted; whatever it refused is reported by the generator and is not in this file.
|
|
13
|
+
--
|
|
14
|
+
-- Author: Tsvetan Rouschev · License: CC BY-NC-ND 4.0 · No axioms, no Mathlib, no sorry.
|
|
15
|
+
|
|
16
|
+
namespace Imagined
|
|
17
|
+
|
|
18
|
+
open Z9
|
|
19
|
+
|
|
20
|
+
-- the units is closed under doubling
|
|
21
|
+
theorem units_is_closed_under_double :
|
|
22
|
+
[1, 2, 4, 5, 7, 8].all (fun d => [1, 2, 4, 5, 7, 8].contains (m9 (2 * d))) := by decide
|
|
23
|
+
|
|
24
|
+
-- the triad is closed under doubling
|
|
25
|
+
theorem triad_is_closed_under_double :
|
|
26
|
+
[3, 6, 0].all (fun d => [3, 6, 0].contains (m9 (2 * d))) := by decide
|
|
27
|
+
|
|
28
|
+
-- the doubling orbit is closed under doubling
|
|
29
|
+
theorem orbit_is_closed_under_double :
|
|
30
|
+
[1, 2, 4, 8, 7, 5].all (fun d => [1, 2, 4, 8, 7, 5].contains (m9 (2 * d))) := by decide
|
|
31
|
+
|
|
32
|
+
-- the whole ring is closed under doubling
|
|
33
|
+
theorem all_is_closed_under_double :
|
|
34
|
+
[0,1,2,3,4,5,6,7,8].all (fun d => [0,1,2,3,4,5,6,7,8].contains (m9 (2 * d))) := by decide
|
|
35
|
+
|
|
36
|
+
-- the triad is closed under tripling
|
|
37
|
+
theorem triad_is_closed_under_triple :
|
|
38
|
+
[3, 6, 0].all (fun d => [3, 6, 0].contains (m9 (3 * d))) := by decide
|
|
39
|
+
|
|
40
|
+
-- the whole ring is closed under tripling
|
|
41
|
+
theorem all_is_closed_under_triple :
|
|
42
|
+
[0,1,2,3,4,5,6,7,8].all (fun d => [0,1,2,3,4,5,6,7,8].contains (m9 (3 * d))) := by decide
|
|
43
|
+
|
|
44
|
+
-- the units is closed under quadrupling
|
|
45
|
+
theorem units_is_closed_under_quadruple :
|
|
46
|
+
[1, 2, 4, 5, 7, 8].all (fun d => [1, 2, 4, 5, 7, 8].contains (m9 (4 * d))) := by decide
|
|
47
|
+
|
|
48
|
+
-- the triad is closed under quadrupling
|
|
49
|
+
theorem triad_is_closed_under_quadruple :
|
|
50
|
+
[3, 6, 0].all (fun d => [3, 6, 0].contains (m9 (4 * d))) := by decide
|
|
51
|
+
|
|
52
|
+
-- the doubling orbit is closed under quadrupling
|
|
53
|
+
theorem orbit_is_closed_under_quadruple :
|
|
54
|
+
[1, 2, 4, 8, 7, 5].all (fun d => [1, 2, 4, 8, 7, 5].contains (m9 (4 * d))) := by decide
|
|
55
|
+
|
|
56
|
+
-- the first tetrahedron is closed under quadrupling
|
|
57
|
+
theorem tetA_is_closed_under_quadruple :
|
|
58
|
+
[1, 4, 7].all (fun d => [1, 4, 7].contains (m9 (4 * d))) := by decide
|
|
59
|
+
|
|
60
|
+
-- the second tetrahedron is closed under quadrupling
|
|
61
|
+
theorem tetB_is_closed_under_quadruple :
|
|
62
|
+
[2, 5, 8].all (fun d => [2, 5, 8].contains (m9 (4 * d))) := by decide
|
|
63
|
+
|
|
64
|
+
-- the whole ring is closed under quadrupling
|
|
65
|
+
theorem all_is_closed_under_quadruple :
|
|
66
|
+
[0,1,2,3,4,5,6,7,8].all (fun d => [0,1,2,3,4,5,6,7,8].contains (m9 (4 * d))) := by decide
|
|
67
|
+
|
|
68
|
+
-- the squares mod nine is closed under quadrupling
|
|
69
|
+
theorem squares_is_closed_under_quadruple :
|
|
70
|
+
[0, 1, 4, 7].all (fun d => [0, 1, 4, 7].contains (m9 (4 * d))) := by decide
|
|
71
|
+
|
|
72
|
+
-- the triad is closed under negation
|
|
73
|
+
theorem triad_is_closed_under_negate :
|
|
74
|
+
[3, 6, 0].all (fun d => [3, 6, 0].contains (m9 (9 - d))) := by decide
|
|
75
|
+
|
|
76
|
+
-- the doubling orbit is closed under negation
|
|
77
|
+
theorem orbit_is_closed_under_negate :
|
|
78
|
+
[1, 2, 4, 8, 7, 5].all (fun d => [1, 2, 4, 8, 7, 5].contains (m9 (9 - d))) := by decide
|
|
79
|
+
|
|
80
|
+
-- the whole ring is closed under negation
|
|
81
|
+
theorem all_is_closed_under_negate :
|
|
82
|
+
[0,1,2,3,4,5,6,7,8].all (fun d => [0,1,2,3,4,5,6,7,8].contains (m9 (9 - d))) := by decide
|
|
83
|
+
|
|
84
|
+
-- the cubes mod nine is closed under negation
|
|
85
|
+
theorem cubes_is_closed_under_negate :
|
|
86
|
+
[0, 1, 8].all (fun d => [0, 1, 8].contains (m9 (9 - d))) := by decide
|
|
87
|
+
|
|
88
|
+
-- the units is closed under squaring
|
|
89
|
+
theorem units_is_closed_under_square :
|
|
90
|
+
[1, 2, 4, 5, 7, 8].all (fun d => [1, 2, 4, 5, 7, 8].contains (m9 (d * d))) := by decide
|
|
91
|
+
|
|
92
|
+
-- the doubling orbit is closed under squaring
|
|
93
|
+
theorem orbit_is_closed_under_square :
|
|
94
|
+
[1, 2, 4, 8, 7, 5].all (fun d => [1, 2, 4, 8, 7, 5].contains (m9 (d * d))) := by decide
|
|
95
|
+
|
|
96
|
+
-- the first tetrahedron is closed under squaring
|
|
97
|
+
theorem tetA_is_closed_under_square :
|
|
98
|
+
[1, 4, 7].all (fun d => [1, 4, 7].contains (m9 (d * d))) := by decide
|
|
99
|
+
|
|
100
|
+
-- the whole ring is closed under squaring
|
|
101
|
+
theorem all_is_closed_under_square :
|
|
102
|
+
[0,1,2,3,4,5,6,7,8].all (fun d => [0,1,2,3,4,5,6,7,8].contains (m9 (d * d))) := by decide
|
|
103
|
+
|
|
104
|
+
-- the squares mod nine is closed under squaring
|
|
105
|
+
theorem squares_is_closed_under_square :
|
|
106
|
+
[0, 1, 4, 7].all (fun d => [0, 1, 4, 7].contains (m9 (d * d))) := by decide
|
|
107
|
+
|
|
108
|
+
-- the cubes mod nine is closed under squaring
|
|
109
|
+
theorem cubes_is_closed_under_square :
|
|
110
|
+
[0, 1, 8].all (fun d => [0, 1, 8].contains (m9 (d * d))) := by decide
|
|
111
|
+
|
|
112
|
+
-- the units is closed under the fourth power
|
|
113
|
+
theorem units_is_closed_under_fourth :
|
|
114
|
+
[1, 2, 4, 5, 7, 8].all (fun d => [1, 2, 4, 5, 7, 8].contains (m9 (d ^ 4))) := by decide
|
|
115
|
+
|
|
116
|
+
-- the triad is closed under the fourth power
|
|
117
|
+
theorem triad_is_closed_under_fourth :
|
|
118
|
+
[3, 6, 0].all (fun d => [3, 6, 0].contains (m9 (d ^ 4))) := by decide
|
|
119
|
+
|
|
120
|
+
-- the doubling orbit is closed under the fourth power
|
|
121
|
+
theorem orbit_is_closed_under_fourth :
|
|
122
|
+
[1, 2, 4, 8, 7, 5].all (fun d => [1, 2, 4, 8, 7, 5].contains (m9 (d ^ 4))) := by decide
|
|
123
|
+
|
|
124
|
+
-- the first tetrahedron is closed under the fourth power
|
|
125
|
+
theorem tetA_is_closed_under_fourth :
|
|
126
|
+
[1, 4, 7].all (fun d => [1, 4, 7].contains (m9 (d ^ 4))) := by decide
|
|
127
|
+
|
|
128
|
+
-- the whole ring is closed under the fourth power
|
|
129
|
+
theorem all_is_closed_under_fourth :
|
|
130
|
+
[0,1,2,3,4,5,6,7,8].all (fun d => [0,1,2,3,4,5,6,7,8].contains (m9 (d ^ 4))) := by decide
|
|
131
|
+
|
|
132
|
+
-- the squares mod nine is closed under the fourth power
|
|
133
|
+
theorem squares_is_closed_under_fourth :
|
|
134
|
+
[0, 1, 4, 7].all (fun d => [0, 1, 4, 7].contains (m9 (d ^ 4))) := by decide
|
|
135
|
+
|
|
136
|
+
-- the cubes mod nine is closed under the fourth power
|
|
137
|
+
theorem cubes_is_closed_under_fourth :
|
|
138
|
+
[0, 1, 8].all (fun d => [0, 1, 8].contains (m9 (d ^ 4))) := by decide
|
|
139
|
+
|
|
140
|
+
-- the units is closed under the sixth power
|
|
141
|
+
theorem units_is_closed_under_sixth :
|
|
142
|
+
[1, 2, 4, 5, 7, 8].all (fun d => [1, 2, 4, 5, 7, 8].contains (m9 (d ^ 6))) := by decide
|
|
143
|
+
|
|
144
|
+
-- the triad is closed under the sixth power
|
|
145
|
+
theorem triad_is_closed_under_sixth :
|
|
146
|
+
[3, 6, 0].all (fun d => [3, 6, 0].contains (m9 (d ^ 6))) := by decide
|
|
147
|
+
|
|
148
|
+
-- the doubling orbit is closed under the sixth power
|
|
149
|
+
theorem orbit_is_closed_under_sixth :
|
|
150
|
+
[1, 2, 4, 8, 7, 5].all (fun d => [1, 2, 4, 8, 7, 5].contains (m9 (d ^ 6))) := by decide
|
|
151
|
+
|
|
152
|
+
-- the first tetrahedron is closed under the sixth power
|
|
153
|
+
theorem tetA_is_closed_under_sixth :
|
|
154
|
+
[1, 4, 7].all (fun d => [1, 4, 7].contains (m9 (d ^ 6))) := by decide
|
|
155
|
+
|
|
156
|
+
-- the whole ring is closed under the sixth power
|
|
157
|
+
theorem all_is_closed_under_sixth :
|
|
158
|
+
[0,1,2,3,4,5,6,7,8].all (fun d => [0,1,2,3,4,5,6,7,8].contains (m9 (d ^ 6))) := by decide
|
|
159
|
+
|
|
160
|
+
-- the squares mod nine is closed under the sixth power
|
|
161
|
+
theorem squares_is_closed_under_sixth :
|
|
162
|
+
[0, 1, 4, 7].all (fun d => [0, 1, 4, 7].contains (m9 (d ^ 6))) := by decide
|
|
163
|
+
|
|
164
|
+
-- the cubes mod nine is closed under the sixth power
|
|
165
|
+
theorem cubes_is_closed_under_sixth :
|
|
166
|
+
[0, 1, 8].all (fun d => [0, 1, 8].contains (m9 (d ^ 6))) := by decide
|
|
167
|
+
|
|
168
|
+
-- the units is closed under multiplication by five
|
|
169
|
+
theorem units_is_closed_under_quintuple :
|
|
170
|
+
[1, 2, 4, 5, 7, 8].all (fun d => [1, 2, 4, 5, 7, 8].contains (m9 (5 * d))) := by decide
|
|
171
|
+
|
|
172
|
+
-- the triad is closed under multiplication by five
|
|
173
|
+
theorem triad_is_closed_under_quintuple :
|
|
174
|
+
[3, 6, 0].all (fun d => [3, 6, 0].contains (m9 (5 * d))) := by decide
|
|
175
|
+
|
|
176
|
+
-- the doubling orbit is closed under multiplication by five
|
|
177
|
+
theorem orbit_is_closed_under_quintuple :
|
|
178
|
+
[1, 2, 4, 8, 7, 5].all (fun d => [1, 2, 4, 8, 7, 5].contains (m9 (5 * d))) := by decide
|
|
179
|
+
|
|
180
|
+
-- the whole ring is closed under multiplication by five
|
|
181
|
+
theorem all_is_closed_under_quintuple :
|
|
182
|
+
[0,1,2,3,4,5,6,7,8].all (fun d => [0,1,2,3,4,5,6,7,8].contains (m9 (5 * d))) := by decide
|
|
183
|
+
|
|
184
|
+
-- the triad is closed under multiplication by six
|
|
185
|
+
theorem triad_is_closed_under_sextuple :
|
|
186
|
+
[3, 6, 0].all (fun d => [3, 6, 0].contains (m9 (6 * d))) := by decide
|
|
187
|
+
|
|
188
|
+
-- the whole ring is closed under multiplication by six
|
|
189
|
+
theorem all_is_closed_under_sextuple :
|
|
190
|
+
[0,1,2,3,4,5,6,7,8].all (fun d => [0,1,2,3,4,5,6,7,8].contains (m9 (6 * d))) := by decide
|
|
191
|
+
|
|
192
|
+
-- the units is closed under multiplication by seven
|
|
193
|
+
theorem units_is_closed_under_septuple :
|
|
194
|
+
[1, 2, 4, 5, 7, 8].all (fun d => [1, 2, 4, 5, 7, 8].contains (m9 (7 * d))) := by decide
|
|
195
|
+
|
|
196
|
+
-- the triad is closed under multiplication by seven
|
|
197
|
+
theorem triad_is_closed_under_septuple :
|
|
198
|
+
[3, 6, 0].all (fun d => [3, 6, 0].contains (m9 (7 * d))) := by decide
|
|
199
|
+
|
|
200
|
+
-- the doubling orbit is closed under multiplication by seven
|
|
201
|
+
theorem orbit_is_closed_under_septuple :
|
|
202
|
+
[1, 2, 4, 8, 7, 5].all (fun d => [1, 2, 4, 8, 7, 5].contains (m9 (7 * d))) := by decide
|
|
203
|
+
|
|
204
|
+
-- the first tetrahedron is closed under multiplication by seven
|
|
205
|
+
theorem tetA_is_closed_under_septuple :
|
|
206
|
+
[1, 4, 7].all (fun d => [1, 4, 7].contains (m9 (7 * d))) := by decide
|
|
207
|
+
|
|
208
|
+
-- the second tetrahedron is closed under multiplication by seven
|
|
209
|
+
theorem tetB_is_closed_under_septuple :
|
|
210
|
+
[2, 5, 8].all (fun d => [2, 5, 8].contains (m9 (7 * d))) := by decide
|
|
211
|
+
|
|
212
|
+
-- the whole ring is closed under multiplication by seven
|
|
213
|
+
theorem all_is_closed_under_septuple :
|
|
214
|
+
[0,1,2,3,4,5,6,7,8].all (fun d => [0,1,2,3,4,5,6,7,8].contains (m9 (7 * d))) := by decide
|
|
215
|
+
|
|
216
|
+
-- the squares mod nine is closed under multiplication by seven
|
|
217
|
+
theorem squares_is_closed_under_septuple :
|
|
218
|
+
[0, 1, 4, 7].all (fun d => [0, 1, 4, 7].contains (m9 (7 * d))) := by decide
|
|
219
|
+
|
|
220
|
+
-- the units is closed under multiplication by eight
|
|
221
|
+
theorem units_is_closed_under_octuple :
|
|
222
|
+
[1, 2, 4, 5, 7, 8].all (fun d => [1, 2, 4, 5, 7, 8].contains (m9 (8 * d))) := by decide
|
|
223
|
+
|
|
224
|
+
-- the triad is closed under multiplication by eight
|
|
225
|
+
theorem triad_is_closed_under_octuple :
|
|
226
|
+
[3, 6, 0].all (fun d => [3, 6, 0].contains (m9 (8 * d))) := by decide
|
|
227
|
+
|
|
228
|
+
-- the doubling orbit is closed under multiplication by eight
|
|
229
|
+
theorem orbit_is_closed_under_octuple :
|
|
230
|
+
[1, 2, 4, 8, 7, 5].all (fun d => [1, 2, 4, 8, 7, 5].contains (m9 (8 * d))) := by decide
|
|
231
|
+
|
|
232
|
+
-- the whole ring is closed under multiplication by eight
|
|
233
|
+
theorem all_is_closed_under_octuple :
|
|
234
|
+
[0,1,2,3,4,5,6,7,8].all (fun d => [0,1,2,3,4,5,6,7,8].contains (m9 (8 * d))) := by decide
|
|
235
|
+
|
|
236
|
+
-- the cubes mod nine is closed under multiplication by eight
|
|
237
|
+
theorem cubes_is_closed_under_octuple :
|
|
238
|
+
[0, 1, 8].all (fun d => [0, 1, 8].contains (m9 (8 * d))) := by decide
|
|
239
|
+
|
|
240
|
+
-- doubling is its own inverse on the triad
|
|
241
|
+
theorem double_is_involutive_on_triad :
|
|
242
|
+
[3, 6, 0].all (fun d => (fun x => m9 (2 * x)) (m9 (2 * d)) == d) := by decide
|
|
243
|
+
|
|
244
|
+
-- quadrupling is its own inverse on the triad
|
|
245
|
+
theorem quadruple_is_involutive_on_triad :
|
|
246
|
+
[3, 6, 0].all (fun d => (fun x => m9 (4 * x)) (m9 (4 * d)) == d) := by decide
|
|
247
|
+
|
|
248
|
+
-- squaring is its own inverse on the first tetrahedron
|
|
249
|
+
theorem square_is_involutive_on_tetA :
|
|
250
|
+
[1, 4, 7].all (fun d => (fun x => m9 (x * x)) (m9 (d * d)) == d) := by decide
|
|
251
|
+
|
|
252
|
+
-- squaring is its own inverse on the squares mod nine
|
|
253
|
+
theorem square_is_involutive_on_squares :
|
|
254
|
+
[0, 1, 4, 7].all (fun d => (fun x => m9 (x * x)) (m9 (d * d)) == d) := by decide
|
|
255
|
+
|
|
256
|
+
-- cubing is its own inverse on the cubes mod nine
|
|
257
|
+
theorem cube_is_involutive_on_cubes :
|
|
258
|
+
[0, 1, 8].all (fun d => (fun x => m9 (x * x * x)) (m9 (d * d * d)) == d) := by decide
|
|
259
|
+
|
|
260
|
+
-- the fourth power is its own inverse on the first tetrahedron
|
|
261
|
+
theorem fourth_is_involutive_on_tetA :
|
|
262
|
+
[1, 4, 7].all (fun d => (fun x => m9 (x ^ 4)) (m9 (d ^ 4)) == d) := by decide
|
|
263
|
+
|
|
264
|
+
-- the fourth power is its own inverse on the squares mod nine
|
|
265
|
+
theorem fourth_is_involutive_on_squares :
|
|
266
|
+
[0, 1, 4, 7].all (fun d => (fun x => m9 (x ^ 4)) (m9 (d ^ 4)) == d) := by decide
|
|
267
|
+
|
|
268
|
+
-- the fifth power is its own inverse on the units
|
|
269
|
+
theorem fifth_is_involutive_on_units :
|
|
270
|
+
[1, 2, 4, 5, 7, 8].all (fun d => (fun x => m9 (x ^ 5)) (m9 (d ^ 5)) == d) := by decide
|
|
271
|
+
|
|
272
|
+
-- the fifth power is its own inverse on the doubling orbit
|
|
273
|
+
theorem fifth_is_involutive_on_orbit :
|
|
274
|
+
[1, 2, 4, 8, 7, 5].all (fun d => (fun x => m9 (x ^ 5)) (m9 (d ^ 5)) == d) := by decide
|
|
275
|
+
|
|
276
|
+
-- the fifth power is its own inverse on the first tetrahedron
|
|
277
|
+
theorem fifth_is_involutive_on_tetA :
|
|
278
|
+
[1, 4, 7].all (fun d => (fun x => m9 (x ^ 5)) (m9 (d ^ 5)) == d) := by decide
|
|
279
|
+
|
|
280
|
+
-- the fifth power is its own inverse on the second tetrahedron
|
|
281
|
+
theorem fifth_is_involutive_on_tetB :
|
|
282
|
+
[2, 5, 8].all (fun d => (fun x => m9 (x ^ 5)) (m9 (d ^ 5)) == d) := by decide
|
|
283
|
+
|
|
284
|
+
-- the fifth power is its own inverse on the squares mod nine
|
|
285
|
+
theorem fifth_is_involutive_on_squares :
|
|
286
|
+
[0, 1, 4, 7].all (fun d => (fun x => m9 (x ^ 5)) (m9 (d ^ 5)) == d) := by decide
|
|
287
|
+
|
|
288
|
+
-- the fifth power is its own inverse on the cubes mod nine
|
|
289
|
+
theorem fifth_is_involutive_on_cubes :
|
|
290
|
+
[0, 1, 8].all (fun d => (fun x => m9 (x ^ 5)) (m9 (d ^ 5)) == d) := by decide
|
|
291
|
+
|
|
292
|
+
-- multiplication by five is its own inverse on the triad
|
|
293
|
+
theorem quintuple_is_involutive_on_triad :
|
|
294
|
+
[3, 6, 0].all (fun d => (fun x => m9 (5 * x)) (m9 (5 * d)) == d) := by decide
|
|
295
|
+
|
|
296
|
+
-- multiplication by seven is its own inverse on the triad
|
|
297
|
+
theorem septuple_is_involutive_on_triad :
|
|
298
|
+
[3, 6, 0].all (fun d => (fun x => m9 (7 * x)) (m9 (7 * d)) == d) := by decide
|
|
299
|
+
|
|
300
|
+
-- doubling carries the units onto the doubling orbit
|
|
301
|
+
theorem double_carries_units_onto_orbit :
|
|
302
|
+
[1, 2, 4, 5, 7, 8].all (fun d => [1, 2, 4, 8, 7, 5].contains (m9 (2 * d))) ∧ ([1, 2, 4, 5, 7, 8].map (fun d => m9 (2 * d))).eraseDups.length = 6 := by decide
|
|
303
|
+
|
|
304
|
+
-- doubling carries the doubling orbit onto the units
|
|
305
|
+
theorem double_carries_orbit_onto_units :
|
|
306
|
+
[1, 2, 4, 8, 7, 5].all (fun d => [1, 2, 4, 5, 7, 8].contains (m9 (2 * d))) ∧ ([1, 2, 4, 8, 7, 5].map (fun d => m9 (2 * d))).eraseDups.length = 6 := by decide
|
|
307
|
+
|
|
308
|
+
-- tripling carries the whole ring onto the triad
|
|
309
|
+
theorem triple_carries_all_onto_triad :
|
|
310
|
+
[0,1,2,3,4,5,6,7,8].all (fun d => [3, 6, 0].contains (m9 (3 * d))) ∧ ([0,1,2,3,4,5,6,7,8].map (fun d => m9 (3 * d))).eraseDups.length = 3 := by decide
|
|
311
|
+
|
|
312
|
+
-- tripling carries the cubes mod nine onto the triad
|
|
313
|
+
theorem triple_carries_cubes_onto_triad :
|
|
314
|
+
[0, 1, 8].all (fun d => [3, 6, 0].contains (m9 (3 * d))) ∧ ([0, 1, 8].map (fun d => m9 (3 * d))).eraseDups.length = 3 := by decide
|
|
315
|
+
|
|
316
|
+
-- quadrupling carries the units onto the doubling orbit
|
|
317
|
+
theorem quadruple_carries_units_onto_orbit :
|
|
318
|
+
[1, 2, 4, 5, 7, 8].all (fun d => [1, 2, 4, 8, 7, 5].contains (m9 (4 * d))) ∧ ([1, 2, 4, 5, 7, 8].map (fun d => m9 (4 * d))).eraseDups.length = 6 := by decide
|
|
319
|
+
|
|
320
|
+
-- quadrupling carries the doubling orbit onto the units
|
|
321
|
+
theorem quadruple_carries_orbit_onto_units :
|
|
322
|
+
[1, 2, 4, 8, 7, 5].all (fun d => [1, 2, 4, 5, 7, 8].contains (m9 (4 * d))) ∧ ([1, 2, 4, 8, 7, 5].map (fun d => m9 (4 * d))).eraseDups.length = 6 := by decide
|
|
323
|
+
|
|
324
|
+
-- negation carries the doubling orbit onto the units
|
|
325
|
+
theorem negate_carries_orbit_onto_units :
|
|
326
|
+
[1, 2, 4, 8, 7, 5].all (fun d => [1, 2, 4, 5, 7, 8].contains (m9 (9 - d))) ∧ ([1, 2, 4, 8, 7, 5].map (fun d => m9 (9 - d))).eraseDups.length = 6 := by decide
|
|
327
|
+
|
|
328
|
+
-- negation carries the first tetrahedron onto the second tetrahedron
|
|
329
|
+
theorem negate_carries_tetA_onto_tetB :
|
|
330
|
+
[1, 4, 7].all (fun d => [2, 5, 8].contains (m9 (9 - d))) ∧ ([1, 4, 7].map (fun d => m9 (9 - d))).eraseDups.length = 3 := by decide
|
|
331
|
+
|
|
332
|
+
-- negation carries the second tetrahedron onto the first tetrahedron
|
|
333
|
+
theorem negate_carries_tetB_onto_tetA :
|
|
334
|
+
[2, 5, 8].all (fun d => [1, 4, 7].contains (m9 (9 - d))) ∧ ([2, 5, 8].map (fun d => m9 (9 - d))).eraseDups.length = 3 := by decide
|
|
335
|
+
|
|
336
|
+
-- squaring carries the units onto the first tetrahedron
|
|
337
|
+
theorem square_carries_units_onto_tetA :
|
|
338
|
+
[1, 2, 4, 5, 7, 8].all (fun d => [1, 4, 7].contains (m9 (d * d))) ∧ ([1, 2, 4, 5, 7, 8].map (fun d => m9 (d * d))).eraseDups.length = 3 := by decide
|
|
339
|
+
|
|
340
|
+
-- squaring carries the doubling orbit onto the first tetrahedron
|
|
341
|
+
theorem square_carries_orbit_onto_tetA :
|
|
342
|
+
[1, 2, 4, 8, 7, 5].all (fun d => [1, 4, 7].contains (m9 (d * d))) ∧ ([1, 2, 4, 8, 7, 5].map (fun d => m9 (d * d))).eraseDups.length = 3 := by decide
|
|
343
|
+
|
|
344
|
+
-- squaring carries the second tetrahedron onto the first tetrahedron
|
|
345
|
+
theorem square_carries_tetB_onto_tetA :
|
|
346
|
+
[2, 5, 8].all (fun d => [1, 4, 7].contains (m9 (d * d))) ∧ ([2, 5, 8].map (fun d => m9 (d * d))).eraseDups.length = 3 := by decide
|
|
347
|
+
|
|
348
|
+
-- squaring carries the whole ring onto the squares mod nine
|
|
349
|
+
theorem square_carries_all_onto_squares :
|
|
350
|
+
[0,1,2,3,4,5,6,7,8].all (fun d => [0, 1, 4, 7].contains (m9 (d * d))) ∧ ([0,1,2,3,4,5,6,7,8].map (fun d => m9 (d * d))).eraseDups.length = 4 := by decide
|
|
351
|
+
|
|
352
|
+
-- cubing carries the whole ring onto the cubes mod nine
|
|
353
|
+
theorem cube_carries_all_onto_cubes :
|
|
354
|
+
[0,1,2,3,4,5,6,7,8].all (fun d => [0, 1, 8].contains (m9 (d * d * d))) ∧ ([0,1,2,3,4,5,6,7,8].map (fun d => m9 (d * d * d))).eraseDups.length = 3 := by decide
|
|
355
|
+
|
|
356
|
+
-- the fourth power carries the units onto the first tetrahedron
|
|
357
|
+
theorem fourth_carries_units_onto_tetA :
|
|
358
|
+
[1, 2, 4, 5, 7, 8].all (fun d => [1, 4, 7].contains (m9 (d ^ 4))) ∧ ([1, 2, 4, 5, 7, 8].map (fun d => m9 (d ^ 4))).eraseDups.length = 3 := by decide
|
|
359
|
+
|
|
360
|
+
-- the fourth power carries the doubling orbit onto the first tetrahedron
|
|
361
|
+
theorem fourth_carries_orbit_onto_tetA :
|
|
362
|
+
[1, 2, 4, 8, 7, 5].all (fun d => [1, 4, 7].contains (m9 (d ^ 4))) ∧ ([1, 2, 4, 8, 7, 5].map (fun d => m9 (d ^ 4))).eraseDups.length = 3 := by decide
|
|
363
|
+
|
|
364
|
+
-- the fourth power carries the second tetrahedron onto the first tetrahedron
|
|
365
|
+
theorem fourth_carries_tetB_onto_tetA :
|
|
366
|
+
[2, 5, 8].all (fun d => [1, 4, 7].contains (m9 (d ^ 4))) ∧ ([2, 5, 8].map (fun d => m9 (d ^ 4))).eraseDups.length = 3 := by decide
|
|
367
|
+
|
|
368
|
+
-- the fourth power carries the whole ring onto the squares mod nine
|
|
369
|
+
theorem fourth_carries_all_onto_squares :
|
|
370
|
+
[0,1,2,3,4,5,6,7,8].all (fun d => [0, 1, 4, 7].contains (m9 (d ^ 4))) ∧ ([0,1,2,3,4,5,6,7,8].map (fun d => m9 (d ^ 4))).eraseDups.length = 4 := by decide
|
|
371
|
+
|
|
372
|
+
-- the fifth power carries the units onto the doubling orbit
|
|
373
|
+
theorem fifth_carries_units_onto_orbit :
|
|
374
|
+
[1, 2, 4, 5, 7, 8].all (fun d => [1, 2, 4, 8, 7, 5].contains (m9 (d ^ 5))) ∧ ([1, 2, 4, 5, 7, 8].map (fun d => m9 (d ^ 5))).eraseDups.length = 6 := by decide
|
|
375
|
+
|
|
376
|
+
-- the fifth power carries the doubling orbit onto the units
|
|
377
|
+
theorem fifth_carries_orbit_onto_units :
|
|
378
|
+
[1, 2, 4, 8, 7, 5].all (fun d => [1, 2, 4, 5, 7, 8].contains (m9 (d ^ 5))) ∧ ([1, 2, 4, 8, 7, 5].map (fun d => m9 (d ^ 5))).eraseDups.length = 6 := by decide
|
|
379
|
+
|
|
380
|
+
-- multiplication by five carries the units onto the doubling orbit
|
|
381
|
+
theorem quintuple_carries_units_onto_orbit :
|
|
382
|
+
[1, 2, 4, 5, 7, 8].all (fun d => [1, 2, 4, 8, 7, 5].contains (m9 (5 * d))) ∧ ([1, 2, 4, 5, 7, 8].map (fun d => m9 (5 * d))).eraseDups.length = 6 := by decide
|
|
383
|
+
|
|
384
|
+
-- multiplication by five carries the doubling orbit onto the units
|
|
385
|
+
theorem quintuple_carries_orbit_onto_units :
|
|
386
|
+
[1, 2, 4, 8, 7, 5].all (fun d => [1, 2, 4, 5, 7, 8].contains (m9 (5 * d))) ∧ ([1, 2, 4, 8, 7, 5].map (fun d => m9 (5 * d))).eraseDups.length = 6 := by decide
|
|
387
|
+
|
|
388
|
+
-- multiplication by five carries the first tetrahedron onto the second tetrahedron
|
|
389
|
+
theorem quintuple_carries_tetA_onto_tetB :
|
|
390
|
+
[1, 4, 7].all (fun d => [2, 5, 8].contains (m9 (5 * d))) ∧ ([1, 4, 7].map (fun d => m9 (5 * d))).eraseDups.length = 3 := by decide
|
|
391
|
+
|
|
392
|
+
-- multiplication by five carries the second tetrahedron onto the first tetrahedron
|
|
393
|
+
theorem quintuple_carries_tetB_onto_tetA :
|
|
394
|
+
[2, 5, 8].all (fun d => [1, 4, 7].contains (m9 (5 * d))) ∧ ([2, 5, 8].map (fun d => m9 (5 * d))).eraseDups.length = 3 := by decide
|
|
395
|
+
|
|
396
|
+
-- multiplication by six carries the whole ring onto the triad
|
|
397
|
+
theorem sextuple_carries_all_onto_triad :
|
|
398
|
+
[0,1,2,3,4,5,6,7,8].all (fun d => [3, 6, 0].contains (m9 (6 * d))) ∧ ([0,1,2,3,4,5,6,7,8].map (fun d => m9 (6 * d))).eraseDups.length = 3 := by decide
|
|
399
|
+
|
|
400
|
+
-- multiplication by six carries the cubes mod nine onto the triad
|
|
401
|
+
theorem sextuple_carries_cubes_onto_triad :
|
|
402
|
+
[0, 1, 8].all (fun d => [3, 6, 0].contains (m9 (6 * d))) ∧ ([0, 1, 8].map (fun d => m9 (6 * d))).eraseDups.length = 3 := by decide
|
|
403
|
+
|
|
404
|
+
-- multiplication by seven carries the units onto the doubling orbit
|
|
405
|
+
theorem septuple_carries_units_onto_orbit :
|
|
406
|
+
[1, 2, 4, 5, 7, 8].all (fun d => [1, 2, 4, 8, 7, 5].contains (m9 (7 * d))) ∧ ([1, 2, 4, 5, 7, 8].map (fun d => m9 (7 * d))).eraseDups.length = 6 := by decide
|
|
407
|
+
|
|
408
|
+
-- multiplication by seven carries the doubling orbit onto the units
|
|
409
|
+
theorem septuple_carries_orbit_onto_units :
|
|
410
|
+
[1, 2, 4, 8, 7, 5].all (fun d => [1, 2, 4, 5, 7, 8].contains (m9 (7 * d))) ∧ ([1, 2, 4, 8, 7, 5].map (fun d => m9 (7 * d))).eraseDups.length = 6 := by decide
|
|
411
|
+
|
|
412
|
+
-- multiplication by eight carries the units onto the doubling orbit
|
|
413
|
+
theorem octuple_carries_units_onto_orbit :
|
|
414
|
+
[1, 2, 4, 5, 7, 8].all (fun d => [1, 2, 4, 8, 7, 5].contains (m9 (8 * d))) ∧ ([1, 2, 4, 5, 7, 8].map (fun d => m9 (8 * d))).eraseDups.length = 6 := by decide
|
|
415
|
+
|
|
416
|
+
-- multiplication by eight carries the doubling orbit onto the units
|
|
417
|
+
theorem octuple_carries_orbit_onto_units :
|
|
418
|
+
[1, 2, 4, 8, 7, 5].all (fun d => [1, 2, 4, 5, 7, 8].contains (m9 (8 * d))) ∧ ([1, 2, 4, 8, 7, 5].map (fun d => m9 (8 * d))).eraseDups.length = 6 := by decide
|
|
419
|
+
|
|
420
|
+
-- multiplication by eight carries the first tetrahedron onto the second tetrahedron
|
|
421
|
+
theorem octuple_carries_tetA_onto_tetB :
|
|
422
|
+
[1, 4, 7].all (fun d => [2, 5, 8].contains (m9 (8 * d))) ∧ ([1, 4, 7].map (fun d => m9 (8 * d))).eraseDups.length = 3 := by decide
|
|
423
|
+
|
|
424
|
+
-- multiplication by eight carries the second tetrahedron onto the first tetrahedron
|
|
425
|
+
theorem octuple_carries_tetB_onto_tetA :
|
|
426
|
+
[2, 5, 8].all (fun d => [1, 4, 7].contains (m9 (8 * d))) ∧ ([2, 5, 8].map (fun d => m9 (8 * d))).eraseDups.length = 3 := by decide
|
|
427
|
+
|
|
428
|
+
-- tripling sends every element of the triad to a single value
|
|
429
|
+
theorem triple_collapses_triad_to_one_value :
|
|
430
|
+
([3, 6, 0].map (fun d => m9 (3 * d))).eraseDups.length = 1 := by decide
|
|
431
|
+
|
|
432
|
+
-- tripling sends every element of the first tetrahedron to a single value
|
|
433
|
+
theorem triple_collapses_tetA_to_one_value :
|
|
434
|
+
([1, 4, 7].map (fun d => m9 (3 * d))).eraseDups.length = 1 := by decide
|
|
435
|
+
|
|
436
|
+
-- tripling sends every element of the second tetrahedron to a single value
|
|
437
|
+
theorem triple_collapses_tetB_to_one_value :
|
|
438
|
+
([2, 5, 8].map (fun d => m9 (3 * d))).eraseDups.length = 1 := by decide
|
|
439
|
+
|
|
440
|
+
-- cubing sends every element of the triad to a single value
|
|
441
|
+
theorem cube_collapses_triad_to_one_value :
|
|
442
|
+
([3, 6, 0].map (fun d => m9 (d * d * d))).eraseDups.length = 1 := by decide
|
|
443
|
+
|
|
444
|
+
-- cubing sends every element of the first tetrahedron to a single value
|
|
445
|
+
theorem cube_collapses_tetA_to_one_value :
|
|
446
|
+
([1, 4, 7].map (fun d => m9 (d * d * d))).eraseDups.length = 1 := by decide
|
|
447
|
+
|
|
448
|
+
-- cubing sends every element of the second tetrahedron to a single value
|
|
449
|
+
theorem cube_collapses_tetB_to_one_value :
|
|
450
|
+
([2, 5, 8].map (fun d => m9 (d * d * d))).eraseDups.length = 1 := by decide
|
|
451
|
+
|
|
452
|
+
-- the fourth power sends every element of the triad to a single value
|
|
453
|
+
theorem fourth_collapses_triad_to_one_value :
|
|
454
|
+
([3, 6, 0].map (fun d => m9 (d ^ 4))).eraseDups.length = 1 := by decide
|
|
455
|
+
|
|
456
|
+
-- the fifth power sends every element of the triad to a single value
|
|
457
|
+
theorem fifth_collapses_triad_to_one_value :
|
|
458
|
+
([3, 6, 0].map (fun d => m9 (d ^ 5))).eraseDups.length = 1 := by decide
|
|
459
|
+
|
|
460
|
+
-- the sixth power sends every element of the units to a single value
|
|
461
|
+
theorem sixth_collapses_units_to_one_value :
|
|
462
|
+
([1, 2, 4, 5, 7, 8].map (fun d => m9 (d ^ 6))).eraseDups.length = 1 := by decide
|
|
463
|
+
|
|
464
|
+
-- the sixth power sends every element of the triad to a single value
|
|
465
|
+
theorem sixth_collapses_triad_to_one_value :
|
|
466
|
+
([3, 6, 0].map (fun d => m9 (d ^ 6))).eraseDups.length = 1 := by decide
|
|
467
|
+
|
|
468
|
+
-- the sixth power sends every element of the doubling orbit to a single value
|
|
469
|
+
theorem sixth_collapses_orbit_to_one_value :
|
|
470
|
+
([1, 2, 4, 8, 7, 5].map (fun d => m9 (d ^ 6))).eraseDups.length = 1 := by decide
|
|
471
|
+
|
|
472
|
+
-- the sixth power sends every element of the first tetrahedron to a single value
|
|
473
|
+
theorem sixth_collapses_tetA_to_one_value :
|
|
474
|
+
([1, 4, 7].map (fun d => m9 (d ^ 6))).eraseDups.length = 1 := by decide
|
|
475
|
+
|
|
476
|
+
-- the sixth power sends every element of the second tetrahedron to a single value
|
|
477
|
+
theorem sixth_collapses_tetB_to_one_value :
|
|
478
|
+
([2, 5, 8].map (fun d => m9 (d ^ 6))).eraseDups.length = 1 := by decide
|
|
479
|
+
|
|
480
|
+
-- multiplication by six sends every element of the triad to a single value
|
|
481
|
+
theorem sextuple_collapses_triad_to_one_value :
|
|
482
|
+
([3, 6, 0].map (fun d => m9 (6 * d))).eraseDups.length = 1 := by decide
|
|
483
|
+
|
|
484
|
+
-- multiplication by six sends every element of the first tetrahedron to a single value
|
|
485
|
+
theorem sextuple_collapses_tetA_to_one_value :
|
|
486
|
+
([1, 4, 7].map (fun d => m9 (6 * d))).eraseDups.length = 1 := by decide
|
|
487
|
+
|
|
488
|
+
-- multiplication by six sends every element of the second tetrahedron to a single value
|
|
489
|
+
theorem sextuple_collapses_tetB_to_one_value :
|
|
490
|
+
([2, 5, 8].map (fun d => m9 (6 * d))).eraseDups.length = 1 := by decide
|
|
491
|
+
|
|
492
|
+
end Imagined
|
package/src/proof/index.lean
CHANGED
|
@@ -1,9 +1,40 @@
|
|
|
1
|
+
-- title: The Millennium floor
|
|
2
|
+
-- wing: the floor
|
|
3
|
+
-- prior_art: named
|
|
4
|
+
-- prior_art_domain: elementary number theory — the unit group of ℤ/9 and the doubling orbit
|
|
5
|
+
-- prior_art_note: the structure underneath is standard and is credited. The doubling orbit
|
|
6
|
+
-- 1 → 2 → 4 → 8 → 7 → 5 → 1 modulo 9 is the cyclic group generated by 2 in U(9), of order 6 because that
|
|
7
|
+
-- is the multiplicative order of 2 mod 9; the units are {1,2,4,5,7,8} and the non-units {0,3,6}. Textbook
|
|
8
|
+
-- abstract algebra, and treated directly in the literature on doubling maps modulo odd integers.
|
|
9
|
+
-- Bounded, so the credit stops where the earlier work does: what is NOT prior art is the use of that orbit as a floor for what this deposit does
|
|
10
|
+
-- and does not settle, which is a statement about this repository and has no earlier author.
|
|
11
|
+
-- Verification by exhaustion in Lean is this deposit's contribution, and verification is not discovery.
|
|
12
|
+
-- prior_art_search: literature search performed 2026-09-05, terms "doubling sequence modulo 9 orbit
|
|
13
|
+
-- 1 2 4 8 7 5 cyclic group generator digital root"; prior art found and credited.
|
|
14
|
+
-- prior_art_pool: bounded
|
|
15
|
+
-- digit arithmetic of the doubling sequence; searchable independently of this deposit.
|
|
16
|
+
-- BOUNDED means a search is well posed and simply has not been run — the row is unclassified because
|
|
17
|
+
-- nobody looked. UNBOUNDED means the subject is this artifact, so there is no pool to search and the
|
|
18
|
+
-- row will stay unclassified however much work is done. They look identical in a count and need
|
|
19
|
+
-- opposite responses, which is the distinction uuidna-49 asked for and nobody had drawn.
|
|
20
|
+
-- prior_art_own: the Millennium floor, computed from this sequence
|
|
1
21
|
-- The Millennium floor — seven honest theorems, one per problem, COMPUTED from the sequence.
|
|
2
|
-
-- Author: Tsvetan Rouschev · License: CC BY-NC 4.0
|
|
22
|
+
-- Author: Tsvetan Rouschev · License: CC BY-NC-ND 4.0
|
|
3
23
|
--
|
|
4
24
|
-- Each Clay problem gets ONE theorem here. None proves the conjecture — each states a TRUE fact that COMPUTES
|
|
5
25
|
-- from the ℤ/9 doubling sequence (the orbit 2^k, the reflection 10−d, the derived units) and is genuinely
|
|
6
|
-
-- ADJACENT to the problem
|
|
26
|
+
-- ADJACENT to the problem. The refusal is NOT a theorem here, and that is deliberate: this file used to
|
|
27
|
+
-- carry `def provenHere : Nat := 0` with `the_floor_is_zero_of_seven : provenHere = 0 := rfl` beside it, and
|
|
28
|
+
-- the same literal glued as a conjunct onto every theorem below. That certifies nothing about the seven
|
|
29
|
+
-- problems — it decides that a number the author typed equals itself — while wearing the authority of a
|
|
30
|
+
-- kernel-checked, axiom-free proof. seal-lean.ts states the rule it broke: "`rfl` on a declared constant
|
|
31
|
+
-- proves the declaration and nothing else … it is not evidence."
|
|
32
|
+
--
|
|
33
|
+
-- An absence is not established by a certificate that a counter you maintain reads zero. It is established
|
|
34
|
+
-- by there being no such proof, which is a property of the tree and is checked over the tree — see
|
|
35
|
+
-- scripts/contradictions.ts, which fails if any theorem's statement reaches for the objects these
|
|
36
|
+
-- conjectures concern, and can therefore be refuted by adding one. The theorems below now state only what
|
|
37
|
+
-- the kernel actually worked for. No anchors (nothing is a
|
|
7
38
|
-- hand-picked structural constant — the units, the heart, the gap and the vanishing all emerge by
|
|
8
39
|
-- `filter`/`all`/`any`/`foldr`), no axioms (pure `by decide`, never `native_decide` or `sorry`), no Mathlib.
|
|
9
40
|
-- A single `lean` call verifies the file. Integrity, not truth. 0/7.
|
|
@@ -17,65 +48,114 @@ def orbit (k : Nat) : Nat := (2 ^ k) % 9 --
|
|
|
17
48
|
def span : List Nat := (List.range 6).map orbit -- the doubling span (one period), computed
|
|
18
49
|
|
|
19
50
|
-- the honest floor, carried inside every theorem: this framework PROVES 0 of the 7.
|
|
20
|
-
def provenHere : Nat := 0
|
|
21
51
|
|
|
22
52
|
-- ── 1 · Riemann — the reflection's symmetry and its single computed heart ─────────────────────────────────
|
|
23
53
|
-- The functional-equation reflection is a total involution; its fixed-point set has length ONE — the heart
|
|
24
54
|
-- emerges (never typed as "5"), the ½-analogue of the critical-line centre. The SYMMETRY, not the zeros' place.
|
|
25
55
|
theorem riemann_reflection_and_heart :
|
|
26
56
|
(List.range 10).all (fun d => refl (refl d) == d)
|
|
27
|
-
∧ ((List.range 10).filter (fun d => refl d == d)).length = 1
|
|
28
|
-
∧ provenHere = 0 := by decide
|
|
57
|
+
∧ ((List.range 10).filter (fun d => refl d == d)).length = 1 := by decide
|
|
29
58
|
|
|
30
59
|
-- ── 2 · P versus NP — verification is one step, computed ───────────────────────────────────────────────────
|
|
31
60
|
-- Each unit has EXACTLY ONE inverse and each non-unit none: to VERIFY a proposed inverse is a single multiply,
|
|
32
61
|
-- while the map d ↦ d⁻¹ permutes the units. Cheap verification is not a separation; P vs NP is not decided.
|
|
33
62
|
theorem p_vs_np_inverse_is_unique :
|
|
34
63
|
(List.range 9).all (fun d =>
|
|
35
|
-
((List.range 9).filter (fun e => (d * e) % 9 == 1)).length == (if isUnit d then 1 else 0))
|
|
36
|
-
∧ provenHere = 0 := by decide
|
|
64
|
+
((List.range 9).filter (fun e => (d * e) % 9 == 1)).length == (if isUnit d then 1 else 0)) := by decide
|
|
37
65
|
|
|
38
66
|
-- ── 3 · Navier–Stokes — the flow is bounded for all time, computed ────────────────────────────────────────
|
|
39
67
|
-- Every iterate of the doubling flow is a residue < 9 and stays inside the 6-cycle forever — a bounded
|
|
40
68
|
-- invariant set, no blowup. Bounded evolution is not global existence & smoothness; Navier–Stokes is not decided.
|
|
41
69
|
theorem navier_stokes_flow_is_bounded :
|
|
42
70
|
((List.range 48).map orbit).all (fun v => v < 9)
|
|
43
|
-
∧ (List.range 48).all (fun k => span.contains (orbit k))
|
|
44
|
-
∧ provenHere = 0 := by decide
|
|
71
|
+
∧ (List.range 48).all (fun k => span.contains (orbit k)) := by decide
|
|
45
72
|
|
|
46
73
|
-- ── 4 · Yang–Mills — a discrete spectral gap, computed ────────────────────────────────────────────────────
|
|
47
74
|
-- The doubling has order exactly 6: it never returns to 1 before step 6, then closes at step 6 — a gap in the
|
|
48
75
|
-- cyclic spectrum. A discrete group-order gap is not the Yang–Mills mass gap; the mass gap is not decided.
|
|
49
76
|
theorem yang_mills_spectral_gap :
|
|
50
77
|
(List.range 6).all (fun k => k == 0 || orbit k != 1)
|
|
51
|
-
∧ orbit 6 == 1
|
|
52
|
-
∧ provenHere = 0 := by decide
|
|
78
|
+
∧ orbit 6 == 1 := by decide
|
|
53
79
|
|
|
54
80
|
-- ── 5 · Hodge — the algebraic span equals the units, computed ─────────────────────────────────────────────
|
|
55
81
|
-- The doubling span (algebraic generation from 2) is exactly the units, and every non-unit lies OUTSIDE it.
|
|
56
82
|
-- Generation/containment is not the Hodge conjecture (rational (p,p) ⇒ algebraic); Hodge is not decided.
|
|
57
83
|
theorem hodge_span_is_the_units :
|
|
58
84
|
(List.range 9).all (fun d => span.contains d == isUnit d)
|
|
59
|
-
∧ (List.range 9).all (fun d => isUnit d || ! span.contains d)
|
|
60
|
-
∧ provenHere = 0 := by decide
|
|
85
|
+
∧ (List.range 9).all (fun d => isUnit d || ! span.contains d) := by decide
|
|
61
86
|
|
|
62
87
|
-- ── 6 · Birch–Swinnerton-Dyer — a computed vanishing ──────────────────────────────────────────────────────
|
|
63
88
|
-- The orbit's digit sum vanishes mod 9 (1+2+4+8+7+5 = 27 ≡ 0), and so do the units (1+2+4+5+7+8 ≡ 0) — a
|
|
64
89
|
-- computed vanishing. A digit-sum vanishing is not the rank ↔ order-of-vanishing-of-L correspondence; BSD is not decided.
|
|
65
90
|
theorem birch_swinnerton_dyer_vanishing :
|
|
66
91
|
(span.foldr (· + ·) 0) % 9 == 0
|
|
67
|
-
∧ ((List.range 9).filter isUnit).foldr (· + ·) 0 % 9 == 0
|
|
68
|
-
∧ provenHere = 0 := by decide
|
|
92
|
+
∧ ((List.range 9).filter isUnit).foldr (· + ·) 0 % 9 == 0 := by decide
|
|
69
93
|
|
|
70
94
|
-- ── 7 · Poincaré — one closed loop, no holes, computed ────────────────────────────────────────────────────
|
|
71
95
|
-- The sequence closes (orbit 6 = orbit 0) after six pairwise-distinct steps — a single simple loop. A closed
|
|
72
96
|
-- cyclic loop is not the 3-sphere characterization; Poincaré is Perelman's THEOREM (2003), not proved here.
|
|
73
97
|
theorem poincare_single_closed_loop :
|
|
74
98
|
orbit 6 == orbit 0
|
|
75
|
-
∧ (List.range 6).all (fun i => (List.range 6).all (fun j => (orbit i == orbit j) == (i == j)))
|
|
76
|
-
∧ provenHere = 0 := by decide
|
|
99
|
+
∧ (List.range 6).all (fun i => (List.range 6).all (fun j => (orbit i == orbit j) == (i == j))) := by decide
|
|
77
100
|
|
|
78
101
|
-- ── the ledger — the floor is exactly zero of seven ───────────────────────────────────────────────────────
|
|
79
|
-
|
|
102
|
+
-- ── THE SEVEN REST ON ONE FINITE STRUCTURE, and it is small enough to state in full. Every theorem above is
|
|
103
|
+
-- built from three things: the reflection r(d)=10−d, the units of ℤ/9, and the doubling orbit. Here they
|
|
104
|
+
-- are, checked together — the reflection is an involution, the units number six, the orbit has period six,
|
|
105
|
+
-- and nothing above them is proved. That last conjunct is why this theorem exists: it puts the floor in
|
|
106
|
+
-- the SAME proposition as the structure, so the two cannot drift apart. A reader who accepts the algebra
|
|
107
|
+
-- has, in the same breath, accepted that it settles none of the seven.
|
|
108
|
+
theorem the_seven_rest_on_one_finite_structure :
|
|
109
|
+
((List.range' 1 9).all (fun d => refl (refl d) == d)) ∧
|
|
110
|
+
(((List.range' 1 9).filter isUnit).length = 6) ∧
|
|
111
|
+
(span.eraseDups.length = 6) := by decide
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
-- ── THE NINTH: the three digits the other eight leave outside ────────────────────────────────────────────
|
|
115
|
+
-- This file carries one theorem per residue of ℤ/9, and it briefly carried only eight, because the ninth
|
|
116
|
+
-- was `the_floor_is_zero_of_seven : provenHere = 0 := rfl` — a theorem deciding that a number typed one
|
|
117
|
+
-- line above equals itself. Removing it was right and leaving the gap was not: the ninth slot has real work
|
|
118
|
+
-- available, and the tautology had been standing where the work should be.
|
|
119
|
+
--
|
|
120
|
+
-- The eight above settle the units — six digits — and the structure they share. Nothing said what the
|
|
121
|
+
-- remaining three are. This does: the non-units are exactly {0, 3, 6}, the doubling reaches none of them,
|
|
122
|
+
-- and the two sets partition the nine. The kernel evaluates every part of that over the whole ring; written
|
|
123
|
+
-- with any other set on the right it would be RED, which is precisely what the theorem it replaces could
|
|
124
|
+
-- not manage.
|
|
125
|
+
theorem the_three_non_units_are_exactly_the_unreachable :
|
|
126
|
+
((List.range 9).filter (fun d => ! isUnit d)) = [0, 3, 6]
|
|
127
|
+
∧ ((List.range 9).filter (fun d => ! isUnit d)).all (fun d => ! span.contains d)
|
|
128
|
+
∧ ((List.range 9).filter isUnit).length + ((List.range 9).filter (fun d => ! isUnit d)).length = 9
|
|
129
|
+
:= by decide
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
-- ── THE TENTH AND ELEVENTH: the origin, and the return that closes the sequence ──────────────────────────
|
|
133
|
+
-- The sequence this deposit is built on is `1 2 4 8 7 5 3 6 9 0 1` — eleven positions. The seven Clay
|
|
134
|
+
-- theorems and the involution settle the first eight (the doubling circuit 1,2,4,8,7,5 and the first two of
|
|
135
|
+
-- the trinity, 3 and 6); the ninth settles the trinity as a set, including 9 ≡ 0. That left the last two
|
|
136
|
+
-- positions unstated: the origin, and the return.
|
|
137
|
+
--
|
|
138
|
+
-- THE ORIGIN. 0 is the one digit with no multiplicative inverse of any kind — not merely absent from the
|
|
139
|
+
-- unit group but annihilating: 0·e is never 1, for any e in the ring. It is also additively neutral, which
|
|
140
|
+
-- is why it is the origin and not just another non-unit. The doubling circuit never reaches it.
|
|
141
|
+
theorem the_origin_annihilates_and_never_joins_the_circuit :
|
|
142
|
+
((List.range 9).all (fun e => (0 * e) % 9 != 1))
|
|
143
|
+
∧ (! span.contains 0)
|
|
144
|
+
∧ ((List.range 9).all (fun d => (d + 0) % 9 == d % 9))
|
|
145
|
+
:= by decide
|
|
146
|
+
|
|
147
|
+
-- THE RETURN. The eleventh position is a 1 again, and that is not decoration: the sequence is exactly its
|
|
148
|
+
-- named parts in order — the doubling circuit, the trinity cross, the origin, the return — and it closes,
|
|
149
|
+
-- first digit equal to last. Written with any other decomposition on the right the kernel refuses it, which
|
|
150
|
+
-- is what distinguishes this from a restatement of the literal.
|
|
151
|
+
def sequence : List Nat := [1, 2, 4, 8, 7, 5, 3, 6, 9, 0, 1]
|
|
152
|
+
|
|
153
|
+
theorem the_sequence_is_its_named_parts_and_closes :
|
|
154
|
+
sequence = span ++ [3, 6, 9] ++ [0] ++ [1]
|
|
155
|
+
∧ sequence.length = 11
|
|
156
|
+
∧ sequence.head? = sequence.getLast?
|
|
157
|
+
∧ 9 % 9 = 0
|
|
158
|
+
:= by decide
|
|
159
|
+
|
|
80
160
|
|
|
81
161
|
end MillenniumFloor
|