@@ -4,9 +4,8 @@ Released under Apache 2.0 license as described in the file LICENSE.
44Authors: Sébastien Gouëzel, Filippo A. E. Nuccio
55-/
66import Mathlib.Algebra.Central.Defs
7- import Mathlib.Analysis.NormedSpace.HahnBanach.Extension
8- import Mathlib.Analysis.NormedSpace.HahnBanach.Separation
9- import Mathlib.Analysis.NormedSpace.Multilinear.Basic
7+ import Mathlib.Analysis.LocallyConvex.Separation
8+ import Mathlib.Analysis.LocallyConvex.WithSeminorms
109import Mathlib.LinearAlgebra.Dual.Lemmas
1110
1211/-!
@@ -48,10 +47,12 @@ instance {E : Type*} [TopologicalSpace E] [AddCommGroup E] [IsTopologicalAddGrou
4847 exact ⟨f, hf.ne'⟩⟩
4948
5049instance {E 𝕜 : Type*} [RCLike 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] : SeparatingDual 𝕜 E :=
51- ⟨fun x hx ↦ by
52- rcases exists_dual_vector 𝕜 x hx with ⟨f, -, hf⟩
53- refine ⟨f, ?_⟩
54- simpa [hf] using hx⟩
50+ ⟨fun x hx ↦
51+ let : NormedSpace ℝ E := RestrictScalars.normedSpace ℝ 𝕜 E
52+ let : Module ℝ E := RestrictScalars.module ℝ 𝕜 E
53+ have : IsScalarTower ℝ 𝕜 E := RestrictScalars.isScalarTower ℝ 𝕜 E
54+ have : LocallyConvexSpace ℝ E := NormedSpace.toLocallyConvexSpace' 𝕜
55+ RCLike.geometric_hahn_banach_point_point hx |>.imp fun f hf hf' ↦ by simp [hf'] at hf⟩
5556
5657namespace SeparatingDual
5758
@@ -183,64 +184,6 @@ theorem exists_continuousLinearEquiv_apply_eq [ContinuousSMul R V]
183184 continuous_id.add ((continuous_const.mul G.continuous).smul continuous_const) }
184185 exact ⟨A, show x + G x • (y - x) = y by simp [Gx]⟩
185186
186- open Filter
187- open scoped Topology
188-
189- section
190- variable (𝕜 E F : Type *) [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E]
191- [NormedAddCommGroup F] [NormedSpace 𝕜 F] [SeparatingDual 𝕜 E] [Nontrivial E]
192-
193- /-- If a space of linear maps from `E` to `F` is complete, and `E` is nontrivial, then `F` is
194- complete. -/
195- lemma completeSpace_of_completeSpace_continuousLinearMap [CompleteSpace (E →L[𝕜] F)] :
196- CompleteSpace F := by
197- refine Metric.complete_of_cauchySeq_tendsto fun f hf => ?_
198- obtain ⟨v, hv⟩ : ∃ (v : E), v ≠ 0 := exists_ne 0
199- obtain ⟨φ, hφ⟩ : ∃ φ : StrongDual 𝕜 E, φ v = 1 := exists_eq_one hv
200- let g : ℕ → (E →L[𝕜] F) := fun n ↦ ContinuousLinearMap.smulRightL 𝕜 E F φ (f n)
201- have : CauchySeq g := (ContinuousLinearMap.smulRightL 𝕜 E F φ).lipschitz.cauchySeq_comp hf
202- obtain ⟨a, ha⟩ : ∃ a, Tendsto g atTop (𝓝 a) := cauchy_iff_exists_le_nhds.mp this
203- refine ⟨a v, ?_⟩
204- have : Tendsto (fun n ↦ g n v) atTop (𝓝 (a v)) := by
205- have : Continuous (fun (i : E →L[𝕜] F) ↦ i v) := by fun_prop
206- exact (this.tendsto _).comp ha
207- simpa [g, ContinuousLinearMap.smulRightL, hφ]
208-
209- lemma completeSpace_continuousLinearMap_iff :
210- CompleteSpace (E →L[𝕜] F) ↔ CompleteSpace F :=
211- ⟨fun _h ↦ completeSpace_of_completeSpace_continuousLinearMap 𝕜 E F, fun _h ↦ inferInstance⟩
212-
213- open ContinuousMultilinearMap
214-
215- variable {ι : Type *} [Finite ι] {M : ι → Type *} [∀ i, NormedAddCommGroup (M i)]
216- [∀ i, NormedSpace 𝕜 (M i)] [∀ i, SeparatingDual 𝕜 (M i)]
217-
218- /-- If a space of multilinear maps from `Π i, E i` to `F` is complete, and each `E i` has a nonzero
219- element, then `F` is complete. -/
220- lemma completeSpace_of_completeSpace_continuousMultilinearMap
221- [CompleteSpace (ContinuousMultilinearMap 𝕜 M F)]
222- {m : ∀ i, M i} (hm : ∀ i, m i ≠ 0 ) : CompleteSpace F := by
223- refine Metric.complete_of_cauchySeq_tendsto fun f hf => ?_
224- have : ∀ i, ∃ φ : StrongDual 𝕜 (M i), φ (m i) = 1 := fun i ↦ exists_eq_one (hm i)
225- choose φ hφ using this
226- cases nonempty_fintype ι
227- let g : ℕ → (ContinuousMultilinearMap 𝕜 M F) := fun n ↦
228- compContinuousLinearMapL φ
229- (ContinuousMultilinearMap.smulRightL 𝕜 _ F ((ContinuousMultilinearMap.mkPiAlgebra 𝕜 ι 𝕜)) (f n))
230- have : CauchySeq g := by
231- refine (ContinuousLinearMap.lipschitz _).cauchySeq_comp ?_
232- exact (ContinuousLinearMap.lipschitz _).cauchySeq_comp hf
233- obtain ⟨a, ha⟩ : ∃ a, Tendsto g atTop (𝓝 a) := cauchy_iff_exists_le_nhds.mp this
234- refine ⟨a m, ?_⟩
235- have : Tendsto (fun n ↦ g n m) atTop (𝓝 (a m)) := ((continuous_eval_const _).tendsto _).comp ha
236- simpa [g, hφ]
237-
238- lemma completeSpace_continuousMultilinearMap_iff {m : ∀ i, M i} (hm : ∀ i, m i ≠ 0 ) :
239- CompleteSpace (ContinuousMultilinearMap 𝕜 M F) ↔ CompleteSpace F :=
240- ⟨fun _h ↦ completeSpace_of_completeSpace_continuousMultilinearMap 𝕜 F hm, fun _h ↦ inferInstance⟩
241-
242- end
243-
244187end Field
245188
246189end SeparatingDual
0 commit comments