Skip to content

Commit ae232e4

Browse files
committed
refactor(Analysis/LocallyConvex/AbsConvexOpen): Break out AbsConvexOpenSets into its own file (#21928)
Break out `AbsConvexOpenSets` into its own file. This allows `Mathlib.Analysis.LocallyConvex.AbsConvex` to be imported without also pulling in `Mathlib.Analysis.LocallyConvex.WithSeminorms` and `Mathlib.Analysis.Convex.Gauge`.
1 parent f7c4a81 commit ae232e4

File tree

3 files changed

+123
-94
lines changed

3 files changed

+123
-94
lines changed

Mathlib.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1456,6 +1456,7 @@ import Mathlib.Analysis.InnerProductSpace.TwoDim
14561456
import Mathlib.Analysis.InnerProductSpace.WeakOperatorTopology
14571457
import Mathlib.Analysis.InnerProductSpace.l2Space
14581458
import Mathlib.Analysis.LocallyConvex.AbsConvex
1459+
import Mathlib.Analysis.LocallyConvex.AbsConvexOpen
14591460
import Mathlib.Analysis.LocallyConvex.BalancedCoreHull
14601461
import Mathlib.Analysis.LocallyConvex.Barrelled
14611462
import Mathlib.Analysis.LocallyConvex.Basic

Mathlib/Analysis/LocallyConvex/AbsConvex.lean

Lines changed: 0 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Moritz Doll
55
-/
66
import Mathlib.Analysis.LocallyConvex.BalancedCoreHull
7-
import Mathlib.Analysis.LocallyConvex.WithSeminorms
8-
import Mathlib.Analysis.Convex.Gauge
97
import Mathlib.Analysis.Convex.TotallyBounded
108

119
/-!
@@ -21,8 +19,6 @@ topological vector space has a basis consisting of absolutely convex sets.
2119
containing `s`;
2220
* `closedAbsConvexHull`: the closed absolutely convex hull of a set `s` is the smallest absolutely
2321
convex set containing `s`;
24-
* `gaugeSeminormFamily`: the seminorm family induced by all open absolutely convex neighborhoods
25-
of zero.
2622
2723
## Main statements
2824
@@ -32,8 +28,6 @@ topological vector space has a basis consisting of absolutely convex sets.
3228
of `s`;
3329
* `closedAbsConvexHull_closure_eq_closedAbsConvexHull` : the closed absolutely convex hull of the
3430
closure of `s` equals the closed absolutely convex hull of `s`;
35-
* `with_gaugeSeminormFamily`: the topology of a locally convex space is induced by the family
36-
`gaugeSeminormFamily`.
3731
3832
## Implementation notes
3933
@@ -48,7 +42,6 @@ over a `SeminormedRing` `𝕜` and convex over `ℝ`, assuming `IsScalarTower
4842
disks, convex, balanced
4943
-/
5044

51-
5245
open NormedField Set
5346

5447
open NNReal Pointwise Topology
@@ -311,90 +304,3 @@ theorem totallyBounded_absConvexHull (hs : TotallyBounded s) :
311304
exact ⟨hs, totallyBounded_neg hs⟩
312305

313306
end
314-
315-
section AbsolutelyConvexSets
316-
317-
variable [TopologicalSpace E] [AddCommMonoid E] [Zero E] [SeminormedRing 𝕜]
318-
variable [SMul 𝕜 E] [SMul ℝ E]
319-
variable (𝕜 E)
320-
321-
/-- The type of absolutely convex open sets. -/
322-
def AbsConvexOpenSets :=
323-
{ s : Set E // (0 : E) ∈ s ∧ IsOpen s ∧ AbsConvex 𝕜 s }
324-
325-
noncomputable instance AbsConvexOpenSets.instCoeTC : CoeTC (AbsConvexOpenSets 𝕜 E) (Set E) :=
326-
⟨Subtype.val⟩
327-
328-
namespace AbsConvexOpenSets
329-
330-
variable {𝕜 E}
331-
332-
theorem coe_zero_mem (s : AbsConvexOpenSets 𝕜 E) : (0 : E) ∈ (s : Set E) :=
333-
s.2.1
334-
335-
theorem coe_isOpen (s : AbsConvexOpenSets 𝕜 E) : IsOpen (s : Set E) :=
336-
s.2.2.1
337-
338-
theorem coe_nhds (s : AbsConvexOpenSets 𝕜 E) : (s : Set E) ∈ 𝓝 (0 : E) :=
339-
s.coe_isOpen.mem_nhds s.coe_zero_mem
340-
341-
theorem coe_balanced (s : AbsConvexOpenSets 𝕜 E) : Balanced 𝕜 (s : Set E) :=
342-
s.2.2.2.1
343-
344-
theorem coe_convex (s : AbsConvexOpenSets 𝕜 E) : Convex ℝ (s : Set E) :=
345-
s.2.2.2.2
346-
347-
end AbsConvexOpenSets
348-
349-
instance AbsConvexOpenSets.instNonempty : Nonempty (AbsConvexOpenSets 𝕜 E) := by
350-
rw [← exists_true_iff_nonempty]
351-
dsimp only [AbsConvexOpenSets]
352-
rw [Subtype.exists]
353-
exact ⟨Set.univ, ⟨mem_univ 0, isOpen_univ, balanced_univ, convex_univ⟩, trivial⟩
354-
355-
end AbsolutelyConvexSets
356-
357-
variable [RCLike 𝕜]
358-
variable [AddCommGroup E] [TopologicalSpace E]
359-
variable [Module 𝕜 E] [Module ℝ E] [IsScalarTower ℝ 𝕜 E]
360-
variable [ContinuousSMul ℝ E]
361-
variable (𝕜 E)
362-
363-
/-- The family of seminorms defined by the gauges of absolute convex open sets. -/
364-
noncomputable def gaugeSeminormFamily : SeminormFamily 𝕜 E (AbsConvexOpenSets 𝕜 E) := fun s =>
365-
gaugeSeminorm s.coe_balanced s.coe_convex (absorbent_nhds_zero s.coe_nhds)
366-
367-
variable {𝕜 E}
368-
369-
theorem gaugeSeminormFamily_ball (s : AbsConvexOpenSets 𝕜 E) :
370-
(gaugeSeminormFamily 𝕜 E s).ball 0 1 = (s : Set E) := by
371-
dsimp only [gaugeSeminormFamily]
372-
rw [Seminorm.ball_zero_eq]
373-
simp_rw [gaugeSeminorm_toFun]
374-
exact gauge_lt_one_eq_self_of_isOpen s.coe_convex s.coe_zero_mem s.coe_isOpen
375-
376-
variable [IsTopologicalAddGroup E] [ContinuousSMul 𝕜 E]
377-
variable [SMulCommClass ℝ 𝕜 E] [LocallyConvexSpace ℝ E]
378-
379-
/-- The topology of a locally convex space is induced by the gauge seminorm family. -/
380-
theorem with_gaugeSeminormFamily : WithSeminorms (gaugeSeminormFamily 𝕜 E) := by
381-
refine SeminormFamily.withSeminorms_of_hasBasis _ ?_
382-
refine (nhds_hasBasis_absConvex_open 𝕜 E).to_hasBasis (fun s hs => ?_) fun s hs => ?_
383-
· refine ⟨s, ⟨?_, rfl.subset⟩⟩
384-
convert (gaugeSeminormFamily _ _).basisSets_singleton_mem ⟨s, hs⟩ one_pos
385-
rw [gaugeSeminormFamily_ball, Subtype.coe_mk]
386-
refine ⟨s, ⟨?_, rfl.subset⟩⟩
387-
rw [SeminormFamily.basisSets_iff] at hs
388-
rcases hs with ⟨t, r, hr, rfl⟩
389-
rw [Seminorm.ball_finset_sup_eq_iInter _ _ _ hr]
390-
-- We have to show that the intersection contains zero, is open, balanced, and convex
391-
refine
392-
⟨mem_iInter₂.mpr fun _ _ => by simp [Seminorm.mem_ball_zero, hr],
393-
isOpen_biInter_finset fun S _ => ?_,
394-
balanced_iInter₂ fun _ _ => Seminorm.balanced_ball_zero _ _,
395-
convex_iInter₂ fun _ _ => Seminorm.convex_ball ..⟩
396-
-- The only nontrivial part is to show that the ball is open
397-
have hr' : r = ‖(r : 𝕜)‖ * 1 := by simp [abs_of_pos hr]
398-
have hr'' : (r : 𝕜) ≠ 0 := by simp [hr.ne']
399-
rw [hr', ← Seminorm.smul_ball_zero hr'', gaugeSeminormFamily_ball]
400-
exact S.coe_isOpen.smul₀ hr''
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
/-
2+
Copyright (c) 2022 Moritz Doll. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Moritz Doll
5+
-/
6+
import Mathlib.Analysis.LocallyConvex.AbsConvex
7+
import Mathlib.Analysis.LocallyConvex.WithSeminorms
8+
import Mathlib.Analysis.Convex.Gauge
9+
10+
/-!
11+
# Absolutely convex open sets
12+
13+
A set `s` in a commutative monoid `E` equipped with a topology is said to be an absolutely convex
14+
open set if it is absolutely convex and open. When `E` is a topological additive group, the topology
15+
coincides with the topology induced by the family of seminorms arising as gauges of absolutely
16+
convex open neighborhoods of zero.
17+
18+
## Main definitions
19+
20+
* `AbsConvexOpenSets`: sets which are absolutely convex and open
21+
* `gaugeSeminormFamily`: the seminorm family induced by all open absolutely convex neighborhoods
22+
of zero.
23+
24+
## Main statements
25+
26+
* `with_gaugeSeminormFamily`: the topology of a locally convex space is induced by the family
27+
`gaugeSeminormFamily`.
28+
29+
-/
30+
31+
open NormedField Set
32+
33+
open NNReal Pointwise Topology
34+
35+
variable {𝕜 E : Type*}
36+
37+
section AbsolutelyConvexSets
38+
39+
variable [TopologicalSpace E] [AddCommMonoid E] [Zero E] [SeminormedRing 𝕜]
40+
variable [SMul 𝕜 E] [SMul ℝ E]
41+
variable (𝕜 E)
42+
43+
/-- The type of absolutely convex open sets. -/
44+
def AbsConvexOpenSets :=
45+
{ s : Set E // (0 : E) ∈ s ∧ IsOpen s ∧ AbsConvex 𝕜 s }
46+
47+
noncomputable instance AbsConvexOpenSets.instCoeTC : CoeTC (AbsConvexOpenSets 𝕜 E) (Set E) :=
48+
⟨Subtype.val⟩
49+
50+
namespace AbsConvexOpenSets
51+
52+
variable {𝕜 E}
53+
54+
theorem coe_zero_mem (s : AbsConvexOpenSets 𝕜 E) : (0 : E) ∈ (s : Set E) :=
55+
s.2.1
56+
57+
theorem coe_isOpen (s : AbsConvexOpenSets 𝕜 E) : IsOpen (s : Set E) :=
58+
s.2.2.1
59+
60+
theorem coe_nhds (s : AbsConvexOpenSets 𝕜 E) : (s : Set E) ∈ 𝓝 (0 : E) :=
61+
s.coe_isOpen.mem_nhds s.coe_zero_mem
62+
63+
theorem coe_balanced (s : AbsConvexOpenSets 𝕜 E) : Balanced 𝕜 (s : Set E) :=
64+
s.2.2.2.1
65+
66+
theorem coe_convex (s : AbsConvexOpenSets 𝕜 E) : Convex ℝ (s : Set E) :=
67+
s.2.2.2.2
68+
69+
end AbsConvexOpenSets
70+
71+
instance AbsConvexOpenSets.instNonempty : Nonempty (AbsConvexOpenSets 𝕜 E) := by
72+
rw [← exists_true_iff_nonempty]
73+
dsimp only [AbsConvexOpenSets]
74+
rw [Subtype.exists]
75+
exact ⟨Set.univ, ⟨mem_univ 0, isOpen_univ, balanced_univ, convex_univ⟩, trivial⟩
76+
77+
end AbsolutelyConvexSets
78+
79+
variable [RCLike 𝕜]
80+
variable [AddCommGroup E] [TopologicalSpace E]
81+
variable [Module 𝕜 E] [Module ℝ E] [IsScalarTower ℝ 𝕜 E]
82+
variable [ContinuousSMul ℝ E]
83+
variable (𝕜 E)
84+
85+
/-- The family of seminorms defined by the gauges of absolute convex open sets. -/
86+
noncomputable def gaugeSeminormFamily : SeminormFamily 𝕜 E (AbsConvexOpenSets 𝕜 E) := fun s =>
87+
gaugeSeminorm s.coe_balanced s.coe_convex (absorbent_nhds_zero s.coe_nhds)
88+
89+
variable {𝕜 E}
90+
91+
theorem gaugeSeminormFamily_ball (s : AbsConvexOpenSets 𝕜 E) :
92+
(gaugeSeminormFamily 𝕜 E s).ball 0 1 = (s : Set E) := by
93+
dsimp only [gaugeSeminormFamily]
94+
rw [Seminorm.ball_zero_eq]
95+
simp_rw [gaugeSeminorm_toFun]
96+
exact gauge_lt_one_eq_self_of_isOpen s.coe_convex s.coe_zero_mem s.coe_isOpen
97+
98+
variable [IsTopologicalAddGroup E] [ContinuousSMul 𝕜 E]
99+
variable [SMulCommClass ℝ 𝕜 E] [LocallyConvexSpace ℝ E]
100+
101+
/-- The topology of a locally convex space is induced by the gauge seminorm family. -/
102+
theorem with_gaugeSeminormFamily : WithSeminorms (gaugeSeminormFamily 𝕜 E) := by
103+
refine SeminormFamily.withSeminorms_of_hasBasis _ ?_
104+
refine (nhds_hasBasis_absConvex_open 𝕜 E).to_hasBasis (fun s hs => ?_) fun s hs => ?_
105+
· refine ⟨s, ⟨?_, rfl.subset⟩⟩
106+
convert (gaugeSeminormFamily _ _).basisSets_singleton_mem ⟨s, hs⟩ one_pos
107+
rw [gaugeSeminormFamily_ball, Subtype.coe_mk]
108+
refine ⟨s, ⟨?_, rfl.subset⟩⟩
109+
rw [SeminormFamily.basisSets_iff] at hs
110+
rcases hs with ⟨t, r, hr, rfl⟩
111+
rw [Seminorm.ball_finset_sup_eq_iInter _ _ _ hr]
112+
-- We have to show that the intersection contains zero, is open, balanced, and convex
113+
refine
114+
⟨mem_iInter₂.mpr fun _ _ => by simp [Seminorm.mem_ball_zero, hr],
115+
isOpen_biInter_finset fun S _ => ?_,
116+
balanced_iInter₂ fun _ _ => Seminorm.balanced_ball_zero _ _,
117+
convex_iInter₂ fun _ _ => Seminorm.convex_ball ..⟩
118+
-- The only nontrivial part is to show that the ball is open
119+
have hr' : r = ‖(r : 𝕜)‖ * 1 := by simp [abs_of_pos hr]
120+
have hr'' : (r : 𝕜) ≠ 0 := by simp [hr.ne']
121+
rw [hr', ← Seminorm.smul_ball_zero hr'', gaugeSeminormFamily_ball]
122+
exact S.coe_isOpen.smul₀ hr''

0 commit comments

Comments
 (0)