@ceccec/millennium-solutions 9.2.6 → 9.2.7

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 **2607** ledger entries and **59** domains, recomputed each build. The advantage is
10
+ > Generated from the **2629** 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 2607 receipts by the digital root of their address, the **sparsest** region is digit
36
+ Grouping the 2629 receipts by the digital root of their address, the **sparsest** region is digit
37
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
38
+ at **2629** (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**.
@@ -18786,5 +18786,115 @@
18786
18786
  "key": "lean_split_the_coin_step_and_the_coins_are_inverse_for_every_c",
18787
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
18788
  "receipt": "1c1ebe41-4e80-80ad-b352-e90a09922838"
18789
+ },
18790
+ {
18791
+ "key": "lean_light_the_second_returns_from_the_metre_and_the_period_for_every_s",
18792
+ "name": "lean light.lean: the_second_returns_from_the_metre_and_the_period_for_every_s — ∀ s : Nat, travel s / c = s ∧ periods s / dNuCs = s — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18793
+ "receipt": "1de974bb-854a-879c-a8f0-712b59f8d7bc"
18794
+ },
18795
+ {
18796
+ "key": "lean_mechanical_repeated_doubling_is_the_power_of_two_for_every_k",
18797
+ "name": "lean mechanical.lean: repeated_doubling_is_the_power_of_two_for_every_k — ∀ k : Nat, dbl k = 2 ^ k — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18798
+ "receipt": "71d6eeaa-fd06-8af1-893f-dfa60297892d"
18799
+ },
18800
+ {
18801
+ "key": "lean_mechanical_relation_digitroot_is_residue_mod9_for_every_n",
18802
+ "name": "lean mechanical.lean: relation_digitroot_is_residue_mod9_for_every_n — ∀ n : Nat, 0 < n → DR n = (n - 1) % 9 + 1 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18803
+ "receipt": "22aed33c-e7ff-80ef-aded-b466c40bf0e4"
18804
+ },
18805
+ {
18806
+ "key": "lean_mechanical_the_nine_times_table_always_digital_roots_to_nine_for_every_k",
18807
+ "name": "lean mechanical.lean: the_nine_times_table_always_digital_roots_to_nine_for_every_k — ∀ k : Nat, 0 < k → DR (9 * k) = 9 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18808
+ "receipt": "36b3b4ea-25f1-8083-b075-d707f2fb91ea"
18809
+ },
18810
+ {
18811
+ "key": "lean_mechanical_the_digital_root_has_the_residue_of_its_number",
18812
+ "name": "lean mechanical.lean: the_digital_root_has_the_residue_of_its_number — ∀ n : Nat, DR n % 9 = n % 9 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18813
+ "receipt": "efc4383f-1f52-8cfc-9d4a-d291f4aa5bd4"
18814
+ },
18815
+ {
18816
+ "key": "lean_mechanical_a_digital_root_lies_between_one_and_nine",
18817
+ "name": "lean mechanical.lean: a_digital_root_lies_between_one_and_nine — ∀ n : Nat, 0 < n → 1 ≤ DR n ∧ DR n ≤ 9 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18818
+ "receipt": "298da32e-60d7-8bf9-9135-c6e904ae937f"
18819
+ },
18820
+ {
18821
+ "key": "lean_mechanical_casting_out_nines_is_multiplicative_for_every_a_b",
18822
+ "name": "lean mechanical.lean: casting_out_nines_is_multiplicative_for_every_a_b — ∀ a b : Nat, DR (a * b) = DR (DR a * DR b) — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18823
+ "receipt": "58842a8d-45b2-8316-b9a6-440b595e6782"
18824
+ },
18825
+ {
18826
+ "key": "lean_mechanical_the_moduli_dimensions_are_three_g_minus_three_and_six_g_minus_six_for_every_g",
18827
+ "name": "lean mechanical.lean: the_moduli_dimensions_are_three_g_minus_three_and_six_g_minus_six_for_every_g — ∀ g : Nat, 3 * g - 3 = (6 * g - 6) / 2 ∧ 6 * g - 6 = 2 * (3 * g - 3) — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18828
+ "receipt": "633ba212-336a-8600-90d6-836751f6b813"
18829
+ },
18830
+ {
18831
+ "key": "lean_reach_exhaustion_never_reaches_its_own_bound_for_every_n",
18832
+ "name": "lean reach.lean: exhaustion_never_reaches_its_own_bound_for_every_n — ∀ n : Nat, (List.range n).length = n ∧ n ∉ List.range n — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18833
+ "receipt": "dfc2849f-3870-823b-ade5-f036c5f40166"
18834
+ },
18835
+ {
18836
+ "key": "lean_reach_the_successor_of_every_bound_lies_outside_for_every_n",
18837
+ "name": "lean reach.lean: the_successor_of_every_bound_lies_outside_for_every_n — ∀ n : Nat, n + 1 ∉ List.range n — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18838
+ "receipt": "1113761c-4967-898e-a9d9-d836a27b42ae"
18839
+ },
18840
+ {
18841
+ "key": "lean_reach_doubling_the_domain_leaves_the_same_hole_for_every_n",
18842
+ "name": "lean reach.lean: doubling_the_domain_leaves_the_same_hole_for_every_n — ∀ n : Nat, 2 * n ∉ List.range (2 * n) — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18843
+ "receipt": "f57338c8-104b-8058-90f6-b86622f64f86"
18844
+ },
18845
+ {
18846
+ "key": "lean_z9plus_doubling_has_period_six_for_every_k",
18847
+ "name": "lean z9plus.lean: doubling_has_period_six_for_every_k — ∀ k : Nat, pw 2 (k + 6) = pw 2 k — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18848
+ "receipt": "2c9ca8bc-08a6-87e8-ba10-0390547c7318"
18849
+ },
18850
+ {
18851
+ "key": "lean_z9plus_orbit_digital_roots_have_period_six_for_every_k",
18852
+ "name": "lean z9plus.lean: orbit_digital_roots_have_period_six_for_every_k — ∀ k : Nat, dr (pw 2 (k + 6)) = dr (pw 2 k) — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18853
+ "receipt": "e88dfdf8-3c33-87c9-b480-65d2db2769ac"
18854
+ },
18855
+ {
18856
+ "key": "lean_z9plus_the_doubling_orbit_is_read_from_the_exponent_mod_six",
18857
+ "name": "lean z9plus.lean: the_doubling_orbit_is_read_from_the_exponent_mod_six — ∀ k : Nat, pw 2 k = pw 2 (k % 6) — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18858
+ "receipt": "c688c966-b59f-8e39-91d8-fa1f9fc564a0"
18859
+ },
18860
+ {
18861
+ "key": "lean_z9plus_the_orbit_never_meets_the_triad_for_every_k",
18862
+ "name": "lean z9plus.lean: the_orbit_never_meets_the_triad_for_every_k — ∀ k : Nat, pw 2 k ≠ 0 ∧ pw 2 k ≠ 3 ∧ pw 2 k ≠ 6 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18863
+ "receipt": "8c3dfc38-91e6-8a00-9d2f-ac18974cd169"
18864
+ },
18865
+ {
18866
+ "key": "lean_z9plus_fibonacci_residues_mod_nine_repeat_every_twenty_four_steps",
18867
+ "name": "lean z9plus.lean: fibonacci_residues_mod_nine_repeat_every_twenty_four_steps — ∀ k : Nat, fib (k + 24) % 9 = fib k % 9 ∧ fib (k + 25) % 9 = fib (k + 1) % 9 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18868
+ "receipt": "04f6a9cd-b19f-8b13-b5d9-7d88fec0139e"
18869
+ },
18870
+ {
18871
+ "key": "lean_z9plus_pisano_period_mod_nine_is_twenty_four_for_every_k",
18872
+ "name": "lean z9plus.lean: pisano_period_mod_nine_is_twenty_four_for_every_k — ∀ k : Nat, fib9 (k + 24) = fib9 k — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18873
+ "receipt": "985c1ebe-dc19-877e-8573-82765db72126"
18874
+ },
18875
+ {
18876
+ "key": "lean_z9plus_the_fuelled_gcd_is_the_gcd_when_the_fuel_exceeds_the_second_argument",
18877
+ "name": "lean z9plus.lean: the_fuelled_gcd_is_the_gcd_when_the_fuel_exceeds_the_second_argument — ∀ f a b : Nat, b < f → gcdF f a b = Nat.gcd a b — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18878
+ "receipt": "73c32b16-76ca-8bbc-91f3-3d550cd02477"
18879
+ },
18880
+ {
18881
+ "key": "lean_z9plus_consecutive_fibonacci_numbers_are_coprime",
18882
+ "name": "lean z9plus.lean: consecutive_fibonacci_numbers_are_coprime — ∀ n : Nat, Nat.gcd (fib n) (fib (n + 1)) = 1 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18883
+ "receipt": "5ae6ebcf-4c89-80d4-bc8c-1e5fed479a69"
18884
+ },
18885
+ {
18886
+ "key": "lean_z9plus_consecutive_fibonacci_are_coprime_for_every_n",
18887
+ "name": "lean z9plus.lean: consecutive_fibonacci_are_coprime_for_every_n — ∀ n : Nat, gcd9 (fib n) (fib (n + 1)) = 1 — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18888
+ "receipt": "424d4751-1648-8d01-b6aa-e31be117166a"
18889
+ },
18890
+ {
18891
+ "key": "lean_z9plus_digital_root_agrees_with_the_residue_for_every_n",
18892
+ "name": "lean z9plus.lean: digital_root_agrees_with_the_residue_for_every_n — ∀ n : Nat, 0 < n → (dr n = 9 ↔ m9 n = 0) — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18893
+ "receipt": "20da0230-2b9f-8735-848e-8009809d9f04"
18894
+ },
18895
+ {
18896
+ "key": "lean_z9plus_digital_root_is_the_digit_sum_residue_for_every_n",
18897
+ "name": "lean z9plus.lean: digital_root_is_the_digit_sum_residue_for_every_n — ∀ n : Nat, m9 (digitSum n) = m9 n — proved by the Lean kernel for every value (by\n intro), standard axioms only — checked by lean.ts",
18898
+ "receipt": "694fefdf-a71b-8019-84e5-04477e7be3d8"
18789
18899
  }
