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

Commit 6dad5f8

Browse files
committed
feat(topology/bornology/basic): alternate way of defining a bornology by its bounded set (#13064)
More precisely, this defines an alternative to https://leanprover-community.github.io/mathlib_docs/topology/bornology/basic.html#bornology.of_bounded (which is renamed `bornology.of_bounded'`) which expresses the covering condition as containing the singletons, and factors the old version trough it to have a simpler proof. Note : I chose to add a prime to the old constructor because it's now defined in terms of the new one, so defeq works better this way (i.e lemma about the new constructor can be used whenever the old one is used).
1 parent 6cf5dc5 commit 6dad5f8

File tree

3 files changed

+33
-12
lines changed

3 files changed

+33
-12
lines changed

src/analysis/locally_convex/bounded.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ metric bornology.-/
114114
@[reducible] -- See note [reducible non-instances]
115115
def vonN_bornology : bornology E :=
116116
bornology.of_bounded (set_of (is_vonN_bounded 𝕜)) (is_vonN_bounded_empty 𝕜 E)
117-
(λ _ hs _ ht, hs.subset ht) (λ _ hs _, hs.union) is_vonN_bounded_covers
117+
(λ _ hs _ ht, hs.subset ht) (λ _ hs _, hs.union) is_vonN_bounded_singleton
118118

119119
variables {E}
120120

src/order/filter/cofinite.lean

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,14 @@ frequently_cofinite_iff_infinite.symm
103103
lemma filter.eventually_cofinite_ne (x : α) : ∀ᶠ a in cofinite, a ≠ x :=
104104
(set.finite_singleton x).eventually_cofinite_nmem
105105

106+
lemma filter.le_cofinite_iff_compl_singleton_mem {l : filter α} :
107+
l ≤ cofinite ↔ ∀ x, {x}ᶜ ∈ l :=
108+
begin
109+
refine ⟨λ h x, h (finite_singleton x).compl_mem_cofinite, λ h s (hs : sᶜ.finite), _⟩,
110+
rw [← compl_compl s, ← bUnion_of_singleton sᶜ, compl_Union₂,filter.bInter_mem hs],
111+
exact λ x _, h x
112+
end
113+
106114
/-- If `α` is a sup-semilattice with no maximal element, then `at_top ≤ cofinite`. -/
107115
lemma at_top_le_cofinite [semilattice_sup α] [no_max_order α] : (at_top : filter α) ≤ cofinite :=
108116
begin
@@ -170,4 +178,3 @@ lemma function.injective.tendsto_cofinite {α β : Type*} {f : α → β} (hf :
170178
lemma function.injective.nat_tendsto_at_top {f : ℕ → ℕ} (hf : injective f) :
171179
tendsto f at_top at_top :=
172180
nat.cofinite_eq_at_top ▸ hf.tendsto_cofinite
173-

src/topology/bornology/basic.lean

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ and showing that they satisfy the appropriate conditions. -/
5454
@[simps]
5555
def bornology.of_bounded {α : Type*} (B : set (set α))
5656
(empty_mem : ∅ ∈ B) (subset_mem : ∀ s₁ ∈ B, ∀ s₂ : set α, s₂ ⊆ s₁ → s₂ ∈ B)
57-
(union_mem : ∀ s₁ s₂ ∈ B, s₁ ∪ s₂ ∈ B) (sUnion_univ : ⋃₀ B = univ) :
57+
(union_mem : ∀ s₁ s₂ ∈ B, s₁ ∪ s₂ ∈ B) (singleton_mem : ∀ x, {x} ∈ B) :
5858
bornology α :=
5959
{ cobounded :=
6060
{ sets := {s : set α | sᶜ ∈ B},
@@ -63,17 +63,28 @@ def bornology.of_bounded {α : Type*} (B : set (set α))
6363
inter_sets := λ x y hx hy, by simpa [compl_inter] using union_mem xᶜ hx yᶜ hy, },
6464
le_cofinite :=
6565
begin
66-
refine le_def.mpr (λ s, _),
67-
simp only [mem_set_of_eq, mem_cofinite, filter.mem_mk],
68-
generalize : sᶜ = s',
69-
refine λ h, h.dinduction_on _ (λ x t hx ht h, _),
70-
{ exact empty_mem, },
71-
{ refine insert_eq x t ▸ union_mem _ _ _ h,
72-
obtain ⟨b, hb : b ∈ B, hxb : x ∈ b⟩ :=
73-
mem_sUnion.mp (by simpa [←sUnion_univ] using mem_univ x),
74-
exact subset_mem _ hb _ (singleton_subset_iff.mpr hxb) },
66+
rw le_cofinite_iff_compl_singleton_mem,
67+
intros x,
68+
change {x}ᶜᶜ ∈ B,
69+
rw compl_compl,
70+
exact singleton_mem x
7571
end }
7672

73+
/-- A constructor for bornologies by specifying the bounded sets,
74+
and showing that they satisfy the appropriate conditions. -/
75+
@[simps]
76+
def bornology.of_bounded' {α : Type*} (B : set (set α))
77+
(empty_mem : ∅ ∈ B) (subset_mem : ∀ s₁ ∈ B, ∀ s₂ : set α, s₂ ⊆ s₁ → s₂ ∈ B)
78+
(union_mem : ∀ s₁ s₂ ∈ B, s₁ ∪ s₂ ∈ B) (sUnion_univ : ⋃₀ B = univ) :
79+
bornology α :=
80+
bornology.of_bounded B empty_mem subset_mem union_mem
81+
begin
82+
rw eq_univ_iff_forall at sUnion_univ,
83+
intros x,
84+
rcases sUnion_univ x with ⟨s, hs, hxs⟩,
85+
exact subset_mem s hs {x} (singleton_subset_iff.mpr hxs)
86+
end
87+
7788
namespace bornology
7889

7990
section
@@ -101,6 +112,9 @@ alias is_cobounded_compl_iff ↔ bornology.is_cobounded.of_compl bornology.is_bo
101112
@[simp] lemma is_bounded_empty : is_bounded (∅ : set α) :=
102113
by { rw [is_bounded_def, compl_empty], exact univ_mem}
103114

115+
@[simp] lemma is_bounded_singleton {x : α} : is_bounded ({x} : set α) :=
116+
by {rw [is_bounded_def], exact le_cofinite _ (finite_singleton x).compl_mem_cofinite}
117+
104118
lemma is_bounded.union (h₁ : is_bounded s₁) (h₂ : is_bounded s₂) : is_bounded (s₁ ∪ s₂) :=
105119
by { rw [is_bounded_def, compl_union], exact (cobounded α).inter_sets h₁ h₂ }
106120

0 commit comments

Comments
 (0)