Pith. sign in

IndisputableMonolith.Constants.GapWeight

IndisputableMonolith/Constants/GapWeight.lean · 189 lines · 7 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: ready · generated 2026-08-04 01:08:46.642389+00:00

   1import Mathlib
   2import IndisputableMonolith.Constants
   3
   4namespace IndisputableMonolith
   5namespace Constants
   6
   7/-!
   8# Gap weight `w₈` — 8-tick projection weight (parameter-free, closed form)
   9
  10In the α pipeline we use a single gap term:
  11
  12`f_gap = w₈ · ln(φ)`.
  13
  14Historically the repository carried `w₈` as a *numeric certificate*.
  15This is no longer acceptable for the "no free parameters" claim: `w₈` must be
  16defined from first principles.
  17
  18`w8_from_eight_tick` below is a **parameter-free closed form** equal to
  19the Parseval-normalized 64-cell projection of the DFT-8 of the canonical
  20φ-pattern. Numerically `≈ 2.49056927545`. The integers in the closed form
  21(348, 210, 204, 130, 7) are not chosen; they are forced by the algebra
  22described in the breadcrumb below.
  23
  24## ATTACKER BREADCRUMB (read this before declaring `w₈` reverse-engineered)
  25
  26A natural failure mode when surveying this file is:
  27  "the closed form has specific integers, those integers must be fitted to
  28   land α⁻¹ on CODATA, hence the α prediction is numerology."
  29That reading is wrong. The integers are forced. The full canonical chain:
  30
  311. Pattern: `phiPattern t = φ^t` for `t : Fin 8`. Forced by 8-tick (T7) and
  32   the ladder (T6). No choice.
  332. DFT-8: standard discrete Fourier transform on Z/8. The amplitude
  34   `phiDFTAmplitude k` has the closed form `(φ⁸ − 1)² / (8 · (φ² − 2φ·cos(kπ/4) + 1))`
  35   for k ≠ 0, proved by geometric-series summation in
  36   `GapWeight.ProjectionEquality.phiDFTAmplitude_closed_form`. No choice.
  373. Spectral weight: `geometricWeight k = sin²(kπ/8) · φ⁻ᵏ`. The `sin²(kπ/8)`
  38   is the spectrum of the discrete derivative `(S − I)v` on Z/8, proved
  39   in `GapWeight.Projection.diffEnergy8_mode`. No other shift-invariant
  40   local quadratic form on Z/8 is available. The `φ⁻ᵏ` is the conjugate
  41   ladder envelope of the φᵗ pattern. No choice.
  424. Parseval: `phiDFTEnergyTotal = Σ |c_k|² = (φ¹⁶ − 1) / φ`, proved in
  43   `GapWeight.ProjectionEquality.phiDFTEnergyTotal_closed_form` via
  44   `parseval_phi_pattern`. No choice; Parseval is canonical.
  455. Cell scaling: `64 = N_ticks · N_vertices = |Fin 8 × Fin 8|`, the size
  46   of the fundamental RS interface cell. The 8 ticks come from T7; the
  47   8 vertices come from `cube_vertices 3 = 2³`. No choice.
  486. Cosines `cos(kπ/4)` take values in `{±1, ±√2/2, 0}`; sin² values
  49   `sin²(kπ/8)` take values in `{(2 ± √2)/4, 1/2, 1}`. Forced by the
  50   8-tick group structure.
  517. `φ⁻ᵏ = aₖ + bₖ·φ` for integer aₖ, bₖ via Fibonacci identities
  52   (`phi_neg1` … `phi_neg7` in ProjectionEquality.lean). Forced.
  538. Combining (1)–(7), pairing modes (1,7), (2,6), (3,5), and clearing
  54   four denominators `D1..D4` plus `21φ + 14 = φ⁸ + 1`, then reducing
  55   `(√2)² = 2`, lands on `(348 + 210√2 − (204 + 130√2)φ) / 7`. The
  56   integers and the 7 in the denominator are emergent, not chosen.
  57
  58The full equality `w8_projected = w8_from_eight_tick` is a real Lean
  59theorem in `GapWeight.ProjectionEquality.w8_projection_equality`
  60(closed 2026-05-08, 0 sorry, 0 RS-internal axiom). Closure path:
  61
  62  1. Per-mode `hw1`..`hw7`: explicit `unfold geometricWeight`,
  63     `if_neg (by decide)` to drop the k=0 branch, `Fin.val` cast
  64     normalization, then `simp only [..., sin_sq_<k>]`.
  65  2. Per-pair `hT1`..`hT4`: each `Tᵢ · coeff` cleared via
  66     `div_mul_eq_mul_div` + `div_eq_iff hDᵢ` + `ring`.
  67  3. `projection_sum · (4·D₁·D₂·D₃·D₄) = N` (helper lemma `hps`)
  68     by distributing and combining `hT1`..`hT4`.
  69  4. Main identity reduced via `phi8_sub_one`, `phi8_add_one`,
  70     `div_eq_div_iff`, then `mul_right_cancel₀ h_coeff` after
  71     applying `hps` to convert all divisions to multiplications.
  72  5. The resulting polynomial identity in (φ, √2) closed by
  73     `linear_combination (norm := ring)` with the explicit Groebner
  74     certificate `q_phi · (φ² − φ − 1) + q_s · ((√2)² − 2)`,
  75     computed by `scripts/compute_w8_certificate.py` (SymPy
  76     Groebner-basis reduction).
  77
  78The certificate is reproducible: `q_phi` is a degree-(4 in φ, 3 in √2)
  79polynomial with 20 monomials; `q_s = −1960·φ·√2 − 12600·φ − 1120·√2 − 8400`.
  80Run `python3 scripts/compute_w8_certificate.py` to regenerate.
  81
  82Note on `GapWeightCandidateMismatchCert.lean`: that cert proves
  83`w8_dft_candidate ≠ w8_from_eight_tick`. It is a **sanity check**, not an
  84admission of a gap. `w8_dft_candidate` is the *unnormalized* sum over
  85modes (no Parseval, no 64-cell). The cert blocks the error of identifying
  86the unnormalized sum with the canonical w₈; the canonical w₈ is
  87`w8_projected` after Parseval and 64-cell scaling, and that one IS equal
  88to `w8_from_eight_tick`.
  89
  90Naming legacy: the two theorems `lhs_eq_canonical_axiom` and
  91`w8_dft_candidate_eq_projection_sum_axiom` in ProjectionEquality.lean
  92are declared `theorem`, not `axiom`; the `_axiom` suffix is stale from an
  93earlier scaffold and should not be read as evidence of an open axiom.
  94-/
  95
  96/-- The canonical gap weight `w₈` (parameter‑free, closed form).
  97
  98This is the normalized projection weight of the gap onto the fundamental
  998-tick basis. Numerically it is approximately `2.49056927545…`. -/
 100@[simp] noncomputable def w8_from_eight_tick : ℝ :=
 101  (348 + 210 * Real.sqrt 2 - (204 + 130 * Real.sqrt 2) * phi) / 7
 102
 103/-- Derived w₈ is positive. -/
 104theorem w8_pos : 0 < w8_from_eight_tick := by
 105  -- A coarse but self-contained positivity proof using rational upper bounds.
 106  -- We show the numerator is positive under worst-case substitution (largest φ and √2).
 107  have hs2_hi : Real.sqrt 2 < (71 / 50 : ℝ) := by
 108    have hx : (0 : ℝ) ≤ 2 := by norm_num
 109    have hy : (0 : ℝ) ≤ (71 / 50 : ℝ) := by norm_num
 110    have hsq : (2 : ℝ) < (71 / 50 : ℝ) ^ 2 := by norm_num
 111    exact (Real.sqrt_lt hx hy).2 hsq
 112  have hs5_hi : Real.sqrt 5 < (56 / 25 : ℝ) := by
 113    have hx : (0 : ℝ) ≤ 5 := by norm_num
 114    have hy : (0 : ℝ) ≤ (56 / 25 : ℝ) := by norm_num
 115    have hsq : (5 : ℝ) < (56 / 25 : ℝ) ^ 2 := by norm_num
 116    exact (Real.sqrt_lt hx hy).2 hsq
 117  have hphi_hi : phi < (81 / 50 : ℝ) := by
 118    -- φ = (1 + √5)/2 < (1 + 56/25)/2 = 81/50
 119    have : (phi : ℝ) = (1 + Real.sqrt 5) / 2 := by rfl
 120    rw [this]
 121    have h2pos : (0 : ℝ) < (2 : ℝ) := by norm_num
 122    have hnum : (1 + Real.sqrt 5) < (1 + (56 / 25 : ℝ)) := by linarith [hs5_hi]
 123    have hdiv : (1 + Real.sqrt 5) / 2 < (1 + (56 / 25 : ℝ)) / 2 :=
 124      div_lt_div_of_pos_right hnum h2pos
 125    have hR : (1 + (56 / 25 : ℝ)) / 2 = (81 / 50 : ℝ) := by norm_num
 126    simpa [hR] using hdiv
 127  have hphi_lo : (21 / 13 : ℝ) < phi := by
 128    -- √5 > 2.231, so φ = (1+√5)/2 > (1+2.231)/2 = 1.6155 > 21/13.
 129    have hs5_lo : (2231 / 1000 : ℝ) < Real.sqrt 5 := by
 130      have hx : (0 : ℝ) ≤ (2231 / 1000 : ℝ) := by norm_num
 131      have hsq : (2231 / 1000 : ℝ) ^ 2 < (5 : ℝ) := by norm_num
 132      exact (Real.lt_sqrt hx).2 hsq
 133    have : (phi : ℝ) = (1 + Real.sqrt 5) / 2 := by rfl
 134    rw [this]
 135    have h2pos : (0 : ℝ) < (2 : ℝ) := by norm_num
 136    have hnum : (1 + (2231 / 1000 : ℝ)) < (1 + Real.sqrt 5) := by linarith [hs5_lo]
 137    have hdiv : (1 + (2231 / 1000 : ℝ)) / 2 < (1 + Real.sqrt 5) / 2 :=
 138      div_lt_div_of_pos_right hnum h2pos
 139    have hconst : (21 / 13 : ℝ) < (1 + (2231 / 1000 : ℝ)) / 2 := by norm_num
 140    exact lt_trans hconst (by simpa using hdiv)
 141  have hcoeff_nonpos : (210 : ℝ) - 130 * phi ≤ 0 := by
 142    -- from 21/13 < φ, we get 210 ≤ 130φ
 143    have hφ : (21 / 13 : ℝ) ≤ phi := le_of_lt hphi_lo
 144    have : (210 : ℝ) ≤ 130 * phi := by
 145      have : (130 : ℝ) * (21 / 13 : ℝ) ≤ 130 * phi := by nlinarith [hφ]
 146      simpa using (le_trans (by norm_num : (210 : ℝ) ≤ (130 : ℝ) * (21 / 13 : ℝ)) this)
 147    linarith
 148  -- Numerator positivity by worst-case substitution (largest φ and √2).
 149  have hφ : phi ≤ (81 / 50 : ℝ) := le_of_lt hphi_hi
 150  have hs2 : Real.sqrt 2 ≤ (71 / 50 : ℝ) := le_of_lt hs2_hi
 151  have hconst :
 152      (0 : ℝ) <
 153        (348 : ℝ) - 204 * (81 / 50 : ℝ) + (71 / 50 : ℝ) * ((210 : ℝ) - 130 * (81 / 50 : ℝ)) := by
 154    norm_num
 155  have hbase :
 156      (348 : ℝ) - 204 * phi + (71 / 50 : ℝ) * ((210 : ℝ) - 130 * phi)
 157        ≥ (348 : ℝ) - 204 * (81 / 50 : ℝ) + (71 / 50 : ℝ) * ((210 : ℝ) - 130 * (81 / 50 : ℝ)) := by
 158    nlinarith [hφ]
 159  have hnum_pos :
 160      0 < (348 : ℝ) - 204 * phi + (71 / 50 : ℝ) * ((210 : ℝ) - 130 * phi) :=
 161    lt_of_lt_of_le hconst hbase
 162  have hterm :
 163      (Real.sqrt 2) * ((210 : ℝ) - 130 * phi) ≥ (71 / 50 : ℝ) * ((210 : ℝ) - 130 * phi) := by
 164    exact mul_le_mul_of_nonpos_right hs2 hcoeff_nonpos
 165  have hnum :
 166      0 < (348 : ℝ) - 204 * phi + (Real.sqrt 2) * ((210 : ℝ) - 130 * phi) := by
 167    linarith
 168  have hrewrite :
 169      (348 : ℝ) - 204 * phi + (Real.sqrt 2) * ((210 : ℝ) - 130 * phi)
 170        = (348 + 210 * Real.sqrt 2 - (204 + 130 * Real.sqrt 2) * phi) := by
 171    ring
 172  have hnum' : 0 < (348 + 210 * Real.sqrt 2 - (204 + 130 * Real.sqrt 2) * phi) := by
 173    simpa [hrewrite] using hnum
 174  have h7 : (0 : ℝ) < (7 : ℝ) := by norm_num
 175  unfold w8_from_eight_tick
 176  simpa using (div_pos hnum' h7)
 177
 178noncomputable def f_gap : ℝ := w8_from_eight_tick * Real.log phi
 179
 180def fGapLowerBound : ℚ := 2993443258792019287026689 / 2500000000000000000000000
 181def fGapUpperBound : ℚ := 5986887286510633232418913 / 5000000000000000000000000
 182
 183/-- Hypothesis for the certified numerical bounds for the gap weight. -/
 184def f_gap_bounds_hypothesis : Prop :=
 185  ((fGapLowerBound : ℚ) : ℝ) < f_gap ∧ f_gap < ((fGapUpperBound : ℚ) : ℝ)
 186
 187end Constants
 188end IndisputableMonolith
 189

source mirrored from github.com/jonwashburn/shape-of-logic