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

Commit 1cfb97d

Browse files
committed
feat(analysis/normed/group/pointwise): the closed thickening of a compact set is the addition of a closed ball. (#11528)
1 parent ff9b757 commit 1cfb97d

File tree

2 files changed

+57
-1
lines changed

2 files changed

+57
-1
lines changed

src/analysis/normed/group/pointwise.lean

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ Copyright (c) 2021 Sébastien Gouëzel. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Sébastien Gouëzel
55
-/
6-
76
import analysis.normed.group.basic
7+
import topology.metric_space.hausdorff_distance
88

99
/-!
1010
# Properties of pointwise addition of sets in normed groups.
@@ -80,4 +80,14 @@ lemma closed_ball_zero_add_singleton (x : E) (r : ℝ) :
8080
closed_ball 0 r + {x} = closed_ball x r :=
8181
by simp
8282

83+
lemma is_compact.cthickening_eq_add_closed_ball
84+
{s : set E} (hs : is_compact s) {r : ℝ} (hr : 0 ≤ r) :
85+
cthickening r s = s + closed_ball 0 r :=
86+
begin
87+
rw hs.cthickening_eq_bUnion_closed_ball hr,
88+
ext x,
89+
simp only [mem_add, dist_eq_norm, exists_prop, mem_Union, mem_closed_ball,
90+
exists_and_distrib_left, mem_closed_ball_zero_iff, ← eq_sub_iff_add_eq', exists_eq_right],
91+
end
92+
8393
end semi_normed_group

src/topology/metric_space/hausdorff_distance.lean

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -858,6 +858,10 @@ begin
858858
simp_rw [mem_thickening_iff_exists_edist_lt, key_iff],
859859
end
860860

861+
@[simp] lemma thickening_singleton (δ : ℝ) (x : X) :
862+
thickening δ ({x} : set X) = ball x δ :=
863+
by { ext, simp [mem_thickening_iff] }
864+
861865
/-- The (open) `δ`-thickening `thickening δ E` of a subset `E` in a metric space equals the
862866
union of balls of radius `δ` centered at points of `E`. -/
863867
lemma thickening_eq_bUnion_ball {δ : ℝ} {E : set X} :
@@ -927,6 +931,20 @@ lemma cthickening_mono {δ₁ δ₂ : ℝ} (hle : δ₁ ≤ δ₂) (E : set α)
927931
cthickening δ₁ E ⊆ cthickening δ₂ E :=
928932
preimage_mono (Iic_subset_Iic.mpr (ennreal.of_real_le_of_real hle))
929933

934+
@[simp] lemma cthickening_singleton {α : Type*} [pseudo_metric_space α]
935+
(x : α) {δ : ℝ} (hδ : 0 ≤ δ) :
936+
cthickening δ ({x} : set α) = closed_ball x δ :=
937+
by { ext y, simp [cthickening, edist_dist, ennreal.of_real_le_of_real_iff hδ] }
938+
939+
lemma closed_ball_subset_cthickening_singleton {α : Type*} [pseudo_metric_space α]
940+
(x : α) (δ : ℝ) :
941+
closed_ball x δ ⊆ cthickening δ ({x} : set α) :=
942+
begin
943+
rcases lt_or_le δ 0 with hδ|hδ,
944+
{ simp only [closed_ball_eq_empty.mpr hδ, empty_subset] },
945+
{ simp only [cthickening_singleton x hδ] }
946+
end
947+
930948
/-- The closed thickening `cthickening δ E` with a fixed thickening radius `δ` is
931949
an increasing function of the subset `E`. -/
932950
lemma cthickening_subset_of_subset (δ : ℝ) {E₁ E₂ : set α} (h : E₁ ⊆ E₂) :
@@ -1096,6 +1114,34 @@ begin
10961114
exact continuous_inf_edist.frontier_preimage_subset (Iic (ennreal.of_real δ)),
10971115
end
10981116

1117+
/-- The closed ball of radius `δ` centered at a point of `E` is included in the closed
1118+
thickening of `E`. -/
1119+
lemma closed_ball_subset_cthickening {α : Type*} [pseudo_metric_space α]
1120+
{x : α} {E : set α} (hx : x ∈ E) (δ : ℝ) :
1121+
closed_ball x δ ⊆ cthickening δ E :=
1122+
begin
1123+
refine (closed_ball_subset_cthickening_singleton _ _).trans (cthickening_subset_of_subset _ _),
1124+
simpa using hx,
1125+
end
1126+
1127+
/-- The closed thickening of a compact set `E` is the union of the balls `closed_ball x δ` over
1128+
`x ∈ E`. -/
1129+
lemma _root_.is_compact.cthickening_eq_bUnion_closed_ball
1130+
{α : Type*} [pseudo_metric_space α] {δ : ℝ} {E : set α} (hE : is_compact E) (hδ : 0 ≤ δ) :
1131+
cthickening δ E = ⋃ x ∈ E, closed_ball x δ :=
1132+
begin
1133+
rcases eq_empty_or_nonempty E with rfl|hne,
1134+
{ simp only [cthickening_empty, Union_false, Union_empty] },
1135+
refine subset.antisymm (λ x hx, _) (bUnion_subset (λ x hx, closed_ball_subset_cthickening hx _)),
1136+
obtain ⟨y, yE, hy⟩ : ∃ y ∈ E, emetric.inf_edist x E = edist x y :=
1137+
hE.exists_inf_edist_eq_edist hne _,
1138+
have D1 : edist x y ≤ ennreal.of_real δ := (le_of_eq hy.symm).trans hx,
1139+
have D2 : dist x y ≤ δ,
1140+
{ rw edist_dist at D1,
1141+
exact (ennreal.of_real_le_of_real_iff hδ).1 D1 },
1142+
exact mem_bUnion yE D2,
1143+
end
1144+
10991145
end cthickening --section
11001146

11011147
end metric --namespace

0 commit comments

Comments
 (0)