Skip to content

Commit 04e6d44

Browse files
committed
chore(Analysis/NormedSpace/HahnBanach): move and split files (#29447)
This moves or splits the files in `Analysis/NormedSpace/HahnBanach/` accordingly: - `Separation` → `Analysis/LocallyConvex/Separation` - `Extension` → `Analysis/Normed/Module/HahnBanach` - `SeparatingDual`: split, mostly in `Analysis/LocallyConvex/SeparatingDual`, but a few completeness results are sent to `Analysis/Normed/Operator/CompleteCodomain`. The split allows us to significantly reduce the imports of `SeparatingDual`, albeit with a new proof that a normed space over `RCLike 𝕜` has a separating dual. Here we use the geometric Hahn-Banach theorem instead of the analytic one. This is part of #28698 to migrate the material in `Analysis/NormedSpace/` to other locations.
1 parent 4b80520 commit 04e6d44

File tree

17 files changed

+102
-77
lines changed

17 files changed

+102
-77
lines changed

Counterexamples/Phillips.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Copyright (c) 2021 Sébastien Gouëzel. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Sébastien Gouëzel
55
-/
6-
import Mathlib.Analysis.NormedSpace.HahnBanach.Extension
6+
import Mathlib.Analysis.Normed.Module.HahnBanach
77
import Mathlib.MeasureTheory.Integral.Bochner.Set
88
import Mathlib.MeasureTheory.Measure.Lebesgue.Basic
99
import Mathlib.Topology.ContinuousMap.Bounded.Star

Mathlib.lean

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1788,6 +1788,8 @@ import Mathlib.Analysis.LocallyConvex.Basic
17881788
import Mathlib.Analysis.LocallyConvex.Bounded
17891789
import Mathlib.Analysis.LocallyConvex.ContinuousOfBounded
17901790
import Mathlib.Analysis.LocallyConvex.Polar
1791+
import Mathlib.Analysis.LocallyConvex.SeparatingDual
1792+
import Mathlib.Analysis.LocallyConvex.Separation
17911793
import Mathlib.Analysis.LocallyConvex.StrongTopology
17921794
import Mathlib.Analysis.LocallyConvex.WeakDual
17931795
import Mathlib.Analysis.LocallyConvex.WeakOperatorTopology
@@ -1884,6 +1886,7 @@ import Mathlib.Analysis.Normed.Module.Completion
18841886
import Mathlib.Analysis.Normed.Module.Convex
18851887
import Mathlib.Analysis.Normed.Module.Dual
18861888
import Mathlib.Analysis.Normed.Module.FiniteDimension
1889+
import Mathlib.Analysis.Normed.Module.HahnBanach
18871890
import Mathlib.Analysis.Normed.Module.RCLike.Basic
18881891
import Mathlib.Analysis.Normed.Module.RCLike.Extend
18891892
import Mathlib.Analysis.Normed.Module.RCLike.Real
@@ -1898,6 +1901,7 @@ import Mathlib.Analysis.Normed.Operator.Basic
18981901
import Mathlib.Analysis.Normed.Operator.Bilinear
18991902
import Mathlib.Analysis.Normed.Operator.BoundedLinearMaps
19001903
import Mathlib.Analysis.Normed.Operator.Compact
1904+
import Mathlib.Analysis.Normed.Operator.CompleteCodomain
19011905
import Mathlib.Analysis.Normed.Operator.Completeness
19021906
import Mathlib.Analysis.Normed.Operator.Conformal
19031907
import Mathlib.Analysis.Normed.Operator.ContinuousLinearMap
@@ -1940,9 +1944,6 @@ import Mathlib.Analysis.NormedSpace.ENormedSpace
19401944
import Mathlib.Analysis.NormedSpace.Extend
19411945
import Mathlib.Analysis.NormedSpace.Extr
19421946
import Mathlib.Analysis.NormedSpace.FunctionSeries
1943-
import Mathlib.Analysis.NormedSpace.HahnBanach.Extension
1944-
import Mathlib.Analysis.NormedSpace.HahnBanach.SeparatingDual
1945-
import Mathlib.Analysis.NormedSpace.HahnBanach.Separation
19461947
import Mathlib.Analysis.NormedSpace.HomeomorphBall
19471948
import Mathlib.Analysis.NormedSpace.IndicatorFunction
19481949
import Mathlib.Analysis.NormedSpace.Int

Mathlib/Analysis/CStarAlgebra/ContinuousFunctionalCalculus/Integral.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ Authors: Frédéric Dupuis, Anatole Dedecker
55
-/
66

77
import Mathlib.Analysis.Normed.Algebra.Spectrum
8-
import Mathlib.Analysis.CStarAlgebra.ContinuousFunctionalCalculus.Unital
98
import Mathlib.Analysis.CStarAlgebra.ContinuousFunctionalCalculus.NonUnital
9+
import Mathlib.Analysis.RCLike.Lemmas
1010
import Mathlib.MeasureTheory.SpecificCodomains.ContinuousMapZero
1111
import Mathlib.MeasureTheory.Integral.Bochner.ContinuousLinearMap
1212

Mathlib/Analysis/Calculus/ParametricIntegral.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Authors: Patrick Massot
66
import Mathlib.Analysis.Calculus.MeanValue
77
import Mathlib.MeasureTheory.Integral.DominatedConvergence
88
import Mathlib.MeasureTheory.Integral.Bochner.Set
9-
import Mathlib.Analysis.NormedSpace.HahnBanach.SeparatingDual
9+
import Mathlib.Analysis.LocallyConvex.SeparatingDual
1010

1111
/-!
1212
# Derivatives of integrals depending on parameters

Mathlib/Analysis/Convex/Cone/Dual.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Yaël Dillies, Andrew Yang
55
-/
66
import Mathlib.Analysis.Convex.Cone.Basic
7-
import Mathlib.Analysis.NormedSpace.HahnBanach.Separation
7+
import Mathlib.Analysis.LocallyConvex.Separation
88
import Mathlib.Geometry.Convex.Cone.Dual
99
import Mathlib.Topology.Algebra.Module.PerfectPairing
1010

Mathlib/Analysis/Convex/KreinMilman.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Yaël Dillies
55
-/
66
import Mathlib.Analysis.Convex.Exposed
7-
import Mathlib.Analysis.NormedSpace.HahnBanach.Separation
7+
import Mathlib.Analysis.LocallyConvex.Separation
88
import Mathlib.Topology.Algebra.ContinuousAffineMap
99

1010
/-!

Mathlib/Analysis/NormedSpace/HahnBanach/SeparatingDual.lean renamed to Mathlib/Analysis/LocallyConvex/SeparatingDual.lean

Lines changed: 8 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Sébastien Gouëzel, Filippo A. E. Nuccio
55
-/
66
import 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
109
import Mathlib.LinearAlgebra.Dual.Lemmas
1110

1211
/-!
@@ -48,10 +47,12 @@ instance {E : Type*} [TopologicalSpace E] [AddCommGroup E] [IsTopologicalAddGrou
4847
exact ⟨f, hf.ne'⟩⟩
4948

5049
instance {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

5657
namespace 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-
244187
end Field
245188

246189
end SeparatingDual

Mathlib/Analysis/LocallyConvex/WeakOperatorTopology.lean

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ Authors: Frédéric Dupuis
55
-/
66

77
import Mathlib.Analysis.LocallyConvex.WithSeminorms
8-
import Mathlib.Analysis.NormedSpace.HahnBanach.SeparatingDual
8+
import Mathlib.Analysis.LocallyConvex.SeparatingDual
9+
import Mathlib.Topology.Algebra.Module.StrongTopology
910

1011
/-!
1112
# The weak operator topology

Mathlib/Analysis/LocallyConvex/WeakSpace.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Copyright (c) 2024 Jireh Loreaux. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Jireh Loreaux
55
-/
6-
import Mathlib.Analysis.NormedSpace.HahnBanach.Separation
6+
import Mathlib.Analysis.LocallyConvex.Separation
77
import Mathlib.LinearAlgebra.Dual.Defs
88
import Mathlib.Topology.Algebra.Module.WeakDual
99

0 commit comments

Comments
 (0)