Pith. sign in

IndisputableMonolith.Foundation.PrimitiveRecognitionCalculus.DeltaAmplitude

IndisputableMonolith/Foundation/PrimitiveRecognitionCalculus/DeltaAmplitude.lean · 135 lines · 20 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   1/-
   2  PrimitiveRecognitionCalculus/DeltaAmplitude.lean
   3
   4  Delta-native amplitude.
   5
   6  The native object is finite amplitude data, not an infinite-dimensional Hilbert
   7  space. A finite amplitude vector assigns a real amplitude to each finite
   8  distinction alternative. The squared norm is a finite sum, and normalization
   9  gives a finite probability distribution.
  10
  11  This first pass uses real amplitudes. The complex/Hilbert layer is explicitly a
  12  display completion to be added on top of this finite carrier.
  13  The second pass below adds finite complex amplitudes directly; the infinite
  14  Hilbert space is still only the display completion.
  15
  16  No project-local axioms. No sorry.
  17-/
  18
  19import Mathlib
  20import IndisputableMonolith.Foundation.PrimitiveRecognitionCalculus.DeltaProbability
  21
  22namespace IndisputableMonolith
  23namespace Foundation
  24namespace PrimitiveRecognitionCalculus
  25namespace DeltaAmplitude
  26
  27/-- A finite real amplitude vector on `Fin (N+1)`. -/
  28abbrev Amp (N : ℕ) := Fin (N + 1) → ℝ
  29
  30/-- A finite complex amplitude vector on `Fin (N+1)`. -/
  31abbrev ComplexAmp (N : ℕ) := Fin (N + 1) → ℂ
  32
  33/-- Squared norm of a finite amplitude vector. -/
  34noncomputable def normSq {N : ℕ} (ψ : Amp N) : ℝ :=
  35  Finset.univ.sum fun i : Fin (N + 1) => (ψ i)^2
  36
  37/-- Born weight of one finite alternative. -/
  38noncomputable def bornWeight {N : ℕ} (ψ : Amp N) (i : Fin (N + 1)) : ℝ :=
  39  (ψ i)^2
  40
  41/-- A finite amplitude is normalized when its squared norm is one. -/
  42def Normalized {N : ℕ} (ψ : Amp N) : Prop := normSq ψ = 1
  43
  44theorem bornWeight_nonneg {N : ℕ} (ψ : Amp N) (i : Fin (N + 1)) :
  45    0 ≤ bornWeight ψ i := by
  46  unfold bornWeight
  47  positivity
  48
  49theorem normSq_nonneg {N : ℕ} (ψ : Amp N) : 0 ≤ normSq ψ := by
  50  unfold normSq
  51  exact Finset.sum_nonneg (fun i _ => sq_nonneg (ψ i))
  52
  53/-- The Born weights of a normalized finite amplitude sum to one. -/
  54theorem born_weights_sum_one {N : ℕ} {ψ : Amp N} (hψ : Normalized ψ) :
  55    Finset.univ.sum (fun i : Fin (N + 1) => bornWeight ψ i) = 1 := by
  56  simpa [Normalized, normSq, bornWeight] using hψ
  57
  58/-- A finite linear map preserves norm exactly when it preserves `normSq`. This
  59is the finite native core of unitary evolution; Hilbert-space unitaries are the
  60display-completion version. -/
  61def NormPreserving {N : ℕ} (U : Amp N → Amp N) : Prop :=
  62  ∀ ψ : Amp N, normSq (U ψ) = normSq ψ
  63
  64theorem normalized_of_normPreserving {N : ℕ} {U : Amp N → Amp N}
  65    (hU : NormPreserving U) {ψ : Amp N} (hψ : Normalized ψ) : Normalized (U ψ) := by
  66  unfold Normalized
  67  rw [hU ψ, hψ]
  68
  69/-- **Delta-native amplitude headline.** Finite amplitude data has nonnegative
  70Born weights; normalized finite amplitudes yield total probability one; and
  71norm-preserving finite transformations preserve normalization. -/
  72theorem delta_amplitude_headline (N : ℕ) :
  73    (∀ ψ : Amp N, ∀ i : Fin (N + 1), 0 ≤ bornWeight ψ i)
  74      ∧ (∀ ψ : Amp N, Normalized ψ →
  75          Finset.univ.sum (fun i : Fin (N + 1) => bornWeight ψ i) = 1)
  76      ∧ (∀ U : Amp N → Amp N, NormPreserving U →
  77          ∀ ψ : Amp N, Normalized ψ → Normalized (U ψ)) :=
  78  ⟨bornWeight_nonneg, fun _ hψ => born_weights_sum_one hψ,
  79    fun _ hU _ hψ => normalized_of_normPreserving hU hψ⟩
  80
  81/-! ## Complex finite amplitudes -/
  82
  83/-- Complex Born weight `|z|² = re² + im²` for one finite alternative. -/
  84noncomputable def complexBornWeight {N : ℕ} (ψ : ComplexAmp N) (i : Fin (N + 1)) : ℝ :=
  85  (ψ i).re ^ 2 + (ψ i).im ^ 2
  86
  87/-- Squared norm of a finite complex amplitude vector. -/
  88noncomputable def complexNormSq {N : ℕ} (ψ : ComplexAmp N) : ℝ :=
  89  Finset.univ.sum fun i : Fin (N + 1) => complexBornWeight ψ i
  90
  91/-- A finite complex amplitude is normalized when its squared norm is one. -/
  92def ComplexNormalized {N : ℕ} (ψ : ComplexAmp N) : Prop := complexNormSq ψ = 1
  93
  94theorem complexBornWeight_nonneg {N : ℕ} (ψ : ComplexAmp N) (i : Fin (N + 1)) :
  95    0 ≤ complexBornWeight ψ i := by
  96  unfold complexBornWeight
  97  nlinarith [sq_nonneg (ψ i).re, sq_nonneg (ψ i).im]
  98
  99theorem complexNormSq_nonneg {N : ℕ} (ψ : ComplexAmp N) : 0 ≤ complexNormSq ψ := by
 100  unfold complexNormSq
 101  exact Finset.sum_nonneg (fun i _ => complexBornWeight_nonneg ψ i)
 102
 103theorem complex_born_weights_sum_one {N : ℕ} {ψ : ComplexAmp N} (hψ : ComplexNormalized ψ) :
 104    Finset.univ.sum (fun i : Fin (N + 1) => complexBornWeight ψ i) = 1 := by
 105  simpa [ComplexNormalized, complexNormSq] using hψ
 106
 107/-- Finite complex norm preservation, the native finite version of unitary
 108evolution. -/
 109def ComplexNormPreserving {N : ℕ} (U : ComplexAmp N → ComplexAmp N) : Prop :=
 110  ∀ ψ : ComplexAmp N, complexNormSq (U ψ) = complexNormSq ψ
 111
 112theorem complex_normalized_of_normPreserving {N : ℕ} {U : ComplexAmp N → ComplexAmp N}
 113    (hU : ComplexNormPreserving U) {ψ : ComplexAmp N} (hψ : ComplexNormalized ψ) :
 114    ComplexNormalized (U ψ) := by
 115  unfold ComplexNormalized
 116  rw [hU ψ, hψ]
 117
 118/-- **Complex finite-amplitude headline.** Complex amplitudes already have a
 119native finite layer: Born weights are nonnegative, normalized finite complex
 120amplitudes sum to one, and norm-preserving finite complex transformations
 121preserve normalization. Hilbert space remains the display completion. -/
 122theorem delta_complex_amplitude_headline (N : ℕ) :
 123    (∀ ψ : ComplexAmp N, ∀ i : Fin (N + 1), 0 ≤ complexBornWeight ψ i)
 124      ∧ (∀ ψ : ComplexAmp N, ComplexNormalized ψ →
 125          Finset.univ.sum (fun i : Fin (N + 1) => complexBornWeight ψ i) = 1)
 126      ∧ (∀ U : ComplexAmp N → ComplexAmp N, ComplexNormPreserving U →
 127          ∀ ψ : ComplexAmp N, ComplexNormalized ψ → ComplexNormalized (U ψ)) :=
 128  ⟨complexBornWeight_nonneg, fun _ hψ => complex_born_weights_sum_one hψ,
 129    fun _ hU _ hψ => complex_normalized_of_normPreserving hU hψ⟩
 130
 131end DeltaAmplitude
 132end PrimitiveRecognitionCalculus
 133end Foundation
 134end IndisputableMonolith
 135

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