Paper IV · Lean source
DiagonalNuclear.lean
Selected results recorded Coverage and evidence
Compiler/replay evidence is reported for a subset or bounded block. No whole-work coverage is implied.
This viewer reads the retained source; it does not run Lean or assign new claim mappings.
KomorebiPaperIV/DiagonalNuclear.lean88 lines
Original source path
Paper_IV_Verification_Closeout_v1.1.0/formalization/lean/KomorebiPaperIV/DiagonalNuclear.leanSkip declarations and read code
1 /-
2 Copyright (c) 2026 Komorebi P. All rights reserved.
3 Authors: Komorebi P.
4 -/
5 import Mathlib.Analysis.InnerProductSpace.l2Space
6 import Mathlib.Analysis.InnerProductSpace.Adjoint
7 import Mathlib.Topology.Algebra.InfiniteSum.ContinuousEval
8
9 namespace Komorebi.PaperIV
10 noncomputable section
11 open InnerProductSpace
12 open scoped InnerProductSpace Classical
13
14 /-- The nuclear rank-one characterization of trace class on a Hilbert space. -/
15 def IsHilbertTraceClass {E : Type*} [NormedAddCommGroup E] [InnerProductSpace ℂ E]
16 (T : E →L[ℂ] E) : Prop :=
17 ∃ (ι : Type) (x y : ι → E), Summable (fun i => ‖x i‖ * ‖y i‖) ∧
18 HasSum (fun i => rankOne ℂ (x i) (y i)) T
19
20 def diagonalHilbertBasis (ι : Type) : HilbertBasis ι ℂ (lp (fun _ : ι => ℂ) 2) :=
21 HilbertBasis.ofRepr (LinearIsometryEquiv.refl ℂ _)
22
23 @[simp] theorem diagonalHilbertBasis_inner {ι : Type} (i : ι) (x : lp (fun _ : ι => ℂ) 2) :
24 ⟪diagonalHilbertBasis ι i, x⟫_ℂ = x i := by
25 exact ((diagonalHilbertBasis ι).repr_apply_apply x i).symm
26
27 @[simp] theorem diagonalHilbertBasis_norm {ι : Type} (i : ι) : ‖diagonalHilbertBasis ι i‖ = 1 :=
28 (diagonalHilbertBasis ι).orthonormal.norm_eq_one i
29
30 @[simp] theorem diagonalHilbertBasis_apply {ι : Type} (i j : ι) :
31 diagonalHilbertBasis ι i j = if j = i then 1 else 0 := by
32 have h := congrArg (fun v : lp (fun _ : ι => ℂ) 2 => v j) ((diagonalHilbertBasis ι).repr_self i)
33 simpa [diagonalHilbertBasis, lp.single_apply, Pi.single_apply, eq_comm] using h
34
35 def diagonalRankOne {ι : Type} (a : ι → ℂ) (i : ι) :
36 lp (fun _ : ι => ℂ) 2 →L[ℂ] lp (fun _ : ι => ℂ) 2 :=
37 rankOne ℂ (a i • diagonalHilbertBasis ι i) (diagonalHilbertBasis ι i)
38
39 @[simp] theorem diagonalRankOne_norm {ι : Type} (a : ι → ℂ) (i : ι) :
40 ‖diagonalRankOne a i‖ = ‖a i‖ := by simp [diagonalRankOne, norm_smul]
41
42 theorem diagonalRankOne_summable {ι : Type} {a : ι → ℂ} (ha : Summable (fun i => ‖a i‖)) :
43 Summable (diagonalRankOne a) := by
44 apply Summable.of_norm
45 simpa using ha
46
47 def diagonalOperator {ι : Type} (a : ι → ℂ) :
48 lp (fun _ : ι => ℂ) 2 →L[ℂ] lp (fun _ : ι => ℂ) 2 := ∑' i, diagonalRankOne a i
49
50 theorem diagonalOperator_traceClass {ι : Type} {a : ι → ℂ}
51 (ha : Summable (fun i => ‖a i‖)) : IsHilbertTraceClass (diagonalOperator a) := by
52 refine ⟨ι, (fun i => a i • diagonalHilbertBasis ι i), diagonalHilbertBasis ι, ?_, ?_⟩
53 · simpa [norm_smul] using ha
54 · exact (diagonalRankOne_summable ha).hasSum
55
56 theorem diagonalOperator_apply {ι : Type} {a : ι → ℂ}
57 (ha : Summable (fun i => ‖a i‖)) (x : lp (fun _ : ι => ℂ) 2) (j : ι) :
58 diagonalOperator a x j = a j * x j := by
59 have hs := hasSum_apply (diagonalRankOne_summable ha).hasSum x
60 have hv := hs.mapL (lp.evalCLM ℂ (fun _ : ι => ℂ) 2 j)
61 have he (i : ι) : (lp.evalCLM ℂ (fun _ : ι => ℂ) 2 j) (diagonalRankOne a i x) =
62 x i * (a i * (if j = i then 1 else 0)) := by
63 change (diagonalRankOne a i x) j = _
64 simp [diagonalRankOne, rankOne_apply, lp.coeFn_smul, diagonalHilbertBasis_apply, mul_comm]
65 simp only [he] at hv
66 change HasSum _ (diagonalOperator a x j) at hv
67 simpa [mul_assoc, mul_comm, mul_left_comm, eq_comm] using hv.tsum_eq.symm
68
69 theorem diagonalOperator_apply_basis {ι : Type} {a : ι → ℂ}
70 (ha : Summable (fun i => ‖a i‖)) (i : ι) :
71 diagonalOperator a (diagonalHilbertBasis ι i) = a i • diagonalHilbertBasis ι i := by
72 ext j
73 simp [diagonalOperator_apply ha, diagonalHilbertBasis_apply]
74 split_ifs with h <;> simp_all
75
76 theorem diagonalOperator_pow_apply {ι : Type} {a : ι → ℂ}
77 (ha : Summable (fun i => ‖a i‖)) (m : ℕ) (x : lp (fun _ : ι => ℂ) 2) (j : ι) :
78 (diagonalOperator a ^ m) x j = a j ^ m * x j := by
79 induction m with
80 | zero => simp
81 | succ m ih =>
82 rw [pow_succ']
83 change diagonalOperator a ((diagonalOperator a ^ m) x) j = _
84 rw [diagonalOperator_apply ha, ih, pow_succ']
85 ring
86
87 end
88 end Komorebi.PaperIV
Original file and source record
This copy matches the recorded source file. Its publication here does not change the work’s review status.
SHA-256: ca91df0f75421b5c88856afec66a530c13002355357c4398cceb8c9cef2f82b2
Back to Paper IV: Cyclic Analytic Functions, Reciprocal Families, and Spectral Zero Data