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

Commit 4a09c73

Browse files
urkudPatrickMassot
andcommitted
feat(topology/basic): a condition implying that a sequence of functions locally stabilizes (#15580)
For sphere-eversion-project. Co-authored-by: Patrick Massot <patrickmassot@free.fr>
1 parent 6b5a173 commit 4a09c73

File tree

1 file changed

+48
-1
lines changed

1 file changed

+48
-1
lines changed

src/topology/basic.lean

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1200,9 +1200,14 @@ assume a,
12001200
let ⟨t, ht₁, ht₂⟩ := hf₂ a in
12011201
⟨t, ht₁, ht₂.subset $ assume i hi, hi.mono $ inter_subset_inter (hf i) $ subset.refl _⟩
12021202

1203+
lemma locally_finite.comp_inj_on {ι} {f : β → set α} {g : ι → β} (hf : locally_finite f)
1204+
(hg : inj_on g {i | (f (g i)).nonempty}) : locally_finite (f ∘ g) :=
1205+
λ x, let ⟨t, htx, htf⟩ := hf x in ⟨t, htx, htf.preimage $ hg.mono $ λ i hi,
1206+
hi.out.mono $ inter_subset_left _ _⟩
1207+
12031208
lemma locally_finite.comp_injective {ι} {f : β → set α} {g : ι → β} (hf : locally_finite f)
12041209
(hg : function.injective g) : locally_finite (f ∘ g) :=
1205-
λ x, let ⟨t, htx, htf⟩ := hf x in ⟨t, htx, htf.preimage (hg.inj_on _)
1210+
hf.comp_inj_on (hg.inj_on _)
12061211

12071212
lemma locally_finite.eventually_finite {f : β → set α} (hf : locally_finite f) (x : α) :
12081213
∀ᶠ s in (𝓝 x).small_sets, {i | (f i ∩ s).nonempty}.finite :=
@@ -1271,6 +1276,48 @@ begin
12711276
exact (hf.comp_injective subtype.coe_injective).is_closed_Union (λ i, hc _)
12721277
end
12731278

1279+
/-- Let `f : ℕ → Π a, β a` be a sequence of (dependent) functions on a topological space. Suppose
1280+
that the family of sets `s n = {x | f (n + 1) x ≠ f n x}` is locally finite. Then there exists a
1281+
function `F : Π a, β a` such that for any `x`, we have `f n x = F x` on the product of an infinite
1282+
interval `[N, +∞)` and a neighbourhood of `x`.
1283+
1284+
We formulate the conclusion in terms of the product of filter `filter.at_top` and `𝓝 x`. -/
1285+
lemma locally_finite.exists_forall_eventually_eq_prod {β : α → Sort*} {f : ℕ → Π a : α, β a}
1286+
(hf : locally_finite (λ n, {x | f (n + 1) x ≠ f n x})) :
1287+
∃ F : Π a : α, β a, ∀ x, ∀ᶠ p : ℕ × α in at_top ×ᶠ 𝓝 x, f p.1 p.2 = F p.2 :=
1288+
begin
1289+
choose U hUx hU using hf,
1290+
choose N hN using λ x, (hU x).bdd_above,
1291+
replace hN : ∀ x (n > N x) (y ∈ U x), f (n + 1) y = f n y,
1292+
from λ x n hn y hy, by_contra (λ hne, hn.lt.not_le $ hN x ⟨y, hne, hy⟩),
1293+
replace hN : ∀ x (n ≥ N x + 1) (y ∈ U x), f n y = f (N x + 1) y,
1294+
from λ x n hn y hy, nat.le_induction rfl (λ k hle, (hN x _ hle _ hy).trans) n hn,
1295+
refine ⟨λ x, f (N x + 1) x, λ x, _⟩,
1296+
filter_upwards [filter.prod_mem_prod (eventually_gt_at_top (N x)) (hUx x)],
1297+
rintro ⟨n, y⟩ ⟨hn : N x < n, hy : y ∈ U x⟩,
1298+
calc f n y = f (N x + 1) y : hN _ _ hn _ hy
1299+
... = f (max (N x + 1) (N y + 1)) y : (hN _ _ (le_max_left _ _) _ hy).symm
1300+
... = f (N y + 1) y : hN _ _ (le_max_right _ _) _ (mem_of_mem_nhds $ hUx y)
1301+
end
1302+
1303+
/-- Let `f : ℕ → Π a, β a` be a sequence of (dependent) functions on a topological space. Suppose
1304+
that the family of sets `s n = {x | f (n + 1) x ≠ f n x}` is locally finite. Then there exists a
1305+
function `F : Π a, β a` such that for any `x`, for sufficiently large values of `n`, we have
1306+
`f n y = F y` in a neighbourhood of `x`. -/
1307+
lemma locally_finite.exists_forall_eventually_at_top_eventually_eq' {β : α → Sort*}
1308+
{f : ℕ → Π a : α, β a} (hf : locally_finite (λ n, {x | f (n + 1) x ≠ f n x})) :
1309+
∃ F : Π a : α, β a, ∀ x, ∀ᶠ n : ℕ in at_top, ∀ᶠ y : α in 𝓝 x, f n y = F y :=
1310+
hf.exists_forall_eventually_eq_prod.imp $ λ F hF x, (hF x).curry
1311+
1312+
/-- Let `f : ℕ → α → β` be a sequence of functions on a topological space. Suppose
1313+
that the family of sets `s n = {x | f (n + 1) x ≠ f n x}` is locally finite. Then there exists a
1314+
function `F : α → β` such that for any `x`, for sufficiently large values of `n`, we have
1315+
`f n =ᶠ[𝓝 x] F`. -/
1316+
lemma locally_finite.exists_forall_eventually_at_top_eventually_eq
1317+
{f : ℕ → α → β} (hf : locally_finite (λ n, {x | f (n + 1) x ≠ f n x})) :
1318+
∃ F : α → β, ∀ x, ∀ᶠ n : ℕ in at_top, f n =ᶠ[𝓝 x] F :=
1319+
hf.exists_forall_eventually_at_top_eventually_eq'
1320+
12741321
end locally_finite
12751322

12761323
end topological_space

0 commit comments

Comments
 (0)