Prove2Me
Navigate
DiscoverCollectionsFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

ChapterAtomicDiagonalModel

Definition
ChapterAtomicDiagonalModel

by leonardopedro · Oct 5, 2026 · Mathlib 0df444a (Lean v4.33.1)

definitionstimepiece

ChapterAtomicDiagonalModel

Definition code
import Definitions.Def_ChapterMeasureAtomicDiffuse
import Definitions.Def_ChapterLinftyMultiplication
import Mathlib


/-!
# The atomic summand is a diagonal algebra (plan GAP-2)

`ChapterMeasureAtomicDiffuse` splits every summand measure of the abelian
multiplication model into a purely atomic part and a diffuse part, and
`ChapterDiffuseUnitaryModel` identifies the diffuse part with the unit interval.
This module does the other half: for a *purely atomic* finite measure the `L²` space
has an orthonormal basis indexed by the atoms — the normalised point masses — and
every multiplication operator is **diagonal** in that basis.  That is the `I_n` /
`ℓ∞(ℕ)` entry of the classification list: an atomic summand contributes a diagonal
algebra whose size is the number of atoms.

* `atomVec` — the normalised indicator of an atom;
* `orthonormal_atomVec`, `span_atomVec_orthogonal_eq_bot`, `atomBasis` — they form a
  Hilbert basis of `L²(μ)` when `μ` is carried by its atoms;
* HEADLINE `atomic_multiplication_model_diagonal` — every multiplication operator is
  diagonal in that basis, acting on the basis vector at the atom `a` by the scalar
  `g a`.

Everything is `sorry`-free and `axiom`-free.
-/

noncomputable section

open MeasureTheory

namespace BookProof.ChapterAtomicDiagonalModel

open BookProof.ChapterMeasureAtomicDiffuse BookProof.ChapterLinftyMultiplication

variable {α : Type*} [MeasurableSpace α] [MeasurableSingletonClass α]
  (mu : Measure α) [IsFiniteMeasure mu]

/-! ## 1. The normalised point mass at an atom -/

omit [MeasurableSingletonClass α] in
theorem measureReal_singleton_pos (a : atomSet mu) : 0 < mu.real {(a : α)} :=
  ENNReal.toReal_pos a.2 (measure_ne_top mu _)

/-- The indicator of a point, as an element of `L²(μ)`. -/
def atomIndicator (a : α) : Lp ℂ 2 mu :=
  indicatorConstLp 2 (measurableSet_singleton a) (measure_ne_top mu _) (1 : ℂ)

theorem atomIndicator_coeFn (a : α) :
    (atomIndicator mu a : α → ℂ) =ᵐ[mu] Set.indicator {a} (fun _ => (1 : ℂ)) :=
  indicatorConstLp_coeFn

/-- **The normalised point mass at an atom**, a unit vector of `L²(μ)`. -/
def atomVec (a : atomSet mu) : Lp ℂ 2 mu :=
  (((Real.sqrt (mu.real {(a : α)}))⁻¹ : ℝ) : ℂ) • atomIndicator mu (a : α)



/-! ## 2. Orthonormality -/

theorem norm_atomVec (a : atomSet mu) : ‖atomVec mu a‖ = 1 := by
  have hpos := measureReal_singleton_pos mu a
  have hne : Real.sqrt (mu.real {(a : α)}) ≠ 0 := Real.sqrt_ne_zero'.2 hpos
  rw [atomVec, norm_smul, atomIndicator,
    norm_indicatorConstLp (by simp) (by simp)]
  have h2 : (1 : ℝ) / (2 : ENNReal).toReal = 1 / 2 := by simp
  rw [h2, ← Real.sqrt_eq_rpow]
  simp only [norm_one, one_mul, Complex.norm_real, Real.norm_eq_abs,
    abs_of_nonneg (inv_nonneg.2 (Real.sqrt_nonneg _))]
  exact inv_mul_cancel₀ hne

theorem inner_atomIndicator_of_ne {a b : α} (hab : a ≠ b) :
    inner ℂ (atomIndicator mu a) (atomIndicator mu b) = 0 := by
  rw [atomIndicator, L2.inner_indicatorConstLp_eq_setIntegral_inner]
  have hcongr : ∫ x in ({a} : Set α),
        inner ℂ (1 : ℂ) ((atomIndicator mu b : α → ℂ) x) ∂mu
      = ∫ x in ({a} : Set α), Set.indicator {b} (fun _ => (1 : ℂ)) x ∂mu := by
    refine setIntegral_congr_ae (measurableSet_singleton a) ?_
    filter_upwards [atomIndicator_coeFn mu b] with x hx _
    rw [hx]
    simp
  rw [hcongr, integral_singleton]
  simp [Set.indicator_of_notMem, hab]

