Documentation

Mathlib.Topology.Closure

Interior, closure and frontier of a set #

This file provides lemmas relating to the functions interior, closure and frontier of a set endowed with a topology.

Notation #

Tags #

interior, closure, frontier

theorem mem_interior {X : Type u} [TopologicalSpace X] {x : X} {s : Set X} :
x ∈ interior s ↔ ∃ t ⊆ s, IsOpen t ∧ x ∈ t
@[simp]
theorem isOpen_interior {X : Type u} [TopologicalSpace X] {s : Set X} :
theorem interior_subset {X : Type u} [TopologicalSpace X] {s : Set X} :
interior s ⊆ s
theorem interior_maximal {X : Type u} [TopologicalSpace X] {s t : Set X} (h₁ : t ⊆ s) (h₂ : IsOpen t) :
t ⊆ interior s
theorem IsOpen.interior_eq {X : Type u} [TopologicalSpace X] {s : Set X} (h : IsOpen s) :
theorem forall_isOpen_iff {X : Type u} [TopologicalSpace X] {p : Set X → Prop} :
(∀ (t : Set X), IsOpen t → p t) ↔ ∀ (t : Set X), p (interior t)
theorem exists_isOpen_iff {X : Type u} [TopologicalSpace X] {p : Set X → Prop} :
(∃ (t : Set X), IsOpen t ∧ p t) ↔ ∃ (t : Set X), p (interior t)
theorem IsOpen.subset_interior_iff {X : Type u} [TopologicalSpace X] {s t : Set X} (h₁ : IsOpen s) :
s ⊆ interior t ↔ s ⊆ t
theorem subset_interior_iff {X : Type u} [TopologicalSpace X] {s t : Set X} :
t ⊆ interior s ↔ ∃ (U : Set X), IsOpen U ∧ t ⊆ U ∧ U ⊆ s
theorem interior_subset_iff {X : Type u} [TopologicalSpace X] {s t : Set X} :
interior s ⊆ t ↔ ∀ (U : Set X), IsOpen U → U ⊆ s → U ⊆ t
theorem interior_mono {X : Type u} [TopologicalSpace X] {s t : Set X} (h : s ⊆ t) :
@[simp]
@[simp]
@[simp]
theorem interior_inter {X : Type u} [TopologicalSpace X] {s t : Set X} :
theorem Set.Finite.interior_biInter {X : Type u} [TopologicalSpace X] {ι : Type u_1} {s : Set ι} (hs : s.Finite) (f : ι → Set X) :
interior (⋂ i ∈ s, f i) = ⋂ i ∈ s, interior (f i)
theorem Set.Finite.interior_sInter {X : Type u} [TopologicalSpace X] {S : Set (Set X)} (hS : S.Finite) :
interior (⋂₀ S) = ⋂ s ∈ S, interior s
@[simp]
theorem Finset.interior_iInter {X : Type u} [TopologicalSpace X] {ι : Type u_1} (s : Finset ι) (f : ι → Set X) :
interior (⋂ i ∈ s, f i) = ⋂ i ∈ s, interior (f i)
@[simp]
theorem interior_iInter_of_finite {X : Type u} [TopologicalSpace X] {ι : Sort v} [Finite ι] (f : ι → Set X) :
interior (⋂ (i : ι), f i) = ⋂ (i : ι), interior (f i)
@[simp]
theorem interior_iInter₂_lt_nat {X : Type u} [TopologicalSpace X] {n : ℕ} (f : ℕ → Set X) :
interior (⋂ (m : ℕ), ⋂ (_ : m < n), f m) = ⋂ (m : ℕ), ⋂ (_ : m < n), interior (f m)
@[simp]
theorem interior_iInter₂_le_nat {X : Type u} [TopologicalSpace X] {n : ℕ} (f : ℕ → Set X) :
interior (⋂ (m : ℕ), ⋂ (_ : m ≤ n), f m) = ⋂ (m : ℕ), ⋂ (_ : m ≤ n), interior (f m)
theorem isOpen_iff_forall_mem_open {X : Type u} [TopologicalSpace X] {s : Set X} :
IsOpen s ↔ ∀ x ∈ s, ∃ t ⊆ s, IsOpen t ∧ x ∈ t
theorem interior_iInter_subset {X : Type u} [TopologicalSpace X] {ι : Sort v} (s : ι → Set X) :
interior (⋂ (i : ι), s i) ⊆ ⋂ (i : ι), interior (s i)
theorem interior_iInter₂_subset {X : Type u} [TopologicalSpace X] {ι : Sort v} (p : ι → Sort u_1) (s : (i : ι) → p i → Set X) :
interior (⋂ (i : ι), ⋂ (j : p i), s i j) ⊆ ⋂ (i : ι), ⋂ (j : p i), interior (s i j)
theorem interior_sInter_subset {X : Type u} [TopologicalSpace X] (S : Set (Set X)) :
interior (⋂₀ S) ⊆ ⋂ s ∈ S, interior s
theorem Filter.HasBasis.lift'_interior {X : Type u} [TopologicalSpace X] {ι : Sort v} {l : Filter X} {p : ι → Prop} {s : ι → Set X} (h : l.HasBasis p s) :
(l.lift' interior).HasBasis p fun (i : ι) => interior (s i)
theorem Filter.HasBasis.lift'_interior_eq_self {X : Type u} [TopologicalSpace X] {ι : Sort v} {l : Filter X} {p : ι → Prop} {s : ι → Set X} (h : l.HasBasis p s) (ho : ∀ (i : ι), p i → IsOpen (s i)) :
@[simp]
theorem isClosed_closure {X : Type u} [TopologicalSpace X] {s : Set X} :
theorem subset_closure {X : Type u} [TopologicalSpace X] {s : Set X} :
s ⊆ closure s
theorem notMem_of_notMem_closure {X : Type u} [TopologicalSpace X] {s : Set X} {P : X} (hP : P ∉ closure s) :
P ∉ s
theorem closure_minimal {X : Type u} [TopologicalSpace X] {s t : Set X} (h₁ : s ⊆ t) (h₂ : IsClosed t) :
closure s ⊆ t
theorem Disjoint.closure_left {X : Type u} [TopologicalSpace X] {s t : Set X} (hd : Disjoint s t) (ht : IsOpen t) :
theorem Disjoint.closure_right {X : Type u} [TopologicalSpace X] {s t : Set X} (hd : Disjoint s t) (hs : IsOpen s) :
@[simp]
theorem IsClosed.closure_eq {X : Type u} [TopologicalSpace X] {s : Set X} (h : IsClosed s) :
theorem forall_isClosed_iff {X : Type u} [TopologicalSpace X] {p : Set X → Prop} :
(∀ (t : Set X), IsClosed t → p t) ↔ ∀ (t : Set X), p (closure t)
theorem exists_isClosed_iff {X : Type u} [TopologicalSpace X] {p : Set X → Prop} :
(∃ (t : Set X), IsClosed t ∧ p t) ↔ ∃ (t : Set X), p (closure t)
theorem IsClosed.closure_subset {X : Type u} [TopologicalSpace X] {s : Set X} (hs : IsClosed s) :
closure s ⊆ s
theorem IsClosed.closure_subset_iff {X : Type u} [TopologicalSpace X] {s t : Set X} (h₁ : IsClosed t) :
closure s ⊆ t ↔ s ⊆ t
theorem IsClosed.mem_iff_closure_subset {X : Type u} [TopologicalSpace X] {x : X} {s : Set X} (hs : IsClosed s) :
x ∈ s ↔ closure {x} ⊆ s
theorem closure_mono {X : Type u} [TopologicalSpace X] {s t : Set X} (h : s ⊆ t) :
theorem closure_inter_subset {X : Type u} [TopologicalSpace X] {s t : Set X} :
closure (s ∩ t) ⊆ closure s ∩ closure t
theorem sdiff_subset_closure_iff {X : Type u} [TopologicalSpace X] {s t : Set X} :
s \ t ⊆ closure t ↔ s ⊆ closure t
@[deprecated sdiff_subset_closure_iff (since := "2026-06-03")]
theorem diff_subset_closure_iff {X : Type u} [TopologicalSpace X] {s t : Set X} :
s \ t ⊆ closure t ↔ s ⊆ closure t

Alias of sdiff_subset_closure_iff.

theorem isClosed_of_closure_subset {X : Type u} [TopologicalSpace X] {s : Set X} (h : closure s ⊆ s) :
@[simp]
theorem closure_empty_iff {X : Type u} [TopologicalSpace X] (s : Set X) :
@[simp]

Alias of the reverse direction of closure_nonempty_iff.

Alias of the forward direction of closure_nonempty_iff.

@[simp]
theorem closure_union {X : Type u} [TopologicalSpace X] {s t : Set X} :
theorem Set.Finite.closure_biUnion {X : Type u} [TopologicalSpace X] {ι : Type u_1} {s : Set ι} (hs : s.Finite) (f : ι → Set X) :
closure (⋃ i ∈ s, f i) = ⋃ i ∈ s, closure (f i)
theorem Set.Finite.closure_sUnion {X : Type u} [TopologicalSpace X] {S : Set (Set X)} (hS : S.Finite) :
closure (⋃₀ S) = ⋃ s ∈ S, closure s
@[simp]
theorem Finset.closure_biUnion {X : Type u} [TopologicalSpace X] {ι : Type u_1} (s : Finset ι) (f : ι → Set X) :
closure (⋃ i ∈ s, f i) = ⋃ i ∈ s, closure (f i)
@[simp]
theorem closure_iUnion_of_finite {X : Type u} [TopologicalSpace X] {ι : Sort v} [Finite ι] (f : ι → Set X) :
closure (⋃ (i : ι), f i) = ⋃ (i : ι), closure (f i)
@[simp]
theorem closure_iUnion₂_lt_nat {X : Type u} [TopologicalSpace X] {n : ℕ} (f : ℕ → Set X) :
closure (⋃ (m : ℕ), ⋃ (_ : m < n), f m) = ⋃ (m : ℕ), ⋃ (_ : m < n), closure (f m)
@[simp]
theorem closure_iUnion₂_le_nat {X : Type u} [TopologicalSpace X] {n : ℕ} (f : ℕ → Set X) :
closure (⋃ (m : ℕ), ⋃ (_ : m ≤ n), f m) = ⋃ (m : ℕ), ⋃ (_ : m ≤ n), closure (f m)
@[simp]
theorem interior_compl {X : Type u} [TopologicalSpace X] {s : Set X} :
@[simp]
theorem closure_compl {X : Type u} [TopologicalSpace X] {s : Set X} :
theorem mem_closure_iff {X : Type u} [TopologicalSpace X] {x : X} {s : Set X} :
x ∈ closure s ↔ ∀ (o : Set X), IsOpen o → x ∈ o → (o ∩ s).Nonempty
theorem Filter.HasBasis.lift'_closure {X : Type u} [TopologicalSpace X] {ι : Sort v} {l : Filter X} {p : ι → Prop} {s : ι → Set X} (h : l.HasBasis p s) :
(l.lift' closure).HasBasis p fun (i : ι) => closure (s i)
theorem Filter.HasBasis.lift'_closure_eq_self {X : Type u} [TopologicalSpace X] {ι : Sort v} {l : Filter X} {p : ι → Prop} {s : ι → Set X} (h : l.HasBasis p s) (hc : ∀ (i : ι), p i → IsClosed (s i)) :
theorem Dense.closure_eq {X : Type u} [TopologicalSpace X] {s : Set X} :

Alias of the forward direction of dense_iff_closure_eq.

theorem Dense.interior_compl {X : Type u} [TopologicalSpace X] {s : Set X} (h : Dense s) :
@[simp]
theorem dense_closure {X : Type u} [TopologicalSpace X] {s : Set X} :

The closure of a set s is dense if and only if s is dense.

theorem Dense.closure {X : Type u} [TopologicalSpace X] {s : Set X} :
Dense s → Dense (closure s)

Alias of the reverse direction of dense_closure.


The closure of a set s is dense if and only if s is dense.

theorem Dense.of_closure {X : Type u} [TopologicalSpace X] {s : Set X} :
Dense (closure s) → Dense s

Alias of the forward direction of dense_closure.


The closure of a set s is dense if and only if s is dense.

@[simp]
theorem dense_iff_inter_open {X : Type u} [TopologicalSpace X] {s : Set X} :
Dense s ↔ ∀ (U : Set X), IsOpen U → U.Nonempty → (U ∩ s).Nonempty

A set is dense if and only if it has a nonempty intersection with each nonempty open set.

theorem Dense.inter_open_nonempty {X : Type u} [TopologicalSpace X] {s : Set X} :
Dense s → ∀ (U : Set X), IsOpen U → U.Nonempty → (U ∩ s).Nonempty

Alias of the forward direction of dense_iff_inter_open.


A set is dense if and only if it has a nonempty intersection with each nonempty open set.

theorem Dense.exists_mem_open {X : Type u} [TopologicalSpace X] {s : Set X} (hs : Dense s) {U : Set X} (ho : IsOpen U) (hne : U.Nonempty) :
∃ x ∈ s, x ∈ U
theorem Dense.nonempty_iff {X : Type u} [TopologicalSpace X] {s : Set X} (hs : Dense s) :
theorem Dense.nonempty {X : Type u} [TopologicalSpace X] {s : Set X} [h : Nonempty X] (hs : Dense s) :
theorem Dense.mono {X : Type u} [TopologicalSpace X] {s₁ s₂ : Set X} (h : s₁ ⊆ s₂) (hd : Dense s₁) :
Dense s₂
theorem DenseRange.of_comp {X : Type u} [TopologicalSpace X] {α : Type u_1} {β : Type u_2} {f : α → X} {g : β → α} (h : DenseRange (f ∘ g)) :

Complement to a singleton is dense if and only if the singleton is not an open set.

theorem Dense.induction {X : Type u} [TopologicalSpace X] {s : Set X} (hs : Dense s) {P : X → Prop} (mem : ∀ x ∈ s, P x) (isClosed : IsClosed {x : X | P x}) (x : X) :
P x

If a closed property holds for a dense subset, it holds for the whole space.

theorem IsOpen.subset_interior_closure {X : Type u} [TopologicalSpace X] {s : Set X} (s_open : IsOpen s) :
s ⊆ interior (closure s)
theorem IsClosed.closure_interior_subset {X : Type u} [TopologicalSpace X] {s : Set X} (s_closed : IsClosed s) :
closure (interior s) ⊆ s
@[simp]
@[deprecated closure_sdiff_interior (since := "2026-06-03")]

Alias of closure_sdiff_interior.

Interior and frontier are disjoint.

@[simp]
@[deprecated closure_sdiff_frontier (since := "2026-06-03")]

Alias of closure_sdiff_frontier.

@[simp]
theorem self_sdiff_frontier {X : Type u} [TopologicalSpace X] (s : Set X) :
@[deprecated self_sdiff_frontier (since := "2026-06-03")]
theorem self_diff_frontier {X : Type u} [TopologicalSpace X] (s : Set X) :

Alias of self_sdiff_frontier.

theorem mem_interior_iff_notMem_frontier {X : Type u} [TopologicalSpace X] {s : Set X} {x : X} (hx : x ∈ s) :
x ∈ interior s ↔ x ∉ frontier s
theorem mem_frontier_iff_notMem_interior {X : Type u} [TopologicalSpace X] {s : Set X} {x : X} (hx : x ∈ s) :
x ∈ frontier s ↔ x ∉ interior s
theorem IsClosed.frontier_subset {X : Type u} [TopologicalSpace X] {s : Set X} :
IsClosed s → frontier s ⊆ s

Alias of the reverse direction of frontier_subset_iff_isClosed.

@[simp]
theorem frontier_compl {X : Type u} [TopologicalSpace X] (s : Set X) :

The complement of a set has the same frontier as the original set.

theorem IsClosed.frontier_eq {X : Type u} [TopologicalSpace X] {s : Set X} (hs : IsClosed s) :
theorem IsOpen.frontier_eq {X : Type u} [TopologicalSpace X] {s : Set X} (hs : IsOpen s) :
theorem IsOpen.inter_frontier_eq {X : Type u} [TopologicalSpace X] {s : Set X} (hs : IsOpen s) :
theorem isClosed_frontier {X : Type u} [TopologicalSpace X] {s : Set X} :

The frontier of a set is closed.

theorem interior_frontier {X : Type u} [TopologicalSpace X] {s : Set X} (h : IsClosed s) :

The frontier of a closed set has no interior point.

theorem Disjoint.frontier_left {X : Type u} [TopologicalSpace X] {s t : Set X} (ht : IsOpen t) (hd : Disjoint s t) :
theorem Disjoint.frontier_right {X : Type u} [TopologicalSpace X] {s t : Set X} (hs : IsOpen s) (hd : Disjoint s t) :