Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit ff35218

Browse files
committed
feat(analysis/convex/topology): add lemmas (#11615)
1 parent 4085363 commit ff35218

File tree

3 files changed

+58
-33
lines changed

3 files changed

+58
-33
lines changed

src/analysis/convex/topology.lean

Lines changed: 47 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -79,21 +79,55 @@ section has_continuous_smul
7979
variables [add_comm_group E] [module ℝ E] [topological_space E]
8080
[topological_add_group E] [has_continuous_smul ℝ E]
8181

82+
lemma convex.combo_interior_self_subset_interior {s : set E} (hs : convex ℝ s) {a b : ℝ}
83+
(ha : 0 < a) (hb : 0 ≤ b) (hab : a + b = 1) :
84+
a • interior s + b • s ⊆ interior s :=
85+
interior_smul₀ ha.ne' s ▸
86+
calc interior (a • s) + b • s ⊆ interior (a • s + b • s) : subset_interior_add_left
87+
... ⊆ interior s : interior_mono $ hs.set_combo_subset ha.le hb hab
88+
89+
lemma convex.combo_self_interior_subset_interior {s : set E} (hs : convex ℝ s) {a b : ℝ}
90+
(ha : 0 ≤ a) (hb : 0 < b) (hab : a + b = 1) :
91+
a • s + b • interior s ⊆ interior s :=
92+
by { rw add_comm, exact hs.combo_interior_self_subset_interior hb ha (add_comm a b ▸ hab) }
93+
94+
lemma convex.combo_mem_interior_left {s : set E} (hs : convex ℝ s) {x y : E} (hx : x ∈ interior s)
95+
(hy : y ∈ s) {a b : ℝ} (ha : 0 < a) (hb : 0 ≤ b) (hab : a + b = 1) :
96+
a • x + b • y ∈ interior s :=
97+
hs.combo_interior_self_subset_interior ha hb hab $
98+
add_mem_add (smul_mem_smul_set hx) (smul_mem_smul_set hy)
99+
100+
lemma convex.combo_mem_interior_right {s : set E} (hs : convex ℝ s) {x y : E} (hx : x ∈ s)
101+
(hy : y ∈ interior s) {a b : ℝ} (ha : 0 ≤ a) (hb : 0 < b) (hab : a + b = 1) :
102+
a • x + b • y ∈ interior s :=
103+
hs.combo_self_interior_subset_interior ha hb hab $
104+
add_mem_add (smul_mem_smul_set hx) (smul_mem_smul_set hy)
105+
106+
lemma convex.open_segment_subset_interior_left {s : set E} (hs : convex ℝ s) {x y : E}
107+
(hx : x ∈ interior s) (hy : y ∈ s) : open_segment ℝ x y ⊆ interior s :=
108+
by { rintro _ ⟨a, b, ha, hb, hab, rfl⟩, exact hs.combo_mem_interior_left hx hy ha hb.le hab }
109+
110+
lemma convex.open_segment_subset_interior_right {s : set E} (hs : convex ℝ s) {x y : E}
111+
(hx : x ∈ s) (hy : y ∈ interior s) : open_segment ℝ x y ⊆ interior s :=
112+
by { rintro _ ⟨a, b, ha, hb, hab, rfl⟩, exact hs.combo_mem_interior_right hx hy ha.le hb hab }
113+
114+
/-- If `x ∈ s` and `y ∈ interior s`, then the segment `(x, y]` is included in `interior s`. -/
115+
lemma convex.add_smul_sub_mem_interior {s : set E} (hs : convex ℝ s)
116+
{x y : E} (hx : x ∈ s) (hy : y ∈ interior s) {t : ℝ} (ht : t ∈ Ioc (0 : ℝ) 1) :
117+
x + t • (y - x) ∈ interior s :=
118+
by simpa only [sub_smul, smul_sub, one_smul, add_sub, add_comm]
119+
using hs.combo_mem_interior_left hy hx ht.1 (sub_nonneg.mpr ht.2) (add_sub_cancel'_right _ _)
120+
121+
/-- If `x ∈ s` and `x + y ∈ interior s`, then `x + t y ∈ interior s` for `t ∈ (0, 1]`. -/
122+
lemma convex.add_smul_mem_interior {s : set E} (hs : convex ℝ s)
123+
{x y : E} (hx : x ∈ s) (hy : x + y ∈ interior s) {t : ℝ} (ht : t ∈ Ioc (0 : ℝ) 1) :
124+
x + t • y ∈ interior s :=
125+
by { convert hs.add_smul_sub_mem_interior hx hy ht, abel }
126+
82127
/-- In a topological vector space, the interior of a convex set is convex. -/
83128
lemma convex.interior {s : set E} (hs : convex ℝ s) : convex ℝ (interior s) :=
84-
convex_iff_pointwise_add_subset.mpr $ λ a b ha hb hab,
85-
have h : is_open (a • interior s + b • interior s), from
86-
or.elim (classical.em (a = 0))
87-
(λ heq,
88-
have hne : b ≠ 0, by { rw [heq, zero_add] at hab, rw hab, exact one_ne_zero },
89-
by { rw ← image_smul,
90-
exact (is_open_map_smul₀ hne _ is_open_interior).add_left } )
91-
(λ hne,
92-
by { rw ← image_smul,
93-
exact (is_open_map_smul₀ hne _ is_open_interior).add_right }),
94-
(subset_interior_iff_subset_of_open h).mpr $ subset.trans
95-
(by { simp only [← image_smul], apply add_subset_add; exact image_subset _ interior_subset })
96-
(convex_iff_pointwise_add_subset.mp hs ha hb hab)
129+
convex_iff_open_segment_subset.mpr $ λ x y hx hy,
130+
hs.open_segment_subset_interior_left hx (interior_subset hy)
97131

98132
/-- In a topological vector space, the closure of a convex set is convex. -/
99133
lemma convex.closure {s : set E} (hs : convex ℝ s) : convex ℝ (closure s) :=
@@ -120,25 +154,6 @@ lemma set.finite.is_closed_convex_hull [t2_space E] {s : set E} (hs : finite s)
120154
is_closed (convex_hull ℝ s) :=
121155
hs.compact_convex_hull.is_closed
122156

123-
/-- If `x ∈ s` and `y ∈ interior s`, then the segment `(x, y]` is included in `interior s`. -/
124-
lemma convex.add_smul_sub_mem_interior {s : set E} (hs : convex ℝ s)
125-
{x y : E} (hx : x ∈ s) (hy : y ∈ interior s) {t : ℝ} (ht : t ∈ Ioc (0 : ℝ) 1) :
126-
x + t • (y - x) ∈ interior s :=
127-
begin
128-
let f := λ z, x + t • (z - x),
129-
have : is_open_map f := (is_open_map_add_left _).comp
130-
((is_open_map_smul (units.mk0 _ ht.1.ne')).comp (is_open_map_sub_right _)),
131-
apply mem_interior.2 ⟨f '' (interior s), _, this _ is_open_interior, mem_image_of_mem _ hy⟩,
132-
refine image_subset_iff.2 (λ z hz, _),
133-
exact hs.add_smul_sub_mem hx (interior_subset hz) ⟨ht.1.le, ht.2⟩,
134-
end
135-
136-
/-- If `x ∈ s` and `x + y ∈ interior s`, then `x + t y ∈ interior s` for `t ∈ (0, 1]`. -/
137-
lemma convex.add_smul_mem_interior {s : set E} (hs : convex ℝ s)
138-
{x y : E} (hx : x ∈ s) (hy : x + y ∈ interior s) {t : ℝ} (ht : t ∈ Ioc (0 : ℝ) 1) :
139-
x + t • y ∈ interior s :=
140-
by { convert hs.add_smul_sub_mem_interior hx hy ht, abel }
141-
142157
open affine_map
143158

144159
/-- If we dilate a convex set about a point in its interior by a scale `t > 1`, the interior of

src/topology/algebra/group.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ section pointwise
130130
variables [topological_space α] [group α] [has_continuous_mul α] {s t : set α}
131131

132132
@[to_additive]
133-
lemma is_open.mul_left (ht : is_open t) : is_open (s * t) :=
133+
lemma is_open.mul_left (ht : is_open t) : is_open (s * t) :=
134134
begin
135135
rw ←Union_mul_left_image,
136136
exact is_open_Union (λ a, is_open_Union $ λ ha, is_open_map_mul_left a t ht),

src/topology/algebra/ordered/basic.lean

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,16 @@ lemma is_closed.is_closed_le [topological_space β] {f g : β → α} {s : set
209209
is_closed {x ∈ s | f x ≤ g x} :=
210210
(hf.prod hg).preimage_closed_of_closed hs order_closed_topology.is_closed_le'
211211

212+
lemma is_closed.epigraph [topological_space β] {f : β → α} {s : set β}
213+
(hs : is_closed s) (hf : continuous_on f s) :
214+
is_closed {p : β × α | p.1 ∈ s ∧ f p.1 ≤ p.2} :=
215+
(hs.preimage continuous_fst).is_closed_le (hf.comp continuous_on_fst subset.rfl) continuous_on_snd
216+
217+
lemma is_closed.hypograph [topological_space β] {f : β → α} {s : set β}
218+
(hs : is_closed s) (hf : continuous_on f s) :
219+
is_closed {p : β × α | p.1 ∈ s ∧ p.2 ≤ f p.1} :=
220+
(hs.preimage continuous_fst).is_closed_le continuous_on_snd (hf.comp continuous_on_fst subset.rfl)
221+
212222
omit t
213223

214224
lemma nhds_within_Ici_ne_bot {a b : α} (H₂ : a ≤ b) :

0 commit comments

Comments
 (0)