Pith. sign in

IndisputableMonolith.Verification.NeutrinoBaselineChoiceSet

IndisputableMonolith/Verification/NeutrinoBaselineChoiceSet.lean · 280 lines · 43 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   1import Mathlib
   2import IndisputableMonolith.Physics.NeutrinoSector
   3
   4/-!
   5# Neutrino Baseline Choice-Set Enumeration (O5 Progress)
   6
   7This module adds a finite-search closure step for the neutrino absolute baseline
   8question:
   9
  10- Parameterize the lightest neutrino rung by a quarter-rung numerator `r1_num`.
  11- Enforce the structural gap profile (`+2`, then `+7/2`) in numerator form.
  12- Impose a deep-atmospheric window for `r3` and the canonical `-1/4` phase class.
  13
  14Under these constraints, the admissible baseline set collapses to a singleton
  15`r1 = -239/4`.
  16-/
  17
  18namespace IndisputableMonolith
  19namespace Verification
  20namespace NeutrinoBaselineChoiceSet
  21
  22open Physics.NeutrinoSector
  23
  24/-- Candidate encoded by the quarter-rung numerator for `r1 = r1_num / 4`. -/
  25structure BaselineCandidate where
  26  r1_num : ℤ
  27  deriving Repr, DecidableEq
  28
  29/-- Numerator of `r2`, using the structural `r2 - r1 = 2` gap (`= 8/4`). -/
  30def r2_num (c : BaselineCandidate) : ℤ := c.r1_num + 8
  31
  32/-- Numerator of `r3`, using `r3 - r2 = 7/2` (`= 14/4`). -/
  33def r3_num (c : BaselineCandidate) : ℤ := c.r1_num + 22
  34
  35/-- Convert a quarter-rung numerator to a rational rung value. -/
  36def quarterRung (n : ℤ) : ℚ := (n : ℚ) / 4
  37
  38def r1 (c : BaselineCandidate) : ℚ := quarterRung c.r1_num
  39def r2 (c : BaselineCandidate) : ℚ := quarterRung (r2_num c)
  40def r3 (c : BaselineCandidate) : ℚ := quarterRung (r3_num c)
  41
  42/-- Canonical baseline candidate from the current neutrino construction. -/
  43def canonicalCandidate : BaselineCandidate := { r1_num := -239 }
  44
  45/-- Finite search window for deep-ladder baselines (contains the canonical value). -/
  46def candidatePool : List BaselineCandidate :=
  47  (List.range 121).map (fun n => { r1_num := (n : ℤ) - 300 })
  48
  49/-- Atmospheric rung must lie in the deep window `(-55, -54)`, i.e. `(-220, -216)/4`. -/
  50def deepAtmosphericWindow (c : BaselineCandidate) : Bool :=
  51  decide ((-220 : ℤ) < r3_num c ∧ r3_num c < (-216 : ℤ))
  52
  53/-- Canonical 8-tick phase class: atmospheric rung is at `integer - 1/4`. -/
  54def quarterPhaseClass (c : BaselineCandidate) : Bool :=
  55  decide (((r3_num c + 1) % 4) = (0 : ℤ))
  56
  57/-- Structural gap profile in doubled/quarter coordinates. -/
  58def structuralGapProfile (c : BaselineCandidate) : Bool :=
  59  decide (r2_num c - c.r1_num = 8 ∧ r3_num c - r2_num c = 14)
  60
  61/-- Combined admissibility filter for the baseline search. -/
  62def admissible (c : BaselineCandidate) : Bool :=
  63  deepAtmosphericWindow c && quarterPhaseClass c && structuralGapProfile c
  64
  65def validCandidates : List BaselineCandidate :=
  66  candidatePool.filter admissible
  67
  68/-- "Deepest edge-only sublattice" condition for atmospheric numerators:
  69in the deep window and in the canonical `-1/4` phase class. -/
  70def deepestEdgeOnlyAtmospheric (n : ℤ) : Prop :=
  71  ((-220 : ℤ) < n ∧ n < (-216 : ℤ)) ∧ (((n + 1) % 4) = (0 : ℤ))
  72
  73theorem candidate_pool_count : candidatePool.length = 121 := by
  74  native_decide
  75
  76theorem structural_gap_profile_holds (c : BaselineCandidate) :
  77    structuralGapProfile c = true := by
  78  simp [structuralGapProfile, r2_num, r3_num]
  79
  80/-- Structural atmospheric numerator from deepest edge level (`rung_nu3 = -54`)
  81and quarter-phase offset (`-1/4`): `4*(-54) - 1 = -217`. -/
  82theorem deepest_edge_atmospheric_num_eq :
  83    (4 * rung_nu3 - 1 : ℤ) = -217 := by
  84  norm_num [rung_nu3]
  85
  86/-- Deep-window filter is forced once the atmospheric numerator is fixed by
  87edge confinement to `4*rung_nu3 - 1`. -/
  88theorem deep_window_forced_from_edge_confinement (c : BaselineCandidate)
  89    (hdeep : r3_num c = (4 * rung_nu3 - 1 : ℤ)) :
  90    deepAtmosphericWindow c = true := by
  91  have hr3 : r3_num c = -217 := by
  92    simpa [deepest_edge_atmospheric_num_eq] using hdeep
  93  simp [deepAtmosphericWindow, hr3]
  94
  95/-- Quarter-phase (`-1/4`) class is forced by the same deepest-edge atmospheric
  96numerator, via 8-tick modular arithmetic. -/
  97theorem quarter_phase_forced_from_eight_tick_offset (c : BaselineCandidate)
  98    (hdeep : r3_num c = (4 * rung_nu3 - 1 : ℤ)) :
  99    quarterPhaseClass c = true := by
 100  have hr3 : r3_num c = -217 := by
 101    simpa [deepest_edge_atmospheric_num_eq] using hdeep
 102  simp [quarterPhaseClass, hr3]
 103
 104/-- The deep-window and quarter-phase filters are jointly forced by the
 105edge-confinement atmospheric numerator. -/
 106theorem filter_pair_forced_from_edge_confinement (c : BaselineCandidate)
 107    (hdeep : r3_num c = (4 * rung_nu3 - 1 : ℤ)) :
 108    deepAtmosphericWindow c = true ∧ quarterPhaseClass c = true := by
 109  exact ⟨deep_window_forced_from_edge_confinement c hdeep,
 110    quarter_phase_forced_from_eight_tick_offset c hdeep⟩
 111
 112/-- Within the deep window, the `-1/4` phase class picks a unique atmospheric numerator. -/
 113theorem deepest_edge_only_forces_atmospheric_num (n : ℤ)
 114    (h : deepestEdgeOnlyAtmospheric n) :
 115    n = -217 := by
 116  rcases h with ⟨hwin, hphase⟩
 117  have hdiv : (4 : ℤ) ∣ (n + 1) := (Int.dvd_iff_emod_eq_zero).2 hphase
 118  rcases hdiv with ⟨k, hk⟩
 119  omega
 120
 121/-- The deep-atmospheric window plus quarter-phase class force `r3_num = -217`. -/
 122theorem deep_window_phase_forces_r3_num (c : BaselineCandidate)
 123    (hwin : deepAtmosphericWindow c = true)
 124    (hphase : quarterPhaseClass c = true) :
 125    r3_num c = -217 := by
 126  have hwin' : (-220 : ℤ) < r3_num c ∧ r3_num c < (-216 : ℤ) := by
 127    exact decide_eq_true_eq.mp (by simpa [deepAtmosphericWindow] using hwin)
 128  have hphase' : ((r3_num c + 1) % 4) = (0 : ℤ) := by
 129    exact decide_eq_true_eq.mp (by simpa [quarterPhaseClass] using hphase)
 130  exact deepest_edge_only_forces_atmospheric_num (r3_num c) ⟨hwin', hphase'⟩
 131
 132/-- Under the same filters, the atmospheric rung value is uniquely `-217/4`. -/
 133theorem deep_window_phase_forces_r3_value (c : BaselineCandidate)
 134    (hwin : deepAtmosphericWindow c = true)
 135    (hphase : quarterPhaseClass c = true) :
 136    r3 c = (-217 : ℚ) / 4 := by
 137  have hr3 : r3_num c = -217 := deep_window_phase_forces_r3_num c hwin hphase
 138  simp [r3, quarterRung, hr3]
 139
 140/-- With fixed spacing (`r3_num = r1_num + 22`), the same filters force `r1_num = -239`. -/
 141theorem deep_window_phase_forces_r1_num (c : BaselineCandidate)
 142    (hwin : deepAtmosphericWindow c = true)
 143    (hphase : quarterPhaseClass c = true) :
 144    c.r1_num = -239 := by
 145  have hr3 : r3_num c = -217 := deep_window_phase_forces_r3_num c hwin hphase
 146  have hr3' : c.r1_num + 22 = (-217 : ℤ) := by simpa [r3_num] using hr3
 147  omega
 148
 149/-- Corresponding forced baseline rung value. -/
 150theorem deep_window_phase_forces_r1_value (c : BaselineCandidate)
 151    (hwin : deepAtmosphericWindow c = true)
 152    (hphase : quarterPhaseClass c = true) :
 153    r1 c = (-239 : ℚ) / 4 := by
 154  have hr1 : c.r1_num = -239 := deep_window_phase_forces_r1_num c hwin hphase
 155  simp [r1, quarterRung, hr1]
 156
 157/-- Deep-window forcing aligns exactly with the canonical atmospheric rung `res_nu3`. -/
 158theorem deep_window_phase_forces_res_nu3 (c : BaselineCandidate)
 159    (hwin : deepAtmosphericWindow c = true)
 160    (hphase : quarterPhaseClass c = true) :
 161    r3 c = res_nu3 := by
 162  calc
 163    r3 c = (-217 : ℚ) / 4 := deep_window_phase_forces_r3_value c hwin hphase
 164    _ = res_nu3 := by simpa using res_nu3_simp.symm
 165
 166/-- With built-in spacing, the same forcing aligns with the canonical baseline `res_nu1`. -/
 167theorem deep_window_phase_forces_res_nu1 (c : BaselineCandidate)
 168    (hwin : deepAtmosphericWindow c = true)
 169    (hphase : quarterPhaseClass c = true) :
 170    r1 c = res_nu1 := by
 171  calc
 172    r1 c = (-239 : ℚ) / 4 := deep_window_phase_forces_r1_value c hwin hphase
 173    _ = res_nu1 := by simpa using res_nu1_simp.symm
 174
 175/-- Full baseline forcing from edge-confinement atmospheric level:
 176filters are forced, then `r3`/`r1` collapse to canonical `res_nu3`/`res_nu1`. -/
 177theorem edge_confinement_forces_canonical_baseline (c : BaselineCandidate)
 178    (hdeep : r3_num c = (4 * rung_nu3 - 1 : ℤ)) :
 179    r3 c = res_nu3 ∧ r1 c = res_nu1 := by
 180  have hpair : deepAtmosphericWindow c = true ∧ quarterPhaseClass c = true :=
 181    filter_pair_forced_from_edge_confinement c hdeep
 182  exact ⟨deep_window_phase_forces_res_nu3 c hpair.1 hpair.2,
 183    deep_window_phase_forces_res_nu1 c hpair.1 hpair.2⟩
 184
 185/-- Absolute baseline numerator forced from deep-ladder atmospheric confinement
 186plus fixed structural spacing `r3_num = r1_num + 22`. -/
 187theorem absolute_baseline_num_forced_from_deep_ladder (c : BaselineCandidate)
 188    (hdeep : r3_num c = (4 * rung_nu3 - 1 : ℤ)) :
 189    c.r1_num = (4 * rung_nu3 - 1 : ℤ) - 22 := by
 190  have hr3 : c.r1_num + 22 = (4 * rung_nu3 - 1 : ℤ) := by
 191    simpa [r3_num] using hdeep
 192  omega
 193
 194/-- Numeric form of the same forced baseline numerator at `D=3`: `r1_num = -239`. -/
 195theorem absolute_baseline_num_forced_eq_neg239 (c : BaselineCandidate)
 196    (hdeep : r3_num c = (4 * rung_nu3 - 1 : ℤ)) :
 197    c.r1_num = -239 := by
 198  calc
 199    c.r1_num = (4 * rung_nu3 - 1 : ℤ) - 22 :=
 200      absolute_baseline_num_forced_from_deep_ladder c hdeep
 201    _ = -239 := by norm_num [rung_nu3]
 202
 203/-- O5' iff surface: deep-ladder atmospheric confinement is equivalent to the
 204canonical baseline candidate (single-field structure). -/
 205theorem deep_ladder_constraint_iff_canonical_candidate (c : BaselineCandidate) :
 206    (r3_num c = (4 * rung_nu3 - 1 : ℤ)) ↔ c = canonicalCandidate := by
 207  constructor
 208  · intro hdeep
 209    have hr1 : c.r1_num = -239 := absolute_baseline_num_forced_eq_neg239 c hdeep
 210    cases c
 211    simp [canonicalCandidate] at hr1 ⊢
 212    simpa using hr1
 213  · intro hc
 214    subst hc
 215    simp [canonicalCandidate, r3_num, rung_nu3]
 216
 217/-- Baseline candidate forced directly by deep-ladder atmospheric geometry:
 218`r3_num = 4 * rung_nu3 - 1` and fixed spacing `r3_num = r1_num + 22`. -/
 219def deepLadderForcedCandidate : BaselineCandidate where
 220  r1_num := (4 * rung_nu3 - 1 : ℤ) - 22
 221
 222/-- The deep-ladder forced candidate is exactly the canonical one. -/
 223theorem deep_ladder_forced_candidate_eq_canonical :
 224    deepLadderForcedCandidate = canonicalCandidate := by
 225  simp [deepLadderForcedCandidate, canonicalCandidate, rung_nu3]
 226
 227/-- The deep-ladder forced candidate reproduces canonical `res_nu3`/`res_nu1`
 228without any extra filter assumptions. -/
 229theorem deep_ladder_geometry_forces_canonical_baseline :
 230    r3 deepLadderForcedCandidate = res_nu3 ∧
 231    r1 deepLadderForcedCandidate = res_nu1 := by
 232  have hdeep : r3_num deepLadderForcedCandidate = (4 * rung_nu3 - 1 : ℤ) := by
 233    simp [r3_num, deepLadderForcedCandidate]
 234  simpa using edge_confinement_forces_canonical_baseline deepLadderForcedCandidate hdeep
 235
 236theorem valid_candidate_count : validCandidates.length = 1 := by
 237  native_decide
 238
 239theorem valid_candidates_singleton :
 240    validCandidates = [canonicalCandidate] := by
 241  native_decide
 242
 243theorem canonical_is_valid :
 244    canonicalCandidate ∈ validCandidates := by
 245  rw [valid_candidates_singleton]
 246  simp
 247
 248theorem unique_valid_candidate (c : BaselineCandidate) (hc : c ∈ validCandidates) :
 249    c = canonicalCandidate := by
 250  rw [valid_candidates_singleton] at hc
 251  simpa using hc
 252
 253/-- The singleton baseline agrees with the neutrino module baseline rung. -/
 254theorem canonical_r1_matches_res_nu1 :
 255    r1 canonicalCandidate = res_nu1 := by
 256  simpa [r1, quarterRung, canonicalCandidate] using res_nu1_simp.symm
 257
 258/-- The induced atmospheric rung from the singleton baseline matches `res_nu3`. -/
 259theorem canonical_r3_matches_res_nu3 :
 260    r3 canonicalCandidate = res_nu3 := by
 261  have h : r3 canonicalCandidate = (-217 : ℚ) / 4 := by
 262    norm_num [r3, quarterRung, r3_num, canonicalCandidate]
 263  calc
 264    r3 canonicalCandidate = (-217 : ℚ) / 4 := h
 265    _ = res_nu3 := by simpa using res_nu3_simp.symm
 266
 267/-- Enumerated-choice closure summary for O5 under the current filter set. -/
 268theorem baseline_choice_set_collapsed :
 269    validCandidates = [canonicalCandidate] := valid_candidates_singleton
 270
 271/-- Any admissible baseline reproduces the current `res_nu1` value. -/
 272theorem admissible_baselines_match_res_nu1 (c : BaselineCandidate) (hc : c ∈ validCandidates) :
 273    r1 c = res_nu1 := by
 274  have huniq : c = canonicalCandidate := unique_valid_candidate c hc
 275  simpa [huniq] using canonical_r1_matches_res_nu1
 276
 277end NeutrinoBaselineChoiceSet
 278end Verification
 279end IndisputableMonolith
 280

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