18790
18900
  ]
@@ -147,4 +147,12 @@ theorem the_root_moves_with_the_unit_so_it_is_not_about_light :
147
147
  theorem the_definitions_are_seven_and_travel_fixes_zero :
148
148
  defining.length = 7 ∧ travel 0 = 0 := by decide
149
149
 
150
+
151
+ -- ── the capped row above, proved for every whole number of seconds — no bound ───────────────────────────────
152
+ -- the second reads back from the metre and from the caesium period at every s, not only s < 100.
153
+ theorem the_second_returns_from_the_metre_and_the_period_for_every_s :
154
+ ∀ s : Nat, travel s / c = s ∧ periods s / dNuCs = s := by
155
+ intro s
156
+ exact ⟨Nat.mul_div_cancel_left s (by decide), Nat.mul_div_cancel_left s (by decide)⟩
157
+
150
158
  end Light
@@ -452,4 +452,73 @@ theorem the_product_of_any_three_consecutive_integers_is_divisible_by_six_for_ev
452
452
  have h3 := the_product_of_three_consecutive_numbers_is_a_multiple_of_three n
453
453
  omega
454
454
 
455
+
456
+ -- ── the capped rows above, proved for every value — no bound ─────────────────────────────────────────────────
457
+ -- relation_digitroot_is_residue_mod9 (n ≤ 200), the_nine_times_table_always_digital_roots_to_nine (k ≤ 60),
458
+ -- casting_out_nines_is_multiplicative (a, b ≤ 60), repeated_doubling_is_the_power_of_two (k ≤ 20) and
459
+ -- the_moduli_dimensions (g ≤ 20) were checked up to a bound; these prove them for every value.
460
+ theorem repeated_doubling_is_the_power_of_two_for_every_k : ∀ k : Nat, dbl k = 2 ^ k := by
461
+ intro k
462
+ induction k with
463
+ | zero => rfl
464
+ | succ k ih =>
465
+ show 2 * dbl k = 2 ^ (k + 1)
466
+ rw [ih, Nat.pow_succ, Nat.mul_comm]
467
+
468
+ theorem relation_digitroot_is_residue_mod9_for_every_n : ∀ n : Nat, 0 < n → DR n = (n - 1) % 9 + 1 := by
469
+ intro n hn
470
+ unfold DR
471
+ rw [if_neg (show ¬ ((n == 0) = true) by simp; omega)]
472
+ omega
473
+
474
+ theorem the_nine_times_table_always_digital_roots_to_nine_for_every_k : ∀ k : Nat, 0 < k → DR (9 * k) = 9 := by
475
+ intro k hk
476
+ rw [relation_digitroot_is_residue_mod9_for_every_n (9 * k) (by omega)]
477
+ omega
478
+
479
+ theorem the_digital_root_has_the_residue_of_its_number : ∀ n : Nat, DR n % 9 = n % 9 := by
480
+ intro n
481
+ cases n with
482
+ | zero => rfl
483
+ | succ m =>
484
+ rw [relation_digitroot_is_residue_mod9_for_every_n (m + 1) (Nat.succ_pos m)]
485
+ omega
486
+
487
+ theorem a_digital_root_lies_between_one_and_nine : ∀ n : Nat, 0 < n → 1 ≤ DR n ∧ DR n ≤ 9 := by
488
+ intro n hn
489
+ rw [relation_digitroot_is_residue_mod9_for_every_n n hn]
490
+ have := Nat.mod_lt (n - 1) (show 0 < 9 by decide)
491
+ exact ⟨by omega, by omega⟩
492
+
493
+ theorem casting_out_nines_is_multiplicative_for_every_a_b : ∀ a b : Nat, DR (a * b) = DR (DR a * DR b) := by
494
+ intro a b
495
+ cases a with
496
+ | zero => rw [Nat.zero_mul, show DR 0 = 0 from rfl, Nat.zero_mul]; rfl
497
+ | succ a =>
498
+ cases b with
499
+ | zero => rw [Nat.mul_zero, show DR 0 = 0 from rfl, Nat.mul_zero]; rfl
500
+ | succ b =>
501
+ have hab : 0 < (a + 1) * (b + 1) := Nat.mul_pos (Nat.succ_pos a) (Nat.succ_pos b)
502
+ have ha := a_digital_root_lies_between_one_and_nine (a + 1) (Nat.succ_pos a)
503
+ have hb := a_digital_root_lies_between_one_and_nine (b + 1) (Nat.succ_pos b)
504
+ have hp : 0 < DR (a + 1) * DR (b + 1) := Nat.mul_pos (by omega) (by omega)
505
+ have r1 := the_digital_root_has_the_residue_of_its_number ((a + 1) * (b + 1))
506
+ have r2 := the_digital_root_has_the_residue_of_its_number (DR (a + 1) * DR (b + 1))
507
+ have r3 : DR (a + 1) * DR (b + 1) % 9 = (a + 1) * (b + 1) % 9 := by
508
+ rw [Nat.mul_mod, the_digital_root_has_the_residue_of_its_number,
509
+ the_digital_root_has_the_residue_of_its_number, ← Nat.mul_mod]
510
+ obtain ⟨b1l, b1r⟩ := a_digital_root_lies_between_one_and_nine _ hab
511
+ obtain ⟨b2l, b2r⟩ := a_digital_root_lies_between_one_and_nine _ hp
512
+ clear ha hb
513
+ generalize DR ((a + 1) * (b + 1)) = x at *
514
+ generalize DR (DR (a + 1) * DR (b + 1)) = y at *
515
+ generalize (a + 1) * (b + 1) = m at *
516
+ generalize DR (a + 1) * DR (b + 1) = p at *
517
+ omega
518
+
519
+ theorem the_moduli_dimensions_are_three_g_minus_three_and_six_g_minus_six_for_every_g :
520
+ ∀ g : Nat, 3 * g - 3 = (6 * g - 6) / 2 ∧ 6 * g - 6 = 2 * (3 * g - 3) := by
521
+ intro g
522
+ exact ⟨by omega, by omega⟩
523
+
455
524
  end Mechanical
