Pith. sign in

IndisputableMonolith.Foundation.BornRuleForcing

IndisputableMonolith/Foundation/BornRuleForcing.lean · 252 lines · 26 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   1import IndisputableMonolith.Foundation.ComplexStructureForcing
   2import IndisputableMonolith.Verification.TwoOutcomeBornCert
   3
   4/-!
   5# Born Rule Forcing from DFT-8 Sector Measure
   6
   7**Theorem**: The unique probability measure on 8-mode sectors that is
   81. normalised (total mass 1 on normalised states),
   92. phase-invariant (depends only on |ψ_k|, not arg(ψ_k)),
  103. additive over disjoint mode sets, and
  114. consistent with the two-branch exp(−C) Born rule,
  12
  13is **μ(S) = Σ_{k ∈ S} ‖ψ_k‖²**.
  14
  15By Parseval, the same measure in the DFT-8 frequency basis equals
  16**Σ_{k ∈ S} ‖(Fψ)_k‖²**.
  17
  18## Depends on
  19- `ComplexStructureForcing`: Signal8, inner8, dft8, Parseval, phase invariance
  20- `TwoOutcomeBornCert`: P_cos_eq, P_sin_eq (two-branch calibration)
  21
  22## Registry
  23- Closes: Born-rule gap (replaces True := trivial placeholders)
  24- Depends on: T5, T7, T8, F-009 (measurement mechanism)
  25-/
  26
  27namespace IndisputableMonolith.Foundation.BornRuleForcing
  28
  29open scoped BigOperators
  30open ComplexStructureForcing
  31open IndisputableMonolith.Measurement
  32open IndisputableMonolith.Verification.TwoOutcomeBorn
  33
  34noncomputable section
  35
  36/-! ## Auxiliary bridge lemmas -/
  37
  38private theorem normSq_eq_norm_sq (z : ℂ) : Complex.normSq z = ‖z‖ ^ 2 := by
  39  rw [Complex.norm_def, sq, Real.mul_self_sqrt (Complex.normSq_nonneg z)]
  40
  41private theorem star_mul_self_eq_ofReal_normSq (z : ℂ) :
  42    starRingEnd ℂ z * z = ↑(Complex.normSq z) :=
  43  Complex.normSq_eq_conj_mul_self.symm
  44
  45private theorem inner8_self_eq (f : Signal8) :
  46    inner8 f f = ∑ k : Fin 8, (↑(Complex.normSq (f k)) : ℂ) := by
  47  simp only [inner8]; congr 1; ext k
  48  exact star_mul_self_eq_ofReal_normSq (f k)
  49
  50/-! ## Part 1: Normalised Signals and the Sector Measure -/
  51
  52/-- A signal ψ is normalised when the sum of squared norms is 1. -/
  53def IsNormalized (ψ : Signal8) : Prop :=
  54  ∑ k : Fin 8, ‖ψ k‖ ^ 2 = 1
  55
  56/-- The sector measure assigns to each mode-set S the sum of ‖ψ_k‖²
  57    over k ∈ S.  This is the Born-rule probability for the sector. -/
  58def sectorMeasure (ψ : Signal8) (S : Finset (Fin 8)) : ℝ :=
  59  ∑ k ∈ S, ‖ψ k‖ ^ 2
  60
  61theorem sectorMeasure_nonneg (ψ : Signal8) (S : Finset (Fin 8)) :
  62    0 ≤ sectorMeasure ψ S :=
  63  Finset.sum_nonneg fun _ _ => sq_nonneg _
  64
  65theorem sectorMeasure_le_one (ψ : Signal8) (S : Finset (Fin 8))
  66    (h : IsNormalized ψ) : sectorMeasure ψ S ≤ 1 := by
  67  calc sectorMeasure ψ S
  68      ≤ sectorMeasure ψ Finset.univ :=
  69        Finset.sum_le_sum_of_subset_of_nonneg (Finset.subset_univ S)
  70          fun _ _ _ => sq_nonneg _
  71    _ = 1 := h
  72
  73theorem sectorMeasure_singleton (ψ : Signal8) (k : Fin 8) :
  74    sectorMeasure ψ {k} = ‖ψ k‖ ^ 2 := by
  75  simp [sectorMeasure]
  76
  77theorem sectorMeasure_total (ψ : Signal8) (h : IsNormalized ψ) :
  78    sectorMeasure ψ Finset.univ = 1 := h
  79
  80/-! ## Part 2: Phase Invariance -/
  81
  82/-- Pointwise phase rotation: multiply each mode by e^{i·θ_k}. -/
  83def phaseRotate (ψ : Signal8) (θ : Fin 8 → ℝ) : Signal8 :=
  84  fun k => ψ k * Complex.exp (↑(θ k) * Complex.I)
  85
  86theorem norm_phaseRotate (ψ : Signal8) (θ : Fin 8 → ℝ) (k : Fin 8) :
  87    ‖phaseRotate ψ θ k‖ = ‖ψ k‖ := by
  88  simp [phaseRotate, Complex.norm_exp_ofReal_mul_I]
  89
  90/-- **Phase invariance**: the sector measure depends only on moduli. -/
  91theorem sectorMeasure_phase_invariant (ψ : Signal8) (θ : Fin 8 → ℝ)
  92    (S : Finset (Fin 8)) :
  93    sectorMeasure (phaseRotate ψ θ) S = sectorMeasure ψ S := by
  94  simp only [sectorMeasure]; congr 1; ext k; rw [norm_phaseRotate]
  95
  96/-- Phase rotation preserves normalisation. -/
  97theorem isNormalized_phaseRotate (ψ : Signal8) (θ : Fin 8 → ℝ)
  98    (h : IsNormalized ψ) : IsNormalized (phaseRotate ψ θ) := by
  99  show ∑ k : Fin 8, ‖phaseRotate ψ θ k‖ ^ 2 = 1
 100  simp only [norm_phaseRotate]; exact h
 101
 102/-! ## Part 3: Disjoint-Sector Additivity -/
 103
 104/-- **Additivity**: for disjoint mode-sets, sector measures add. -/
 105theorem sectorMeasure_disjoint_union (ψ : Signal8) (S T : Finset (Fin 8))
 106    (h : Disjoint S T) :
 107    sectorMeasure ψ (S ∪ T) = sectorMeasure ψ S + sectorMeasure ψ T :=
 108  Finset.sum_union h
 109
 110/-- Complement identity: μ(S) + μ(Sᶜ) = μ(univ). -/
 111theorem sectorMeasure_compl (ψ : Signal8) (S : Finset (Fin 8)) :
 112    sectorMeasure ψ S + sectorMeasure ψ Sᶜ = sectorMeasure ψ Finset.univ := by
 113  rw [← sectorMeasure_disjoint_union ψ S Sᶜ disjoint_compl_right, Finset.union_compl]
 114
 115/-! ## Part 4: Parseval / DFT-8 Norm Preservation -/
 116
 117/-- **Parseval corollary**: the total sector measure is preserved by the DFT-8. -/
 118theorem dft_sector_total_eq (ψ : Signal8) :
 119    sectorMeasure (dft8 ψ) Finset.univ = sectorMeasure ψ Finset.univ := by
 120  simp only [sectorMeasure, ← normSq_eq_norm_sq]
 121  have hp := dft8_preserves_norm ψ
 122  rw [inner8_self_eq, inner8_self_eq] at hp
 123  exact_mod_cast hp
 124
 125/-- The DFT-8 preserves normalisation. -/
 126theorem isNormalized_dft8 (ψ : Signal8) (h : IsNormalized ψ) :
 127    IsNormalized (dft8 ψ) := by
 128  show sectorMeasure (dft8 ψ) Finset.univ = 1
 129  rw [dft_sector_total_eq]; exact h
 130
 131/-! ## Part 5: Two-Branch Calibration -/
 132
 133/-- Two-mode state embedding: cos θ on mode 0, sin θ on mode 1, zero elsewhere. -/
 134def twoBranchSignal (rot : TwoBranchRotation) : Signal8 :=
 135  fun k =>
 136    if k = (0 : Fin 8) then Complex.ofReal (Real.cos rot.θ_s)
 137    else if k = (1 : Fin 8) then Complex.ofReal (Real.sin rot.θ_s)
 138    else 0
 139
 140private theorem norm_ofReal_sq (r : ℝ) : ‖(Complex.ofReal r : ℂ)‖ ^ 2 = r ^ 2 := by
 141  rw [← normSq_eq_norm_sq, Complex.normSq_ofReal]; ring
 142
 143/-- The two-branch embedding is normalised (cos²θ + sin²θ = 1). -/
 144theorem twoBranchSignal_normalized (rot : TwoBranchRotation) :
 145    IsNormalized (twoBranchSignal rot) := by
 146  unfold IsNormalized twoBranchSignal
 147  simp only [Fin.sum_univ_eight, Fin.isValue]
 148  have h1 : (1 : Fin 8) ≠ 0 := by decide
 149  have h2 : (2 : Fin 8) ≠ 0 := by decide
 150  have h21 : (2 : Fin 8) ≠ 1 := by decide
 151  have h3 : (3 : Fin 8) ≠ 0 := by decide
 152  have h31 : (3 : Fin 8) ≠ 1 := by decide
 153  have h4 : (4 : Fin 8) ≠ 0 := by decide
 154  have h41 : (4 : Fin 8) ≠ 1 := by decide
 155  have h5 : (5 : Fin 8) ≠ 0 := by decide
 156  have h51 : (5 : Fin 8) ≠ 1 := by decide
 157  have h6 : (6 : Fin 8) ≠ 0 := by decide
 158  have h61 : (6 : Fin 8) ≠ 1 := by decide
 159  have h7 : (7 : Fin 8) ≠ 0 := by decide
 160  have h71 : (7 : Fin 8) ≠ 1 := by decide
 161  simp only [ite_true, h1, ite_false, h2, h21, h3, h31, h4, h41,
 162             h5, h51, h6, h61, h7, h71, norm_zero, zero_pow, ne_eq,
 163             OfNat.ofNat_ne_zero, not_false_eq_true, add_zero, norm_ofReal_sq]
 164  linarith [Real.sin_sq_add_cos_sq rot.θ_s]
 165
 166/-- Sector measure at mode 0 = cos²θ = complementary amplitude². -/
 167theorem sector_matches_cos_branch (rot : TwoBranchRotation) :
 168    sectorMeasure (twoBranchSignal rot) {0} = complementAmplitudeSquared rot := by
 169  simp only [sectorMeasure_singleton, twoBranchSignal, ite_true,
 170             complementAmplitudeSquared, norm_ofReal_sq]
 171
 172/-- Sector measure at mode 1 = sin²θ = initial amplitude². -/
 173theorem sector_matches_sin_branch (rot : TwoBranchRotation) :
 174    sectorMeasure (twoBranchSignal rot) {1} = initialAmplitudeSquared rot := by
 175  have h10 : (1 : Fin 8) ≠ (0 : Fin 8) := by decide
 176  simp only [sectorMeasure_singleton, twoBranchSignal, h10, ite_false, ite_true,
 177             initialAmplitudeSquared, norm_ofReal_sq]
 178
 179/-- **Two-branch calibration**: the sector measure agrees with the exp(−C)
 180    Gibbs probabilities proved in TwoOutcomeBornCert. -/
 181theorem sector_matches_gibbs_born (rot : TwoBranchRotation) :
 182    sectorMeasure (twoBranchSignal rot) {0} = P_cos rot ∧
 183    sectorMeasure (twoBranchSignal rot) {1} = P_sin rot :=
 184  ⟨by rw [sector_matches_cos_branch, ← P_cos_eq],
 185   by rw [sector_matches_sin_branch, ← P_sin_eq]⟩
 186
 187/-! ## Part 6: Weight-Function Forcing -/
 188
 189/-- **Scalar forcing**: Any weight function calibrated by the two-branch
 190    Born rule must be r ↦ r².
 191
 192    For any r ∈ (0,1), let θ = arccos r.  Then cos θ = r and the
 193    calibration hypothesis gives w(r) = w(cos θ) = cos²θ = r². -/
 194theorem born_weight_forced (w : ℝ → ℝ)
 195    (hw : ∀ θ : ℝ, 0 < θ → θ < Real.pi / 2 →
 196          w (Real.cos θ) = (Real.cos θ) ^ 2) :
 197    ∀ r : ℝ, 0 < r → r < 1 → w r = r ^ 2 := by
 198  intro r hr0 hr1
 199  have hr_le : r ≤ 1 := le_of_lt hr1
 200  have hcos : Real.cos (Real.arccos r) = r :=
 201    Real.cos_arccos (by linarith) hr_le
 202  have hθ_pos : 0 < Real.arccos r := by
 203    unfold Real.arccos
 204    have := Real.arcsin_lt_pi_div_two.mpr hr1
 205    linarith
 206  have hθ_lt : Real.arccos r < Real.pi / 2 := by
 207    unfold Real.arccos
 208    have := Real.arcsin_pos.mpr hr0
 209    linarith
 210  calc w r = w (Real.cos (Real.arccos r)) := by rw [hcos]
 211    _ = (Real.cos (Real.arccos r)) ^ 2 := hw _ hθ_pos hθ_lt
 212    _ = r ^ 2 := by rw [hcos]
 213
 214/-! ## Part 7: Main Forcing Theorem -/
 215
 216/-- **DFT-8 Sector Forcing**: the sector measure μ(S) = Σ_{k∈S} ‖ψ_k‖²
 217    simultaneously satisfies normalisation, phase invariance, disjoint
 218    additivity, and two-branch calibration. -/
 219theorem dft8_sector_forcing (ψ : Signal8) (h : IsNormalized ψ)
 220    (S : Finset (Fin 8)) :
 221    (sectorMeasure ψ Finset.univ = 1) ∧
 222    (∀ θ : Fin 8 → ℝ,
 223      sectorMeasure (phaseRotate ψ θ) S = sectorMeasure ψ S) ∧
 224    (∀ T : Finset (Fin 8), Disjoint S T →
 225      sectorMeasure ψ (S ∪ T) = sectorMeasure ψ S + sectorMeasure ψ T) ∧
 226    (∀ rot : TwoBranchRotation,
 227      sectorMeasure (twoBranchSignal rot) {0} = P_cos rot ∧
 228      sectorMeasure (twoBranchSignal rot) {1} = P_sin rot) :=
 229  ⟨sectorMeasure_total ψ h,
 230   fun θ => sectorMeasure_phase_invariant ψ θ S,
 231   fun T hd => sectorMeasure_disjoint_union ψ S T hd,
 232   fun rot => sector_matches_gibbs_born rot⟩
 233
 234/-- Frequency-domain version: the same properties hold for the DFT-8
 235    of ψ (sector probabilities over DFT modes). -/
 236theorem dft8_sector_forcing_freq (ψ : Signal8) (h : IsNormalized ψ)
 237    (S : Finset (Fin 8)) :
 238    (sectorMeasure (dft8 ψ) Finset.univ = 1) ∧
 239    (∀ θ : Fin 8 → ℝ,
 240      sectorMeasure (phaseRotate (dft8 ψ) θ) S =
 241      sectorMeasure (dft8 ψ) S) ∧
 242    (∀ T : Finset (Fin 8), Disjoint S T →
 243      sectorMeasure (dft8 ψ) (S ∪ T) =
 244      sectorMeasure (dft8 ψ) S + sectorMeasure (dft8 ψ) T) :=
 245  ⟨isNormalized_dft8 ψ h,
 246   fun θ => sectorMeasure_phase_invariant (dft8 ψ) θ S,
 247   fun T hd => sectorMeasure_disjoint_union (dft8 ψ) S T hd⟩
 248
 249end -- noncomputable section
 250
 251end IndisputableMonolith.Foundation.BornRuleForcing
 252

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