@@ -23,7 +23,18 @@ see `ContinuousLinearMap.tendsto_birkhoffAverage_orthogonalProjection`.
2323
2424public section
2525
26- open Filter Finset Function Bornology
26+ namespace Module.End
27+
28+ variable {R M F : Type *} [Semiring R] [AddCommGroup M] [Module R M]
29+ [FunLike F M M] [One F] [LinearMapClass F R M M]
30+
31+ abbrev fixedPoints (f : F) : Submodule R M := LinearMap.eqLocus f 1
32+
33+ abbrev coboundaries (f : F) : Submodule R M := (f - 1 : M →ₗ[R] M).range
34+
35+ end Module.End
36+
37+ open Filter Set Function Bornology Module
2738open scoped Topology
2839
2940variable {𝕜 E : Type *} [RCLike 𝕜] [NormedAddCommGroup E]
@@ -45,9 +56,9 @@ I chose to do it in order to isolate parts of the proof that do not rely
4556on the inner product space structure.
4657-/
4758theorem LinearMap.tendsto_birkhoffAverage_of_ker_subset_closure [NormedSpace 𝕜 E]
48- (f : E →ₗ[𝕜] E) (hf : LipschitzWith 1 f) (g : E →L[𝕜] LinearMap.eqLocus f 1 )
49- (hg_proj : ∀ x : LinearMap.eqLocus f 1 , g x = x)
50- (hg_ker : ( g.ker : Set E) ⊆ closure (LinearMap.range (f - 1 )) ) (x : E) :
59+ (f : E →ₗ[𝕜] E) (hf : LipschitzWith 1 f) (g : E →L[𝕜] End.fixedPoints f )
60+ (hg_proj : ∀ x : End.fixedPoints f , g x = x)
61+ (hg_ker : g.ker ≤ (End.coboundaries f).topologicalClosure ) (x : E) :
5162 Tendsto (birkhoffAverage 𝕜 f _root_.id · x) atTop (𝓝 (g x)) := by
5263 /- Any point can be represented as a sum of `y ∈ LinearMap.ker g` and a fixed point `z`. -/
5364 obtain ⟨y, hy, z, hz, rfl⟩ : ∃ y, g y = 0 ∧ ∃ z, IsFixedPt f z ∧ x = y + z :=
@@ -59,7 +70,7 @@ theorem LinearMap.tendsto_birkhoffAverage_of_ker_subset_closure [NormedSpace
5970 simpa [hy, hgz, birkhoffAverage, birkhoffSum, Finset.sum_add_distrib, smul_add]
6071 using this.add (hz.tendsto_birkhoffAverage 𝕜 _root_.id)
6172 /- By continuity, it suffices to prove the theorem on a dense subset of `LinearMap.ker g`.
62- By assumption, `LinearMap.range (f - 1) ` is dense in the kernel of `g`,
73+ By assumption, `f.coboundaries ` is dense in the kernel of `g`,
6374 so it suffices to prove the theorem for `y = f x - x`. -/
6475 have : IsClosed {x | Tendsto (birkhoffAverage 𝕜 f _root_.id · x) atTop (𝓝 0 )} :=
6576 isClosed_setOf_tendsto_birkhoffAverage 𝕜 hf uniformContinuous_id continuous_const
@@ -78,6 +89,31 @@ variable [InnerProductSpace 𝕜 E] [CompleteSpace E]
7889
7990local notation "⟪" x ", " y "⟫" => inner 𝕜 x y
8091
92+ open Submodule
93+
94+ /-- The closure of the coboundaries of the form `f x - x` contains the orthogonal complement of the
95+ fixed points of `f`.
96+ -/
97+ theorem eqLocus_orthogonal_le_topologicalClosure_coboundary (f : E →L[𝕜] E) (hf : ‖f‖ ≤ 1 ) :
98+ (End.fixedPoints f)ᗮ ≤ (End.coboundaries f).topologicalClosure := by
99+ /- In other words, we need to verify that any vector that is orthogonal to the range of `f - 1`
100+ is a fixed point of `f`. -/
101+ rw [← Submodule.orthogonal_orthogonal_eq_closure]
102+ /- To verify this, we verify `‖f x‖ ≤ ‖x‖` (because `‖f‖ ≤ 1`) and `⟪f x, x⟫ = ‖x‖²`. -/
103+ refine Submodule.orthogonal_le fun x hx ↦ eq_of_norm_le_re_inner_eq_norm_sq (𝕜 := 𝕜) ?_ ?_
104+ · simpa using f.le_of_opNorm_le hf x
105+ · have : ∀ y, ⟪f y, x⟫ = ⟪y, x⟫ := by
106+ simpa [Submodule.mem_orthogonal, inner_sub_left, sub_eq_zero] using hx
107+ simp [this]
108+
109+ theorem topologicalClosure_eqLocus_sum_coboundary_eq_top (f : E →L[𝕜] E) (hf : ‖f‖ ≤ 1 ) :
110+ (End.fixedPoints f + End.coboundaries f).topologicalClosure = ⊤ := by
111+ have h := sup_orthogonal_of_hasOrthogonalProjection (K := End.fixedPoints f)
112+ rw [eq_top_iff] at *
113+ grw [eqLocus_orthogonal_le_topologicalClosure_coboundary f hf,
114+ ClosureOperator.sup_closure_le _ (LinearMap.eqLocus f 1 )] at h
115+ assumption
116+
81117set_option backward.isDefEq.respectTransparency false in
82118/-- **Von Neumann Mean Ergodic Theorem** for an operator in a Hilbert space.
83119For a contracting continuous linear self-map `f : E →L[𝕜] E` of a Hilbert space, `‖f‖ ≤ 1`,
@@ -89,20 +125,12 @@ converge to the orthogonal projection of `x` to the subspace of fixed points of
89125theorem ContinuousLinearMap.tendsto_birkhoffAverage_orthogonalProjection (f : E →L[𝕜] E)
90126 (hf : ‖f‖ ≤ 1 ) (x : E) :
91127 Tendsto (birkhoffAverage 𝕜 f _root_.id · x) atTop
92- (𝓝 <| (LinearMap.eqLocus f 1 ).orthogonalProjection x) := by
128+ (𝓝 <| (End.fixedPoints f ).orthogonalProjection x) := by
93129 /- Due to the previous theorem, it suffices to verify
94130 that the range of `f - 1` is dense in the orthogonal complement
95131 to the submodule of fixed points of `f`. -/
96- apply (f : E →ₗ[𝕜] E) .tendsto_birkhoffAverage_of_ker_subset_closure (f.lipschitz.weaken hf)
132+ apply f .tendsto_birkhoffAverage_of_ker_subset_closure (f.lipschitz.weaken hf)
97133 · exact (LinearMap.eqLocus f 1 ).orthogonalProjection_mem_subspace_eq_self
98134 · clear x
99- /- In other words, we need to verify that any vector that is orthogonal to the range of `f - 1`
100- is a fixed point of `f`. -/
101- rw [Submodule.ker_orthogonalProjection, ← Submodule.topologicalClosure_coe,
102- SetLike.coe_subset_coe, ← Submodule.orthogonal_orthogonal_eq_closure]
103- /- To verify this, we verify `‖f x‖ ≤ ‖x‖` (because `‖f‖ ≤ 1`) and `⟪f x, x⟫ = ‖x‖²`. -/
104- refine Submodule.orthogonal_le fun x hx ↦ eq_of_norm_le_re_inner_eq_norm_sq (𝕜 := 𝕜) ?_ ?_
105- · simpa using f.le_of_opNorm_le hf x
106- · have : ∀ y, ⟪f y, x⟫ = ⟪y, x⟫ := by
107- simpa [Submodule.mem_orthogonal, inner_sub_left, sub_eq_zero] using hx
108- simp [this]
135+ rw [Submodule.ker_orthogonalProjection]
136+ exact eqLocus_orthogonal_le_topologicalClosure_coboundary f hf
0 commit comments