@@ -89,4 +89,17 @@ theorem the_predecessor_returns_every_successor : ∀ n : Nat, (n + 1) - 1 = n :
89
89
  -- named for one it cannot observe is worse than no theorem: it reads as a kernel-checked proof of a
90
90
  -- statement the kernel never saw.
91
91
 
92
+
93
+ -- ── the three bounded rows above, proved for every bound — no list of bounds ─────────────────────────────────
94
+ -- the file's own point, now without a range: no exhaustion over 0..n-1 contains n, n + 1, or (at 2n) 2n.
95
+ theorem exhaustion_never_reaches_its_own_bound_for_every_n : ∀ n : Nat, (List.range n).length = n ∧ n ∉ List.range n := by
96
+ intro n
97
+ exact ⟨List.length_range n, fun h => Nat.lt_irrefl n (List.mem_range.mp h)⟩
98
+ theorem the_successor_of_every_bound_lies_outside_for_every_n : ∀ n : Nat, n + 1 ∉ List.range n := by
99
+ intro n h
100
+ exact Nat.lt_irrefl n (Nat.lt_trans (Nat.lt_succ_self n) (List.mem_range.mp h))
101
+ theorem doubling_the_domain_leaves_the_same_hole_for_every_n : ∀ n : Nat, 2 * n ∉ List.range (2 * n) := by
102
+ intro n h
103
+ exact Nat.lt_irrefl (2 * n) (List.mem_range.mp h)
104
+
92
105
  end Reach
