@@ -23,7 +23,22 @@ see `ContinuousLinearMap.tendsto_birkhoffAverage_orthogonalProjection`.
2323
2424public section
2525
26- open Filter Finset Function Bornology
26+ namespace LinearMap
27+
28+ variable {R M : Type *} [Semiring R]
29+
30+ abbrev fixedPoints [AddCommMonoid M] [Module R M] (f : M →ₗ[R] M) : Submodule R M := f.eqLocus 1
31+
32+ instance _root_.ContinuousLinearMap.completeSpace_fixedPoints
33+ [AddCommMonoid M] [Module R M] [UniformSpace M] [CompleteSpace M] [T2Space M]
34+ (f : M →L[R] M) : CompleteSpace f.fixedPoints :=
35+ ContinuousLinearMap.completeSpace_eqLocus f (1 : M →L[R] M)
36+
37+ abbrev coboundaries [AddCommGroup M] [Module R M] (f : M →ₗ[R] M) : Submodule R M := (f - 1 ).range
38+
39+ end LinearMap
40+
41+ open Filter Set Function Bornology Module
2742open scoped Topology
2843
2944variable {𝕜 E : Type *} [RCLike 𝕜] [NormedAddCommGroup E]
@@ -45,9 +60,9 @@ I chose to do it in order to isolate parts of the proof that do not rely
4560on the inner product space structure.
4661-/
4762theorem 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) :
63+ (f : E →ₗ[𝕜] E) (hf : LipschitzWith 1 f) (g : E →L[𝕜] f.fixedPoints )
64+ (hg_proj : ∀ x : f.fixedPoints , g x = x)
65+ (hg_ker : g.ker ≤ f.coboundaries.topologicalClosure ) (x : E) :
5166 Tendsto (birkhoffAverage 𝕜 f _root_.id · x) atTop (𝓝 (g x)) := by
5267 /- Any point can be represented as a sum of `y ∈ LinearMap.ker g` and a fixed point `z`. -/
5368 obtain ⟨y, hy, z, hz, rfl⟩ : ∃ y, g y = 0 ∧ ∃ z, IsFixedPt f z ∧ x = y + z :=
@@ -59,7 +74,7 @@ theorem LinearMap.tendsto_birkhoffAverage_of_ker_subset_closure [NormedSpace
5974 simpa [hy, hgz, birkhoffAverage, birkhoffSum, Finset.sum_add_distrib, smul_add]
6075 using this.add (hz.tendsto_birkhoffAverage 𝕜 _root_.id)
6176 /- 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`,
77+ By assumption, `f.coboundaries ` is dense in the kernel of `g`,
6378 so it suffices to prove the theorem for `y = f x - x`. -/
6479 have : IsClosed {x | Tendsto (birkhoffAverage 𝕜 f _root_.id · x) atTop (𝓝 0 )} :=
6580 isClosed_setOf_tendsto_birkhoffAverage 𝕜 hf uniformContinuous_id continuous_const
@@ -78,6 +93,31 @@ variable [InnerProductSpace 𝕜 E] [CompleteSpace E]
7893
7994local notation "⟪" x ", " y "⟫" => inner 𝕜 x y
8095
96+ open Submodule
97+
98+ /-- The closure of the coboundaries of the form `f x - x` contains the orthogonal complement of the
99+ fixed points of `f`.
100+ -/
101+ theorem ContinuousLinearMap.fixedPoints_orthogonal_le_topologicalClosure_coboundary
102+ (f : E →L[𝕜] E) (hf : ‖f‖ ≤ 1 ) : f.fixedPointsᗮ ≤ f.coboundaries.topologicalClosure := by
103+ /- In other words, we need to verify that any vector that is orthogonal to the range of `f - 1`
104+ is a fixed point of `f`. -/
105+ rw [← Submodule.orthogonal_orthogonal_eq_closure]
106+ /- To verify this, we verify `‖f x‖ ≤ ‖x‖` (because `‖f‖ ≤ 1`) and `⟪f x, x⟫ = ‖x‖²`. -/
107+ refine Submodule.orthogonal_le fun x hx ↦ eq_of_norm_le_re_inner_eq_norm_sq (𝕜 := 𝕜) ?_ ?_
108+ · simpa using f.le_of_opNorm_le hf x
109+ · have : ∀ y, ⟪f y, x⟫ = ⟪y, x⟫ := by
110+ simpa [Submodule.mem_orthogonal, inner_sub_left, sub_eq_zero] using hx
111+ simp [this]
112+
113+ theorem ContinuousLinearMap.topologicalClosure_eqLocus_sum_coboundary_eq_top
114+ (f : E →L[𝕜] E) (hf : ‖f‖ ≤ 1 ) : (f.fixedPoints + f.coboundaries).topologicalClosure = ⊤ := by
115+ have h := sup_orthogonal_of_hasOrthogonalProjection (K := f.fixedPoints)
116+ rw [eq_top_iff] at *
117+ grw [f.fixedPoints_orthogonal_le_topologicalClosure_coboundary hf,
118+ ClosureOperator.sup_closure_le _ f.fixedPoints] at h
119+ assumption
120+
81121set_option backward.isDefEq.respectTransparency false in
82122/-- **Von Neumann Mean Ergodic Theorem** for an operator in a Hilbert space.
83123For a contracting continuous linear self-map `f : E →L[𝕜] E` of a Hilbert space, `‖f‖ ≤ 1`,
@@ -88,21 +128,13 @@ birkhoffAverage 𝕜 f id N x = (N : 𝕜)⁻¹ • ∑ n ∈ Finset.range N, f^
88128converge to the orthogonal projection of `x` to the subspace of fixed points of `f`. -/
89129theorem ContinuousLinearMap.tendsto_birkhoffAverage_orthogonalProjection (f : E →L[𝕜] E)
90130 (hf : ‖f‖ ≤ 1 ) (x : E) :
91- Tendsto (birkhoffAverage 𝕜 f _root_. id · x) atTop
92- (𝓝 <| (f.eqLocus ( 1 : E →L[𝕜] E)) .orthogonalProjection x) := by
131+ Tendsto (birkhoffAverage 𝕜 f id · x) atTop
132+ (𝓝 <| f.fixedPoints .orthogonalProjection x) := by
93133 /- Due to the previous theorem, it suffices to verify
94134 that the range of `f - 1` is dense in the orthogonal complement
95135 to the submodule of fixed points of `f`. -/
96136 apply (f : E →ₗ[𝕜] E).tendsto_birkhoffAverage_of_ker_subset_closure (f.lipschitz.weaken hf)
97- · exact (f.eqLocus ( 1 : E →L[𝕜] E)) .orthogonalProjection_mem_subspace_eq_self
137+ · exact f.fixedPoints .orthogonalProjection_mem_subspace_eq_self
98138 · 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]
139+ rw [Submodule.ker_orthogonalProjection]
140+ exact f.fixedPoints_orthogonal_le_topologicalClosure_coboundary hf
0 commit comments