@@ -79,21 +79,55 @@ section has_continuous_smul
79
79
variables [add_comm_group E] [module ℝ E] [topological_space E]
80
80
[topological_add_group E] [has_continuous_smul ℝ E]
81
81
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
+
82
127
/-- In a topological vector space, the interior of a convex set is convex. -/
83
128
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)
97
131
98
132
/-- In a topological vector space, the closure of a convex set is convex. -/
99
133
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)
120
154
is_closed (convex_hull ℝ s) :=
121
155
hs.compact_convex_hull.is_closed
122
156
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
-
142
157
open affine_map
143
158
144
159
/-- If we dilate a convex set about a point in its interior by a scale `t > 1`, the interior of
0 commit comments