@@ -15640,5 +15640,137 @@
15640
15640
  "verdict": "UNVERIFIED",
15641
15641
  "ground": "no candidate in the current space — nothing to recompute",
15642
15642
  "receipt": "1c1ebe41-4e80-80ad-b352-e90a09922838"
15643
+ },
15644
+ {
15645
+ "key": "lean_light_the_second_returns_from_the_metre_and_the_period_for_every_s",
15646
+ "verdict": "UNVERIFIED",
15647
+ "ground": "no candidate in the current space — nothing to recompute",
15648
+ "receipt": "1de974bb-854a-879c-a8f0-712b59f8d7bc"
15649
+ },
15650
+ {
15651
+ "key": "lean_mechanical_repeated_doubling_is_the_power_of_two_for_every_k",
15652
+ "verdict": "UNVERIFIED",
15653
+ "ground": "no candidate in the current space — nothing to recompute",
15654
+ "receipt": "71d6eeaa-fd06-8af1-893f-dfa60297892d"
15655
+ },
15656
+ {
15657
+ "key": "lean_mechanical_relation_digitroot_is_residue_mod9_for_every_n",
15658
+ "verdict": "UNVERIFIED",
15659
+ "ground": "no candidate in the current space — nothing to recompute",
15660
+ "receipt": "22aed33c-e7ff-80ef-aded-b466c40bf0e4"
15661
+ },
15662
+ {
15663
+ "key": "lean_mechanical_the_nine_times_table_always_digital_roots_to_nine_for_every_k",
15664
+ "verdict": "UNVERIFIED",
15665
+ "ground": "no candidate in the current space — nothing to recompute",
15666
+ "receipt": "36b3b4ea-25f1-8083-b075-d707f2fb91ea"
15667
+ },
15668
+ {
15669
+ "key": "lean_mechanical_the_digital_root_has_the_residue_of_its_number",
15670
+ "verdict": "UNVERIFIED",
15671
+ "ground": "no candidate in the current space — nothing to recompute",
15672
+ "receipt": "efc4383f-1f52-8cfc-9d4a-d291f4aa5bd4"
15673
+ },
15674
+ {
15675
+ "key": "lean_mechanical_a_digital_root_lies_between_one_and_nine",
15676
+ "verdict": "UNVERIFIED",
15677
+ "ground": "no candidate in the current space — nothing to recompute",
15678
+ "receipt": "298da32e-60d7-8bf9-9135-c6e904ae937f"
15679
+ },
15680
+ {
15681
+ "key": "lean_mechanical_casting_out_nines_is_multiplicative_for_every_a_b",
15682
+ "verdict": "UNVERIFIED",
15683
+ "ground": "no candidate in the current space — nothing to recompute",
15684
+ "receipt": "58842a8d-45b2-8316-b9a6-440b595e6782"
15685
+ },
15686
+ {
15687
+ "key": "lean_mechanical_the_moduli_dimensions_are_three_g_minus_three_and_six_g_minus_six_for_every_g",
15688
+ "verdict": "UNVERIFIED",
15689
+ "ground": "no candidate in the current space — nothing to recompute",
15690
+ "receipt": "633ba212-336a-8600-90d6-836751f6b813"
15691
+ },
15692
+ {
15693
+ "key": "lean_reach_exhaustion_never_reaches_its_own_bound_for_every_n",
15694
+ "verdict": "UNVERIFIED",
15695
+ "ground": "no candidate in the current space — nothing to recompute",
15696
+ "receipt": "dfc2849f-3870-823b-ade5-f036c5f40166"
15697
+ },
15698
+ {
15699
+ "key": "lean_reach_the_successor_of_every_bound_lies_outside_for_every_n",
15700
+ "verdict": "UNVERIFIED",
15701
+ "ground": "no candidate in the current space — nothing to recompute",
15702
+ "receipt": "1113761c-4967-898e-a9d9-d836a27b42ae"
15703
+ },
15704
+ {
15705
+ "key": "lean_reach_doubling_the_domain_leaves_the_same_hole_for_every_n",
15706
+ "verdict": "UNVERIFIED",
15707
+ "ground": "no candidate in the current space — nothing to recompute",
15708
+ "receipt": "f57338c8-104b-8058-90f6-b86622f64f86"
15709
+ },
15710
+ {
15711
+ "key": "lean_z9plus_doubling_has_period_six_for_every_k",
15712
+ "verdict": "UNVERIFIED",
15713
+ "ground": "no candidate in the current space — nothing to recompute",
15714
+ "receipt": "2c9ca8bc-08a6-87e8-ba10-0390547c7318"
15715
+ },
15716
+ {
15717
+ "key": "lean_z9plus_orbit_digital_roots_have_period_six_for_every_k",
15718
+ "verdict": "UNVERIFIED",
15719
+ "ground": "no candidate in the current space — nothing to recompute",
15720
+ "receipt": "e88dfdf8-3c33-87c9-b480-65d2db2769ac"
15721
+ },
15722
+ {
15723
+ "key": "lean_z9plus_the_doubling_orbit_is_read_from_the_exponent_mod_six",
15724
+ "verdict": "UNVERIFIED",
15725
+ "ground": "no candidate in the current space — nothing to recompute",
15726
+ "receipt": "c688c966-b59f-8e39-91d8-fa1f9fc564a0"
15727
+ },
15728
+ {
15729
+ "key": "lean_z9plus_the_orbit_never_meets_the_triad_for_every_k",
15730
+ "verdict": "UNVERIFIED",
15731
+ "ground": "no candidate in the current space — nothing to recompute",
15732
+ "receipt": "8c3dfc38-91e6-8a00-9d2f-ac18974cd169"
15733
+ },
15734
+ {
15735
+ "key": "lean_z9plus_fibonacci_residues_mod_nine_repeat_every_twenty_four_steps",
15736
+ "verdict": "UNVERIFIED",
15737
+ "ground": "no candidate in the current space — nothing to recompute",
15738
+ "receipt": "04f6a9cd-b19f-8b13-b5d9-7d88fec0139e"
15739
+ },
15740
+ {
15741
+ "key": "lean_z9plus_pisano_period_mod_nine_is_twenty_four_for_every_k",
15742
+ "verdict": "UNVERIFIED",
15743
+ "ground": "no candidate in the current space — nothing to recompute",
15744
+ "receipt": "985c1ebe-dc19-877e-8573-82765db72126"
15745
+ },
15746
+ {
15747
+ "key": "lean_z9plus_the_fuelled_gcd_is_the_gcd_when_the_fuel_exceeds_the_second_argument",
15748
+ "verdict": "UNVERIFIED",
15749
+ "ground": "no candidate in the current space — nothing to recompute",
15750
+ "receipt": "73c32b16-76ca-8bbc-91f3-3d550cd02477"
15751
+ },
15752
+ {
15753
+ "key": "lean_z9plus_consecutive_fibonacci_numbers_are_coprime",
15754
+ "verdict": "UNVERIFIED",
15755
+ "ground": "no candidate in the current space — nothing to recompute",
15756
+ "receipt": "5ae6ebcf-4c89-80d4-bc8c-1e5fed479a69"
15757
+ },
15758
+ {
15759
+ "key": "lean_z9plus_consecutive_fibonacci_are_coprime_for_every_n",
15760
+ "verdict": "UNVERIFIED",
15761
+ "ground": "no candidate in the current space — nothing to recompute",
15762
+ "receipt": "424d4751-1648-8d01-b6aa-e31be117166a"
15763
+ },
15764
+ {
15765
+ "key": "lean_z9plus_digital_root_agrees_with_the_residue_for_every_n",
15766
+ "verdict": "UNVERIFIED",
15767
+ "ground": "no candidate in the current space — nothing to recompute",
15768
+ "receipt": "20da0230-2b9f-8735-848e-8009809d9f04"
15769
+ },
15770
+ {
15771
+ "key": "lean_z9plus_digital_root_is_the_digit_sum_residue_for_every_n",
15772
+ "verdict": "UNVERIFIED",
15773
+ "ground": "no candidate in the current space — nothing to recompute",
15774
+ "receipt": "694fefdf-a71b-8019-84e5-04477e7be3d8"
15643
15775
  }
