data.analysis.topology
⟷
Mathlib.Data.Analysis.Topology
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)
(last sync)
𝓝[⋃ i, s i] a
(#18321)
Add theorem nhds_within_eq_nhds
, nhds_within_bUnion
, nhds_within_sUnion
, nhds_within_Union
, nhds_within_inter_of_mem'
.
Add locally_finite.nhds_within_Union
, use it to golf locally_finite.is_closed_Union
and locally_finite.closure_Union
.
Reformulate continuous_subtype_nhds_cover
in terms of continuous_on
, rename to continuous_of_cover_nhds
.
Reformulate continuous_subtype_is_closed_cover
in terms of continuous_on
, several versions are named locally_finite.continuous_on_Union
, locally_finite.continuous
, and primed versions of these lemmas.
Reorder imports.
Co-authored-by: Yaël Dillies <yael.dillies@gmail.com>
@@ -5,6 +5,7 @@ Authors: Mario Carneiro
-/
import data.analysis.filter
import topology.bases
+import topology.locally_finite
/-!
# Computational realization of topological spaces (experimental)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(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
@@ -175,7 +175,7 @@ theorem isClosed_iff [TopologicalSpace α] (F : Realizer α) {s : Set α} :
forall_congr' fun a =>
show (a ∉ s → ∃ b : F.σ, a ∈ F.f b ∧ ∀ z ∈ F.f b, z ∉ s) ↔ _ by
haveI := Classical.propDecidable <;> rw [not_imp_comm] <;>
- simp [not_exists, not_and, Classical.not_forall, and_comm']
+ simp [not_exists, not_and, Classical.not_forall, and_comm]
#align ctop.realizer.is_closed_iff Ctop.Realizer.isClosed_iff
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -163,7 +163,7 @@ protected theorem mem_nhds [T : TopologicalSpace α] (F : Realizer α) {s : Set
#print Ctop.Realizer.isOpen_iff /-
theorem isOpen_iff [TopologicalSpace α] (F : Realizer α) {s : Set α} :
IsOpen s ↔ ∀ a ∈ s, ∃ b, a ∈ F.f b ∧ F.f b ⊆ s :=
- isOpen_iff_mem_nhds.trans <| ball_congr fun a h => F.mem_nhds
+ isOpen_iff_mem_nhds.trans <| forall₂_congr fun a h => F.mem_nhds
#align ctop.realizer.is_open_iff Ctop.Realizer.isOpen_iff
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -196,7 +196,7 @@ protected theorem isOpen [TopologicalSpace α] (F : Realizer α) (s : F.σ) : Is
theorem ext' [T : TopologicalSpace α] {σ : Type _} {F : Ctop α σ}
(H : ∀ a s, s ∈ 𝓝 a ↔ ∃ b, a ∈ F b ∧ F b ⊆ s) : F.toTopsp = T :=
by
- refine' eq_of_nhds_eq_nhds fun x => _
+ refine' TopologicalSpace.ext_nhds fun x => _
ext s
rw [mem_nhds_to_topsp, H]
#align ctop.realizer.ext' Ctop.Realizer.ext'
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -150,13 +150,13 @@ namespace Ctop.Realizer
#print Ctop.Realizer.is_basis /-
protected theorem is_basis [T : TopologicalSpace α] (F : Realizer α) :
TopologicalSpace.IsTopologicalBasis (Set.range F.f.f) := by
- have := to_topsp_is_topological_basis F.F <;> rwa [F.eq] at this
+ have := to_topsp_is_topological_basis F.F <;> rwa [F.eq] at this
#align ctop.realizer.is_basis Ctop.Realizer.is_basis
-/
#print Ctop.Realizer.mem_nhds /-
protected theorem mem_nhds [T : TopologicalSpace α] (F : Realizer α) {s : Set α} {a : α} :
- s ∈ 𝓝 a ↔ ∃ b, a ∈ F.f b ∧ F.f b ⊆ s := by have := mem_nhds_to_topsp F.F <;> rwa [F.eq] at this
+ s ∈ 𝓝 a ↔ ∃ b, a ∈ F.f b ∧ F.f b ⊆ s := by have := mem_nhds_to_topsp F.F <;> rwa [F.eq] at this
#align ctop.realizer.mem_nhds Ctop.Realizer.mem_nhds
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/b1abe23ae96fef89ad30d9f4362c307f72a55010
@@ -175,7 +175,7 @@ theorem isClosed_iff [TopologicalSpace α] (F : Realizer α) {s : Set α} :
forall_congr' fun a =>
show (a ∉ s → ∃ b : F.σ, a ∈ F.f b ∧ ∀ z ∈ F.f b, z ∉ s) ↔ _ by
haveI := Classical.propDecidable <;> rw [not_imp_comm] <;>
- simp [not_exists, not_and, not_forall, and_comm']
+ simp [not_exists, not_and, Classical.not_forall, and_comm']
#align ctop.realizer.is_closed_iff Ctop.Realizer.isClosed_iff
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,9 +3,9 @@ Copyright (c) 2017 Mario Carneiro. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Mario Carneiro
-/
-import Mathbin.Data.Analysis.Filter
-import Mathbin.Topology.Bases
-import Mathbin.Topology.LocallyFinite
+import Data.Analysis.Filter
+import Topology.Bases
+import Topology.LocallyFinite
#align_import data.analysis.topology from "leanprover-community/mathlib"@"55d771df074d0dd020139ee1cd4b95521422df9f"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,16 +2,13 @@
Copyright (c) 2017 Mario Carneiro. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Mario Carneiro
-
-! This file was ported from Lean 3 source module data.analysis.topology
-! leanprover-community/mathlib commit 55d771df074d0dd020139ee1cd4b95521422df9f
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Data.Analysis.Filter
import Mathbin.Topology.Bases
import Mathbin.Topology.LocallyFinite
+#align_import data.analysis.topology from "leanprover-community/mathlib"@"55d771df074d0dd020139ee1cd4b95521422df9f"
+
/-!
# Computational realization of topological spaces (experimental)
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -68,10 +68,12 @@ variable (F : Ctop α σ)
instance : CoeFun (Ctop α σ) fun _ => σ → Set α :=
⟨Ctop.f⟩
+#print Ctop.coe_mk /-
@[simp]
theorem coe_mk (f T h₁ I h₂ h₃ a) : (@Ctop.mk α σ f T h₁ I h₂ h₃) a = f a :=
rfl
#align ctop.coe_mk Ctop.coe_mk
+-/
#print Ctop.ofEquiv /-
/-- Map a ctop to an equivalent representation type. -/
@@ -86,10 +88,12 @@ def ofEquiv (E : σ ≃ τ) : Ctop α σ → Ctop α τ
#align ctop.of_equiv Ctop.ofEquiv
-/
+#print Ctop.ofEquiv_val /-
@[simp]
theorem ofEquiv_val (E : σ ≃ τ) (F : Ctop α σ) (a : τ) : F.of_equiv E a = F (E.symm a) := by
cases F <;> rfl
#align ctop.of_equiv_val Ctop.ofEquiv_val
+-/
end
@@ -100,6 +104,7 @@ def toTopsp (F : Ctop α σ) : TopologicalSpace α :=
#align ctop.to_topsp Ctop.toTopsp
-/
+#print Ctop.toTopsp_isTopologicalBasis /-
theorem toTopsp_isTopologicalBasis (F : Ctop α σ) :
@TopologicalSpace.IsTopologicalBasis _ F.toTopsp (Set.range F.f) :=
letI := F.to_topsp
@@ -107,7 +112,9 @@ theorem toTopsp_isTopologicalBasis (F : Ctop α σ) :
e₁ ▸ e₂ ▸ fun x h => ⟨_, ⟨_, rfl⟩, F.inter_mem a b x h, F.inter_sub a b x h⟩,
eq_univ_iff_forall.2 fun x => ⟨_, ⟨_, rfl⟩, F.top_mem x⟩, rfl⟩
#align ctop.to_topsp_is_topological_basis Ctop.toTopsp_isTopologicalBasis
+-/
+#print Ctop.mem_nhds_toTopsp /-
@[simp]
theorem mem_nhds_toTopsp (F : Ctop α σ) {s : Set α} {a : α} :
s ∈ @nhds _ F.toTopsp a ↔ ∃ b, a ∈ F b ∧ F b ⊆ s :=
@@ -115,6 +122,7 @@ theorem mem_nhds_toTopsp (F : Ctop α σ) {s : Set α} {a : α} :
F.toTopsp_isTopologicalBasis).trans <|
⟨fun ⟨_, ⟨x, rfl⟩, h⟩ => ⟨x, h⟩, fun ⟨x, h⟩ => ⟨_, ⟨x, rfl⟩, h⟩⟩
#align ctop.mem_nhds_to_topsp Ctop.mem_nhds_toTopsp
+-/
end Ctop
@@ -142,20 +150,27 @@ instance (F : Ctop α σ) : Inhabited (@Ctop.Realizer _ F.toTopsp) :=
namespace Ctop.Realizer
+#print Ctop.Realizer.is_basis /-
protected theorem is_basis [T : TopologicalSpace α] (F : Realizer α) :
TopologicalSpace.IsTopologicalBasis (Set.range F.f.f) := by
have := to_topsp_is_topological_basis F.F <;> rwa [F.eq] at this
#align ctop.realizer.is_basis Ctop.Realizer.is_basis
+-/
+#print Ctop.Realizer.mem_nhds /-
protected theorem mem_nhds [T : TopologicalSpace α] (F : Realizer α) {s : Set α} {a : α} :
s ∈ 𝓝 a ↔ ∃ b, a ∈ F.f b ∧ F.f b ⊆ s := by have := mem_nhds_to_topsp F.F <;> rwa [F.eq] at this
#align ctop.realizer.mem_nhds Ctop.Realizer.mem_nhds
+-/
+#print Ctop.Realizer.isOpen_iff /-
theorem isOpen_iff [TopologicalSpace α] (F : Realizer α) {s : Set α} :
IsOpen s ↔ ∀ a ∈ s, ∃ b, a ∈ F.f b ∧ F.f b ⊆ s :=
isOpen_iff_mem_nhds.trans <| ball_congr fun a h => F.mem_nhds
#align ctop.realizer.is_open_iff Ctop.Realizer.isOpen_iff
+-/
+#print Ctop.Realizer.isClosed_iff /-
theorem isClosed_iff [TopologicalSpace α] (F : Realizer α) {s : Set α} :
IsClosed s ↔ ∀ a, (∀ b, a ∈ F.f b → ∃ z, z ∈ F.f b ∩ s) → a ∈ s :=
isOpen_compl_iff.symm.trans <|
@@ -165,16 +180,22 @@ theorem isClosed_iff [TopologicalSpace α] (F : Realizer α) {s : Set α} :
haveI := Classical.propDecidable <;> rw [not_imp_comm] <;>
simp [not_exists, not_and, not_forall, and_comm']
#align ctop.realizer.is_closed_iff Ctop.Realizer.isClosed_iff
+-/
+#print Ctop.Realizer.mem_interior_iff /-
theorem mem_interior_iff [TopologicalSpace α] (F : Realizer α) {s : Set α} {a : α} :
a ∈ interior s ↔ ∃ b, a ∈ F.f b ∧ F.f b ⊆ s :=
mem_interior_iff_mem_nhds.trans F.mem_nhds
#align ctop.realizer.mem_interior_iff Ctop.Realizer.mem_interior_iff
+-/
+#print Ctop.Realizer.isOpen /-
protected theorem isOpen [TopologicalSpace α] (F : Realizer α) (s : F.σ) : IsOpen (F.f s) :=
isOpen_iff_nhds.2 fun a m => by simpa using F.mem_nhds.2 ⟨s, m, subset.refl _⟩
#align ctop.realizer.is_open Ctop.Realizer.isOpen
+-/
+#print Ctop.Realizer.ext' /-
theorem ext' [T : TopologicalSpace α] {σ : Type _} {F : Ctop α σ}
(H : ∀ a s, s ∈ 𝓝 a ↔ ∃ b, a ∈ F b ∧ F b ⊆ s) : F.toTopsp = T :=
by
@@ -182,11 +203,14 @@ theorem ext' [T : TopologicalSpace α] {σ : Type _} {F : Ctop α σ}
ext s
rw [mem_nhds_to_topsp, H]
#align ctop.realizer.ext' Ctop.Realizer.ext'
+-/
+#print Ctop.Realizer.ext /-
theorem ext [T : TopologicalSpace α] {σ : Type _} {F : Ctop α σ} (H₁ : ∀ a, IsOpen (F a))
(H₂ : ∀ a s, s ∈ 𝓝 a → ∃ b, a ∈ F b ∧ F b ⊆ s) : F.toTopsp = T :=
ext' fun a s => ⟨H₂ a s, fun ⟨b, h₁, h₂⟩ => mem_nhds_iff.2 ⟨_, h₂, H₁ _, h₁⟩⟩
#align ctop.realizer.ext Ctop.Realizer.ext
+-/
variable [TopologicalSpace α]
@@ -216,15 +240,19 @@ def ofEquiv (F : Realizer α) (E : F.σ ≃ τ) : Realizer α :=
#align ctop.realizer.of_equiv Ctop.Realizer.ofEquiv
-/
+#print Ctop.Realizer.ofEquiv_σ /-
@[simp]
theorem ofEquiv_σ (F : Realizer α) (E : F.σ ≃ τ) : (F.of_equiv E).σ = τ :=
rfl
#align ctop.realizer.of_equiv_σ Ctop.Realizer.ofEquiv_σ
+-/
+#print Ctop.Realizer.ofEquiv_F /-
@[simp]
theorem ofEquiv_F (F : Realizer α) (E : F.σ ≃ τ) (s : τ) : (F.of_equiv E).f s = F.f (E.symm s) := by
delta of_equiv <;> simp
#align ctop.realizer.of_equiv_F Ctop.Realizer.ofEquiv_F
+-/
#print Ctop.Realizer.nhds /-
/-- A realizer of the neighborhood of a point. -/
@@ -243,20 +271,26 @@ protected def nhds (F : Realizer α) (a : α) : (𝓝 a).Realizer :=
#align ctop.realizer.nhds Ctop.Realizer.nhds
-/
+#print Ctop.Realizer.nhds_σ /-
@[simp]
theorem nhds_σ (F : Realizer α) (a : α) : (F.nhds a).σ = { s : F.σ // a ∈ F.f s } :=
rfl
#align ctop.realizer.nhds_σ Ctop.Realizer.nhds_σ
+-/
+#print Ctop.Realizer.nhds_F /-
@[simp]
theorem nhds_F (F : Realizer α) (a : α) (s) : (F.nhds a).f s = F.f s.1 :=
rfl
#align ctop.realizer.nhds_F Ctop.Realizer.nhds_F
+-/
+#print Ctop.Realizer.tendsto_nhds_iff /-
theorem tendsto_nhds_iff {m : β → α} {f : Filter β} (F : f.Realizer) (R : Realizer α) {a : α} :
Tendsto m f (𝓝 a) ↔ ∀ t, a ∈ R.f t → ∃ s, ∀ x ∈ F.f s, m x ∈ R.f t :=
(F.tendsto_iffₓ _ (R.nhds a)).trans Subtype.forall
#align ctop.realizer.tendsto_nhds_iff Ctop.Realizer.tendsto_nhds_iff
+-/
end Ctop.Realizer
@@ -270,11 +304,14 @@ structure LocallyFinite.Realizer [TopologicalSpace α] (F : Realizer α) (f : β
#align locally_finite.realizer LocallyFinite.Realizer
-/
+#print LocallyFinite.Realizer.to_locallyFinite /-
theorem LocallyFinite.Realizer.to_locallyFinite [TopologicalSpace α] {F : Realizer α}
{f : β → Set α} (R : LocallyFinite.Realizer F f) : LocallyFinite f := fun a =>
⟨_, F.mem_nhds.2 ⟨(R.bas a).1, (R.bas a).2, Subset.refl _⟩, ⟨R.sets a⟩⟩
#align locally_finite.realizer.to_locally_finite LocallyFinite.Realizer.to_locallyFinite
+-/
+#print locallyFinite_iff_exists_realizer /-
theorem locallyFinite_iff_exists_realizer [TopologicalSpace α] (F : Realizer α) {f : β → Set α} :
LocallyFinite f ↔ Nonempty (LocallyFinite.Realizer F f) :=
⟨fun h =>
@@ -290,6 +327,7 @@ theorem locallyFinite_iff_exists_realizer [TopologicalSpace α] (F : Realizer α
h'.Subset fun i hi => hi.mono (inter_subset_inter_right _ (h₂ x).2)⟩⟩,
fun ⟨R⟩ => R.to_locallyFinite⟩
#align locally_finite_iff_exists_realizer locallyFinite_iff_exists_realizer
+-/
instance [TopologicalSpace α] [Finite β] (F : Realizer α) (f : β → Set α) :
Nonempty (LocallyFinite.Realizer F f) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -266,7 +266,7 @@ choice of open sets from the basis of `F` such that they intersect only finitely
of `f`. -/
structure LocallyFinite.Realizer [TopologicalSpace α] (F : Realizer α) (f : β → Set α) where
bas : ∀ a, { s // a ∈ F.f s }
- sets : ∀ x : α, Fintype { i | (f i ∩ F.f (bas x)).Nonempty }
+ sets : ∀ x : α, Fintype {i | (f i ∩ F.f (bas x)).Nonempty}
#align locally_finite.realizer LocallyFinite.Realizer
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -144,11 +144,11 @@ namespace Ctop.Realizer
protected theorem is_basis [T : TopologicalSpace α] (F : Realizer α) :
TopologicalSpace.IsTopologicalBasis (Set.range F.f.f) := by
- have := to_topsp_is_topological_basis F.F <;> rwa [F.eq] at this
+ have := to_topsp_is_topological_basis F.F <;> rwa [F.eq] at this
#align ctop.realizer.is_basis Ctop.Realizer.is_basis
protected theorem mem_nhds [T : TopologicalSpace α] (F : Realizer α) {s : Set α} {a : α} :
- s ∈ 𝓝 a ↔ ∃ b, a ∈ F.f b ∧ F.f b ⊆ s := by have := mem_nhds_to_topsp F.F <;> rwa [F.eq] at this
+ s ∈ 𝓝 a ↔ ∃ b, a ∈ F.f b ∧ F.f b ⊆ s := by have := mem_nhds_to_topsp F.F <;> rwa [F.eq] at this
#align ctop.realizer.mem_nhds Ctop.Realizer.mem_nhds
theorem isOpen_iff [TopologicalSpace α] (F : Realizer α) {s : Set α} :
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -33,7 +33,7 @@ open Set
open Filter hiding Realizer
-open Topology
+open scoped Topology
#print Ctop /-
/-- A `ctop α σ` is a realization of a topology (basis) on `α`,
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -68,12 +68,6 @@ variable (F : Ctop α σ)
instance : CoeFun (Ctop α σ) fun _ => σ → Set α :=
⟨Ctop.f⟩
-/- warning: ctop.coe_mk -> Ctop.coe_mk is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {σ : Type.{u2}} (f : σ -> (Set.{u1} α)) (T : α -> σ) (h₁ : forall (x : α), Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (f (T x))) (I : forall (a : σ) (b : σ) (x : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (f a) (f b))) -> σ) (h₂ : forall (a : σ) (b : σ) (x : α) (h : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (f a) (f b))), Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (f (I a b x h))) (h₃ : forall (a : σ) (b : σ) (x : α) (h : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (f a) (f b))), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (f (I a b x h)) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (f a) (f b))) (a : σ), Eq.{succ u1} (Set.{u1} α) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α σ) (fun (_x : Ctop.{u1, u2} α σ) => σ -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α σ) (Ctop.mk.{u1, u2} α σ f T h₁ I h₂ h₃) a) (f a)
-but is expected to have type
- forall {α : Type.{u2}} {σ : Type.{u1}} (f : σ -> (Set.{u2} α)) (T : α -> σ) (h₁ : forall (x : α), Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (f (T x))) (I : forall (a : σ) (b : σ) (x : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (f a) (f b))) -> σ) (h₂ : forall (a : σ) (b : σ) (x : α) (h : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (f a) (f b))), Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (f (I a b x h))) (h₃ : forall (a : σ) (b : σ) (x : α) (h : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (f a) (f b))), HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (f (I a b x h)) (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (f a) (f b))) (a : σ), Eq.{succ u2} (Set.{u2} α) (Ctop.f.{u2, u1} α σ (Ctop.mk.{u2, u1} α σ f T h₁ I h₂ h₃) a) (f a)
-Case conversion may be inaccurate. Consider using '#align ctop.coe_mk Ctop.coe_mkₓ'. -/
@[simp]
theorem coe_mk (f T h₁ I h₂ h₃ a) : (@Ctop.mk α σ f T h₁ I h₂ h₃) a = f a :=
rfl
@@ -92,12 +86,6 @@ def ofEquiv (E : σ ≃ τ) : Ctop α σ → Ctop α τ
#align ctop.of_equiv Ctop.ofEquiv
-/
-/- warning: ctop.of_equiv_val -> Ctop.ofEquiv_val is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {σ : Type.{u2}} {τ : Type.{u3}} (E : Equiv.{succ u2, succ u3} σ τ) (F : Ctop.{u1, u2} α σ) (a : τ), Eq.{succ u1} (Set.{u1} α) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (Ctop.{u1, u3} α τ) (fun (_x : Ctop.{u1, u3} α τ) => τ -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u3} α τ) (Ctop.ofEquiv.{u1, u2, u3} α σ τ E F) a) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α σ) (fun (_x : Ctop.{u1, u2} α σ) => σ -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α σ) F (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} τ σ) (fun (_x : Equiv.{succ u3, succ u2} τ σ) => τ -> σ) (Equiv.hasCoeToFun.{succ u3, succ u2} τ σ) (Equiv.symm.{succ u2, succ u3} σ τ E) a))
-but is expected to have type
- forall {α : Type.{u1}} {σ : Type.{u3}} {τ : Type.{u2}} (E : Equiv.{succ u3, succ u2} σ τ) (F : Ctop.{u1, u3} α σ) (a : τ), Eq.{succ u1} (Set.{u1} α) (Ctop.f.{u1, u2} α τ (Ctop.ofEquiv.{u1, u3, u2} α σ τ E F) a) (Ctop.f.{u1, u3} α σ F (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} τ σ) τ (fun (_x : τ) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : τ) => σ) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} τ σ) (Equiv.symm.{succ u3, succ u2} σ τ E) a))
-Case conversion may be inaccurate. Consider using '#align ctop.of_equiv_val Ctop.ofEquiv_valₓ'. -/
@[simp]
theorem ofEquiv_val (E : σ ≃ τ) (F : Ctop α σ) (a : τ) : F.of_equiv E a = F (E.symm a) := by
cases F <;> rfl
@@ -112,12 +100,6 @@ def toTopsp (F : Ctop α σ) : TopologicalSpace α :=
#align ctop.to_topsp Ctop.toTopsp
-/
-/- warning: ctop.to_topsp_is_topological_basis -> Ctop.toTopsp_isTopologicalBasis is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {σ : Type.{u2}} (F : Ctop.{u1, u2} α σ), TopologicalSpace.IsTopologicalBasis.{u1} α (Ctop.toTopsp.{u1, u2} α σ F) (Set.range.{u1, succ u2} (Set.{u1} α) σ (Ctop.f.{u1, u2} α σ F))
-but is expected to have type
- forall {α : Type.{u2}} {σ : Type.{u1}} (F : Ctop.{u2, u1} α σ), TopologicalSpace.IsTopologicalBasis.{u2} α (Ctop.toTopsp.{u2, u1} α σ F) (Set.range.{u2, succ u1} (Set.{u2} α) σ (Ctop.f.{u2, u1} α σ F))
-Case conversion may be inaccurate. Consider using '#align ctop.to_topsp_is_topological_basis Ctop.toTopsp_isTopologicalBasisₓ'. -/
theorem toTopsp_isTopologicalBasis (F : Ctop α σ) :
@TopologicalSpace.IsTopologicalBasis _ F.toTopsp (Set.range F.f) :=
letI := F.to_topsp
@@ -126,12 +108,6 @@ theorem toTopsp_isTopologicalBasis (F : Ctop α σ) :
eq_univ_iff_forall.2 fun x => ⟨_, ⟨_, rfl⟩, F.top_mem x⟩, rfl⟩
#align ctop.to_topsp_is_topological_basis Ctop.toTopsp_isTopologicalBasis
-/- warning: ctop.mem_nhds_to_topsp -> Ctop.mem_nhds_toTopsp is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {σ : Type.{u2}} (F : Ctop.{u1, u2} α σ) {s : Set.{u1} α} {a : α}, Iff (Membership.Mem.{u1, u1} (Set.{u1} α) (Filter.{u1} α) (Filter.hasMem.{u1} α) s (nhds.{u1} α (Ctop.toTopsp.{u1, u2} α σ F) a)) (Exists.{succ u2} σ (fun (b : σ) => And (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α σ) (fun (_x : Ctop.{u1, u2} α σ) => σ -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α σ) F b)) (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α σ) (fun (_x : Ctop.{u1, u2} α σ) => σ -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α σ) F b) s)))
-but is expected to have type
- forall {α : Type.{u2}} {σ : Type.{u1}} (F : Ctop.{u2, u1} α σ) {s : Set.{u2} α} {a : α}, Iff (Membership.mem.{u2, u2} (Set.{u2} α) (Filter.{u2} α) (instMembershipSetFilter.{u2} α) s (nhds.{u2} α (Ctop.toTopsp.{u2, u1} α σ F) a)) (Exists.{succ u1} σ (fun (b : σ) => And (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a (Ctop.f.{u2, u1} α σ F b)) (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Ctop.f.{u2, u1} α σ F b) s)))
-Case conversion may be inaccurate. Consider using '#align ctop.mem_nhds_to_topsp Ctop.mem_nhds_toTopspₓ'. -/
@[simp]
theorem mem_nhds_toTopsp (F : Ctop α σ) {s : Set α} {a : α} :
s ∈ @nhds _ F.toTopsp a ↔ ∃ b, a ∈ F b ∧ F b ⊆ s :=
@@ -166,44 +142,20 @@ instance (F : Ctop α σ) : Inhabited (@Ctop.Realizer _ F.toTopsp) :=
namespace Ctop.Realizer
-/- warning: ctop.realizer.is_basis -> Ctop.Realizer.is_basis is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [T : TopologicalSpace.{u1} α] (F : Ctop.Realizer.{u1, u2} α T), TopologicalSpace.IsTopologicalBasis.{u1} α T (Set.range.{u1, succ u2} (Set.{u1} α) (Ctop.Realizer.σ.{u1, u2} α T F) (Ctop.f.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α T F) (Ctop.Realizer.f.{u1, u2} α T F)))
-but is expected to have type
- forall {α : Type.{u2}} [T : TopologicalSpace.{u2} α] (F : Ctop.Realizer.{u2, u1} α T), TopologicalSpace.IsTopologicalBasis.{u2} α T (Set.range.{u2, succ u1} (Set.{u2} α) (Ctop.Realizer.σ.{u2, u1} α T F) (Ctop.f.{u2, u1} α (Ctop.Realizer.σ.{u2, u1} α T F) (Ctop.Realizer.F.{u2, u1} α T F)))
-Case conversion may be inaccurate. Consider using '#align ctop.realizer.is_basis Ctop.Realizer.is_basisₓ'. -/
protected theorem is_basis [T : TopologicalSpace α] (F : Realizer α) :
TopologicalSpace.IsTopologicalBasis (Set.range F.f.f) := by
have := to_topsp_is_topological_basis F.F <;> rwa [F.eq] at this
#align ctop.realizer.is_basis Ctop.Realizer.is_basis
-/- warning: ctop.realizer.mem_nhds -> Ctop.Realizer.mem_nhds is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [T : TopologicalSpace.{u1} α] (F : Ctop.Realizer.{u1, u2} α T) {s : Set.{u1} α} {a : α}, Iff (Membership.Mem.{u1, u1} (Set.{u1} α) (Filter.{u1} α) (Filter.hasMem.{u1} α) s (nhds.{u1} α T a)) (Exists.{succ u2} (Ctop.Realizer.σ.{u1, u2} α T F) (fun (b : Ctop.Realizer.σ.{u1, u2} α T F) => And (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α T F)) (fun (_x : Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α T F)) => (Ctop.Realizer.σ.{u1, u2} α T F) -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α T F)) (Ctop.Realizer.f.{u1, u2} α T F) b)) (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α T F)) (fun (_x : Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α T F)) => (Ctop.Realizer.σ.{u1, u2} α T F) -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α T F)) (Ctop.Realizer.f.{u1, u2} α T F) b) s)))
-but is expected to have type
- forall {α : Type.{u2}} [T : TopologicalSpace.{u2} α] (F : Ctop.Realizer.{u2, u1} α T) {s : Set.{u2} α} {a : α}, Iff (Membership.mem.{u2, u2} (Set.{u2} α) (Filter.{u2} α) (instMembershipSetFilter.{u2} α) s (nhds.{u2} α T a)) (Exists.{succ u1} (Ctop.Realizer.σ.{u2, u1} α T F) (fun (b : Ctop.Realizer.σ.{u2, u1} α T F) => And (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a (Ctop.f.{u2, u1} α (Ctop.Realizer.σ.{u2, u1} α T F) (Ctop.Realizer.F.{u2, u1} α T F) b)) (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Ctop.f.{u2, u1} α (Ctop.Realizer.σ.{u2, u1} α T F) (Ctop.Realizer.F.{u2, u1} α T F) b) s)))
-Case conversion may be inaccurate. Consider using '#align ctop.realizer.mem_nhds Ctop.Realizer.mem_nhdsₓ'. -/
protected theorem mem_nhds [T : TopologicalSpace α] (F : Realizer α) {s : Set α} {a : α} :
s ∈ 𝓝 a ↔ ∃ b, a ∈ F.f b ∧ F.f b ⊆ s := by have := mem_nhds_to_topsp F.F <;> rwa [F.eq] at this
#align ctop.realizer.mem_nhds Ctop.Realizer.mem_nhds
-/- warning: ctop.realizer.is_open_iff -> Ctop.Realizer.isOpen_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] (F : Ctop.Realizer.{u1, u2} α _inst_1) {s : Set.{u1} α}, Iff (IsOpen.{u1} α _inst_1 s) (forall (a : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) -> (Exists.{succ u2} (Ctop.Realizer.σ.{u1, u2} α _inst_1 F) (fun (b : Ctop.Realizer.σ.{u1, u2} α _inst_1 F) => And (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) (fun (_x : Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) => (Ctop.Realizer.σ.{u1, u2} α _inst_1 F) -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) (Ctop.Realizer.f.{u1, u2} α _inst_1 F) b)) (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) (fun (_x : Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) => (Ctop.Realizer.σ.{u1, u2} α _inst_1 F) -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) (Ctop.Realizer.f.{u1, u2} α _inst_1 F) b) s))))
-but is expected to have type
- forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] (F : Ctop.Realizer.{u2, u1} α _inst_1) {s : Set.{u2} α}, Iff (IsOpen.{u2} α _inst_1 s) (forall (a : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) -> (Exists.{succ u1} (Ctop.Realizer.σ.{u2, u1} α _inst_1 F) (fun (b : Ctop.Realizer.σ.{u2, u1} α _inst_1 F) => And (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a (Ctop.f.{u2, u1} α (Ctop.Realizer.σ.{u2, u1} α _inst_1 F) (Ctop.Realizer.F.{u2, u1} α _inst_1 F) b)) (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Ctop.f.{u2, u1} α (Ctop.Realizer.σ.{u2, u1} α _inst_1 F) (Ctop.Realizer.F.{u2, u1} α _inst_1 F) b) s))))
-Case conversion may be inaccurate. Consider using '#align ctop.realizer.is_open_iff Ctop.Realizer.isOpen_iffₓ'. -/
theorem isOpen_iff [TopologicalSpace α] (F : Realizer α) {s : Set α} :
IsOpen s ↔ ∀ a ∈ s, ∃ b, a ∈ F.f b ∧ F.f b ⊆ s :=
isOpen_iff_mem_nhds.trans <| ball_congr fun a h => F.mem_nhds
#align ctop.realizer.is_open_iff Ctop.Realizer.isOpen_iff
-/- warning: ctop.realizer.is_closed_iff -> Ctop.Realizer.isClosed_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] (F : Ctop.Realizer.{u1, u2} α _inst_1) {s : Set.{u1} α}, Iff (IsClosed.{u1} α _inst_1 s) (forall (a : α), (forall (b : Ctop.Realizer.σ.{u1, u2} α _inst_1 F), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) (fun (_x : Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) => (Ctop.Realizer.σ.{u1, u2} α _inst_1 F) -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) (Ctop.Realizer.f.{u1, u2} α _inst_1 F) b)) -> (Exists.{succ u1} α (fun (z : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) z (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) (fun (_x : Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) => (Ctop.Realizer.σ.{u1, u2} α _inst_1 F) -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) (Ctop.Realizer.f.{u1, u2} α _inst_1 F) b) s)))) -> (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s))
-but is expected to have type
- forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] (F : Ctop.Realizer.{u2, u1} α _inst_1) {s : Set.{u2} α}, Iff (IsClosed.{u2} α _inst_1 s) (forall (a : α), (forall (b : Ctop.Realizer.σ.{u2, u1} α _inst_1 F), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a (Ctop.f.{u2, u1} α (Ctop.Realizer.σ.{u2, u1} α _inst_1 F) (Ctop.Realizer.F.{u2, u1} α _inst_1 F) b)) -> (Exists.{succ u2} α (fun (z : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) z (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (Ctop.f.{u2, u1} α (Ctop.Realizer.σ.{u2, u1} α _inst_1 F) (Ctop.Realizer.F.{u2, u1} α _inst_1 F) b) s)))) -> (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s))
-Case conversion may be inaccurate. Consider using '#align ctop.realizer.is_closed_iff Ctop.Realizer.isClosed_iffₓ'. -/
theorem isClosed_iff [TopologicalSpace α] (F : Realizer α) {s : Set α} :
IsClosed s ↔ ∀ a, (∀ b, a ∈ F.f b → ∃ z, z ∈ F.f b ∩ s) → a ∈ s :=
isOpen_compl_iff.symm.trans <|
@@ -214,33 +166,15 @@ theorem isClosed_iff [TopologicalSpace α] (F : Realizer α) {s : Set α} :
simp [not_exists, not_and, not_forall, and_comm']
#align ctop.realizer.is_closed_iff Ctop.Realizer.isClosed_iff
-/- warning: ctop.realizer.mem_interior_iff -> Ctop.Realizer.mem_interior_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] (F : Ctop.Realizer.{u1, u2} α _inst_1) {s : Set.{u1} α} {a : α}, Iff (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (interior.{u1} α _inst_1 s)) (Exists.{succ u2} (Ctop.Realizer.σ.{u1, u2} α _inst_1 F) (fun (b : Ctop.Realizer.σ.{u1, u2} α _inst_1 F) => And (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) (fun (_x : Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) => (Ctop.Realizer.σ.{u1, u2} α _inst_1 F) -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) (Ctop.Realizer.f.{u1, u2} α _inst_1 F) b)) (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) (fun (_x : Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) => (Ctop.Realizer.σ.{u1, u2} α _inst_1 F) -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) (Ctop.Realizer.f.{u1, u2} α _inst_1 F) b) s)))
-but is expected to have type
- forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] (F : Ctop.Realizer.{u2, u1} α _inst_1) {s : Set.{u2} α} {a : α}, Iff (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a (interior.{u2} α _inst_1 s)) (Exists.{succ u1} (Ctop.Realizer.σ.{u2, u1} α _inst_1 F) (fun (b : Ctop.Realizer.σ.{u2, u1} α _inst_1 F) => And (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a (Ctop.f.{u2, u1} α (Ctop.Realizer.σ.{u2, u1} α _inst_1 F) (Ctop.Realizer.F.{u2, u1} α _inst_1 F) b)) (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Ctop.f.{u2, u1} α (Ctop.Realizer.σ.{u2, u1} α _inst_1 F) (Ctop.Realizer.F.{u2, u1} α _inst_1 F) b) s)))
-Case conversion may be inaccurate. Consider using '#align ctop.realizer.mem_interior_iff Ctop.Realizer.mem_interior_iffₓ'. -/
theorem mem_interior_iff [TopologicalSpace α] (F : Realizer α) {s : Set α} {a : α} :
a ∈ interior s ↔ ∃ b, a ∈ F.f b ∧ F.f b ⊆ s :=
mem_interior_iff_mem_nhds.trans F.mem_nhds
#align ctop.realizer.mem_interior_iff Ctop.Realizer.mem_interior_iff
-/- warning: ctop.realizer.is_open -> Ctop.Realizer.isOpen is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] (F : Ctop.Realizer.{u1, u2} α _inst_1) (s : Ctop.Realizer.σ.{u1, u2} α _inst_1 F), IsOpen.{u1} α _inst_1 (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) (fun (_x : Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) => (Ctop.Realizer.σ.{u1, u2} α _inst_1 F) -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) (Ctop.Realizer.f.{u1, u2} α _inst_1 F) s)
-but is expected to have type
- forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] (F : Ctop.Realizer.{u2, u1} α _inst_1) (s : Ctop.Realizer.σ.{u2, u1} α _inst_1 F), IsOpen.{u2} α _inst_1 (Ctop.f.{u2, u1} α (Ctop.Realizer.σ.{u2, u1} α _inst_1 F) (Ctop.Realizer.F.{u2, u1} α _inst_1 F) s)
-Case conversion may be inaccurate. Consider using '#align ctop.realizer.is_open Ctop.Realizer.isOpenₓ'. -/
protected theorem isOpen [TopologicalSpace α] (F : Realizer α) (s : F.σ) : IsOpen (F.f s) :=
isOpen_iff_nhds.2 fun a m => by simpa using F.mem_nhds.2 ⟨s, m, subset.refl _⟩
#align ctop.realizer.is_open Ctop.Realizer.isOpen
-/- warning: ctop.realizer.ext' -> Ctop.Realizer.ext' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [T : TopologicalSpace.{u1} α] {σ : Type.{u2}} {F : Ctop.{u1, u2} α σ}, (forall (a : α) (s : Set.{u1} α), Iff (Membership.Mem.{u1, u1} (Set.{u1} α) (Filter.{u1} α) (Filter.hasMem.{u1} α) s (nhds.{u1} α T a)) (Exists.{succ u2} σ (fun (b : σ) => And (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α σ) (fun (_x : Ctop.{u1, u2} α σ) => σ -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α σ) F b)) (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α σ) (fun (_x : Ctop.{u1, u2} α σ) => σ -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α σ) F b) s)))) -> (Eq.{succ u1} (TopologicalSpace.{u1} α) (Ctop.toTopsp.{u1, u2} α σ F) T)
-but is expected to have type
- forall {α : Type.{u2}} [T : TopologicalSpace.{u2} α] {σ : Type.{u1}} {F : Ctop.{u2, u1} α σ}, (forall (a : α) (s : Set.{u2} α), Iff (Membership.mem.{u2, u2} (Set.{u2} α) (Filter.{u2} α) (instMembershipSetFilter.{u2} α) s (nhds.{u2} α T a)) (Exists.{succ u1} σ (fun (b : σ) => And (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a (Ctop.f.{u2, u1} α σ F b)) (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Ctop.f.{u2, u1} α σ F b) s)))) -> (Eq.{succ u2} (TopologicalSpace.{u2} α) (Ctop.toTopsp.{u2, u1} α σ F) T)
-Case conversion may be inaccurate. Consider using '#align ctop.realizer.ext' Ctop.Realizer.ext'ₓ'. -/
theorem ext' [T : TopologicalSpace α] {σ : Type _} {F : Ctop α σ}
(H : ∀ a s, s ∈ 𝓝 a ↔ ∃ b, a ∈ F b ∧ F b ⊆ s) : F.toTopsp = T :=
by
@@ -249,12 +183,6 @@ theorem ext' [T : TopologicalSpace α] {σ : Type _} {F : Ctop α σ}
rw [mem_nhds_to_topsp, H]
#align ctop.realizer.ext' Ctop.Realizer.ext'
-/- warning: ctop.realizer.ext -> Ctop.Realizer.ext is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [T : TopologicalSpace.{u1} α] {σ : Type.{u2}} {F : Ctop.{u1, u2} α σ}, (forall (a : σ), IsOpen.{u1} α T (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α σ) (fun (_x : Ctop.{u1, u2} α σ) => σ -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α σ) F a)) -> (forall (a : α) (s : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Filter.{u1} α) (Filter.hasMem.{u1} α) s (nhds.{u1} α T a)) -> (Exists.{succ u2} σ (fun (b : σ) => And (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α σ) (fun (_x : Ctop.{u1, u2} α σ) => σ -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α σ) F b)) (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α σ) (fun (_x : Ctop.{u1, u2} α σ) => σ -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α σ) F b) s)))) -> (Eq.{succ u1} (TopologicalSpace.{u1} α) (Ctop.toTopsp.{u1, u2} α σ F) T)
-but is expected to have type
- forall {α : Type.{u2}} [T : TopologicalSpace.{u2} α] {σ : Type.{u1}} {F : Ctop.{u2, u1} α σ}, (forall (a : σ), IsOpen.{u2} α T (Ctop.f.{u2, u1} α σ F a)) -> (forall (a : α) (s : Set.{u2} α), (Membership.mem.{u2, u2} (Set.{u2} α) (Filter.{u2} α) (instMembershipSetFilter.{u2} α) s (nhds.{u2} α T a)) -> (Exists.{succ u1} σ (fun (b : σ) => And (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a (Ctop.f.{u2, u1} α σ F b)) (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Ctop.f.{u2, u1} α σ F b) s)))) -> (Eq.{succ u2} (TopologicalSpace.{u2} α) (Ctop.toTopsp.{u2, u1} α σ F) T)
-Case conversion may be inaccurate. Consider using '#align ctop.realizer.ext Ctop.Realizer.extₓ'. -/
theorem ext [T : TopologicalSpace α] {σ : Type _} {F : Ctop α σ} (H₁ : ∀ a, IsOpen (F a))
(H₂ : ∀ a s, s ∈ 𝓝 a → ∃ b, a ∈ F b ∧ F b ⊆ s) : F.toTopsp = T :=
ext' fun a s => ⟨H₂ a s, fun ⟨b, h₁, h₂⟩ => mem_nhds_iff.2 ⟨_, h₂, H₁ _, h₁⟩⟩
@@ -288,23 +216,11 @@ def ofEquiv (F : Realizer α) (E : F.σ ≃ τ) : Realizer α :=
#align ctop.realizer.of_equiv Ctop.Realizer.ofEquiv
-/
-/- warning: ctop.realizer.of_equiv_σ -> Ctop.Realizer.ofEquiv_σ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] (F : Ctop.Realizer.{u1, u3} α _inst_1) (E : Equiv.{succ u3, succ u2} (Ctop.Realizer.σ.{u1, u3} α _inst_1 F) τ), Eq.{succ (succ u2)} Type.{u2} (Ctop.Realizer.σ.{u1, u2} α _inst_1 (Ctop.Realizer.ofEquiv.{u1, u2, u3} α τ _inst_1 F E)) τ
-but is expected to have type
- forall {α : Type.{u3}} {τ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] (F : Ctop.Realizer.{u3, u2} α _inst_1) (E : Equiv.{succ u2, succ u1} (Ctop.Realizer.σ.{u3, u2} α _inst_1 F) τ), Eq.{succ (succ u1)} Type.{u1} (Ctop.Realizer.σ.{u3, u1} α _inst_1 (Ctop.Realizer.ofEquiv.{u3, u1, u2} α τ _inst_1 F E)) τ
-Case conversion may be inaccurate. Consider using '#align ctop.realizer.of_equiv_σ Ctop.Realizer.ofEquiv_σₓ'. -/
@[simp]
theorem ofEquiv_σ (F : Realizer α) (E : F.σ ≃ τ) : (F.of_equiv E).σ = τ :=
rfl
#align ctop.realizer.of_equiv_σ Ctop.Realizer.ofEquiv_σ
-/- warning: ctop.realizer.of_equiv_F -> Ctop.Realizer.ofEquiv_F is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] (F : Ctop.Realizer.{u1, u3} α _inst_1) (E : Equiv.{succ u3, succ u2} (Ctop.Realizer.σ.{u1, u3} α _inst_1 F) τ) (s : τ), Eq.{succ u1} (Set.{u1} α) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 (Ctop.Realizer.ofEquiv.{u1, u2, u3} α τ _inst_1 F E))) (fun (_x : Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 (Ctop.Realizer.ofEquiv.{u1, u2, u3} α τ _inst_1 F E))) => (Ctop.Realizer.σ.{u1, u2} α _inst_1 (Ctop.Realizer.ofEquiv.{u1, u2, u3} α τ _inst_1 F E)) -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 (Ctop.Realizer.ofEquiv.{u1, u2, u3} α τ _inst_1 F E))) (Ctop.Realizer.f.{u1, u2} α _inst_1 (Ctop.Realizer.ofEquiv.{u1, u2, u3} α τ _inst_1 F E)) s) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (Ctop.{u1, u3} α (Ctop.Realizer.σ.{u1, u3} α _inst_1 F)) (fun (_x : Ctop.{u1, u3} α (Ctop.Realizer.σ.{u1, u3} α _inst_1 F)) => (Ctop.Realizer.σ.{u1, u3} α _inst_1 F) -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u3} α (Ctop.Realizer.σ.{u1, u3} α _inst_1 F)) (Ctop.Realizer.f.{u1, u3} α _inst_1 F) (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} τ (Ctop.Realizer.σ.{u1, u3} α _inst_1 F)) (fun (_x : Equiv.{succ u2, succ u3} τ (Ctop.Realizer.σ.{u1, u3} α _inst_1 F)) => τ -> (Ctop.Realizer.σ.{u1, u3} α _inst_1 F)) (Equiv.hasCoeToFun.{succ u2, succ u3} τ (Ctop.Realizer.σ.{u1, u3} α _inst_1 F)) (Equiv.symm.{succ u3, succ u2} (Ctop.Realizer.σ.{u1, u3} α _inst_1 F) τ E) s))
-but is expected to have type
- forall {α : Type.{u3}} {τ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] (F : Ctop.Realizer.{u3, u2} α _inst_1) (E : Equiv.{succ u2, succ u1} (Ctop.Realizer.σ.{u3, u2} α _inst_1 F) τ) (s : τ), Eq.{succ u3} (Set.{u3} α) (Ctop.f.{u3, u1} α (Ctop.Realizer.σ.{u3, u1} α _inst_1 (Ctop.Realizer.ofEquiv.{u3, u1, u2} α τ _inst_1 F E)) (Ctop.Realizer.F.{u3, u1} α _inst_1 (Ctop.Realizer.ofEquiv.{u3, u1, u2} α τ _inst_1 F E)) s) (Ctop.f.{u3, u2} α (Ctop.Realizer.σ.{u3, u2} α _inst_1 F) (Ctop.Realizer.F.{u3, u2} α _inst_1 F) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Equiv.{succ u1, succ u2} τ (Ctop.Realizer.σ.{u3, u2} α _inst_1 F)) τ (fun (_x : τ) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : τ) => Ctop.Realizer.σ.{u3, u2} α _inst_1 F) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} τ (Ctop.Realizer.σ.{u3, u2} α _inst_1 F)) (Equiv.symm.{succ u2, succ u1} (Ctop.Realizer.σ.{u3, u2} α _inst_1 F) τ E) s))
-Case conversion may be inaccurate. Consider using '#align ctop.realizer.of_equiv_F Ctop.Realizer.ofEquiv_Fₓ'. -/
@[simp]
theorem ofEquiv_F (F : Realizer α) (E : F.σ ≃ τ) (s : τ) : (F.of_equiv E).f s = F.f (E.symm s) := by
delta of_equiv <;> simp
@@ -327,34 +243,16 @@ protected def nhds (F : Realizer α) (a : α) : (𝓝 a).Realizer :=
#align ctop.realizer.nhds Ctop.Realizer.nhds
-/
-/- warning: ctop.realizer.nhds_σ -> Ctop.Realizer.nhds_σ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] (F : Ctop.Realizer.{u1, u2} α _inst_1) (a : α), Eq.{succ (succ u2)} Type.{u2} (Filter.Realizer.σ.{u1, u2} α (nhds.{u1} α _inst_1 a) (Ctop.Realizer.nhds.{u1, u2} α _inst_1 F a)) (Subtype.{succ u2} (Ctop.Realizer.σ.{u1, u2} α _inst_1 F) (fun (s : Ctop.Realizer.σ.{u1, u2} α _inst_1 F) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) (fun (_x : Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) => (Ctop.Realizer.σ.{u1, u2} α _inst_1 F) -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) (Ctop.Realizer.f.{u1, u2} α _inst_1 F) s)))
-but is expected to have type
- forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] (F : Ctop.Realizer.{u2, u1} α _inst_1) (a : α), Eq.{succ (succ u1)} Type.{u1} (Filter.Realizer.σ.{u2, u1} α (nhds.{u2} α _inst_1 a) (Ctop.Realizer.nhds.{u2, u1} α _inst_1 F a)) (Subtype.{succ u1} (Ctop.Realizer.σ.{u2, u1} α _inst_1 F) (fun (s : Ctop.Realizer.σ.{u2, u1} α _inst_1 F) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a (Ctop.f.{u2, u1} α (Ctop.Realizer.σ.{u2, u1} α _inst_1 F) (Ctop.Realizer.F.{u2, u1} α _inst_1 F) s)))
-Case conversion may be inaccurate. Consider using '#align ctop.realizer.nhds_σ Ctop.Realizer.nhds_σₓ'. -/
@[simp]
theorem nhds_σ (F : Realizer α) (a : α) : (F.nhds a).σ = { s : F.σ // a ∈ F.f s } :=
rfl
#align ctop.realizer.nhds_σ Ctop.Realizer.nhds_σ
-/- warning: ctop.realizer.nhds_F -> Ctop.Realizer.nhds_F is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] (F : Ctop.Realizer.{u1, u2} α _inst_1) (a : α) (s : Filter.Realizer.σ.{u1, u2} α (nhds.{u1} α _inst_1 a) (Ctop.Realizer.nhds.{u1, u2} α _inst_1 F a)), Eq.{succ u1} (Set.{u1} α) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (CFilter.{u1, u2} (Set.{u1} α) (Filter.Realizer.σ.{u1, u2} α (nhds.{u1} α _inst_1 a) (Ctop.Realizer.nhds.{u1, u2} α _inst_1 F a)) (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} α))))))) (fun (_x : CFilter.{u1, u2} (Set.{u1} α) (Filter.Realizer.σ.{u1, u2} α (nhds.{u1} α _inst_1 a) (Ctop.Realizer.nhds.{u1, u2} α _inst_1 F a)) (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} α))))))) => (Filter.Realizer.σ.{u1, u2} α (nhds.{u1} α _inst_1 a) (Ctop.Realizer.nhds.{u1, u2} α _inst_1 F a)) -> (Set.{u1} α)) (CFilter.hasCoeToFun.{u1, u2} (Set.{u1} α) (Filter.Realizer.σ.{u1, u2} α (nhds.{u1} α _inst_1 a) (Ctop.Realizer.nhds.{u1, u2} α _inst_1 F a)) (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} α))))))) (Filter.Realizer.f.{u1, u2} α (nhds.{u1} α _inst_1 a) (Ctop.Realizer.nhds.{u1, u2} α _inst_1 F a)) s) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) (fun (_x : Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) => (Ctop.Realizer.σ.{u1, u2} α _inst_1 F) -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) (Ctop.Realizer.f.{u1, u2} α _inst_1 F) (Subtype.val.{succ u2} (Ctop.Realizer.σ.{u1, u2} α _inst_1 F) (fun (s : Ctop.Realizer.σ.{u1, u2} α _inst_1 F) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) (fun (_x : Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) => (Ctop.Realizer.σ.{u1, u2} α _inst_1 F) -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 F)) (Ctop.Realizer.f.{u1, u2} α _inst_1 F) s)) s))
-but is expected to have type
- forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] (F : Ctop.Realizer.{u2, u1} α _inst_1) (a : α) (s : Filter.Realizer.σ.{u2, u1} α (nhds.{u2} α _inst_1 a) (Ctop.Realizer.nhds.{u2, u1} α _inst_1 F a)), Eq.{succ u2} (Set.{u2} α) (CFilter.f.{u2, u1} (Set.{u2} α) (Filter.Realizer.σ.{u2, u1} α (nhds.{u2} α _inst_1 a) (Ctop.Realizer.nhds.{u2, u1} α _inst_1 F a)) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))) (Filter.Realizer.F.{u2, u1} α (nhds.{u2} α _inst_1 a) (Ctop.Realizer.nhds.{u2, u1} α _inst_1 F a)) s) (Ctop.f.{u2, u1} α (Ctop.Realizer.σ.{u2, u1} α _inst_1 F) (Ctop.Realizer.F.{u2, u1} α _inst_1 F) (Subtype.val.{succ u1} (Ctop.Realizer.σ.{u2, u1} α _inst_1 F) (fun (s : Ctop.Realizer.σ.{u2, u1} α _inst_1 F) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a (Ctop.f.{u2, u1} α (Ctop.Realizer.σ.{u2, u1} α _inst_1 F) (Ctop.Realizer.F.{u2, u1} α _inst_1 F) s)) s))
-Case conversion may be inaccurate. Consider using '#align ctop.realizer.nhds_F Ctop.Realizer.nhds_Fₓ'. -/
@[simp]
theorem nhds_F (F : Realizer α) (a : α) (s) : (F.nhds a).f s = F.f s.1 :=
rfl
#align ctop.realizer.nhds_F Ctop.Realizer.nhds_F
-/- warning: ctop.realizer.tendsto_nhds_iff -> Ctop.Realizer.tendsto_nhds_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] {m : β -> α} {f : Filter.{u2} β} (F : Filter.Realizer.{u2, u3} β f) (R : Ctop.Realizer.{u1, u4} α _inst_1) {a : α}, Iff (Filter.Tendsto.{u2, u1} β α m f (nhds.{u1} α _inst_1 a)) (forall (t : Ctop.Realizer.σ.{u1, u4} α _inst_1 R), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (coeFn.{max (succ u1) (succ u4), max (succ u4) (succ u1)} (Ctop.{u1, u4} α (Ctop.Realizer.σ.{u1, u4} α _inst_1 R)) (fun (_x : Ctop.{u1, u4} α (Ctop.Realizer.σ.{u1, u4} α _inst_1 R)) => (Ctop.Realizer.σ.{u1, u4} α _inst_1 R) -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u4} α (Ctop.Realizer.σ.{u1, u4} α _inst_1 R)) (Ctop.Realizer.f.{u1, u4} α _inst_1 R) t)) -> (Exists.{succ u3} (Filter.Realizer.σ.{u2, u3} β f F) (fun (s : Filter.Realizer.σ.{u2, u3} β f F) => forall (x : β), (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) x (coeFn.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (CFilter.{u2, u3} (Set.{u2} β) (Filter.Realizer.σ.{u2, u3} β f F) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.completeBooleanAlgebra.{u2} β))))))) (fun (_x : CFilter.{u2, u3} (Set.{u2} β) (Filter.Realizer.σ.{u2, u3} β f F) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.completeBooleanAlgebra.{u2} β))))))) => (Filter.Realizer.σ.{u2, u3} β f F) -> (Set.{u2} β)) (CFilter.hasCoeToFun.{u2, u3} (Set.{u2} β) (Filter.Realizer.σ.{u2, u3} β f F) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.completeBooleanAlgebra.{u2} β))))))) (Filter.Realizer.f.{u2, u3} β f F) s)) -> (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) (m x) (coeFn.{max (succ u1) (succ u4), max (succ u4) (succ u1)} (Ctop.{u1, u4} α (Ctop.Realizer.σ.{u1, u4} α _inst_1 R)) (fun (_x : Ctop.{u1, u4} α (Ctop.Realizer.σ.{u1, u4} α _inst_1 R)) => (Ctop.Realizer.σ.{u1, u4} α _inst_1 R) -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u4} α (Ctop.Realizer.σ.{u1, u4} α _inst_1 R)) (Ctop.Realizer.f.{u1, u4} α _inst_1 R) t)))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u4}} [_inst_1 : TopologicalSpace.{u2} α] {m : β -> α} {f : Filter.{u4} β} (F : Filter.Realizer.{u4, u3} β f) (R : Ctop.Realizer.{u2, u1} α _inst_1) {a : α}, Iff (Filter.Tendsto.{u4, u2} β α m f (nhds.{u2} α _inst_1 a)) (forall (t : Ctop.Realizer.σ.{u2, u1} α _inst_1 R), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a (Ctop.f.{u2, u1} α (Ctop.Realizer.σ.{u2, u1} α _inst_1 R) (Ctop.Realizer.F.{u2, u1} α _inst_1 R) t)) -> (Exists.{succ u3} (Filter.Realizer.σ.{u4, u3} β f F) (fun (s : Filter.Realizer.σ.{u4, u3} β f F) => forall (x : β), (Membership.mem.{u4, u4} β (Set.{u4} β) (Set.instMembershipSet.{u4} β) x (CFilter.f.{u4, u3} (Set.{u4} β) (Filter.Realizer.σ.{u4, u3} β f F) (CompleteSemilatticeInf.toPartialOrder.{u4} (Set.{u4} β) (CompleteLattice.toCompleteSemilatticeInf.{u4} (Set.{u4} β) (Order.Coframe.toCompleteLattice.{u4} (Set.{u4} β) (CompleteDistribLattice.toCoframe.{u4} (Set.{u4} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u4} (Set.{u4} β) (Set.instCompleteBooleanAlgebraSet.{u4} β)))))) (Filter.Realizer.F.{u4, u3} β f F) s)) -> (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) (m x) (Ctop.f.{u2, u1} α (Ctop.Realizer.σ.{u2, u1} α _inst_1 R) (Ctop.Realizer.F.{u2, u1} α _inst_1 R) t)))))
-Case conversion may be inaccurate. Consider using '#align ctop.realizer.tendsto_nhds_iff Ctop.Realizer.tendsto_nhds_iffₓ'. -/
theorem tendsto_nhds_iff {m : β → α} {f : Filter β} (F : f.Realizer) (R : Realizer α) {a : α} :
Tendsto m f (𝓝 a) ↔ ∀ t, a ∈ R.f t → ∃ s, ∀ x ∈ F.f s, m x ∈ R.f t :=
(F.tendsto_iffₓ _ (R.nhds a)).trans Subtype.forall
@@ -372,23 +270,11 @@ structure LocallyFinite.Realizer [TopologicalSpace α] (F : Realizer α) (f : β
#align locally_finite.realizer LocallyFinite.Realizer
-/
-/- warning: locally_finite.realizer.to_locally_finite -> LocallyFinite.Realizer.to_locallyFinite is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] {F : Ctop.Realizer.{u1, u3} α _inst_1} {f : β -> (Set.{u1} α)}, (LocallyFinite.Realizer.{u1, u2, u3} α β _inst_1 F f) -> (LocallyFinite.{u2, u1} β α _inst_1 f)
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] {F : Ctop.Realizer.{u3, u2} α _inst_1} {f : β -> (Set.{u3} α)}, (LocallyFinite.Realizer.{u3, u1, u2} α β _inst_1 F f) -> (LocallyFinite.{u1, u3} β α _inst_1 f)
-Case conversion may be inaccurate. Consider using '#align locally_finite.realizer.to_locally_finite LocallyFinite.Realizer.to_locallyFiniteₓ'. -/
theorem LocallyFinite.Realizer.to_locallyFinite [TopologicalSpace α] {F : Realizer α}
{f : β → Set α} (R : LocallyFinite.Realizer F f) : LocallyFinite f := fun a =>
⟨_, F.mem_nhds.2 ⟨(R.bas a).1, (R.bas a).2, Subset.refl _⟩, ⟨R.sets a⟩⟩
#align locally_finite.realizer.to_locally_finite LocallyFinite.Realizer.to_locallyFinite
-/- warning: locally_finite_iff_exists_realizer -> locallyFinite_iff_exists_realizer is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] (F : Ctop.Realizer.{u1, u3} α _inst_1) {f : β -> (Set.{u1} α)}, Iff (LocallyFinite.{u2, u1} β α _inst_1 f) (Nonempty.{max (succ u1) (succ u2) (succ u3)} (LocallyFinite.Realizer.{u1, u2, u3} α β _inst_1 F f))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] (F : Ctop.Realizer.{u3, u2} α _inst_1) {f : β -> (Set.{u3} α)}, Iff (LocallyFinite.{u1, u3} β α _inst_1 f) (Nonempty.{max (max (succ u2) (succ u1)) (succ u3)} (LocallyFinite.Realizer.{u3, u1, u2} α β _inst_1 F f))
-Case conversion may be inaccurate. Consider using '#align locally_finite_iff_exists_realizer locallyFinite_iff_exists_realizerₓ'. -/
theorem locallyFinite_iff_exists_realizer [TopologicalSpace α] (F : Realizer α) {f : β → Set α} :
LocallyFinite f ↔ Nonempty (LocallyFinite.Realizer F f) :=
⟨fun h =>
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -418,8 +418,6 @@ def Compact.Realizer [TopologicalSpace α] (s : Set α) :=
-/
instance [TopologicalSpace α] : Inhabited (Compact.Realizer (∅ : Set α)) :=
- ⟨fun f F x h hF => by
- cases h _
- rw [← F.eq, eq_bot_iff]
+ ⟨fun f F x h hF => by cases h _; rw [← F.eq, eq_bot_iff];
exact fun s _ => ⟨x, hF.trans s.empty_subset⟩⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -96,7 +96,7 @@ def ofEquiv (E : σ ≃ τ) : Ctop α σ → Ctop α τ
lean 3 declaration is
forall {α : Type.{u1}} {σ : Type.{u2}} {τ : Type.{u3}} (E : Equiv.{succ u2, succ u3} σ τ) (F : Ctop.{u1, u2} α σ) (a : τ), Eq.{succ u1} (Set.{u1} α) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (Ctop.{u1, u3} α τ) (fun (_x : Ctop.{u1, u3} α τ) => τ -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u3} α τ) (Ctop.ofEquiv.{u1, u2, u3} α σ τ E F) a) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α σ) (fun (_x : Ctop.{u1, u2} α σ) => σ -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α σ) F (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} τ σ) (fun (_x : Equiv.{succ u3, succ u2} τ σ) => τ -> σ) (Equiv.hasCoeToFun.{succ u3, succ u2} τ σ) (Equiv.symm.{succ u2, succ u3} σ τ E) a))
but is expected to have type
- forall {α : Type.{u1}} {σ : Type.{u3}} {τ : Type.{u2}} (E : Equiv.{succ u3, succ u2} σ τ) (F : Ctop.{u1, u3} α σ) (a : τ), Eq.{succ u1} (Set.{u1} α) (Ctop.f.{u1, u2} α τ (Ctop.ofEquiv.{u1, u3, u2} α σ τ E F) a) (Ctop.f.{u1, u3} α σ F (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} τ σ) τ (fun (_x : τ) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : τ) => σ) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} τ σ) (Equiv.symm.{succ u3, succ u2} σ τ E) a))
+ forall {α : Type.{u1}} {σ : Type.{u3}} {τ : Type.{u2}} (E : Equiv.{succ u3, succ u2} σ τ) (F : Ctop.{u1, u3} α σ) (a : τ), Eq.{succ u1} (Set.{u1} α) (Ctop.f.{u1, u2} α τ (Ctop.ofEquiv.{u1, u3, u2} α σ τ E F) a) (Ctop.f.{u1, u3} α σ F (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} τ σ) τ (fun (_x : τ) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : τ) => σ) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} τ σ) (Equiv.symm.{succ u3, succ u2} σ τ E) a))
Case conversion may be inaccurate. Consider using '#align ctop.of_equiv_val Ctop.ofEquiv_valₓ'. -/
@[simp]
theorem ofEquiv_val (E : σ ≃ τ) (F : Ctop α σ) (a : τ) : F.of_equiv E a = F (E.symm a) := by
@@ -303,7 +303,7 @@ theorem ofEquiv_σ (F : Realizer α) (E : F.σ ≃ τ) : (F.of_equiv E).σ = τ
lean 3 declaration is
forall {α : Type.{u1}} {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] (F : Ctop.Realizer.{u1, u3} α _inst_1) (E : Equiv.{succ u3, succ u2} (Ctop.Realizer.σ.{u1, u3} α _inst_1 F) τ) (s : τ), Eq.{succ u1} (Set.{u1} α) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 (Ctop.Realizer.ofEquiv.{u1, u2, u3} α τ _inst_1 F E))) (fun (_x : Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 (Ctop.Realizer.ofEquiv.{u1, u2, u3} α τ _inst_1 F E))) => (Ctop.Realizer.σ.{u1, u2} α _inst_1 (Ctop.Realizer.ofEquiv.{u1, u2, u3} α τ _inst_1 F E)) -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 (Ctop.Realizer.ofEquiv.{u1, u2, u3} α τ _inst_1 F E))) (Ctop.Realizer.f.{u1, u2} α _inst_1 (Ctop.Realizer.ofEquiv.{u1, u2, u3} α τ _inst_1 F E)) s) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (Ctop.{u1, u3} α (Ctop.Realizer.σ.{u1, u3} α _inst_1 F)) (fun (_x : Ctop.{u1, u3} α (Ctop.Realizer.σ.{u1, u3} α _inst_1 F)) => (Ctop.Realizer.σ.{u1, u3} α _inst_1 F) -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u3} α (Ctop.Realizer.σ.{u1, u3} α _inst_1 F)) (Ctop.Realizer.f.{u1, u3} α _inst_1 F) (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} τ (Ctop.Realizer.σ.{u1, u3} α _inst_1 F)) (fun (_x : Equiv.{succ u2, succ u3} τ (Ctop.Realizer.σ.{u1, u3} α _inst_1 F)) => τ -> (Ctop.Realizer.σ.{u1, u3} α _inst_1 F)) (Equiv.hasCoeToFun.{succ u2, succ u3} τ (Ctop.Realizer.σ.{u1, u3} α _inst_1 F)) (Equiv.symm.{succ u3, succ u2} (Ctop.Realizer.σ.{u1, u3} α _inst_1 F) τ E) s))
but is expected to have type
- forall {α : Type.{u3}} {τ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] (F : Ctop.Realizer.{u3, u2} α _inst_1) (E : Equiv.{succ u2, succ u1} (Ctop.Realizer.σ.{u3, u2} α _inst_1 F) τ) (s : τ), Eq.{succ u3} (Set.{u3} α) (Ctop.f.{u3, u1} α (Ctop.Realizer.σ.{u3, u1} α _inst_1 (Ctop.Realizer.ofEquiv.{u3, u1, u2} α τ _inst_1 F E)) (Ctop.Realizer.F.{u3, u1} α _inst_1 (Ctop.Realizer.ofEquiv.{u3, u1, u2} α τ _inst_1 F E)) s) (Ctop.f.{u3, u2} α (Ctop.Realizer.σ.{u3, u2} α _inst_1 F) (Ctop.Realizer.F.{u3, u2} α _inst_1 F) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Equiv.{succ u1, succ u2} τ (Ctop.Realizer.σ.{u3, u2} α _inst_1 F)) τ (fun (_x : τ) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : τ) => Ctop.Realizer.σ.{u3, u2} α _inst_1 F) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} τ (Ctop.Realizer.σ.{u3, u2} α _inst_1 F)) (Equiv.symm.{succ u2, succ u1} (Ctop.Realizer.σ.{u3, u2} α _inst_1 F) τ E) s))
+ forall {α : Type.{u3}} {τ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] (F : Ctop.Realizer.{u3, u2} α _inst_1) (E : Equiv.{succ u2, succ u1} (Ctop.Realizer.σ.{u3, u2} α _inst_1 F) τ) (s : τ), Eq.{succ u3} (Set.{u3} α) (Ctop.f.{u3, u1} α (Ctop.Realizer.σ.{u3, u1} α _inst_1 (Ctop.Realizer.ofEquiv.{u3, u1, u2} α τ _inst_1 F E)) (Ctop.Realizer.F.{u3, u1} α _inst_1 (Ctop.Realizer.ofEquiv.{u3, u1, u2} α τ _inst_1 F E)) s) (Ctop.f.{u3, u2} α (Ctop.Realizer.σ.{u3, u2} α _inst_1 F) (Ctop.Realizer.F.{u3, u2} α _inst_1 F) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Equiv.{succ u1, succ u2} τ (Ctop.Realizer.σ.{u3, u2} α _inst_1 F)) τ (fun (_x : τ) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : τ) => Ctop.Realizer.σ.{u3, u2} α _inst_1 F) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} τ (Ctop.Realizer.σ.{u3, u2} α _inst_1 F)) (Equiv.symm.{succ u2, succ u1} (Ctop.Realizer.σ.{u3, u2} α _inst_1 F) τ E) s))
Case conversion may be inaccurate. Consider using '#align ctop.realizer.of_equiv_F Ctop.Realizer.ofEquiv_Fₓ'. -/
@[simp]
theorem ofEquiv_F (F : Realizer α) (E : F.σ ≃ τ) (s : τ) : (F.of_equiv E).f s = F.f (E.symm s) := by
mathlib commit https://github.com/leanprover-community/mathlib/commit/55d771df074d0dd020139ee1cd4b95521422df9f
@@ -4,12 +4,13 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Mario Carneiro
! This file was ported from Lean 3 source module data.analysis.topology
-! leanprover-community/mathlib commit 23aa88e32dcc9d2a24cca7bc23268567ed4cd7d6
+! leanprover-community/mathlib commit 55d771df074d0dd020139ee1cd4b95521422df9f
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathbin.Data.Analysis.Filter
import Mathbin.Topology.Bases
+import Mathbin.Topology.LocallyFinite
/-!
# Computational realization of topological spaces (experimental)
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -95,7 +95,7 @@ def ofEquiv (E : σ ≃ τ) : Ctop α σ → Ctop α τ
lean 3 declaration is
forall {α : Type.{u1}} {σ : Type.{u2}} {τ : Type.{u3}} (E : Equiv.{succ u2, succ u3} σ τ) (F : Ctop.{u1, u2} α σ) (a : τ), Eq.{succ u1} (Set.{u1} α) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (Ctop.{u1, u3} α τ) (fun (_x : Ctop.{u1, u3} α τ) => τ -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u3} α τ) (Ctop.ofEquiv.{u1, u2, u3} α σ τ E F) a) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α σ) (fun (_x : Ctop.{u1, u2} α σ) => σ -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α σ) F (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} τ σ) (fun (_x : Equiv.{succ u3, succ u2} τ σ) => τ -> σ) (Equiv.hasCoeToFun.{succ u3, succ u2} τ σ) (Equiv.symm.{succ u2, succ u3} σ τ E) a))
but is expected to have type
- forall {α : Type.{u1}} {σ : Type.{u3}} {τ : Type.{u2}} (E : Equiv.{succ u3, succ u2} σ τ) (F : Ctop.{u1, u3} α σ) (a : τ), Eq.{succ u1} (Set.{u1} α) (Ctop.f.{u1, u2} α τ (Ctop.ofEquiv.{u1, u3, u2} α σ τ E F) a) (Ctop.f.{u1, u3} α σ F (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} τ σ) τ (fun (_x : τ) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : τ) => σ) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} τ σ) (Equiv.symm.{succ u3, succ u2} σ τ E) a))
+ forall {α : Type.{u1}} {σ : Type.{u3}} {τ : Type.{u2}} (E : Equiv.{succ u3, succ u2} σ τ) (F : Ctop.{u1, u3} α σ) (a : τ), Eq.{succ u1} (Set.{u1} α) (Ctop.f.{u1, u2} α τ (Ctop.ofEquiv.{u1, u3, u2} α σ τ E F) a) (Ctop.f.{u1, u3} α σ F (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} τ σ) τ (fun (_x : τ) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : τ) => σ) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} τ σ) (Equiv.symm.{succ u3, succ u2} σ τ E) a))
Case conversion may be inaccurate. Consider using '#align ctop.of_equiv_val Ctop.ofEquiv_valₓ'. -/
@[simp]
theorem ofEquiv_val (E : σ ≃ τ) (F : Ctop α σ) (a : τ) : F.of_equiv E a = F (E.symm a) := by
@@ -302,7 +302,7 @@ theorem ofEquiv_σ (F : Realizer α) (E : F.σ ≃ τ) : (F.of_equiv E).σ = τ
lean 3 declaration is
forall {α : Type.{u1}} {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] (F : Ctop.Realizer.{u1, u3} α _inst_1) (E : Equiv.{succ u3, succ u2} (Ctop.Realizer.σ.{u1, u3} α _inst_1 F) τ) (s : τ), Eq.{succ u1} (Set.{u1} α) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 (Ctop.Realizer.ofEquiv.{u1, u2, u3} α τ _inst_1 F E))) (fun (_x : Ctop.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 (Ctop.Realizer.ofEquiv.{u1, u2, u3} α τ _inst_1 F E))) => (Ctop.Realizer.σ.{u1, u2} α _inst_1 (Ctop.Realizer.ofEquiv.{u1, u2, u3} α τ _inst_1 F E)) -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u2} α (Ctop.Realizer.σ.{u1, u2} α _inst_1 (Ctop.Realizer.ofEquiv.{u1, u2, u3} α τ _inst_1 F E))) (Ctop.Realizer.f.{u1, u2} α _inst_1 (Ctop.Realizer.ofEquiv.{u1, u2, u3} α τ _inst_1 F E)) s) (coeFn.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (Ctop.{u1, u3} α (Ctop.Realizer.σ.{u1, u3} α _inst_1 F)) (fun (_x : Ctop.{u1, u3} α (Ctop.Realizer.σ.{u1, u3} α _inst_1 F)) => (Ctop.Realizer.σ.{u1, u3} α _inst_1 F) -> (Set.{u1} α)) (Ctop.hasCoeToFun.{u1, u3} α (Ctop.Realizer.σ.{u1, u3} α _inst_1 F)) (Ctop.Realizer.f.{u1, u3} α _inst_1 F) (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} τ (Ctop.Realizer.σ.{u1, u3} α _inst_1 F)) (fun (_x : Equiv.{succ u2, succ u3} τ (Ctop.Realizer.σ.{u1, u3} α _inst_1 F)) => τ -> (Ctop.Realizer.σ.{u1, u3} α _inst_1 F)) (Equiv.hasCoeToFun.{succ u2, succ u3} τ (Ctop.Realizer.σ.{u1, u3} α _inst_1 F)) (Equiv.symm.{succ u3, succ u2} (Ctop.Realizer.σ.{u1, u3} α _inst_1 F) τ E) s))
but is expected to have type
- forall {α : Type.{u3}} {τ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] (F : Ctop.Realizer.{u3, u2} α _inst_1) (E : Equiv.{succ u2, succ u1} (Ctop.Realizer.σ.{u3, u2} α _inst_1 F) τ) (s : τ), Eq.{succ u3} (Set.{u3} α) (Ctop.f.{u3, u1} α (Ctop.Realizer.σ.{u3, u1} α _inst_1 (Ctop.Realizer.ofEquiv.{u3, u1, u2} α τ _inst_1 F E)) (Ctop.Realizer.F.{u3, u1} α _inst_1 (Ctop.Realizer.ofEquiv.{u3, u1, u2} α τ _inst_1 F E)) s) (Ctop.f.{u3, u2} α (Ctop.Realizer.σ.{u3, u2} α _inst_1 F) (Ctop.Realizer.F.{u3, u2} α _inst_1 F) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Equiv.{succ u1, succ u2} τ (Ctop.Realizer.σ.{u3, u2} α _inst_1 F)) τ (fun (_x : τ) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : τ) => Ctop.Realizer.σ.{u3, u2} α _inst_1 F) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} τ (Ctop.Realizer.σ.{u3, u2} α _inst_1 F)) (Equiv.symm.{succ u2, succ u1} (Ctop.Realizer.σ.{u3, u2} α _inst_1 F) τ E) s))
+ forall {α : Type.{u3}} {τ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] (F : Ctop.Realizer.{u3, u2} α _inst_1) (E : Equiv.{succ u2, succ u1} (Ctop.Realizer.σ.{u3, u2} α _inst_1 F) τ) (s : τ), Eq.{succ u3} (Set.{u3} α) (Ctop.f.{u3, u1} α (Ctop.Realizer.σ.{u3, u1} α _inst_1 (Ctop.Realizer.ofEquiv.{u3, u1, u2} α τ _inst_1 F E)) (Ctop.Realizer.F.{u3, u1} α _inst_1 (Ctop.Realizer.ofEquiv.{u3, u1, u2} α τ _inst_1 F E)) s) (Ctop.f.{u3, u2} α (Ctop.Realizer.σ.{u3, u2} α _inst_1 F) (Ctop.Realizer.F.{u3, u2} α _inst_1 F) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Equiv.{succ u1, succ u2} τ (Ctop.Realizer.σ.{u3, u2} α _inst_1 F)) τ (fun (_x : τ) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : τ) => Ctop.Realizer.σ.{u3, u2} α _inst_1 F) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} τ (Ctop.Realizer.σ.{u3, u2} α _inst_1 F)) (Equiv.symm.{succ u2, succ u1} (Ctop.Realizer.σ.{u3, u2} α _inst_1 F) τ E) s))
Case conversion may be inaccurate. Consider using '#align ctop.realizer.of_equiv_F Ctop.Realizer.ofEquiv_Fₓ'. -/
@[simp]
theorem ofEquiv_F (F : Realizer α) (E : F.σ ≃ τ) (s : τ) : (F.of_equiv E).f s = F.f (E.symm s) := by
mathlib commit https://github.com/leanprover-community/mathlib/commit/3ade05ac9447ae31a22d2ea5423435e054131240
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Mario Carneiro
! This file was ported from Lean 3 source module data.analysis.topology
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
+! leanprover-community/mathlib commit 23aa88e32dcc9d2a24cca7bc23268567ed4cd7d6
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -14,6 +14,9 @@ import Mathbin.Topology.Bases
/-!
# Computational realization of topological spaces (experimental)
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
This file provides infrastructure to compute with topological spaces.
## Main declarations
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
bex
and ball
from lemma names (#11615)
Follow-up to #10816.
Remaining places containing such lemmas are
Option.bex_ne_none
and Option.ball_ne_none
: defined in Lean coreNat.decidableBallLT
and Nat.decidableBallLE
: defined in Lean corebef_def
is still used in a number of places and could be renamedBAll.imp_{left,right}
, BEx.imp_{left,right}
, BEx.intro
and BEx.elim
I only audited the first ~150 lemmas mentioning "ball"; too many lemmas named after Metric.ball/openBall/closedBall.
Co-authored-by: Yaël Dillies <yael.dillies@gmail.com>
@@ -136,7 +136,7 @@ protected theorem mem_nhds [T : TopologicalSpace α] (F : Realizer α) {s : Set
theorem isOpen_iff [TopologicalSpace α] (F : Realizer α) {s : Set α} :
IsOpen s ↔ ∀ a ∈ s, ∃ b, a ∈ F.F b ∧ F.F b ⊆ s :=
- isOpen_iff_mem_nhds.trans <| ball_congr fun _a _h ↦ F.mem_nhds
+ isOpen_iff_mem_nhds.trans <| forall₂_congr fun _a _h ↦ F.mem_nhds
#align ctop.realizer.is_open_iff Ctop.Realizer.isOpen_iff
theorem isClosed_iff [TopologicalSpace α] (F : Realizer α) {s : Set α} :
The main addition is IsTopologicalBasis.inf
(see https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/Inf.20of.20a.20pair.20of.20topologies/near/419989448), and I also reordered things to be in the more typical order (deducing the Pi
version from the iInf
version rather than the converse).
Also a few extra golfs and variations.
Co-authored-by: Yury G. Kudryashov <urkud@urkud.name> Co-authored-by: Christopher Hoskin <christopher.hoskin@gmail.com> Co-authored-by: Christopher Hoskin <christopher.hoskin@overleaf.com>
@@ -160,7 +160,7 @@ protected theorem isOpen [TopologicalSpace α] (F : Realizer α) (s : F.σ) : Is
theorem ext' [T : TopologicalSpace α] {σ : Type*} {F : Ctop α σ}
(H : ∀ a s, s ∈ 𝓝 a ↔ ∃ b, a ∈ F b ∧ F b ⊆ s) : F.toTopsp = T := by
- refine' eq_of_nhds_eq_nhds fun x ↦ _
+ refine TopologicalSpace.ext_nhds fun x ↦ ?_
ext s
rw [mem_nhds_toTopsp, H]
#align ctop.realizer.ext' Ctop.Realizer.ext'
λ
by fun
(#11301)
Per the style guidelines, λ
is disallowed in mathlib.
This is close to exhaustive; I left some tactic code alone when it seemed to me that tactic could be upstreamed soon.
Notes
=>
to ↦
.Mathlib/Order/SupClosed
.λ x,
, which I also replaced.@@ -280,4 +280,4 @@ instance [TopologicalSpace α] : Inhabited (Compact.Realizer (∅ : Set α)) :=
⟨fun {f} F x h hF ↦ by
suffices f = ⊥ from absurd this h
rw [← F.eq, eq_bot_iff]
- exact λ s _ ↦ ⟨x, hF.trans s.empty_subset⟩⟩
+ exact fun s _ ↦ ⟨x, hF.trans s.empty_subset⟩⟩
@@ -60,7 +60,7 @@ variable (F : Ctop α σ)
instance : CoeFun (Ctop α σ) fun _ ↦ σ → Set α :=
⟨Ctop.f⟩
--- @[simp] -- Porting note: dsimp can prove this
+-- @[simp] -- Porting note (#10685): dsimp can prove this
theorem coe_mk (f T h₁ I h₂ h₃ a) : (@Ctop.mk α σ f T h₁ I h₂ h₃) a = f a := rfl
#align ctop.coe_mk Ctop.coe_mk
have
, replace
and suffices
(#10640)
No changes to tactic file, it's just boring fixes throughout the library.
This follows on from #6964.
Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr> Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
@@ -278,6 +278,6 @@ def Compact.Realizer [TopologicalSpace α] (s : Set α) :=
instance [TopologicalSpace α] : Inhabited (Compact.Realizer (∅ : Set α)) :=
⟨fun {f} F x h hF ↦ by
- suffices : f = ⊥; exact absurd this h
+ suffices f = ⊥ from absurd this h
rw [← F.eq, eq_bot_iff]
exact λ s _ ↦ ⟨x, hF.trans s.empty_subset⟩⟩
@@ -247,7 +247,7 @@ structure LocallyFinite.Realizer [TopologicalSpace α] (F : Ctop.Realizer α) (f
theorem LocallyFinite.Realizer.to_locallyFinite [TopologicalSpace α] {F : Ctop.Realizer α}
{f : β → Set α} (R : LocallyFinite.Realizer F f) : LocallyFinite f := fun a ↦
- ⟨_, F.mem_nhds.2 ⟨(R.bas a).1, (R.bas a).2, Subset.refl _⟩, ⟨R.sets a⟩⟩
+ ⟨_, F.mem_nhds.2 ⟨(R.bas a).1, (R.bas a).2, Subset.rfl⟩, have := R.sets a; Set.toFinite _⟩
#align locally_finite.realizer.to_locally_finite LocallyFinite.Realizer.to_locallyFinite
theorem locallyFinite_iff_exists_realizer [TopologicalSpace α] (F : Ctop.Realizer α)
@@ -246,12 +246,12 @@ structure LocallyFinite.Realizer [TopologicalSpace α] (F : Ctop.Realizer α) (f
#align locally_finite.realizer LocallyFinite.Realizer
theorem LocallyFinite.Realizer.to_locallyFinite [TopologicalSpace α] {F : Ctop.Realizer α}
- {f : β → Set α} (R : LocallyFinite.Realizer F f) : LocallyFinite f := fun a ↦
+ {f : β → Set α} (R : LocallyFinite.Realizer F f) : LocallyFinite f := fun a ↦
⟨_, F.mem_nhds.2 ⟨(R.bas a).1, (R.bas a).2, Subset.refl _⟩, ⟨R.sets a⟩⟩
#align locally_finite.realizer.to_locally_finite LocallyFinite.Realizer.to_locallyFinite
-theorem locallyFinite_iff_exists_realizer [TopologicalSpace α]
- (F : Ctop.Realizer α) {f : β → Set α} : LocallyFinite f ↔ Nonempty (LocallyFinite.Realizer F f) :=
+theorem locallyFinite_iff_exists_realizer [TopologicalSpace α] (F : Ctop.Realizer α)
+ {f : β → Set α} : LocallyFinite f ↔ Nonempty (LocallyFinite.Realizer F f) :=
⟨fun h ↦
let ⟨g, h₁⟩ := Classical.axiom_of_choice h
let ⟨g₂, h₂⟩ :=
@@ -130,7 +130,7 @@ protected theorem is_basis [T : TopologicalSpace α] (F : Realizer α) :
#align ctop.realizer.is_basis Ctop.Realizer.is_basis
protected theorem mem_nhds [T : TopologicalSpace α] (F : Realizer α) {s : Set α} {a : α} :
- s ∈ 𝓝 a ↔ ∃ b, a ∈ F.F b ∧ F.F b ⊆ s := by
+ s ∈ 𝓝 a ↔ ∃ b, a ∈ F.F b ∧ F.F b ⊆ s := by
have := @mem_nhds_toTopsp _ _ F.F s a; rwa [F.eq] at this
#align ctop.realizer.mem_nhds Ctop.Realizer.mem_nhds
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -32,7 +32,7 @@ open Topology
/-- A `Ctop α σ` is a realization of a topology (basis) on `α`,
represented by a type `σ` together with operations for the top element and
the intersection operation. -/
-structure Ctop (α σ : Type _) where
+structure Ctop (α σ : Type*) where
f : σ → Set α
top : α → σ
top_mem : ∀ x : α, x ∈ f (top x)
@@ -41,7 +41,7 @@ structure Ctop (α σ : Type _) where
inter_sub : ∀ a b x h, f (inter a b x h) ⊆ f a ∩ f b
#align ctop Ctop
-variable {α : Type _} {β : Type _} {σ : Type _} {τ : Type _}
+variable {α : Type*} {β : Type*} {σ : Type*} {τ : Type*}
instance : Inhabited (Ctop α (Set α)) :=
⟨{ f := id
@@ -107,7 +107,7 @@ end Ctop
/-- A `Ctop` realizer for the topological space `T` is a `Ctop`
which generates `T`. -/
structure Ctop.Realizer (α) [T : TopologicalSpace α] where
- σ : Type _
+ σ : Type*
F : Ctop α σ
eq : F.toTopsp = T
#align ctop.realizer Ctop.Realizer
@@ -158,14 +158,14 @@ protected theorem isOpen [TopologicalSpace α] (F : Realizer α) (s : F.σ) : Is
isOpen_iff_nhds.2 fun a m ↦ by simpa using F.mem_nhds.2 ⟨s, m, Subset.refl _⟩
#align ctop.realizer.is_open Ctop.Realizer.isOpen
-theorem ext' [T : TopologicalSpace α] {σ : Type _} {F : Ctop α σ}
+theorem ext' [T : TopologicalSpace α] {σ : Type*} {F : Ctop α σ}
(H : ∀ a s, s ∈ 𝓝 a ↔ ∃ b, a ∈ F b ∧ F b ⊆ s) : F.toTopsp = T := by
refine' eq_of_nhds_eq_nhds fun x ↦ _
ext s
rw [mem_nhds_toTopsp, H]
#align ctop.realizer.ext' Ctop.Realizer.ext'
-theorem ext [T : TopologicalSpace α] {σ : Type _} {F : Ctop α σ} (H₁ : ∀ a, IsOpen (F a))
+theorem ext [T : TopologicalSpace α] {σ : Type*} {F : Ctop α σ} (H₁ : ∀ a, IsOpen (F a))
(H₂ : ∀ a s, s ∈ 𝓝 a → ∃ b, a ∈ F b ∧ F b ⊆ s) : F.toTopsp = T :=
ext' fun a s ↦ ⟨H₂ a s, fun ⟨_b, h₁, h₂⟩ ↦ mem_nhds_iff.2 ⟨_, h₂, H₁ _, h₁⟩⟩
#align ctop.realizer.ext Ctop.Realizer.ext
@@ -2,16 +2,13 @@
Copyright (c) 2017 Mario Carneiro. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Mario Carneiro
-
-! This file was ported from Lean 3 source module data.analysis.topology
-! leanprover-community/mathlib commit 55d771df074d0dd020139ee1cd4b95521422df9f
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Data.Analysis.Filter
import Mathlib.Topology.Bases
import Mathlib.Topology.LocallyFinite
+#align_import data.analysis.topology from "leanprover-community/mathlib"@"55d771df074d0dd020139ee1cd4b95521422df9f"
+
/-!
# Computational realization of topological spaces (experimental)
This is the second half of the changes originally in #5699, removing all occurrences of ;
after a space and implementing a linter rule to enforce it.
In most cases this 2-character substring has a space after it, so the following command was run first:
find . -type f -name "*.lean" -exec sed -i -E 's/ ; /; /g' {} \;
The remaining cases were few enough in number that they were done manually.
@@ -80,7 +80,7 @@ def ofEquiv (E : σ ≃ τ) : Ctop α σ → Ctop α τ
@[simp]
theorem ofEquiv_val (E : σ ≃ τ) (F : Ctop α σ) (a : τ) : F.ofEquiv E a = F (E.symm a) := by
- cases F ; rfl
+ cases F; rfl
#align ctop.of_equiv_val Ctop.ofEquiv_val
end
@@ -129,12 +129,12 @@ namespace Ctop.Realizer
protected theorem is_basis [T : TopologicalSpace α] (F : Realizer α) :
TopologicalSpace.IsTopologicalBasis (Set.range F.F.f) := by
- have := toTopsp_isTopologicalBasis F.F ; rwa [F.eq] at this
+ have := toTopsp_isTopologicalBasis F.F; rwa [F.eq] at this
#align ctop.realizer.is_basis Ctop.Realizer.is_basis
protected theorem mem_nhds [T : TopologicalSpace α] (F : Realizer α) {s : Set α} {a : α} :
s ∈ 𝓝 a ↔ ∃ b, a ∈ F.F b ∧ F.F b ⊆ s := by
- have := @mem_nhds_toTopsp _ _ F.F s a ; rwa [F.eq] at this
+ have := @mem_nhds_toTopsp _ _ F.F s a; rwa [F.eq] at this
#align ctop.realizer.mem_nhds Ctop.Realizer.mem_nhds
theorem isOpen_iff [TopologicalSpace α] (F : Realizer α) {s : Set α} :
@@ -148,8 +148,8 @@ theorem isClosed_iff [TopologicalSpace α] (F : Realizer α) {s : Set α} :
F.isOpen_iff.trans <|
forall_congr' fun a ↦
show (a ∉ s → ∃ b : F.σ, a ∈ F.F b ∧ ∀ z ∈ F.F b, z ∉ s) ↔ _ by
- haveI := Classical.propDecidable ; rw [not_imp_comm] ;
- simp [not_exists, not_and, not_forall, and_comm]
+ haveI := Classical.propDecidable; rw [not_imp_comm]
+ simp [not_exists, not_and, not_forall, and_comm]
#align ctop.realizer.is_closed_iff Ctop.Realizer.isClosed_iff
theorem mem_interior_iff [TopologicalSpace α] (F : Realizer α) {s : Set α} {a : α} :
@@ -205,7 +205,7 @@ theorem ofEquiv_σ (F : Realizer α) (E : F.σ ≃ τ) : (F.ofEquiv E).σ = τ :
@[simp]
theorem ofEquiv_F (F : Realizer α) (E : F.σ ≃ τ) (s : τ) : (F.ofEquiv E).F s = F.F (E.symm s) := by
- delta ofEquiv ; simp
+ delta ofEquiv; simp
set_option linter.uppercaseLean3 false in
#align ctop.realizer.of_equiv_F Ctop.Realizer.ofEquiv_F
@@ -281,6 +281,6 @@ def Compact.Realizer [TopologicalSpace α] (s : Set α) :=
instance [TopologicalSpace α] : Inhabited (Compact.Realizer (∅ : Set α)) :=
⟨fun {f} F x h hF ↦ by
- suffices : f = ⊥ ; exact absurd this h
+ suffices : f = ⊥; exact absurd this h
rw [← F.eq, eq_bot_iff]
exact λ s _ ↦ ⟨x, hF.trans s.empty_subset⟩⟩
fix-comments.py
on all files.@@ -240,7 +240,7 @@ theorem tendsto_nhds_iff {m : β → α} {f : Filter β} (F : f.Realizer) (R : R
end Ctop.Realizer
-/-- A `locally_finite.realizer F f` is a realization that `f` is locally finite, namely it is a
+/-- A `LocallyFinite.Realizer F f` is a realization that `f` is locally finite, namely it is a
choice of open sets from the basis of `F` such that they intersect only finitely many of the values
of `f`. -/
structure LocallyFinite.Realizer [TopologicalSpace α] (F : Ctop.Realizer α) (f : β → Set α) where
@@ -149,7 +149,7 @@ theorem isClosed_iff [TopologicalSpace α] (F : Realizer α) {s : Set α} :
forall_congr' fun a ↦
show (a ∉ s → ∃ b : F.σ, a ∈ F.F b ∧ ∀ z ∈ F.F b, z ∉ s) ↔ _ by
haveI := Classical.propDecidable ; rw [not_imp_comm] ;
- simp [not_exists, not_and, not_forall, and_comm]; trivial
+ simp [not_exists, not_and, not_forall, and_comm]
#align ctop.realizer.is_closed_iff Ctop.Realizer.isClosed_iff
theorem mem_interior_iff [TopologicalSpace α] (F : Realizer α) {s : Set α} {a : α} :
@@ -4,12 +4,13 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Mario Carneiro
! This file was ported from Lean 3 source module data.analysis.topology
-! leanprover-community/mathlib commit 28aa996fc6fb4317f0083c4e6daf79878d81be33
+! leanprover-community/mathlib commit 55d771df074d0dd020139ee1cd4b95521422df9f
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathlib.Data.Analysis.Filter
import Mathlib.Topology.Bases
+import Mathlib.Topology.LocallyFinite
/-!
# Computational realization of topological spaces (experimental)
vscode is already configured by .vscode/settings.json
to trim these on save. It's not clear how they've managed to stick around.
By doing this all in one PR now, it avoids getting random whitespace diffs in PRs later.
This was done with a regex search in vscode,
@@ -174,7 +174,7 @@ theorem ext [T : TopologicalSpace α] {σ : Type _} {F : Ctop α σ} (H₁ : ∀
variable [TopologicalSpace α]
--- Porting note: add non-computable : because
+-- Porting note: add non-computable : because
-- > ... it depends on `Inter.inter`, and it does not have executable code.
/-- The topological space realizer made of the open sets. -/
protected noncomputable def id : Realizer α :=
The unported dependencies are