File: Mathlib/Topology/LocallyFinite.lean

full_name: LocallyFinite
code: /-- A family of sets in `Set X` is locally finite if at every point `x : X`,
there is a neighborhood of `x` which meets only finitely many sets in the family. -/
def LocallyFinite (f : ι → Set X) 
goal: Prop

full_name: locallyFinite_of_finite
code: theorem locallyFinite_of_finite [Finite ι] (f : ι → Set X) : LocallyFinite f 
goal: LocallyFinite f

full_name: LocallyFinite.point_finite
code: theorem point_finite (hf : LocallyFinite f) (x : X) : { b | x ∈ f b }.Finite 
goal: {b | x ∈ f b}.Finite

full_name: LocallyFinite.subset
code: protected theorem subset (hf : LocallyFinite f) (hg : ∀ i, g i ⊆ f i) : LocallyFinite g 
goal: LocallyFinite g

full_name: LocallyFinite.comp_injOn
code: theorem comp_injOn {g : ι' → ι} (hf : LocallyFinite f) (hg : InjOn g { i | (f (g i)).Nonempty }) :
    LocallyFinite (f ∘ g) 
goal: LocallyFinite (f ∘ g)

full_name: LocallyFinite.comp_injective
code: theorem comp_injective {g : ι' → ι} (hf : LocallyFinite f) (hg : Injective g) :
    LocallyFinite (f ∘ g) 
goal: LocallyFinite (f ∘ g)

full_name: locallyFinite_iff_smallSets
code: theorem _root_.locallyFinite_iff_smallSets :
    LocallyFinite f ↔ ∀ x, ∀ᶠ s in (𝓝 x).smallSets, { i | (f i ∩ s).Nonempty }.Finite 
goal: LocallyFinite f ↔ ∀ (x : X), ∀ᶠ (s : Set X) in (𝓝 x).smallSets, {i | (f i ∩ s).Nonempty}.Finite

full_name: LocallyFinite.eventually_smallSets
code: protected theorem eventually_smallSets (hf : LocallyFinite f) (x : X) :
    ∀ᶠ s in (𝓝 x).smallSets, { i | (f i ∩ s).Nonempty }.Finite 
goal: ∀ᶠ (s : Set X) in (𝓝 x).smallSets, {i | (f i ∩ s).Nonempty}.Finite

full_name: LocallyFinite.exists_mem_basis
code: theorem exists_mem_basis {ι' : Sort*} (hf : LocallyFinite f) {p : ι' → Prop} {s : ι' → Set X}
    {x : X} (hb : (𝓝 x).HasBasis p s) : ∃ i, p i ∧ { j | (f j ∩ s i).Nonempty }.Finite 
goal: ∃ i, p i ∧ {j | (f j ∩ s i).Nonempty}.Finite

full_name: LocallyFinite.nhdsWithin_iUnion
code: protected theorem nhdsWithin_iUnion (hf : LocallyFinite f) (a : X) :
    𝓝[⋃ i, f i] a = ⨆ i, 𝓝[f i] a 
goal: 𝓝[⋃ i, f i] a = ⨆ i, 𝓝[f i] a

full_name: LocallyFinite.continuousOn_iUnion'
code: theorem continuousOn_iUnion' {g : X → Y} (hf : LocallyFinite f)
    (hc : ∀ i x, x ∈ closure (f i) → ContinuousWithinAt g (f i) x) :
    ContinuousOn g (⋃ i, f i) 
goal: ContinuousOn g (⋃ i, f i)

full_name: LocallyFinite.continuousOn_iUnion
code: theorem continuousOn_iUnion {g : X → Y} (hf : LocallyFinite f) (h_cl : ∀ i, IsClosed (f i))
    (h_cont : ∀ i, ContinuousOn g (f i)) : ContinuousOn g (⋃ i, f i) 
goal: ContinuousOn g (⋃ i, f i)

full_name: LocallyFinite.continuous'
code: protected theorem continuous' {g : X → Y} (hf : LocallyFinite f) (h_cov : ⋃ i, f i = univ)
    (hc : ∀ i x, x ∈ closure (f i) → ContinuousWithinAt g (f i) x) :
    Continuous g 
goal: Continuous g

full_name: LocallyFinite.continuous
code: protected theorem continuous {g : X → Y} (hf : LocallyFinite f) (h_cov : ⋃ i, f i = univ)
    (h_cl : ∀ i, IsClosed (f i)) (h_cont : ∀ i, ContinuousOn g (f i)) :
    Continuous g 
goal: Continuous g

full_name: LocallyFinite.closure
code: protected theorem closure (hf : LocallyFinite f) : LocallyFinite fun i => closure (f i) 
goal: LocallyFinite fun i => closure (f i)

full_name: LocallyFinite.closure_iUnion
code: theorem closure_iUnion (h : LocallyFinite f) : closure (⋃ i, f i) = ⋃ i, closure (f i) 
goal: closure (⋃ i, f i) = ⋃ i, closure (f i)

full_name: LocallyFinite.isClosed_iUnion
code: theorem isClosed_iUnion (hf : LocallyFinite f) (hc : ∀ i, IsClosed (f i)) :
    IsClosed (⋃ i, f i) 
goal: IsClosed (⋃ i, f i)

full_name: LocallyFinite.iInter_compl_mem_nhds
code: /-- If `f : β → Set α` is a locally finite family of closed sets, then for any `x : α`, the
intersection of the complements to `f i`, `x ∉ f i`, is a neighbourhood of `x`. -/
theorem iInter_compl_mem_nhds (hf : LocallyFinite f) (hc : ∀ i, IsClosed (f i)) (x : X) :
    (⋂ (i) (_ : x ∉ f i), (f i)ᶜ) ∈ 𝓝 x 
goal: ⋂ i, ⋂ (_ : x ∉ f i), (f i)ᶜ ∈ 𝓝 x

full_name: LocallyFinite.exists_forall_eventually_eq_prod
code: /-- Let `f : ℕ → Π a, β a` be a sequence of (dependent) functions on a topological space. Suppose
that the family of sets `s n = {x | f (n + 1) x ≠ f n x}` is locally finite. Then there exists a
function `F : Π a, β a` such that for any `x`, we have `f n x = F x` on the product of an infinite
interval `[N, +∞)` and a neighbourhood of `x`.

We formulate the conclusion in terms of the product of filter `Filter.atTop` and `𝓝 x`. -/
theorem exists_forall_eventually_eq_prod {π : X → Sort*} {f : ℕ → ∀ x : X, π x}
    (hf : LocallyFinite fun n => { x | f (n + 1) x ≠ f n x }) :
    ∃ F : ∀ x : X, π x, ∀ x, ∀ᶠ p : ℕ × X in atTop ×ˢ 𝓝 x, f p.1 p.2 = F p.2 
goal: ∃ F, ∀ (x : X), ∀ᶠ (p : ℕ × X) in Filter.atTop ×ˢ 𝓝 x, f p.1 p.2 = F p.2

full_name: LocallyFinite.exists_forall_eventually_atTop_eventually_eq'
code: /-- Let `f : ℕ → Π a, β a` be a sequence of (dependent) functions on a topological space. Suppose
that the family of sets `s n = {x | f (n + 1) x ≠ f n x}` is locally finite. Then there exists a
function `F : Π a, β a` such that for any `x`, for sufficiently large values of `n`, we have
`f n y = F y` in a neighbourhood of `x`. -/
theorem exists_forall_eventually_atTop_eventually_eq' {π : X → Sort*} {f : ℕ → ∀ x : X, π x}
    (hf : LocallyFinite fun n => { x | f (n + 1) x ≠ f n x }) :
    ∃ F : ∀ x : X, π x, ∀ x, ∀ᶠ n : ℕ in atTop, ∀ᶠ y : X in 𝓝 x, f n y = F y 
goal: ∃ F, ∀ (x : X), ∀ᶠ (n : ℕ) in Filter.atTop, ∀ᶠ (y : X) in 𝓝 x, f n y = F y

full_name: LocallyFinite.exists_forall_eventually_atTop_eventuallyEq
code: /-- Let `f : ℕ → α → β` be a sequence of functions on a topological space. Suppose
that the family of sets `s n = {x | f (n + 1) x ≠ f n x}` is locally finite. Then there exists a
function `F :  α → β` such that for any `x`, for sufficiently large values of `n`, we have
`f n =ᶠ[𝓝 x] F`. -/
theorem exists_forall_eventually_atTop_eventuallyEq {f : ℕ → X → α}
    (hf : LocallyFinite fun n => { x | f (n + 1) x ≠ f n x }) :
    ∃ F : X → α, ∀ x, ∀ᶠ n : ℕ in atTop, f n =ᶠ[𝓝 x] F 
goal: ∃ F, ∀ (x : X), ∀ᶠ (n : ℕ) in Filter.atTop, f n =ᶠ[𝓝 x] F

full_name: LocallyFinite.preimage_continuous
code: theorem preimage_continuous {g : Y → X} (hf : LocallyFinite f) (hg : Continuous g) :
    LocallyFinite (g ⁻¹' f ·) 
goal: LocallyFinite fun x => g ⁻¹' f x

full_name: LocallyFinite.prod_right
code: theorem prod_right (hf : LocallyFinite f) (g : ι → Set Y) : LocallyFinite (fun i ↦ f i ×ˢ g i) 
goal: LocallyFinite fun i => f i ×ˢ g i

full_name: LocallyFinite.prod_left
code: theorem prod_left {g : ι → Set Y} (hg : LocallyFinite g) (f : ι → Set X) :
    LocallyFinite (fun i ↦ f i ×ˢ g i) 
goal: LocallyFinite fun i => f i ×ˢ g i

full_name: Equiv.locallyFinite_comp_iff
code: @[simp]
theorem Equiv.locallyFinite_comp_iff (e : ι' ≃ ι) : LocallyFinite (f ∘ e) ↔ LocallyFinite f 
goal: LocallyFinite (f ∘ ⇑e) ↔ LocallyFinite f

full_name: locallyFinite_sum
code: theorem locallyFinite_sum {f : ι ⊕ ι' → Set X} :
    LocallyFinite f ↔ LocallyFinite (f ∘ Sum.inl) ∧ LocallyFinite (f ∘ Sum.inr) 
goal: LocallyFinite f ↔ LocallyFinite (f ∘ Sum.inl) ∧ LocallyFinite (f ∘ Sum.inr)

full_name: LocallyFinite.sum_elim
code: theorem LocallyFinite.sum_elim {g : ι' → Set X} (hf : LocallyFinite f) (hg : LocallyFinite g) :
    LocallyFinite (Sum.elim f g) 
goal: LocallyFinite (Sum.elim f g)

full_name: locallyFinite_option
code: theorem locallyFinite_option {f : Option ι → Set X} :
    LocallyFinite f ↔ LocallyFinite (f ∘ some) 
goal: LocallyFinite f ↔ LocallyFinite (f ∘ some)

full_name: LocallyFinite.option_elim'
code: theorem LocallyFinite.option_elim' (hf : LocallyFinite f) (s : Set X) :
    LocallyFinite (Option.elim' s f) 
goal: LocallyFinite (Option.elim' s f)

full_name: LocallyFinite.eventually_subset
code: theorem LocallyFinite.eventually_subset {s : ι → Set X}
    (hs : LocallyFinite s) (hs' : ∀ i, IsClosed (s i)) (x : X) :
    ∀ᶠ y in 𝓝 x, {i | y ∈ s i} ⊆ {i | x ∈ s i} 
goal: ∀ᶠ (y : X) in 𝓝 x, {i | y ∈ s i} ⊆ {i | x ∈ s i}