topology.noetherian_space
⟷
Mathlib.Topology.NoetherianSpace
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)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -3,7 +3,7 @@ Copyright (c) 2022 Andrew Yang. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Andrew Yang
-/
-import Order.CompactlyGenerated
+import Order.CompactlyGenerated.Basic
import Topology.Sets.Closeds
#align_import topology.noetherian_space from "leanprover-community/mathlib"@"34ee86e6a59d911a8e4f89b68793ee7577ae79c7"
@@ -156,7 +156,7 @@ theorem NoetherianSpace.range [NoetherianSpace α] (f : α → β) (hf : Continu
#align topological_space.noetherian_space.range TopologicalSpace.NoetherianSpace.range
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (t «expr ⊆ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (t «expr ⊆ » s) -/
#print TopologicalSpace.noetherianSpace_set_iff /-
theorem noetherianSpace_set_iff (s : Set α) : NoetherianSpace s ↔ ∀ (t) (_ : t ⊆ s), IsCompact t :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -231,8 +231,8 @@ theorem NoetherianSpace.exists_finset_irreducible [NoetherianSpace α] (s : Clos
rintro ⟨k, hk⟩
cases finset.mem_singleton.mp hk
exact ⟨h, h₁⟩
- · rw [isPreirreducible_iff_closed_union_closed] at h₁
- push_neg at h₁
+ · rw [isPreirreducible_iff_closed_union_closed] at h₁
+ push_neg at h₁
obtain ⟨z₁, z₂, hz₁, hz₂, h, hz₁', hz₂'⟩ := h₁
obtain ⟨S₁, hS₁, hS₁'⟩ := H (s ⊓ ⟨z₁, hz₁⟩) (inf_lt_left.2 hz₁')
obtain ⟨S₂, hS₂, hS₂'⟩ := H (s ⊓ ⟨z₂, hz₂⟩) (inf_lt_left.2 hz₂')
@@ -258,7 +258,7 @@ theorem NoetherianSpace.finite_irreducibleComponents [NoetherianSpace α] :
exact z.2
· exact (Set.subset_univ _).trans ((congr_arg coe hS₂).trans <| by simp).Subset
obtain ⟨s, hs, e⟩ := finset.mem_image.mp hz
- rw [← e] at hz'
+ rw [← e] at hz'
refine' ⟨s, hs, _⟩
symm
suffices K ≤ s by exact this.antisymm (hK.2 (hS₁ ⟨s, hs⟩) this)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -217,13 +217,52 @@ instance (priority := 100) Finite.to_noetherianSpace [Finite α] : NoetherianSpa
#print TopologicalSpace.NoetherianSpace.exists_finset_irreducible /-
theorem NoetherianSpace.exists_finset_irreducible [NoetherianSpace α] (s : Closeds α) :
- ∃ S : Finset (Closeds α), (∀ k : S, IsIrreducible (k : Set α)) ∧ s = S.sup id := by classical
+ ∃ S : Finset (Closeds α), (∀ k : S, IsIrreducible (k : Set α)) ∧ s = S.sup id := by
+ classical
+ have := ((noetherian_space_tfae α).out 0 1).mp inferInstance
+ apply WellFounded.induction this s
+ clear s
+ intro s H
+ by_cases h₁ : IsPreirreducible s.1
+ cases h₂ : s.1.eq_empty_or_nonempty
+ · use∅; refine' ⟨fun k => k.2.elim, _⟩; rw [Finset.sup_empty]; ext1; exact h
+ · use{s}
+ simp only [coe_coe, Finset.sup_singleton, id.def, eq_self_iff_true, and_true_iff]
+ rintro ⟨k, hk⟩
+ cases finset.mem_singleton.mp hk
+ exact ⟨h, h₁⟩
+ · rw [isPreirreducible_iff_closed_union_closed] at h₁
+ push_neg at h₁
+ obtain ⟨z₁, z₂, hz₁, hz₂, h, hz₁', hz₂'⟩ := h₁
+ obtain ⟨S₁, hS₁, hS₁'⟩ := H (s ⊓ ⟨z₁, hz₁⟩) (inf_lt_left.2 hz₁')
+ obtain ⟨S₂, hS₂, hS₂'⟩ := H (s ⊓ ⟨z₂, hz₂⟩) (inf_lt_left.2 hz₂')
+ refine' ⟨S₁ ∪ S₂, fun k => _, _⟩
+ · cases' finset.mem_union.mp k.2 with h' h'; exacts [hS₁ ⟨k, h'⟩, hS₂ ⟨k, h'⟩]
+ · rwa [Finset.sup_union, ← hS₁', ← hS₂', ← inf_sup_left, left_eq_inf]
#align topological_space.noetherian_space.exists_finset_irreducible TopologicalSpace.NoetherianSpace.exists_finset_irreducible
-/
#print TopologicalSpace.NoetherianSpace.finite_irreducibleComponents /-
theorem NoetherianSpace.finite_irreducibleComponents [NoetherianSpace α] :
- (irreducibleComponents α).Finite := by classical
+ (irreducibleComponents α).Finite := by
+ classical
+ obtain ⟨S, hS₁, hS₂⟩ := noetherian_space.exists_finset_irreducible (⊤ : closeds α)
+ suffices irreducibleComponents α ⊆ coe '' (S : Set <| closeds α) by
+ exact Set.Finite.subset ((Set.Finite.intro inferInstance).image _) this
+ intro K hK
+ obtain ⟨z, hz, hz'⟩ : ∃ (z : Set α) (H : z ∈ Finset.image coe S), K ⊆ z :=
+ by
+ convert is_irreducible_iff_sUnion_closed.mp hK.1 (S.image coe) _ _
+ · simp only [Finset.mem_image, exists_prop, forall_exists_index, and_imp]
+ rintro _ z hz rfl
+ exact z.2
+ · exact (Set.subset_univ _).trans ((congr_arg coe hS₂).trans <| by simp).Subset
+ obtain ⟨s, hs, e⟩ := finset.mem_image.mp hz
+ rw [← e] at hz'
+ refine' ⟨s, hs, _⟩
+ symm
+ suffices K ≤ s by exact this.antisymm (hK.2 (hS₁ ⟨s, hs⟩) this)
+ simpa
#align topological_space.noetherian_space.finite_irreducible_components TopologicalSpace.NoetherianSpace.finite_irreducibleComponents
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -217,52 +217,13 @@ instance (priority := 100) Finite.to_noetherianSpace [Finite α] : NoetherianSpa
#print TopologicalSpace.NoetherianSpace.exists_finset_irreducible /-
theorem NoetherianSpace.exists_finset_irreducible [NoetherianSpace α] (s : Closeds α) :
- ∃ S : Finset (Closeds α), (∀ k : S, IsIrreducible (k : Set α)) ∧ s = S.sup id := by
- classical
- have := ((noetherian_space_tfae α).out 0 1).mp inferInstance
- apply WellFounded.induction this s
- clear s
- intro s H
- by_cases h₁ : IsPreirreducible s.1
- cases h₂ : s.1.eq_empty_or_nonempty
- · use∅; refine' ⟨fun k => k.2.elim, _⟩; rw [Finset.sup_empty]; ext1; exact h
- · use{s}
- simp only [coe_coe, Finset.sup_singleton, id.def, eq_self_iff_true, and_true_iff]
- rintro ⟨k, hk⟩
- cases finset.mem_singleton.mp hk
- exact ⟨h, h₁⟩
- · rw [isPreirreducible_iff_closed_union_closed] at h₁
- push_neg at h₁
- obtain ⟨z₁, z₂, hz₁, hz₂, h, hz₁', hz₂'⟩ := h₁
- obtain ⟨S₁, hS₁, hS₁'⟩ := H (s ⊓ ⟨z₁, hz₁⟩) (inf_lt_left.2 hz₁')
- obtain ⟨S₂, hS₂, hS₂'⟩ := H (s ⊓ ⟨z₂, hz₂⟩) (inf_lt_left.2 hz₂')
- refine' ⟨S₁ ∪ S₂, fun k => _, _⟩
- · cases' finset.mem_union.mp k.2 with h' h'; exacts [hS₁ ⟨k, h'⟩, hS₂ ⟨k, h'⟩]
- · rwa [Finset.sup_union, ← hS₁', ← hS₂', ← inf_sup_left, left_eq_inf]
+ ∃ S : Finset (Closeds α), (∀ k : S, IsIrreducible (k : Set α)) ∧ s = S.sup id := by classical
#align topological_space.noetherian_space.exists_finset_irreducible TopologicalSpace.NoetherianSpace.exists_finset_irreducible
-/
#print TopologicalSpace.NoetherianSpace.finite_irreducibleComponents /-
theorem NoetherianSpace.finite_irreducibleComponents [NoetherianSpace α] :
- (irreducibleComponents α).Finite := by
- classical
- obtain ⟨S, hS₁, hS₂⟩ := noetherian_space.exists_finset_irreducible (⊤ : closeds α)
- suffices irreducibleComponents α ⊆ coe '' (S : Set <| closeds α) by
- exact Set.Finite.subset ((Set.Finite.intro inferInstance).image _) this
- intro K hK
- obtain ⟨z, hz, hz'⟩ : ∃ (z : Set α) (H : z ∈ Finset.image coe S), K ⊆ z :=
- by
- convert is_irreducible_iff_sUnion_closed.mp hK.1 (S.image coe) _ _
- · simp only [Finset.mem_image, exists_prop, forall_exists_index, and_imp]
- rintro _ z hz rfl
- exact z.2
- · exact (Set.subset_univ _).trans ((congr_arg coe hS₂).trans <| by simp).Subset
- obtain ⟨s, hs, e⟩ := finset.mem_image.mp hz
- rw [← e] at hz'
- refine' ⟨s, hs, _⟩
- symm
- suffices K ≤ s by exact this.antisymm (hK.2 (hS₁ ⟨s, hs⟩) this)
- simpa
+ (irreducibleComponents α).Finite := by classical
#align topological_space.noetherian_space.finite_irreducible_components TopologicalSpace.NoetherianSpace.finite_irreducibleComponents
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,8 +3,8 @@ Copyright (c) 2022 Andrew Yang. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Andrew Yang
-/
-import Mathbin.Order.CompactlyGenerated
-import Mathbin.Topology.Sets.Closeds
+import Order.CompactlyGenerated
+import Topology.Sets.Closeds
#align_import topology.noetherian_space from "leanprover-community/mathlib"@"34ee86e6a59d911a8e4f89b68793ee7577ae79c7"
@@ -156,7 +156,7 @@ theorem NoetherianSpace.range [NoetherianSpace α] (f : α → β) (hf : Continu
#align topological_space.noetherian_space.range TopologicalSpace.NoetherianSpace.range
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (t «expr ⊆ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (t «expr ⊆ » s) -/
#print TopologicalSpace.noetherianSpace_set_iff /-
theorem noetherianSpace_set_iff (s : Set α) : NoetherianSpace s ↔ ∀ (t) (_ : t ⊆ s), IsCompact t :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/001ffdc42920050657fd45bd2b8bfbec8eaaeb29
@@ -105,7 +105,8 @@ theorem noetherianSpace_TFAE :
∀ s : Opens α, IsCompact (s : Set α)] :=
by
tfae_have 1 ↔ 2
- · refine' (noetherian_space_iff _).trans (Surjective.wellFounded_iff opens.compl_bijective.2 _)
+ · refine'
+ (noetherian_space_iff _).trans (Function.Surjective.wellFounded_iff opens.compl_bijective.2 _)
exact fun s t => (OrderIso.compl (Set α)).lt_iff_lt.symm
tfae_have 1 ↔ 4
· exact noetherian_space_iff_opens α
mathlib commit https://github.com/leanprover-community/mathlib/commit/63721b2c3eba6c325ecf8ae8cca27155a4f6306f
@@ -224,8 +224,8 @@ theorem NoetherianSpace.exists_finset_irreducible [NoetherianSpace α] (s : Clos
intro s H
by_cases h₁ : IsPreirreducible s.1
cases h₂ : s.1.eq_empty_or_nonempty
- · use ∅; refine' ⟨fun k => k.2.elim, _⟩; rw [Finset.sup_empty]; ext1; exact h
- · use {s}
+ · use∅; refine' ⟨fun k => k.2.elim, _⟩; rw [Finset.sup_empty]; ext1; exact h
+ · use{s}
simp only [coe_coe, Finset.sup_singleton, id.def, eq_self_iff_true, and_true_iff]
rintro ⟨k, hk⟩
cases finset.mem_singleton.mp hk
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,15 +2,12 @@
Copyright (c) 2022 Andrew Yang. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Andrew Yang
-
-! This file was ported from Lean 3 source module topology.noetherian_space
-! leanprover-community/mathlib commit 34ee86e6a59d911a8e4f89b68793ee7577ae79c7
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Order.CompactlyGenerated
import Mathbin.Topology.Sets.Closeds
+#align_import topology.noetherian_space from "leanprover-community/mathlib"@"34ee86e6a59d911a8e4f89b68793ee7577ae79c7"
+
/-!
# Noetherian space
@@ -158,7 +155,7 @@ theorem NoetherianSpace.range [NoetherianSpace α] (f : α → β) (hf : Continu
#align topological_space.noetherian_space.range TopologicalSpace.NoetherianSpace.range
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (t «expr ⊆ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (t «expr ⊆ » s) -/
#print TopologicalSpace.noetherianSpace_set_iff /-
theorem noetherianSpace_set_iff (s : Set α) : NoetherianSpace s ↔ ∀ (t) (_ : t ⊆ s), IsCompact t :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -84,10 +84,12 @@ protected theorem NoetherianSpace.isCompact [NoetherianSpace α] (s : Set α) :
#align topological_space.noetherian_space.is_compact TopologicalSpace.NoetherianSpace.isCompact
-/
+#print Inducing.noetherianSpace /-
protected theorem Inducing.noetherianSpace [NoetherianSpace α] {i : β → α} (hi : Inducing i) :
NoetherianSpace β :=
(noetherianSpace_iff_opens _).2 fun s => hi.isCompact_iff.1 (NoetherianSpace.isCompact _)
#align topological_space.inducing.noetherian_space Inducing.noetherianSpace
+-/
#print TopologicalSpace.NoetherianSpace.set /-
instance NoetherianSpace.set [h : NoetherianSpace α] (s : Set α) : NoetherianSpace s :=
@@ -99,6 +101,7 @@ variable (α)
example (α : Type _) : Set α ≃o (Set α)ᵒᵈ := by refine' OrderIso.compl (Set α)
+#print TopologicalSpace.noetherianSpace_TFAE /-
theorem noetherianSpace_TFAE :
TFAE
[NoetherianSpace α, WellFounded fun s t : Closeds α => s < t, ∀ s : Set α, IsCompact s,
@@ -115,6 +118,7 @@ theorem noetherianSpace_TFAE :
· exact fun H s => H s
tfae_finish
#align topological_space.noetherian_space_tfae TopologicalSpace.noetherianSpace_TFAE
+-/
variable {α β}
@@ -128,6 +132,7 @@ instance {α} : NoetherianSpace (CofiniteTopology α) :=
exact ⟨a, ha, Or.inr hf⟩
· exact ⟨a, filter.le_principal_iff.mp hs, Or.inl le_rfl⟩
+#print TopologicalSpace.noetherianSpace_of_surjective /-
theorem noetherianSpace_of_surjective [NoetherianSpace α] (f : α → β) (hf : Continuous f)
(hf' : Function.Surjective f) : NoetherianSpace β :=
by
@@ -136,17 +141,22 @@ theorem noetherianSpace_of_surjective [NoetherianSpace α] (f : α → β) (hf :
obtain ⟨t, e⟩ := set.image_surjective.mpr hf' s
exact e ▸ (noetherian_space.is_compact t).image hf
#align topological_space.noetherian_space_of_surjective TopologicalSpace.noetherianSpace_of_surjective
+-/
+#print TopologicalSpace.noetherianSpace_iff_of_homeomorph /-
theorem noetherianSpace_iff_of_homeomorph (f : α ≃ₜ β) : NoetherianSpace α ↔ NoetherianSpace β :=
⟨fun h => @noetherianSpace_of_surjective _ _ h f f.Continuous f.Surjective, fun h =>
@noetherianSpace_of_surjective _ _ h f.symm f.symm.Continuous f.symm.Surjective⟩
#align topological_space.noetherian_space_iff_of_homeomorph TopologicalSpace.noetherianSpace_iff_of_homeomorph
+-/
+#print TopologicalSpace.NoetherianSpace.range /-
theorem NoetherianSpace.range [NoetherianSpace α] (f : α → β) (hf : Continuous f) :
NoetherianSpace (Set.range f) :=
noetherianSpace_of_surjective (Set.codRestrict f _ Set.mem_range_self) (by continuity)
fun ⟨a, b, h⟩ => ⟨b, Subtype.ext h⟩
#align topological_space.noetherian_space.range TopologicalSpace.NoetherianSpace.range
+-/
/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (t «expr ⊆ » s) -/
#print TopologicalSpace.noetherianSpace_set_iff /-
@@ -207,6 +217,7 @@ instance (priority := 100) Finite.to_noetherianSpace [Finite α] : NoetherianSpa
#align topological_space.finite.to_noetherian_space TopologicalSpace.Finite.to_noetherianSpace
-/
+#print TopologicalSpace.NoetherianSpace.exists_finset_irreducible /-
theorem NoetherianSpace.exists_finset_irreducible [NoetherianSpace α] (s : Closeds α) :
∃ S : Finset (Closeds α), (∀ k : S, IsIrreducible (k : Set α)) ∧ s = S.sup id := by
classical
@@ -231,6 +242,7 @@ theorem NoetherianSpace.exists_finset_irreducible [NoetherianSpace α] (s : Clos
· cases' finset.mem_union.mp k.2 with h' h'; exacts [hS₁ ⟨k, h'⟩, hS₂ ⟨k, h'⟩]
· rwa [Finset.sup_union, ← hS₁', ← hS₂', ← inf_sup_left, left_eq_inf]
#align topological_space.noetherian_space.exists_finset_irreducible TopologicalSpace.NoetherianSpace.exists_finset_irreducible
+-/
#print TopologicalSpace.NoetherianSpace.finite_irreducibleComponents /-
theorem NoetherianSpace.finite_irreducibleComponents [NoetherianSpace α] :
mathlib commit https://github.com/leanprover-community/mathlib/commit/31c24aa72e7b3e5ed97a8412470e904f82b81004
@@ -148,7 +148,7 @@ theorem NoetherianSpace.range [NoetherianSpace α] (f : α → β) (hf : Continu
fun ⟨a, b, h⟩ => ⟨b, Subtype.ext h⟩
#align topological_space.noetherian_space.range TopologicalSpace.NoetherianSpace.range
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (t «expr ⊆ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (t «expr ⊆ » s) -/
#print TopologicalSpace.noetherianSpace_set_iff /-
theorem noetherianSpace_set_iff (s : Set α) : NoetherianSpace s ↔ ∀ (t) (_ : t ⊆ s), IsCompact t :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -210,49 +210,49 @@ instance (priority := 100) Finite.to_noetherianSpace [Finite α] : NoetherianSpa
theorem NoetherianSpace.exists_finset_irreducible [NoetherianSpace α] (s : Closeds α) :
∃ S : Finset (Closeds α), (∀ k : S, IsIrreducible (k : Set α)) ∧ s = S.sup id := by
classical
- have := ((noetherian_space_tfae α).out 0 1).mp inferInstance
- apply WellFounded.induction this s
- clear s
- intro s H
- by_cases h₁ : IsPreirreducible s.1
- cases h₂ : s.1.eq_empty_or_nonempty
- · use ∅; refine' ⟨fun k => k.2.elim, _⟩; rw [Finset.sup_empty]; ext1; exact h
- · use {s}
- simp only [coe_coe, Finset.sup_singleton, id.def, eq_self_iff_true, and_true_iff]
- rintro ⟨k, hk⟩
- cases finset.mem_singleton.mp hk
- exact ⟨h, h₁⟩
- · rw [isPreirreducible_iff_closed_union_closed] at h₁
- push_neg at h₁
- obtain ⟨z₁, z₂, hz₁, hz₂, h, hz₁', hz₂'⟩ := h₁
- obtain ⟨S₁, hS₁, hS₁'⟩ := H (s ⊓ ⟨z₁, hz₁⟩) (inf_lt_left.2 hz₁')
- obtain ⟨S₂, hS₂, hS₂'⟩ := H (s ⊓ ⟨z₂, hz₂⟩) (inf_lt_left.2 hz₂')
- refine' ⟨S₁ ∪ S₂, fun k => _, _⟩
- · cases' finset.mem_union.mp k.2 with h' h'; exacts [hS₁ ⟨k, h'⟩, hS₂ ⟨k, h'⟩]
- · rwa [Finset.sup_union, ← hS₁', ← hS₂', ← inf_sup_left, left_eq_inf]
+ have := ((noetherian_space_tfae α).out 0 1).mp inferInstance
+ apply WellFounded.induction this s
+ clear s
+ intro s H
+ by_cases h₁ : IsPreirreducible s.1
+ cases h₂ : s.1.eq_empty_or_nonempty
+ · use ∅; refine' ⟨fun k => k.2.elim, _⟩; rw [Finset.sup_empty]; ext1; exact h
+ · use {s}
+ simp only [coe_coe, Finset.sup_singleton, id.def, eq_self_iff_true, and_true_iff]
+ rintro ⟨k, hk⟩
+ cases finset.mem_singleton.mp hk
+ exact ⟨h, h₁⟩
+ · rw [isPreirreducible_iff_closed_union_closed] at h₁
+ push_neg at h₁
+ obtain ⟨z₁, z₂, hz₁, hz₂, h, hz₁', hz₂'⟩ := h₁
+ obtain ⟨S₁, hS₁, hS₁'⟩ := H (s ⊓ ⟨z₁, hz₁⟩) (inf_lt_left.2 hz₁')
+ obtain ⟨S₂, hS₂, hS₂'⟩ := H (s ⊓ ⟨z₂, hz₂⟩) (inf_lt_left.2 hz₂')
+ refine' ⟨S₁ ∪ S₂, fun k => _, _⟩
+ · cases' finset.mem_union.mp k.2 with h' h'; exacts [hS₁ ⟨k, h'⟩, hS₂ ⟨k, h'⟩]
+ · rwa [Finset.sup_union, ← hS₁', ← hS₂', ← inf_sup_left, left_eq_inf]
#align topological_space.noetherian_space.exists_finset_irreducible TopologicalSpace.NoetherianSpace.exists_finset_irreducible
#print TopologicalSpace.NoetherianSpace.finite_irreducibleComponents /-
theorem NoetherianSpace.finite_irreducibleComponents [NoetherianSpace α] :
(irreducibleComponents α).Finite := by
classical
- obtain ⟨S, hS₁, hS₂⟩ := noetherian_space.exists_finset_irreducible (⊤ : closeds α)
- suffices irreducibleComponents α ⊆ coe '' (S : Set <| closeds α) by
- exact Set.Finite.subset ((Set.Finite.intro inferInstance).image _) this
- intro K hK
- obtain ⟨z, hz, hz'⟩ : ∃ (z : Set α) (H : z ∈ Finset.image coe S), K ⊆ z :=
- by
- convert is_irreducible_iff_sUnion_closed.mp hK.1 (S.image coe) _ _
- · simp only [Finset.mem_image, exists_prop, forall_exists_index, and_imp]
- rintro _ z hz rfl
- exact z.2
- · exact (Set.subset_univ _).trans ((congr_arg coe hS₂).trans <| by simp).Subset
- obtain ⟨s, hs, e⟩ := finset.mem_image.mp hz
- rw [← e] at hz'
- refine' ⟨s, hs, _⟩
- symm
- suffices K ≤ s by exact this.antisymm (hK.2 (hS₁ ⟨s, hs⟩) this)
- simpa
+ obtain ⟨S, hS₁, hS₂⟩ := noetherian_space.exists_finset_irreducible (⊤ : closeds α)
+ suffices irreducibleComponents α ⊆ coe '' (S : Set <| closeds α) by
+ exact Set.Finite.subset ((Set.Finite.intro inferInstance).image _) this
+ intro K hK
+ obtain ⟨z, hz, hz'⟩ : ∃ (z : Set α) (H : z ∈ Finset.image coe S), K ⊆ z :=
+ by
+ convert is_irreducible_iff_sUnion_closed.mp hK.1 (S.image coe) _ _
+ · simp only [Finset.mem_image, exists_prop, forall_exists_index, and_imp]
+ rintro _ z hz rfl
+ exact z.2
+ · exact (Set.subset_univ _).trans ((congr_arg coe hS₂).trans <| by simp).Subset
+ obtain ⟨s, hs, e⟩ := finset.mem_image.mp hz
+ rw [← e] at hz'
+ refine' ⟨s, hs, _⟩
+ symm
+ suffices K ≤ s by exact this.antisymm (hK.2 (hS₁ ⟨s, hs⟩) this)
+ simpa
#align topological_space.noetherian_space.finite_irreducible_components TopologicalSpace.NoetherianSpace.finite_irreducibleComponents
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -175,7 +175,7 @@ theorem NoetherianSpace.iUnion {ι : Type _} (f : ι → Set α) [Finite ι]
[hf : ∀ i, NoetherianSpace (f i)] : NoetherianSpace (⋃ i, f i) :=
by
cases nonempty_fintype ι
- simp_rw [noetherian_space_set_iff] at hf⊢
+ simp_rw [noetherian_space_set_iff] at hf ⊢
intro t ht
rw [← set.inter_eq_left_iff_subset.mpr ht, Set.inter_iUnion]
exact isCompact_iUnion fun i => hf i _ (Set.inter_subset_right _ _)
@@ -222,13 +222,13 @@ theorem NoetherianSpace.exists_finset_irreducible [NoetherianSpace α] (s : Clos
rintro ⟨k, hk⟩
cases finset.mem_singleton.mp hk
exact ⟨h, h₁⟩
- · rw [isPreirreducible_iff_closed_union_closed] at h₁
- push_neg at h₁
+ · rw [isPreirreducible_iff_closed_union_closed] at h₁
+ push_neg at h₁
obtain ⟨z₁, z₂, hz₁, hz₂, h, hz₁', hz₂'⟩ := h₁
obtain ⟨S₁, hS₁, hS₁'⟩ := H (s ⊓ ⟨z₁, hz₁⟩) (inf_lt_left.2 hz₁')
obtain ⟨S₂, hS₂, hS₂'⟩ := H (s ⊓ ⟨z₂, hz₂⟩) (inf_lt_left.2 hz₂')
refine' ⟨S₁ ∪ S₂, fun k => _, _⟩
- · cases' finset.mem_union.mp k.2 with h' h'; exacts[hS₁ ⟨k, h'⟩, hS₂ ⟨k, h'⟩]
+ · cases' finset.mem_union.mp k.2 with h' h'; exacts [hS₁ ⟨k, h'⟩, hS₂ ⟨k, h'⟩]
· rwa [Finset.sup_union, ← hS₁', ← hS₂', ← inf_sup_left, left_eq_inf]
#align topological_space.noetherian_space.exists_finset_irreducible TopologicalSpace.NoetherianSpace.exists_finset_irreducible
@@ -240,7 +240,7 @@ theorem NoetherianSpace.finite_irreducibleComponents [NoetherianSpace α] :
suffices irreducibleComponents α ⊆ coe '' (S : Set <| closeds α) by
exact Set.Finite.subset ((Set.Finite.intro inferInstance).image _) this
intro K hK
- obtain ⟨z, hz, hz'⟩ : ∃ (z : Set α)(H : z ∈ Finset.image coe S), K ⊆ z :=
+ obtain ⟨z, hz, hz'⟩ : ∃ (z : Set α) (H : z ∈ Finset.image coe S), K ⊆ z :=
by
convert is_irreducible_iff_sUnion_closed.mp hK.1 (S.image coe) _ _
· simp only [Finset.mem_image, exists_prop, forall_exists_index, and_imp]
@@ -248,7 +248,7 @@ theorem NoetherianSpace.finite_irreducibleComponents [NoetherianSpace α] :
exact z.2
· exact (Set.subset_univ _).trans ((congr_arg coe hS₂).trans <| by simp).Subset
obtain ⟨s, hs, e⟩ := finset.mem_image.mp hz
- rw [← e] at hz'
+ rw [← e] at hz'
refine' ⟨s, hs, _⟩
symm
suffices K ≤ s by exact this.antisymm (hK.2 (hS₁ ⟨s, hs⟩) this)
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -84,12 +84,6 @@ protected theorem NoetherianSpace.isCompact [NoetherianSpace α] (s : Set α) :
#align topological_space.noetherian_space.is_compact TopologicalSpace.NoetherianSpace.isCompact
-/
-/- warning: topological_space.inducing.noetherian_space -> Inducing.noetherianSpace is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.NoetherianSpace.{u1} α _inst_1] {i : β -> α}, (Inducing.{u2, u1} β α _inst_2 _inst_1 i) -> (TopologicalSpace.NoetherianSpace.{u2} β _inst_2)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] [_inst_3 : TopologicalSpace.NoetherianSpace.{u2} α _inst_1] {i : β -> α}, (Inducing.{u1, u2} β α _inst_2 _inst_1 i) -> (TopologicalSpace.NoetherianSpace.{u1} β _inst_2)
-Case conversion may be inaccurate. Consider using '#align topological_space.inducing.noetherian_space Inducing.noetherianSpaceₓ'. -/
protected theorem Inducing.noetherianSpace [NoetherianSpace α] {i : β → α} (hi : Inducing i) :
NoetherianSpace β :=
(noetherianSpace_iff_opens _).2 fun s => hi.isCompact_iff.1 (NoetherianSpace.isCompact _)
@@ -105,12 +99,6 @@ variable (α)
example (α : Type _) : Set α ≃o (Set α)ᵒᵈ := by refine' OrderIso.compl (Set α)
-/- warning: topological_space.noetherian_space_tfae -> TopologicalSpace.noetherianSpace_TFAE is a dubious translation:
-lean 3 declaration is
- forall (α : Type.{u1}) [_inst_1 : TopologicalSpace.{u1} α], List.TFAE (List.cons.{0} Prop (TopologicalSpace.NoetherianSpace.{u1} α _inst_1) (List.cons.{0} Prop (WellFounded.{succ u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (fun (s : TopologicalSpace.Closeds.{u1} α _inst_1) (t : TopologicalSpace.Closeds.{u1} α _inst_1) => LT.lt.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (Preorder.toHasLt.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (PartialOrder.toPreorder.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (SetLike.partialOrder.{u1, u1} (TopologicalSpace.Closeds.{u1} α _inst_1) α (TopologicalSpace.Closeds.setLike.{u1} α _inst_1)))) s t)) (List.cons.{0} Prop (forall (s : Set.{u1} α), IsCompact.{u1} α _inst_1 s) (List.cons.{0} Prop (forall (s : TopologicalSpace.Opens.{u1} α _inst_1), IsCompact.{u1} α _inst_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (TopologicalSpace.Opens.{u1} α _inst_1) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (TopologicalSpace.Opens.{u1} α _inst_1) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (TopologicalSpace.Opens.{u1} α _inst_1) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (TopologicalSpace.Opens.{u1} α _inst_1) α (TopologicalSpace.Opens.setLike.{u1} α _inst_1)))) s)) (List.nil.{0} Prop)))))
-but is expected to have type
- forall (α : Type.{u1}) [_inst_1 : TopologicalSpace.{u1} α], List.TFAE (List.cons.{0} Prop (TopologicalSpace.NoetherianSpace.{u1} α _inst_1) (List.cons.{0} Prop (WellFounded.{succ u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (fun (s : TopologicalSpace.Closeds.{u1} α _inst_1) (t : TopologicalSpace.Closeds.{u1} α _inst_1) => LT.lt.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (Preorder.toLT.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (PartialOrder.toPreorder.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (TopologicalSpace.Closeds.instCompleteLatticeCloseds.{u1} α _inst_1))))) s t)) (List.cons.{0} Prop (forall (s : Set.{u1} α), IsCompact.{u1} α _inst_1 s) (List.cons.{0} Prop (forall (s : TopologicalSpace.Opens.{u1} α _inst_1), IsCompact.{u1} α _inst_1 (SetLike.coe.{u1, u1} (TopologicalSpace.Opens.{u1} α _inst_1) α (TopologicalSpace.Opens.instSetLikeOpens.{u1} α _inst_1) s)) (List.nil.{0} Prop)))))
-Case conversion may be inaccurate. Consider using '#align topological_space.noetherian_space_tfae TopologicalSpace.noetherianSpace_TFAEₓ'. -/
theorem noetherianSpace_TFAE :
TFAE
[NoetherianSpace α, WellFounded fun s t : Closeds α => s < t, ∀ s : Set α, IsCompact s,
@@ -140,12 +128,6 @@ instance {α} : NoetherianSpace (CofiniteTopology α) :=
exact ⟨a, ha, Or.inr hf⟩
· exact ⟨a, filter.le_principal_iff.mp hs, Or.inl le_rfl⟩
-/- warning: topological_space.noetherian_space_of_surjective -> TopologicalSpace.noetherianSpace_of_surjective is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.NoetherianSpace.{u1} α _inst_1] (f : α -> β), (Continuous.{u1, u2} α β _inst_1 _inst_2 f) -> (Function.Surjective.{succ u1, succ u2} α β f) -> (TopologicalSpace.NoetherianSpace.{u2} β _inst_2)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] [_inst_3 : TopologicalSpace.NoetherianSpace.{u2} α _inst_1] (f : α -> β), (Continuous.{u2, u1} α β _inst_1 _inst_2 f) -> (Function.Surjective.{succ u2, succ u1} α β f) -> (TopologicalSpace.NoetherianSpace.{u1} β _inst_2)
-Case conversion may be inaccurate. Consider using '#align topological_space.noetherian_space_of_surjective TopologicalSpace.noetherianSpace_of_surjectiveₓ'. -/
theorem noetherianSpace_of_surjective [NoetherianSpace α] (f : α → β) (hf : Continuous f)
(hf' : Function.Surjective f) : NoetherianSpace β :=
by
@@ -155,23 +137,11 @@ theorem noetherianSpace_of_surjective [NoetherianSpace α] (f : α → β) (hf :
exact e ▸ (noetherian_space.is_compact t).image hf
#align topological_space.noetherian_space_of_surjective TopologicalSpace.noetherianSpace_of_surjective
-/- warning: topological_space.noetherian_space_iff_of_homeomorph -> TopologicalSpace.noetherianSpace_iff_of_homeomorph is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β], (Homeomorph.{u1, u2} α β _inst_1 _inst_2) -> (Iff (TopologicalSpace.NoetherianSpace.{u1} α _inst_1) (TopologicalSpace.NoetherianSpace.{u2} β _inst_2))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β], (Homeomorph.{u2, u1} α β _inst_1 _inst_2) -> (Iff (TopologicalSpace.NoetherianSpace.{u2} α _inst_1) (TopologicalSpace.NoetherianSpace.{u1} β _inst_2))
-Case conversion may be inaccurate. Consider using '#align topological_space.noetherian_space_iff_of_homeomorph TopologicalSpace.noetherianSpace_iff_of_homeomorphₓ'. -/
theorem noetherianSpace_iff_of_homeomorph (f : α ≃ₜ β) : NoetherianSpace α ↔ NoetherianSpace β :=
⟨fun h => @noetherianSpace_of_surjective _ _ h f f.Continuous f.Surjective, fun h =>
@noetherianSpace_of_surjective _ _ h f.symm f.symm.Continuous f.symm.Surjective⟩
#align topological_space.noetherian_space_iff_of_homeomorph TopologicalSpace.noetherianSpace_iff_of_homeomorph
-/- warning: topological_space.noetherian_space.range -> TopologicalSpace.NoetherianSpace.range is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.NoetherianSpace.{u1} α _inst_1] (f : α -> β), (Continuous.{u1, u2} α β _inst_1 _inst_2 f) -> (TopologicalSpace.NoetherianSpace.{u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (Set.range.{u2, succ u1} β α f)) (Subtype.topologicalSpace.{u2} β (fun (x : β) => Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) x (Set.range.{u2, succ u1} β α f)) _inst_2))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] [_inst_3 : TopologicalSpace.NoetherianSpace.{u2} α _inst_1] (f : α -> β), (Continuous.{u2, u1} α β _inst_1 _inst_2 f) -> (TopologicalSpace.NoetherianSpace.{u1} (Set.Elem.{u1} β (Set.range.{u1, succ u2} β α f)) (instTopologicalSpaceSubtype.{u1} β (fun (x : β) => Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) x (Set.range.{u1, succ u2} β α f)) _inst_2))
-Case conversion may be inaccurate. Consider using '#align topological_space.noetherian_space.range TopologicalSpace.NoetherianSpace.rangeₓ'. -/
theorem NoetherianSpace.range [NoetherianSpace α] (f : α → β) (hf : Continuous f) :
NoetherianSpace (Set.range f) :=
noetherianSpace_of_surjective (Set.codRestrict f _ Set.mem_range_self) (by continuity)
@@ -237,12 +207,6 @@ instance (priority := 100) Finite.to_noetherianSpace [Finite α] : NoetherianSpa
#align topological_space.finite.to_noetherian_space TopologicalSpace.Finite.to_noetherianSpace
-/
-/- warning: topological_space.noetherian_space.exists_finset_irreducible -> TopologicalSpace.NoetherianSpace.exists_finset_irreducible is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_3 : TopologicalSpace.NoetherianSpace.{u1} α _inst_1] (s : TopologicalSpace.Closeds.{u1} α _inst_1), Exists.{succ u1} (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) (fun (S : Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) => And (forall (k : coeSort.{succ u1, succ (succ u1)} (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) Type.{u1} (Finset.hasCoeToSort.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) S), IsIrreducible.{u1} α _inst_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) Type.{u1} (Finset.hasCoeToSort.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) S) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) Type.{u1} (Finset.hasCoeToSort.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) S) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) Type.{u1} (Finset.hasCoeToSort.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) S) (Set.{u1} α) (coeTrans.{succ u1, succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) Type.{u1} (Finset.hasCoeToSort.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) S) (TopologicalSpace.Closeds.{u1} α _inst_1) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (TopologicalSpace.Closeds.{u1} α _inst_1) α (TopologicalSpace.Closeds.setLike.{u1} α _inst_1)) (coeSubtype.{succ u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (fun (x : TopologicalSpace.Closeds.{u1} α _inst_1) => Membership.Mem.{u1, u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) (Finset.hasMem.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) x S))))) k)) (Eq.{succ u1} (TopologicalSpace.Closeds.{u1} α _inst_1) s (Finset.sup.{u1, u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (TopologicalSpace.Closeds.{u1} α _inst_1) (Lattice.toSemilatticeSup.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (ConditionallyCompleteLattice.toLattice.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (TopologicalSpace.Closeds.completeLattice.{u1} α _inst_1)))) (BoundedOrder.toOrderBot.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (Preorder.toHasLe.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (PartialOrder.toPreorder.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (SemilatticeSup.toPartialOrder.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (Lattice.toSemilatticeSup.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (ConditionallyCompleteLattice.toLattice.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (TopologicalSpace.Closeds.completeLattice.{u1} α _inst_1))))))) (CompleteLattice.toBoundedOrder.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (TopologicalSpace.Closeds.completeLattice.{u1} α _inst_1))) S (id.{succ u1} (TopologicalSpace.Closeds.{u1} α _inst_1)))))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_3 : TopologicalSpace.NoetherianSpace.{u1} α _inst_1] (s : TopologicalSpace.Closeds.{u1} α _inst_1), Exists.{succ u1} (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) (fun (S : Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) => And (forall (k : Subtype.{succ u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (fun (x : TopologicalSpace.Closeds.{u1} α _inst_1) => Membership.mem.{u1, u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) (Finset.instMembershipFinset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) x S)), IsIrreducible.{u1} α _inst_1 (SetLike.coe.{u1, u1} (TopologicalSpace.Closeds.{u1} α _inst_1) α (TopologicalSpace.Closeds.instSetLikeCloseds.{u1} α _inst_1) (Subtype.val.{succ u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (fun (x : TopologicalSpace.Closeds.{u1} α _inst_1) => Membership.mem.{u1, u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) (Finset.instMembershipFinset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) x S) k))) (Eq.{succ u1} (TopologicalSpace.Closeds.{u1} α _inst_1) s (Finset.sup.{u1, u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (TopologicalSpace.Closeds.{u1} α _inst_1) (Lattice.toSemilatticeSup.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (ConditionallyCompleteLattice.toLattice.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (TopologicalSpace.Closeds.instCompleteLatticeCloseds.{u1} α _inst_1)))) (BoundedOrder.toOrderBot.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (Preorder.toLE.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (PartialOrder.toPreorder.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (SemilatticeSup.toPartialOrder.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (Lattice.toSemilatticeSup.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (ConditionallyCompleteLattice.toLattice.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (TopologicalSpace.Closeds.instCompleteLatticeCloseds.{u1} α _inst_1))))))) (CompleteLattice.toBoundedOrder.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (TopologicalSpace.Closeds.instCompleteLatticeCloseds.{u1} α _inst_1))) S (id.{succ u1} (TopologicalSpace.Closeds.{u1} α _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align topological_space.noetherian_space.exists_finset_irreducible TopologicalSpace.NoetherianSpace.exists_finset_irreducibleₓ'. -/
theorem NoetherianSpace.exists_finset_irreducible [NoetherianSpace α] (s : Closeds α) :
∃ S : Finset (Closeds α), (∀ k : S, IsIrreducible (k : Set α)) ∧ s = S.sup id := by
classical
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -252,11 +252,7 @@ theorem NoetherianSpace.exists_finset_irreducible [NoetherianSpace α] (s : Clos
intro s H
by_cases h₁ : IsPreirreducible s.1
cases h₂ : s.1.eq_empty_or_nonempty
- · use ∅
- refine' ⟨fun k => k.2.elim, _⟩
- rw [Finset.sup_empty]
- ext1
- exact h
+ · use ∅; refine' ⟨fun k => k.2.elim, _⟩; rw [Finset.sup_empty]; ext1; exact h
· use {s}
simp only [coe_coe, Finset.sup_singleton, id.def, eq_self_iff_true, and_true_iff]
rintro ⟨k, hk⟩
@@ -268,8 +264,7 @@ theorem NoetherianSpace.exists_finset_irreducible [NoetherianSpace α] (s : Clos
obtain ⟨S₁, hS₁, hS₁'⟩ := H (s ⊓ ⟨z₁, hz₁⟩) (inf_lt_left.2 hz₁')
obtain ⟨S₂, hS₂, hS₂'⟩ := H (s ⊓ ⟨z₂, hz₂⟩) (inf_lt_left.2 hz₂')
refine' ⟨S₁ ∪ S₂, fun k => _, _⟩
- · cases' finset.mem_union.mp k.2 with h' h'
- exacts[hS₁ ⟨k, h'⟩, hS₂ ⟨k, h'⟩]
+ · cases' finset.mem_union.mp k.2 with h' h'; exacts[hS₁ ⟨k, h'⟩, hS₂ ⟨k, h'⟩]
· rwa [Finset.sup_union, ← hS₁', ← hS₂', ← inf_sup_left, left_eq_inf]
#align topological_space.noetherian_space.exists_finset_irreducible TopologicalSpace.NoetherianSpace.exists_finset_irreducible
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -107,7 +107,7 @@ example (α : Type _) : Set α ≃o (Set α)ᵒᵈ := by refine' OrderIso.compl
/- warning: topological_space.noetherian_space_tfae -> TopologicalSpace.noetherianSpace_TFAE is a dubious translation:
lean 3 declaration is
- forall (α : Type.{u1}) [_inst_1 : TopologicalSpace.{u1} α], List.TFAE (List.cons.{0} Prop (TopologicalSpace.NoetherianSpace.{u1} α _inst_1) (List.cons.{0} Prop (WellFounded.{succ u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (fun (s : TopologicalSpace.Closeds.{u1} α _inst_1) (t : TopologicalSpace.Closeds.{u1} α _inst_1) => LT.lt.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (Preorder.toLT.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (PartialOrder.toPreorder.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (SetLike.partialOrder.{u1, u1} (TopologicalSpace.Closeds.{u1} α _inst_1) α (TopologicalSpace.Closeds.setLike.{u1} α _inst_1)))) s t)) (List.cons.{0} Prop (forall (s : Set.{u1} α), IsCompact.{u1} α _inst_1 s) (List.cons.{0} Prop (forall (s : TopologicalSpace.Opens.{u1} α _inst_1), IsCompact.{u1} α _inst_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (TopologicalSpace.Opens.{u1} α _inst_1) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (TopologicalSpace.Opens.{u1} α _inst_1) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (TopologicalSpace.Opens.{u1} α _inst_1) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (TopologicalSpace.Opens.{u1} α _inst_1) α (TopologicalSpace.Opens.setLike.{u1} α _inst_1)))) s)) (List.nil.{0} Prop)))))
+ forall (α : Type.{u1}) [_inst_1 : TopologicalSpace.{u1} α], List.TFAE (List.cons.{0} Prop (TopologicalSpace.NoetherianSpace.{u1} α _inst_1) (List.cons.{0} Prop (WellFounded.{succ u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (fun (s : TopologicalSpace.Closeds.{u1} α _inst_1) (t : TopologicalSpace.Closeds.{u1} α _inst_1) => LT.lt.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (Preorder.toHasLt.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (PartialOrder.toPreorder.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (SetLike.partialOrder.{u1, u1} (TopologicalSpace.Closeds.{u1} α _inst_1) α (TopologicalSpace.Closeds.setLike.{u1} α _inst_1)))) s t)) (List.cons.{0} Prop (forall (s : Set.{u1} α), IsCompact.{u1} α _inst_1 s) (List.cons.{0} Prop (forall (s : TopologicalSpace.Opens.{u1} α _inst_1), IsCompact.{u1} α _inst_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (TopologicalSpace.Opens.{u1} α _inst_1) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (TopologicalSpace.Opens.{u1} α _inst_1) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (TopologicalSpace.Opens.{u1} α _inst_1) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (TopologicalSpace.Opens.{u1} α _inst_1) α (TopologicalSpace.Opens.setLike.{u1} α _inst_1)))) s)) (List.nil.{0} Prop)))))
but is expected to have type
forall (α : Type.{u1}) [_inst_1 : TopologicalSpace.{u1} α], List.TFAE (List.cons.{0} Prop (TopologicalSpace.NoetherianSpace.{u1} α _inst_1) (List.cons.{0} Prop (WellFounded.{succ u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (fun (s : TopologicalSpace.Closeds.{u1} α _inst_1) (t : TopologicalSpace.Closeds.{u1} α _inst_1) => LT.lt.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (Preorder.toLT.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (PartialOrder.toPreorder.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (TopologicalSpace.Closeds.instCompleteLatticeCloseds.{u1} α _inst_1))))) s t)) (List.cons.{0} Prop (forall (s : Set.{u1} α), IsCompact.{u1} α _inst_1 s) (List.cons.{0} Prop (forall (s : TopologicalSpace.Opens.{u1} α _inst_1), IsCompact.{u1} α _inst_1 (SetLike.coe.{u1, u1} (TopologicalSpace.Opens.{u1} α _inst_1) α (TopologicalSpace.Opens.instSetLikeOpens.{u1} α _inst_1) s)) (List.nil.{0} Prop)))))
Case conversion may be inaccurate. Consider using '#align topological_space.noetherian_space_tfae TopologicalSpace.noetherianSpace_TFAEₓ'. -/
@@ -239,7 +239,7 @@ instance (priority := 100) Finite.to_noetherianSpace [Finite α] : NoetherianSpa
/- warning: topological_space.noetherian_space.exists_finset_irreducible -> TopologicalSpace.NoetherianSpace.exists_finset_irreducible is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_3 : TopologicalSpace.NoetherianSpace.{u1} α _inst_1] (s : TopologicalSpace.Closeds.{u1} α _inst_1), Exists.{succ u1} (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) (fun (S : Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) => And (forall (k : coeSort.{succ u1, succ (succ u1)} (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) Type.{u1} (Finset.hasCoeToSort.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) S), IsIrreducible.{u1} α _inst_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) Type.{u1} (Finset.hasCoeToSort.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) S) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) Type.{u1} (Finset.hasCoeToSort.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) S) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) Type.{u1} (Finset.hasCoeToSort.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) S) (Set.{u1} α) (coeTrans.{succ u1, succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) Type.{u1} (Finset.hasCoeToSort.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) S) (TopologicalSpace.Closeds.{u1} α _inst_1) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (TopologicalSpace.Closeds.{u1} α _inst_1) α (TopologicalSpace.Closeds.setLike.{u1} α _inst_1)) (coeSubtype.{succ u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (fun (x : TopologicalSpace.Closeds.{u1} α _inst_1) => Membership.Mem.{u1, u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) (Finset.hasMem.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) x S))))) k)) (Eq.{succ u1} (TopologicalSpace.Closeds.{u1} α _inst_1) s (Finset.sup.{u1, u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (TopologicalSpace.Closeds.{u1} α _inst_1) (Lattice.toSemilatticeSup.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (ConditionallyCompleteLattice.toLattice.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (TopologicalSpace.Closeds.completeLattice.{u1} α _inst_1)))) (BoundedOrder.toOrderBot.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (Preorder.toLE.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (PartialOrder.toPreorder.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (SemilatticeSup.toPartialOrder.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (Lattice.toSemilatticeSup.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (ConditionallyCompleteLattice.toLattice.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (TopologicalSpace.Closeds.completeLattice.{u1} α _inst_1))))))) (CompleteLattice.toBoundedOrder.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (TopologicalSpace.Closeds.completeLattice.{u1} α _inst_1))) S (id.{succ u1} (TopologicalSpace.Closeds.{u1} α _inst_1)))))
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_3 : TopologicalSpace.NoetherianSpace.{u1} α _inst_1] (s : TopologicalSpace.Closeds.{u1} α _inst_1), Exists.{succ u1} (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) (fun (S : Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) => And (forall (k : coeSort.{succ u1, succ (succ u1)} (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) Type.{u1} (Finset.hasCoeToSort.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) S), IsIrreducible.{u1} α _inst_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) Type.{u1} (Finset.hasCoeToSort.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) S) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) Type.{u1} (Finset.hasCoeToSort.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) S) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) Type.{u1} (Finset.hasCoeToSort.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) S) (Set.{u1} α) (coeTrans.{succ u1, succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) Type.{u1} (Finset.hasCoeToSort.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) S) (TopologicalSpace.Closeds.{u1} α _inst_1) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (TopologicalSpace.Closeds.{u1} α _inst_1) α (TopologicalSpace.Closeds.setLike.{u1} α _inst_1)) (coeSubtype.{succ u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (fun (x : TopologicalSpace.Closeds.{u1} α _inst_1) => Membership.Mem.{u1, u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) (Finset.hasMem.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) x S))))) k)) (Eq.{succ u1} (TopologicalSpace.Closeds.{u1} α _inst_1) s (Finset.sup.{u1, u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (TopologicalSpace.Closeds.{u1} α _inst_1) (Lattice.toSemilatticeSup.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (ConditionallyCompleteLattice.toLattice.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (TopologicalSpace.Closeds.completeLattice.{u1} α _inst_1)))) (BoundedOrder.toOrderBot.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (Preorder.toHasLe.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (PartialOrder.toPreorder.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (SemilatticeSup.toPartialOrder.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (Lattice.toSemilatticeSup.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (ConditionallyCompleteLattice.toLattice.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (TopologicalSpace.Closeds.completeLattice.{u1} α _inst_1))))))) (CompleteLattice.toBoundedOrder.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (TopologicalSpace.Closeds.completeLattice.{u1} α _inst_1))) S (id.{succ u1} (TopologicalSpace.Closeds.{u1} α _inst_1)))))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_3 : TopologicalSpace.NoetherianSpace.{u1} α _inst_1] (s : TopologicalSpace.Closeds.{u1} α _inst_1), Exists.{succ u1} (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) (fun (S : Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) => And (forall (k : Subtype.{succ u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (fun (x : TopologicalSpace.Closeds.{u1} α _inst_1) => Membership.mem.{u1, u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) (Finset.instMembershipFinset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) x S)), IsIrreducible.{u1} α _inst_1 (SetLike.coe.{u1, u1} (TopologicalSpace.Closeds.{u1} α _inst_1) α (TopologicalSpace.Closeds.instSetLikeCloseds.{u1} α _inst_1) (Subtype.val.{succ u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (fun (x : TopologicalSpace.Closeds.{u1} α _inst_1) => Membership.mem.{u1, u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (Finset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) (Finset.instMembershipFinset.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1)) x S) k))) (Eq.{succ u1} (TopologicalSpace.Closeds.{u1} α _inst_1) s (Finset.sup.{u1, u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (TopologicalSpace.Closeds.{u1} α _inst_1) (Lattice.toSemilatticeSup.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (ConditionallyCompleteLattice.toLattice.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (TopologicalSpace.Closeds.instCompleteLatticeCloseds.{u1} α _inst_1)))) (BoundedOrder.toOrderBot.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (Preorder.toLE.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (PartialOrder.toPreorder.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (SemilatticeSup.toPartialOrder.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (Lattice.toSemilatticeSup.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (ConditionallyCompleteLattice.toLattice.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (TopologicalSpace.Closeds.instCompleteLatticeCloseds.{u1} α _inst_1))))))) (CompleteLattice.toBoundedOrder.{u1} (TopologicalSpace.Closeds.{u1} α _inst_1) (TopologicalSpace.Closeds.instCompleteLatticeCloseds.{u1} α _inst_1))) S (id.{succ u1} (TopologicalSpace.Closeds.{u1} α _inst_1)))))
Case conversion may be inaccurate. Consider using '#align topological_space.noetherian_space.exists_finset_irreducible TopologicalSpace.NoetherianSpace.exists_finset_irreducibleₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -77,7 +77,7 @@ variable {α β}
protected theorem NoetherianSpace.isCompact [NoetherianSpace α] (s : Set α) : IsCompact s :=
by
refine' isCompact_iff_finite_subcover.2 fun ι U hUo hs => _
- rcases((noetherian_space_iff_opens α).mp ‹_› ⟨⋃ i, U i, isOpen_unionᵢ hUo⟩).elim_finite_subcover U
+ rcases((noetherian_space_iff_opens α).mp ‹_› ⟨⋃ i, U i, isOpen_iUnion hUo⟩).elim_finite_subcover U
hUo Set.Subset.rfl with
⟨t, ht⟩
exact ⟨t, hs.trans ht⟩
@@ -200,16 +200,16 @@ theorem noetherian_univ_iff : NoetherianSpace (Set.univ : Set α) ↔ Noetherian
#align topological_space.noetherian_univ_iff TopologicalSpace.noetherian_univ_iff
-/
-#print TopologicalSpace.NoetherianSpace.unionᵢ /-
-theorem NoetherianSpace.unionᵢ {ι : Type _} (f : ι → Set α) [Finite ι]
+#print TopologicalSpace.NoetherianSpace.iUnion /-
+theorem NoetherianSpace.iUnion {ι : Type _} (f : ι → Set α) [Finite ι]
[hf : ∀ i, NoetherianSpace (f i)] : NoetherianSpace (⋃ i, f i) :=
by
cases nonempty_fintype ι
simp_rw [noetherian_space_set_iff] at hf⊢
intro t ht
- rw [← set.inter_eq_left_iff_subset.mpr ht, Set.inter_unionᵢ]
- exact isCompact_unionᵢ fun i => hf i _ (Set.inter_subset_right _ _)
-#align topological_space.noetherian_space.Union TopologicalSpace.NoetherianSpace.unionᵢ
+ rw [← set.inter_eq_left_iff_subset.mpr ht, Set.inter_iUnion]
+ exact isCompact_iUnion fun i => hf i _ (Set.inter_subset_right _ _)
+#align topological_space.noetherian_space.Union TopologicalSpace.NoetherianSpace.iUnion
-/
#print TopologicalSpace.NoetherianSpace.discrete /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/4c586d291f189eecb9d00581aeb3dd998ac34442
@@ -178,7 +178,7 @@ theorem NoetherianSpace.range [NoetherianSpace α] (f : α → β) (hf : Continu
fun ⟨a, b, h⟩ => ⟨b, Subtype.ext h⟩
#align topological_space.noetherian_space.range TopologicalSpace.NoetherianSpace.range
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (t «expr ⊆ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (t «expr ⊆ » s) -/
#print TopologicalSpace.noetherianSpace_set_iff /-
theorem noetherianSpace_set_iff (s : Set α) : NoetherianSpace s ↔ ∀ (t) (_ : t ⊆ s), IsCompact t :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
λ
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.@@ -231,9 +231,9 @@ theorem NoetherianSpace.exists_open_ne_empty_le_irreducibleComponent [Noetherian
have hι' : Finite ι := by rwa [Set.finite_coe_iff]
let U := Z \ ⋃ (x : ι), x
- have hU0 : U ≠ ∅ := λ r ↦ by
+ have hU0 : U ≠ ∅ := fun r ↦ by
obtain ⟨Z', hZ'⟩ := isIrreducible_iff_sUnion_closed.mp H.1 hι.toFinset
- (λ z hz ↦ by
+ (fun z hz ↦ by
simp only [Set.Finite.mem_toFinset, Set.mem_diff, Set.mem_singleton_iff] at hz
exact isClosed_of_mem_irreducibleComponents _ hz.1)
(by
@@ -262,6 +262,6 @@ theorem NoetherianSpace.exists_open_ne_empty_le_irreducibleComponent [Noetherian
· exact ⟨i, Or.inr i.2, hi⟩
refine ⟨U, hU1 ▸ isOpen_compl_iff.mpr ?_, hU0, sdiff_le⟩
- exact isClosed_iUnion_of_finite λ i ↦ isClosed_of_mem_irreducibleComponents i.1 i.2.1
+ exact isClosed_iUnion_of_finite fun i ↦ isClosed_of_mem_irreducibleComponents i.1 i.2.1
end TopologicalSpace
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.
@@ -196,7 +196,8 @@ theorem NoetherianSpace.exists_finite_set_isClosed_irreducible [NoetherianSpace
(∀ t ∈ S, IsClosed t) ∧ (∀ t ∈ S, IsIrreducible t) ∧ s = ⋃₀ S := by
lift s to Closeds α using hs
rcases NoetherianSpace.exists_finite_set_closeds_irreducible s with ⟨S, hSf, hS, rfl⟩
- refine ⟨(↑) '' S, hSf.image _, Set.ball_image_iff.2 fun S _ => S.2, Set.ball_image_iff.2 hS, ?_⟩
+ refine ⟨(↑) '' S, hSf.image _, Set.forall_mem_image.2 fun S _ ↦ S.2, Set.forall_mem_image.2 hS,
+ ?_⟩
lift S to Finset (Closeds α) using hSf
simp [← Finset.sup_id_eq_sSup, Closeds.coe_finset_sup]
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -70,7 +70,7 @@ protected theorem NoetherianSpace.isCompact [NoetherianSpace α] (s : Set α) :
exact ⟨t, hs.trans ht⟩
#align topological_space.noetherian_space.is_compact TopologicalSpace.NoetherianSpace.isCompact
--- porting note: fixed NS
+-- Porting note: fixed NS
protected theorem _root_.Inducing.noetherianSpace [NoetherianSpace α] {i : β → α}
(hi : Inducing i) : NoetherianSpace β :=
(noetherianSpace_iff_opens _).2 fun _ => hi.isCompact_iff.2 (NoetherianSpace.isCompact _)
@@ -254,7 +254,7 @@ theorem NoetherianSpace.exists_open_ne_empty_le_irreducibleComponent [Noetherian
· rw [Set.mem_diff, Decidable.not_and_iff_or_not_not, not_not, Set.mem_iUnion] at h
rcases h with (h|⟨i, hi⟩)
· refine ⟨irreducibleComponent a, Or.inr ?_, mem_irreducibleComponent⟩
- simp only [Set.mem_diff, Set.mem_singleton_iff]
+ simp only [ι, Set.mem_diff, Set.mem_singleton_iff]
refine ⟨irreducibleComponent_mem_irreducibleComponents _, ?_⟩
rintro rfl
exact h mem_irreducibleComponent
refine
s (#10762)
I replaced a few "terminal" refine/refine'
s with exact
.
The strategy was very simple-minded: essentially any refine
whose following line had smaller indentation got replaced by exact
and then I cleaned up the mess.
This PR certainly leaves some further terminal refine
s, but maybe the current change is beneficial.
@@ -257,7 +257,7 @@ theorem NoetherianSpace.exists_open_ne_empty_le_irreducibleComponent [Noetherian
simp only [Set.mem_diff, Set.mem_singleton_iff]
refine ⟨irreducibleComponent_mem_irreducibleComponents _, ?_⟩
rintro rfl
- refine h mem_irreducibleComponent
+ exact h mem_irreducibleComponent
· exact ⟨i, Or.inr i.2, hi⟩
refine ⟨U, hU1 ▸ isOpen_compl_iff.mpr ?_, hU0, sdiff_le⟩
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>
@@ -242,8 +242,8 @@ theorem NoetherianSpace.exists_open_ne_empty_le_irreducibleComponent [Noetherian
simp only [Set.Finite.mem_toFinset, Set.mem_diff, Set.mem_singleton_iff] at hZ'
exact hZ'.1.2 <| le_antisymm (H.2 hZ'.1.1.1 hZ'.2) hZ'.2
- have hU1 : U = (⋃ (x : ι), x.1) ᶜ
- · rw [Set.compl_eq_univ_diff]
+ have hU1 : U = (⋃ (x : ι), x.1) ᶜ := by
+ rw [Set.compl_eq_univ_diff]
refine le_antisymm (Set.diff_subset_diff le_top <| subset_refl _) ?_
rw [← Set.compl_eq_univ_diff]
refine Set.compl_subset_iff_union.mpr (le_antisymm le_top ?_)
@@ -251,7 +251,7 @@ theorem NoetherianSpace.exists_open_ne_empty_le_irreducibleComponent [Noetherian
rintro a -
by_cases h : a ∈ U
· exact ⟨U, Set.mem_insert _ _, h⟩
- · rw [Set.mem_diff, Decidable.not_and, not_not, Set.mem_iUnion] at h
+ · rw [Set.mem_diff, Decidable.not_and_iff_or_not_not, not_not, Set.mem_iUnion] at h
rcases h with (h|⟨i, hi⟩)
· refine ⟨irreducibleComponent a, Or.inr ?_, mem_irreducibleComponent⟩
simp only [Set.mem_diff, Set.mem_singleton_iff]
$
with <|
(#9319)
See Zulip thread for the discussion.
@@ -121,7 +121,7 @@ instance {α} : NoetherianSpace (CofiniteTopology α) := by
theorem noetherianSpace_of_surjective [NoetherianSpace α] (f : α → β) (hf : Continuous f)
(hf' : Function.Surjective f) : NoetherianSpace β :=
- noetherianSpace_iff_isCompact.2 $ (Set.image_surjective.mpr hf').forall.2 fun s =>
+ noetherianSpace_iff_isCompact.2 <| (Set.image_surjective.mpr hf').forall.2 fun s =>
(NoetherianSpace.isCompact s).image hf
#align topological_space.noetherian_space_of_surjective TopologicalSpace.noetherianSpace_of_surjective
@@ -240,11 +240,11 @@ theorem NoetherianSpace.exists_open_ne_empty_le_irreducibleComponent [Noetherian
rw [Set.diff_eq_empty] at r
exact r)
simp only [Set.Finite.mem_toFinset, Set.mem_diff, Set.mem_singleton_iff] at hZ'
- exact hZ'.1.2 $ le_antisymm (H.2 hZ'.1.1.1 hZ'.2) hZ'.2
+ exact hZ'.1.2 <| le_antisymm (H.2 hZ'.1.1.1 hZ'.2) hZ'.2
have hU1 : U = (⋃ (x : ι), x.1) ᶜ
· rw [Set.compl_eq_univ_diff]
- refine le_antisymm (Set.diff_subset_diff le_top $ subset_refl _) ?_
+ refine le_antisymm (Set.diff_subset_diff le_top <| subset_refl _) ?_
rw [← Set.compl_eq_univ_diff]
refine Set.compl_subset_iff_union.mpr (le_antisymm le_top ?_)
rw [Set.union_comm, ← Set.sUnion_eq_iUnion, ← Set.sUnion_insert]
@@ -45,7 +45,7 @@ variable (α β : Type*) [TopologicalSpace α] [TopologicalSpace β]
namespace TopologicalSpace
/-- Type class for noetherian spaces. It is defined to be spaces whose open sets satisfies ACC. -/
-@[mk_iff noetherianSpace_iff]
+@[mk_iff]
class NoetherianSpace : Prop where
wellFounded_opens : WellFounded ((· > ·) : Opens α → Opens α → Prop)
#align topological_space.noetherian_space TopologicalSpace.NoetherianSpace
@@ -121,7 +121,7 @@ instance {α} : NoetherianSpace (CofiniteTopology α) := by
theorem noetherianSpace_of_surjective [NoetherianSpace α] (f : α → β) (hf : Continuous f)
(hf' : Function.Surjective f) : NoetherianSpace β :=
- noetherianSpace_iff_isCompact.2 $ (Set.image_surjective.mpr hf').forall.2 $ fun s =>
+ noetherianSpace_iff_isCompact.2 $ (Set.image_surjective.mpr hf').forall.2 fun s =>
(NoetherianSpace.isCompact s).image hf
#align topological_space.noetherian_space_of_surjective TopologicalSpace.noetherianSpace_of_surjective
@@ -90,7 +90,7 @@ theorem noetherianSpace_TFAE :
∀ s : Set α, IsCompact s,
∀ s : Opens α, IsCompact (s : Set α)] := by
tfae_have 1 ↔ 2
- · refine' (noetherianSpace_iff α).trans (Opens.compl_bijective.2.wellFounded_iff _)
+ · refine' (noetherianSpace_iff α).trans (Opens.compl_bijective.2.wellFounded_iff _)
exact (@OrderIso.compl (Set α)).lt_iff_lt.symm
tfae_have 1 ↔ 4
· exact noetherianSpace_iff_opens α
For faster build times and clearer dependencies. No attempt at being exhaustive.
The new import in Clopen.lean
had been transitively imported before.
@@ -3,7 +3,6 @@ Copyright (c) 2022 Andrew Yang. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Andrew Yang
-/
-import Mathlib.Order.CompactlyGenerated
import Mathlib.Topology.Sets.Closeds
#align_import topology.noetherian_space from "leanprover-community/mathlib"@"dc6c365e751e34d100e80fe6e314c3c3e0fd2988"
Define sigma-compact subsets of a topological space and show their basic properties.
Relate them to sigma-compact space: a set is sigma-compact iff it is a sigma-compact space (w.r.t. the subspace topology).
In a later PR, we'll show that sigma-compact measure zero sets are nowhere dense.
Co-authored-by: David Loeffler <d.loeffler.01@cantab.net> Co-authored-by: grunweg <grunweg@posteo.de>
@@ -74,7 +74,7 @@ protected theorem NoetherianSpace.isCompact [NoetherianSpace α] (s : Set α) :
-- porting note: fixed NS
protected theorem _root_.Inducing.noetherianSpace [NoetherianSpace α] {i : β → α}
(hi : Inducing i) : NoetherianSpace β :=
- (noetherianSpace_iff_opens _).2 fun _ => hi.isCompact_iff.1 (NoetherianSpace.isCompact _)
+ (noetherianSpace_iff_opens _).2 fun _ => hi.isCompact_iff.2 (NoetherianSpace.isCompact _)
#align topological_space.inducing.noetherian_space Inducing.noetherianSpace
/-- [Stacks: Lemma 0052 (1)](https://stacks.math.columbia.edu/tag/0052)-/
@@ -139,7 +139,7 @@ theorem NoetherianSpace.range [NoetherianSpace α] (f : α → β) (hf : Continu
theorem noetherianSpace_set_iff (s : Set α) :
NoetherianSpace s ↔ ∀ t, t ⊆ s → IsCompact t := by
- simp only [noetherianSpace_iff_isCompact, embedding_subtype_val.isCompact_iff_isCompact_image,
+ simp only [noetherianSpace_iff_isCompact, embedding_subtype_val.isCompact_iff,
Subtype.forall_set_subtype]
#align topological_space.noetherian_space_set_iff TopologicalSpace.noetherianSpace_set_iff
This will improve spaces in the mathlib4 docs.
@@ -33,9 +33,9 @@ of a noetherian scheme (e.g., the spectrum of a noetherian ring) is noetherian.
is noetherian.
- `TopologicalSpace.NoetherianSpace.iUnion`: The finite union of noetherian spaces is noetherian.
- `TopologicalSpace.NoetherianSpace.discrete`: A noetherian and Hausdorff space is discrete.
-- `TopologicalSpace.NoetherianSpace.exists_finset_irreducible` : Every closed subset of a noetherian
+- `TopologicalSpace.NoetherianSpace.exists_finset_irreducible`: Every closed subset of a noetherian
space is a finite union of irreducible closed subsets.
-- `TopologicalSpace.NoetherianSpace.finite_irreducibleComponents `: The number of irreducible
+- `TopologicalSpace.NoetherianSpace.finite_irreducibleComponents`: The number of irreducible
components of a noetherian space is finite.
-/
Set
/Finset
lemmas match lattice lemma names (#7378)
Rename union_eq_left_iff_subset
to union_eq_left
to match sup_eq_left
. Similarly for the right
and inter
versions.
@@ -152,7 +152,7 @@ theorem NoetherianSpace.iUnion {ι : Type*} (f : ι → Set α) [Finite ι]
[hf : ∀ i, NoetherianSpace (f i)] : NoetherianSpace (⋃ i, f i) := by
simp_rw [noetherianSpace_set_iff] at hf ⊢
intro t ht
- rw [← Set.inter_eq_left_iff_subset.mpr ht, Set.inter_iUnion]
+ rw [← Set.inter_eq_left.mpr ht, Set.inter_iUnion]
exact isCompact_iUnion fun i => hf i _ (Set.inter_subset_right _ _)
#align topological_space.noetherian_space.Union TopologicalSpace.NoetherianSpace.iUnion
Surjective.wellFounded_iff
to
Function.Surjective.wellFounded_iff
.@@ -91,7 +91,7 @@ theorem noetherianSpace_TFAE :
∀ s : Set α, IsCompact s,
∀ s : Opens α, IsCompact (s : Set α)] := by
tfae_have 1 ↔ 2
- · refine' (noetherianSpace_iff α).trans (Surjective.wellFounded_iff Opens.compl_bijective.2 _)
+ · refine' (noetherianSpace_iff α).trans (Opens.compl_bijective.2.wellFounded_iff _)
exact (@OrderIso.compl (Set α)).lt_iff_lt.symm
tfae_have 1 ↔ 4
· exact noetherianSpace_iff_opens α
@@ -222,7 +222,7 @@ theorem NoetherianSpace.finite_irreducibleComponents [NoetherianSpace α] :
/-- [Stacks: Lemma 0052 (3)](https://stacks.math.columbia.edu/tag/0052) -/
theorem NoetherianSpace.exists_open_ne_empty_le_irreducibleComponent [NoetherianSpace α]
(Z : Set α) (H : Z ∈ irreducibleComponents α) :
- ∃ (o : Set α) (_ : IsOpen o) (_ : o ≠ ∅), o ≤ Z := by
+ ∃ o : Set α, IsOpen o ∧ o ≠ ∅ ∧ o ≤ Z := by
classical
let ι : Set (Set α) := irreducibleComponents α \ {Z}
@@ -264,5 +264,4 @@ theorem NoetherianSpace.exists_open_ne_empty_le_irreducibleComponent [Noetherian
refine ⟨U, hU1 ▸ isOpen_compl_iff.mpr ?_, hU0, sdiff_le⟩
exact isClosed_iUnion_of_finite λ i ↦ isClosed_of_mem_irreducibleComponents i.1 i.2.1
-
end TopologicalSpace
@@ -77,6 +77,7 @@ protected theorem _root_.Inducing.noetherianSpace [NoetherianSpace α] {i : β
(noetherianSpace_iff_opens _).2 fun _ => hi.isCompact_iff.1 (NoetherianSpace.isCompact _)
#align topological_space.inducing.noetherian_space Inducing.noetherianSpace
+/-- [Stacks: Lemma 0052 (1)](https://stacks.math.columbia.edu/tag/0052)-/
instance NoetherianSpace.set [NoetherianSpace α] (s : Set α) : NoetherianSpace s :=
inducing_subtype_val.noetherianSpace
#align topological_space.noetherian_space.set TopologicalSpace.NoetherianSpace.set
@@ -207,6 +208,7 @@ theorem NoetherianSpace.exists_finset_irreducible [NoetherianSpace α] (s : Clos
using NoetherianSpace.exists_finite_set_closeds_irreducible s
#align topological_space.noetherian_space.exists_finset_irreducible TopologicalSpace.NoetherianSpace.exists_finset_irreducible
+/-- [Stacks: Lemma 0052 (2)](https://stacks.math.columbia.edu/tag/0052) -/
theorem NoetherianSpace.finite_irreducibleComponents [NoetherianSpace α] :
(irreducibleComponents α).Finite := by
obtain ⟨S : Set (Set α), hSf, hSc, hSi, hSU⟩ :=
@@ -217,4 +219,50 @@ theorem NoetherianSpace.finite_irreducibleComponents [NoetherianSpace α] :
rwa [ht.antisymm (hs.2 (hSi _ htS) ht)]
#align topological_space.noetherian_space.finite_irreducible_components TopologicalSpace.NoetherianSpace.finite_irreducibleComponents
+/-- [Stacks: Lemma 0052 (3)](https://stacks.math.columbia.edu/tag/0052) -/
+theorem NoetherianSpace.exists_open_ne_empty_le_irreducibleComponent [NoetherianSpace α]
+ (Z : Set α) (H : Z ∈ irreducibleComponents α) :
+ ∃ (o : Set α) (_ : IsOpen o) (_ : o ≠ ∅), o ≤ Z := by
+ classical
+
+ let ι : Set (Set α) := irreducibleComponents α \ {Z}
+ have hι : ι.Finite := (NoetherianSpace.finite_irreducibleComponents (α := α)).subset
+ (Set.diff_subset _ _)
+ have hι' : Finite ι := by rwa [Set.finite_coe_iff]
+
+ let U := Z \ ⋃ (x : ι), x
+ have hU0 : U ≠ ∅ := λ r ↦ by
+ obtain ⟨Z', hZ'⟩ := isIrreducible_iff_sUnion_closed.mp H.1 hι.toFinset
+ (λ z hz ↦ by
+ simp only [Set.Finite.mem_toFinset, Set.mem_diff, Set.mem_singleton_iff] at hz
+ exact isClosed_of_mem_irreducibleComponents _ hz.1)
+ (by
+ rw [Set.Finite.coe_toFinset, Set.sUnion_eq_iUnion]
+ rw [Set.diff_eq_empty] at r
+ exact r)
+ simp only [Set.Finite.mem_toFinset, Set.mem_diff, Set.mem_singleton_iff] at hZ'
+ exact hZ'.1.2 $ le_antisymm (H.2 hZ'.1.1.1 hZ'.2) hZ'.2
+
+ have hU1 : U = (⋃ (x : ι), x.1) ᶜ
+ · rw [Set.compl_eq_univ_diff]
+ refine le_antisymm (Set.diff_subset_diff le_top $ subset_refl _) ?_
+ rw [← Set.compl_eq_univ_diff]
+ refine Set.compl_subset_iff_union.mpr (le_antisymm le_top ?_)
+ rw [Set.union_comm, ← Set.sUnion_eq_iUnion, ← Set.sUnion_insert]
+ rintro a -
+ by_cases h : a ∈ U
+ · exact ⟨U, Set.mem_insert _ _, h⟩
+ · rw [Set.mem_diff, Decidable.not_and, not_not, Set.mem_iUnion] at h
+ rcases h with (h|⟨i, hi⟩)
+ · refine ⟨irreducibleComponent a, Or.inr ?_, mem_irreducibleComponent⟩
+ simp only [Set.mem_diff, Set.mem_singleton_iff]
+ refine ⟨irreducibleComponent_mem_irreducibleComponents _, ?_⟩
+ rintro rfl
+ refine h mem_irreducibleComponent
+ · exact ⟨i, Or.inr i.2, hi⟩
+
+ refine ⟨U, hU1 ▸ isOpen_compl_iff.mpr ?_, hU0, sdiff_le⟩
+ exact isClosed_iUnion_of_finite λ i ↦ isClosed_of_mem_irreducibleComponents i.1 i.2.1
+
+
end TopologicalSpace
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -41,7 +41,7 @@ of a noetherian scheme (e.g., the spectrum of a noetherian ring) is noetherian.
-/
-variable (α β : Type _) [TopologicalSpace α] [TopologicalSpace β]
+variable (α β : Type*) [TopologicalSpace α] [TopologicalSpace β]
namespace TopologicalSpace
@@ -147,7 +147,7 @@ theorem noetherian_univ_iff : NoetherianSpace (Set.univ : Set α) ↔ Noetherian
noetherianSpace_iff_of_homeomorph (Homeomorph.Set.univ α)
#align topological_space.noetherian_univ_iff TopologicalSpace.noetherian_univ_iff
-theorem NoetherianSpace.iUnion {ι : Type _} (f : ι → Set α) [Finite ι]
+theorem NoetherianSpace.iUnion {ι : Type*} (f : ι → Set α) [Finite ι]
[hf : ∀ i, NoetherianSpace (f i)] : NoetherianSpace (⋃ i, f i) := by
simp_rw [noetherianSpace_set_iff] at hf ⊢
intro t ht
@@ -2,15 +2,12 @@
Copyright (c) 2022 Andrew Yang. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Andrew Yang
-
-! This file was ported from Lean 3 source module topology.noetherian_space
-! leanprover-community/mathlib commit dc6c365e751e34d100e80fe6e314c3c3e0fd2988
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Order.CompactlyGenerated
import Mathlib.Topology.Sets.Closeds
+#align_import topology.noetherian_space from "leanprover-community/mathlib"@"dc6c365e751e34d100e80fe6e314c3c3e0fd2988"
+
/-!
# Noetherian space
Co-authored-by: Komyyy <pol_tta@outlook.jp> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com> Co-authored-by: Mario Carneiro <di.gama@gmail.com>
@@ -213,7 +213,7 @@ theorem NoetherianSpace.exists_finset_irreducible [NoetherianSpace α] (s : Clos
theorem NoetherianSpace.finite_irreducibleComponents [NoetherianSpace α] :
(irreducibleComponents α).Finite := by
obtain ⟨S : Set (Set α), hSf, hSc, hSi, hSU⟩ :=
- NoetherianSpace.exists_finite_set_isClosed_irreducible isClosed_univ
+ NoetherianSpace.exists_finite_set_isClosed_irreducible isClosed_univ (α := α)
refine hSf.subset fun s hs => ?_
lift S to Finset (Set α) using hSf
rcases isIrreducible_iff_sUnion_closed.1 hs.1 S hSc (hSU ▸ Set.subset_univ _) with ⟨t, htS, ht⟩
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>
@@ -34,7 +34,7 @@ of a noetherian scheme (e.g., the spectrum of a noetherian ring) is noetherian.
spaces.
- `TopologicalSpace.NoetherianSpace.range`: The image of a noetherian space under a continuous map
is noetherian.
-- `TopologicalSpace.NoetherianSpace.unionᵢ`: The finite union of noetherian spaces is noetherian.
+- `TopologicalSpace.NoetherianSpace.iUnion`: The finite union of noetherian spaces is noetherian.
- `TopologicalSpace.NoetherianSpace.discrete`: A noetherian and Hausdorff space is discrete.
- `TopologicalSpace.NoetherianSpace.exists_finset_irreducible` : Every closed subset of a noetherian
space is a finite union of irreducible closed subsets.
@@ -69,7 +69,7 @@ variable {α β}
/-- In a Noetherian space, all sets are compact. -/
protected theorem NoetherianSpace.isCompact [NoetherianSpace α] (s : Set α) : IsCompact s := by
refine isCompact_iff_finite_subcover.2 fun U hUo hs => ?_
- rcases ((noetherianSpace_iff_opens α).mp ‹_› ⟨⋃ i, U i, isOpen_unionᵢ hUo⟩).elim_finite_subcover U
+ rcases ((noetherianSpace_iff_opens α).mp ‹_› ⟨⋃ i, U i, isOpen_iUnion hUo⟩).elim_finite_subcover U
hUo Set.Subset.rfl with ⟨t, ht⟩
exact ⟨t, hs.trans ht⟩
#align topological_space.noetherian_space.is_compact TopologicalSpace.NoetherianSpace.isCompact
@@ -150,13 +150,13 @@ theorem noetherian_univ_iff : NoetherianSpace (Set.univ : Set α) ↔ Noetherian
noetherianSpace_iff_of_homeomorph (Homeomorph.Set.univ α)
#align topological_space.noetherian_univ_iff TopologicalSpace.noetherian_univ_iff
-theorem NoetherianSpace.unionᵢ {ι : Type _} (f : ι → Set α) [Finite ι]
+theorem NoetherianSpace.iUnion {ι : Type _} (f : ι → Set α) [Finite ι]
[hf : ∀ i, NoetherianSpace (f i)] : NoetherianSpace (⋃ i, f i) := by
simp_rw [noetherianSpace_set_iff] at hf ⊢
intro t ht
- rw [← Set.inter_eq_left_iff_subset.mpr ht, Set.inter_unionᵢ]
- exact isCompact_unionᵢ fun i => hf i _ (Set.inter_subset_right _ _)
-#align topological_space.noetherian_space.Union TopologicalSpace.NoetherianSpace.unionᵢ
+ rw [← Set.inter_eq_left_iff_subset.mpr ht, Set.inter_iUnion]
+ exact isCompact_iUnion fun i => hf i _ (Set.inter_subset_right _ _)
+#align topological_space.noetherian_space.Union TopologicalSpace.NoetherianSpace.iUnion
-- This is not an instance since it makes a loop with `t2_space_discrete`.
theorem NoetherianSpace.discrete [NoetherianSpace α] [T2Space α] : DiscreteTopology α :=
@@ -176,7 +176,7 @@ instance (priority := 100) Finite.to_noetherianSpace [Finite α] : NoetherianSpa
/-- In a Noetherian space, every closed set is a finite union of irreducible closed sets. -/
theorem NoetherianSpace.exists_finite_set_closeds_irreducible [NoetherianSpace α] (s : Closeds α) :
- ∃ S : Set (Closeds α), S.Finite ∧ (∀ t ∈ S, IsIrreducible (t : Set α)) ∧ s = supₛ S := by
+ ∃ S : Set (Closeds α), S.Finite ∧ (∀ t ∈ S, IsIrreducible (t : Set α)) ∧ s = sSup S := by
apply wellFounded_closeds.induction s; clear s
intro s H
rcases eq_or_ne s ⊥ with rfl | h₀
@@ -191,7 +191,7 @@ theorem NoetherianSpace.exists_finite_set_closeds_irreducible [NoetherianSpace
rcases H (s ⊓ z₁) (inf_lt_left.2 hz₁') with ⟨S₁, hSf₁, hS₁, h₁⟩
rcases H (s ⊓ z₂) (inf_lt_left.2 hz₂') with ⟨S₂, hSf₂, hS₂, h₂⟩
refine ⟨S₁ ∪ S₂, hSf₁.union hSf₂, Set.union_subset_iff.2 ⟨hS₁, hS₂⟩, ?_⟩
- rwa [supₛ_union, ← h₁, ← h₂, ← inf_sup_left, left_eq_inf]
+ rwa [sSup_union, ← h₁, ← h₂, ← inf_sup_left, left_eq_inf]
/-- In a Noetherian space, every closed set is a finite union of irreducible closed sets. -/
theorem NoetherianSpace.exists_finite_set_isClosed_irreducible [NoetherianSpace α]
@@ -201,12 +201,12 @@ theorem NoetherianSpace.exists_finite_set_isClosed_irreducible [NoetherianSpace
rcases NoetherianSpace.exists_finite_set_closeds_irreducible s with ⟨S, hSf, hS, rfl⟩
refine ⟨(↑) '' S, hSf.image _, Set.ball_image_iff.2 fun S _ => S.2, Set.ball_image_iff.2 hS, ?_⟩
lift S to Finset (Closeds α) using hSf
- simp [← Finset.sup_id_eq_supₛ, Closeds.coe_finset_sup]
+ simp [← Finset.sup_id_eq_sSup, Closeds.coe_finset_sup]
/-- In a Noetherian space, every closed set is a finite union of irreducible closed sets. -/
theorem NoetherianSpace.exists_finset_irreducible [NoetherianSpace α] (s : Closeds α) :
∃ S : Finset (Closeds α), (∀ k : S, IsIrreducible (k : Set α)) ∧ s = S.sup id := by
- simpa [Set.exists_finite_iff_finset, Finset.sup_id_eq_supₛ]
+ simpa [Set.exists_finite_iff_finset, Finset.sup_id_eq_sSup]
using NoetherianSpace.exists_finite_set_closeds_irreducible s
#align topological_space.noetherian_space.exists_finset_irreducible TopologicalSpace.NoetherianSpace.exists_finset_irreducible
@@ -216,7 +216,7 @@ theorem NoetherianSpace.finite_irreducibleComponents [NoetherianSpace α] :
NoetherianSpace.exists_finite_set_isClosed_irreducible isClosed_univ
refine hSf.subset fun s hs => ?_
lift S to Finset (Set α) using hSf
- rcases isIrreducible_iff_unionₛ_closed.1 hs.1 S hSc (hSU ▸ Set.subset_univ _) with ⟨t, htS, ht⟩
+ rcases isIrreducible_iff_sUnion_closed.1 hs.1 S hSc (hSU ▸ Set.subset_univ _) with ⟨t, htS, ht⟩
rwa [ht.antisymm (hs.2 (hSi _ htS) ht)]
#align topological_space.noetherian_space.finite_irreducible_components TopologicalSpace.NoetherianSpace.finite_irreducibleComponents
@@ -86,23 +86,22 @@ instance NoetherianSpace.set [NoetherianSpace α] (s : Set α) : NoetherianSpace
variable (α)
-example (α : Type _) : Set α ≃o (Set α)ᵒᵈ := by refine' OrderIso.compl (Set α)
-
open List in
theorem noetherianSpace_TFAE :
TFAE [NoetherianSpace α,
WellFounded fun s t : Closeds α => s < t,
∀ s : Set α, IsCompact s,
∀ s : Opens α, IsCompact (s : Set α)] := by
- have h12 : NoetherianSpace α ↔ WellFounded fun s t : Closeds α => s < t
+ tfae_have 1 ↔ 2
· refine' (noetherianSpace_iff α).trans (Surjective.wellFounded_iff Opens.compl_bijective.2 _)
exact (@OrderIso.compl (Set α)).lt_iff_lt.symm
- rw [← h12]
- apply_rules [tfae_of_cycle, Chain.cons, Chain.nil]
- · exact id
+ tfae_have 1 ↔ 4
+ · exact noetherianSpace_iff_opens α
+ tfae_have 1 → 3
· exact @NoetherianSpace.isCompact α _
+ tfae_have 3 → 4
· exact fun h s => h s
- · exact (noetherianSpace_iff_opens α).2
+ tfae_finish
#align topological_space.noetherian_space_tfae TopologicalSpace.noetherianSpace_TFAE
variable {α}
The unported dependencies are