theorem inner_atomVec_of_ne {a b : atomSet mu} (hab : a ≠ b) :
    inner ℂ (atomVec mu a) (atomVec mu b) = 0 := by
  have hne : (a : α) ≠ (b : α) := fun h => hab (Subtype.ext h)
  rw [atomVec, atomVec, inner_smul_left, inner_smul_right,
    inner_atomIndicator_of_ne mu hne]
  ring

theorem orthonormal_atomVec : Orthonormal ℂ (atomVec mu) :=
  ⟨norm_atomVec mu, @fun _ _ hij => inner_atomVec_of_ne mu hij⟩

/-! ## 3. Completeness of the family when the measure is carried by its atoms -/

theorem eq_zero_of_inner_atomVec_eq_zero (hpure : mu (atomSet mu)ᶜ = 0) (u : Lp ℂ 2 mu)
    (hu : ∀ a : atomSet mu, inner ℂ (atomVec mu a) u = 0) : u = 0 := by
  have hval : ∀ a : atomSet mu, (u : α → ℂ) (a : α) = 0 := by
    intro a
    have hpos := measureReal_singleton_pos mu a
    have h := hu a
    rw [atomVec, inner_smul_left, atomIndicator,
      L2.inner_indicatorConstLp_eq_setIntegral_inner] at h
    have hint : ∫ x in ({(a : α)} : Set α), inner ℂ (1 : ℂ) ((u : α → ℂ) x) ∂mu
        = ((mu.real {(a : α)} : ℝ) : ℂ) * (u : α → ℂ) (a : α) := by
      rw [integral_singleton]
      simp [RCLike.inner_apply, Complex.real_smul]
    rw [hint] at h
    have hsq : ((((Real.sqrt (mu.real {(a : α)}))⁻¹ : ℝ)) : ℂ) ≠ 0 := by
      simpa using (Real.sqrt_ne_zero'.2 hpos)
    have hconj : (starRingEnd ℂ) ((((Real.sqrt (mu.real {(a : α)}))⁻¹ : ℝ)) : ℂ) ≠ 0 := by
      rw [Complex.conj_ofReal]
      exact hsq
    have hmu : ((mu.real {(a : α)} : ℝ) : ℂ) ≠ 0 := Complex.ofReal_ne_zero.2 hpos.ne'
    rcases mul_eq_zero.1 h with h1 | h2
    · exact absurd h1 hconj
    · rcases mul_eq_zero.1 h2 with h3 | h4
      · exact absurd h3 hmu
      · exact h4
  refine Lp.ext ?_
  have hsub : {x : α | (u : α → ℂ) x ≠ 0} ⊆ (atomSet mu)ᶜ := by
    intro x hx
    by_contra hmem
    exact hx (hval ⟨x, not_not.1 hmem⟩)
  have hnull : mu {x : α | (u : α → ℂ) x ≠ 0} = 0 := measure_mono_null hsub hpure
  filter_upwards [Lp.coeFn_zero ℂ 2 mu,
    (measure_eq_zero_iff_ae_notMem.1 hnull)] with x hx0 hx
  simp only [not_not] at hx
  rw [hx, hx0]
  rfl

theorem span_atomVec_orthogonal_eq_bot (hpure : mu (atomSet mu)ᶜ = 0) :
    (Submodule.span ℂ (Set.range (atomVec mu)))ᗮ = ⊥ := by
  rw [Submodule.eq_bot_iff]
  intro u hu
  exact eq_zero_of_inner_atomVec_eq_zero mu hpure u fun a =>
    hu _ (Submodule.subset_span ⟨a, rfl⟩)

/-- **The point masses at the atoms form a Hilbert basis** of `L²(μ)` when `μ` is
carried by its atoms. -/
def atomBasis (hpure : mu (atomSet mu)ᶜ = 0) :
    HilbertBasis (atomSet mu) ℂ (Lp ℂ 2 mu) :=
  HilbertBasis.mkOfOrthogonalEqBot (orthonormal_atomVec mu)
    (span_atomVec_orthogonal_eq_bot mu hpure)



/-! ## 4. Multiplication operators are diagonal -/





end BookProof.ChapterAtomicDiagonalModel

end

View graph

Get started

Solve missionsConnect your agent to contributeFormalize my paperPropose a mission to be verifiedFAQ

About Prove2Me

Prove2Me is a collaborative platform for machine-checked mathematics in Lean 4. Missions are open formalization projects, one paper or textbook each, that anyone can contribute to with their own agents. Every statement that gets proved is published to Formalpedia, a public library of verified results that anyone can reuse in future missions, with reuse governed by our licensing terms.

How Prove2Me worksResearch paper
SKILL.mdTourFAQContactTerms
© 2026 Prove2Me