15644
15776
  ]
@@ -205,4 +205,96 @@ theorem both_parts_sum_to_zero :
205
205
  m9 ((R.filter (fun d => R.any (fun e => m9 (d * e) == 1))).foldl (· + ·) 0) == 0
206
206
  ∧ m9 ((R.filter (fun d => ! R.any (fun e => m9 (d * e) == 1))).foldl (· + ·) 0) == 0 := by decide
207
207
 
208
+
209
+ -- ── the capped rows above, proved for every value — no bound ─────────────────────────────────────────────────
210
+ -- doubling_has_period_six (k < 30), orbit_digital_roots_have_period_six (k < 24), the_orbit_never_meets_the_triad
211
+ -- (k < 40), pisano_period_mod_nine_is_twenty_four (k < 30), consecutive_fibonacci_are_coprime (n ≤ 25) and
212
+ -- digital_root_agrees_with_the_residue (n ≤ 300) were checked up to a bound; these prove them for every value.
213
+ -- 2⁶ ≡ 1 mod 9 turns the orbit; the pair (fib k, fib (k+1)) mod 9 returns after 24 steps; gcd9 is Euclid with fuel
214
+ -- a + b + 1, which always exceeds what Euclid needs, so it is the gcd.
215
+ theorem doubling_has_period_six_for_every_k : ∀ k : Nat, pw 2 (k + 6) = pw 2 k := by
216
+ intro k
217
+ unfold pw m9
218
+ rw [Nat.pow_add, Nat.mul_mod]
219
+ have h : 2 ^ 6 % 9 = 1 := by decide
220
+ rw [h, Nat.mul_one, Nat.mod_mod]
221
+
222
+ theorem orbit_digital_roots_have_period_six_for_every_k : ∀ k : Nat, dr (pw 2 (k + 6)) = dr (pw 2 k) := by
223
+ intro k
224
+ rw [doubling_has_period_six_for_every_k]
225
+
226
+ theorem the_doubling_orbit_is_read_from_the_exponent_mod_six : ∀ k : Nat, pw 2 k = pw 2 (k % 6) := by
227
+ intro k
228
+ induction k using Nat.strongRecOn with
229
+ | _ k ih =>
230
+ if hk : k < 6 then rw [Nat.mod_eq_of_lt hk]
231
+ else
232
+ have e : k = (k - 6) + 6 := by omega
233
+ rw [e, doubling_has_period_six_for_every_k, ih (k - 6) (by omega), Nat.add_mod_right]
234
+
235
+ theorem the_orbit_never_meets_the_triad_for_every_k : ∀ k : Nat, pw 2 k ≠ 0 ∧ pw 2 k ≠ 3 ∧ pw 2 k ≠ 6 := by
236
+ intro k
237
+ rw [the_doubling_orbit_is_read_from_the_exponent_mod_six]
238
+ have h : k % 6 < 6 := Nat.mod_lt _ (by decide)
239
+ generalize k % 6 = j at h ⊢
240
+ revert j
241
+ decide
242
+
243
+ theorem fibonacci_residues_mod_nine_repeat_every_twenty_four_steps :
244
+ ∀ k : Nat, fib (k + 24) % 9 = fib k % 9 ∧ fib (k + 25) % 9 = fib (k + 1) % 9 := by
245
+ intro k
246
+ induction k with
247
+ | zero => decide
248
+ | succ k ih =>
249
+ refine ⟨ih.2, ?_⟩
250
+ show (fib (k + 24) + fib (k + 25)) % 9 = (fib k + fib (k + 1)) % 9
251
+ rw [Nat.add_mod, ih.1, ih.2, ← Nat.add_mod]
252
+
253
+ theorem pisano_period_mod_nine_is_twenty_four_for_every_k : ∀ k : Nat, fib9 (k + 24) = fib9 k := by
254
+ intro k
255
+ exact (fibonacci_residues_mod_nine_repeat_every_twenty_four_steps k).1
256
+
257
+ theorem the_fuelled_gcd_is_the_gcd_when_the_fuel_exceeds_the_second_argument :
258
+ ∀ f a b : Nat, b < f → gcdF f a b = Nat.gcd a b := by
259
+ intro f
260
+ induction f with
261
+ | zero => intro a b h; exact absurd h (Nat.not_lt_zero b)
262
+ | succ f ih =>
263
+ intro a b h
264
+ cases b with
265
+ | zero => show a = Nat.gcd a 0; rw [Nat.gcd_zero_right]
266
+ | succ b =>
267
+ show gcdF f (b + 1) (a % (b + 1)) = Nat.gcd a (b + 1)
268
+ have hm : a % (b + 1) < b + 1 := Nat.mod_lt a (Nat.succ_pos b)
269
+ rw [ih (b + 1) (a % (b + 1)) (by omega), Nat.gcd_comm a (b + 1), Nat.gcd_rec (b + 1) a, Nat.gcd_comm]
270
+
271
+ theorem consecutive_fibonacci_numbers_are_coprime : ∀ n : Nat, Nat.gcd (fib n) (fib (n + 1)) = 1 := by
272
+ intro n
273
+ induction n with
274
+ | zero => show Nat.gcd 0 1 = 1; exact Nat.gcd_zero_left 1
275
+ | succ n ih =>
276
+ show Nat.gcd (fib (n + 1)) (fib n + fib (n + 1)) = 1
277
+ rw [Nat.gcd_rec, Nat.add_mod_right, ← Nat.gcd_rec, Nat.gcd_comm, ih]
278
+
279
+ theorem consecutive_fibonacci_are_coprime_for_every_n : ∀ n : Nat, gcd9 (fib n) (fib (n + 1)) = 1 := by
280
+ intro n
281
+ unfold gcd9
282
+ rw [the_fuelled_gcd_is_the_gcd_when_the_fuel_exceeds_the_second_argument _ _ _ (by omega)]
283
+ exact consecutive_fibonacci_numbers_are_coprime n
284
+
285
+ theorem digital_root_agrees_with_the_residue_for_every_n : ∀ n : Nat, 0 < n → (dr n = 9 ↔ m9 n = 0) := by
286
+ intro n hn
287
+ unfold dr m9
288
+ rw [if_neg (show ¬ ((n == 0) = true) by simp; omega)]
289
+ by_cases h : n % 9 = 0
290
+ · simp [h]
291
+ · rw [if_neg (show ¬ ((n % 9 == 0) = true) by simpa using h)]
292
+ constructor
293
+ · intro e; have := Nat.mod_lt n (show 0 < 9 by decide); omega
294
+ · intro e; exact absurd e h
295
+
296
+ theorem digital_root_is_the_digit_sum_residue_for_every_n : ∀ n : Nat, m9 (digitSum n) = m9 n := by
297
+ intro n
298
+ exact Reversal.the_digit_sum_has_the_residue_of_the_number_mod_nine_for_every_n n
299
+
208
300
  end Z9Plus