Skip to content

Commit 7118513

Browse files
committed
playing the minimising game
1 parent d61a3f9 commit 7118513

1 file changed

Lines changed: 32 additions & 26 deletions

File tree

Mathlib/Analysis/Normed/Module/Milman-Pettis.lean

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ Authors: Filippo A. E. Nuccio
77
import Mathlib.Analysis.Convex.Uniform
88
import Mathlib.Analysis.Normed.Module.WeakDual
99
import Mathlib.LinearAlgebra.Dual.Defs
10+
import Mathlib.Topology.Algebra.Module.LinearMap
1011

1112
open scoped Topology NNReal
1213

@@ -20,6 +21,7 @@ variable [NormedAddCommGroup E] [SeminormedAddCommGroup F]
2021
variable [DenselyNormedField 𝕜] [NormedAlgebra ℝ 𝕜] [NontriviallyNormedField 𝕜']
2122
variable [NormedSpace 𝕜 E] [NormedSpace 𝕜' F] {σ₁₂ : 𝕜 →+* 𝕜'} [RingHomIsometric σ₁₂]
2223

24+
2325
theorem exists_nnorm_eq_one_lt_apply_of_lt_opNorm (f : E →SL[σ₁₂] F) {r : ℝ} (hr₀ : 0 ≤ r)
2426
(hr : r < ‖f‖) : ∃ x : E, ‖x‖ = 1 ∧ r < ‖f x‖ := by
2527
obtain ⟨x, hlt, hr⟩ := exists_lt_apply_of_lt_opNorm f hr
@@ -57,12 +59,15 @@ end ContinuousLinearMap
5759

5860
end opNorm
5961

60-
variable {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E]
62+
variable {𝕜 𝕜₁ 𝕜₂ E E₁ E₂ : Type*} [RCLike 𝕜₂] [NontriviallyNormedField 𝕜] [NormedField 𝕜₁]
63+
[NormedAddCommGroup E] [NormedSpace 𝕜 E]
64+
[SeminormedAddCommGroup E₁] [NormedSpace 𝕜₁ E₁]
65+
[NormedAddCommGroup E₂] [NormedSpace 𝕜₂ E₂]
6166

6267
open Metric NormedSpace Function ContinuousLinearMap Pointwise
6368

64-
local notation3 "E**" => StrongDual (StrongDual E)
65-
local notation3 "𝒰" => (inclusionInDoubleDual ℝ E) '' closedBall 0 1
69+
local notation3 "E**" => StrongDual 𝕜 (StrongDual 𝕜 E)
70+
local notation3 "𝒰" => (inclusionInDoubleDual 𝕜₂ E₂) '' closedBall 0 1
6671

6772
-- **TODO**: Change name, generalise to every radious/centre, align assumptions with
6873
-- `double_dual_bound`
@@ -71,39 +76,40 @@ local notation3 "𝒰" => (inclusionInDoubleDual ℝ E) '' closedBall 0 1
7176
-- grw [← hxa, mem_closedBall_zero_iff, double_dual_bound, ← mem_closedBall_zero_iff]
7277
-- assumption
7378

74-
lemma IsClosed_image_ball [CompleteSpace E] : IsClosed 𝒰 :=
75-
(inclusionInDoubleDualLi ℝ E).isometry.isClosedEmbedding.isClosedMap _ isClosed_closedBall
79+
-- **FAE** serve RCLike, not-Semi(Normed)
80+
lemma IsClosed_image_ball [CompleteSpace E₂] : IsClosed 𝒰 :=
81+
(inclusionInDoubleDualLi 𝕜₂ E₂).isometry.isClosedEmbedding.isClosedMap _ isClosed_closedBall
7682

83+
-- **FAE** serve Nontriviallynormed, basta SeminormedAddGroup
7784
lemma WeakClosure_subset_closedBall {s : Set E**} {c : E**} {ε : ℝ} (hs : s ⊆ closedBall c ε) :
78-
letI 𝒯 : TopologicalSpace (WeakDual (StrongDual E)) := inferInstance
85+
letI 𝒯 : TopologicalSpace (WeakDual 𝕜 (StrongDual 𝕜 E)) := inferInstance
7986
(closure[𝒯] s) ⊆ closedBall (α := E**) c ε :=
8087
closure_minimal hs (WeakDual.isClosed_closedBall ..)
8188

8289

8390
-- **TODO** Check not in Mathlib, miminise assumptions, golf proof.
84-
lemma surjective_iff_sphere_subset_range {F : Type*} [NormedAddCommGroup F] [NormedSpace ℝ F]
85-
(f : E →L[ℝ] F) : Surjective f ↔ ∃ ρ > 0, sphere 0 ρ ⊆ Set.range f := by
91+
lemma surjective_iff_sphere_subset_range [Algebra ℝ 𝕜₁]
92+
{F : Type*} [NormedAddCommGroup F] [Module 𝕜₁ F]
93+
[NormedSpace ℝ F] [IsScalarTower ℝ 𝕜₁ F] [Module ℝ E₁] [IsScalarTower ℝ 𝕜₁ E₁]
94+
(f : E₁ →L[𝕜₁] F) : Surjective f ↔ ∃ ρ > 0, sphere 0 ρ ⊆ Set.range f := by
8695
refine ⟨fun _ ↦ ⟨1, by simp_all⟩, fun ⟨ρ, ρ_pos, sphere_le⟩ z ↦ ?_⟩
8796
by_cases hz : z = 0
8897
· exact ⟨0, by simp_all⟩
89-
set α := ‖z‖ with hα_def
90-
have hα : α ≠ 0 := by
91-
rwa [norm_ne_zero_iff]
92-
set y := (ρ * α⁻¹) • z with hy_def
93-
have hy : y ∈ sphere 0 ρ := by
94-
simp
95-
calc ‖y‖ = ‖(ρ * α⁻¹) • z‖ := by rw [hy_def]
96-
_ = |ρ * α⁻¹| * ‖z‖ := by rw [norm_smul, Real.norm_eq_abs]
97-
_ = |ρ * α⁻¹| * |α| := by simp [hα_def]
98-
_ = ρ := by
99-
simpa [← abs_mul, mul_assoc, inv_mul_cancel₀ hα] using le_of_lt ρ_pos
100-
obtain ⟨x, hx⟩ := sphere_le hy
98+
set α := ‖z‖
99+
have hα : α ≠ 0 := by rwa [norm_ne_zero_iff]
100+
have h_mem : (ρ * α⁻¹) • z ∈ sphere 0 ρ := by
101+
simp only [mem_sphere_iff_norm, sub_zero]
102+
calc ‖(ρ * α⁻¹) • z‖ = |ρ * α⁻¹| * |α| := by rw [norm_smul, Real.norm_eq_abs, abs_mul,
103+
abs_norm]
104+
_ = ρ := by simpa [← abs_mul, mul_assoc, inv_mul_cancel₀ hα] using le_of_lt ρ_pos
105+
obtain ⟨x, hx⟩ := sphere_le h_mem
101106
use (ρ⁻¹ * α) • x
102-
rw [map_smul, hx, hy_def, ← smul_assoc, smul_eq_mul, show (ρ⁻¹ * α * (ρ * α⁻¹)) = 1 by grind,
103-
one_smul]
107+
simp [hx, ← smul_assoc, show (ρ⁻¹ * α * (ρ * α⁻¹)) = 1 by grind]
104108

105-
lemma surjective_iff_closedBall_subset_range {F : Type*} [NormedAddCommGroup F] [NormedSpace ℝ F]
106-
(f : E →L[ℝ] F) : Surjective f ↔ ∃ ρ > 0, closedBall 0 ρ ⊆ Set.range f :=
109+
lemma surjective_iff_closedBall_subset_range [Algebra ℝ 𝕜₁]
110+
{F : Type*} [NormedAddCommGroup F] [Module 𝕜₁ F]
111+
[NormedSpace ℝ F] [IsScalarTower ℝ 𝕜₁ F] [Module ℝ E₁] [IsScalarTower ℝ 𝕜₁ E₁]
112+
(f : E₁ →L[𝕜₁] F) : Surjective f ↔ ∃ ρ > 0, closedBall 0 ρ ⊆ Set.range f :=
107113
fun _ ↦ ⟨1, by simp_all⟩,
108114
fun ⟨_, ρ_pos, sphere_le⟩ ↦ (surjective_iff_sphere_subset_range f).mpr ⟨_, ρ_pos, fun _ hx ↦
109115
sphere_le (sphere_subset_closedBall hx)⟩⟩
@@ -116,7 +122,7 @@ the pairing whose *first* variable is in `M*` and the second is in `M`. -/
116122
axiom goldstine : closure (X := (WeakBilin (strongDualPairing ℝ (StrongDual ℝ E))))
117123
(inclusionInDoubleDual ℝ E '' (closedBall 0 1)) = closedBall (0 : E**) 1-- := by sorry
118124

119-
lemma exists_sub_one_lt {ξ : E**} {δ : ℝ} (hδ₀ : 0 < δ) (hδ₁ : δ < 1) (h : ‖ξ‖ = 1) :
125+
lemma exists_functional_sub_one_lt {ξ : E**} {δ : ℝ} (hδ₀ : 0 < δ) (hδ₁ : δ < 1) (h : ‖ξ‖ = 1) :
120126
∃ φ : StrongDual ℝ E, ‖φ‖ = 1 ∧ |ξ φ - 1| < δ := by
121127
obtain ⟨φ, hφ_eq, hφ_lt⟩ := exists_nnorm_eq_one_lt_apply_of_lt_opNorm
122128
(f := ξ) (r := 1 - δ) (by grind) (by grind)
@@ -146,7 +152,7 @@ lemma exists_ball_lt [UniformConvexSpace E] {ξ : E**} {ε : ℝ} (hε : 0 < ε)
146152
_ = min δ' (1/2) := by rfl
147153
_ ≤ (1/2) := min_le_right ..
148154
_ < 1 := by linarith
149-
obtain ⟨φ, hφ_norm, hφ_lt⟩ := exists_sub_one_lt hδ₀ hδ₁ hξ_norm
155+
obtain ⟨φ, hφ_norm, hφ_lt⟩ := exists_functional_sub_one_lt hδ₀ hδ₁ hξ_norm
150156
replace hφ_lt : |ξ φ - 1| < δ'/2 := by
151157
apply lt_of_lt_of_le hφ_lt
152158
rw [div_le_div_iff_of_pos_right (zero_lt_two), δ_def]

0 commit comments

Comments
 (0)