Encyclopedia Cost Cost Ndim Curvature Bridge Riemann Beta Numerator Zero
ARTICLE 3 claims 3 theorems
Cost Ndim Curvature Bridge Riemann Beta Numerator Zero
A single algebraic identity about a sum of products that must be zero, and the role it plays in a larger proof about the geometry of a deformed metric.
A vanishing term in the curvature sum
In differential geometry, the Riemann curvature tensor measures how much a space bends. For a special class of spaces called Hessian metrics, where the metric comes from a potential function, the curvature has a concrete formula. The declaration riemann_beta_numerator_zero establishes one precise algebraic fact inside that formula: under certain conditions, a specific combination of terms in the curvature sum is exactly zero.
The setting is a deformed metric built from a diagonal base plus a rank-one update. The potential is a sum of hyperbolic cosines plus a coupling term. The curvature is computed using Shima's formula, which sums over pairs of indices. The declaration states that if the vector α has support on only two coordinates, and if either index in the pair is outside that support, then the product of two third-derivative terms minus the product of two other third-derivative terms equals zero. This is a purely algebraic identity, proved by direct manipulation of sums, with no geometric approximation.
The identity is a lemma, not a standalone result. It is a stepping stone in a larger proof. The larger goal is to show that the deformed metric is genuinely non-flat, meaning its Riemann tensor has a nonzero component. The vanishing term simplifies the curvature sum, allowing it to collapse to a known negative value. This is the general-n non-flatness content: the abstract n-dimensional curvature construction specializes to a certified 2-D formula on any two-sparse slice.
What this declaration does not claim is equally important. It does not assert that the full Riemann tensor is negative, nor that the metric is non-flat. It does not claim anything about the physical significance of the curvature. It only establishes that a particular algebraic expression is zero under stated hypotheses. The negativity of the curvature component is a separate theorem, RiemannMixedApply_neg, which uses this lemma as one ingredient.
THEOREM riemann_beta_numerator_zero · IndisputableMonolith/Cost/Ndim/CurvatureBridge.lean
/-- The core vanishing fact driving the Riemann reduction: for `p` or `q` off the
`TwoSparse` support, every term of Shima's `(p,q)`-summand built from `β` at
`(i1, i0, ·)`/`(m, i0, ·)`/`(m, i1, ·)`/`(i1, i1, ·)` vanishes, regardless of `m`. -/
theorem riemann_beta_numerator_zero {n : ℕ} (α t : Vec n) (lam : ℝ) (i0 i1 : Fin n)
(hne01 : i0 ≠ i1) (h2 : TwoSparse α i0 i1) (m p q : Fin n)
(hspec : (p ≠ i0 ∧ p ≠ i1) ∨ (q ≠ i0 ∧ q ≠ i1)) :
beta α t lam i1 i0 p * beta α t lam m i1 q - beta α t lam m i0 p * beta α t lam i1 i1 q = 0 := by
rcases hspec with ⟨hp0, hp1⟩ | ⟨hq0, hq1⟩
· have hzp : α p = 0 := h2 p hp0 hp1
have h1 : beta α t lam i1 i0 p = 0 :=
beta_eq_zero α t lam i1 i0 p (Or.inr (Or.inr hzp)) (fun h => hne01 h.1.symm)
have h3 : beta α t lam m i0 p = 0 :=
beta_eq_zero α t lam m i0 p (Or.inr (Or.inr hzp)) (fun h => hp0 h.2.symm)
rw [h1, h3]; ring
· have hzq : α q = 0 := h2 q hq0 hq1
have h1 : beta α t lam m i1 q = 0 :=
beta_eq_zero α t lam m i1 q (Or.inr (Or.inr hzq)) (fun h => hq1 h.2.symm)
have h3 : beta α t lam i1 i1 q = 0 :=
beta_eq_zero α t lam i1 i1 q (Or.inr (Or.inr hzq)) (fun h => hq1 h.2.symm)
rw [h1, h3]; ring
THEOREM RiemannMixedApply_reduce · IndisputableMonolith/Cost/Ndim/CurvatureBridge.lean
/-- **Stage B capstone reduction.** Under a `TwoSparse` `α` (support `{i0, i1}`) and
`t i1 = 0`, the general-`n` mixed Riemann component `R^{i0}_{i1,i0,i1}`, built from the
*actual* deformed metric `hFull`/`hInvFull` and its Hessian third-derivative tensor
`beta` via Shima's formula, collapses **algebraically** to the closed form
`R0101Gen a b lam (t i0)` already certified negative in `ScalarCertificates.lean`. This
is the general-`n` non-flatness content: the abstract `n`-dimensional curvature
construction of Part 3 genuinely specializes to the certified 2-D formula on any
2-sparse slice, for arbitrary ambient dimension `n`. Verified algebraically correct
(independent of any `cosh²-sinh²=1` identity) by direct SymPy computation before this
proof was written. -/
theorem RiemannMixedApply_reduce {n : ℕ} (α t : Vec n) (lam a b : ℝ) (i0 i1 : Fin n)
(hne01 : i0 ≠ i1) (h2 : TwoSparse α i0 i1)
(ha : α i0 = a) (hb : α i1 = b) (ht1 : t i1 = 0)
(ha0 : a ≠ 0) (hlam : 0 < lam) :
RiemannMixedApply (hInvFull α t lam) (beta α t lam) i0 i1 i0 i1
= R0101Gen a b lam (t i0) := by
set t0 := t i0 with ht0_def
have hct0_pos : 0 < Real.cosh t0 := Real.cosh_pos _
have hct0_ne : Real.cosh t0 ≠ 0 := ne_of_gt hct0_pos
have hkap_pos : 0 < kappaGen a b lam t0 := kappaGen_pos a b lam t0 ha0 hlam
have hkap_ne : kappaGen a b lam t0 ≠ 0 := ne_of_gt hkap_pos
-- `dot α t` collapses to `a * t0` on the `TwoSparse` slice with `t i1 = 0`.
have hdot : dot α t = a * t0 := by
unfold dot
have hrestrict := sum_restrict_pair i0 i1 hne01 (fun k => α k * t k)
(fun k hk0 hk1 => by dsimp only; rw [h2 k hk0 hk1]; ring)
dsimp only at hrestrict
rw [hrestrict, ha, hb, ht1]
ring
have hcat : Real.cosh (dot α t) = Real.cosh (a * t0) := by rw [hdot]
have hsat : Real.sinh (dot α t) = Real.sinh (a * t0) := by rw [hdot]
-- `w := sharp (Dinv t) α` at `i0, i1`.
have hw0 : sharp (Dinv t) α i0 = (Real.cosh t0)⁻¹ * a := by
rw [sharp_Dinv_apply, ha]
have hw1 : sharp (Dinv t) α i1 = b := by
rw [sharp_Dinv_apply, hb, ht1, Real.cosh_zero]; ring
have hS : dot α (sharp (Dinv t) α) = (Real.cosh t0)⁻¹ * a ^ 2 + b ^ 2 := by
rw [dot_sharp_Dinv_twoSparse t α i0 i1 hne01 h2, ha, hb, ht1, Real.cosh_zero]
ring
-- The Sherman-Morrison denominator, in closed form: `1+λc·S = κ/cosh t0`.
have hdenom_eq : 1 + lam * Real.cosh (dot α t) * dot α (sharp (Dinv t) α)
= kappaGen a b lam t0 / Real.cosh t0 := by
rw [hcat, hS]
unfold kappaGen
field_simp
ring
-- The four raw `Dinv` values on the block.
have hDinv00 : Dinv t i0 i0 = (Real.cosh t0)⁻¹ := by unfold Dinv; rw [if_pos rfl]
have hDinv01 : Dinv t i0 i1 = 0 := by unfold Dinv; rw [if_neg hne01]
have hDinv11 : Dinv t i1 i1 = 1 := by
unfold Dinv; rw [if_pos rfl, ht1, Real.cosh_zero]; norm_num
-- The four `hInvFull` values on the `{i0,i1}` block, in closed form.
have hInv00 : hInvFull α t lam i0 i0
= (b ^ 2 * lam * Real.cosh (a * t0) + 1) / kappaGen a b lam t0 := by
unfold hInvFull
rw [hDinv00, hdenom_eq, hcat, hw0]
unfold kappaGen
field_simp
ring
have hInv01 : hInvFull α t lam i0 i1
= -(a * b * lam * Real.cosh (a * t0)) / kappaGen a b lam t0 := by
unfold hInvFull
rw [hDinv01, hdenom_eq, hcat, hw0, hw1]
unfold kappaGen
field_simp
ring
have hInv10 : hInvFull α t lam i1 i0
= -(a * b * lam * Real.cosh (a * t0)) / kappaGen a b lam t0 := by
rw [hInvFull_symm]; exact hInv01
have hInv11 : hInvFull α t lam i1 i1
= (a ^ 2 * lam * Real.cosh (a * t0) + Real.cosh t0) / kappaGen a b lam t0 := by
unfold hInvFull
rw [hDinv11, hdenom_eq, hcat, hw1]
unfold kappaGen
field_simp
ring
-- The eight `beta` values on the `{i0,i1}` block.
have hb000 : beta α t lam i0 i0 i0 = Real.sinh t0 + lam * a ^ 3 * Real.sinh (a * t0) := by
unfold beta; rw [if_pos (⟨rfl, rfl⟩ : i0 = i0 ∧ i0 = i0), ha, hsat]; ring
have hb001 : beta α t lam i0 i0 i1 = lam * a ^ 2 * b * Real.sinh (a * t0) := by
unfold beta; rw [if_neg (fun h : i0 = i0 ∧ i0 = i1 => hne01 h.2), ha, hb, hsat]; ring
have hb010 : beta α t lam i0 i1 i0 = lam * a ^ 2 * b * Real.sinh (a * t0) := by
unfold beta; rw [if_neg (fun h : i0 = i1 ∧ i1 = i0 => hne01 h.1), ha, hb, hsat]; ring
have hb011 : beta α t lam i0 i1 i1 = lam * a * b ^ 2 * Real.sinh (a * t0) := by
unfold beta; rw [if_neg (fun h : i0 = i1 ∧ i1 = i1 => hne01 h.1), ha, hb, hsat]; ring
have hb100 : beta α t lam i1 i0 i0 = lam * a ^ 2 * b * Real.sinh (a * t0) := by
unfold beta; rw [if_neg (fun h : i1 = i0 ∧ i0 = i0 => hne01 h.1.symm), ha, hb, hsat]; ring
have hb101 : beta α t lam i1 i0 i1 = lam * a * b ^ 2 * Real.sinh (a * t0) := by
unfold beta; rw [if_neg (fun h : i1 = i0 ∧ i0 = i1 => hne01 h.1.symm), ha, hb, hsat]; ring
have hb110 : beta α t lam i1 i1 i0 = lam * a * b ^ 2 * Real.sinh (a * t0) := by
unfold beta; rw [if_neg (fun h : i1 = i1 ∧ i1 = i0 => hne01 h.2.symm), ha, hb, hsat]; ring
have hb111 : beta α t lam i1 i1 i1 = lam * b ^ 3 * Real.sinh (a * t0) := by
unfold beta; rw [if_pos (⟨rfl, rfl⟩ : i1 = i1 ∧ i1 = i1), ht1, hb, hsat, Real.sinh_zero]; ring
-- Reduce the `m`-sum in `RiemannMixedApply` to `{i0, i1}`: spectator `m` contributes
-- zero because `hInvFull α t lam i0 m = 0` there.
have hspec_m : ∀ m : Fin n, m ≠ i0 → m ≠ i1 →
hInvFull α t lam i0 m *
RiemannLowerApply (hInvFull α t lam) (beta α t lam) m i1 i0 i1 = 0 := by
intro m hm0 hm1
have hzm : α m = 0 := h2 m hm0 hm1
have hz0 : hInvFull α t lam i0 m = 0 := by
rw [hInvFull_symm]
exact hInvFull_spectator α t lam i0 i1 m i0 hm0 hm1 hzm hm0
rw [hz0]; ring
have hmixed : RiemannMixedApply (hInvFull α t lam) (beta α t lam) i0 i1 i0 i1
= hInvFull α t lam i0 i0
* RiemannLowerApply (hInvFull α t lam) (beta α t lam) i0 i1 i0 i1
+ hInvFull α t lam i0 i1
* RiemannLowerApply (hInvFull α t lam) (beta α t lam) i1 i1 i0 i1 := by
unfold RiemannMixedApply
exact sum_restrict_pair i0 i1 hne01
(fun m => hInvFull α t lam i0 m *
RiemannLowerApply (hInvFull α t lam) (beta α t lam) m i1 i0 i1)
hspec_m
-- Reduce the `(p,q)`-double sum in `RiemannLowerApply m i1 i0 i1` to `{i0,i1}²`, for
-- any `m` (used below at `m = i0` and `m = i1`).
have hlower_reduce : ∀ m : Fin n,
RiemannLowerApply (hInvFull α t lam) (beta α t lam) m i1 i0 i1
= (1 / 4) *
(hInvFull α t lam i0 i0
* (beta α t lam i1 i0 i0 * beta α t lam m i1 i0
- beta α t lam m i0 i0 * beta α t lam i1 i1 i0)
+ hInvFull α t lam i1 i0
* (beta α t lam i1 i0 i1 * beta α t lam m i1 i0
- beta α t lam m i0 i1 * beta α t lam i1 i1 i0)
+ (hInvFull α t lam i0 i1
* (beta α t lam i1 i0 i0 * beta α t lam m i1 i1
- beta α t lam m i0 i0 * beta α t lam i1 i1 i1)
+ hInvFull α t lam i1 i1
* (beta α t lam i1 i0 i1 * beta α t lam m i1 i1
- beta α t lam m i0 i1 * beta α t lam i1 i1 i1))) := by
intro m
unfold RiemannLowerApply
congr 1
exact sum2_restrict_pair i0 i1 hne01
(fun p q => hInvFull α t lam p q *
(beta α t lam i1 i0 p * beta α t lam m i1 q
- beta α t lam m i0 p * beta α t lam i1 i1 q))
(fun p q hpq => by
dsimp only
rw [riemann_beta_numerator_zero α t lam i0 i1 hne01 h2 m p q hpq]; ring)
rw [hmixed, hlower_reduce i0, hlower_reduce i1,
hInv00, hInv01, hInv10, hInv11,
hb000, hb001, hb010, hb011, hb100, hb101, hb110, hb111]
unfold R0101Gen
field_simp
ring
THEOREM riemann_beta_numerator_zero · IndisputableMonolith/Cost/Ndim/CurvatureBridge.lean
/-- The core vanishing fact driving the Riemann reduction: for `p` or `q` off the
`TwoSparse` support, every term of Shima's `(p,q)`-summand built from `β` at
`(i1, i0, ·)`/`(m, i0, ·)`/`(m, i1, ·)`/`(i1, i1, ·)` vanishes, regardless of `m`. -/
theorem riemann_beta_numerator_zero {n : ℕ} (α t : Vec n) (lam : ℝ) (i0 i1 : Fin n)
(hne01 : i0 ≠ i1) (h2 : TwoSparse α i0 i1) (m p q : Fin n)
(hspec : (p ≠ i0 ∧ p ≠ i1) ∨ (q ≠ i0 ∧ q ≠ i1)) :
beta α t lam i1 i0 p * beta α t lam m i1 q - beta α t lam m i0 p * beta α t lam i1 i1 q = 0 := by
rcases hspec with ⟨hp0, hp1⟩ | ⟨hq0, hq1⟩
· have hzp : α p = 0 := h2 p hp0 hp1
have h1 : beta α t lam i1 i0 p = 0 :=
beta_eq_zero α t lam i1 i0 p (Or.inr (Or.inr hzp)) (fun h => hne01 h.1.symm)
have h3 : beta α t lam m i0 p = 0 :=
beta_eq_zero α t lam m i0 p (Or.inr (Or.inr hzp)) (fun h => hp0 h.2.symm)
rw [h1, h3]; ring
· have hzq : α q = 0 := h2 q hq0 hq1
have h1 : beta α t lam m i1 q = 0 :=
beta_eq_zero α t lam m i1 q (Or.inr (Or.inr hzq)) (fun h => hq1 h.2.symm)
have h3 : beta α t lam i1 i1 q = 0 :=
beta_eq_zero α t lam i1 i1 q (Or.inr (Or.inr hzq)) (fun h => hq1 h.2.symm)
rw [h1, h3]; ring
What this page does not claim
The declaration does not prove that the metric is non-flat. The declaration does not establish any property of the full Riemann tensor. The declaration does not claim any physical significance for the vanishing term.
Verify this page
Every tagged claim above names its theorem. To check one yourself rather than trust this page, elaborate the source module with Lean 4 and audit its axiom basis:
$ lake env lean IndisputableMonolith/Cost/Ndim/CurvatureBridge.lean
expected axiom basis: [propext, Classical.choice, Quot.sound] (the Lean kernel's standard three; no RS-specific axioms)
A page whose claims cannot be reproduced this way does not ship. In production, every anchor links to the exact declaration in the public source release, and this block carries the build receipt for the page itself.
Derived articles
This page is generated by a question-recursion engine: the questions its answers raise become the next pages. The current agenda, with open targets marked red:
- What is the physical interpretation of the non-flatness of the deformed metric?
- How does the Sherman-Morrison inverse relate to the curvature calculation?
- What is the role of the TwoSparse condition in the larger framework?
MACHINE LAYER · GROUNDED CLAIM TABLE · CLICK TO EXPAND
THEOREM riemann_beta_numerator_zero · IndisputableMonolith/Cost/Ndim/CurvatureBridge.lean
/-- The core vanishing fact driving the Riemann reduction: for `p` or `q` off the `TwoSparse` support, every term of Shima's `(p,q)`-summand built from `β` at `(i1, i0, ·)`/`(m, i0, ·)`/`(m, i1, ·)`/`(i1, i1, ·)` vanishes, regardless of `m`. -/ theorem riemann_beta_numerator_zero {n : ℕ} (α t : Vec n) (lam : ℝ) (i0 i1 : Fin n) (hne01 : i0 ≠ i1) (h2 : TwoSparse α i0 i1) (m p q : Fin n) (hspec : (p ≠ i0 ∧ p ≠ i1) ∨ (q ≠ i0 ∧ q ≠ i1)) : beta α t lam i1 i0 p * beta α t lam m i1 q - beta α t lam m i0 p * beta α t lam i1 i1 q = 0 := by rcases hspec with ⟨hp0, hp1⟩ | ⟨hq0, hq1⟩ · have hzp : α p = 0 := h2 p hp0 hp1 have h1 : beta α t lam i1 i0 p = 0 := beta_eq_zero α t lam i1 i0 p (Or.inr (Or.inr hzp)) (fun h => hne01 h.1.symm) have h3 : beta α t lam m i0 p = 0 := beta_eq_zero α t lam m i0 p (Or.inr (Or.inr hzp)) (fun h => hp0 h.2.symm) rw [h1, h3]; ring · have hzq : α q = 0 := h2 q hq0 hq1 have h1 : beta α t lam m i1 q = 0 := beta_eq_zero α t lam m i1 q (Or.inr (Or.inr hzq)) (fun h => hq1 h.2.symm) have h3 : beta α t lam i1 i1 q = 0 := beta_eq_zero α t lam i1 i1 q (Or.inr (Or.inr hzq)) (fun h => hq1 h.2.symm) rw [h1, h3]; ringThe declaration establishes that under a TwoSparse α and with an index outside its support, the product of two third-derivative terms minus the product of two other third-derivative terms equals zero. riemann_beta_numerator_zero · IndisputableMonolith/Cost/Ndim/CurvatureBridge.leanTHEOREM RiemannMixedApply_reduce · IndisputableMonolith/Cost/Ndim/CurvatureBridge.lean
/-- **Stage B capstone reduction.** Under a `TwoSparse` `α` (support `{i0, i1}`) and `t i1 = 0`, the general-`n` mixed Riemann component `R^{i0}_{i1,i0,i1}`, built from the *actual* deformed metric `hFull`/`hInvFull` and its Hessian third-derivative tensor `beta` via Shima's formula, collapses **algebraically** to the closed form `R0101Gen a b lam (t i0)` already certified negative in `ScalarCertificates.lean`. This is the general-`n` non-flatness content: the abstract `n`-dimensional curvature construction of Part 3 genuinely specializes to the certified 2-D formula on any 2-sparse slice, for arbitrary ambient dimension `n`. Verified algebraically correct (independent of any `cosh²-sinh²=1` identity) by direct SymPy computation before this proof was written. -/ theorem RiemannMixedApply_reduce {n : ℕ} (α t : Vec n) (lam a b : ℝ) (i0 i1 : Fin n) (hne01 : i0 ≠ i1) (h2 : TwoSparse α i0 i1) (ha : α i0 = a) (hb : α i1 = b) (ht1 : t i1 = 0) (ha0 : a ≠ 0) (hlam : 0 < lam) : RiemannMixedApply (hInvFull α t lam) (beta α t lam) i0 i1 i0 i1 = R0101Gen a b lam (t i0) := by set t0 := t i0 with ht0_def have hct0_pos : 0 < Real.cosh t0 := Real.cosh_pos _ have hct0_ne : Real.cosh t0 ≠ 0 := ne_of_gt hct0_pos have hkap_pos : 0 < kappaGen a b lam t0 := kappaGen_pos a b lam t0 ha0 hlam have hkap_ne : kappaGen a b lam t0 ≠ 0 := ne_of_gt hkap_pos -- `dot α t` collapses to `a * t0` on the `TwoSparse` slice with `t i1 = 0`. have hdot : dot α t = a * t0 := by unfold dot have hrestrict := sum_restrict_pair i0 i1 hne01 (fun k => α k * t k) (fun k hk0 hk1 => by dsimp only; rw [h2 k hk0 hk1]; ring) dsimp only at hrestrict rw [hrestrict, ha, hb, ht1] ring have hcat : Real.cosh (dot α t) = Real.cosh (a * t0) := by rw [hdot] have hsat : Real.sinh (dot α t) = Real.sinh (a * t0) := by rw [hdot] -- `w := sharp (Dinv t) α` at `i0, i1`. have hw0 : sharp (Dinv t) α i0 = (Real.cosh t0)⁻¹ * a := by rw [sharp_Dinv_apply, ha] have hw1 : sharp (Dinv t) α i1 = b := by rw [sharp_Dinv_apply, hb, ht1, Real.cosh_zero]; ring have hS : dot α (sharp (Dinv t) α) = (Real.cosh t0)⁻¹ * a ^ 2 + b ^ 2 := by rw [dot_sharp_Dinv_twoSparse t α i0 i1 hne01 h2, ha, hb, ht1, Real.cosh_zero] ring -- The Sherman-Morrison denominator, in closed form: `1+λc·S = κ/cosh t0`. have hdenom_eq : 1 + lam * Real.cosh (dot α t) * dot α (sharp (Dinv t) α) = kappaGen a b lam t0 / Real.cosh t0 := by rw [hcat, hS] unfold kappaGen field_simp ring -- The four raw `Dinv` values on the block. have hDinv00 : Dinv t i0 i0 = (Real.cosh t0)⁻¹ := by unfold Dinv; rw [if_pos rfl] have hDinv01 : Dinv t i0 i1 = 0 := by unfold Dinv; rw [if_neg hne01] have hDinv11 : Dinv t i1 i1 = 1 := by unfold Dinv; rw [if_pos rfl, ht1, Real.cosh_zero]; norm_num -- The four `hInvFull` values on the `{i0,i1}` block, in closed form. have hInv00 : hInvFull α t lam i0 i0 = (b ^ 2 * lam * Real.cosh (a * t0) + 1) / kappaGen a b lam t0 := by unfold hInvFull rw [hDinv00, hdenom_eq, hcat, hw0] unfold kappaGen field_simp ring have hInv01 : hInvFull α t lam i0 i1 = -(a * b * lam * Real.cosh (a * t0)) / kappaGen a b lam t0 := by unfold hInvFull rw [hDinv01, hdenom_eq, hcat, hw0, hw1] unfold kappaGen field_simp ring have hInv10 : hInvFull α t lam i1 i0 = -(a * b * lam * Real.cosh (a * t0)) / kappaGen a b lam t0 := by rw [hInvFull_symm]; exact hInv01 have hInv11 : hInvFull α t lam i1 i1 = (a ^ 2 * lam * Real.cosh (a * t0) + Real.cosh t0) / kappaGen a b lam t0 := by unfold hInvFull rw [hDinv11, hdenom_eq, hcat, hw1] unfold kappaGen field_simp ring -- The eight `beta` values on the `{i0,i1}` block. have hb000 : beta α t lam i0 i0 i0 = Real.sinh t0 + lam * a ^ 3 * Real.sinh (a * t0) := by unfold beta; rw [if_pos (⟨rfl, rfl⟩ : i0 = i0 ∧ i0 = i0), ha, hsat]; ring have hb001 : beta α t lam i0 i0 i1 = lam * a ^ 2 * b * Real.sinh (a * t0) := by unfold beta; rw [if_neg (fun h : i0 = i0 ∧ i0 = i1 => hne01 h.2), ha, hb, hsat]; ring have hb010 : beta α t lam i0 i1 i0 = lam * a ^ 2 * b * Real.sinh (a * t0) := by unfold beta; rw [if_neg (fun h : i0 = i1 ∧ i1 = i0 => hne01 h.1), ha, hb, hsat]; ring have hb011 : beta α t lam i0 i1 i1 = lam * a * b ^ 2 * Real.sinh (a * t0) := by unfold beta; rw [if_neg (fun h : i0 = i1 ∧ i1 = i1 => hne01 h.1), ha, hb, hsat]; ring have hb100 : beta α t lam i1 i0 i0 = lam * a ^ 2 * b * Real.sinh (a * t0) := by unfold beta; rw [if_neg (fun h : i1 = i0 ∧ i0 = i0 => hne01 h.1.symm), ha, hb, hsat]; ring have hb101 : beta α t lam i1 i0 i1 = lam * a * b ^ 2 * Real.sinh (a * t0) := by unfold beta; rw [if_neg (fun h : i1 = i0 ∧ i0 = i1 => hne01 h.1.symm), ha, hb, hsat]; ring have hb110 : beta α t lam i1 i1 i0 = lam * a * b ^ 2 * Real.sinh (a * t0) := by unfold beta; rw [if_neg (fun h : i1 = i1 ∧ i1 = i0 => hne01 h.2.symm), ha, hb, hsat]; ring have hb111 : beta α t lam i1 i1 i1 = lam * b ^ 3 * Real.sinh (a * t0) := by unfold beta; rw [if_pos (⟨rfl, rfl⟩ : i1 = i1 ∧ i1 = i1), ht1, hb, hsat, Real.sinh_zero]; ring -- Reduce the `m`-sum in `RiemannMixedApply` to `{i0, i1}`: spectator `m` contributes -- zero because `hInvFull α t lam i0 m = 0` there. have hspec_m : ∀ m : Fin n, m ≠ i0 → m ≠ i1 → hInvFull α t lam i0 m * RiemannLowerApply (hInvFull α t lam) (beta α t lam) m i1 i0 i1 = 0 := by intro m hm0 hm1 have hzm : α m = 0 := h2 m hm0 hm1 have hz0 : hInvFull α t lam i0 m = 0 := by rw [hInvFull_symm] exact hInvFull_spectator α t lam i0 i1 m i0 hm0 hm1 hzm hm0 rw [hz0]; ring have hmixed : RiemannMixedApply (hInvFull α t lam) (beta α t lam) i0 i1 i0 i1 = hInvFull α t lam i0 i0 * RiemannLowerApply (hInvFull α t lam) (beta α t lam) i0 i1 i0 i1 + hInvFull α t lam i0 i1 * RiemannLowerApply (hInvFull α t lam) (beta α t lam) i1 i1 i0 i1 := by unfold RiemannMixedApply exact sum_restrict_pair i0 i1 hne01 (fun m => hInvFull α t lam i0 m * RiemannLowerApply (hInvFull α t lam) (beta α t lam) m i1 i0 i1) hspec_m -- Reduce the `(p,q)`-double sum in `RiemannLowerApply m i1 i0 i1` to `{i0,i1}²`, for -- any `m` (used below at `m = i0` and `m = i1`). have hlower_reduce : ∀ m : Fin n, RiemannLowerApply (hInvFull α t lam) (beta α t lam) m i1 i0 i1 = (1 / 4) * (hInvFull α t lam i0 i0 * (beta α t lam i1 i0 i0 * beta α t lam m i1 i0 - beta α t lam m i0 i0 * beta α t lam i1 i1 i0) + hInvFull α t lam i1 i0 * (beta α t lam i1 i0 i1 * beta α t lam m i1 i0 - beta α t lam m i0 i1 * beta α t lam i1 i1 i0) + (hInvFull α t lam i0 i1 * (beta α t lam i1 i0 i0 * beta α t lam m i1 i1 - beta α t lam m i0 i0 * beta α t lam i1 i1 i1) + hInvFull α t lam i1 i1 * (beta α t lam i1 i0 i1 * beta α t lam m i1 i1 - beta α t lam m i0 i1 * beta α t lam i1 i1 i1))) := by intro m unfold RiemannLowerApply congr 1 exact sum2_restrict_pair i0 i1 hne01 (fun p q => hInvFull α t lam p q * (beta α t lam i1 i0 p * beta α t lam m i1 q - beta α t lam m i0 p * beta α t lam i1 i1 q)) (fun p q hpq => by dsimp only rw [riemann_beta_numerator_zero α t lam i0 i1 hne01 h2 m p q hpq]; ring) rw [hmixed, hlower_reduce i0, hlower_reduce i1, hInv00, hInv01, hInv10, hInv11, hb000, hb001, hb010, hb011, hb100, hb101, hb110, hb111] unfold R0101Gen field_simp ringThe identity is a lemma used in a larger proof that the deformed metric is non-flat. RiemannMixedApply_reduce · IndisputableMonolith/Cost/Ndim/CurvatureBridge.leanTHEOREM riemann_beta_numerator_zero · IndisputableMonolith/Cost/Ndim/CurvatureBridge.lean
/-- The core vanishing fact driving the Riemann reduction: for `p` or `q` off the `TwoSparse` support, every term of Shima's `(p,q)`-summand built from `β` at `(i1, i0, ·)`/`(m, i0, ·)`/`(m, i1, ·)`/`(i1, i1, ·)` vanishes, regardless of `m`. -/ theorem riemann_beta_numerator_zero {n : ℕ} (α t : Vec n) (lam : ℝ) (i0 i1 : Fin n) (hne01 : i0 ≠ i1) (h2 : TwoSparse α i0 i1) (m p q : Fin n) (hspec : (p ≠ i0 ∧ p ≠ i1) ∨ (q ≠ i0 ∧ q ≠ i1)) : beta α t lam i1 i0 p * beta α t lam m i1 q - beta α t lam m i0 p * beta α t lam i1 i1 q = 0 := by rcases hspec with ⟨hp0, hp1⟩ | ⟨hq0, hq1⟩ · have hzp : α p = 0 := h2 p hp0 hp1 have h1 : beta α t lam i1 i0 p = 0 := beta_eq_zero α t lam i1 i0 p (Or.inr (Or.inr hzp)) (fun h => hne01 h.1.symm) have h3 : beta α t lam m i0 p = 0 := beta_eq_zero α t lam m i0 p (Or.inr (Or.inr hzp)) (fun h => hp0 h.2.symm) rw [h1, h3]; ring · have hzq : α q = 0 := h2 q hq0 hq1 have h1 : beta α t lam m i1 q = 0 := beta_eq_zero α t lam m i1 q (Or.inr (Or.inr hzq)) (fun h => hq1 h.2.symm) have h3 : beta α t lam i1 i1 q = 0 := beta_eq_zero α t lam i1 i1 q (Or.inr (Or.inr hzq)) (fun h => hq1 h.2.symm) rw [h1, h3]; ringThe declaration does not assert that the full Riemann tensor is negative. riemann_beta_numerator_zero · IndisputableMonolith/Cost/Ndim/CurvatureBridge.lean