diff --git a/Mathlib/Analysis/LocallyConvex/Polar.lean b/Mathlib/Analysis/LocallyConvex/Polar.lean index 1203a38297906e..10aef03c7c24a7 100644 --- a/Mathlib/Analysis/LocallyConvex/Polar.lean +++ b/Mathlib/Analysis/LocallyConvex/Polar.lean @@ -5,6 +5,7 @@ Authors: Moritz Doll, Kalle KytΓΆlΓ€ -/ module +public import Mathlib.Analysis.LocallyConvex.Separation public import Mathlib.LinearAlgebra.SesquilinearForm.Basic public import Mathlib.Topology.Algebra.Module.Spaces.WeakBilin public import Mathlib.Analysis.Normed.Field.Lemmas @@ -26,6 +27,8 @@ any bilinear form `B : E β†’β‚—[π•œ] F β†’β‚—[π•œ] π•œ`, where `π•œ` is a no * `LinearMap.polar_eq_iInter`: The polar as an intersection. * `LinearMap.subset_bipolar`: The polar is a subset of the bipolar. * `LinearMap.polar_isClosed`: The polar is closed in the weak topology induced by `B.flip`. +* `Submodule.dense_iff_polarSubmodule_eq_bot`: A real submodule of a locally convex space is dense + if and only if its polar submodule is trivial. ## References @@ -260,3 +263,17 @@ theorem polar_univ : polar π•œ (univ : Set E) = {(0 : StrongDual π•œ E)} := end end StrongDual + +namespace Submodule + +variable [TopologicalSpace E] [AddCommGroup E] [Module ℝ E] + [IsTopologicalAddGroup E] [ContinuousSMul ℝ E] [LocallyConvexSpace ℝ E] + +/-- A real submodule of a locally convex space is dense if and only if its polar submodule is +trivial. -/ +theorem dense_iff_polarSubmodule_eq_bot (s : Submodule ℝ E) : + Dense (s : Set E) ↔ StrongDual.polarSubmodule ℝ s = βŠ₯ := by + simp only [dense_iff_forall_dual_eq_zero, Submodule.eq_bot_iff, + StrongDual.mem_polarSubmodule] + +end Submodule diff --git a/Mathlib/Analysis/LocallyConvex/Separation.lean b/Mathlib/Analysis/LocallyConvex/Separation.lean index bce8d44c8114d3..c5c6622dff958d 100644 --- a/Mathlib/Analysis/LocallyConvex/Separation.lean +++ b/Mathlib/Analysis/LocallyConvex/Separation.lean @@ -35,6 +35,9 @@ We provide many variations to stricten the result under more assumptions on the * `geometric_hahn_banach_point_closed`, `geometric_hahn_banach_closed_point`: One set is closed, the other one is a singleton. Strict separation. * `geometric_hahn_banach_point_point`: Both sets are singletons. Strict separation. + +As an application, `Submodule.dense_iff_forall_dual_eq_zero` characterizes dense real submodules +by the vanishing of their continuous dual annihilators. -/ public section @@ -251,6 +254,40 @@ theorem iInter_halfSpaces_eq (hs₁ : Convex ℝ s) (hsβ‚‚ : IsClosed s) : obtain ⟨l, s, hlA, hl⟩ := geometric_hahn_banach_closed_point hs₁ hsβ‚‚ h obtain ⟨y, hy, hxy⟩ := hx l exact ((hxy.trans_lt (hlA y hy)).trans hl).not_ge le_rfl + +namespace Submodule + +variable (s : Submodule ℝ E) + +/-- A real submodule of a locally convex space is dense if and only if every continuous linear +functional vanishing on it is zero. -/ +theorem dense_iff_forall_dual_eq_zero : + Dense (s : Set E) ↔ βˆ€ f : StrongDual ℝ E, (βˆ€ x ∈ s, f x = 0) β†’ f = 0 := by + constructor + Β· intro hs f hf + exact ContinuousLinearMap.ext_on (by simpa using hs) hf + Β· intro h + rw [Submodule.dense_iff_topologicalClosure_eq_top] + apply top_unique + intro x _ + by_contra hxc + obtain ⟨f, u, hfc, hfx⟩ := geometric_hahn_banach_closed_point s.topologicalClosure.convex + s.isClosed_topologicalClosure hxc + have hrestr : f.toLinearMap.comp s.subtype = 0 := by + by_contra hf + obtain ⟨y, hy⟩ := (f.toLinearMap.comp s.subtype).surjective hf u + exact (hfc y (s.le_topologicalClosure y.property)).ne hy + have hf : f = 0 := h f fun y hy ↦ DFunLike.congr_fun hrestr ⟨y, hy⟩ + simpa [hf] using (hfc 0 s.topologicalClosure.zero_mem).trans hfx + +/-- A nondense real submodule of a locally convex space admits a nonzero continuous linear +functional vanishing on it. -/ +theorem exists_dual_annihilator_of_not_dense (hs : Β¬ Dense (s : Set E)) : + βˆƒ f : StrongDual ℝ E, f β‰  0 ∧ βˆ€ x ∈ s, f x = 0 := by + simpa only [dense_iff_forall_dual_eq_zero, not_forall, exists_prop, and_comm] using hs + +end Submodule + end namespace RCLike