@@ -11,13 +11,13 @@ import order.closure
11
11
12
12
## Main definitions
13
13
14
- * `balanced_core`: the largest balanced subset of a set `s`.
15
- * `balanced_hull`: the smallest balanced superset of a set `s`.
14
+ * `balanced_core`: The largest balanced subset of a set `s`.
15
+ * `balanced_hull`: The smallest balanced superset of a set `s`.
16
16
17
17
## Main statements
18
18
19
19
* `balanced_core_eq_Inter`: Characterization of the balanced core as an intersection over subsets.
20
-
20
+ * `nhds_basis_closed_balanced`: The closed balanced sets form a basis of the neighborhood filter.
21
21
22
22
## Implementation details
23
23
@@ -39,7 +39,8 @@ balanced
39
39
40
40
41
41
open set
42
- open_locale pointwise
42
+ open_locale pointwise topological_space filter
43
+
43
44
44
45
variables {𝕜 E ι : Type *}
45
46
71
72
exact ht.2 ,
72
73
end
73
74
75
+ lemma balanced_core_emptyset : balanced_core 𝕜 (∅ : set E) = ∅ :=
76
+ set.eq_empty_of_subset_empty (balanced_core_subset _)
77
+
74
78
lemma balanced_core_mem_iff {s : set E} {x : E} : x ∈ balanced_core 𝕜 s ↔
75
79
∃ t : set E, balanced 𝕜 t ∧ t ⊆ s ∧ x ∈ t :=
76
80
by simp_rw [balanced_core, mem_sUnion, mem_set_of_eq, exists_prop, and_assoc]
@@ -241,6 +245,83 @@ begin
241
245
refine mem_of_subset_of_mem balanced_core_subset_balanced_core_aux (balanced_core_zero_mem hs),
242
246
end
243
247
248
+ lemma subset_balanced_core {U V : set E} (hV' : (0 : E) ∈ V)
249
+ (hUV : ∀ (a : 𝕜) (ha : ∥a∥ ≤ 1 ), a • U ⊆ V) :
250
+ U ⊆ balanced_core 𝕜 V :=
251
+ begin
252
+ rw balanced_core_eq_Inter hV',
253
+ refine set.subset_Inter₂ (λ a ha, _),
254
+ rw [←one_smul 𝕜 U, ←mul_inv_cancel (norm_pos_iff.mp (lt_of_lt_of_le zero_lt_one ha)),
255
+ ←smul_eq_mul, smul_assoc],
256
+ refine set.smul_set_mono (hUV a⁻¹ _),
257
+ rw [norm_inv],
258
+ exact inv_le_one ha,
259
+ end
260
+
244
261
end normed_field
245
262
246
263
end balanced_hull
264
+
265
+ /-! ### Topological properties -/
266
+
267
+ section topology
268
+
269
+ variables [nondiscrete_normed_field 𝕜] [add_comm_group E] [module 𝕜 E] [topological_space E]
270
+ [has_continuous_smul 𝕜 E]
271
+
272
+ lemma balanced_core_is_closed {U : set E} (hU : is_closed U) : is_closed (balanced_core 𝕜 U) :=
273
+ begin
274
+ by_cases h : (0 : E) ∈ U,
275
+ { rw balanced_core_eq_Inter h,
276
+ refine is_closed_Inter (λ a, _),
277
+ refine is_closed_Inter (λ ha, _),
278
+ have ha' := lt_of_lt_of_le zero_lt_one ha,
279
+ rw norm_pos_iff at ha',
280
+ refine is_closed_map_smul_of_ne_zero ha' U hU },
281
+ convert is_closed_empty,
282
+ contrapose! h,
283
+ exact balanced_core_nonempty_iff.mp (set.ne_empty_iff_nonempty.mp h),
284
+ end
285
+
286
+ lemma balanced_core_mem_nhds_zero {U : set E} (hU : U ∈ 𝓝 (0 : E)) :
287
+ balanced_core 𝕜 U ∈ 𝓝 (0 : E) :=
288
+ begin
289
+ -- Getting neighborhoods of the origin for `0 : 𝕜` and `0 : E`
290
+ have h : filter.tendsto (λ (x : 𝕜 × E), x.fst • x.snd) (𝓝 (0 ,0 )) (𝓝 ((0 : 𝕜) • (0 : E))) :=
291
+ continuous_iff_continuous_at.mp has_continuous_smul.continuous_smul (0 , 0 ),
292
+ rw [smul_zero] at h,
293
+ have h' := filter.has_basis.prod (@metric.nhds_basis_ball 𝕜 _ 0 ) (filter.basis_sets (𝓝 (0 : E))),
294
+ simp_rw [←nhds_prod_eq, id.def] at h',
295
+ have h'' := filter.tendsto.basis_left h h' U hU,
296
+ rcases h'' with ⟨x, hx, h''⟩,
297
+ cases normed_field.exists_norm_lt 𝕜 hx.left with y hy,
298
+ have hy' : y ≠ 0 := norm_pos_iff.mp hy.1 ,
299
+ let W := y • x.snd,
300
+ rw ←filter.exists_mem_subset_iff,
301
+ refine ⟨W, (set_smul_mem_nhds_zero_iff hy').mpr hx.2 , _⟩,
302
+ -- It remains to show that `W ⊆ balanced_core 𝕜 U`
303
+ refine subset_balanced_core (mem_of_mem_nhds hU) (λ a ha, _),
304
+ refine set.subset.trans (λ z hz, _) (set.maps_to'.mp h''),
305
+ rw [set.image_prod, set.image2_smul],
306
+ rw set.mem_smul_set at hz,
307
+ rcases hz with ⟨z', hz', hz⟩,
308
+ rw [←hz, set.mem_smul],
309
+ refine ⟨a • y, y⁻¹ • z', _, _, _⟩,
310
+ { rw [algebra.id.smul_eq_mul, mem_ball_zero_iff, norm_mul, ←one_mul x.fst],
311
+ exact mul_lt_mul' ha hy.2 hy.1 .le zero_lt_one },
312
+ { convert set.smul_mem_smul_set hz',
313
+ rw [←smul_assoc y⁻¹ y x.snd, smul_eq_mul, inv_mul_cancel hy', one_smul] },
314
+ rw [smul_assoc, ←smul_assoc y y⁻¹ z', smul_eq_mul, mul_inv_cancel hy', one_smul],
315
+ end
316
+
317
+ variables (𝕜)
318
+
319
+ lemma nhds_basis_closed_balanced [regular_space E] : (𝓝 (0 : E)).has_basis
320
+ (λ (s : set E), s ∈ 𝓝 (0 : E) ∧ is_closed s ∧ balanced 𝕜 s) id :=
321
+ begin
322
+ refine (closed_nhds_basis 0 ).to_has_basis (λ s hs, _) (λ s hs, ⟨s, ⟨hs.1 , hs.2 .1 ⟩, rfl.subset⟩),
323
+ refine ⟨balanced_core 𝕜 s, ⟨balanced_core_mem_nhds_zero hs.1 , _⟩, balanced_core_subset s⟩,
324
+ refine ⟨balanced_core_is_closed hs.2 , balanced_core_balanced s⟩
325
+ end
326
+
327
+ end topology
0 commit comments