Pith. sign in

IndisputableMonolith.Gravity.Analysis.ReggeExactFlatHessianBlochSymbolZero4D

IndisputableMonolith/Gravity/Analysis/ReggeExactFlatHessianBlochSymbolZero4D.lean · 166 lines · 14 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   1import Mathlib
   2import IndisputableMonolith.Gravity.Analysis.ReggeExactFlatHessianBlochData4D
   3import IndisputableMonolith.Gravity.Analysis.ReggeExactFlatHessianBlochSymbol4D
   4
   5/-!
   6# Exact midpoint Bloch symbol vanishes at zero momentum
   7
   8Proves `∀ H, exactMidpointBlochSymbolZero H = 0` by expanding the
   9zero-momentum trig polynomial as a quartic form
  10`∑_{a,b,c,d} Q_abcd H_ab H_cd` with rational coefficients `Q_abcd`
  11read from `couplingTable`, then discharging `Q_abcd = 0` for all
  12index quadruples by `native_decide` over `ℚ`.
  13
  14Inhabits `TypedResidual_midpointBloch_symbolZero` (same forall).
  15-/
  16
  17namespace IndisputableMonolith
  18namespace Gravity
  19namespace Analysis
  20namespace ReggeExactFlatHessianBlochSymbolZero4D
  21
  22open ReggeExactFlatHessianBlochData4D
  23open ReggeExactFlatHessianBlochSymbol4D
  24open BigOperators
  25
  26set_option maxRecDepth 4096
  27set_option maxHeartbeats 4000000
  28
  29/-! ## §1. Rational quartic coefficients (computable) -/
  30
  31/-- Computable rational coupling weight (Data.`Coupling.s` is marked
  32noncomputable by section). -/
  33def couplingS (coup : Coupling) : ℚ :=
  34  (coup.num : ℚ) / (coup.den : ℚ)
  35
  36theorem couplingS_eq_s (coup : Coupling) : couplingS coup = coup.s := rfl
  37
  38/-- Quartic coefficient of the zero-momentum symbol:
  39`Q_abcd = ∑_i (1/2) s_i (De_i)_a (De_i)_b (Dep_i)_c (Dep_i)_d`. -/
  40def qCoeff (a b c d : Fin 4) : ℚ :=
  41  ∑ i : CouplingIdx,
  42    (1 / 2 : ℚ) * couplingS couplingTable[i] *
  43      (couplingTable[i].De a : ℚ) * (couplingTable[i].De b : ℚ) *
  44      (couplingTable[i].Dep c : ℚ) * (couplingTable[i].Dep d : ℚ)
  45
  46/-- **THEOREM:** every rational quartic coefficient vanishes. -/
  47theorem qCoeff_eq_zero : ∀ (a b c d : Fin 4), qCoeff a b c d = 0 := by
  48  native_decide
  49
  50noncomputable section
  51
  52/-! ## §2. Expand symbolZero through the quartic form -/
  53
  54/-- One coupling's real monomial coefficient before summing over the table. -/
  55def couplingMonomial (coup : Coupling) (a b c d : Fin 4) : ℝ :=
  56  (1 / 2 : ℝ) * (couplingS coup : ℝ) *
  57    (coup.De a : ℝ) * (coup.De b : ℝ) * (coup.Dep c : ℝ) * (coup.Dep d : ℝ)
  58
  59private theorem edgeStrain_mul_edgeStrain (H : Mat4) (De Dep : Fin 4 → ℤ) :
  60    edgeStrain H De * edgeStrain H Dep =
  61      ∑ a : Fin 4, ∑ b : Fin 4, ∑ c : Fin 4, ∑ d : Fin 4,
  62        H a b * H c d * (De a : ℝ) * (De b : ℝ) * (Dep c : ℝ) * (Dep d : ℝ) := by
  63  unfold edgeStrain
  64  simp_rw [Finset.sum_mul, Finset.mul_sum]
  65  refine Finset.sum_congr rfl fun _ _ => Finset.sum_congr rfl fun _ _ =>
  66    Finset.sum_congr rfl fun _ _ => Finset.sum_congr rfl fun _ _ => ?_
  67  ring
  68
  69private theorem couplingWeight_eq_quartic (H : Mat4) (coup : Coupling) :
  70    couplingWeight H coup =
  71      ∑ a : Fin 4, ∑ b : Fin 4, ∑ c : Fin 4, ∑ d : Fin 4,
  72        couplingMonomial coup a b c d * H a b * H c d := by
  73  unfold couplingWeight couplingMonomial
  74  rw [← couplingS_eq_s]
  75  have hre :
  76      (1 / 2 : ℝ) * (couplingS coup : ℝ) * edgeStrain H coup.De * edgeStrain H coup.Dep =
  77        ((1 / 2 : ℝ) * (couplingS coup : ℝ)) *
  78          (edgeStrain H coup.De * edgeStrain H coup.Dep) := by
  79    ring
  80  rw [hre, edgeStrain_mul_edgeStrain]
  81  simp_rw [Finset.mul_sum]
  82  refine Finset.sum_congr rfl fun _ _ => Finset.sum_congr rfl fun _ _ =>
  83    Finset.sum_congr rfl fun _ _ => Finset.sum_congr rfl fun _ _ => ?_
  84  ring
  85
  86private theorem qCoeff_cast_eq_sum (a b c d : Fin 4) :
  87    (qCoeff a b c d : ℝ) =
  88      ∑ i : CouplingIdx, couplingMonomial couplingTable[i] a b c d := by
  89  unfold qCoeff couplingMonomial
  90  rw [Rat.cast_sum]
  91  refine Finset.sum_congr rfl fun _ _ => ?_
  92  push_cast
  93  ring
  94
  95private theorem sum_comm_idx_fin4
  96    {α : Type*} [AddCommMonoid α]
  97    (f : CouplingIdx → Fin 4 → Fin 4 → Fin 4 → Fin 4 → α) :
  98    (∑ i : CouplingIdx, ∑ a : Fin 4, ∑ b : Fin 4, ∑ c : Fin 4, ∑ d : Fin 4,
  99        f i a b c d) =
 100      ∑ a : Fin 4, ∑ b : Fin 4, ∑ c : Fin 4, ∑ d : Fin 4,
 101        ∑ i : CouplingIdx, f i a b c d := by
 102  rw [Finset.sum_comm]
 103  refine Finset.sum_congr rfl fun _ _ => ?_
 104  rw [Finset.sum_comm]
 105  refine Finset.sum_congr rfl fun _ _ => ?_
 106  rw [Finset.sum_comm]
 107  refine Finset.sum_congr rfl fun _ _ => ?_
 108  rw [Finset.sum_comm]
 109
 110private theorem factor_HabHcd (H : Mat4) (a b c d : Fin 4) :
 111    (∑ i : CouplingIdx,
 112        couplingMonomial couplingTable[i] a b c d * H a b * H c d) =
 113      (qCoeff a b c d : ℝ) * H a b * H c d := by
 114  have hα :
 115      ∀ i : CouplingIdx,
 116        couplingMonomial couplingTable[i] a b c d * H a b * H c d =
 117          couplingMonomial couplingTable[i] a b c d * (H a b * H c d) := by
 118    intro i; ring
 119  simp_rw [hα]
 120  rw [← Finset.sum_mul, ← qCoeff_cast_eq_sum]
 121  ring
 122
 123private theorem sum_weight_eq_sum_quartic_terms (H : Mat4) :
 124    (∑ i : CouplingIdx, couplingWeight H couplingTable[i]) =
 125      ∑ a : Fin 4, ∑ b : Fin 4, ∑ c : Fin 4, ∑ d : Fin 4,
 126        (qCoeff a b c d : ℝ) * H a b * H c d := by
 127  refine (Finset.sum_congr rfl fun i _ =>
 128    couplingWeight_eq_quartic H couplingTable[i]).trans ?_
 129  refine (sum_comm_idx_fin4
 130      (fun (i : CouplingIdx) (a b c d : Fin 4) =>
 131        couplingMonomial (couplingTable[i]) a b c d * H a b * H c d)).trans ?_
 132  refine Finset.sum_congr rfl fun a _ => Finset.sum_congr rfl fun b _ =>
 133    Finset.sum_congr rfl fun c _ => Finset.sum_congr rfl fun d _ =>
 134      factor_HabHcd H a b c d
 135
 136/-- Zero-momentum symbol equals the quartic form with coefficients `qCoeff`. -/
 137theorem exactMidpointBlochSymbolZero_eq_quartic (H : Mat4) :
 138    exactMidpointBlochSymbolZero H =
 139      ∑ a : Fin 4, ∑ b : Fin 4, ∑ c : Fin 4, ∑ d : Fin 4,
 140        (qCoeff a b c d : ℝ) * H a b * H c d := by
 141  unfold exactMidpointBlochSymbolZero couplingWeightIdx
 142  exact sum_weight_eq_sum_quartic_terms H
 143
 144/-! ## §3. Main theorem -/
 145
 146/-- **THEOREM:** the exact midpoint Bloch symbol vanishes at zero momentum. -/
 147theorem exactMidpointBlochSymbolZero_eq_zero (H : Mat4) :
 148    exactMidpointBlochSymbolZero H = 0 := by
 149  rw [exactMidpointBlochSymbolZero_eq_quartic]
 150  refine Finset.sum_eq_zero fun a _ => Finset.sum_eq_zero fun b _ =>
 151    Finset.sum_eq_zero fun c _ => Finset.sum_eq_zero fun d _ => ?_
 152  simp [qCoeff_eq_zero a b c d]
 153
 154/-- Inhabits `TypedResidual_midpointBloch_symbolZero`
 155(`∀ H, exactMidpointBlochSymbolZero H = 0`). -/
 156theorem typedResidual_midpointBloch_symbolZero :
 157    ∀ H : Mat4, exactMidpointBlochSymbolZero H = 0 :=
 158  exactMidpointBlochSymbolZero_eq_zero
 159
 160end
 161
 162end ReggeExactFlatHessianBlochSymbolZero4D
 163end Analysis
 164end Gravity
 165end IndisputableMonolith
 166

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