topology.nhds_set
β·
Mathlib.Topology.NhdsSet
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
@@ -24,7 +24,7 @@ Furthermore, we have the following results:
-/
open set filter
-open_locale topological_space filter
+open_locale topology filter
variables {Ξ± Ξ² : Type*} [topological_space Ξ±] [topological_space Ξ²]
{s t sβ sβ tβ tβ : set Ξ±} {x : Ξ±}
@@ -33,7 +33,7 @@ variables {Ξ± Ξ² : Type*} [topological_space Ξ±] [topological_space Ξ²]
def nhds_set (s : set Ξ±) : filter Ξ± :=
Sup (nhds '' s)
-localized "notation (name := nhds_set) `πΛ’` := nhds_set" in topological_space
+localized "notation (name := nhds_set) `πΛ’` := nhds_set" in topology
lemma nhds_set_diagonal (Ξ±) [topological_space (Ξ± Γ Ξ±)] : πΛ’ (diagonal Ξ±) = β¨ x, π (x, x) :=
by { rw [nhds_set, β range_diag, β range_comp], refl }
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(first ported)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -77,7 +77,7 @@ theorem mem_nhdsSet_iff_exists : s β πΛ’ t β β U : Set Ξ±, IsOpen U β§
#print hasBasis_nhdsSet /-
theorem hasBasis_nhdsSet (s : Set Ξ±) : (πΛ’ s).HasBasis (fun U => IsOpen U β§ s β U) fun U => U :=
- β¨fun t => by simp [mem_nhdsSet_iff_exists, and_assoc']β©
+ β¨fun t => by simp [mem_nhdsSet_iff_exists, and_assoc]β©
#align has_basis_nhds_set hasBasis_nhdsSet
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -3,7 +3,7 @@ Copyright (c) 2022 Floris van Doorn. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Floris van Doorn, Patrick Massot
-/
-import Topology.Basic
+import Topology.Defs.Basic
#align_import topology.nhds_set from "leanprover-community/mathlib"@"fac369018417f980cec5fcdafc766a69f88d8cfe"
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,7 +3,7 @@ Copyright (c) 2022 Floris van Doorn. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Floris van Doorn, Patrick Massot
-/
-import Mathbin.Topology.Basic
+import Topology.Basic
#align_import topology.nhds_set from "leanprover-community/mathlib"@"fac369018417f980cec5fcdafc766a69f88d8cfe"
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -101,7 +101,7 @@ theorem nhdsSet_eq_principal_iff : πΛ’ s = π s β IsOpen s := by
#align nhds_set_eq_principal_iff nhdsSet_eq_principal_iff
-/
-alias nhdsSet_eq_principal_iff β _ IsOpen.nhdsSet_eq
+alias β¨_, IsOpen.nhdsSet_eqβ© := nhdsSet_eq_principal_iff
#align is_open.nhds_set_eq IsOpen.nhdsSet_eq
#print nhdsSet_interior /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,14 +2,11 @@
Copyright (c) 2022 Floris van Doorn. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Floris van Doorn, Patrick Massot
-
-! This file was ported from Lean 3 source module topology.nhds_set
-! leanprover-community/mathlib commit fac369018417f980cec5fcdafc766a69f88d8cfe
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Topology.Basic
+#align_import topology.nhds_set from "leanprover-community/mathlib"@"fac369018417f980cec5fcdafc766a69f88d8cfe"
+
/-!
# Neighborhoods of a set
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -46,12 +46,13 @@ def nhdsSet (s : Set Ξ±) : Filter Ξ± :=
#align nhds_set nhdsSet
-/
--- mathport name: nhds_set
scoped[Topology] notation "πΛ’" => nhdsSet
+#print nhdsSet_diagonal /-
theorem nhdsSet_diagonal (Ξ±) [TopologicalSpace (Ξ± Γ Ξ±)] : πΛ’ (diagonal Ξ±) = β¨ x, π (x, x) := by
rw [nhdsSet, β range_diag, β range_comp]; rfl
#align nhds_set_diagonal nhdsSet_diagonal
+-/
#print mem_nhdsSet_iff_forall /-
theorem mem_nhdsSet_iff_forall : s β πΛ’ t β β x : Ξ±, x β t β s β π x := by
@@ -89,9 +90,11 @@ theorem IsOpen.mem_nhdsSet (hU : IsOpen s) : s β πΛ’ t β t β s := by
#align is_open.mem_nhds_set IsOpen.mem_nhdsSet
-/
+#print principal_le_nhdsSet /-
theorem principal_le_nhdsSet : π s β€ πΛ’ s := fun s hs =>
(subset_interior_iff_mem_nhdsSet.mpr hs).trans interior_subset
#align principal_le_nhds_set principal_le_nhdsSet
+-/
#print nhdsSet_eq_principal_iff /-
@[simp]
@@ -125,39 +128,53 @@ theorem mem_nhdsSet_interior : s β πΛ’ (interior s) :=
#align mem_nhds_set_interior mem_nhdsSet_interior
-/
+#print nhdsSet_empty /-
@[simp]
theorem nhdsSet_empty : πΛ’ (β
: Set Ξ±) = β₯ := by rw [is_open_empty.nhds_set_eq, principal_empty]
#align nhds_set_empty nhdsSet_empty
+-/
#print mem_nhdsSet_empty /-
theorem mem_nhdsSet_empty : s β πΛ’ (β
: Set Ξ±) := by simp
#align mem_nhds_set_empty mem_nhdsSet_empty
-/
+#print nhdsSet_univ /-
@[simp]
theorem nhdsSet_univ : πΛ’ (univ : Set Ξ±) = β€ := by rw [is_open_univ.nhds_set_eq, principal_univ]
#align nhds_set_univ nhdsSet_univ
+-/
+#print nhdsSet_mono /-
@[mono]
theorem nhdsSet_mono (h : s β t) : πΛ’ s β€ πΛ’ t :=
sSup_le_sSup <| image_subset _ h
#align nhds_set_mono nhdsSet_mono
+-/
+#print monotone_nhdsSet /-
theorem monotone_nhdsSet : Monotone (πΛ’ : Set Ξ± β Filter Ξ±) := fun s t => nhdsSet_mono
#align monotone_nhds_set monotone_nhdsSet
+-/
+#print nhds_le_nhdsSet /-
theorem nhds_le_nhdsSet (h : x β s) : π x β€ πΛ’ s :=
le_sSup <| mem_image_of_mem _ h
#align nhds_le_nhds_set nhds_le_nhdsSet
+-/
+#print nhdsSet_union /-
@[simp]
theorem nhdsSet_union (s t : Set Ξ±) : πΛ’ (s βͺ t) = πΛ’ s β πΛ’ t := by
simp only [nhdsSet, image_union, sSup_union]
#align nhds_set_union nhdsSet_union
+-/
+#print union_mem_nhdsSet /-
theorem union_mem_nhdsSet (hβ : sβ β πΛ’ tβ) (hβ : sβ β πΛ’ tβ) : sβ βͺ sβ β πΛ’ (tβ βͺ tβ) := by
rw [nhdsSet_union]; exact union_mem_sup hβ hβ
#align union_mem_nhds_set union_mem_nhdsSet
+-/
#print Continuous.tendsto_nhdsSet /-
/-- Preimage of a set neighborhood of `t` under a continuous map `f` is a set neighborhood of `s`
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -35,7 +35,7 @@ Furthermore, we have the following results:
open Set Filter
-open Topology Filter
+open scoped Topology Filter
variable {Ξ± Ξ² : Type _} [TopologicalSpace Ξ±] [TopologicalSpace Ξ²] {s t sβ sβ tβ tβ : Set Ξ±} {x : Ξ±}
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -49,12 +49,6 @@ def nhdsSet (s : Set Ξ±) : Filter Ξ± :=
-- mathport name: nhds_set
scoped[Topology] notation "πΛ’" => nhdsSet
-/- warning: nhds_set_diagonal -> nhdsSet_diagonal is a dubious translation:
-lean 3 declaration is
- forall (Ξ± : Type.{u1}) [_inst_3 : TopologicalSpace.{u1} (Prod.{u1, u1} Ξ± Ξ±)], Eq.{succ u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (nhdsSet.{u1} (Prod.{u1, u1} Ξ± Ξ±) _inst_3 (Set.diagonal.{u1} Ξ±)) (iSup.{u1, succ u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (ConditionallyCompleteLattice.toHasSup.{u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (Filter.completeLattice.{u1} (Prod.{u1, u1} Ξ± Ξ±)))) Ξ± (fun (x : Ξ±) => nhds.{u1} (Prod.{u1, u1} Ξ± Ξ±) _inst_3 (Prod.mk.{u1, u1} Ξ± Ξ± x x)))
-but is expected to have type
- forall (Ξ± : Type.{u1}) [_inst_3 : TopologicalSpace.{u1} (Prod.{u1, u1} Ξ± Ξ±)], Eq.{succ u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (nhdsSet.{u1} (Prod.{u1, u1} Ξ± Ξ±) _inst_3 (Set.diagonal.{u1} Ξ±)) (iSup.{u1, succ u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (ConditionallyCompleteLattice.toSupSet.{u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (Filter.instCompleteLatticeFilter.{u1} (Prod.{u1, u1} Ξ± Ξ±)))) Ξ± (fun (x : Ξ±) => nhds.{u1} (Prod.{u1, u1} Ξ± Ξ±) _inst_3 (Prod.mk.{u1, u1} Ξ± Ξ± x x)))
-Case conversion may be inaccurate. Consider using '#align nhds_set_diagonal nhdsSet_diagonalβ'. -/
theorem nhdsSet_diagonal (Ξ±) [TopologicalSpace (Ξ± Γ Ξ±)] : πΛ’ (diagonal Ξ±) = β¨ x, π (x, x) := by
rw [nhdsSet, β range_diag, β range_comp]; rfl
#align nhds_set_diagonal nhdsSet_diagonal
@@ -95,12 +89,6 @@ theorem IsOpen.mem_nhdsSet (hU : IsOpen s) : s β πΛ’ t β t β s := by
#align is_open.mem_nhds_set IsOpen.mem_nhdsSet
-/
-/- warning: principal_le_nhds_set -> principal_le_nhdsSet is a dubious translation:
-lean 3 declaration is
- forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {s : Set.{u1} Ξ±}, LE.le.{u1} (Filter.{u1} Ξ±) (Preorder.toHasLe.{u1} (Filter.{u1} Ξ±) (PartialOrder.toPreorder.{u1} (Filter.{u1} Ξ±) (Filter.partialOrder.{u1} Ξ±))) (Filter.principal.{u1} Ξ± s) (nhdsSet.{u1} Ξ± _inst_1 s)
-but is expected to have type
- forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {s : Set.{u1} Ξ±}, LE.le.{u1} (Filter.{u1} Ξ±) (Preorder.toLE.{u1} (Filter.{u1} Ξ±) (PartialOrder.toPreorder.{u1} (Filter.{u1} Ξ±) (Filter.instPartialOrderFilter.{u1} Ξ±))) (Filter.principal.{u1} Ξ± s) (nhdsSet.{u1} Ξ± _inst_1 s)
-Case conversion may be inaccurate. Consider using '#align principal_le_nhds_set principal_le_nhdsSetβ'. -/
theorem principal_le_nhdsSet : π s β€ πΛ’ s := fun s hs =>
(subset_interior_iff_mem_nhdsSet.mpr hs).trans interior_subset
#align principal_le_nhds_set principal_le_nhdsSet
@@ -137,12 +125,6 @@ theorem mem_nhdsSet_interior : s β πΛ’ (interior s) :=
#align mem_nhds_set_interior mem_nhdsSet_interior
-/
-/- warning: nhds_set_empty -> nhdsSet_empty is a dubious translation:
-lean 3 declaration is
- forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±], Eq.{succ u1} (Filter.{u1} Ξ±) (nhdsSet.{u1} Ξ± _inst_1 (EmptyCollection.emptyCollection.{u1} (Set.{u1} Ξ±) (Set.hasEmptyc.{u1} Ξ±))) (Bot.bot.{u1} (Filter.{u1} Ξ±) (CompleteLattice.toHasBot.{u1} (Filter.{u1} Ξ±) (Filter.completeLattice.{u1} Ξ±)))
-but is expected to have type
- forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±], Eq.{succ u1} (Filter.{u1} Ξ±) (nhdsSet.{u1} Ξ± _inst_1 (EmptyCollection.emptyCollection.{u1} (Set.{u1} Ξ±) (Set.instEmptyCollectionSet.{u1} Ξ±))) (Bot.bot.{u1} (Filter.{u1} Ξ±) (CompleteLattice.toBot.{u1} (Filter.{u1} Ξ±) (Filter.instCompleteLatticeFilter.{u1} Ξ±)))
-Case conversion may be inaccurate. Consider using '#align nhds_set_empty nhdsSet_emptyβ'. -/
@[simp]
theorem nhdsSet_empty : πΛ’ (β
: Set Ξ±) = β₯ := by rw [is_open_empty.nhds_set_eq, principal_empty]
#align nhds_set_empty nhdsSet_empty
@@ -152,63 +134,27 @@ theorem mem_nhdsSet_empty : s β πΛ’ (β
: Set Ξ±) := by simp
#align mem_nhds_set_empty mem_nhdsSet_empty
-/
-/- warning: nhds_set_univ -> nhdsSet_univ is a dubious translation:
-lean 3 declaration is
- forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±], Eq.{succ u1} (Filter.{u1} Ξ±) (nhdsSet.{u1} Ξ± _inst_1 (Set.univ.{u1} Ξ±)) (Top.top.{u1} (Filter.{u1} Ξ±) (Filter.hasTop.{u1} Ξ±))
-but is expected to have type
- forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±], Eq.{succ u1} (Filter.{u1} Ξ±) (nhdsSet.{u1} Ξ± _inst_1 (Set.univ.{u1} Ξ±)) (Top.top.{u1} (Filter.{u1} Ξ±) (Filter.instTopFilter.{u1} Ξ±))
-Case conversion may be inaccurate. Consider using '#align nhds_set_univ nhdsSet_univβ'. -/
@[simp]
theorem nhdsSet_univ : πΛ’ (univ : Set Ξ±) = β€ := by rw [is_open_univ.nhds_set_eq, principal_univ]
#align nhds_set_univ nhdsSet_univ
-/- warning: nhds_set_mono -> nhdsSet_mono is a dubious translation:
-lean 3 declaration is
- forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {s : Set.{u1} Ξ±} {t : Set.{u1} Ξ±}, (HasSubset.Subset.{u1} (Set.{u1} Ξ±) (Set.hasSubset.{u1} Ξ±) s t) -> (LE.le.{u1} (Filter.{u1} Ξ±) (Preorder.toHasLe.{u1} (Filter.{u1} Ξ±) (PartialOrder.toPreorder.{u1} (Filter.{u1} Ξ±) (Filter.partialOrder.{u1} Ξ±))) (nhdsSet.{u1} Ξ± _inst_1 s) (nhdsSet.{u1} Ξ± _inst_1 t))
-but is expected to have type
- forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {s : Set.{u1} Ξ±} {t : Set.{u1} Ξ±}, (HasSubset.Subset.{u1} (Set.{u1} Ξ±) (Set.instHasSubsetSet.{u1} Ξ±) s t) -> (LE.le.{u1} (Filter.{u1} Ξ±) (Preorder.toLE.{u1} (Filter.{u1} Ξ±) (PartialOrder.toPreorder.{u1} (Filter.{u1} Ξ±) (Filter.instPartialOrderFilter.{u1} Ξ±))) (nhdsSet.{u1} Ξ± _inst_1 s) (nhdsSet.{u1} Ξ± _inst_1 t))
-Case conversion may be inaccurate. Consider using '#align nhds_set_mono nhdsSet_monoβ'. -/
@[mono]
theorem nhdsSet_mono (h : s β t) : πΛ’ s β€ πΛ’ t :=
sSup_le_sSup <| image_subset _ h
#align nhds_set_mono nhdsSet_mono
-/- warning: monotone_nhds_set -> monotone_nhdsSet is a dubious translation:
-lean 3 declaration is
- forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±], Monotone.{u1, u1} (Set.{u1} Ξ±) (Filter.{u1} Ξ±) (PartialOrder.toPreorder.{u1} (Set.{u1} Ξ±) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} Ξ±) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} Ξ±) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} Ξ±) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} Ξ±) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} Ξ±) (Set.completeBooleanAlgebra.{u1} Ξ±))))))) (PartialOrder.toPreorder.{u1} (Filter.{u1} Ξ±) (Filter.partialOrder.{u1} Ξ±)) (nhdsSet.{u1} Ξ± _inst_1)
-but is expected to have type
- forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±], Monotone.{u1, u1} (Set.{u1} Ξ±) (Filter.{u1} Ξ±) (PartialOrder.toPreorder.{u1} (Set.{u1} Ξ±) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} Ξ±) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} Ξ±) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} Ξ±) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} Ξ±) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} Ξ±) (Set.instCompleteBooleanAlgebraSet.{u1} Ξ±))))))) (PartialOrder.toPreorder.{u1} (Filter.{u1} Ξ±) (Filter.instPartialOrderFilter.{u1} Ξ±)) (nhdsSet.{u1} Ξ± _inst_1)
-Case conversion may be inaccurate. Consider using '#align monotone_nhds_set monotone_nhdsSetβ'. -/
theorem monotone_nhdsSet : Monotone (πΛ’ : Set Ξ± β Filter Ξ±) := fun s t => nhdsSet_mono
#align monotone_nhds_set monotone_nhdsSet
-/- warning: nhds_le_nhds_set -> nhds_le_nhdsSet is a dubious translation:
-lean 3 declaration is
- forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {s : Set.{u1} Ξ±} {x : Ξ±}, (Membership.Mem.{u1, u1} Ξ± (Set.{u1} Ξ±) (Set.hasMem.{u1} Ξ±) x s) -> (LE.le.{u1} (Filter.{u1} Ξ±) (Preorder.toHasLe.{u1} (Filter.{u1} Ξ±) (PartialOrder.toPreorder.{u1} (Filter.{u1} Ξ±) (Filter.partialOrder.{u1} Ξ±))) (nhds.{u1} Ξ± _inst_1 x) (nhdsSet.{u1} Ξ± _inst_1 s))
-but is expected to have type
- forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {s : Set.{u1} Ξ±} {x : Ξ±}, (Membership.mem.{u1, u1} Ξ± (Set.{u1} Ξ±) (Set.instMembershipSet.{u1} Ξ±) x s) -> (LE.le.{u1} (Filter.{u1} Ξ±) (Preorder.toLE.{u1} (Filter.{u1} Ξ±) (PartialOrder.toPreorder.{u1} (Filter.{u1} Ξ±) (Filter.instPartialOrderFilter.{u1} Ξ±))) (nhds.{u1} Ξ± _inst_1 x) (nhdsSet.{u1} Ξ± _inst_1 s))
-Case conversion may be inaccurate. Consider using '#align nhds_le_nhds_set nhds_le_nhdsSetβ'. -/
theorem nhds_le_nhdsSet (h : x β s) : π x β€ πΛ’ s :=
le_sSup <| mem_image_of_mem _ h
#align nhds_le_nhds_set nhds_le_nhdsSet
-/- warning: nhds_set_union -> nhdsSet_union is a dubious translation:
-lean 3 declaration is
- forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] (s : Set.{u1} Ξ±) (t : Set.{u1} Ξ±), Eq.{succ u1} (Filter.{u1} Ξ±) (nhdsSet.{u1} Ξ± _inst_1 (Union.union.{u1} (Set.{u1} Ξ±) (Set.hasUnion.{u1} Ξ±) s t)) (Sup.sup.{u1} (Filter.{u1} Ξ±) (SemilatticeSup.toHasSup.{u1} (Filter.{u1} Ξ±) (Lattice.toSemilatticeSup.{u1} (Filter.{u1} Ξ±) (ConditionallyCompleteLattice.toLattice.{u1} (Filter.{u1} Ξ±) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Filter.{u1} Ξ±) (Filter.completeLattice.{u1} Ξ±))))) (nhdsSet.{u1} Ξ± _inst_1 s) (nhdsSet.{u1} Ξ± _inst_1 t))
-but is expected to have type
- forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] (s : Set.{u1} Ξ±) (t : Set.{u1} Ξ±), Eq.{succ u1} (Filter.{u1} Ξ±) (nhdsSet.{u1} Ξ± _inst_1 (Union.union.{u1} (Set.{u1} Ξ±) (Set.instUnionSet.{u1} Ξ±) s t)) (Sup.sup.{u1} (Filter.{u1} Ξ±) (SemilatticeSup.toSup.{u1} (Filter.{u1} Ξ±) (Lattice.toSemilatticeSup.{u1} (Filter.{u1} Ξ±) (ConditionallyCompleteLattice.toLattice.{u1} (Filter.{u1} Ξ±) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Filter.{u1} Ξ±) (Filter.instCompleteLatticeFilter.{u1} Ξ±))))) (nhdsSet.{u1} Ξ± _inst_1 s) (nhdsSet.{u1} Ξ± _inst_1 t))
-Case conversion may be inaccurate. Consider using '#align nhds_set_union nhdsSet_unionβ'. -/
@[simp]
theorem nhdsSet_union (s t : Set Ξ±) : πΛ’ (s βͺ t) = πΛ’ s β πΛ’ t := by
simp only [nhdsSet, image_union, sSup_union]
#align nhds_set_union nhdsSet_union
-/- warning: union_mem_nhds_set -> union_mem_nhdsSet is a dubious translation:
-lean 3 declaration is
- forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {sβ : Set.{u1} Ξ±} {sβ : Set.{u1} Ξ±} {tβ : Set.{u1} Ξ±} {tβ : Set.{u1} Ξ±}, (Membership.Mem.{u1, u1} (Set.{u1} Ξ±) (Filter.{u1} Ξ±) (Filter.hasMem.{u1} Ξ±) sβ (nhdsSet.{u1} Ξ± _inst_1 tβ)) -> (Membership.Mem.{u1, u1} (Set.{u1} Ξ±) (Filter.{u1} Ξ±) (Filter.hasMem.{u1} Ξ±) sβ (nhdsSet.{u1} Ξ± _inst_1 tβ)) -> (Membership.Mem.{u1, u1} (Set.{u1} Ξ±) (Filter.{u1} Ξ±) (Filter.hasMem.{u1} Ξ±) (Union.union.{u1} (Set.{u1} Ξ±) (Set.hasUnion.{u1} Ξ±) sβ sβ) (nhdsSet.{u1} Ξ± _inst_1 (Union.union.{u1} (Set.{u1} Ξ±) (Set.hasUnion.{u1} Ξ±) tβ tβ)))
-but is expected to have type
- forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {sβ : Set.{u1} Ξ±} {sβ : Set.{u1} Ξ±} {tβ : Set.{u1} Ξ±} {tβ : Set.{u1} Ξ±}, (Membership.mem.{u1, u1} (Set.{u1} Ξ±) (Filter.{u1} Ξ±) (instMembershipSetFilter.{u1} Ξ±) sβ (nhdsSet.{u1} Ξ± _inst_1 tβ)) -> (Membership.mem.{u1, u1} (Set.{u1} Ξ±) (Filter.{u1} Ξ±) (instMembershipSetFilter.{u1} Ξ±) sβ (nhdsSet.{u1} Ξ± _inst_1 tβ)) -> (Membership.mem.{u1, u1} (Set.{u1} Ξ±) (Filter.{u1} Ξ±) (instMembershipSetFilter.{u1} Ξ±) (Union.union.{u1} (Set.{u1} Ξ±) (Set.instUnionSet.{u1} Ξ±) sβ sβ) (nhdsSet.{u1} Ξ± _inst_1 (Union.union.{u1} (Set.{u1} Ξ±) (Set.instUnionSet.{u1} Ξ±) tβ tβ)))
-Case conversion may be inaccurate. Consider using '#align union_mem_nhds_set union_mem_nhdsSetβ'. -/
theorem union_mem_nhdsSet (hβ : sβ β πΛ’ tβ) (hβ : sβ β πΛ’ tβ) : sβ βͺ sβ β πΛ’ (tβ βͺ tβ) := by
rw [nhdsSet_union]; exact union_mem_sup hβ hβ
#align union_mem_nhds_set union_mem_nhdsSet
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -55,10 +55,8 @@ lean 3 declaration is
but is expected to have type
forall (Ξ± : Type.{u1}) [_inst_3 : TopologicalSpace.{u1} (Prod.{u1, u1} Ξ± Ξ±)], Eq.{succ u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (nhdsSet.{u1} (Prod.{u1, u1} Ξ± Ξ±) _inst_3 (Set.diagonal.{u1} Ξ±)) (iSup.{u1, succ u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (ConditionallyCompleteLattice.toSupSet.{u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (Filter.instCompleteLatticeFilter.{u1} (Prod.{u1, u1} Ξ± Ξ±)))) Ξ± (fun (x : Ξ±) => nhds.{u1} (Prod.{u1, u1} Ξ± Ξ±) _inst_3 (Prod.mk.{u1, u1} Ξ± Ξ± x x)))
Case conversion may be inaccurate. Consider using '#align nhds_set_diagonal nhdsSet_diagonalβ'. -/
-theorem nhdsSet_diagonal (Ξ±) [TopologicalSpace (Ξ± Γ Ξ±)] : πΛ’ (diagonal Ξ±) = β¨ x, π (x, x) :=
- by
- rw [nhdsSet, β range_diag, β range_comp]
- rfl
+theorem nhdsSet_diagonal (Ξ±) [TopologicalSpace (Ξ± Γ Ξ±)] : πΛ’ (diagonal Ξ±) = β¨ x, π (x, x) := by
+ rw [nhdsSet, β range_diag, β range_comp]; rfl
#align nhds_set_diagonal nhdsSet_diagonal
#print mem_nhdsSet_iff_forall /-
@@ -211,10 +209,8 @@ lean 3 declaration is
but is expected to have type
forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {sβ : Set.{u1} Ξ±} {sβ : Set.{u1} Ξ±} {tβ : Set.{u1} Ξ±} {tβ : Set.{u1} Ξ±}, (Membership.mem.{u1, u1} (Set.{u1} Ξ±) (Filter.{u1} Ξ±) (instMembershipSetFilter.{u1} Ξ±) sβ (nhdsSet.{u1} Ξ± _inst_1 tβ)) -> (Membership.mem.{u1, u1} (Set.{u1} Ξ±) (Filter.{u1} Ξ±) (instMembershipSetFilter.{u1} Ξ±) sβ (nhdsSet.{u1} Ξ± _inst_1 tβ)) -> (Membership.mem.{u1, u1} (Set.{u1} Ξ±) (Filter.{u1} Ξ±) (instMembershipSetFilter.{u1} Ξ±) (Union.union.{u1} (Set.{u1} Ξ±) (Set.instUnionSet.{u1} Ξ±) sβ sβ) (nhdsSet.{u1} Ξ± _inst_1 (Union.union.{u1} (Set.{u1} Ξ±) (Set.instUnionSet.{u1} Ξ±) tβ tβ)))
Case conversion may be inaccurate. Consider using '#align union_mem_nhds_set union_mem_nhdsSetβ'. -/
-theorem union_mem_nhdsSet (hβ : sβ β πΛ’ tβ) (hβ : sβ β πΛ’ tβ) : sβ βͺ sβ β πΛ’ (tβ βͺ tβ) :=
- by
- rw [nhdsSet_union]
- exact union_mem_sup hβ hβ
+theorem union_mem_nhdsSet (hβ : sβ β πΛ’ tβ) (hβ : sβ β πΛ’ tβ) : sβ βͺ sβ β πΛ’ (tβ βͺ tβ) := by
+ rw [nhdsSet_union]; exact union_mem_sup hβ hβ
#align union_mem_nhds_set union_mem_nhdsSet
#print Continuous.tendsto_nhdsSet /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -99,7 +99,7 @@ theorem IsOpen.mem_nhdsSet (hU : IsOpen s) : s β πΛ’ t β t β s := by
/- warning: principal_le_nhds_set -> principal_le_nhdsSet is a dubious translation:
lean 3 declaration is
- forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {s : Set.{u1} Ξ±}, LE.le.{u1} (Filter.{u1} Ξ±) (Preorder.toLE.{u1} (Filter.{u1} Ξ±) (PartialOrder.toPreorder.{u1} (Filter.{u1} Ξ±) (Filter.partialOrder.{u1} Ξ±))) (Filter.principal.{u1} Ξ± s) (nhdsSet.{u1} Ξ± _inst_1 s)
+ forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {s : Set.{u1} Ξ±}, LE.le.{u1} (Filter.{u1} Ξ±) (Preorder.toHasLe.{u1} (Filter.{u1} Ξ±) (PartialOrder.toPreorder.{u1} (Filter.{u1} Ξ±) (Filter.partialOrder.{u1} Ξ±))) (Filter.principal.{u1} Ξ± s) (nhdsSet.{u1} Ξ± _inst_1 s)
but is expected to have type
forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {s : Set.{u1} Ξ±}, LE.le.{u1} (Filter.{u1} Ξ±) (Preorder.toLE.{u1} (Filter.{u1} Ξ±) (PartialOrder.toPreorder.{u1} (Filter.{u1} Ξ±) (Filter.instPartialOrderFilter.{u1} Ξ±))) (Filter.principal.{u1} Ξ± s) (nhdsSet.{u1} Ξ± _inst_1 s)
Case conversion may be inaccurate. Consider using '#align principal_le_nhds_set principal_le_nhdsSetβ'. -/
@@ -166,7 +166,7 @@ theorem nhdsSet_univ : πΛ’ (univ : Set Ξ±) = β€ := by rw [is_open_univ.nhds_
/- warning: nhds_set_mono -> nhdsSet_mono is a dubious translation:
lean 3 declaration is
- forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {s : Set.{u1} Ξ±} {t : Set.{u1} Ξ±}, (HasSubset.Subset.{u1} (Set.{u1} Ξ±) (Set.hasSubset.{u1} Ξ±) s t) -> (LE.le.{u1} (Filter.{u1} Ξ±) (Preorder.toLE.{u1} (Filter.{u1} Ξ±) (PartialOrder.toPreorder.{u1} (Filter.{u1} Ξ±) (Filter.partialOrder.{u1} Ξ±))) (nhdsSet.{u1} Ξ± _inst_1 s) (nhdsSet.{u1} Ξ± _inst_1 t))
+ forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {s : Set.{u1} Ξ±} {t : Set.{u1} Ξ±}, (HasSubset.Subset.{u1} (Set.{u1} Ξ±) (Set.hasSubset.{u1} Ξ±) s t) -> (LE.le.{u1} (Filter.{u1} Ξ±) (Preorder.toHasLe.{u1} (Filter.{u1} Ξ±) (PartialOrder.toPreorder.{u1} (Filter.{u1} Ξ±) (Filter.partialOrder.{u1} Ξ±))) (nhdsSet.{u1} Ξ± _inst_1 s) (nhdsSet.{u1} Ξ± _inst_1 t))
but is expected to have type
forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {s : Set.{u1} Ξ±} {t : Set.{u1} Ξ±}, (HasSubset.Subset.{u1} (Set.{u1} Ξ±) (Set.instHasSubsetSet.{u1} Ξ±) s t) -> (LE.le.{u1} (Filter.{u1} Ξ±) (Preorder.toLE.{u1} (Filter.{u1} Ξ±) (PartialOrder.toPreorder.{u1} (Filter.{u1} Ξ±) (Filter.instPartialOrderFilter.{u1} Ξ±))) (nhdsSet.{u1} Ξ± _inst_1 s) (nhdsSet.{u1} Ξ± _inst_1 t))
Case conversion may be inaccurate. Consider using '#align nhds_set_mono nhdsSet_monoβ'. -/
@@ -186,7 +186,7 @@ theorem monotone_nhdsSet : Monotone (πΛ’ : Set Ξ± β Filter Ξ±) := fun s t =
/- warning: nhds_le_nhds_set -> nhds_le_nhdsSet is a dubious translation:
lean 3 declaration is
- forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {s : Set.{u1} Ξ±} {x : Ξ±}, (Membership.Mem.{u1, u1} Ξ± (Set.{u1} Ξ±) (Set.hasMem.{u1} Ξ±) x s) -> (LE.le.{u1} (Filter.{u1} Ξ±) (Preorder.toLE.{u1} (Filter.{u1} Ξ±) (PartialOrder.toPreorder.{u1} (Filter.{u1} Ξ±) (Filter.partialOrder.{u1} Ξ±))) (nhds.{u1} Ξ± _inst_1 x) (nhdsSet.{u1} Ξ± _inst_1 s))
+ forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {s : Set.{u1} Ξ±} {x : Ξ±}, (Membership.Mem.{u1, u1} Ξ± (Set.{u1} Ξ±) (Set.hasMem.{u1} Ξ±) x s) -> (LE.le.{u1} (Filter.{u1} Ξ±) (Preorder.toHasLe.{u1} (Filter.{u1} Ξ±) (PartialOrder.toPreorder.{u1} (Filter.{u1} Ξ±) (Filter.partialOrder.{u1} Ξ±))) (nhds.{u1} Ξ± _inst_1 x) (nhdsSet.{u1} Ξ± _inst_1 s))
but is expected to have type
forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {s : Set.{u1} Ξ±} {x : Ξ±}, (Membership.mem.{u1, u1} Ξ± (Set.{u1} Ξ±) (Set.instMembershipSet.{u1} Ξ±) x s) -> (LE.le.{u1} (Filter.{u1} Ξ±) (Preorder.toLE.{u1} (Filter.{u1} Ξ±) (PartialOrder.toPreorder.{u1} (Filter.{u1} Ξ±) (Filter.instPartialOrderFilter.{u1} Ξ±))) (nhds.{u1} Ξ± _inst_1 x) (nhdsSet.{u1} Ξ± _inst_1 s))
Case conversion may be inaccurate. Consider using '#align nhds_le_nhds_set nhds_le_nhdsSetβ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -42,7 +42,7 @@ variable {Ξ± Ξ² : Type _} [TopologicalSpace Ξ±] [TopologicalSpace Ξ²] {s t sβ
#print nhdsSet /-
/-- The filter of neighborhoods of a set in a topological space. -/
def nhdsSet (s : Set Ξ±) : Filter Ξ± :=
- supβ (nhds '' s)
+ sSup (nhds '' s)
#align nhds_set nhdsSet
-/
@@ -51,9 +51,9 @@ scoped[Topology] notation "πΛ’" => nhdsSet
/- warning: nhds_set_diagonal -> nhdsSet_diagonal is a dubious translation:
lean 3 declaration is
- forall (Ξ± : Type.{u1}) [_inst_3 : TopologicalSpace.{u1} (Prod.{u1, u1} Ξ± Ξ±)], Eq.{succ u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (nhdsSet.{u1} (Prod.{u1, u1} Ξ± Ξ±) _inst_3 (Set.diagonal.{u1} Ξ±)) (supα΅’.{u1, succ u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (ConditionallyCompleteLattice.toHasSup.{u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (Filter.completeLattice.{u1} (Prod.{u1, u1} Ξ± Ξ±)))) Ξ± (fun (x : Ξ±) => nhds.{u1} (Prod.{u1, u1} Ξ± Ξ±) _inst_3 (Prod.mk.{u1, u1} Ξ± Ξ± x x)))
+ forall (Ξ± : Type.{u1}) [_inst_3 : TopologicalSpace.{u1} (Prod.{u1, u1} Ξ± Ξ±)], Eq.{succ u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (nhdsSet.{u1} (Prod.{u1, u1} Ξ± Ξ±) _inst_3 (Set.diagonal.{u1} Ξ±)) (iSup.{u1, succ u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (ConditionallyCompleteLattice.toHasSup.{u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (Filter.completeLattice.{u1} (Prod.{u1, u1} Ξ± Ξ±)))) Ξ± (fun (x : Ξ±) => nhds.{u1} (Prod.{u1, u1} Ξ± Ξ±) _inst_3 (Prod.mk.{u1, u1} Ξ± Ξ± x x)))
but is expected to have type
- forall (Ξ± : Type.{u1}) [_inst_3 : TopologicalSpace.{u1} (Prod.{u1, u1} Ξ± Ξ±)], Eq.{succ u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (nhdsSet.{u1} (Prod.{u1, u1} Ξ± Ξ±) _inst_3 (Set.diagonal.{u1} Ξ±)) (supα΅’.{u1, succ u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (ConditionallyCompleteLattice.toSupSet.{u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (Filter.instCompleteLatticeFilter.{u1} (Prod.{u1, u1} Ξ± Ξ±)))) Ξ± (fun (x : Ξ±) => nhds.{u1} (Prod.{u1, u1} Ξ± Ξ±) _inst_3 (Prod.mk.{u1, u1} Ξ± Ξ± x x)))
+ forall (Ξ± : Type.{u1}) [_inst_3 : TopologicalSpace.{u1} (Prod.{u1, u1} Ξ± Ξ±)], Eq.{succ u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (nhdsSet.{u1} (Prod.{u1, u1} Ξ± Ξ±) _inst_3 (Set.diagonal.{u1} Ξ±)) (iSup.{u1, succ u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (ConditionallyCompleteLattice.toSupSet.{u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Filter.{u1} (Prod.{u1, u1} Ξ± Ξ±)) (Filter.instCompleteLatticeFilter.{u1} (Prod.{u1, u1} Ξ± Ξ±)))) Ξ± (fun (x : Ξ±) => nhds.{u1} (Prod.{u1, u1} Ξ± Ξ±) _inst_3 (Prod.mk.{u1, u1} Ξ± Ξ± x x)))
Case conversion may be inaccurate. Consider using '#align nhds_set_diagonal nhdsSet_diagonalβ'. -/
theorem nhdsSet_diagonal (Ξ±) [TopologicalSpace (Ξ± Γ Ξ±)] : πΛ’ (diagonal Ξ±) = β¨ x, π (x, x) :=
by
@@ -63,13 +63,13 @@ theorem nhdsSet_diagonal (Ξ±) [TopologicalSpace (Ξ± Γ Ξ±)] : πΛ’ (diagonal
#print mem_nhdsSet_iff_forall /-
theorem mem_nhdsSet_iff_forall : s β πΛ’ t β β x : Ξ±, x β t β s β π x := by
- simp_rw [nhdsSet, Filter.mem_supβ, ball_image_iff]
+ simp_rw [nhdsSet, Filter.mem_sSup, ball_image_iff]
#align mem_nhds_set_iff_forall mem_nhdsSet_iff_forall
-/
#print bUnion_mem_nhdsSet /-
theorem bUnion_mem_nhdsSet {t : Ξ± β Set Ξ±} (h : β x β s, t x β π x) : (β x β s, t x) β πΛ’ s :=
- mem_nhdsSet_iff_forall.2 fun x hx => mem_of_superset (h x hx) (subset_unionα΅’β x hx)
+ mem_nhdsSet_iff_forall.2 fun x hx => mem_of_superset (h x hx) (subset_iUnionβ x hx)
#align bUnion_mem_nhds_set bUnion_mem_nhdsSet
-/
@@ -172,7 +172,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align nhds_set_mono nhdsSet_monoβ'. -/
@[mono]
theorem nhdsSet_mono (h : s β t) : πΛ’ s β€ πΛ’ t :=
- supβ_le_supβ <| image_subset _ h
+ sSup_le_sSup <| image_subset _ h
#align nhds_set_mono nhdsSet_mono
/- warning: monotone_nhds_set -> monotone_nhdsSet is a dubious translation:
@@ -191,7 +191,7 @@ but is expected to have type
forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {s : Set.{u1} Ξ±} {x : Ξ±}, (Membership.mem.{u1, u1} Ξ± (Set.{u1} Ξ±) (Set.instMembershipSet.{u1} Ξ±) x s) -> (LE.le.{u1} (Filter.{u1} Ξ±) (Preorder.toLE.{u1} (Filter.{u1} Ξ±) (PartialOrder.toPreorder.{u1} (Filter.{u1} Ξ±) (Filter.instPartialOrderFilter.{u1} Ξ±))) (nhds.{u1} Ξ± _inst_1 x) (nhdsSet.{u1} Ξ± _inst_1 s))
Case conversion may be inaccurate. Consider using '#align nhds_le_nhds_set nhds_le_nhdsSetβ'. -/
theorem nhds_le_nhdsSet (h : x β s) : π x β€ πΛ’ s :=
- le_supβ <| mem_image_of_mem _ h
+ le_sSup <| mem_image_of_mem _ h
#align nhds_le_nhds_set nhds_le_nhdsSet
/- warning: nhds_set_union -> nhdsSet_union is a dubious translation:
@@ -202,7 +202,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align nhds_set_union nhdsSet_unionβ'. -/
@[simp]
theorem nhdsSet_union (s t : Set Ξ±) : πΛ’ (s βͺ t) = πΛ’ s β πΛ’ t := by
- simp only [nhdsSet, image_union, supβ_union]
+ simp only [nhdsSet, image_union, sSup_union]
#align nhds_set_union nhdsSet_union
/- warning: union_mem_nhds_set -> union_mem_nhdsSet is a dubious translation:
mathlib commit https://github.com/leanprover-community/mathlib/commit/9da1b3534b65d9661eb8f42443598a92bbb49211
@@ -196,9 +196,9 @@ theorem nhds_le_nhdsSet (h : x β s) : π x β€ πΛ’ s :=
/- warning: nhds_set_union -> nhdsSet_union is a dubious translation:
lean 3 declaration is
- forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] (s : Set.{u1} Ξ±) (t : Set.{u1} Ξ±), Eq.{succ u1} (Filter.{u1} Ξ±) (nhdsSet.{u1} Ξ± _inst_1 (Union.union.{u1} (Set.{u1} Ξ±) (Set.hasUnion.{u1} Ξ±) s t)) (HasSup.sup.{u1} (Filter.{u1} Ξ±) (SemilatticeSup.toHasSup.{u1} (Filter.{u1} Ξ±) (Lattice.toSemilatticeSup.{u1} (Filter.{u1} Ξ±) (ConditionallyCompleteLattice.toLattice.{u1} (Filter.{u1} Ξ±) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Filter.{u1} Ξ±) (Filter.completeLattice.{u1} Ξ±))))) (nhdsSet.{u1} Ξ± _inst_1 s) (nhdsSet.{u1} Ξ± _inst_1 t))
+ forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] (s : Set.{u1} Ξ±) (t : Set.{u1} Ξ±), Eq.{succ u1} (Filter.{u1} Ξ±) (nhdsSet.{u1} Ξ± _inst_1 (Union.union.{u1} (Set.{u1} Ξ±) (Set.hasUnion.{u1} Ξ±) s t)) (Sup.sup.{u1} (Filter.{u1} Ξ±) (SemilatticeSup.toHasSup.{u1} (Filter.{u1} Ξ±) (Lattice.toSemilatticeSup.{u1} (Filter.{u1} Ξ±) (ConditionallyCompleteLattice.toLattice.{u1} (Filter.{u1} Ξ±) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Filter.{u1} Ξ±) (Filter.completeLattice.{u1} Ξ±))))) (nhdsSet.{u1} Ξ± _inst_1 s) (nhdsSet.{u1} Ξ± _inst_1 t))
but is expected to have type
- forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] (s : Set.{u1} Ξ±) (t : Set.{u1} Ξ±), Eq.{succ u1} (Filter.{u1} Ξ±) (nhdsSet.{u1} Ξ± _inst_1 (Union.union.{u1} (Set.{u1} Ξ±) (Set.instUnionSet.{u1} Ξ±) s t)) (HasSup.sup.{u1} (Filter.{u1} Ξ±) (SemilatticeSup.toHasSup.{u1} (Filter.{u1} Ξ±) (Lattice.toSemilatticeSup.{u1} (Filter.{u1} Ξ±) (ConditionallyCompleteLattice.toLattice.{u1} (Filter.{u1} Ξ±) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Filter.{u1} Ξ±) (Filter.instCompleteLatticeFilter.{u1} Ξ±))))) (nhdsSet.{u1} Ξ± _inst_1 s) (nhdsSet.{u1} Ξ± _inst_1 t))
+ forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] (s : Set.{u1} Ξ±) (t : Set.{u1} Ξ±), Eq.{succ u1} (Filter.{u1} Ξ±) (nhdsSet.{u1} Ξ± _inst_1 (Union.union.{u1} (Set.{u1} Ξ±) (Set.instUnionSet.{u1} Ξ±) s t)) (Sup.sup.{u1} (Filter.{u1} Ξ±) (SemilatticeSup.toSup.{u1} (Filter.{u1} Ξ±) (Lattice.toSemilatticeSup.{u1} (Filter.{u1} Ξ±) (ConditionallyCompleteLattice.toLattice.{u1} (Filter.{u1} Ξ±) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Filter.{u1} Ξ±) (Filter.instCompleteLatticeFilter.{u1} Ξ±))))) (nhdsSet.{u1} Ξ± _inst_1 s) (nhdsSet.{u1} Ξ± _inst_1 t))
Case conversion may be inaccurate. Consider using '#align nhds_set_union nhdsSet_unionβ'. -/
@[simp]
theorem nhdsSet_union (s t : Set Ξ±) : πΛ’ (s βͺ t) = πΛ’ s β πΛ’ t := by
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
ball
and bex
from lemma names (#10816)
ball
for "bounded forall" and bex
for "bounded exists" are from experience very confusing abbreviations. This PR renames them to forall_mem
and exists_mem
in the few Set
lemma names that mention them.
Also deprecate ball_image_of_ball
, mem_image_elim
, mem_image_elim_on
since those lemmas are duplicates of the renamed lemmas (apart from argument order and implicitness, which I am also fixing by making the binder in the RHS of forall_mem_image
semi-implicit), have obscure names and are completely unused.
@@ -39,7 +39,7 @@ theorem nhdsSet_diagonal (X) [TopologicalSpace (X Γ X)] :
#align nhds_set_diagonal nhdsSet_diagonal
theorem mem_nhdsSet_iff_forall : s β πΛ’ t β β x : X, x β t β s β π x := by
- simp_rw [nhdsSet, Filter.mem_sSup, ball_image_iff]
+ simp_rw [nhdsSet, Filter.mem_sSup, forall_mem_image]
#align mem_nhds_set_iff_forall mem_nhdsSet_iff_forall
lemma nhdsSet_le : πΛ’ s β€ f β β x β s, π x β€ f := by simp [nhdsSet]
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -46,7 +46,7 @@ lemma nhdsSet_le : πΛ’ s β€ f β β x β s, π x β€ f := by simp [nhds
theorem bUnion_mem_nhdsSet {t : X β Set X} (h : β x β s, t x β π x) : (β x β s, t x) β πΛ’ s :=
mem_nhdsSet_iff_forall.2 fun x hx => mem_of_superset (h x hx) <|
- subset_iUnionβ (s := fun x _ => t x) x hx -- porting note: fails to find `s`
+ subset_iUnionβ (s := fun x _ => t x) x hx -- Porting note: fails to find `s`
#align bUnion_mem_nhds_set bUnion_mem_nhdsSet
theorem subset_interior_iff_mem_nhdsSet : s β interior t β t β πΛ’ s := by
In some cases, the order of implicit arguments changed
because now they appear in a different order in variable
s.
Also, some definitions used greek letters for topological spaces,
changed to X
/Y
.
@@ -32,13 +32,6 @@ open Set Filter Topology
variable {X Y : Type*} [TopologicalSpace X] [TopologicalSpace Y] {f : Filter X}
{s t sβ sβ tβ tβ : Set X} {x : X}
-/-- The filter of neighborhoods of a set in a topological space. -/
-def nhdsSet (s : Set X) : Filter X :=
- sSup (nhds '' s)
-#align nhds_set nhdsSet
-
-@[inherit_doc] scoped[Topology] notation "πΛ’" => nhdsSet
-
theorem nhdsSet_diagonal (X) [TopologicalSpace (X Γ X)] :
πΛ’ (diagonal X) = β¨ (x : X), π (x, x) := by
rw [nhdsSet, β range_diag, β range_comp]
@@ -86,6 +86,14 @@ theorem hasBasis_nhdsSet (s : Set X) : (πΛ’ s).HasBasis (fun U => IsOpen U
β¨fun t => by simp [mem_nhdsSet_iff_exists, and_assoc]β©
#align has_basis_nhds_set hasBasis_nhdsSet
+@[simp]
+lemma lift'_nhdsSet_interior (s : Set X) : (πΛ’ s).lift' interior = πΛ’ s :=
+ (hasBasis_nhdsSet s).lift'_interior_eq_self fun _ β¦ And.left
+
+lemma Filter.HasBasis.nhdsSet_interior {ΞΉ : Sort*} {p : ΞΉ β Prop} {s : ΞΉ β Set X} {t : Set X}
+ (h : (πΛ’ t).HasBasis p s) : (πΛ’ t).HasBasis p (interior <| s Β·) :=
+ lift'_nhdsSet_interior t βΈ h.lift'_interior
+
theorem IsOpen.mem_nhdsSet (hU : IsOpen s) : s β πΛ’ t β t β s := by
rw [β subset_interior_iff_mem_nhdsSet, hU.interior_eq]
#align is_open.mem_nhds_set IsOpen.mem_nhdsSet
@@ -177,3 +177,45 @@ lemma Continuous.tendsto_nhdsSet_nhds
Tendsto f (πΛ’ s) (π y) := by
rw [β nhdsSet_singleton]
exact h.tendsto_nhdsSet h'
+
+/- This inequality cannot be improved to an equality. For instance,
+if `X` has two elements and the coarse topology and `s` and `t` are distinct singletons then
+`πΛ’ (s β© t) = β₯` while `πΛ’ s β πΛ’ t = β€` and those are different. -/
+theorem nhdsSet_inter_le (s t : Set X) : πΛ’ (s β© t) β€ πΛ’ s β πΛ’ t :=
+ (monotone_nhdsSet (X := X)).map_inf_le s t
+
+variable (s) in
+theorem IsClosed.nhdsSet_le_sup (h : IsClosed t) : πΛ’ s β€ πΛ’ (s β© t) β π (tαΆ) :=
+ calc
+ πΛ’ s = πΛ’ (s β© t βͺ s β© tαΆ) := by rw [Set.inter_union_compl s t]
+ _ = πΛ’ (s β© t) β πΛ’ (s β© tαΆ) := by rw [nhdsSet_union]
+ _ β€ πΛ’ (s β© t) β πΛ’ (tαΆ) := (sup_le_sup_left (monotone_nhdsSet (s.inter_subset_right (tαΆ))) _)
+ _ = πΛ’ (s β© t) β π (tαΆ) := by rw [h.isOpen_compl.nhdsSet_eq]
+
+variable (s) in
+theorem IsClosed.nhdsSet_le_sup' (h : IsClosed t) :
+ πΛ’ s β€ πΛ’ (t β© s) β π (tαΆ) := by rw [Set.inter_comm]; exact h.nhdsSet_le_sup s
+
+theorem Filter.Eventually.eventually_nhdsSet {p : X β Prop} (h : βαΆ y in πΛ’ s, p y) :
+ βαΆ y in πΛ’ s, βαΆ x in π y, p x :=
+ eventually_nhdsSet_iff_forall.mpr fun x x_in β¦
+ (eventually_nhdsSet_iff_forall.mp h x x_in).eventually_nhds
+
+theorem Filter.Eventually.union_nhdsSet {p : X β Prop} :
+ (βαΆ x in πΛ’ (s βͺ t), p x) β (βαΆ x in πΛ’ s, p x) β§ βαΆ x in πΛ’ t, p x := by
+ rw [nhdsSet_union, eventually_sup]
+
+theorem Filter.Eventually.union {p : X β Prop} (hs : βαΆ x in πΛ’ s, p x) (ht : βαΆ x in πΛ’ t, p x) :
+ βαΆ x in πΛ’ (s βͺ t), p x :=
+ Filter.Eventually.union_nhdsSet.mpr β¨hs, htβ©
+
+theorem nhdsSet_iUnion {ΞΉ : Sort*} (s : ΞΉ β Set X) : πΛ’ (β i, s i) = β¨ i, πΛ’ (s i) := by
+ simp only [nhdsSet, image_iUnion, sSup_iUnion (Ξ² := Filter X)]
+
+theorem eventually_nhdsSet_iUnionβ {ΞΉ : Sort*} {p : ΞΉ β Prop} {s : ΞΉ β Set X} {P : X β Prop} :
+ (βαΆ x in πΛ’ (β (i) (_ : p i), s i), P x) β β i, p i β βαΆ x in πΛ’ (s i), P x := by
+ simp only [nhdsSet_iUnion, eventually_iSup]
+
+theorem eventually_nhdsSet_iUnion {ΞΉ : Sort*} {s : ΞΉ β Set X} {P : X β Prop} :
+ (βαΆ x in πΛ’ (β i, s i), P x) β β i, βαΆ x in πΛ’ (s i), P x := by
+ simp only [nhdsSet_iUnion, eventually_iSup]
Now we use letters X and Y for topological spaces, not Greek letters.
@@ -17,8 +17,8 @@ In this file we define the filter `πΛ’ s` or `nhdsSet s` consisting of all ne
There are a couple different notions equivalent to `s β πΛ’ t`:
* `s β interior t` using `subset_interior_iff_mem_nhdsSet`
-* `β x : Ξ±, x β t β s β π x` using `mem_nhdsSet_iff_forall`
-* `β U : Set Ξ±, IsOpen U β§ t β U β§ U β s` using `mem_nhdsSet_iff_exists`
+* `β x : X, x β t β s β π x` using `mem_nhdsSet_iff_forall`
+* `β U : Set X, IsOpen U β§ t β U β§ U β s` using `mem_nhdsSet_iff_exists`
Furthermore, we have the following results:
* `monotone_nhdsSet`: `πΛ’` is monotone
@@ -29,29 +29,29 @@ Furthermore, we have the following results:
open Set Filter Topology
-variable {Ξ± Ξ² : Type*} [TopologicalSpace Ξ±] [TopologicalSpace Ξ²] {f : Filter Ξ±}
- {s t sβ sβ tβ tβ : Set Ξ±} {x : Ξ±}
+variable {X Y : Type*} [TopologicalSpace X] [TopologicalSpace Y] {f : Filter X}
+ {s t sβ sβ tβ tβ : Set X} {x : X}
/-- The filter of neighborhoods of a set in a topological space. -/
-def nhdsSet (s : Set Ξ±) : Filter Ξ± :=
+def nhdsSet (s : Set X) : Filter X :=
sSup (nhds '' s)
#align nhds_set nhdsSet
@[inherit_doc] scoped[Topology] notation "πΛ’" => nhdsSet
-theorem nhdsSet_diagonal (Ξ±) [TopologicalSpace (Ξ± Γ Ξ±)] :
- πΛ’ (diagonal Ξ±) = β¨ (x : Ξ±), π (x, x) := by
+theorem nhdsSet_diagonal (X) [TopologicalSpace (X Γ X)] :
+ πΛ’ (diagonal X) = β¨ (x : X), π (x, x) := by
rw [nhdsSet, β range_diag, β range_comp]
rfl
#align nhds_set_diagonal nhdsSet_diagonal
-theorem mem_nhdsSet_iff_forall : s β πΛ’ t β β x : Ξ±, x β t β s β π x := by
+theorem mem_nhdsSet_iff_forall : s β πΛ’ t β β x : X, x β t β s β π x := by
simp_rw [nhdsSet, Filter.mem_sSup, ball_image_iff]
#align mem_nhds_set_iff_forall mem_nhdsSet_iff_forall
-lemma nhdsSet_le : πΛ’ s β€ f β β a β s, π a β€ f := by simp [nhdsSet]
+lemma nhdsSet_le : πΛ’ s β€ f β β x β s, π x β€ f := by simp [nhdsSet]
-theorem bUnion_mem_nhdsSet {t : Ξ± β Set Ξ±} (h : β x β s, t x β π x) : (β x β s, t x) β πΛ’ s :=
+theorem bUnion_mem_nhdsSet {t : X β Set X} (h : β x β s, t x β π x) : (β x β s, t x) β πΛ’ s :=
mem_nhdsSet_iff_forall.2 fun x hx => mem_of_superset (h x hx) <|
subset_iUnionβ (s := fun x _ => t x) x hx -- porting note: fails to find `s`
#align bUnion_mem_nhds_set bUnion_mem_nhdsSet
@@ -67,22 +67,22 @@ theorem disjoint_principal_nhdsSet : Disjoint (π s) (πΛ’ t) β Disjoint (
theorem disjoint_nhdsSet_principal : Disjoint (πΛ’ s) (π t) β Disjoint s (closure t) := by
rw [disjoint_comm, disjoint_principal_nhdsSet, disjoint_comm]
-theorem mem_nhdsSet_iff_exists : s β πΛ’ t β β U : Set Ξ±, IsOpen U β§ t β U β§ U β s := by
+theorem mem_nhdsSet_iff_exists : s β πΛ’ t β β U : Set X, IsOpen U β§ t β U β§ U β s := by
rw [β subset_interior_iff_mem_nhdsSet, subset_interior_iff]
#align mem_nhds_set_iff_exists mem_nhdsSet_iff_exists
/-- A proposition is true on a set neighborhood of `s` iff it is true on a larger open set -/
-theorem eventually_nhdsSet_iff_exists {p : Ξ± β Prop} :
+theorem eventually_nhdsSet_iff_exists {p : X β Prop} :
(βαΆ x in πΛ’ s, p x) β β t, IsOpen t β§ s β t β§ β x, x β t β p x :=
mem_nhdsSet_iff_exists
/-- A proposition is true on a set neighborhood of `s`
iff it is eventually true near each point in the set. -/
-theorem eventually_nhdsSet_iff_forall {p : Ξ± β Prop} :
+theorem eventually_nhdsSet_iff_forall {p : X β Prop} :
(βαΆ x in πΛ’ s, p x) β β x, x β s β βαΆ y in π x, p y :=
mem_nhdsSet_iff_forall
-theorem hasBasis_nhdsSet (s : Set Ξ±) : (πΛ’ s).HasBasis (fun U => IsOpen U β§ s β U) fun U => U :=
+theorem hasBasis_nhdsSet (s : Set X) : (πΛ’ s).HasBasis (fun U => IsOpen U β§ s β U) fun U => U :=
β¨fun t => by simp [mem_nhdsSet_iff_exists, and_assoc]β©
#align has_basis_nhds_set hasBasis_nhdsSet
@@ -99,10 +99,10 @@ theorem principal_le_nhdsSet : π s β€ πΛ’ s := fun _s hs =>
theorem subset_of_mem_nhdsSet (h : t β πΛ’ s) : s β t := principal_le_nhdsSet h
-theorem Filter.Eventually.self_of_nhdsSet {p : Ξ± β Prop} (h : βαΆ x in πΛ’ s, p x) : β x β s, p x :=
+theorem Filter.Eventually.self_of_nhdsSet {p : X β Prop} (h : βαΆ x in πΛ’ s, p x) : β x β s, p x :=
principal_le_nhdsSet h
-nonrec theorem Filter.EventuallyEq.self_of_nhdsSet {f g : Ξ± β Ξ²} (h : f =αΆ [πΛ’ s] g) : EqOn f g s :=
+nonrec theorem Filter.EventuallyEq.self_of_nhdsSet {f g : X β Y} (h : f =αΆ [πΛ’ s] g) : EqOn f g s :=
h.self_of_nhdsSet
@[simp]
@@ -128,14 +128,14 @@ theorem mem_nhdsSet_interior : s β πΛ’ (interior s) :=
#align mem_nhds_set_interior mem_nhdsSet_interior
@[simp]
-theorem nhdsSet_empty : πΛ’ (β
: Set Ξ±) = β₯ := by rw [isOpen_empty.nhdsSet_eq, principal_empty]
+theorem nhdsSet_empty : πΛ’ (β
: Set X) = β₯ := by rw [isOpen_empty.nhdsSet_eq, principal_empty]
#align nhds_set_empty nhdsSet_empty
-theorem mem_nhdsSet_empty : s β πΛ’ (β
: Set Ξ±) := by simp
+theorem mem_nhdsSet_empty : s β πΛ’ (β
: Set X) := by simp
#align mem_nhds_set_empty mem_nhdsSet_empty
@[simp]
-theorem nhdsSet_univ : πΛ’ (univ : Set Ξ±) = β€ := by rw [isOpen_univ.nhdsSet_eq, principal_univ]
+theorem nhdsSet_univ : πΛ’ (univ : Set X) = β€ := by rw [isOpen_univ.nhdsSet_eq, principal_univ]
#align nhds_set_univ nhdsSet_univ
@[mono]
@@ -143,7 +143,7 @@ theorem nhdsSet_mono (h : s β t) : πΛ’ s β€ πΛ’ t :=
sSup_le_sSup <| image_subset _ h
#align nhds_set_mono nhdsSet_mono
-theorem monotone_nhdsSet : Monotone (πΛ’ : Set Ξ± β Filter Ξ±) := fun _ _ => nhdsSet_mono
+theorem monotone_nhdsSet : Monotone (πΛ’ : Set X β Filter X) := fun _ _ => nhdsSet_mono
#align monotone_nhds_set monotone_nhdsSet
theorem nhds_le_nhdsSet (h : x β s) : π x β€ πΛ’ s :=
@@ -151,7 +151,7 @@ theorem nhds_le_nhdsSet (h : x β s) : π x β€ πΛ’ s :=
#align nhds_le_nhds_set nhds_le_nhdsSet
@[simp]
-theorem nhdsSet_union (s t : Set Ξ±) : πΛ’ (s βͺ t) = πΛ’ s β πΛ’ t := by
+theorem nhdsSet_union (s t : Set X) : πΛ’ (s βͺ t) = πΛ’ s β πΛ’ t := by
simp only [nhdsSet, image_union, sSup_union]
#align nhds_set_union nhdsSet_union
@@ -161,19 +161,19 @@ theorem union_mem_nhdsSet (hβ : sβ β πΛ’ tβ) (hβ : sβ β πΛ’
#align union_mem_nhds_set union_mem_nhdsSet
@[simp]
-theorem nhdsSet_insert (x : Ξ±) (s : Set Ξ±) : πΛ’ (insert x s) = π x β πΛ’ s := by
+theorem nhdsSet_insert (x : X) (s : Set X) : πΛ’ (insert x s) = π x β πΛ’ s := by
rw [insert_eq, nhdsSet_union, nhdsSet_singleton]
/-- Preimage of a set neighborhood of `t` under a continuous map `f` is a set neighborhood of `s`
provided that `f` maps `s` to `t`. -/
-theorem Continuous.tendsto_nhdsSet {f : Ξ± β Ξ²} {t : Set Ξ²} (hf : Continuous f)
+theorem Continuous.tendsto_nhdsSet {f : X β Y} {t : Set Y} (hf : Continuous f)
(hst : MapsTo f s t) : Tendsto f (πΛ’ s) (πΛ’ t) :=
((hasBasis_nhdsSet s).tendsto_iff (hasBasis_nhdsSet t)).mpr fun U hU =>
β¨f β»ΒΉ' U, β¨hU.1.preimage hf, hst.mono Subset.rfl hU.2β©, fun _ => idβ©
#align continuous.tendsto_nhds_set Continuous.tendsto_nhdsSet
-lemma Continuous.tendsto_nhdsSet_nhds {X Y : Type*} [TopologicalSpace X] [TopologicalSpace Y]
- {s : Set X} {y : Y} {f : X β Y} (h : Continuous f) (h' : EqOn f (fun _ β¦ y) s) :
+lemma Continuous.tendsto_nhdsSet_nhds
+ {y : Y} {f : X β Y} (h : Continuous f) (h' : EqOn f (fun _ β¦ y) s) :
Tendsto f (πΛ’ s) (π y) := by
rw [β nhdsSet_singleton]
exact h.tendsto_nhdsSet h'
@@ -175,5 +175,5 @@ theorem Continuous.tendsto_nhdsSet {f : Ξ± β Ξ²} {t : Set Ξ²} (hf : Continuous
lemma Continuous.tendsto_nhdsSet_nhds {X Y : Type*} [TopologicalSpace X] [TopologicalSpace Y]
{s : Set X} {y : Y} {f : X β Y} (h : Continuous f) (h' : EqOn f (fun _ β¦ y) s) :
Tendsto f (πΛ’ s) (π y) := by
- rw [βnhdsSet_singleton]
+ rw [β nhdsSet_singleton]
exact h.tendsto_nhdsSet h'
CompletelyRegularSpace
(#7926)
Add definitions CompletelyRegularSpace
and T35Space
.
@@ -171,3 +171,9 @@ theorem Continuous.tendsto_nhdsSet {f : Ξ± β Ξ²} {t : Set Ξ²} (hf : Continuous
((hasBasis_nhdsSet s).tendsto_iff (hasBasis_nhdsSet t)).mpr fun U hU =>
β¨f β»ΒΉ' U, β¨hU.1.preimage hf, hst.mono Subset.rfl hU.2β©, fun _ => idβ©
#align continuous.tendsto_nhds_set Continuous.tendsto_nhdsSet
+
+lemma Continuous.tendsto_nhdsSet_nhds {X Y : Type*} [TopologicalSpace X] [TopologicalSpace Y]
+ {s : Set X} {y : Y} {f : X β Y} (h : Continuous f) (h' : EqOn f (fun _ β¦ y) s) :
+ Tendsto f (πΛ’ s) (π y) := by
+ rw [βnhdsSet_singleton]
+ exact h.tendsto_nhdsSet h'
@@ -71,6 +71,17 @@ theorem mem_nhdsSet_iff_exists : s β πΛ’ t β β U : Set Ξ±, IsOpen U β§
rw [β subset_interior_iff_mem_nhdsSet, subset_interior_iff]
#align mem_nhds_set_iff_exists mem_nhdsSet_iff_exists
+/-- A proposition is true on a set neighborhood of `s` iff it is true on a larger open set -/
+theorem eventually_nhdsSet_iff_exists {p : Ξ± β Prop} :
+ (βαΆ x in πΛ’ s, p x) β β t, IsOpen t β§ s β t β§ β x, x β t β p x :=
+ mem_nhdsSet_iff_exists
+
+/-- A proposition is true on a set neighborhood of `s`
+iff it is eventually true near each point in the set. -/
+theorem eventually_nhdsSet_iff_forall {p : Ξ± β Prop} :
+ (βαΆ x in πΛ’ s, p x) β β x, x β s β βαΆ y in π x, p y :=
+ mem_nhdsSet_iff_forall
+
theorem hasBasis_nhdsSet (s : Set Ξ±) : (πΛ’ s).HasBasis (fun U => IsOpen U β§ s β U) fun U => U :=
β¨fun t => by simp [mem_nhdsSet_iff_exists, and_assoc]β©
#align has_basis_nhds_set hasBasis_nhdsSet
@@ -79,6 +90,9 @@ theorem IsOpen.mem_nhdsSet (hU : IsOpen s) : s β πΛ’ t β t β s := by
rw [β subset_interior_iff_mem_nhdsSet, hU.interior_eq]
#align is_open.mem_nhds_set IsOpen.mem_nhdsSet
+/-- An open set belongs to its own set neighborhoods filter. -/
+theorem IsOpen.mem_nhdsSet_self (ho : IsOpen s) : s β πΛ’ s := ho.mem_nhdsSet.mpr Subset.rfl
+
theorem principal_le_nhdsSet : π s β€ πΛ’ s := fun _s hs =>
(subset_interior_iff_mem_nhdsSet.mpr hs).trans interior_subset
#align principal_le_nhds_set principal_le_nhdsSet
In an Alexandrov-discrete space, every set has a smallest neighborhood. We call this neighborhood the exterior of the set. It is completely analogous to the interior, except that all inclusions are reversed.
@@ -29,7 +29,8 @@ Furthermore, we have the following results:
open Set Filter Topology
-variable {Ξ± Ξ² : Type*} [TopologicalSpace Ξ±] [TopologicalSpace Ξ²] {s t sβ sβ tβ tβ : Set Ξ±} {x : Ξ±}
+variable {Ξ± Ξ² : Type*} [TopologicalSpace Ξ±] [TopologicalSpace Ξ²] {f : Filter Ξ±}
+ {s t sβ sβ tβ tβ : Set Ξ±} {x : Ξ±}
/-- The filter of neighborhoods of a set in a topological space. -/
def nhdsSet (s : Set Ξ±) : Filter Ξ± :=
@@ -48,6 +49,8 @@ theorem mem_nhdsSet_iff_forall : s β πΛ’ t β β x : Ξ±, x β t β s
simp_rw [nhdsSet, Filter.mem_sSup, ball_image_iff]
#align mem_nhds_set_iff_forall mem_nhdsSet_iff_forall
+lemma nhdsSet_le : πΛ’ s β€ f β β a β s, π a β€ f := by simp [nhdsSet]
+
theorem bUnion_mem_nhdsSet {t : Ξ± β Set Ξ±} (h : β x β s, t x β π x) : (β x β s, t x) β πΛ’ s :=
mem_nhdsSet_iff_forall.2 fun x hx => mem_of_superset (h x hx) <|
subset_iUnionβ (s := fun x _ => t x) x hx -- porting note: fails to find `s`
@@ -94,7 +94,7 @@ theorem nhdsSet_eq_principal_iff : πΛ’ s = π s β IsOpen s := by
isOpen_iff_mem_nhds]
#align nhds_set_eq_principal_iff nhdsSet_eq_principal_iff
-alias nhdsSet_eq_principal_iff β _ IsOpen.nhdsSet_eq
+alias β¨_, IsOpen.nhdsSet_eqβ© := nhdsSet_eq_principal_iff
#align is_open.nhds_set_eq IsOpen.nhdsSet_eq
@[simp]
Filter.Eventually.self_of_nhdsSet
(#6497)
Also add subset_of_mem_nhdsSet
.
From the Sphere Eversion Project.
@@ -80,6 +80,14 @@ theorem principal_le_nhdsSet : π s β€ πΛ’ s := fun _s hs =>
(subset_interior_iff_mem_nhdsSet.mpr hs).trans interior_subset
#align principal_le_nhds_set principal_le_nhdsSet
+theorem subset_of_mem_nhdsSet (h : t β πΛ’ s) : s β t := principal_le_nhdsSet h
+
+theorem Filter.Eventually.self_of_nhdsSet {p : Ξ± β Prop} (h : βαΆ x in πΛ’ s, p x) : β x β s, p x :=
+ principal_le_nhdsSet h
+
+nonrec theorem Filter.EventuallyEq.self_of_nhdsSet {f g : Ξ± β Ξ²} (h : f =αΆ [πΛ’ s] g) : EqOn f g s :=
+ h.self_of_nhdsSet
+
@[simp]
theorem nhdsSet_eq_principal_iff : πΛ’ s = π s β IsOpen s := by
rw [β principal_le_nhdsSet.le_iff_eq, le_principal_iff, mem_nhdsSet_iff_forall,
@@ -95,9 +103,7 @@ theorem nhdsSet_interior : πΛ’ (interior s) = π (interior s) :=
#align nhds_set_interior nhdsSet_interior
@[simp]
-theorem nhdsSet_singleton : πΛ’ {x} = π x := by
- ext
- rw [β subset_interior_iff_mem_nhdsSet, β mem_interior_iff_mem_nhds, singleton_subset_iff]
+theorem nhdsSet_singleton : πΛ’ {x} = π x := by simp [nhdsSet]
#align nhds_set_singleton nhdsSet_singleton
theorem mem_nhdsSet_interior : s β πΛ’ (interior s) :=
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -29,7 +29,7 @@ Furthermore, we have the following results:
open Set Filter Topology
-variable {Ξ± Ξ² : Type _} [TopologicalSpace Ξ±] [TopologicalSpace Ξ²] {s t sβ sβ tβ tβ : Set Ξ±} {x : Ξ±}
+variable {Ξ± Ξ² : Type*} [TopologicalSpace Ξ±] [TopologicalSpace Ξ²] {s t sβ sβ tβ tβ : Set Ξ±} {x : Ξ±}
/-- The filter of neighborhoods of a set in a topological space. -/
def nhdsSet (s : Set Ξ±) : Filter Ξ± :=
Prove lemmas about neighborhoods of intervals.
Some lemmas are TC-generalizations of lemmas from the Sphere Eversion Project.
@@ -137,6 +137,10 @@ theorem union_mem_nhdsSet (hβ : sβ β πΛ’ tβ) (hβ : sβ β πΛ’
exact union_mem_sup hβ hβ
#align union_mem_nhds_set union_mem_nhdsSet
+@[simp]
+theorem nhdsSet_insert (x : Ξ±) (s : Set Ξ±) : πΛ’ (insert x s) = π x β πΛ’ s := by
+ rw [insert_eq, nhdsSet_union, nhdsSet_singleton]
+
/-- Preimage of a set neighborhood of `t` under a continuous map `f` is a set neighborhood of `s`
provided that `f` maps `s` to `t`. -/
theorem Continuous.tendsto_nhdsSet {f : Ξ± β Ξ²} {t : Set Ξ²} (hf : Continuous f)
@@ -2,14 +2,11 @@
Copyright (c) 2022 Floris van Doorn. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Floris van Doorn, Patrick Massot
-
-! This file was ported from Lean 3 source module topology.nhds_set
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Topology.Basic
+#align_import topology.nhds_set from "leanprover-community/mathlib"@"f2ce6086713c78a7f880485f7917ea547a215982"
+
/-!
# Neighborhoods of a set
sSup
/iSup
(#3938)
As discussed on Zulip
supβ
β sSup
infβ
β sInf
supα΅’
β iSup
infα΅’
β iInf
bsupβ
β bsSup
binfβ
β bsInf
bsupα΅’
β biSup
binfα΅’
β biInf
csupβ
β csSup
cinfβ
β csInf
csupα΅’
β ciSup
cinfα΅’
β ciInf
unionβ
β sUnion
interβ
β sInter
unionα΅’
β iUnion
interα΅’
β iInter
bunionβ
β bsUnion
binterβ
β bsInter
bunionα΅’
β biUnion
binterα΅’
β biInter
Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>
@@ -36,7 +36,7 @@ variable {Ξ± Ξ² : Type _} [TopologicalSpace Ξ±] [TopologicalSpace Ξ²] {s t sβ
/-- The filter of neighborhoods of a set in a topological space. -/
def nhdsSet (s : Set Ξ±) : Filter Ξ± :=
- supβ (nhds '' s)
+ sSup (nhds '' s)
#align nhds_set nhdsSet
@[inherit_doc] scoped[Topology] notation "πΛ’" => nhdsSet
@@ -48,12 +48,12 @@ theorem nhdsSet_diagonal (Ξ±) [TopologicalSpace (Ξ± Γ Ξ±)] :
#align nhds_set_diagonal nhdsSet_diagonal
theorem mem_nhdsSet_iff_forall : s β πΛ’ t β β x : Ξ±, x β t β s β π x := by
- simp_rw [nhdsSet, Filter.mem_supβ, ball_image_iff]
+ simp_rw [nhdsSet, Filter.mem_sSup, ball_image_iff]
#align mem_nhds_set_iff_forall mem_nhdsSet_iff_forall
theorem bUnion_mem_nhdsSet {t : Ξ± β Set Ξ±} (h : β x β s, t x β π x) : (β x β s, t x) β πΛ’ s :=
mem_nhdsSet_iff_forall.2 fun x hx => mem_of_superset (h x hx) <|
- subset_unionα΅’β (s := fun x _ => t x) x hx -- porting note: fails to find `s`
+ subset_iUnionβ (s := fun x _ => t x) x hx -- porting note: fails to find `s`
#align bUnion_mem_nhds_set bUnion_mem_nhdsSet
theorem subset_interior_iff_mem_nhdsSet : s β interior t β t β πΛ’ s := by
@@ -120,19 +120,19 @@ theorem nhdsSet_univ : πΛ’ (univ : Set Ξ±) = β€ := by rw [isOpen_univ.nhdsSe
@[mono]
theorem nhdsSet_mono (h : s β t) : πΛ’ s β€ πΛ’ t :=
- supβ_le_supβ <| image_subset _ h
+ sSup_le_sSup <| image_subset _ h
#align nhds_set_mono nhdsSet_mono
theorem monotone_nhdsSet : Monotone (πΛ’ : Set Ξ± β Filter Ξ±) := fun _ _ => nhdsSet_mono
#align monotone_nhds_set monotone_nhdsSet
theorem nhds_le_nhdsSet (h : x β s) : π x β€ πΛ’ s :=
- le_supβ <| mem_image_of_mem _ h
+ le_sSup <| mem_image_of_mem _ h
#align nhds_le_nhds_set nhds_le_nhdsSet
@[simp]
theorem nhdsSet_union (s t : Set Ξ±) : πΛ’ (s βͺ t) = πΛ’ s β πΛ’ t := by
- simp only [nhdsSet, image_union, supβ_union]
+ simp only [nhdsSet, image_union, sSup_union]
#align nhds_set_union nhdsSet_union
theorem union_mem_nhdsSet (hβ : sβ β πΛ’ tβ) (hβ : sβ β πΛ’ tβ) : sβ βͺ sβ β πΛ’ (tβ βͺ tβ) := by
@@ -147,4 +147,3 @@ theorem Continuous.tendsto_nhdsSet {f : Ξ± β Ξ²} {t : Set Ξ²} (hf : Continuous
((hasBasis_nhdsSet s).tendsto_iff (hasBasis_nhdsSet t)).mpr fun U hU =>
β¨f β»ΒΉ' U, β¨hU.1.preimage hf, hst.mono Subset.rfl hU.2β©, fun _ => idβ©
#align continuous.tendsto_nhds_set Continuous.tendsto_nhdsSet
-
@@ -60,6 +60,13 @@ theorem subset_interior_iff_mem_nhdsSet : s β interior t β t β πΛ’ s :=
simp_rw [mem_nhdsSet_iff_forall, subset_interior_iff_nhds]
#align subset_interior_iff_mem_nhds_set subset_interior_iff_mem_nhdsSet
+theorem disjoint_principal_nhdsSet : Disjoint (π s) (πΛ’ t) β Disjoint (closure s) t := by
+ rw [disjoint_principal_left, β subset_interior_iff_mem_nhdsSet, interior_compl,
+ subset_compl_iff_disjoint_left]
+
+theorem disjoint_nhdsSet_principal : Disjoint (πΛ’ s) (π t) β Disjoint s (closure t) := by
+ rw [disjoint_comm, disjoint_principal_nhdsSet, disjoint_comm]
+
theorem mem_nhdsSet_iff_exists : s β πΛ’ t β β U : Set Ξ±, IsOpen U β§ t β U β§ U β s := by
rw [β subset_interior_iff_mem_nhdsSet, subset_interior_iff]
#align mem_nhds_set_iff_exists mem_nhdsSet_iff_exists
@@ -111,7 +111,7 @@ theorem mem_nhdsSet_empty : s β πΛ’ (β
: Set Ξ±) := by simp
theorem nhdsSet_univ : πΛ’ (univ : Set Ξ±) = β€ := by rw [isOpen_univ.nhdsSet_eq, principal_univ]
#align nhds_set_univ nhdsSet_univ
--- porting note: todo: restore @[mono]
+@[mono]
theorem nhdsSet_mono (h : s β t) : πΛ’ s β€ πΛ’ t :=
supβ_le_supβ <| image_subset _ h
#align nhds_set_mono nhdsSet_mono
This PR resyncs the first 28 entries of https://leanprover-community.github.io/mathlib-port-status/out-of-sync.html after sorting by diff size.
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Floris van Doorn, Patrick Massot
! This file was ported from Lean 3 source module topology.nhds_set
-! leanprover-community/mathlib commit f7fc89d5d5ff1db2d1242c7bb0e9062ce47ef47c
+! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
The unported dependencies are