topology.shrinking_lemma
⟷
Mathlib.Topology.ShrinkingLemma
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -43,7 +43,7 @@ variable {ι X : Type _} [TopologicalSpace X] [NormalSpace X]
namespace ShrinkingLemma
#print ShrinkingLemma.PartialRefinement /-
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (i «expr ∉ » carrier) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (i «expr ∉ » carrier) -/
-- the trivial refinement needs `u` to be a covering
/-- Auxiliary definition for the proof of `shrinking_lemma`. A partial refinement of a covering
`⋃ i, u i` of a set `s` is a map `v : ι → set X` and a set `carrier : set ι` such that
@@ -177,7 +177,7 @@ theorem find_apply_of_mem {c : Set (PartialRefinement u s)} (hc : IsChain (·
#align shrinking_lemma.partial_refinement.find_apply_of_mem ShrinkingLemma.PartialRefinement.find_apply_of_mem
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (i «expr ∉ » chain_Sup_carrier c) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (i «expr ∉ » chain_Sup_carrier c) -/
#print ShrinkingLemma.PartialRefinement.chainSup /-
/-- Least upper bound of a nonempty chain of partial refinements. -/
def chainSup (c : Set (PartialRefinement u s)) (hc : IsChain (· ≤ ·) c) (ne : c.Nonempty)
@@ -212,9 +212,9 @@ theorem le_chainSup {c : Set (PartialRefinement u s)} (hc : IsChain (· ≤ ·)
#align shrinking_lemma.partial_refinement.le_chain_Sup ShrinkingLemma.PartialRefinement.le_chainSup
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (j «expr ≠ » i) -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (j «expr ≠ » i) -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (j «expr ≠ » i) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (j «expr ≠ » i) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (j «expr ≠ » i) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (j «expr ≠ » i) -/
#print ShrinkingLemma.PartialRefinement.exists_gt /-
/-- If `s` is a closed set, `v` is a partial refinement, and `i` is an index such that
`i ∉ v.carrier`, then there exists a partial refinement that is strictly greater than `v`. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -190,7 +190,7 @@ def chainSup (c : Set (PartialRefinement u s)) (hc : IsChain (· ≤ ·) c) (ne
rcases em (∃ (i : _) (_ : i ∉ chain_Sup_carrier c), x ∈ u i) with (⟨i, hi, hxi⟩ | hx)
· use i
rwa [(find c Ne i).apply_eq (mt (mem_find_carrier_iff _).1 hi)]
- · simp_rw [not_exists, not_imp_not, chain_Sup_carrier, mem_Union₂] at hx
+ · simp_rw [not_exists, not_imp_not, chain_Sup_carrier, mem_Union₂] at hx
haveI : Nonempty (partial_refinement u s) := ⟨ne.some⟩
choose! v hvc hiv using hx
rcases(hfin x hxs).exists_maximal_wrt v _ (mem_Union.1 (hU hxs)) with
@@ -235,12 +235,12 @@ theorem exists_gt (v : PartialRefinement u s) (hs : IsClosed s) (i : ι) (hi : i
· refine' fun x hx => mem_Union.2 _
rcases em (∃ (j : _) (_ : j ≠ i), x ∈ v j) with (⟨j, hji, hj⟩ | h)
· use j; rwa [update_noteq hji]
- · push_neg at h ; use i; rw [update_same]; exact hvi ⟨hx, mem_bInter h⟩
+ · push_neg at h; use i; rw [update_same]; exact hvi ⟨hx, mem_bInter h⟩
· rintro j (rfl | hj)
· rwa [update_same, ← v.apply_eq hi]
· rw [update_noteq (ne_of_mem_of_not_mem hj hi)]; exact v.closure_subset hj
· intro j hj
- rw [mem_insert_iff, not_or] at hj
+ rw [mem_insert_iff, not_or] at hj
rw [update_noteq hj.1, v.apply_eq hj.2]
· refine' ⟨subset_insert _ _, fun j hj => _⟩
exact (update_noteq (ne_of_mem_of_not_mem hj hi) _ _).symm
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -262,7 +262,21 @@ to a new open cover so that the closure of each new open set is contained in the
original open set. -/
theorem exists_subset_iUnion_closure_subset (hs : IsClosed s) (uo : ∀ i, IsOpen (u i))
(uf : ∀ x ∈ s, {i | x ∈ u i}.Finite) (us : s ⊆ ⋃ i, u i) :
- ∃ v : ι → Set X, s ⊆ iUnion v ∧ (∀ i, IsOpen (v i)) ∧ ∀ i, closure (v i) ⊆ u i := by classical
+ ∃ v : ι → Set X, s ⊆ iUnion v ∧ (∀ i, IsOpen (v i)) ∧ ∀ i, closure (v i) ⊆ u i := by
+ classical
+ haveI : Nonempty (partial_refinement u s) := ⟨⟨u, ∅, uo, us, fun _ => False.elim, fun _ _ => rfl⟩⟩
+ have :
+ ∀ c : Set (partial_refinement u s), IsChain (· ≤ ·) c → c.Nonempty → ∃ ub, ∀ v ∈ c, v ≤ ub :=
+ fun c hc ne =>
+ ⟨partial_refinement.chain_Sup c hc Ne uf us, fun v hv =>
+ partial_refinement.le_chain_Sup _ _ _ _ hv⟩
+ rcases zorn_nonempty_partialOrder this with ⟨v, hv⟩
+ suffices : ∀ i, i ∈ v.carrier
+ exact ⟨v, v.subset_Union, fun i => v.is_open _, fun i => v.closure_subset (this i)⟩
+ contrapose! hv
+ rcases hv with ⟨i, hi⟩
+ rcases v.exists_gt hs i hi with ⟨v', hlt⟩
+ exact ⟨v', hlt.le, hlt.ne'⟩
#align exists_subset_Union_closure_subset exists_subset_iUnion_closure_subset
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -262,21 +262,7 @@ to a new open cover so that the closure of each new open set is contained in the
original open set. -/
theorem exists_subset_iUnion_closure_subset (hs : IsClosed s) (uo : ∀ i, IsOpen (u i))
(uf : ∀ x ∈ s, {i | x ∈ u i}.Finite) (us : s ⊆ ⋃ i, u i) :
- ∃ v : ι → Set X, s ⊆ iUnion v ∧ (∀ i, IsOpen (v i)) ∧ ∀ i, closure (v i) ⊆ u i := by
- classical
- haveI : Nonempty (partial_refinement u s) := ⟨⟨u, ∅, uo, us, fun _ => False.elim, fun _ _ => rfl⟩⟩
- have :
- ∀ c : Set (partial_refinement u s), IsChain (· ≤ ·) c → c.Nonempty → ∃ ub, ∀ v ∈ c, v ≤ ub :=
- fun c hc ne =>
- ⟨partial_refinement.chain_Sup c hc Ne uf us, fun v hv =>
- partial_refinement.le_chain_Sup _ _ _ _ hv⟩
- rcases zorn_nonempty_partialOrder this with ⟨v, hv⟩
- suffices : ∀ i, i ∈ v.carrier
- exact ⟨v, v.subset_Union, fun i => v.is_open _, fun i => v.closure_subset (this i)⟩
- contrapose! hv
- rcases hv with ⟨i, hi⟩
- rcases v.exists_gt hs i hi with ⟨v', hlt⟩
- exact ⟨v', hlt.le, hlt.ne'⟩
+ ∃ v : ι → Set X, s ⊆ iUnion v ∧ (∀ i, IsOpen (v i)) ∧ ∀ i, closure (v i) ⊆ u i := by classical
#align exists_subset_Union_closure_subset exists_subset_iUnion_closure_subset
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,7 +3,7 @@ Copyright (c) 2021 Yury Kudryashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov, Reid Barton
-/
-import Mathbin.Topology.Separation
+import Topology.Separation
#align_import topology.shrinking_lemma from "leanprover-community/mathlib"@"0a0ec35061ed9960bf0e7ffb0335f44447b58977"
@@ -43,7 +43,7 @@ variable {ι X : Type _} [TopologicalSpace X] [NormalSpace X]
namespace ShrinkingLemma
#print ShrinkingLemma.PartialRefinement /-
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∉ » carrier) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (i «expr ∉ » carrier) -/
-- the trivial refinement needs `u` to be a covering
/-- Auxiliary definition for the proof of `shrinking_lemma`. A partial refinement of a covering
`⋃ i, u i` of a set `s` is a map `v : ι → set X` and a set `carrier : set ι` such that
@@ -177,7 +177,7 @@ theorem find_apply_of_mem {c : Set (PartialRefinement u s)} (hc : IsChain (·
#align shrinking_lemma.partial_refinement.find_apply_of_mem ShrinkingLemma.PartialRefinement.find_apply_of_mem
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∉ » chain_Sup_carrier c) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (i «expr ∉ » chain_Sup_carrier c) -/
#print ShrinkingLemma.PartialRefinement.chainSup /-
/-- Least upper bound of a nonempty chain of partial refinements. -/
def chainSup (c : Set (PartialRefinement u s)) (hc : IsChain (· ≤ ·) c) (ne : c.Nonempty)
@@ -212,9 +212,9 @@ theorem le_chainSup {c : Set (PartialRefinement u s)} (hc : IsChain (· ≤ ·)
#align shrinking_lemma.partial_refinement.le_chain_Sup ShrinkingLemma.PartialRefinement.le_chainSup
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (j «expr ≠ » i) -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (j «expr ≠ » i) -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (j «expr ≠ » i) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (j «expr ≠ » i) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (j «expr ≠ » i) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (j «expr ≠ » i) -/
#print ShrinkingLemma.PartialRefinement.exists_gt /-
/-- If `s` is a closed set, `v` is a partial refinement, and `i` is an index such that
`i ∉ v.carrier`, then there exists a partial refinement that is strictly greater than `v`. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,14 +2,11 @@
Copyright (c) 2021 Yury Kudryashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov, Reid Barton
-
-! This file was ported from Lean 3 source module topology.shrinking_lemma
-! leanprover-community/mathlib commit 0a0ec35061ed9960bf0e7ffb0335f44447b58977
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Topology.Separation
+#align_import topology.shrinking_lemma from "leanprover-community/mathlib"@"0a0ec35061ed9960bf0e7ffb0335f44447b58977"
+
/-!
# The shrinking lemma
@@ -46,7 +43,7 @@ variable {ι X : Type _} [TopologicalSpace X] [NormalSpace X]
namespace ShrinkingLemma
#print ShrinkingLemma.PartialRefinement /-
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i «expr ∉ » carrier) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∉ » carrier) -/
-- the trivial refinement needs `u` to be a covering
/-- Auxiliary definition for the proof of `shrinking_lemma`. A partial refinement of a covering
`⋃ i, u i` of a set `s` is a map `v : ι → set X` and a set `carrier : set ι` such that
@@ -180,7 +177,7 @@ theorem find_apply_of_mem {c : Set (PartialRefinement u s)} (hc : IsChain (·
#align shrinking_lemma.partial_refinement.find_apply_of_mem ShrinkingLemma.PartialRefinement.find_apply_of_mem
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i «expr ∉ » chain_Sup_carrier c) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∉ » chain_Sup_carrier c) -/
#print ShrinkingLemma.PartialRefinement.chainSup /-
/-- Least upper bound of a nonempty chain of partial refinements. -/
def chainSup (c : Set (PartialRefinement u s)) (hc : IsChain (· ≤ ·) c) (ne : c.Nonempty)
@@ -215,9 +212,9 @@ theorem le_chainSup {c : Set (PartialRefinement u s)} (hc : IsChain (· ≤ ·)
#align shrinking_lemma.partial_refinement.le_chain_Sup ShrinkingLemma.PartialRefinement.le_chainSup
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (j «expr ≠ » i) -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (j «expr ≠ » i) -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (j «expr ≠ » i) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (j «expr ≠ » i) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (j «expr ≠ » i) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (j «expr ≠ » i) -/
#print ShrinkingLemma.PartialRefinement.exists_gt /-
/-- If `s` is a closed set, `v` is a partial refinement, and `i` is an index such that
`i ∉ v.carrier`, then there exists a partial refinement that is strictly greater than `v`. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -45,6 +45,7 @@ variable {ι X : Type _} [TopologicalSpace X] [NormalSpace X]
namespace ShrinkingLemma
+#print ShrinkingLemma.PartialRefinement /-
/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i «expr ∉ » carrier) -/
-- the trivial refinement needs `u` to be a covering
/-- Auxiliary definition for the proof of `shrinking_lemma`. A partial refinement of a covering
@@ -67,6 +68,7 @@ structure PartialRefinement (u : ι → Set X) (s : Set X) where
closure_subset' : ∀ i ∈ carrier, closure (to_fun i) ⊆ u i
apply_eq' : ∀ (i) (_ : i ∉ carrier), to_fun i = u i
#align shrinking_lemma.partial_refinement ShrinkingLemma.PartialRefinement
+-/
namespace PartialRefinement
@@ -75,26 +77,36 @@ variable {u : ι → Set X} {s : Set X}
instance : CoeFun (PartialRefinement u s) fun _ => ι → Set X :=
⟨toFun⟩
+#print ShrinkingLemma.PartialRefinement.subset_iUnion /-
theorem subset_iUnion (v : PartialRefinement u s) : s ⊆ ⋃ i, v i :=
v.subset_Union'
#align shrinking_lemma.partial_refinement.subset_Union ShrinkingLemma.PartialRefinement.subset_iUnion
+-/
+#print ShrinkingLemma.PartialRefinement.closure_subset /-
theorem closure_subset (v : PartialRefinement u s) {i : ι} (hi : i ∈ v.carrier) :
closure (v i) ⊆ u i :=
v.closure_subset' i hi
#align shrinking_lemma.partial_refinement.closure_subset ShrinkingLemma.PartialRefinement.closure_subset
+-/
+#print ShrinkingLemma.PartialRefinement.apply_eq /-
theorem apply_eq (v : PartialRefinement u s) {i : ι} (hi : i ∉ v.carrier) : v i = u i :=
v.apply_eq' i hi
#align shrinking_lemma.partial_refinement.apply_eq ShrinkingLemma.PartialRefinement.apply_eq
+-/
+#print ShrinkingLemma.PartialRefinement.isOpen /-
protected theorem isOpen (v : PartialRefinement u s) (i : ι) : IsOpen (v i) :=
v.is_open' i
#align shrinking_lemma.partial_refinement.is_open ShrinkingLemma.PartialRefinement.isOpen
+-/
+#print ShrinkingLemma.PartialRefinement.subset /-
protected theorem subset (v : PartialRefinement u s) (i : ι) : v i ⊆ u i :=
if h : i ∈ v.carrier then Subset.trans subset_closure (v.closure_subset h) else (v.apply_eq h).le
#align shrinking_lemma.partial_refinement.subset ShrinkingLemma.PartialRefinement.subset
+-/
attribute [ext] partial_refinement
@@ -112,6 +124,7 @@ instance : PartialOrder (PartialRefinement u s)
else (v₁.apply_eq hx).trans (Eq.symm <| v₂.apply_eq <| hc ▸ hx))
hc
+#print ShrinkingLemma.PartialRefinement.apply_eq_of_chain /-
/-- If two partial refinements `v₁`, `v₂` belong to a chain (hence, they are comparable)
and `i` belongs to the carriers of both partial refinements, then `v₁ i = v₂ i`. -/
theorem apply_eq_of_chain {c : Set (PartialRefinement u s)} (hc : IsChain (· ≤ ·) c) {v₁ v₂}
@@ -121,23 +134,31 @@ theorem apply_eq_of_chain {c : Set (PartialRefinement u s)} (hc : IsChain (·
· cases hc.total h₁ h₂ <;> [skip; symm] <;> apply_assumption <;> assumption'
exact hle.2 _ hi₁
#align shrinking_lemma.partial_refinement.apply_eq_of_chain ShrinkingLemma.PartialRefinement.apply_eq_of_chain
+-/
+#print ShrinkingLemma.PartialRefinement.chainSupCarrier /-
/-- The carrier of the least upper bound of a non-empty chain of partial refinements
is the union of their carriers. -/
def chainSupCarrier (c : Set (PartialRefinement u s)) : Set ι :=
⋃ v ∈ c, carrier v
#align shrinking_lemma.partial_refinement.chain_Sup_carrier ShrinkingLemma.PartialRefinement.chainSupCarrier
+-/
+#print ShrinkingLemma.PartialRefinement.find /-
/-- Choice of an element of a nonempty chain of partial refinements. If `i` belongs to one of
`carrier v`, `v ∈ c`, then `find c ne i` is one of these partial refinements. -/
def find (c : Set (PartialRefinement u s)) (ne : c.Nonempty) (i : ι) : PartialRefinement u s :=
if hi : ∃ v ∈ c, i ∈ carrier v then hi.some else Ne.some
#align shrinking_lemma.partial_refinement.find ShrinkingLemma.PartialRefinement.find
+-/
+#print ShrinkingLemma.PartialRefinement.find_mem /-
theorem find_mem {c : Set (PartialRefinement u s)} (i : ι) (ne : c.Nonempty) : find c Ne i ∈ c := by
rw [find]; split_ifs; exacts [h.some_spec.fst, ne.some_spec]
#align shrinking_lemma.partial_refinement.find_mem ShrinkingLemma.PartialRefinement.find_mem
+-/
+#print ShrinkingLemma.PartialRefinement.mem_find_carrier_iff /-
theorem mem_find_carrier_iff {c : Set (PartialRefinement u s)} {i : ι} (ne : c.Nonempty) :
i ∈ (find c Ne i).carrier ↔ i ∈ chainSupCarrier c :=
by
@@ -149,14 +170,18 @@ theorem mem_find_carrier_iff {c : Set (PartialRefinement u s)} {i : ι} (ne : c.
⟨fun hi => h ⟨_, ne.some_spec, hi⟩, mt mem_Union₂.1 h⟩
simp only [this]
#align shrinking_lemma.partial_refinement.mem_find_carrier_iff ShrinkingLemma.PartialRefinement.mem_find_carrier_iff
+-/
+#print ShrinkingLemma.PartialRefinement.find_apply_of_mem /-
theorem find_apply_of_mem {c : Set (PartialRefinement u s)} (hc : IsChain (· ≤ ·) c)
(ne : c.Nonempty) {i v} (hv : v ∈ c) (hi : i ∈ carrier v) : find c Ne i i = v i :=
apply_eq_of_chain hc (find_mem _ _) hv ((mem_find_carrier_iff _).2 <| mem_iUnion₂.2 ⟨v, hv, hi⟩)
hi
#align shrinking_lemma.partial_refinement.find_apply_of_mem ShrinkingLemma.PartialRefinement.find_apply_of_mem
+-/
/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i «expr ∉ » chain_Sup_carrier c) -/
+#print ShrinkingLemma.PartialRefinement.chainSup /-
/-- Least upper bound of a nonempty chain of partial refinements. -/
def chainSup (c : Set (PartialRefinement u s)) (hc : IsChain (· ≤ ·) c) (ne : c.Nonempty)
(hfin : ∀ x ∈ s, {i | x ∈ u i}.Finite) (hU : s ⊆ ⋃ i, u i) : PartialRefinement u s :=
@@ -179,17 +204,21 @@ def chainSup (c : Set (PartialRefinement u s)) (hc : IsChain (· ≤ ·) c) (ne
have : v j ≤ v i := (hc.total (hvc _ hxi) (hvc _ hj')).elim (fun h => (hmax j hj' h).ge) id
rwa [find_apply_of_mem hc Ne (hvc _ hxi) (this.1 <| hiv _ hj')]
#align shrinking_lemma.partial_refinement.chain_Sup ShrinkingLemma.PartialRefinement.chainSup
+-/
+#print ShrinkingLemma.PartialRefinement.le_chainSup /-
/-- `chain_Sup hu c hc ne hfin hU` is an upper bound of the chain `c`. -/
theorem le_chainSup {c : Set (PartialRefinement u s)} (hc : IsChain (· ≤ ·) c) (ne : c.Nonempty)
(hfin : ∀ x ∈ s, {i | x ∈ u i}.Finite) (hU : s ⊆ ⋃ i, u i) {v} (hv : v ∈ c) :
v ≤ chainSup c hc Ne hfin hU :=
⟨fun i hi => mem_biUnion hv hi, fun i hi => (find_apply_of_mem hc _ hv hi).symm⟩
#align shrinking_lemma.partial_refinement.le_chain_Sup ShrinkingLemma.PartialRefinement.le_chainSup
+-/
/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (j «expr ≠ » i) -/
/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (j «expr ≠ » i) -/
/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (j «expr ≠ » i) -/
+#print ShrinkingLemma.PartialRefinement.exists_gt /-
/-- If `s` is a closed set, `v` is a partial refinement, and `i` is an index such that
`i ∉ v.carrier`, then there exists a partial refinement that is strictly greater than `v`. -/
theorem exists_gt (v : PartialRefinement u s) (hs : IsClosed s) (i : ι) (hi : i ∉ v.carrier) :
@@ -220,6 +249,7 @@ theorem exists_gt (v : PartialRefinement u s) (hs : IsClosed s) (i : ι) (hi : i
exact (update_noteq (ne_of_mem_of_not_mem hj hi) _ _).symm
· exact fun hle => hi (hle.1 <| mem_insert _ _)
#align shrinking_lemma.partial_refinement.exists_gt ShrinkingLemma.PartialRefinement.exists_gt
+-/
end PartialRefinement
mathlib commit https://github.com/leanprover-community/mathlib/commit/31c24aa72e7b3e5ed97a8412470e904f82b81004
@@ -45,7 +45,7 @@ variable {ι X : Type _} [TopologicalSpace X] [NormalSpace X]
namespace ShrinkingLemma
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∉ » carrier) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i «expr ∉ » carrier) -/
-- the trivial refinement needs `u` to be a covering
/-- Auxiliary definition for the proof of `shrinking_lemma`. A partial refinement of a covering
`⋃ i, u i` of a set `s` is a map `v : ι → set X` and a set `carrier : set ι` such that
@@ -156,7 +156,7 @@ theorem find_apply_of_mem {c : Set (PartialRefinement u s)} (hc : IsChain (·
hi
#align shrinking_lemma.partial_refinement.find_apply_of_mem ShrinkingLemma.PartialRefinement.find_apply_of_mem
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∉ » chain_Sup_carrier c) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i «expr ∉ » chain_Sup_carrier c) -/
/-- Least upper bound of a nonempty chain of partial refinements. -/
def chainSup (c : Set (PartialRefinement u s)) (hc : IsChain (· ≤ ·) c) (ne : c.Nonempty)
(hfin : ∀ x ∈ s, {i | x ∈ u i}.Finite) (hU : s ⊆ ⋃ i, u i) : PartialRefinement u s :=
@@ -187,9 +187,9 @@ theorem le_chainSup {c : Set (PartialRefinement u s)} (hc : IsChain (· ≤ ·)
⟨fun i hi => mem_biUnion hv hi, fun i hi => (find_apply_of_mem hc _ hv hi).symm⟩
#align shrinking_lemma.partial_refinement.le_chain_Sup ShrinkingLemma.PartialRefinement.le_chainSup
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (j «expr ≠ » i) -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (j «expr ≠ » i) -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (j «expr ≠ » i) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (j «expr ≠ » i) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (j «expr ≠ » i) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (j «expr ≠ » i) -/
/-- If `s` is a closed set, `v` is a partial refinement, and `i` is an index such that
`i ∉ v.carrier`, then there exists a partial refinement that is strictly greater than `v`. -/
theorem exists_gt (v : PartialRefinement u s) (hs : IsClosed s) (i : ι) (hi : i ∉ v.carrier) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -159,7 +159,7 @@ theorem find_apply_of_mem {c : Set (PartialRefinement u s)} (hc : IsChain (·
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∉ » chain_Sup_carrier c) -/
/-- Least upper bound of a nonempty chain of partial refinements. -/
def chainSup (c : Set (PartialRefinement u s)) (hc : IsChain (· ≤ ·) c) (ne : c.Nonempty)
- (hfin : ∀ x ∈ s, { i | x ∈ u i }.Finite) (hU : s ⊆ ⋃ i, u i) : PartialRefinement u s :=
+ (hfin : ∀ x ∈ s, {i | x ∈ u i}.Finite) (hU : s ⊆ ⋃ i, u i) : PartialRefinement u s :=
by
refine'
⟨fun i => find c Ne i i, chain_Sup_carrier c, fun i => (find _ _ _).IsOpen i, fun x hxs =>
@@ -182,7 +182,7 @@ def chainSup (c : Set (PartialRefinement u s)) (hc : IsChain (· ≤ ·) c) (ne
/-- `chain_Sup hu c hc ne hfin hU` is an upper bound of the chain `c`. -/
theorem le_chainSup {c : Set (PartialRefinement u s)} (hc : IsChain (· ≤ ·) c) (ne : c.Nonempty)
- (hfin : ∀ x ∈ s, { i | x ∈ u i }.Finite) (hU : s ⊆ ⋃ i, u i) {v} (hv : v ∈ c) :
+ (hfin : ∀ x ∈ s, {i | x ∈ u i}.Finite) (hU : s ⊆ ⋃ i, u i) {v} (hv : v ∈ c) :
v ≤ chainSup c hc Ne hfin hU :=
⟨fun i hi => mem_biUnion hv hi, fun i hi => (find_apply_of_mem hc _ hv hi).symm⟩
#align shrinking_lemma.partial_refinement.le_chain_Sup ShrinkingLemma.PartialRefinement.le_chainSup
@@ -209,7 +209,7 @@ theorem exists_gt (v : PartialRefinement u s) (hs : IsClosed s) (i : ι) (hi : i
· refine' fun x hx => mem_Union.2 _
rcases em (∃ (j : _) (_ : j ≠ i), x ∈ v j) with (⟨j, hji, hj⟩ | h)
· use j; rwa [update_noteq hji]
- · push_neg at h ; use i; rw [update_same]; exact hvi ⟨hx, mem_bInter h⟩
+ · push_neg at h ; use i; rw [update_same]; exact hvi ⟨hx, mem_bInter h⟩
· rintro j (rfl | hj)
· rwa [update_same, ← v.apply_eq hi]
· rw [update_noteq (ne_of_mem_of_not_mem hj hi)]; exact v.closure_subset hj
@@ -234,23 +234,22 @@ variable {u : ι → Set X} {s : Set X}
to a new open cover so that the closure of each new open set is contained in the corresponding
original open set. -/
theorem exists_subset_iUnion_closure_subset (hs : IsClosed s) (uo : ∀ i, IsOpen (u i))
- (uf : ∀ x ∈ s, { i | x ∈ u i }.Finite) (us : s ⊆ ⋃ i, u i) :
+ (uf : ∀ x ∈ s, {i | x ∈ u i}.Finite) (us : s ⊆ ⋃ i, u i) :
∃ v : ι → Set X, s ⊆ iUnion v ∧ (∀ i, IsOpen (v i)) ∧ ∀ i, closure (v i) ⊆ u i := by
classical
- haveI : Nonempty (partial_refinement u s) :=
- ⟨⟨u, ∅, uo, us, fun _ => False.elim, fun _ _ => rfl⟩⟩
- have :
- ∀ c : Set (partial_refinement u s), IsChain (· ≤ ·) c → c.Nonempty → ∃ ub, ∀ v ∈ c, v ≤ ub :=
- fun c hc ne =>
- ⟨partial_refinement.chain_Sup c hc Ne uf us, fun v hv =>
- partial_refinement.le_chain_Sup _ _ _ _ hv⟩
- rcases zorn_nonempty_partialOrder this with ⟨v, hv⟩
- suffices : ∀ i, i ∈ v.carrier
- exact ⟨v, v.subset_Union, fun i => v.is_open _, fun i => v.closure_subset (this i)⟩
- contrapose! hv
- rcases hv with ⟨i, hi⟩
- rcases v.exists_gt hs i hi with ⟨v', hlt⟩
- exact ⟨v', hlt.le, hlt.ne'⟩
+ haveI : Nonempty (partial_refinement u s) := ⟨⟨u, ∅, uo, us, fun _ => False.elim, fun _ _ => rfl⟩⟩
+ have :
+ ∀ c : Set (partial_refinement u s), IsChain (· ≤ ·) c → c.Nonempty → ∃ ub, ∀ v ∈ c, v ≤ ub :=
+ fun c hc ne =>
+ ⟨partial_refinement.chain_Sup c hc Ne uf us, fun v hv =>
+ partial_refinement.le_chain_Sup _ _ _ _ hv⟩
+ rcases zorn_nonempty_partialOrder this with ⟨v, hv⟩
+ suffices : ∀ i, i ∈ v.carrier
+ exact ⟨v, v.subset_Union, fun i => v.is_open _, fun i => v.closure_subset (this i)⟩
+ contrapose! hv
+ rcases hv with ⟨i, hi⟩
+ rcases v.exists_gt hs i hi with ⟨v', hlt⟩
+ exact ⟨v', hlt.le, hlt.ne'⟩
#align exists_subset_Union_closure_subset exists_subset_iUnion_closure_subset
-/
@@ -259,7 +258,7 @@ theorem exists_subset_iUnion_closure_subset (hs : IsClosed s) (uo : ∀ i, IsOpe
to a new closed cover so that each new closed set is contained in the corresponding original open
set. See also `exists_subset_Union_closure_subset` for a stronger statement. -/
theorem exists_subset_iUnion_closed_subset (hs : IsClosed s) (uo : ∀ i, IsOpen (u i))
- (uf : ∀ x ∈ s, { i | x ∈ u i }.Finite) (us : s ⊆ ⋃ i, u i) :
+ (uf : ∀ x ∈ s, {i | x ∈ u i}.Finite) (us : s ⊆ ⋃ i, u i) :
∃ v : ι → Set X, s ⊆ iUnion v ∧ (∀ i, IsClosed (v i)) ∧ ∀ i, v i ⊆ u i :=
let ⟨v, hsv, hvo, hv⟩ := exists_subset_iUnion_closure_subset hs uo uf us
⟨fun i => closure (v i), Subset.trans hsv (iUnion_mono fun i => subset_closure), fun i =>
@@ -271,7 +270,7 @@ theorem exists_subset_iUnion_closed_subset (hs : IsClosed s) (uo : ∀ i, IsOpen
/-- Shrinking lemma. A point-finite open cover of a closed subset of a normal space can be "shrunk"
to a new open cover so that the closure of each new open set is contained in the corresponding
original open set. -/
-theorem exists_iUnion_eq_closure_subset (uo : ∀ i, IsOpen (u i)) (uf : ∀ x, { i | x ∈ u i }.Finite)
+theorem exists_iUnion_eq_closure_subset (uo : ∀ i, IsOpen (u i)) (uf : ∀ x, {i | x ∈ u i}.Finite)
(uU : (⋃ i, u i) = univ) :
∃ v : ι → Set X, iUnion v = univ ∧ (∀ i, IsOpen (v i)) ∧ ∀ i, closure (v i) ⊆ u i :=
let ⟨v, vU, hv⟩ := exists_subset_iUnion_closure_subset isClosed_univ uo (fun x _ => uf x) uU.ge
@@ -283,7 +282,7 @@ theorem exists_iUnion_eq_closure_subset (uo : ∀ i, IsOpen (u i)) (uf : ∀ x,
/-- Shrinking lemma. A point-finite open cover of a closed subset of a normal space can be "shrunk"
to a new closed cover so that each of the new closed sets is contained in the corresponding
original open set. See also `exists_Union_eq_closure_subset` for a stronger statement. -/
-theorem exists_iUnion_eq_closed_subset (uo : ∀ i, IsOpen (u i)) (uf : ∀ x, { i | x ∈ u i }.Finite)
+theorem exists_iUnion_eq_closed_subset (uo : ∀ i, IsOpen (u i)) (uf : ∀ x, {i | x ∈ u i}.Finite)
(uU : (⋃ i, u i) = univ) :
∃ v : ι → Set X, iUnion v = univ ∧ (∀ i, IsClosed (v i)) ∧ ∀ i, v i ⊆ u i :=
let ⟨v, vU, hv⟩ := exists_subset_iUnion_closed_subset isClosed_univ uo (fun x _ => uf x) uU.ge
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -118,7 +118,7 @@ theorem apply_eq_of_chain {c : Set (PartialRefinement u s)} (hc : IsChain (·
(h₁ : v₁ ∈ c) (h₂ : v₂ ∈ c) {i} (hi₁ : i ∈ v₁.carrier) (hi₂ : i ∈ v₂.carrier) : v₁ i = v₂ i :=
by
wlog hle : v₁ ≤ v₂
- · cases hc.total h₁ h₂ <;> [skip;symm] <;> apply_assumption <;> assumption'
+ · cases hc.total h₁ h₂ <;> [skip; symm] <;> apply_assumption <;> assumption'
exact hle.2 _ hi₁
#align shrinking_lemma.partial_refinement.apply_eq_of_chain ShrinkingLemma.PartialRefinement.apply_eq_of_chain
@@ -135,7 +135,7 @@ def find (c : Set (PartialRefinement u s)) (ne : c.Nonempty) (i : ι) : PartialR
#align shrinking_lemma.partial_refinement.find ShrinkingLemma.PartialRefinement.find
theorem find_mem {c : Set (PartialRefinement u s)} (i : ι) (ne : c.Nonempty) : find c Ne i ∈ c := by
- rw [find]; split_ifs; exacts[h.some_spec.fst, ne.some_spec]
+ rw [find]; split_ifs; exacts [h.some_spec.fst, ne.some_spec]
#align shrinking_lemma.partial_refinement.find_mem ShrinkingLemma.PartialRefinement.find_mem
theorem mem_find_carrier_iff {c : Set (PartialRefinement u s)} {i : ι} (ne : c.Nonempty) :
@@ -165,10 +165,10 @@ def chainSup (c : Set (PartialRefinement u s)) (hc : IsChain (· ≤ ·) c) (ne
⟨fun i => find c Ne i i, chain_Sup_carrier c, fun i => (find _ _ _).IsOpen i, fun x hxs =>
mem_Union.2 _, fun i hi => (find c Ne i).closure_subset ((mem_find_carrier_iff _).2 hi),
fun i hi => (find c Ne i).apply_eq (mt (mem_find_carrier_iff _).1 hi)⟩
- rcases em (∃ (i : _)(_ : i ∉ chain_Sup_carrier c), x ∈ u i) with (⟨i, hi, hxi⟩ | hx)
+ rcases em (∃ (i : _) (_ : i ∉ chain_Sup_carrier c), x ∈ u i) with (⟨i, hi, hxi⟩ | hx)
· use i
rwa [(find c Ne i).apply_eq (mt (mem_find_carrier_iff _).1 hi)]
- · simp_rw [not_exists, not_imp_not, chain_Sup_carrier, mem_Union₂] at hx
+ · simp_rw [not_exists, not_imp_not, chain_Sup_carrier, mem_Union₂] at hx
haveI : Nonempty (partial_refinement u s) := ⟨ne.some⟩
choose! v hvc hiv using hx
rcases(hfin x hxs).exists_maximal_wrt v _ (mem_Union.1 (hU hxs)) with
@@ -207,14 +207,14 @@ theorem exists_gt (v : PartialRefinement u s) (hs : IsClosed s) (i : ι) (hi : i
refine' ⟨⟨update v i vi, insert i v.carrier, _, _, _, _⟩, _, _⟩
· intro j; by_cases h : j = i <;> simp [h, ovi, v.is_open]
· refine' fun x hx => mem_Union.2 _
- rcases em (∃ (j : _)(_ : j ≠ i), x ∈ v j) with (⟨j, hji, hj⟩ | h)
+ rcases em (∃ (j : _) (_ : j ≠ i), x ∈ v j) with (⟨j, hji, hj⟩ | h)
· use j; rwa [update_noteq hji]
- · push_neg at h; use i; rw [update_same]; exact hvi ⟨hx, mem_bInter h⟩
+ · push_neg at h ; use i; rw [update_same]; exact hvi ⟨hx, mem_bInter h⟩
· rintro j (rfl | hj)
· rwa [update_same, ← v.apply_eq hi]
· rw [update_noteq (ne_of_mem_of_not_mem hj hi)]; exact v.closure_subset hj
· intro j hj
- rw [mem_insert_iff, not_or] at hj
+ rw [mem_insert_iff, not_or] at hj
rw [update_noteq hj.1, v.apply_eq hj.2]
· refine' ⟨subset_insert _ _, fun j hj => _⟩
exact (update_noteq (ne_of_mem_of_not_mem hj hi) _ _).symm
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -37,7 +37,7 @@ normal space, shrinking lemma
open Set Function
-open Classical
+open scoped Classical
noncomputable section
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -45,12 +45,6 @@ variable {ι X : Type _} [TopologicalSpace X] [NormalSpace X]
namespace ShrinkingLemma
-/- warning: shrinking_lemma.partial_refinement -> ShrinkingLemma.PartialRefinement is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1], (ι -> (Set.{u2} X)) -> (Set.{u2} X) -> Sort.{max (succ u1) (succ u2)}
-but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X], (ι -> (Set.{u2} X)) -> (Set.{u2} X) -> Sort.{max (succ u1) (succ u2)}
-Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement ShrinkingLemma.PartialRefinementₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∉ » carrier) -/
-- the trivial refinement needs `u` to be a covering
/-- Auxiliary definition for the proof of `shrinking_lemma`. A partial refinement of a covering
@@ -81,53 +75,23 @@ variable {u : ι → Set X} {s : Set X}
instance : CoeFun (PartialRefinement u s) fun _ => ι → Set X :=
⟨toFun⟩
-/- warning: shrinking_lemma.partial_refinement.subset_Union -> ShrinkingLemma.PartialRefinement.subset_iUnion is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} (v : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s), HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) s (Set.iUnion.{u2, succ u1} X ι (fun (i : ι) => coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (_x : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => ι -> (Set.{u2} X)) (ShrinkingLemma.PartialRefinement.hasCoeToFun.{u1, u2} ι X _inst_1 _inst_2 u s) v i))
-but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} (s : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u), HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) u (Set.iUnion.{u2, succ u1} X ι (fun (i : ι) => ShrinkingLemma.PartialRefinement.toFun.{u1, u2} ι X _inst_1 _inst_2 u s i))
-Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.subset_Union ShrinkingLemma.PartialRefinement.subset_iUnionₓ'. -/
theorem subset_iUnion (v : PartialRefinement u s) : s ⊆ ⋃ i, v i :=
v.subset_Union'
#align shrinking_lemma.partial_refinement.subset_Union ShrinkingLemma.PartialRefinement.subset_iUnion
-/- warning: shrinking_lemma.partial_refinement.closure_subset -> ShrinkingLemma.PartialRefinement.closure_subset is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} (v : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) {i : ι}, (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u s v)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (closure.{u2} X _inst_1 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (_x : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => ι -> (Set.{u2} X)) (ShrinkingLemma.PartialRefinement.hasCoeToFun.{u1, u2} ι X _inst_1 _inst_2 u s) v i)) (u i))
-but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} (s : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) {v : ι}, (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) v (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u s)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (closure.{u2} X _inst_1 (ShrinkingLemma.PartialRefinement.toFun.{u1, u2} ι X _inst_1 _inst_2 u s v)) (_inst_2 v))
-Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.closure_subset ShrinkingLemma.PartialRefinement.closure_subsetₓ'. -/
theorem closure_subset (v : PartialRefinement u s) {i : ι} (hi : i ∈ v.carrier) :
closure (v i) ⊆ u i :=
v.closure_subset' i hi
#align shrinking_lemma.partial_refinement.closure_subset ShrinkingLemma.PartialRefinement.closure_subset
-/- warning: shrinking_lemma.partial_refinement.apply_eq -> ShrinkingLemma.PartialRefinement.apply_eq is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} (v : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) {i : ι}, (Not (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u s v))) -> (Eq.{succ u2} (Set.{u2} X) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (_x : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => ι -> (Set.{u2} X)) (ShrinkingLemma.PartialRefinement.hasCoeToFun.{u1, u2} ι X _inst_1 _inst_2 u s) v i) (u i))
-but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} (s : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) {v : ι}, (Not (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) v (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u s))) -> (Eq.{succ u2} (Set.{u2} X) (ShrinkingLemma.PartialRefinement.toFun.{u1, u2} ι X _inst_1 _inst_2 u s v) (_inst_2 v))
-Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.apply_eq ShrinkingLemma.PartialRefinement.apply_eqₓ'. -/
theorem apply_eq (v : PartialRefinement u s) {i : ι} (hi : i ∉ v.carrier) : v i = u i :=
v.apply_eq' i hi
#align shrinking_lemma.partial_refinement.apply_eq ShrinkingLemma.PartialRefinement.apply_eq
-/- warning: shrinking_lemma.partial_refinement.is_open -> ShrinkingLemma.PartialRefinement.isOpen is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} (v : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (i : ι), IsOpen.{u2} X _inst_1 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (_x : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => ι -> (Set.{u2} X)) (ShrinkingLemma.PartialRefinement.hasCoeToFun.{u1, u2} ι X _inst_1 _inst_2 u s) v i)
-but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} (s : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (v : ι), IsOpen.{u2} X _inst_1 (ShrinkingLemma.PartialRefinement.toFun.{u1, u2} ι X _inst_1 _inst_2 u s v)
-Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.is_open ShrinkingLemma.PartialRefinement.isOpenₓ'. -/
protected theorem isOpen (v : PartialRefinement u s) (i : ι) : IsOpen (v i) :=
v.is_open' i
#align shrinking_lemma.partial_refinement.is_open ShrinkingLemma.PartialRefinement.isOpen
-/- warning: shrinking_lemma.partial_refinement.subset -> ShrinkingLemma.PartialRefinement.subset is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} (v : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (_x : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => ι -> (Set.{u2} X)) (ShrinkingLemma.PartialRefinement.hasCoeToFun.{u1, u2} ι X _inst_1 _inst_2 u s) v i) (u i)
-but is expected to have type
- forall {ι : Type.{u2}} {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {_inst_2 : ι -> (Set.{u1} X)} {u : Set.{u1} X} (s : ShrinkingLemma.PartialRefinement.{u2, u1} ι X _inst_1 _inst_2 u) (v : ι), HasSubset.Subset.{u1} (Set.{u1} X) (Set.instHasSubsetSet.{u1} X) (ShrinkingLemma.PartialRefinement.toFun.{u2, u1} ι X _inst_1 _inst_2 u s v) (_inst_2 v)
-Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.subset ShrinkingLemma.PartialRefinement.subsetₓ'. -/
protected theorem subset (v : PartialRefinement u s) (i : ι) : v i ⊆ u i :=
if h : i ∈ v.carrier then Subset.trans subset_closure (v.closure_subset h) else (v.apply_eq h).le
#align shrinking_lemma.partial_refinement.subset ShrinkingLemma.PartialRefinement.subset
@@ -148,12 +112,6 @@ instance : PartialOrder (PartialRefinement u s)
else (v₁.apply_eq hx).trans (Eq.symm <| v₂.apply_eq <| hc ▸ hx))
hc
-/- warning: shrinking_lemma.partial_refinement.apply_eq_of_chain -> ShrinkingLemma.PartialRefinement.apply_eq_of_chain is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} {c : Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)}, (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toHasLe.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s)))) c) -> (forall {v₁ : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s} {v₂ : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s}, (Membership.Mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) (Set.hasMem.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) v₁ c) -> (Membership.Mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) (Set.hasMem.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) v₂ c) -> (forall {i : ι}, (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u s v₁)) -> (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u s v₂)) -> (Eq.{succ u2} (Set.{u2} X) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (_x : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => ι -> (Set.{u2} X)) (ShrinkingLemma.PartialRefinement.hasCoeToFun.{u1, u2} ι X _inst_1 _inst_2 u s) v₁ i) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (_x : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => ι -> (Set.{u2} X)) (ShrinkingLemma.PartialRefinement.hasCoeToFun.{u1, u2} ι X _inst_1 _inst_2 u s) v₂ i))))
-but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} {s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)}, (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (fun (x._@.Mathlib.Topology.ShrinkingLemma._hyg.471 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (x._@.Mathlib.Topology.ShrinkingLemma._hyg.473 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) => LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) x._@.Mathlib.Topology.ShrinkingLemma._hyg.471 x._@.Mathlib.Topology.ShrinkingLemma._hyg.473) s) -> (forall {hc : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u} {v₁ : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u}, (Membership.mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) (Set.instMembershipSet.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) hc s) -> (Membership.mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) (Set.instMembershipSet.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) v₁ s) -> (forall {h₂ : ι}, (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) h₂ (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u hc)) -> (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) h₂ (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u v₁)) -> (Eq.{succ u2} (Set.{u2} X) (ShrinkingLemma.PartialRefinement.toFun.{u1, u2} ι X _inst_1 _inst_2 u hc h₂) (ShrinkingLemma.PartialRefinement.toFun.{u1, u2} ι X _inst_1 _inst_2 u v₁ h₂))))
-Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.apply_eq_of_chain ShrinkingLemma.PartialRefinement.apply_eq_of_chainₓ'. -/
/-- If two partial refinements `v₁`, `v₂` belong to a chain (hence, they are comparable)
and `i` belongs to the carriers of both partial refinements, then `v₁ i = v₂ i`. -/
theorem apply_eq_of_chain {c : Set (PartialRefinement u s)} (hc : IsChain (· ≤ ·) c) {v₁ v₂}
@@ -164,46 +122,22 @@ theorem apply_eq_of_chain {c : Set (PartialRefinement u s)} (hc : IsChain (·
exact hle.2 _ hi₁
#align shrinking_lemma.partial_refinement.apply_eq_of_chain ShrinkingLemma.PartialRefinement.apply_eq_of_chain
-/- warning: shrinking_lemma.partial_refinement.chain_Sup_carrier -> ShrinkingLemma.PartialRefinement.chainSupCarrier is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X}, (Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) -> (Set.{u1} ι)
-but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X}, (Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) -> (Set.{u1} ι)
-Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.chain_Sup_carrier ShrinkingLemma.PartialRefinement.chainSupCarrierₓ'. -/
/-- The carrier of the least upper bound of a non-empty chain of partial refinements
is the union of their carriers. -/
def chainSupCarrier (c : Set (PartialRefinement u s)) : Set ι :=
⋃ v ∈ c, carrier v
#align shrinking_lemma.partial_refinement.chain_Sup_carrier ShrinkingLemma.PartialRefinement.chainSupCarrier
-/- warning: shrinking_lemma.partial_refinement.find -> ShrinkingLemma.PartialRefinement.find is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} (c : Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)), (Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) c) -> ι -> (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)
-but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} (s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)), (Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) s) -> ι -> (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)
-Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.find ShrinkingLemma.PartialRefinement.findₓ'. -/
/-- Choice of an element of a nonempty chain of partial refinements. If `i` belongs to one of
`carrier v`, `v ∈ c`, then `find c ne i` is one of these partial refinements. -/
def find (c : Set (PartialRefinement u s)) (ne : c.Nonempty) (i : ι) : PartialRefinement u s :=
if hi : ∃ v ∈ c, i ∈ carrier v then hi.some else Ne.some
#align shrinking_lemma.partial_refinement.find ShrinkingLemma.PartialRefinement.find
-/- warning: shrinking_lemma.partial_refinement.find_mem -> ShrinkingLemma.PartialRefinement.find_mem is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} {c : Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)} (i : ι) (ne : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) c), Membership.Mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) (Set.hasMem.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) (ShrinkingLemma.PartialRefinement.find.{u1, u2} ι X _inst_1 _inst_2 u s c ne i) c
-but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} {s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)} (c : ι) (i : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) s), Membership.mem.{max u2 u1, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) (Set.instMembershipSet.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) (ShrinkingLemma.PartialRefinement.find.{u1, u2} ι X _inst_1 _inst_2 u s i c) s
-Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.find_mem ShrinkingLemma.PartialRefinement.find_memₓ'. -/
theorem find_mem {c : Set (PartialRefinement u s)} (i : ι) (ne : c.Nonempty) : find c Ne i ∈ c := by
rw [find]; split_ifs; exacts[h.some_spec.fst, ne.some_spec]
#align shrinking_lemma.partial_refinement.find_mem ShrinkingLemma.PartialRefinement.find_mem
-/- warning: shrinking_lemma.partial_refinement.mem_find_carrier_iff -> ShrinkingLemma.PartialRefinement.mem_find_carrier_iff is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} {c : Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)} {i : ι} (ne : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) c), Iff (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u s (ShrinkingLemma.PartialRefinement.find.{u1, u2} ι X _inst_1 _inst_2 u s c ne i))) (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i (ShrinkingLemma.PartialRefinement.chainSupCarrier.{u1, u2} ι X _inst_1 _inst_2 u s c))
-but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} {s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)} {c : ι} (i : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) s), Iff (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) c (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u (ShrinkingLemma.PartialRefinement.find.{u1, u2} ι X _inst_1 _inst_2 u s i c))) (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) c (ShrinkingLemma.PartialRefinement.chainSupCarrier.{u1, u2} ι X _inst_1 _inst_2 u s))
-Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.mem_find_carrier_iff ShrinkingLemma.PartialRefinement.mem_find_carrier_iffₓ'. -/
theorem mem_find_carrier_iff {c : Set (PartialRefinement u s)} {i : ι} (ne : c.Nonempty) :
i ∈ (find c Ne i).carrier ↔ i ∈ chainSupCarrier c :=
by
@@ -216,24 +150,12 @@ theorem mem_find_carrier_iff {c : Set (PartialRefinement u s)} {i : ι} (ne : c.
simp only [this]
#align shrinking_lemma.partial_refinement.mem_find_carrier_iff ShrinkingLemma.PartialRefinement.mem_find_carrier_iff
-/- warning: shrinking_lemma.partial_refinement.find_apply_of_mem -> ShrinkingLemma.PartialRefinement.find_apply_of_mem is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} {c : Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)}, (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toHasLe.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s)))) c) -> (forall (ne : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) c) {i : ι} {v : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s}, (Membership.Mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) (Set.hasMem.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) v c) -> (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u s v)) -> (Eq.{succ u2} (Set.{u2} X) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (_x : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => ι -> (Set.{u2} X)) (ShrinkingLemma.PartialRefinement.hasCoeToFun.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.find.{u1, u2} ι X _inst_1 _inst_2 u s c ne i) i) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (_x : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => ι -> (Set.{u2} X)) (ShrinkingLemma.PartialRefinement.hasCoeToFun.{u1, u2} ι X _inst_1 _inst_2 u s) v i)))
-but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} {s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)}, (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (fun (x._@.Mathlib.Topology.ShrinkingLemma._hyg.895 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (x._@.Mathlib.Topology.ShrinkingLemma._hyg.897 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) => LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) x._@.Mathlib.Topology.ShrinkingLemma._hyg.895 x._@.Mathlib.Topology.ShrinkingLemma._hyg.897) s) -> (forall (hc : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) s) {ne : ι} {i : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u}, (Membership.mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) (Set.instMembershipSet.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) i s) -> (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) ne (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u i)) -> (Eq.{succ u2} (Set.{u2} X) (ShrinkingLemma.PartialRefinement.toFun.{u1, u2} ι X _inst_1 _inst_2 u (ShrinkingLemma.PartialRefinement.find.{u1, u2} ι X _inst_1 _inst_2 u s hc ne) ne) (ShrinkingLemma.PartialRefinement.toFun.{u1, u2} ι X _inst_1 _inst_2 u i ne)))
-Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.find_apply_of_mem ShrinkingLemma.PartialRefinement.find_apply_of_memₓ'. -/
theorem find_apply_of_mem {c : Set (PartialRefinement u s)} (hc : IsChain (· ≤ ·) c)
(ne : c.Nonempty) {i v} (hv : v ∈ c) (hi : i ∈ carrier v) : find c Ne i i = v i :=
apply_eq_of_chain hc (find_mem _ _) hv ((mem_find_carrier_iff _).2 <| mem_iUnion₂.2 ⟨v, hv, hi⟩)
hi
#align shrinking_lemma.partial_refinement.find_apply_of_mem ShrinkingLemma.PartialRefinement.find_apply_of_mem
-/- warning: shrinking_lemma.partial_refinement.chain_Sup -> ShrinkingLemma.PartialRefinement.chainSup is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} (c : Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)), (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toHasLe.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s)))) c) -> (Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) c) -> (forall (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x s) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (u i))))) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) s (Set.iUnion.{u2, succ u1} X ι (fun (i : ι) => u i))) -> (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)
-but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} (s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)), (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (fun (x._@.Mathlib.Topology.ShrinkingLemma._hyg.986 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (x._@.Mathlib.Topology.ShrinkingLemma._hyg.988 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) => LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) x._@.Mathlib.Topology.ShrinkingLemma._hyg.986 x._@.Mathlib.Topology.ShrinkingLemma._hyg.988) s) -> (Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) s) -> (forall (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x u) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x (_inst_2 i))))) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) u (Set.iUnion.{u2, succ u1} X ι (fun (i : ι) => _inst_2 i))) -> (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)
-Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.chain_Sup ShrinkingLemma.PartialRefinement.chainSupₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∉ » chain_Sup_carrier c) -/
/-- Least upper bound of a nonempty chain of partial refinements. -/
def chainSup (c : Set (PartialRefinement u s)) (hc : IsChain (· ≤ ·) c) (ne : c.Nonempty)
@@ -258,12 +180,6 @@ def chainSup (c : Set (PartialRefinement u s)) (hc : IsChain (· ≤ ·) c) (ne
rwa [find_apply_of_mem hc Ne (hvc _ hxi) (this.1 <| hiv _ hj')]
#align shrinking_lemma.partial_refinement.chain_Sup ShrinkingLemma.PartialRefinement.chainSup
-/- warning: shrinking_lemma.partial_refinement.le_chain_Sup -> ShrinkingLemma.PartialRefinement.le_chainSup is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} {c : Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)} (hc : IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toHasLe.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s)))) c) (ne : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) c) (hfin : forall (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x s) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (u i))))) (hU : HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) s (Set.iUnion.{u2, succ u1} X ι (fun (i : ι) => u i))) {v : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s}, (Membership.Mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) (Set.hasMem.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) v c) -> (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toHasLe.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s))) v (ShrinkingLemma.PartialRefinement.chainSup.{u1, u2} ι X _inst_1 _inst_2 u s c hc ne hfin hU))
-but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} {s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)} (c : IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (fun (x._@.Mathlib.Topology.ShrinkingLemma._hyg.1456 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (x._@.Mathlib.Topology.ShrinkingLemma._hyg.1458 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) => LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) x._@.Mathlib.Topology.ShrinkingLemma._hyg.1456 x._@.Mathlib.Topology.ShrinkingLemma._hyg.1458) s) (hc : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) s) (ne : forall (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x u) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x (_inst_2 i))))) (hfin : HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) u (Set.iUnion.{u2, succ u1} X ι (fun (i : ι) => _inst_2 i))) {hU : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u}, (Membership.mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) (Set.instMembershipSet.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) hU s) -> (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) hU (ShrinkingLemma.PartialRefinement.chainSup.{u1, u2} ι X _inst_1 _inst_2 u s c hc ne hfin))
-Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.le_chain_Sup ShrinkingLemma.PartialRefinement.le_chainSupₓ'. -/
/-- `chain_Sup hu c hc ne hfin hU` is an upper bound of the chain `c`. -/
theorem le_chainSup {c : Set (PartialRefinement u s)} (hc : IsChain (· ≤ ·) c) (ne : c.Nonempty)
(hfin : ∀ x ∈ s, { i | x ∈ u i }.Finite) (hU : s ⊆ ⋃ i, u i) {v} (hv : v ∈ c) :
@@ -271,12 +187,6 @@ theorem le_chainSup {c : Set (PartialRefinement u s)} (hc : IsChain (· ≤ ·)
⟨fun i hi => mem_biUnion hv hi, fun i hi => (find_apply_of_mem hc _ hv hi).symm⟩
#align shrinking_lemma.partial_refinement.le_chain_Sup ShrinkingLemma.PartialRefinement.le_chainSup
-/- warning: shrinking_lemma.partial_refinement.exists_gt -> ShrinkingLemma.PartialRefinement.exists_gt is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} (v : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s), (IsClosed.{u2} X _inst_1 s) -> (forall (i : ι), (Not (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u s v))) -> (Exists.{max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (v' : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => LT.lt.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toHasLt.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s))) v v')))
-but is expected to have type
- forall {ι : Type.{u2}} {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : NormalSpace.{u1} X _inst_1] {u : ι -> (Set.{u1} X)} {s : Set.{u1} X} (v : ShrinkingLemma.PartialRefinement.{u2, u1} ι X _inst_1 u s), (IsClosed.{u1} X _inst_1 s) -> (forall (i : ι), (Not (Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i (ShrinkingLemma.PartialRefinement.carrier.{u2, u1} ι X _inst_1 u s v))) -> (Exists.{max (succ u2) (succ u1)} (ShrinkingLemma.PartialRefinement.{u2, u1} ι X _inst_1 u s) (fun (v' : ShrinkingLemma.PartialRefinement.{u2, u1} ι X _inst_1 u s) => LT.lt.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u2, u1} ι X _inst_1 u s) (Preorder.toLT.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u2, u1} ι X _inst_1 u s) (PartialOrder.toPreorder.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u2, u1} ι X _inst_1 u s) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u2, u1} ι X _inst_1 u s))) v v')))
-Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.exists_gt ShrinkingLemma.PartialRefinement.exists_gtₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (j «expr ≠ » i) -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (j «expr ≠ » i) -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (j «expr ≠ » i) -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -194,11 +194,8 @@ lean 3 declaration is
but is expected to have type
forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} {s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)} (c : ι) (i : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) s), Membership.mem.{max u2 u1, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) (Set.instMembershipSet.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) (ShrinkingLemma.PartialRefinement.find.{u1, u2} ι X _inst_1 _inst_2 u s i c) s
Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.find_mem ShrinkingLemma.PartialRefinement.find_memₓ'. -/
-theorem find_mem {c : Set (PartialRefinement u s)} (i : ι) (ne : c.Nonempty) : find c Ne i ∈ c :=
- by
- rw [find]
- split_ifs
- exacts[h.some_spec.fst, ne.some_spec]
+theorem find_mem {c : Set (PartialRefinement u s)} (i : ι) (ne : c.Nonempty) : find c Ne i ∈ c := by
+ rw [find]; split_ifs; exacts[h.some_spec.fst, ne.some_spec]
#align shrinking_lemma.partial_refinement.find_mem ShrinkingLemma.PartialRefinement.find_mem
/- warning: shrinking_lemma.partial_refinement.mem_find_carrier_iff -> ShrinkingLemma.PartialRefinement.mem_find_carrier_iff is a dubious translation:
@@ -298,20 +295,14 @@ theorem exists_gt (v : PartialRefinement u s) (hs : IsClosed s) (i : ι) (hi : i
IsClosed.inter hs (isClosed_biInter fun _ _ => isClosed_compl_iff.2 <| v.is_open _)
rcases normal_exists_closure_subset C (v.is_open i) I with ⟨vi, ovi, hvi, cvi⟩
refine' ⟨⟨update v i vi, insert i v.carrier, _, _, _, _⟩, _, _⟩
- · intro j
- by_cases h : j = i <;> simp [h, ovi, v.is_open]
+ · intro j; by_cases h : j = i <;> simp [h, ovi, v.is_open]
· refine' fun x hx => mem_Union.2 _
rcases em (∃ (j : _)(_ : j ≠ i), x ∈ v j) with (⟨j, hji, hj⟩ | h)
- · use j
- rwa [update_noteq hji]
- · push_neg at h
- use i
- rw [update_same]
- exact hvi ⟨hx, mem_bInter h⟩
+ · use j; rwa [update_noteq hji]
+ · push_neg at h; use i; rw [update_same]; exact hvi ⟨hx, mem_bInter h⟩
· rintro j (rfl | hj)
· rwa [update_same, ← v.apply_eq hi]
- · rw [update_noteq (ne_of_mem_of_not_mem hj hi)]
- exact v.closure_subset hj
+ · rw [update_noteq (ne_of_mem_of_not_mem hj hi)]; exact v.closure_subset hj
· intro j hj
rw [mem_insert_iff, not_or] at hj
rw [update_noteq hj.1, v.apply_eq hj.2]
mathlib commit https://github.com/leanprover-community/mathlib/commit/8d33f09cd7089ecf074b4791907588245aec5d1b
@@ -160,7 +160,7 @@ theorem apply_eq_of_chain {c : Set (PartialRefinement u s)} (hc : IsChain (·
(h₁ : v₁ ∈ c) (h₂ : v₂ ∈ c) {i} (hi₁ : i ∈ v₁.carrier) (hi₂ : i ∈ v₂.carrier) : v₁ i = v₂ i :=
by
wlog hle : v₁ ≤ v₂
- · cases hc.total h₁ h₂ <;> [skip, symm] <;> apply_assumption <;> assumption'
+ · cases hc.total h₁ h₂ <;> [skip;symm] <;> apply_assumption <;> assumption'
exact hle.2 _ hi₁
#align shrinking_lemma.partial_refinement.apply_eq_of_chain ShrinkingLemma.PartialRefinement.apply_eq_of_chain
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -150,7 +150,7 @@ instance : PartialOrder (PartialRefinement u s)
/- warning: shrinking_lemma.partial_refinement.apply_eq_of_chain -> ShrinkingLemma.PartialRefinement.apply_eq_of_chain is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} {c : Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)}, (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s)))) c) -> (forall {v₁ : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s} {v₂ : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s}, (Membership.Mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) (Set.hasMem.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) v₁ c) -> (Membership.Mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) (Set.hasMem.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) v₂ c) -> (forall {i : ι}, (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u s v₁)) -> (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u s v₂)) -> (Eq.{succ u2} (Set.{u2} X) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (_x : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => ι -> (Set.{u2} X)) (ShrinkingLemma.PartialRefinement.hasCoeToFun.{u1, u2} ι X _inst_1 _inst_2 u s) v₁ i) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (_x : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => ι -> (Set.{u2} X)) (ShrinkingLemma.PartialRefinement.hasCoeToFun.{u1, u2} ι X _inst_1 _inst_2 u s) v₂ i))))
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} {c : Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)}, (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toHasLe.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s)))) c) -> (forall {v₁ : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s} {v₂ : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s}, (Membership.Mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) (Set.hasMem.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) v₁ c) -> (Membership.Mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) (Set.hasMem.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) v₂ c) -> (forall {i : ι}, (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u s v₁)) -> (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u s v₂)) -> (Eq.{succ u2} (Set.{u2} X) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (_x : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => ι -> (Set.{u2} X)) (ShrinkingLemma.PartialRefinement.hasCoeToFun.{u1, u2} ι X _inst_1 _inst_2 u s) v₁ i) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (_x : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => ι -> (Set.{u2} X)) (ShrinkingLemma.PartialRefinement.hasCoeToFun.{u1, u2} ι X _inst_1 _inst_2 u s) v₂ i))))
but is expected to have type
forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} {s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)}, (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (fun (x._@.Mathlib.Topology.ShrinkingLemma._hyg.471 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (x._@.Mathlib.Topology.ShrinkingLemma._hyg.473 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) => LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) x._@.Mathlib.Topology.ShrinkingLemma._hyg.471 x._@.Mathlib.Topology.ShrinkingLemma._hyg.473) s) -> (forall {hc : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u} {v₁ : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u}, (Membership.mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) (Set.instMembershipSet.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) hc s) -> (Membership.mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) (Set.instMembershipSet.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) v₁ s) -> (forall {h₂ : ι}, (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) h₂ (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u hc)) -> (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) h₂ (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u v₁)) -> (Eq.{succ u2} (Set.{u2} X) (ShrinkingLemma.PartialRefinement.toFun.{u1, u2} ι X _inst_1 _inst_2 u hc h₂) (ShrinkingLemma.PartialRefinement.toFun.{u1, u2} ι X _inst_1 _inst_2 u v₁ h₂))))
Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.apply_eq_of_chain ShrinkingLemma.PartialRefinement.apply_eq_of_chainₓ'. -/
@@ -221,7 +221,7 @@ theorem mem_find_carrier_iff {c : Set (PartialRefinement u s)} {i : ι} (ne : c.
/- warning: shrinking_lemma.partial_refinement.find_apply_of_mem -> ShrinkingLemma.PartialRefinement.find_apply_of_mem is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} {c : Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)}, (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s)))) c) -> (forall (ne : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) c) {i : ι} {v : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s}, (Membership.Mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) (Set.hasMem.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) v c) -> (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u s v)) -> (Eq.{succ u2} (Set.{u2} X) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (_x : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => ι -> (Set.{u2} X)) (ShrinkingLemma.PartialRefinement.hasCoeToFun.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.find.{u1, u2} ι X _inst_1 _inst_2 u s c ne i) i) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (_x : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => ι -> (Set.{u2} X)) (ShrinkingLemma.PartialRefinement.hasCoeToFun.{u1, u2} ι X _inst_1 _inst_2 u s) v i)))
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} {c : Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)}, (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toHasLe.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s)))) c) -> (forall (ne : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) c) {i : ι} {v : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s}, (Membership.Mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) (Set.hasMem.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) v c) -> (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u s v)) -> (Eq.{succ u2} (Set.{u2} X) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (_x : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => ι -> (Set.{u2} X)) (ShrinkingLemma.PartialRefinement.hasCoeToFun.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.find.{u1, u2} ι X _inst_1 _inst_2 u s c ne i) i) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (_x : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => ι -> (Set.{u2} X)) (ShrinkingLemma.PartialRefinement.hasCoeToFun.{u1, u2} ι X _inst_1 _inst_2 u s) v i)))
but is expected to have type
forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} {s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)}, (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (fun (x._@.Mathlib.Topology.ShrinkingLemma._hyg.895 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (x._@.Mathlib.Topology.ShrinkingLemma._hyg.897 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) => LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) x._@.Mathlib.Topology.ShrinkingLemma._hyg.895 x._@.Mathlib.Topology.ShrinkingLemma._hyg.897) s) -> (forall (hc : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) s) {ne : ι} {i : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u}, (Membership.mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) (Set.instMembershipSet.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) i s) -> (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) ne (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u i)) -> (Eq.{succ u2} (Set.{u2} X) (ShrinkingLemma.PartialRefinement.toFun.{u1, u2} ι X _inst_1 _inst_2 u (ShrinkingLemma.PartialRefinement.find.{u1, u2} ι X _inst_1 _inst_2 u s hc ne) ne) (ShrinkingLemma.PartialRefinement.toFun.{u1, u2} ι X _inst_1 _inst_2 u i ne)))
Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.find_apply_of_mem ShrinkingLemma.PartialRefinement.find_apply_of_memₓ'. -/
@@ -233,7 +233,7 @@ theorem find_apply_of_mem {c : Set (PartialRefinement u s)} (hc : IsChain (·
/- warning: shrinking_lemma.partial_refinement.chain_Sup -> ShrinkingLemma.PartialRefinement.chainSup is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} (c : Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)), (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s)))) c) -> (Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) c) -> (forall (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x s) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (u i))))) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) s (Set.iUnion.{u2, succ u1} X ι (fun (i : ι) => u i))) -> (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} (c : Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)), (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toHasLe.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s)))) c) -> (Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) c) -> (forall (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x s) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (u i))))) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) s (Set.iUnion.{u2, succ u1} X ι (fun (i : ι) => u i))) -> (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)
but is expected to have type
forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} (s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)), (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (fun (x._@.Mathlib.Topology.ShrinkingLemma._hyg.986 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (x._@.Mathlib.Topology.ShrinkingLemma._hyg.988 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) => LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) x._@.Mathlib.Topology.ShrinkingLemma._hyg.986 x._@.Mathlib.Topology.ShrinkingLemma._hyg.988) s) -> (Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) s) -> (forall (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x u) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x (_inst_2 i))))) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) u (Set.iUnion.{u2, succ u1} X ι (fun (i : ι) => _inst_2 i))) -> (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)
Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.chain_Sup ShrinkingLemma.PartialRefinement.chainSupₓ'. -/
@@ -263,7 +263,7 @@ def chainSup (c : Set (PartialRefinement u s)) (hc : IsChain (· ≤ ·) c) (ne
/- warning: shrinking_lemma.partial_refinement.le_chain_Sup -> ShrinkingLemma.PartialRefinement.le_chainSup is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} {c : Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)} (hc : IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s)))) c) (ne : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) c) (hfin : forall (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x s) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (u i))))) (hU : HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) s (Set.iUnion.{u2, succ u1} X ι (fun (i : ι) => u i))) {v : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s}, (Membership.Mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) (Set.hasMem.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) v c) -> (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s))) v (ShrinkingLemma.PartialRefinement.chainSup.{u1, u2} ι X _inst_1 _inst_2 u s c hc ne hfin hU))
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} {c : Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)} (hc : IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toHasLe.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s)))) c) (ne : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) c) (hfin : forall (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x s) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (u i))))) (hU : HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) s (Set.iUnion.{u2, succ u1} X ι (fun (i : ι) => u i))) {v : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s}, (Membership.Mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) (Set.hasMem.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) v c) -> (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toHasLe.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s))) v (ShrinkingLemma.PartialRefinement.chainSup.{u1, u2} ι X _inst_1 _inst_2 u s c hc ne hfin hU))
but is expected to have type
forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} {s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)} (c : IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (fun (x._@.Mathlib.Topology.ShrinkingLemma._hyg.1456 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (x._@.Mathlib.Topology.ShrinkingLemma._hyg.1458 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) => LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) x._@.Mathlib.Topology.ShrinkingLemma._hyg.1456 x._@.Mathlib.Topology.ShrinkingLemma._hyg.1458) s) (hc : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) s) (ne : forall (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x u) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x (_inst_2 i))))) (hfin : HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) u (Set.iUnion.{u2, succ u1} X ι (fun (i : ι) => _inst_2 i))) {hU : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u}, (Membership.mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) (Set.instMembershipSet.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) hU s) -> (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) hU (ShrinkingLemma.PartialRefinement.chainSup.{u1, u2} ι X _inst_1 _inst_2 u s c hc ne hfin))
Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.le_chain_Sup ShrinkingLemma.PartialRefinement.le_chainSupₓ'. -/
@@ -276,7 +276,7 @@ theorem le_chainSup {c : Set (PartialRefinement u s)} (hc : IsChain (· ≤ ·)
/- warning: shrinking_lemma.partial_refinement.exists_gt -> ShrinkingLemma.PartialRefinement.exists_gt is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} (v : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s), (IsClosed.{u2} X _inst_1 s) -> (forall (i : ι), (Not (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u s v))) -> (Exists.{max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (v' : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => LT.lt.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toLT.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s))) v v')))
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} (v : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s), (IsClosed.{u2} X _inst_1 s) -> (forall (i : ι), (Not (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u s v))) -> (Exists.{max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (v' : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => LT.lt.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toHasLt.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s))) v v')))
but is expected to have type
forall {ι : Type.{u2}} {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : NormalSpace.{u1} X _inst_1] {u : ι -> (Set.{u1} X)} {s : Set.{u1} X} (v : ShrinkingLemma.PartialRefinement.{u2, u1} ι X _inst_1 u s), (IsClosed.{u1} X _inst_1 s) -> (forall (i : ι), (Not (Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i (ShrinkingLemma.PartialRefinement.carrier.{u2, u1} ι X _inst_1 u s v))) -> (Exists.{max (succ u2) (succ u1)} (ShrinkingLemma.PartialRefinement.{u2, u1} ι X _inst_1 u s) (fun (v' : ShrinkingLemma.PartialRefinement.{u2, u1} ι X _inst_1 u s) => LT.lt.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u2, u1} ι X _inst_1 u s) (Preorder.toLT.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u2, u1} ι X _inst_1 u s) (PartialOrder.toPreorder.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u2, u1} ι X _inst_1 u s) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u2, u1} ι X _inst_1 u s))) v v')))
Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.exists_gt ShrinkingLemma.PartialRefinement.exists_gtₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -81,15 +81,15 @@ variable {u : ι → Set X} {s : Set X}
instance : CoeFun (PartialRefinement u s) fun _ => ι → Set X :=
⟨toFun⟩
-/- warning: shrinking_lemma.partial_refinement.subset_Union -> ShrinkingLemma.PartialRefinement.subset_unionᵢ is a dubious translation:
+/- warning: shrinking_lemma.partial_refinement.subset_Union -> ShrinkingLemma.PartialRefinement.subset_iUnion is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} (v : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s), HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) s (Set.unionᵢ.{u2, succ u1} X ι (fun (i : ι) => coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (_x : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => ι -> (Set.{u2} X)) (ShrinkingLemma.PartialRefinement.hasCoeToFun.{u1, u2} ι X _inst_1 _inst_2 u s) v i))
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} (v : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s), HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) s (Set.iUnion.{u2, succ u1} X ι (fun (i : ι) => coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (_x : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => ι -> (Set.{u2} X)) (ShrinkingLemma.PartialRefinement.hasCoeToFun.{u1, u2} ι X _inst_1 _inst_2 u s) v i))
but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} (s : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u), HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) u (Set.unionᵢ.{u2, succ u1} X ι (fun (i : ι) => ShrinkingLemma.PartialRefinement.toFun.{u1, u2} ι X _inst_1 _inst_2 u s i))
-Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.subset_Union ShrinkingLemma.PartialRefinement.subset_unionᵢₓ'. -/
-theorem subset_unionᵢ (v : PartialRefinement u s) : s ⊆ ⋃ i, v i :=
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} (s : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u), HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) u (Set.iUnion.{u2, succ u1} X ι (fun (i : ι) => ShrinkingLemma.PartialRefinement.toFun.{u1, u2} ι X _inst_1 _inst_2 u s i))
+Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.subset_Union ShrinkingLemma.PartialRefinement.subset_iUnionₓ'. -/
+theorem subset_iUnion (v : PartialRefinement u s) : s ⊆ ⋃ i, v i :=
v.subset_Union'
-#align shrinking_lemma.partial_refinement.subset_Union ShrinkingLemma.PartialRefinement.subset_unionᵢ
+#align shrinking_lemma.partial_refinement.subset_Union ShrinkingLemma.PartialRefinement.subset_iUnion
/- warning: shrinking_lemma.partial_refinement.closure_subset -> ShrinkingLemma.PartialRefinement.closure_subset is a dubious translation:
lean 3 declaration is
@@ -227,15 +227,15 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.find_apply_of_mem ShrinkingLemma.PartialRefinement.find_apply_of_memₓ'. -/
theorem find_apply_of_mem {c : Set (PartialRefinement u s)} (hc : IsChain (· ≤ ·) c)
(ne : c.Nonempty) {i v} (hv : v ∈ c) (hi : i ∈ carrier v) : find c Ne i i = v i :=
- apply_eq_of_chain hc (find_mem _ _) hv ((mem_find_carrier_iff _).2 <| mem_unionᵢ₂.2 ⟨v, hv, hi⟩)
+ apply_eq_of_chain hc (find_mem _ _) hv ((mem_find_carrier_iff _).2 <| mem_iUnion₂.2 ⟨v, hv, hi⟩)
hi
#align shrinking_lemma.partial_refinement.find_apply_of_mem ShrinkingLemma.PartialRefinement.find_apply_of_mem
/- warning: shrinking_lemma.partial_refinement.chain_Sup -> ShrinkingLemma.PartialRefinement.chainSup is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} (c : Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)), (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s)))) c) -> (Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) c) -> (forall (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x s) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (u i))))) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) s (Set.unionᵢ.{u2, succ u1} X ι (fun (i : ι) => u i))) -> (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} (c : Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)), (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s)))) c) -> (Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) c) -> (forall (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x s) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (u i))))) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) s (Set.iUnion.{u2, succ u1} X ι (fun (i : ι) => u i))) -> (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)
but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} (s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)), (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (fun (x._@.Mathlib.Topology.ShrinkingLemma._hyg.986 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (x._@.Mathlib.Topology.ShrinkingLemma._hyg.988 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) => LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) x._@.Mathlib.Topology.ShrinkingLemma._hyg.986 x._@.Mathlib.Topology.ShrinkingLemma._hyg.988) s) -> (Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) s) -> (forall (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x u) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x (_inst_2 i))))) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) u (Set.unionᵢ.{u2, succ u1} X ι (fun (i : ι) => _inst_2 i))) -> (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} (s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)), (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (fun (x._@.Mathlib.Topology.ShrinkingLemma._hyg.986 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (x._@.Mathlib.Topology.ShrinkingLemma._hyg.988 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) => LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) x._@.Mathlib.Topology.ShrinkingLemma._hyg.986 x._@.Mathlib.Topology.ShrinkingLemma._hyg.988) s) -> (Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) s) -> (forall (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x u) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x (_inst_2 i))))) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) u (Set.iUnion.{u2, succ u1} X ι (fun (i : ι) => _inst_2 i))) -> (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)
Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.chain_Sup ShrinkingLemma.PartialRefinement.chainSupₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∉ » chain_Sup_carrier c) -/
/-- Least upper bound of a nonempty chain of partial refinements. -/
@@ -254,7 +254,7 @@ def chainSup (c : Set (PartialRefinement u s)) (hc : IsChain (· ≤ ·) c) (ne
choose! v hvc hiv using hx
rcases(hfin x hxs).exists_maximal_wrt v _ (mem_Union.1 (hU hxs)) with
⟨i, hxi : x ∈ u i, hmax : ∀ j, x ∈ u j → v i ≤ v j → v i = v j⟩
- rcases mem_Union.1 ((v i).subset_unionᵢ hxs) with ⟨j, hj⟩
+ rcases mem_Union.1 ((v i).subset_iUnion hxs) with ⟨j, hj⟩
use j
have hj' : x ∈ u j := (v i).Subset _ hj
have : v j ≤ v i := (hc.total (hvc _ hxi) (hvc _ hj')).elim (fun h => (hmax j hj' h).ge) id
@@ -263,15 +263,15 @@ def chainSup (c : Set (PartialRefinement u s)) (hc : IsChain (· ≤ ·) c) (ne
/- warning: shrinking_lemma.partial_refinement.le_chain_Sup -> ShrinkingLemma.PartialRefinement.le_chainSup is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} {c : Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)} (hc : IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s)))) c) (ne : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) c) (hfin : forall (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x s) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (u i))))) (hU : HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) s (Set.unionᵢ.{u2, succ u1} X ι (fun (i : ι) => u i))) {v : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s}, (Membership.Mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) (Set.hasMem.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) v c) -> (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s))) v (ShrinkingLemma.PartialRefinement.chainSup.{u1, u2} ι X _inst_1 _inst_2 u s c hc ne hfin hU))
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} {c : Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)} (hc : IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s)))) c) (ne : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) c) (hfin : forall (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x s) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (u i))))) (hU : HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) s (Set.iUnion.{u2, succ u1} X ι (fun (i : ι) => u i))) {v : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s}, (Membership.Mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) (Set.hasMem.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) v c) -> (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s))) v (ShrinkingLemma.PartialRefinement.chainSup.{u1, u2} ι X _inst_1 _inst_2 u s c hc ne hfin hU))
but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} {s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)} (c : IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (fun (x._@.Mathlib.Topology.ShrinkingLemma._hyg.1456 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (x._@.Mathlib.Topology.ShrinkingLemma._hyg.1458 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) => LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) x._@.Mathlib.Topology.ShrinkingLemma._hyg.1456 x._@.Mathlib.Topology.ShrinkingLemma._hyg.1458) s) (hc : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) s) (ne : forall (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x u) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x (_inst_2 i))))) (hfin : HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) u (Set.unionᵢ.{u2, succ u1} X ι (fun (i : ι) => _inst_2 i))) {hU : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u}, (Membership.mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) (Set.instMembershipSet.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) hU s) -> (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) hU (ShrinkingLemma.PartialRefinement.chainSup.{u1, u2} ι X _inst_1 _inst_2 u s c hc ne hfin))
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} {s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)} (c : IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (fun (x._@.Mathlib.Topology.ShrinkingLemma._hyg.1456 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (x._@.Mathlib.Topology.ShrinkingLemma._hyg.1458 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) => LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) x._@.Mathlib.Topology.ShrinkingLemma._hyg.1456 x._@.Mathlib.Topology.ShrinkingLemma._hyg.1458) s) (hc : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) s) (ne : forall (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x u) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x (_inst_2 i))))) (hfin : HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) u (Set.iUnion.{u2, succ u1} X ι (fun (i : ι) => _inst_2 i))) {hU : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u}, (Membership.mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) (Set.instMembershipSet.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) hU s) -> (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) hU (ShrinkingLemma.PartialRefinement.chainSup.{u1, u2} ι X _inst_1 _inst_2 u s c hc ne hfin))
Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.le_chain_Sup ShrinkingLemma.PartialRefinement.le_chainSupₓ'. -/
/-- `chain_Sup hu c hc ne hfin hU` is an upper bound of the chain `c`. -/
theorem le_chainSup {c : Set (PartialRefinement u s)} (hc : IsChain (· ≤ ·) c) (ne : c.Nonempty)
(hfin : ∀ x ∈ s, { i | x ∈ u i }.Finite) (hU : s ⊆ ⋃ i, u i) {v} (hv : v ∈ c) :
v ≤ chainSup c hc Ne hfin hU :=
- ⟨fun i hi => mem_bunionᵢ hv hi, fun i hi => (find_apply_of_mem hc _ hv hi).symm⟩
+ ⟨fun i hi => mem_biUnion hv hi, fun i hi => (find_apply_of_mem hc _ hv hi).symm⟩
#align shrinking_lemma.partial_refinement.le_chain_Sup ShrinkingLemma.PartialRefinement.le_chainSup
/- warning: shrinking_lemma.partial_refinement.exists_gt -> ShrinkingLemma.PartialRefinement.exists_gt is a dubious translation:
@@ -295,7 +295,7 @@ theorem exists_gt (v : PartialRefinement u s) (hs : IsClosed s) (i : ι) (hi : i
rcases mem_Union.1 (v.subset_Union hxs) with ⟨j, hj⟩
exact (em (j = i)).elim (fun h => h ▸ hj) fun h => (H j h hj).elim
have C : IsClosed (s ∩ ⋂ (j) (_ : j ≠ i), v jᶜ) :=
- IsClosed.inter hs (isClosed_binterᵢ fun _ _ => isClosed_compl_iff.2 <| v.is_open _)
+ IsClosed.inter hs (isClosed_biInter fun _ _ => isClosed_compl_iff.2 <| v.is_open _)
rcases normal_exists_closure_subset C (v.is_open i) I with ⟨vi, ovi, hvi, cvi⟩
refine' ⟨⟨update v i vi, insert i v.carrier, _, _, _, _⟩, _, _⟩
· intro j
@@ -328,13 +328,13 @@ open ShrinkingLemma
variable {u : ι → Set X} {s : Set X}
-#print exists_subset_unionᵢ_closure_subset /-
+#print exists_subset_iUnion_closure_subset /-
/-- Shrinking lemma. A point-finite open cover of a closed subset of a normal space can be "shrunk"
to a new open cover so that the closure of each new open set is contained in the corresponding
original open set. -/
-theorem exists_subset_unionᵢ_closure_subset (hs : IsClosed s) (uo : ∀ i, IsOpen (u i))
+theorem exists_subset_iUnion_closure_subset (hs : IsClosed s) (uo : ∀ i, IsOpen (u i))
(uf : ∀ x ∈ s, { i | x ∈ u i }.Finite) (us : s ⊆ ⋃ i, u i) :
- ∃ v : ι → Set X, s ⊆ unionᵢ v ∧ (∀ i, IsOpen (v i)) ∧ ∀ i, closure (v i) ⊆ u i := by
+ ∃ v : ι → Set X, s ⊆ iUnion v ∧ (∀ i, IsOpen (v i)) ∧ ∀ i, closure (v i) ⊆ u i := by
classical
haveI : Nonempty (partial_refinement u s) :=
⟨⟨u, ∅, uo, us, fun _ => False.elim, fun _ _ => rfl⟩⟩
@@ -350,43 +350,43 @@ theorem exists_subset_unionᵢ_closure_subset (hs : IsClosed s) (uo : ∀ i, IsO
rcases hv with ⟨i, hi⟩
rcases v.exists_gt hs i hi with ⟨v', hlt⟩
exact ⟨v', hlt.le, hlt.ne'⟩
-#align exists_subset_Union_closure_subset exists_subset_unionᵢ_closure_subset
+#align exists_subset_Union_closure_subset exists_subset_iUnion_closure_subset
-/
-#print exists_subset_unionᵢ_closed_subset /-
+#print exists_subset_iUnion_closed_subset /-
/-- Shrinking lemma. A point-finite open cover of a closed subset of a normal space can be "shrunk"
to a new closed cover so that each new closed set is contained in the corresponding original open
set. See also `exists_subset_Union_closure_subset` for a stronger statement. -/
-theorem exists_subset_unionᵢ_closed_subset (hs : IsClosed s) (uo : ∀ i, IsOpen (u i))
+theorem exists_subset_iUnion_closed_subset (hs : IsClosed s) (uo : ∀ i, IsOpen (u i))
(uf : ∀ x ∈ s, { i | x ∈ u i }.Finite) (us : s ⊆ ⋃ i, u i) :
- ∃ v : ι → Set X, s ⊆ unionᵢ v ∧ (∀ i, IsClosed (v i)) ∧ ∀ i, v i ⊆ u i :=
- let ⟨v, hsv, hvo, hv⟩ := exists_subset_unionᵢ_closure_subset hs uo uf us
- ⟨fun i => closure (v i), Subset.trans hsv (unionᵢ_mono fun i => subset_closure), fun i =>
+ ∃ v : ι → Set X, s ⊆ iUnion v ∧ (∀ i, IsClosed (v i)) ∧ ∀ i, v i ⊆ u i :=
+ let ⟨v, hsv, hvo, hv⟩ := exists_subset_iUnion_closure_subset hs uo uf us
+ ⟨fun i => closure (v i), Subset.trans hsv (iUnion_mono fun i => subset_closure), fun i =>
isClosed_closure, hv⟩
-#align exists_subset_Union_closed_subset exists_subset_unionᵢ_closed_subset
+#align exists_subset_Union_closed_subset exists_subset_iUnion_closed_subset
-/
-#print exists_unionᵢ_eq_closure_subset /-
+#print exists_iUnion_eq_closure_subset /-
/-- Shrinking lemma. A point-finite open cover of a closed subset of a normal space can be "shrunk"
to a new open cover so that the closure of each new open set is contained in the corresponding
original open set. -/
-theorem exists_unionᵢ_eq_closure_subset (uo : ∀ i, IsOpen (u i)) (uf : ∀ x, { i | x ∈ u i }.Finite)
+theorem exists_iUnion_eq_closure_subset (uo : ∀ i, IsOpen (u i)) (uf : ∀ x, { i | x ∈ u i }.Finite)
(uU : (⋃ i, u i) = univ) :
- ∃ v : ι → Set X, unionᵢ v = univ ∧ (∀ i, IsOpen (v i)) ∧ ∀ i, closure (v i) ⊆ u i :=
- let ⟨v, vU, hv⟩ := exists_subset_unionᵢ_closure_subset isClosed_univ uo (fun x _ => uf x) uU.ge
+ ∃ v : ι → Set X, iUnion v = univ ∧ (∀ i, IsOpen (v i)) ∧ ∀ i, closure (v i) ⊆ u i :=
+ let ⟨v, vU, hv⟩ := exists_subset_iUnion_closure_subset isClosed_univ uo (fun x _ => uf x) uU.ge
⟨v, univ_subset_iff.1 vU, hv⟩
-#align exists_Union_eq_closure_subset exists_unionᵢ_eq_closure_subset
+#align exists_Union_eq_closure_subset exists_iUnion_eq_closure_subset
-/
-#print exists_unionᵢ_eq_closed_subset /-
+#print exists_iUnion_eq_closed_subset /-
/-- Shrinking lemma. A point-finite open cover of a closed subset of a normal space can be "shrunk"
to a new closed cover so that each of the new closed sets is contained in the corresponding
original open set. See also `exists_Union_eq_closure_subset` for a stronger statement. -/
-theorem exists_unionᵢ_eq_closed_subset (uo : ∀ i, IsOpen (u i)) (uf : ∀ x, { i | x ∈ u i }.Finite)
+theorem exists_iUnion_eq_closed_subset (uo : ∀ i, IsOpen (u i)) (uf : ∀ x, { i | x ∈ u i }.Finite)
(uU : (⋃ i, u i) = univ) :
- ∃ v : ι → Set X, unionᵢ v = univ ∧ (∀ i, IsClosed (v i)) ∧ ∀ i, v i ⊆ u i :=
- let ⟨v, vU, hv⟩ := exists_subset_unionᵢ_closed_subset isClosed_univ uo (fun x _ => uf x) uU.ge
+ ∃ v : ι → Set X, iUnion v = univ ∧ (∀ i, IsClosed (v i)) ∧ ∀ i, v i ⊆ u i :=
+ let ⟨v, vU, hv⟩ := exists_subset_iUnion_closed_subset isClosed_univ uo (fun x _ => uf x) uU.ge
⟨v, univ_subset_iff.1 vU, hv⟩
-#align exists_Union_eq_closed_subset exists_unionᵢ_eq_closed_subset
+#align exists_Union_eq_closed_subset exists_iUnion_eq_closed_subset
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/36b8aa61ea7c05727161f96a0532897bd72aedab
@@ -265,7 +265,7 @@ def chainSup (c : Set (PartialRefinement u s)) (hc : IsChain (· ≤ ·) c) (ne
lean 3 declaration is
forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} {c : Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)} (hc : IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s)))) c) (ne : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) c) (hfin : forall (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x s) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (u i))))) (hU : HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) s (Set.unionᵢ.{u2, succ u1} X ι (fun (i : ι) => u i))) {v : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s}, (Membership.Mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) (Set.hasMem.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) v c) -> (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s))) v (ShrinkingLemma.PartialRefinement.chainSup.{u1, u2} ι X _inst_1 _inst_2 u s c hc ne hfin hU))
but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} {s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)} (c : IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (fun (x._@.Mathlib.Topology.ShrinkingLemma._hyg.1458 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (x._@.Mathlib.Topology.ShrinkingLemma._hyg.1460 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) => LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) x._@.Mathlib.Topology.ShrinkingLemma._hyg.1458 x._@.Mathlib.Topology.ShrinkingLemma._hyg.1460) s) (hc : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) s) (ne : forall (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x u) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x (_inst_2 i))))) (hfin : HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) u (Set.unionᵢ.{u2, succ u1} X ι (fun (i : ι) => _inst_2 i))) {hU : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u}, (Membership.mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) (Set.instMembershipSet.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) hU s) -> (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) hU (ShrinkingLemma.PartialRefinement.chainSup.{u1, u2} ι X _inst_1 _inst_2 u s c hc ne hfin))
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} {s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)} (c : IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (fun (x._@.Mathlib.Topology.ShrinkingLemma._hyg.1456 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (x._@.Mathlib.Topology.ShrinkingLemma._hyg.1458 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) => LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) x._@.Mathlib.Topology.ShrinkingLemma._hyg.1456 x._@.Mathlib.Topology.ShrinkingLemma._hyg.1458) s) (hc : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) s) (ne : forall (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x u) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x (_inst_2 i))))) (hfin : HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) u (Set.unionᵢ.{u2, succ u1} X ι (fun (i : ι) => _inst_2 i))) {hU : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u}, (Membership.mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) (Set.instMembershipSet.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) hU s) -> (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) hU (ShrinkingLemma.PartialRefinement.chainSup.{u1, u2} ι X _inst_1 _inst_2 u s c hc ne hfin))
Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.le_chain_Sup ShrinkingLemma.PartialRefinement.le_chainSupₓ'. -/
/-- `chain_Sup hu c hc ne hfin hU` is an upper bound of the chain `c`. -/
theorem le_chainSup {c : Set (PartialRefinement u s)} (hc : IsChain (· ≤ ·) c) (ne : c.Nonempty)
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -152,7 +152,7 @@ instance : PartialOrder (PartialRefinement u s)
lean 3 declaration is
forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} {c : Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)}, (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s)))) c) -> (forall {v₁ : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s} {v₂ : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s}, (Membership.Mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) (Set.hasMem.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) v₁ c) -> (Membership.Mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) (Set.hasMem.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) v₂ c) -> (forall {i : ι}, (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u s v₁)) -> (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u s v₂)) -> (Eq.{succ u2} (Set.{u2} X) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (_x : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => ι -> (Set.{u2} X)) (ShrinkingLemma.PartialRefinement.hasCoeToFun.{u1, u2} ι X _inst_1 _inst_2 u s) v₁ i) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (_x : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => ι -> (Set.{u2} X)) (ShrinkingLemma.PartialRefinement.hasCoeToFun.{u1, u2} ι X _inst_1 _inst_2 u s) v₂ i))))
but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} {s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)}, (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (fun (x._@.Mathlib.Topology.ShrinkingLemma._hyg.468 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (x._@.Mathlib.Topology.ShrinkingLemma._hyg.470 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) => LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) x._@.Mathlib.Topology.ShrinkingLemma._hyg.468 x._@.Mathlib.Topology.ShrinkingLemma._hyg.470) s) -> (forall {hc : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u} {v₁ : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u}, (Membership.mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) (Set.instMembershipSet.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) hc s) -> (Membership.mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) (Set.instMembershipSet.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) v₁ s) -> (forall {h₂ : ι}, (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) h₂ (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u hc)) -> (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) h₂ (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u v₁)) -> (Eq.{succ u2} (Set.{u2} X) (ShrinkingLemma.PartialRefinement.toFun.{u1, u2} ι X _inst_1 _inst_2 u hc h₂) (ShrinkingLemma.PartialRefinement.toFun.{u1, u2} ι X _inst_1 _inst_2 u v₁ h₂))))
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} {s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)}, (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (fun (x._@.Mathlib.Topology.ShrinkingLemma._hyg.471 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (x._@.Mathlib.Topology.ShrinkingLemma._hyg.473 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) => LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) x._@.Mathlib.Topology.ShrinkingLemma._hyg.471 x._@.Mathlib.Topology.ShrinkingLemma._hyg.473) s) -> (forall {hc : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u} {v₁ : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u}, (Membership.mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) (Set.instMembershipSet.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) hc s) -> (Membership.mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) (Set.instMembershipSet.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) v₁ s) -> (forall {h₂ : ι}, (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) h₂ (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u hc)) -> (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) h₂ (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u v₁)) -> (Eq.{succ u2} (Set.{u2} X) (ShrinkingLemma.PartialRefinement.toFun.{u1, u2} ι X _inst_1 _inst_2 u hc h₂) (ShrinkingLemma.PartialRefinement.toFun.{u1, u2} ι X _inst_1 _inst_2 u v₁ h₂))))
Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.apply_eq_of_chain ShrinkingLemma.PartialRefinement.apply_eq_of_chainₓ'. -/
/-- If two partial refinements `v₁`, `v₂` belong to a chain (hence, they are comparable)
and `i` belongs to the carriers of both partial refinements, then `v₁ i = v₂ i`. -/
@@ -223,7 +223,7 @@ theorem mem_find_carrier_iff {c : Set (PartialRefinement u s)} {i : ι} (ne : c.
lean 3 declaration is
forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} {c : Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)}, (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s)))) c) -> (forall (ne : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) c) {i : ι} {v : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s}, (Membership.Mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) (Set.hasMem.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) v c) -> (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u s v)) -> (Eq.{succ u2} (Set.{u2} X) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (_x : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => ι -> (Set.{u2} X)) (ShrinkingLemma.PartialRefinement.hasCoeToFun.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.find.{u1, u2} ι X _inst_1 _inst_2 u s c ne i) i) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (fun (_x : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) => ι -> (Set.{u2} X)) (ShrinkingLemma.PartialRefinement.hasCoeToFun.{u1, u2} ι X _inst_1 _inst_2 u s) v i)))
but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} {s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)}, (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (fun (x._@.Mathlib.Topology.ShrinkingLemma._hyg.890 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (x._@.Mathlib.Topology.ShrinkingLemma._hyg.892 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) => LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) x._@.Mathlib.Topology.ShrinkingLemma._hyg.890 x._@.Mathlib.Topology.ShrinkingLemma._hyg.892) s) -> (forall (hc : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) s) {ne : ι} {i : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u}, (Membership.mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) (Set.instMembershipSet.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) i s) -> (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) ne (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u i)) -> (Eq.{succ u2} (Set.{u2} X) (ShrinkingLemma.PartialRefinement.toFun.{u1, u2} ι X _inst_1 _inst_2 u (ShrinkingLemma.PartialRefinement.find.{u1, u2} ι X _inst_1 _inst_2 u s hc ne) ne) (ShrinkingLemma.PartialRefinement.toFun.{u1, u2} ι X _inst_1 _inst_2 u i ne)))
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} {s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)}, (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (fun (x._@.Mathlib.Topology.ShrinkingLemma._hyg.895 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (x._@.Mathlib.Topology.ShrinkingLemma._hyg.897 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) => LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) x._@.Mathlib.Topology.ShrinkingLemma._hyg.895 x._@.Mathlib.Topology.ShrinkingLemma._hyg.897) s) -> (forall (hc : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) s) {ne : ι} {i : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u}, (Membership.mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) (Set.instMembershipSet.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) i s) -> (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) ne (ShrinkingLemma.PartialRefinement.carrier.{u1, u2} ι X _inst_1 _inst_2 u i)) -> (Eq.{succ u2} (Set.{u2} X) (ShrinkingLemma.PartialRefinement.toFun.{u1, u2} ι X _inst_1 _inst_2 u (ShrinkingLemma.PartialRefinement.find.{u1, u2} ι X _inst_1 _inst_2 u s hc ne) ne) (ShrinkingLemma.PartialRefinement.toFun.{u1, u2} ι X _inst_1 _inst_2 u i ne)))
Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.find_apply_of_mem ShrinkingLemma.PartialRefinement.find_apply_of_memₓ'. -/
theorem find_apply_of_mem {c : Set (PartialRefinement u s)} (hc : IsChain (· ≤ ·) c)
(ne : c.Nonempty) {i v} (hv : v ∈ c) (hi : i ∈ carrier v) : find c Ne i i = v i :=
@@ -235,7 +235,7 @@ theorem find_apply_of_mem {c : Set (PartialRefinement u s)} (hc : IsChain (·
lean 3 declaration is
forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} (c : Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)), (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s)))) c) -> (Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) c) -> (forall (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x s) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (u i))))) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) s (Set.unionᵢ.{u2, succ u1} X ι (fun (i : ι) => u i))) -> (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)
but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} (s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)), (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (fun (x._@.Mathlib.Topology.ShrinkingLemma._hyg.979 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (x._@.Mathlib.Topology.ShrinkingLemma._hyg.981 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) => LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) x._@.Mathlib.Topology.ShrinkingLemma._hyg.979 x._@.Mathlib.Topology.ShrinkingLemma._hyg.981) s) -> (Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) s) -> (forall (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x u) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x (_inst_2 i))))) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) u (Set.unionᵢ.{u2, succ u1} X ι (fun (i : ι) => _inst_2 i))) -> (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} (s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)), (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (fun (x._@.Mathlib.Topology.ShrinkingLemma._hyg.986 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (x._@.Mathlib.Topology.ShrinkingLemma._hyg.988 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) => LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) x._@.Mathlib.Topology.ShrinkingLemma._hyg.986 x._@.Mathlib.Topology.ShrinkingLemma._hyg.988) s) -> (Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) s) -> (forall (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x u) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x (_inst_2 i))))) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) u (Set.unionᵢ.{u2, succ u1} X ι (fun (i : ι) => _inst_2 i))) -> (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)
Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.chain_Sup ShrinkingLemma.PartialRefinement.chainSupₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∉ » chain_Sup_carrier c) -/
/-- Least upper bound of a nonempty chain of partial refinements. -/
@@ -265,7 +265,7 @@ def chainSup (c : Set (PartialRefinement u s)) (hc : IsChain (· ≤ ·) c) (ne
lean 3 declaration is
forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : NormalSpace.{u2} X _inst_1] {u : ι -> (Set.{u2} X)} {s : Set.{u2} X} {c : Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)} (hc : IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s)))) c) (ne : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) c) (hfin : forall (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x s) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (u i))))) (hU : HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) s (Set.unionᵢ.{u2, succ u1} X ι (fun (i : ι) => u i))) {v : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s}, (Membership.Mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Set.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) (Set.hasMem.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s)) v c) -> (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u s) (ShrinkingLemma.PartialRefinement.partialOrder.{u1, u2} ι X _inst_1 _inst_2 u s))) v (ShrinkingLemma.PartialRefinement.chainSup.{u1, u2} ι X _inst_1 _inst_2 u s c hc ne hfin hU))
but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} {s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)} (c : IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (fun (x._@.Mathlib.Topology.ShrinkingLemma._hyg.1450 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (x._@.Mathlib.Topology.ShrinkingLemma._hyg.1452 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) => LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) x._@.Mathlib.Topology.ShrinkingLemma._hyg.1450 x._@.Mathlib.Topology.ShrinkingLemma._hyg.1452) s) (hc : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) s) (ne : forall (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x u) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x (_inst_2 i))))) (hfin : HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) u (Set.unionᵢ.{u2, succ u1} X ι (fun (i : ι) => _inst_2 i))) {hU : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u}, (Membership.mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) (Set.instMembershipSet.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) hU s) -> (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) hU (ShrinkingLemma.PartialRefinement.chainSup.{u1, u2} ι X _inst_1 _inst_2 u s c hc ne hfin))
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} {s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)} (c : IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (fun (x._@.Mathlib.Topology.ShrinkingLemma._hyg.1458 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (x._@.Mathlib.Topology.ShrinkingLemma._hyg.1460 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) => LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) x._@.Mathlib.Topology.ShrinkingLemma._hyg.1458 x._@.Mathlib.Topology.ShrinkingLemma._hyg.1460) s) (hc : Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) s) (ne : forall (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x u) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x (_inst_2 i))))) (hfin : HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) u (Set.unionᵢ.{u2, succ u1} X ι (fun (i : ι) => _inst_2 i))) {hU : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u}, (Membership.mem.{max u1 u2, max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) (Set.instMembershipSet.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)) hU s) -> (LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) hU (ShrinkingLemma.PartialRefinement.chainSup.{u1, u2} ι X _inst_1 _inst_2 u s c hc ne hfin))
Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.le_chain_Sup ShrinkingLemma.PartialRefinement.le_chainSupₓ'. -/
/-- `chain_Sup hu c hc ne hfin hU` is an upper bound of the chain `c`. -/
theorem le_chainSup {c : Set (PartialRefinement u s)} (hc : IsChain (· ≤ ·) c) (ne : c.Nonempty)
mathlib commit https://github.com/leanprover-community/mathlib/commit/4c586d291f189eecb9d00581aeb3dd998ac34442
@@ -51,7 +51,7 @@ lean 3 declaration is
but is expected to have type
forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X], (ι -> (Set.{u2} X)) -> (Set.{u2} X) -> Sort.{max (succ u1) (succ u2)}
Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement ShrinkingLemma.PartialRefinementₓ'. -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (i «expr ∉ » carrier) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∉ » carrier) -/
-- the trivial refinement needs `u` to be a covering
/-- Auxiliary definition for the proof of `shrinking_lemma`. A partial refinement of a covering
`⋃ i, u i` of a set `s` is a map `v : ι → set X` and a set `carrier : set ι` such that
@@ -237,7 +237,7 @@ lean 3 declaration is
but is expected to have type
forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] {_inst_2 : ι -> (Set.{u2} X)} {u : Set.{u2} X} (s : Set.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)), (IsChain.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (fun (x._@.Mathlib.Topology.ShrinkingLemma._hyg.979 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (x._@.Mathlib.Topology.ShrinkingLemma._hyg.981 : ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) => LE.le.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (Preorder.toLE.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (PartialOrder.toPreorder.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u))) x._@.Mathlib.Topology.ShrinkingLemma._hyg.979 x._@.Mathlib.Topology.ShrinkingLemma._hyg.981) s) -> (Set.Nonempty.{max u1 u2} (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u) s) -> (forall (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x u) -> (Set.Finite.{u1} ι (setOf.{u1} ι (fun (i : ι) => Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x (_inst_2 i))))) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) u (Set.unionᵢ.{u2, succ u1} X ι (fun (i : ι) => _inst_2 i))) -> (ShrinkingLemma.PartialRefinement.{u1, u2} ι X _inst_1 _inst_2 u)
Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.chain_Sup ShrinkingLemma.PartialRefinement.chainSupₓ'. -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (i «expr ∉ » chain_Sup_carrier c) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∉ » chain_Sup_carrier c) -/
/-- Least upper bound of a nonempty chain of partial refinements. -/
def chainSup (c : Set (PartialRefinement u s)) (hc : IsChain (· ≤ ·) c) (ne : c.Nonempty)
(hfin : ∀ x ∈ s, { i | x ∈ u i }.Finite) (hU : s ⊆ ⋃ i, u i) : PartialRefinement u s :=
@@ -280,9 +280,9 @@ lean 3 declaration is
but is expected to have type
forall {ι : Type.{u2}} {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : NormalSpace.{u1} X _inst_1] {u : ι -> (Set.{u1} X)} {s : Set.{u1} X} (v : ShrinkingLemma.PartialRefinement.{u2, u1} ι X _inst_1 u s), (IsClosed.{u1} X _inst_1 s) -> (forall (i : ι), (Not (Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i (ShrinkingLemma.PartialRefinement.carrier.{u2, u1} ι X _inst_1 u s v))) -> (Exists.{max (succ u2) (succ u1)} (ShrinkingLemma.PartialRefinement.{u2, u1} ι X _inst_1 u s) (fun (v' : ShrinkingLemma.PartialRefinement.{u2, u1} ι X _inst_1 u s) => LT.lt.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u2, u1} ι X _inst_1 u s) (Preorder.toLT.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u2, u1} ι X _inst_1 u s) (PartialOrder.toPreorder.{max u2 u1} (ShrinkingLemma.PartialRefinement.{u2, u1} ι X _inst_1 u s) (ShrinkingLemma.PartialRefinement.instPartialOrderPartialRefinement.{u2, u1} ι X _inst_1 u s))) v v')))
Case conversion may be inaccurate. Consider using '#align shrinking_lemma.partial_refinement.exists_gt ShrinkingLemma.PartialRefinement.exists_gtₓ'. -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (j «expr ≠ » i) -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (j «expr ≠ » i) -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (j «expr ≠ » i) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (j «expr ≠ » i) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (j «expr ≠ » i) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (j «expr ≠ » i) -/
/-- If `s` is a closed set, `v` is a partial refinement, and `i` is an index such that
`i ∉ v.carrier`, then there exists a partial refinement that is strictly greater than `v`. -/
theorem exists_gt (v : PartialRefinement u s) (hs : IsClosed s) (i : ι) (hi : i ∉ v.carrier) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -51,7 +51,7 @@ namespace ShrinkingLemma
This type is equipped with the following partial order: `v ≤ v'` if `v.carrier ⊆ v'.carrier`
and `v i = v' i` for `i ∈ v.carrier`. We will use Zorn's lemma to prove that this type has
a maximal element, then show that the maximal element must have `carrier = univ`. -/
--- Porting note: @[nolint has_nonempty_instance] is not here yet
+-- Porting note(#5171): this linter isn't ported yet. @[nolint has_nonempty_instance]
@[ext] structure PartialRefinement (u : ι → Set X) (s : Set X) where
/-- A family of sets that form a partial refinement of `u`. -/
toFun : ι → Set X
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -51,7 +51,7 @@ namespace ShrinkingLemma
This type is equipped with the following partial order: `v ≤ v'` if `v.carrier ⊆ v'.carrier`
and `v i = v' i` for `i ∈ v.carrier`. We will use Zorn's lemma to prove that this type has
a maximal element, then show that the maximal element must have `carrier = univ`. -/
--- porting note: @[nolint has_nonempty_instance] is not here yet
+-- Porting note: @[nolint has_nonempty_instance] is not here yet
@[ext] structure PartialRefinement (u : ι → Set X) (s : Set X) where
/-- A family of sets that form a partial refinement of `u`. -/
toFun : ι → Set X
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>
@@ -223,8 +223,8 @@ theorem exists_subset_iUnion_closure_subset (hs : IsClosed s) (uo : ∀ i, IsOpe
IsChain (· ≤ ·) c → c.Nonempty → ∃ ub, ∀ v ∈ c, v ≤ ub :=
fun c hc ne => ⟨.chainSup c hc ne uf us, fun v hv => PartialRefinement.le_chainSup _ _ _ _ hv⟩
rcases zorn_nonempty_partialOrder this with ⟨v, hv⟩
- suffices : ∀ i, i ∈ v.carrier
- exact ⟨v, v.subset_iUnion, fun i => v.isOpen _, fun i => v.closure_subset (this i)⟩
+ suffices ∀ i, i ∈ v.carrier from
+ ⟨v, v.subset_iUnion, fun i => v.isOpen _, fun i => v.closure_subset (this i)⟩
contrapose! hv
rcases hv with ⟨i, hi⟩
rcases v.exists_gt hs i hi with ⟨v', hlt⟩
@@ -185,7 +185,7 @@ theorem exists_gt (v : PartialRefinement u s) (hs : IsClosed s) (i : ι) (hi : i
· intro j
rcases eq_or_ne j i with (rfl| hne) <;> simp [*, v.isOpen]
· refine' fun x hx => mem_iUnion.2 _
- rcases em (∃ (j : _) (_ : j ≠ i), x ∈ v j) with (⟨j, hji, hj⟩ | h)
+ rcases em (∃ j ≠ i, x ∈ v j) with (⟨j, hji, hj⟩ | h)
· use j
rwa [update_noteq hji]
· push_neg at h
rcases
, convert
and congrm
(#7725)
Replace rcases(
with rcases (
. Same thing for convert(
and congrm(
. No other change.
@@ -151,7 +151,7 @@ def chainSup (c : Set (PartialRefinement u s)) (hc : IsChain (· ≤ ·) c) (ne
· simp_rw [not_exists, not_and, not_imp_not, chainSupCarrier, mem_iUnion₂] at hx
haveI : Nonempty (PartialRefinement u s) := ⟨ne.some⟩
choose! v hvc hiv using hx
- rcases(hfin x hxs).exists_maximal_wrt v _ (mem_iUnion.1 (hU hxs)) with
+ rcases (hfin x hxs).exists_maximal_wrt v _ (mem_iUnion.1 (hU hxs)) with
⟨i, hxi : x ∈ u i, hmax : ∀ j, x ∈ u j → v i ≤ v j → v i = v j⟩
rcases mem_iUnion.1 ((v i).subset_iUnion hxs) with ⟨j, hj⟩
use j
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -35,7 +35,7 @@ open scoped Classical
noncomputable section
-variable {ι X : Type _} [TopologicalSpace X] [NormalSpace X]
+variable {ι X : Type*} [TopologicalSpace X] [NormalSpace X]
namespace ShrinkingLemma
@@ -2,14 +2,11 @@
Copyright (c) 2021 Yury Kudryashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov, Reid Barton
-
-! This file was ported from Lean 3 source module topology.shrinking_lemma
-! leanprover-community/mathlib commit 4c19a16e4b705bf135cf9a80ac18fcc99c438514
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Topology.Separation
+#align_import topology.shrinking_lemma from "leanprover-community/mathlib"@"4c19a16e4b705bf135cf9a80ac18fcc99c438514"
+
/-!
# The shrinking lemma
@@ -249,7 +249,7 @@ theorem exists_subset_iUnion_closed_subset (hs : IsClosed s) (uo : ∀ i, IsOpen
to a new open cover so that the closure of each new open set is contained in the corresponding
original open set. -/
theorem exists_iUnion_eq_closure_subset (uo : ∀ i, IsOpen (u i)) (uf : ∀ x, { i | x ∈ u i }.Finite)
- (uU : (⋃ i, u i) = univ) :
+ (uU : ⋃ i, u i = univ) :
∃ v : ι → Set X, iUnion v = univ ∧ (∀ i, IsOpen (v i)) ∧ ∀ i, closure (v i) ⊆ u i :=
let ⟨v, vU, hv⟩ := exists_subset_iUnion_closure_subset isClosed_univ uo (fun x _ => uf x) uU.ge
⟨v, univ_subset_iff.1 vU, hv⟩
@@ -259,7 +259,7 @@ theorem exists_iUnion_eq_closure_subset (uo : ∀ i, IsOpen (u i)) (uf : ∀ x,
to a new closed cover so that each of the new closed sets is contained in the corresponding
original open set. See also `exists_iUnion_eq_closure_subset` for a stronger statement. -/
theorem exists_iUnion_eq_closed_subset (uo : ∀ i, IsOpen (u i)) (uf : ∀ x, { i | x ∈ u i }.Finite)
- (uU : (⋃ i, u i) = univ) :
+ (uU : ⋃ i, u i = univ) :
∃ v : ι → Set X, iUnion v = univ ∧ (∀ i, IsClosed (v i)) ∧ ∀ i, v i ⊆ u i :=
let ⟨v, vU, hv⟩ := exists_subset_iUnion_closed_subset isClosed_univ uo (fun x _ => uf x) uU.ge
⟨v, univ_subset_iff.1 vU, hv⟩
@@ -176,12 +176,12 @@ theorem le_chainSup {c : Set (PartialRefinement u s)} (hc : IsChain (· ≤ ·)
`i ∉ v.carrier`, then there exists a partial refinement that is strictly greater than `v`. -/
theorem exists_gt (v : PartialRefinement u s) (hs : IsClosed s) (i : ι) (hi : i ∉ v.carrier) :
∃ v' : PartialRefinement u s, v < v' := by
- have I : (s ∩ ⋂ (j) (_ : j ≠ i), v jᶜ) ⊆ v i := by
+ have I : (s ∩ ⋂ (j) (_ : j ≠ i), (v j)ᶜ) ⊆ v i := by
simp only [subset_def, mem_inter_iff, mem_iInter, and_imp]
intro x hxs H
rcases mem_iUnion.1 (v.subset_iUnion hxs) with ⟨j, hj⟩
exact (em (j = i)).elim (fun h => h ▸ hj) fun h => (H j h hj).elim
- have C : IsClosed (s ∩ ⋂ (j) (_ : j ≠ i), v jᶜ) :=
+ have C : IsClosed (s ∩ ⋂ (j) (_ : j ≠ i), (v j)ᶜ) :=
IsClosed.inter hs (isClosed_biInter fun _ _ => isClosed_compl_iff.2 <| v.isOpen _)
rcases normal_exists_closure_subset C (v.isOpen i) I with ⟨vi, ovi, hvi, cvi⟩
refine' ⟨⟨update v i vi, insert i v.carrier, _, _, _, _⟩, _, _⟩
at
and goals (#5387)
Changes are of the form
some_tactic at h⊢
-> some_tactic at h ⊢
some_tactic at h
-> some_tactic at h
@@ -191,7 +191,7 @@ theorem exists_gt (v : PartialRefinement u s) (hs : IsClosed s) (i : ι) (hi : i
rcases em (∃ (j : _) (_ : j ≠ i), x ∈ v j) with (⟨j, hji, hj⟩ | h)
· use j
rwa [update_noteq hji]
- · push_neg at h
+ · push_neg at h
use i
rw [update_same]
exact hvi ⟨hx, mem_biInter h⟩
@@ -188,7 +188,7 @@ theorem exists_gt (v : PartialRefinement u s) (hs : IsClosed s) (i : ι) (hi : i
· intro j
rcases eq_or_ne j i with (rfl| hne) <;> simp [*, v.isOpen]
· refine' fun x hx => mem_iUnion.2 _
- rcases em (∃ (j : _)(_ : j ≠ i), x ∈ v j) with (⟨j, hji, hj⟩ | h)
+ rcases em (∃ (j : _) (_ : j ≠ i), x ∈ v j) with (⟨j, hji, hj⟩ | h)
· use j
rwa [update_noteq hji]
· push_neg at h
@@ -176,12 +176,12 @@ theorem le_chainSup {c : Set (PartialRefinement u s)} (hc : IsChain (· ≤ ·)
`i ∉ v.carrier`, then there exists a partial refinement that is strictly greater than `v`. -/
theorem exists_gt (v : PartialRefinement u s) (hs : IsClosed s) (i : ι) (hi : i ∉ v.carrier) :
∃ v' : PartialRefinement u s, v < v' := by
- have I : (s ∩ ⋂ (j) (_hj : j ≠ i), v jᶜ) ⊆ v i := by
+ have I : (s ∩ ⋂ (j) (_ : j ≠ i), v jᶜ) ⊆ v i := by
simp only [subset_def, mem_inter_iff, mem_iInter, and_imp]
intro x hxs H
rcases mem_iUnion.1 (v.subset_iUnion hxs) with ⟨j, hj⟩
exact (em (j = i)).elim (fun h => h ▸ hj) fun h => (H j h hj).elim
- have C : IsClosed (s ∩ ⋂ (j) (_hj : j ≠ i), v jᶜ) :=
+ have C : IsClosed (s ∩ ⋂ (j) (_ : j ≠ i), v jᶜ) :=
IsClosed.inter hs (isClosed_biInter fun _ _ => isClosed_compl_iff.2 <| v.isOpen _)
rcases normal_exists_closure_subset C (v.isOpen i) I with ⟨vi, ovi, hvi, cvi⟩
refine' ⟨⟨update v i vi, insert i v.carrier, _, _, _, _⟩, _, _⟩
@@ -51,7 +51,7 @@ namespace ShrinkingLemma
* if `i ∈ carrier v`, then `closure (v i) ⊆ u i`;
* if `i ∉ carrier`, then `v i = u i`.
-This type is equipped with the folowing partial order: `v ≤ v'` if `v.carrier ⊆ v'.carrier`
+This type is equipped with the following partial order: `v ≤ v'` if `v.carrier ⊆ v'.carrier`
and `v i = v' i` for `i ∈ v.carrier`. We will use Zorn's lemma to prove that this type has
a maximal element, then show that the maximal element must have `carrier = univ`. -/
-- porting note: @[nolint has_nonempty_instance] is not here yet
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>
@@ -23,8 +23,8 @@ general result that works for any covering but needs the axiom of choice.
We prove two versions of the lemma:
-* `exists_subset_unionᵢ_closure_subset` deals with a covering of a closed set in a normal space;
-* `exists_unionᵢ_eq_closure_subset` deals with a covering of the whole space.
+* `exists_subset_iUnion_closure_subset` deals with a covering of a closed set in a normal space;
+* `exists_iUnion_eq_closure_subset` deals with a covering of the whole space.
## Tags
@@ -63,7 +63,7 @@ a maximal element, then show that the maximal element must have `carrier = univ`
/-- Each set from the partially refined family is open. -/
protected isOpen : ∀ i, IsOpen (toFun i)
/-- The partially refined family still covers the set. -/
- subset_unionᵢ : s ⊆ ⋃ i, toFun i
+ subset_iUnion : s ⊆ ⋃ i, toFun i
/-- For each `i ∈ carrier`, the original set includes the closure of the refined set. -/
closure_subset : ∀ {i}, i ∈ carrier → closure (toFun i) ⊆ u i
/-- Sets that correspond to `i ∉ carrier` are not modified. -/
@@ -76,7 +76,7 @@ variable {u : ι → Set X} {s : Set X}
instance : CoeFun (PartialRefinement u s) fun _ => ι → Set X := ⟨toFun⟩
-#align shrinking_lemma.partial_refinement.subset_Union ShrinkingLemma.PartialRefinement.subset_unionᵢ
+#align shrinking_lemma.partial_refinement.subset_Union ShrinkingLemma.PartialRefinement.subset_iUnion
#align shrinking_lemma.partial_refinement.closure_subset ShrinkingLemma.PartialRefinement.closure_subset
#align shrinking_lemma.partial_refinement.apply_eq ShrinkingLemma.PartialRefinement.apply_eq
#align shrinking_lemma.partial_refinement.is_open ShrinkingLemma.PartialRefinement.isOpen
@@ -129,15 +129,15 @@ theorem mem_find_carrier_iff {c : Set (PartialRefinement u s)} {i : ι} (ne : c.
rw [find]
split_ifs with h
· have := h.choose_spec
- exact iff_of_true this.2 (mem_unionᵢ₂.2 ⟨_, this.1, this.2⟩)
+ exact iff_of_true this.2 (mem_iUnion₂.2 ⟨_, this.1, this.2⟩)
· push_neg at h
refine iff_of_false (h _ ne.some_mem) ?_
- simpa only [chainSupCarrier, mem_unionᵢ₂, not_exists]
+ simpa only [chainSupCarrier, mem_iUnion₂, not_exists]
#align shrinking_lemma.partial_refinement.mem_find_carrier_iff ShrinkingLemma.PartialRefinement.mem_find_carrier_iff
theorem find_apply_of_mem {c : Set (PartialRefinement u s)} (hc : IsChain (· ≤ ·) c)
(ne : c.Nonempty) {i v} (hv : v ∈ c) (hi : i ∈ carrier v) : find c ne i i = v i :=
- apply_eq_of_chain hc (find_mem _ _) hv ((mem_find_carrier_iff _).2 <| mem_unionᵢ₂.2 ⟨v, hv, hi⟩)
+ apply_eq_of_chain hc (find_mem _ _) hv ((mem_find_carrier_iff _).2 <| mem_iUnion₂.2 ⟨v, hv, hi⟩)
hi
#align shrinking_lemma.partial_refinement.find_apply_of_mem ShrinkingLemma.PartialRefinement.find_apply_of_mem
@@ -147,16 +147,16 @@ def chainSup (c : Set (PartialRefinement u s)) (hc : IsChain (· ≤ ·) c) (ne
toFun i := find c ne i i
carrier := chainSupCarrier c
isOpen i := (find _ _ _).isOpen i
- subset_unionᵢ x hxs := mem_unionᵢ.2 <| by
+ subset_iUnion x hxs := mem_iUnion.2 <| by
rcases em (∃ i, i ∉ chainSupCarrier c ∧ x ∈ u i) with (⟨i, hi, hxi⟩ | hx)
· use i
simpa only [(find c ne i).apply_eq (mt (mem_find_carrier_iff _).1 hi)]
- · simp_rw [not_exists, not_and, not_imp_not, chainSupCarrier, mem_unionᵢ₂] at hx
+ · simp_rw [not_exists, not_and, not_imp_not, chainSupCarrier, mem_iUnion₂] at hx
haveI : Nonempty (PartialRefinement u s) := ⟨ne.some⟩
choose! v hvc hiv using hx
- rcases(hfin x hxs).exists_maximal_wrt v _ (mem_unionᵢ.1 (hU hxs)) with
+ rcases(hfin x hxs).exists_maximal_wrt v _ (mem_iUnion.1 (hU hxs)) with
⟨i, hxi : x ∈ u i, hmax : ∀ j, x ∈ u j → v i ≤ v j → v i = v j⟩
- rcases mem_unionᵢ.1 ((v i).subset_unionᵢ hxs) with ⟨j, hj⟩
+ rcases mem_iUnion.1 ((v i).subset_iUnion hxs) with ⟨j, hj⟩
use j
have hj' : x ∈ u j := (v i).subset _ hj
have : v j ≤ v i := (hc.total (hvc _ hxi) (hvc _ hj')).elim (fun h => (hmax j hj' h).ge) id
@@ -169,7 +169,7 @@ def chainSup (c : Set (PartialRefinement u s)) (hc : IsChain (· ≤ ·) c) (ne
theorem le_chainSup {c : Set (PartialRefinement u s)} (hc : IsChain (· ≤ ·) c) (ne : c.Nonempty)
(hfin : ∀ x ∈ s, { i | x ∈ u i }.Finite) (hU : s ⊆ ⋃ i, u i) {v} (hv : v ∈ c) :
v ≤ chainSup c hc ne hfin hU :=
- ⟨fun _ hi => mem_bunionᵢ hv hi, fun _ hi => (find_apply_of_mem hc _ hv hi).symm⟩
+ ⟨fun _ hi => mem_biUnion hv hi, fun _ hi => (find_apply_of_mem hc _ hv hi).symm⟩
#align shrinking_lemma.partial_refinement.le_chain_Sup ShrinkingLemma.PartialRefinement.le_chainSup
/-- If `s` is a closed set, `v` is a partial refinement, and `i` is an index such that
@@ -177,24 +177,24 @@ theorem le_chainSup {c : Set (PartialRefinement u s)} (hc : IsChain (· ≤ ·)
theorem exists_gt (v : PartialRefinement u s) (hs : IsClosed s) (i : ι) (hi : i ∉ v.carrier) :
∃ v' : PartialRefinement u s, v < v' := by
have I : (s ∩ ⋂ (j) (_hj : j ≠ i), v jᶜ) ⊆ v i := by
- simp only [subset_def, mem_inter_iff, mem_interᵢ, and_imp]
+ simp only [subset_def, mem_inter_iff, mem_iInter, and_imp]
intro x hxs H
- rcases mem_unionᵢ.1 (v.subset_unionᵢ hxs) with ⟨j, hj⟩
+ rcases mem_iUnion.1 (v.subset_iUnion hxs) with ⟨j, hj⟩
exact (em (j = i)).elim (fun h => h ▸ hj) fun h => (H j h hj).elim
have C : IsClosed (s ∩ ⋂ (j) (_hj : j ≠ i), v jᶜ) :=
- IsClosed.inter hs (isClosed_binterᵢ fun _ _ => isClosed_compl_iff.2 <| v.isOpen _)
+ IsClosed.inter hs (isClosed_biInter fun _ _ => isClosed_compl_iff.2 <| v.isOpen _)
rcases normal_exists_closure_subset C (v.isOpen i) I with ⟨vi, ovi, hvi, cvi⟩
refine' ⟨⟨update v i vi, insert i v.carrier, _, _, _, _⟩, _, _⟩
· intro j
rcases eq_or_ne j i with (rfl| hne) <;> simp [*, v.isOpen]
- · refine' fun x hx => mem_unionᵢ.2 _
+ · refine' fun x hx => mem_iUnion.2 _
rcases em (∃ (j : _)(_ : j ≠ i), x ∈ v j) with (⟨j, hji, hj⟩ | h)
· use j
rwa [update_noteq hji]
· push_neg at h
use i
rw [update_same]
- exact hvi ⟨hx, mem_binterᵢ h⟩
+ exact hvi ⟨hx, mem_biInter h⟩
· rintro j (rfl | hj)
· rwa [update_same, ← v.apply_eq hi]
· rw [update_noteq (ne_of_mem_of_not_mem hj hi)]
@@ -218,49 +218,49 @@ variable {u : ι → Set X} {s : Set X}
/-- **Shrinking lemma**. A point-finite open cover of a closed subset of a normal space can be
"shrunk" to a new open cover so that the closure of each new open set is contained in the
corresponding original open set. -/
-theorem exists_subset_unionᵢ_closure_subset (hs : IsClosed s) (uo : ∀ i, IsOpen (u i))
+theorem exists_subset_iUnion_closure_subset (hs : IsClosed s) (uo : ∀ i, IsOpen (u i))
(uf : ∀ x ∈ s, { i | x ∈ u i }.Finite) (us : s ⊆ ⋃ i, u i) :
- ∃ v : ι → Set X, s ⊆ unionᵢ v ∧ (∀ i, IsOpen (v i)) ∧ ∀ i, closure (v i) ⊆ u i := by
+ ∃ v : ι → Set X, s ⊆ iUnion v ∧ (∀ i, IsOpen (v i)) ∧ ∀ i, closure (v i) ⊆ u i := by
haveI : Nonempty (PartialRefinement u s) := ⟨⟨u, ∅, uo, us, False.elim, fun _ => rfl⟩⟩
have : ∀ c : Set (PartialRefinement u s),
IsChain (· ≤ ·) c → c.Nonempty → ∃ ub, ∀ v ∈ c, v ≤ ub :=
fun c hc ne => ⟨.chainSup c hc ne uf us, fun v hv => PartialRefinement.le_chainSup _ _ _ _ hv⟩
rcases zorn_nonempty_partialOrder this with ⟨v, hv⟩
suffices : ∀ i, i ∈ v.carrier
- exact ⟨v, v.subset_unionᵢ, fun i => v.isOpen _, fun i => v.closure_subset (this i)⟩
+ exact ⟨v, v.subset_iUnion, fun i => v.isOpen _, fun i => v.closure_subset (this i)⟩
contrapose! hv
rcases hv with ⟨i, hi⟩
rcases v.exists_gt hs i hi with ⟨v', hlt⟩
exact ⟨v', hlt.le, hlt.ne'⟩
-#align exists_subset_Union_closure_subset exists_subset_unionᵢ_closure_subset
+#align exists_subset_Union_closure_subset exists_subset_iUnion_closure_subset
/-- **Shrinking lemma**. A point-finite open cover of a closed subset of a normal space can be
"shrunk" to a new closed cover so that each new closed set is contained in the corresponding
-original open set. See also `exists_subset_unionᵢ_closure_subset` for a stronger statement. -/
-theorem exists_subset_unionᵢ_closed_subset (hs : IsClosed s) (uo : ∀ i, IsOpen (u i))
+original open set. See also `exists_subset_iUnion_closure_subset` for a stronger statement. -/
+theorem exists_subset_iUnion_closed_subset (hs : IsClosed s) (uo : ∀ i, IsOpen (u i))
(uf : ∀ x ∈ s, { i | x ∈ u i }.Finite) (us : s ⊆ ⋃ i, u i) :
- ∃ v : ι → Set X, s ⊆ unionᵢ v ∧ (∀ i, IsClosed (v i)) ∧ ∀ i, v i ⊆ u i :=
- let ⟨v, hsv, _, hv⟩ := exists_subset_unionᵢ_closure_subset hs uo uf us
- ⟨fun i => closure (v i), Subset.trans hsv (unionᵢ_mono fun _ => subset_closure),
+ ∃ v : ι → Set X, s ⊆ iUnion v ∧ (∀ i, IsClosed (v i)) ∧ ∀ i, v i ⊆ u i :=
+ let ⟨v, hsv, _, hv⟩ := exists_subset_iUnion_closure_subset hs uo uf us
+ ⟨fun i => closure (v i), Subset.trans hsv (iUnion_mono fun _ => subset_closure),
fun _ => isClosed_closure, hv⟩
-#align exists_subset_Union_closed_subset exists_subset_unionᵢ_closed_subset
+#align exists_subset_Union_closed_subset exists_subset_iUnion_closed_subset
/-- Shrinking lemma. A point-finite open cover of a closed subset of a normal space can be "shrunk"
to a new open cover so that the closure of each new open set is contained in the corresponding
original open set. -/
-theorem exists_unionᵢ_eq_closure_subset (uo : ∀ i, IsOpen (u i)) (uf : ∀ x, { i | x ∈ u i }.Finite)
+theorem exists_iUnion_eq_closure_subset (uo : ∀ i, IsOpen (u i)) (uf : ∀ x, { i | x ∈ u i }.Finite)
(uU : (⋃ i, u i) = univ) :
- ∃ v : ι → Set X, unionᵢ v = univ ∧ (∀ i, IsOpen (v i)) ∧ ∀ i, closure (v i) ⊆ u i :=
- let ⟨v, vU, hv⟩ := exists_subset_unionᵢ_closure_subset isClosed_univ uo (fun x _ => uf x) uU.ge
+ ∃ v : ι → Set X, iUnion v = univ ∧ (∀ i, IsOpen (v i)) ∧ ∀ i, closure (v i) ⊆ u i :=
+ let ⟨v, vU, hv⟩ := exists_subset_iUnion_closure_subset isClosed_univ uo (fun x _ => uf x) uU.ge
⟨v, univ_subset_iff.1 vU, hv⟩
-#align exists_Union_eq_closure_subset exists_unionᵢ_eq_closure_subset
+#align exists_Union_eq_closure_subset exists_iUnion_eq_closure_subset
/-- Shrinking lemma. A point-finite open cover of a closed subset of a normal space can be "shrunk"
to a new closed cover so that each of the new closed sets is contained in the corresponding
-original open set. See also `exists_unionᵢ_eq_closure_subset` for a stronger statement. -/
-theorem exists_unionᵢ_eq_closed_subset (uo : ∀ i, IsOpen (u i)) (uf : ∀ x, { i | x ∈ u i }.Finite)
+original open set. See also `exists_iUnion_eq_closure_subset` for a stronger statement. -/
+theorem exists_iUnion_eq_closed_subset (uo : ∀ i, IsOpen (u i)) (uf : ∀ x, { i | x ∈ u i }.Finite)
(uU : (⋃ i, u i) = univ) :
- ∃ v : ι → Set X, unionᵢ v = univ ∧ (∀ i, IsClosed (v i)) ∧ ∀ i, v i ⊆ u i :=
- let ⟨v, vU, hv⟩ := exists_subset_unionᵢ_closed_subset isClosed_univ uo (fun x _ => uf x) uU.ge
+ ∃ v : ι → Set X, iUnion v = univ ∧ (∀ i, IsClosed (v i)) ∧ ∀ i, v i ⊆ u i :=
+ let ⟨v, vU, hv⟩ := exists_subset_iUnion_closed_subset isClosed_univ uo (fun x _ => uf x) uU.ge
⟨v, univ_subset_iff.1 vU, hv⟩
-#align exists_Union_eq_closed_subset exists_unionᵢ_eq_closed_subset
+#align exists_Union_eq_closed_subset exists_iUnion_eq_closed_subset
The unported dependencies are