data.set.lattice
⟷
Mathlib.Data.Set.Lattice
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(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)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
Add a few convenient corollaries to existing lemmas.
@@ -312,9 +312,27 @@ lemma Inter_congr_of_surjective {f : ι → set α} {g : ι₂ → set α} (h :
(h1 : surjective h) (h2 : ∀ x, g (h x) = f x) : (⋂ x, f x) = ⋂ y, g y :=
h1.infi_congr h h2
-theorem Union_const [nonempty ι] (s : set β) : (⋃ i : ι, s) = s := supr_const
+lemma Union_congr {s t : ι → set α} (h : ∀ i, s i = t i) : (⋃ i, s i) = ⋃ i, t i := supr_congr h
+lemma Inter_congr {s t : ι → set α} (h : ∀ i, s i = t i) : (⋂ i, s i) = ⋂ i, t i := infi_congr h
+
+lemma Union₂_congr {s t : Π i, κ i → set α} (h : ∀ i j, s i j = t i j) :
+ (⋃ i j, s i j) = ⋃ i j, t i j :=
+Union_congr $ λ i, Union_congr $ h i
+
+lemma Inter₂_congr {s t : Π i, κ i → set α} (h : ∀ i j, s i j = t i j) :
+ (⋂ i j, s i j) = ⋂ i j, t i j :=
+Inter_congr $ λ i, Inter_congr $ h i
+
+section nonempty
+variables [nonempty ι] {f : ι → set α} {s : set α}
+
+lemma Union_const (s : set β) : (⋃ i : ι, s) = s := supr_const
+lemma Inter_const (s : set β) : (⋂ i : ι, s) = s := infi_const
-theorem Inter_const [nonempty ι] (s : set β) : (⋂ i : ι, s) = s := infi_const
+lemma Union_eq_const (hf : ∀ i, f i = s) : (⋃ i, f i) = s := (Union_congr hf).trans $ Union_const _
+lemma Inter_eq_const (hf : ∀ i, f i = s) : (⋂ i, f i) = s := (Inter_congr hf).trans $ Inter_const _
+
+end nonempty
@[simp] theorem compl_Union (s : ι → set β) : (⋃ i, s i)ᶜ = (⋂ i, (s i)ᶜ) :=
compl_supr
@@ -614,17 +632,6 @@ lemma bInter_mono {s s' : set α} {t t' : α → set β} (hs : s ⊆ s') (h :
(⋂ x ∈ s', t x) ⊆ (⋂ x ∈ s, t' x) :=
(bInter_subset_bInter_left hs).trans $ Inter₂_mono h
-lemma Union_congr {s t : ι → set α} (h : ∀ i, s i = t i) : (⋃ i, s i) = ⋃ i, t i := supr_congr h
-lemma Inter_congr {s t : ι → set α} (h : ∀ i, s i = t i) : (⋂ i, s i) = ⋂ i, t i := infi_congr h
-
-lemma Union₂_congr {s t : Π i, κ i → set α} (h : ∀ i j, s i j = t i j) :
- (⋃ i j, s i j) = ⋃ i j, t i j :=
-Union_congr $ λ i, Union_congr $ h i
-
-lemma Inter₂_congr {s t : Π i, κ i → set α} (h : ∀ i j, s i j = t i j) :
- (⋂ i j, s i j) = ⋂ i j, t i j :=
-Inter_congr $ λ i, Inter_congr $ h i
-
theorem bUnion_eq_Union (s : set α) (t : Π x ∈ s, set β) :
(⋃ x ∈ s, t x ‹_›) = (⋃ x : s, t x x.2) :=
supr_subtype'
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
This PR moves some lemmas in data.set.lattice
to data.set.basic
, data.set.image
, and data.set.function
. They are basic enough and do not depend on the set lattice. This also helps #17880 to split data.set.pairwise
and reduce the dependency of many files.
mathlib4 PR: https://github.com/leanprover-community/mathlib4/pull/1109
@@ -126,54 +126,6 @@ instance : complete_boolean_algebra (set α) :=
inf_Sup_le_supr_inf := λ s S x, iff.mp $ by simp [exists_and_distrib_left],
.. set.boolean_algebra }
-/-- `set.image` is monotone. See `set.image_image` for the statement in terms of `⊆`. -/
-lemma monotone_image {f : α → β} : monotone (image f) :=
-λ s t, image_subset _
-
-theorem _root_.monotone.inter [preorder β] {f g : β → set α}
- (hf : monotone f) (hg : monotone g) : monotone (λ x, f x ∩ g x) :=
-hf.inf hg
-
-theorem _root_.monotone_on.inter [preorder β] {f g : β → set α} {s : set β}
- (hf : monotone_on f s) (hg : monotone_on g s) : monotone_on (λ x, f x ∩ g x) s :=
-hf.inf hg
-
-theorem _root_.antitone.inter [preorder β] {f g : β → set α}
- (hf : antitone f) (hg : antitone g) : antitone (λ x, f x ∩ g x) :=
-hf.inf hg
-
-theorem _root_.antitone_on.inter [preorder β] {f g : β → set α} {s : set β}
- (hf : antitone_on f s) (hg : antitone_on g s) : antitone_on (λ x, f x ∩ g x) s :=
-hf.inf hg
-
-theorem _root_.monotone.union [preorder β] {f g : β → set α}
- (hf : monotone f) (hg : monotone g) : monotone (λ x, f x ∪ g x) :=
-hf.sup hg
-
-theorem _root_.monotone_on.union [preorder β] {f g : β → set α} {s : set β}
- (hf : monotone_on f s) (hg : monotone_on g s) : monotone_on (λ x, f x ∪ g x) s :=
-hf.sup hg
-
-theorem _root_.antitone.union [preorder β] {f g : β → set α}
- (hf : antitone f) (hg : antitone g) : antitone (λ x, f x ∪ g x) :=
-hf.sup hg
-
-theorem _root_.antitone_on.union [preorder β] {f g : β → set α} {s : set β}
- (hf : antitone_on f s) (hg : antitone_on g s) : antitone_on (λ x, f x ∪ g x) s :=
-hf.sup hg
-
-theorem monotone_set_of [preorder α] {p : α → β → Prop}
- (hp : ∀ b, monotone (λ a, p a b)) : monotone (λ a, {b | p a b}) :=
-λ a a' h b, hp b h
-
-theorem antitone_set_of [preorder α] {p : α → β → Prop}
- (hp : ∀ b, antitone (λ a, p a b)) : antitone (λ a, {b | p a b}) :=
-λ a a' h b, hp b h
-
-/-- Quantifying over a set is antitone in the set -/
-lemma antitone_bforall {P : α → Prop} : antitone (λ s : set α, ∀ x ∈ s, P x) :=
-λ s t hst h x hx, h x $ hst hx
-
section galois_connection
variables {f : α → β}
@@ -1115,19 +1067,6 @@ open function
variables (s : set β) {f : α → β} {U : ι → set β} (hU : Union U = univ)
-lemma restrict_preimage_injective (hf : injective f) : injective (s.restrict_preimage f) :=
-λ x y e, subtype.mk.inj_arrow e (λ e, subtype.coe_injective (hf e))
-
-lemma restrict_preimage_surjective (hf : surjective f) : surjective (s.restrict_preimage f) :=
-λ x, ⟨⟨_, (show f (hf x).some ∈ s, from (hf x).some_spec.symm ▸ x.2)⟩, subtype.ext (hf x).some_spec⟩
-
-lemma restrict_preimage_bijective (hf : bijective f) : bijective (s.restrict_preimage f) :=
-⟨s.restrict_preimage_injective hf.1, s.restrict_preimage_surjective hf.2⟩
-
-alias set.restrict_preimage_injective ← _root_.function.injective.restrict_preimage
-alias set.restrict_preimage_surjective ← _root_.function.surjective.restrict_preimage
-alias set.restrict_preimage_bijective ← _root_.function.bijective.restrict_preimage
-
include hU
lemma injective_iff_injective_of_Union_eq_univ :
@@ -1154,18 +1093,6 @@ end
/-! ### `inj_on` -/
-lemma inj_on.image_inter {f : α → β} {s t u : set α} (hf : inj_on f u) (hs : s ⊆ u) (ht : t ⊆ u) :
- f '' (s ∩ t) = f '' s ∩ f '' t :=
-begin
- apply subset.antisymm (image_inter_subset _ _ _),
- rintros x ⟨⟨y, ys, hy⟩, ⟨z, zt, hz⟩⟩,
- have : y = z,
- { apply hf (hs ys) (ht zt),
- rwa ← hz at hy },
- rw ← this at zt,
- exact ⟨y, ⟨ys, zt⟩, hy⟩,
-end
-
lemma inj_on.image_Inter_eq [nonempty ι] {s : ι → set α} {f : α → β} (h : inj_on f (⋃ i, s i)) :
f '' (⋂ i, s i) = ⋂ i, f '' (s i) :=
begin
@@ -1586,74 +1513,8 @@ section disjoint
variables {s t u : set α} {f : α → β}
-namespace disjoint
-
-theorem union_left (hs : disjoint s u) (ht : disjoint t u) : disjoint (s ∪ t) u :=
-hs.sup_left ht
-
-theorem union_right (ht : disjoint s t) (hu : disjoint s u) : disjoint s (t ∪ u) :=
-ht.sup_right hu
-
-lemma inter_left (u : set α) (h : disjoint s t) : disjoint (s ∩ u) t :=
-inf_left _ h
-
-lemma inter_left' (u : set α) (h : disjoint s t) : disjoint (u ∩ s) t :=
-inf_left' _ h
-
-lemma inter_right (u : set α) (h : disjoint s t) : disjoint s (t ∩ u) :=
-inf_right _ h
-
-lemma inter_right' (u : set α) (h : disjoint s t) : disjoint s (u ∩ t) :=
-inf_right' _ h
-
-lemma subset_left_of_subset_union (h : s ⊆ t ∪ u) (hac : disjoint s u) : s ⊆ t :=
-hac.left_le_of_le_sup_right h
-
-lemma subset_right_of_subset_union (h : s ⊆ t ∪ u) (hab : disjoint s t) : s ⊆ u :=
-hab.left_le_of_le_sup_left h
-
-lemma preimage {α β} (f : α → β) {s t : set β} (h : disjoint s t) : disjoint (f ⁻¹' s) (f ⁻¹' t) :=
-disjoint_iff_inf_le.mpr $ λ x hx, h.le_bot hx
-
-end disjoint
-
namespace set
-lemma not_disjoint_iff : ¬disjoint s t ↔ ∃ x, x ∈ s ∧ x ∈ t :=
-set.disjoint_iff.not.trans $ not_forall.trans $ exists_congr $ λ x, not_not
-
-lemma not_disjoint_iff_nonempty_inter : ¬disjoint s t ↔ (s ∩ t).nonempty :=
-not_disjoint_iff
-
-alias not_disjoint_iff_nonempty_inter ↔ _ nonempty.not_disjoint
-
-lemma disjoint_or_nonempty_inter (s t : set α) : disjoint s t ∨ (s ∩ t).nonempty :=
-(em _).imp_right not_disjoint_iff_nonempty_inter.mp
-
-lemma disjoint_iff_forall_ne : disjoint s t ↔ ∀ (x ∈ s) (y ∈ t), x ≠ y :=
-by simp only [ne.def, disjoint_left, @imp_not_comm _ (_ = _), forall_eq']
-
-lemma _root_.disjoint.ne_of_mem (h : disjoint s t) {x y} (hx : x ∈ s) (hy : y ∈ t) : x ≠ y :=
-disjoint_iff_forall_ne.mp h x hx y hy
-
-theorem disjoint_of_subset_left (h : s ⊆ u) (d : disjoint u t) : disjoint s t :=
-d.mono_left h
-
-theorem disjoint_of_subset_right (h : t ⊆ u) (d : disjoint s u) : disjoint s t :=
-d.mono_right h
-
-theorem disjoint_of_subset {s t u v : set α} (h1 : s ⊆ u) (h2 : t ⊆ v) (d : disjoint u v) :
- disjoint s t :=
-d.mono h1 h2
-
-@[simp] theorem disjoint_union_left :
- disjoint (s ∪ t) u ↔ disjoint s u ∧ disjoint t u :=
-disjoint_sup_left
-
-@[simp] theorem disjoint_union_right :
- disjoint s (t ∪ u) ↔ disjoint s t ∧ disjoint s u :=
-disjoint_sup_right
-
@[simp] theorem disjoint_Union_left {ι : Sort*} {s : ι → set α} :
disjoint (⋃ i, s i) t ↔ ∀ i, disjoint (s i) t :=
supr_disjoint_iff
@@ -1678,73 +1539,6 @@ Sup_disjoint_iff
disjoint s (⋃₀ S) ↔ ∀ t ∈ S, disjoint s t :=
disjoint_Sup_iff
-theorem disjoint_diff {a b : set α} : disjoint a (b \ a) :=
-disjoint_iff.2 (inter_diff_self _ _)
-
-@[simp] theorem disjoint_empty (s : set α) : disjoint s ∅ := disjoint_bot_right
-
-@[simp] theorem empty_disjoint (s : set α) : disjoint ∅ s := disjoint_bot_left
-
-@[simp] lemma univ_disjoint {s : set α} : disjoint univ s ↔ s = ∅ :=
-top_disjoint
-
-@[simp] lemma disjoint_univ {s : set α} : disjoint s univ ↔ s = ∅ :=
-disjoint_top
-
-@[simp] theorem disjoint_singleton_left {a : α} {s : set α} : disjoint {a} s ↔ a ∉ s :=
-by simp [set.disjoint_iff, subset_def]; exact iff.rfl
-
-@[simp] theorem disjoint_singleton_right {a : α} {s : set α} : disjoint s {a} ↔ a ∉ s :=
-by rw [disjoint.comm]; exact disjoint_singleton_left
-
-@[simp] lemma disjoint_singleton {a b : α} : disjoint ({a} : set α) {b} ↔ a ≠ b :=
-by rw [disjoint_singleton_left, mem_singleton_iff]
-
-theorem disjoint_image_image {f : β → α} {g : γ → α} {s : set β} {t : set γ}
- (h : ∀ b ∈ s, ∀ c ∈ t, f b ≠ g c) : disjoint (f '' s) (g '' t) :=
-disjoint_iff_inf_le.mpr $ by rintro a ⟨⟨b, hb, eq⟩, c, hc, rfl⟩; exact h b hb c hc eq
-
-lemma disjoint_image_of_injective {f : α → β} (hf : injective f) {s t : set α}
- (hd : disjoint s t) : disjoint (f '' s) (f '' t) :=
-disjoint_image_image $ λ x hx y hy, hf.ne $ λ H, set.disjoint_iff.1 hd ⟨hx, H.symm ▸ hy⟩
-
-lemma _root_.disjoint.of_image (h : disjoint (f '' s) (f '' t)) : disjoint s t :=
-disjoint_iff_inf_le.mpr $
- λ x hx, disjoint_left.1 h (mem_image_of_mem _ hx.1) (mem_image_of_mem _ hx.2)
-
-lemma disjoint_image_iff (hf : injective f) : disjoint (f '' s) (f '' t) ↔ disjoint s t :=
-⟨disjoint.of_image, disjoint_image_of_injective hf⟩
-
-lemma _root_.disjoint.of_preimage (hf : surjective f) {s t : set β}
- (h : disjoint (f ⁻¹' s) (f ⁻¹' t)) :
- disjoint s t :=
-by rw [disjoint_iff_inter_eq_empty, ←image_preimage_eq (_ ∩ _) hf, preimage_inter, h.inter_eq,
- image_empty]
-
-lemma disjoint_preimage_iff (hf : surjective f) {s t : set β} :
- disjoint (f ⁻¹' s) (f ⁻¹' t) ↔ disjoint s t :=
-⟨disjoint.of_preimage hf, disjoint.preimage _⟩
-
-lemma preimage_eq_empty {f : α → β} {s : set β} (h : disjoint s (range f)) :
- f ⁻¹' s = ∅ :=
-by simpa using h.preimage f
-
-lemma preimage_eq_empty_iff {s : set β} : f ⁻¹' s = ∅ ↔ disjoint s (range f) :=
-⟨λ h, begin
- simp only [eq_empty_iff_forall_not_mem, disjoint_iff_inter_eq_empty, not_exists,
- mem_inter_iff, not_and, mem_range, mem_preimage] at h ⊢,
- assume y hy x hx,
- rw ← hx at hy,
- exact h x hy,
- end, preimage_eq_empty⟩
-
-lemma _root_.disjoint.image {s t u : set α} {f : α → β} (h : disjoint s t) (hf : inj_on f u)
- (hs : s ⊆ u) (ht : t ⊆ u) : disjoint (f '' s) (f '' t) :=
-begin
- rw disjoint_iff_inter_eq_empty at h ⊢,
- rw [← hf.image_inter hs ht, h, image_empty],
-end
-
end set
end disjoint
@@ -1771,10 +1565,6 @@ end set
namespace set
variables (t : α → set β)
-lemma subset_diff {s t u : set α} : s ⊆ t \ u ↔ s ⊆ t ∧ disjoint s u :=
-⟨λ h, ⟨λ x hxs, (h hxs).1, disjoint_iff_inf_le.mpr $ λ x ⟨hxs, hxu⟩, (h hxs).2 hxu⟩,
-λ ⟨h1, h2⟩ x hxs, ⟨h1 hxs, λ hxu, h2.le_bot ⟨hxs, hxu⟩⟩⟩
-
lemma bUnion_diff_bUnion_subset (s₁ s₂ : set α) :
(⋃ x ∈ s₁, t x) \ (⋃ x ∈ s₂, t x) ⊆ (⋃ x ∈ s₁ \ s₂, t x) :=
begin
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(first ported)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -1916,7 +1916,7 @@ theorem mapsTo_sUnion {S : Set (Set α)} {t : Set β} {f : α → β} (H : ∀ s
#print Set.mapsTo_iUnion /-
theorem mapsTo_iUnion {s : ι → Set α} {t : Set β} {f : α → β} (H : ∀ i, MapsTo f (s i) t) :
MapsTo f (⋃ i, s i) t :=
- mapsTo_sUnion <| forall_range_iff.2 H
+ mapsTo_sUnion <| forall_mem_range.2 H
#align set.maps_to_Union Set.mapsTo_iUnion
-/
@@ -2048,7 +2048,7 @@ theorem InjOn.image_iInter_eq [Nonempty ι] {s : ι → Set α} {f : α → β}
(f '' ⋂ i, s i) = ⋂ i, f '' s i := by
inhabit ι
refine' subset.antisymm (image_Inter_subset s f) fun y hy => _
- simp only [mem_Inter, mem_image_iff_bex] at hy
+ simp only [mem_Inter, mem_image_iff_bex] at hy
choose x hx hy using hy
refine' ⟨x default, mem_Inter.2 fun i => _, hy _⟩
suffices x default = x i by rw [this]; apply hx
@@ -2115,7 +2115,7 @@ theorem surjOn_sUnion {s : Set α} {T : Set (Set β)} {f : α → β} (H : ∀ t
#print Set.surjOn_iUnion /-
theorem surjOn_iUnion {s : Set α} {t : ι → Set β} {f : α → β} (H : ∀ i, SurjOn f s (t i)) :
SurjOn f s (⋃ i, t i) :=
- surjOn_sUnion <| forall_range_iff.2 H
+ surjOn_sUnion <| forall_mem_range.2 H
#align set.surj_on_Union Set.surjOn_iUnion
-/
@@ -2437,7 +2437,7 @@ theorem sInter_prod_sInter {S : Set (Set α)} {T : Set (Set β)} (hS : S.Nonempt
obtain ⟨s₁, h₁⟩ := hS
obtain ⟨s₂, h₂⟩ := hT
refine' Set.Subset.antisymm (sInter_prod_sInter_subset S T) fun x hx => _
- rw [mem_Inter₂] at hx
+ rw [mem_Inter₂] at hx
exact ⟨fun s₀ h₀ => (hx (s₀, s₂) ⟨h₀, h₂⟩).1, fun s₀ h₀ => (hx (s₁, s₀) ⟨h₁, h₀⟩).2⟩
#align set.sInter_prod_sInter Set.sInter_prod_sInter
-/
@@ -2683,7 +2683,7 @@ theorem pi_diff_pi_subset (i : Set α) (s t : ∀ a, Set (π a)) :
by
refine' diff_subset_comm.2 fun x hx a ha => _
simp only [mem_diff, mem_pi, mem_Union, not_exists, mem_preimage, not_and, Classical.not_not,
- eval_apply] at hx
+ eval_apply] at hx
exact hx.2 _ ha (hx.1 _ ha)
#align set.pi_diff_pi_subset Set.pi_diff_pi_subset
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -864,6 +864,14 @@ theorem image_projection_prod {ι : Type _} {α : ι → Type _} {v : ∀ i : ι
(hv : (pi univ v).Nonempty) (i : ι) :
((fun x : ∀ i : ι, α i => x i) '' ⋂ k, (fun x : ∀ j : ι, α j => x k) ⁻¹' v k) = v i := by
classical
+ apply subset.antisymm
+ · simp [Inter_subset]
+ · intro y y_in
+ simp only [mem_image, mem_Inter, mem_preimage]
+ rcases hv with ⟨z, hz⟩
+ refine' ⟨Function.update z i y, _, update_same i y z⟩
+ rw [@forall_update_iff ι α _ z i y fun i t => t ∈ v i]
+ exact ⟨y_in, fun j hj => by simpa using hz j⟩
#align set.image_projection_prod Set.image_projection_prod
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -864,14 +864,6 @@ theorem image_projection_prod {ι : Type _} {α : ι → Type _} {v : ∀ i : ι
(hv : (pi univ v).Nonempty) (i : ι) :
((fun x : ∀ i : ι, α i => x i) '' ⋂ k, (fun x : ∀ j : ι, α j => x k) ⁻¹' v k) = v i := by
classical
- apply subset.antisymm
- · simp [Inter_subset]
- · intro y y_in
- simp only [mem_image, mem_Inter, mem_preimage]
- rcases hv with ⟨z, hz⟩
- refine' ⟨Function.update z i y, _, update_same i y z⟩
- rw [@forall_update_iff ι α _ z i y fun i t => t ∈ v i]
- exact ⟨y_in, fun j hj => by simpa using hz j⟩
#align set.image_projection_prod Set.image_projection_prod
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/b1abe23ae96fef89ad30d9f4362c307f72a55010
@@ -1622,7 +1622,7 @@ theorem iInter_eq_empty_iff {f : ι → Set α} : (⋂ i, f i) = ∅ ↔ ∀ x,
-- classical
theorem iInter₂_eq_empty_iff {s : ∀ i, κ i → Set α} :
(⋂ (i) (j), s i j) = ∅ ↔ ∀ a, ∃ i j, a ∉ s i j := by
- simp only [eq_empty_iff_forall_not_mem, mem_Inter, not_forall]
+ simp only [eq_empty_iff_forall_not_mem, mem_Inter, Classical.not_forall]
#align set.Inter₂_eq_empty_iff Set.iInter₂_eq_empty_iff
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,9 +3,9 @@ Copyright (c) 2014 Jeremy Avigad. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jeremy Avigad, Leonardo de Moura, Johannes Hölzl, Mario Carneiro
-/
-import Mathbin.Order.CompleteBooleanAlgebra
-import Mathbin.Order.Directed
-import Mathbin.Order.GaloisConnection
+import Order.CompleteBooleanAlgebra
+import Order.Directed
+import Order.GaloisConnection
#align_import data.set.lattice from "leanprover-community/mathlib"@"bc7d81beddb3d6c66f71449c5bc76c38cb77cf9e"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,16 +2,13 @@
Copyright (c) 2014 Jeremy Avigad. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jeremy Avigad, Leonardo de Moura, Johannes Hölzl, Mario Carneiro
-
-! This file was ported from Lean 3 source module data.set.lattice
-! leanprover-community/mathlib commit bc7d81beddb3d6c66f71449c5bc76c38cb77cf9e
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Order.CompleteBooleanAlgebra
import Mathbin.Order.Directed
import Mathbin.Order.GaloisConnection
+#align_import data.set.lattice from "leanprover-community/mathlib"@"bc7d81beddb3d6c66f71449c5bc76c38cb77cf9e"
+
/-!
# The set lattice
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -91,7 +91,6 @@ def sUnion (S : Set (Set α)) : Set α :=
#align set.sUnion Set.sUnion
-/
--- mathport name: «expr⋂₀ »
prefix:110 "⋂₀ " => sInter
#print Set.mem_sInter /-
@@ -101,10 +100,12 @@ theorem mem_sInter {x : α} {S : Set (Set α)} : x ∈ ⋂₀ S ↔ ∀ t ∈ S,
#align set.mem_sInter Set.mem_sInter
-/
+#print Set.mem_sUnion /-
@[simp]
theorem mem_sUnion {x : α} {S : Set (Set α)} : x ∈ ⋃₀ S ↔ ∃ t ∈ S, x ∈ t :=
Iff.rfl
#align set.mem_sUnion Set.mem_sUnion
+-/
#print Set.iUnion /-
/-- Indexed union of a family of sets -/
@@ -120,16 +121,16 @@ def iInter (s : ι → Set β) : Set β :=
#align set.Inter Set.iInter
-/
--- mathport name: «expr⋃ , »
notation3"⋃ "(...)", "r:(scoped f => iUnion f) => r
--- mathport name: «expr⋂ , »
notation3"⋂ "(...)", "r:(scoped f => iInter f) => r
+#print Set.sSup_eq_sUnion /-
@[simp]
theorem sSup_eq_sUnion (S : Set (Set α)) : sSup S = ⋃₀ S :=
rfl
#align set.Sup_eq_sUnion Set.sSup_eq_sUnion
+-/
#print Set.sInf_eq_sInter /-
@[simp]
@@ -138,57 +139,77 @@ theorem sInf_eq_sInter (S : Set (Set α)) : sInf S = ⋂₀ S :=
#align set.Inf_eq_sInter Set.sInf_eq_sInter
-/
+#print Set.iSup_eq_iUnion /-
@[simp]
theorem iSup_eq_iUnion (s : ι → Set α) : iSup s = iUnion s :=
rfl
#align set.supr_eq_Union Set.iSup_eq_iUnion
+-/
+#print Set.iInf_eq_iInter /-
@[simp]
theorem iInf_eq_iInter (s : ι → Set α) : iInf s = iInter s :=
rfl
#align set.infi_eq_Inter Set.iInf_eq_iInter
+-/
+#print Set.mem_iUnion /-
@[simp]
theorem mem_iUnion {x : α} {s : ι → Set α} : (x ∈ ⋃ i, s i) ↔ ∃ i, x ∈ s i :=
⟨fun ⟨t, ⟨⟨a, (t_eq : s a = t)⟩, (h : x ∈ t)⟩⟩ => ⟨a, t_eq.symm ▸ h⟩, fun ⟨a, h⟩ =>
⟨s a, ⟨⟨a, rfl⟩, h⟩⟩⟩
#align set.mem_Union Set.mem_iUnion
+-/
+#print Set.mem_iInter /-
@[simp]
theorem mem_iInter {x : α} {s : ι → Set α} : (x ∈ ⋂ i, s i) ↔ ∀ i, x ∈ s i :=
⟨fun (h : ∀ a ∈ {a : Set α | ∃ i, s i = a}, x ∈ a) a => h (s a) ⟨a, rfl⟩,
fun h t ⟨a, (Eq : s a = t)⟩ => Eq ▸ h a⟩
#align set.mem_Inter Set.mem_iInter
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.mem_iUnion₂ /-
theorem mem_iUnion₂ {x : γ} {s : ∀ i, κ i → Set γ} : (x ∈ ⋃ (i) (j), s i j) ↔ ∃ i j, x ∈ s i j := by
simp_rw [mem_Union]
#align set.mem_Union₂ Set.mem_iUnion₂
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.mem_iInter₂ /-
theorem mem_iInter₂ {x : γ} {s : ∀ i, κ i → Set γ} : (x ∈ ⋂ (i) (j), s i j) ↔ ∀ i j, x ∈ s i j := by
simp_rw [mem_Inter]
#align set.mem_Inter₂ Set.mem_iInter₂
+-/
+#print Set.mem_iUnion_of_mem /-
theorem mem_iUnion_of_mem {s : ι → Set α} {a : α} (i : ι) (ha : a ∈ s i) : a ∈ ⋃ i, s i :=
mem_iUnion.2 ⟨i, ha⟩
#align set.mem_Union_of_mem Set.mem_iUnion_of_mem
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.mem_iUnion₂_of_mem /-
theorem mem_iUnion₂_of_mem {s : ∀ i, κ i → Set α} {a : α} {i : ι} (j : κ i) (ha : a ∈ s i j) :
a ∈ ⋃ (i) (j), s i j :=
mem_iUnion₂.2 ⟨i, j, ha⟩
#align set.mem_Union₂_of_mem Set.mem_iUnion₂_of_mem
+-/
+#print Set.mem_iInter_of_mem /-
theorem mem_iInter_of_mem {s : ι → Set α} {a : α} (h : ∀ i, a ∈ s i) : a ∈ ⋂ i, s i :=
mem_iInter.2 h
#align set.mem_Inter_of_mem Set.mem_iInter_of_mem
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.mem_iInter₂_of_mem /-
theorem mem_iInter₂_of_mem {s : ∀ i, κ i → Set α} {a : α} (h : ∀ i j, a ∈ s i j) :
a ∈ ⋂ (i) (j), s i j :=
mem_iInter₂.2 h
#align set.mem_Inter₂_of_mem Set.mem_iInter₂_of_mem
+-/
instance : CompleteBooleanAlgebra (Set α) :=
{ Set.booleanAlgebra with
@@ -205,9 +226,11 @@ section GaloisConnection
variable {f : α → β}
+#print Set.image_preimage /-
protected theorem image_preimage : GaloisConnection (image f) (preimage f) := fun a b =>
image_subset_iff
#align set.image_preimage Set.image_preimage
+-/
#print Set.kernImage /-
/-- `kern_image f s` is the set of `y` such that `f ⁻¹ y ⊆ s`. -/
@@ -216,12 +239,14 @@ def kernImage (f : α → β) (s : Set α) : Set β :=
#align set.kern_image Set.kernImage
-/
+#print Set.preimage_kernImage /-
protected theorem preimage_kernImage : GaloisConnection (preimage f) (kernImage f) := fun a b =>
⟨fun h x hx y hy =>
have : f y ∈ a := hy.symm ▸ hx
h this,
fun h x (hx : f x ∈ a) => h hx rfl⟩
#align set.preimage_kern_image Set.preimage_kernImage
+-/
end GaloisConnection
@@ -254,9 +279,11 @@ theorem iUnion_plift_up (f : PLift ι → Set α) : (⋃ i, f (PLift.up i)) =
#align set.Union_plift_up Set.iUnion_plift_up
-/
+#print Set.iUnion_plift_down /-
theorem iUnion_plift_down (f : ι → Set α) : (⋃ i, f (PLift.down i)) = ⋃ i, f i :=
iSup_plift_down _
#align set.Union_plift_down Set.iUnion_plift_down
+-/
#print Set.iInter_plift_up /-
theorem iInter_plift_up (f : PLift ι → Set α) : (⋂ i, f (PLift.up i)) = ⋂ i, f i :=
@@ -264,9 +291,11 @@ theorem iInter_plift_up (f : PLift ι → Set α) : (⋂ i, f (PLift.up i)) =
#align set.Inter_plift_up Set.iInter_plift_up
-/
+#print Set.iInter_plift_down /-
theorem iInter_plift_down (f : ι → Set α) : (⋂ i, f (PLift.down i)) = ⋂ i, f i :=
iInf_plift_down _
#align set.Inter_plift_down Set.iInter_plift_down
+-/
#print Set.iUnion_eq_if /-
theorem iUnion_eq_if {p : Prop} [Decidable p] (s : Set α) : (⋃ h : p, s) = if p then s else ∅ :=
@@ -294,325 +323,448 @@ theorem iInf_eq_dif {p : Prop} [Decidable p] (s : p → Set α) :
#align set.Infi_eq_dif Set.iInf_eq_dif
-/
+#print Set.exists_set_mem_of_union_eq_top /-
theorem exists_set_mem_of_union_eq_top {ι : Type _} (t : Set ι) (s : ι → Set β)
(w : (⋃ i ∈ t, s i) = ⊤) (x : β) : ∃ i ∈ t, x ∈ s i :=
by
have p : x ∈ ⊤ := Set.mem_univ x
simpa only [← w, Set.mem_iUnion] using p
#align set.exists_set_mem_of_union_eq_top Set.exists_set_mem_of_union_eq_top
+-/
+#print Set.nonempty_of_union_eq_top_of_nonempty /-
theorem nonempty_of_union_eq_top_of_nonempty {ι : Type _} (t : Set ι) (s : ι → Set α)
(H : Nonempty α) (w : (⋃ i ∈ t, s i) = ⊤) : t.Nonempty :=
by
obtain ⟨x, m, -⟩ := exists_set_mem_of_union_eq_top t s w H.some
exact ⟨x, m⟩
#align set.nonempty_of_union_eq_top_of_nonempty Set.nonempty_of_union_eq_top_of_nonempty
+-/
+#print Set.setOf_exists /-
theorem setOf_exists (p : ι → β → Prop) : {x | ∃ i, p i x} = ⋃ i, {x | p i x} :=
ext fun i => mem_iUnion.symm
#align set.set_of_exists Set.setOf_exists
+-/
+#print Set.setOf_forall /-
theorem setOf_forall (p : ι → β → Prop) : {x | ∀ i, p i x} = ⋂ i, {x | p i x} :=
ext fun i => mem_iInter.symm
#align set.set_of_forall Set.setOf_forall
+-/
+#print Set.iUnion_subset /-
theorem iUnion_subset {s : ι → Set α} {t : Set α} (h : ∀ i, s i ⊆ t) : (⋃ i, s i) ⊆ t :=
@iSup_le (Set α) _ _ _ _ h
#align set.Union_subset Set.iUnion_subset
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.iUnion₂_subset /-
theorem iUnion₂_subset {s : ∀ i, κ i → Set α} {t : Set α} (h : ∀ i j, s i j ⊆ t) :
(⋃ (i) (j), s i j) ⊆ t :=
iUnion_subset fun x => iUnion_subset (h x)
#align set.Union₂_subset Set.iUnion₂_subset
+-/
+#print Set.subset_iInter /-
theorem subset_iInter {t : Set β} {s : ι → Set β} (h : ∀ i, t ⊆ s i) : t ⊆ ⋂ i, s i :=
@le_iInf (Set β) _ _ _ _ h
#align set.subset_Inter Set.subset_iInter
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.subset_iInter₂ /-
theorem subset_iInter₂ {s : Set α} {t : ∀ i, κ i → Set α} (h : ∀ i j, s ⊆ t i j) :
s ⊆ ⋂ (i) (j), t i j :=
subset_iInter fun x => subset_iInter <| h x
#align set.subset_Inter₂ Set.subset_iInter₂
+-/
+#print Set.iUnion_subset_iff /-
@[simp]
theorem iUnion_subset_iff {s : ι → Set α} {t : Set α} : (⋃ i, s i) ⊆ t ↔ ∀ i, s i ⊆ t :=
⟨fun h i => Subset.trans (le_iSup s _) h, iUnion_subset⟩
#align set.Union_subset_iff Set.iUnion_subset_iff
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.iUnion₂_subset_iff /-
theorem iUnion₂_subset_iff {s : ∀ i, κ i → Set α} {t : Set α} :
(⋃ (i) (j), s i j) ⊆ t ↔ ∀ i j, s i j ⊆ t := by simp_rw [Union_subset_iff]
#align set.Union₂_subset_iff Set.iUnion₂_subset_iff
+-/
+#print Set.subset_iInter_iff /-
@[simp]
theorem subset_iInter_iff {s : Set α} {t : ι → Set α} : (s ⊆ ⋂ i, t i) ↔ ∀ i, s ⊆ t i :=
@le_iInf_iff (Set α) _ _ _ _
#align set.subset_Inter_iff Set.subset_iInter_iff
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.subset_iInter₂_iff /-
@[simp]
theorem subset_iInter₂_iff {s : Set α} {t : ∀ i, κ i → Set α} :
(s ⊆ ⋂ (i) (j), t i j) ↔ ∀ i j, s ⊆ t i j := by simp_rw [subset_Inter_iff]
#align set.subset_Inter₂_iff Set.subset_iInter₂_iff
+-/
+#print Set.subset_iUnion /-
theorem subset_iUnion : ∀ (s : ι → Set β) (i : ι), s i ⊆ ⋃ i, s i :=
le_iSup
#align set.subset_Union Set.subset_iUnion
+-/
+#print Set.iInter_subset /-
theorem iInter_subset : ∀ (s : ι → Set β) (i : ι), (⋂ i, s i) ⊆ s i :=
iInf_le
#align set.Inter_subset Set.iInter_subset
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.subset_iUnion₂ /-
theorem subset_iUnion₂ {s : ∀ i, κ i → Set α} (i : ι) (j : κ i) : s i j ⊆ ⋃ (i) (j), s i j :=
@le_iSup₂ (Set α) _ _ _ _ i j
#align set.subset_Union₂ Set.subset_iUnion₂
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.iInter₂_subset /-
theorem iInter₂_subset {s : ∀ i, κ i → Set α} (i : ι) (j : κ i) : (⋂ (i) (j), s i j) ⊆ s i j :=
@iInf₂_le (Set α) _ _ _ _ i j
#align set.Inter₂_subset Set.iInter₂_subset
+-/
+#print Set.subset_iUnion_of_subset /-
/-- This rather trivial consequence of `subset_Union`is convenient with `apply`, and has `i`
explicit for this purpose. -/
theorem subset_iUnion_of_subset {s : Set α} {t : ι → Set α} (i : ι) (h : s ⊆ t i) : s ⊆ ⋃ i, t i :=
@le_iSup_of_le (Set α) _ _ _ _ i h
#align set.subset_Union_of_subset Set.subset_iUnion_of_subset
+-/
+#print Set.iInter_subset_of_subset /-
/-- This rather trivial consequence of `Inter_subset`is convenient with `apply`, and has `i`
explicit for this purpose. -/
theorem iInter_subset_of_subset {s : ι → Set α} {t : Set α} (i : ι) (h : s i ⊆ t) :
(⋂ i, s i) ⊆ t :=
@iInf_le_of_le (Set α) _ _ _ _ i h
#align set.Inter_subset_of_subset Set.iInter_subset_of_subset
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.subset_iUnion₂_of_subset /-
/-- This rather trivial consequence of `subset_Union₂` is convenient with `apply`, and has `i` and
`j` explicit for this purpose. -/
theorem subset_iUnion₂_of_subset {s : Set α} {t : ∀ i, κ i → Set α} (i : ι) (j : κ i)
(h : s ⊆ t i j) : s ⊆ ⋃ (i) (j), t i j :=
@le_iSup₂_of_le (Set α) _ _ _ _ _ i j h
#align set.subset_Union₂_of_subset Set.subset_iUnion₂_of_subset
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.iInter₂_subset_of_subset /-
/-- This rather trivial consequence of `Inter₂_subset` is convenient with `apply`, and has `i` and
`j` explicit for this purpose. -/
theorem iInter₂_subset_of_subset {s : ∀ i, κ i → Set α} {t : Set α} (i : ι) (j : κ i)
(h : s i j ⊆ t) : (⋂ (i) (j), s i j) ⊆ t :=
@iInf₂_le_of_le (Set α) _ _ _ _ _ i j h
#align set.Inter₂_subset_of_subset Set.iInter₂_subset_of_subset
+-/
+#print Set.iUnion_mono /-
theorem iUnion_mono {s t : ι → Set α} (h : ∀ i, s i ⊆ t i) : (⋃ i, s i) ⊆ ⋃ i, t i :=
@iSup_mono (Set α) _ _ s t h
#align set.Union_mono Set.iUnion_mono
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.iUnion₂_mono /-
theorem iUnion₂_mono {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j ⊆ t i j) :
(⋃ (i) (j), s i j) ⊆ ⋃ (i) (j), t i j :=
@iSup₂_mono (Set α) _ _ _ s t h
#align set.Union₂_mono Set.iUnion₂_mono
+-/
+#print Set.iInter_mono /-
theorem iInter_mono {s t : ι → Set α} (h : ∀ i, s i ⊆ t i) : (⋂ i, s i) ⊆ ⋂ i, t i :=
@iInf_mono (Set α) _ _ s t h
#align set.Inter_mono Set.iInter_mono
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.iInter₂_mono /-
theorem iInter₂_mono {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j ⊆ t i j) :
(⋂ (i) (j), s i j) ⊆ ⋂ (i) (j), t i j :=
@iInf₂_mono (Set α) _ _ _ s t h
#align set.Inter₂_mono Set.iInter₂_mono
+-/
+#print Set.iUnion_mono' /-
theorem iUnion_mono' {s : ι → Set α} {t : ι₂ → Set α} (h : ∀ i, ∃ j, s i ⊆ t j) :
(⋃ i, s i) ⊆ ⋃ i, t i :=
@iSup_mono' (Set α) _ _ _ s t h
#align set.Union_mono' Set.iUnion_mono'
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i' j') -/
+#print Set.iUnion₂_mono' /-
theorem iUnion₂_mono' {s : ∀ i, κ i → Set α} {t : ∀ i', κ' i' → Set α}
(h : ∀ i j, ∃ i' j', s i j ⊆ t i' j') : (⋃ (i) (j), s i j) ⊆ ⋃ (i') (j'), t i' j' :=
@iSup₂_mono' (Set α) _ _ _ _ _ s t h
#align set.Union₂_mono' Set.iUnion₂_mono'
+-/
+#print Set.iInter_mono' /-
theorem iInter_mono' {s : ι → Set α} {t : ι' → Set α} (h : ∀ j, ∃ i, s i ⊆ t j) :
(⋂ i, s i) ⊆ ⋂ j, t j :=
Set.subset_iInter fun j =>
let ⟨i, hi⟩ := h j
iInter_subset_of_subset i hi
#align set.Inter_mono' Set.iInter_mono'
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i' j') -/
+#print Set.iInter₂_mono' /-
theorem iInter₂_mono' {s : ∀ i, κ i → Set α} {t : ∀ i', κ' i' → Set α}
(h : ∀ i' j', ∃ i j, s i j ⊆ t i' j') : (⋂ (i) (j), s i j) ⊆ ⋂ (i') (j'), t i' j' :=
subset_iInter₂_iff.2 fun i' j' =>
let ⟨i, j, hst⟩ := h i' j'
(iInter₂_subset _ _).trans hst
#align set.Inter₂_mono' Set.iInter₂_mono'
+-/
+#print Set.iUnion₂_subset_iUnion /-
theorem iUnion₂_subset_iUnion (κ : ι → Sort _) (s : ι → Set α) :
(⋃ (i) (j : κ i), s i) ⊆ ⋃ i, s i :=
iUnion_mono fun i => iUnion_subset fun h => Subset.rfl
#align set.Union₂_subset_Union Set.iUnion₂_subset_iUnion
+-/
+#print Set.iInter_subset_iInter₂ /-
theorem iInter_subset_iInter₂ (κ : ι → Sort _) (s : ι → Set α) :
(⋂ i, s i) ⊆ ⋂ (i) (j : κ i), s i :=
iInter_mono fun i => subset_iInter fun h => Subset.rfl
#align set.Inter_subset_Inter₂ Set.iInter_subset_iInter₂
+-/
+#print Set.iUnion_setOf /-
theorem iUnion_setOf (P : ι → α → Prop) : (⋃ i, {x : α | P i x}) = {x : α | ∃ i, P i x} := by ext;
exact mem_Union
#align set.Union_set_of Set.iUnion_setOf
+-/
+#print Set.iInter_setOf /-
theorem iInter_setOf (P : ι → α → Prop) : (⋂ i, {x : α | P i x}) = {x : α | ∀ i, P i x} := by ext;
exact mem_Inter
#align set.Inter_set_of Set.iInter_setOf
+-/
+#print Set.iUnion_congr_of_surjective /-
theorem iUnion_congr_of_surjective {f : ι → Set α} {g : ι₂ → Set α} (h : ι → ι₂) (h1 : Surjective h)
(h2 : ∀ x, g (h x) = f x) : (⋃ x, f x) = ⋃ y, g y :=
h1.iSup_congr h h2
#align set.Union_congr_of_surjective Set.iUnion_congr_of_surjective
+-/
+#print Set.iInter_congr_of_surjective /-
theorem iInter_congr_of_surjective {f : ι → Set α} {g : ι₂ → Set α} (h : ι → ι₂) (h1 : Surjective h)
(h2 : ∀ x, g (h x) = f x) : (⋂ x, f x) = ⋂ y, g y :=
h1.iInf_congr h h2
#align set.Inter_congr_of_surjective Set.iInter_congr_of_surjective
+-/
+#print Set.iUnion_congr /-
theorem iUnion_congr {s t : ι → Set α} (h : ∀ i, s i = t i) : (⋃ i, s i) = ⋃ i, t i :=
iSup_congr h
#align set.Union_congr Set.iUnion_congr
+-/
+#print Set.iInter_congr /-
theorem iInter_congr {s t : ι → Set α} (h : ∀ i, s i = t i) : (⋂ i, s i) = ⋂ i, t i :=
iInf_congr h
#align set.Inter_congr Set.iInter_congr
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.iUnion₂_congr /-
theorem iUnion₂_congr {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j = t i j) :
(⋃ (i) (j), s i j) = ⋃ (i) (j), t i j :=
iUnion_congr fun i => iUnion_congr <| h i
#align set.Union₂_congr Set.iUnion₂_congr
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.iInter₂_congr /-
theorem iInter₂_congr {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j = t i j) :
(⋂ (i) (j), s i j) = ⋂ (i) (j), t i j :=
iInter_congr fun i => iInter_congr <| h i
#align set.Inter₂_congr Set.iInter₂_congr
+-/
section Nonempty
variable [Nonempty ι] {f : ι → Set α} {s : Set α}
+#print Set.iUnion_const /-
theorem iUnion_const (s : Set β) : (⋃ i : ι, s) = s :=
iSup_const
#align set.Union_const Set.iUnion_const
+-/
+#print Set.iInter_const /-
theorem iInter_const (s : Set β) : (⋂ i : ι, s) = s :=
iInf_const
#align set.Inter_const Set.iInter_const
+-/
+#print Set.iUnion_eq_const /-
theorem iUnion_eq_const (hf : ∀ i, f i = s) : (⋃ i, f i) = s :=
(iUnion_congr hf).trans <| iUnion_const _
#align set.Union_eq_const Set.iUnion_eq_const
+-/
+#print Set.iInter_eq_const /-
theorem iInter_eq_const (hf : ∀ i, f i = s) : (⋂ i, f i) = s :=
(iInter_congr hf).trans <| iInter_const _
#align set.Inter_eq_const Set.iInter_eq_const
+-/
end Nonempty
+#print Set.compl_iUnion /-
@[simp]
theorem compl_iUnion (s : ι → Set β) : (⋃ i, s i)ᶜ = ⋂ i, s iᶜ :=
compl_iSup
#align set.compl_Union Set.compl_iUnion
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.compl_iUnion₂ /-
theorem compl_iUnion₂ (s : ∀ i, κ i → Set α) : (⋃ (i) (j), s i j)ᶜ = ⋂ (i) (j), s i jᶜ := by
simp_rw [compl_Union]
#align set.compl_Union₂ Set.compl_iUnion₂
+-/
+#print Set.compl_iInter /-
@[simp]
theorem compl_iInter (s : ι → Set β) : (⋂ i, s i)ᶜ = ⋃ i, s iᶜ :=
compl_iInf
#align set.compl_Inter Set.compl_iInter
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.compl_iInter₂ /-
theorem compl_iInter₂ (s : ∀ i, κ i → Set α) : (⋂ (i) (j), s i j)ᶜ = ⋃ (i) (j), s i jᶜ := by
simp_rw [compl_Inter]
#align set.compl_Inter₂ Set.compl_iInter₂
+-/
+#print Set.iUnion_eq_compl_iInter_compl /-
-- classical -- complete_boolean_algebra
theorem iUnion_eq_compl_iInter_compl (s : ι → Set β) : (⋃ i, s i) = (⋂ i, s iᶜ)ᶜ := by
simp only [compl_Inter, compl_compl]
#align set.Union_eq_compl_Inter_compl Set.iUnion_eq_compl_iInter_compl
+-/
+#print Set.iInter_eq_compl_iUnion_compl /-
-- classical -- complete_boolean_algebra
theorem iInter_eq_compl_iUnion_compl (s : ι → Set β) : (⋂ i, s i) = (⋃ i, s iᶜ)ᶜ := by
simp only [compl_Union, compl_compl]
#align set.Inter_eq_compl_Union_compl Set.iInter_eq_compl_iUnion_compl
+-/
+#print Set.inter_iUnion /-
theorem inter_iUnion (s : Set β) (t : ι → Set β) : (s ∩ ⋃ i, t i) = ⋃ i, s ∩ t i :=
inf_iSup_eq _ _
#align set.inter_Union Set.inter_iUnion
+-/
+#print Set.iUnion_inter /-
theorem iUnion_inter (s : Set β) (t : ι → Set β) : (⋃ i, t i) ∩ s = ⋃ i, t i ∩ s :=
iSup_inf_eq _ _
#align set.Union_inter Set.iUnion_inter
+-/
+#print Set.iUnion_union_distrib /-
theorem iUnion_union_distrib (s : ι → Set β) (t : ι → Set β) :
(⋃ i, s i ∪ t i) = (⋃ i, s i) ∪ ⋃ i, t i :=
iSup_sup_eq
#align set.Union_union_distrib Set.iUnion_union_distrib
+-/
+#print Set.iInter_inter_distrib /-
theorem iInter_inter_distrib (s : ι → Set β) (t : ι → Set β) :
(⋂ i, s i ∩ t i) = (⋂ i, s i) ∩ ⋂ i, t i :=
iInf_inf_eq
#align set.Inter_inter_distrib Set.iInter_inter_distrib
+-/
+#print Set.union_iUnion /-
theorem union_iUnion [Nonempty ι] (s : Set β) (t : ι → Set β) : (s ∪ ⋃ i, t i) = ⋃ i, s ∪ t i :=
sup_iSup
#align set.union_Union Set.union_iUnion
+-/
+#print Set.iUnion_union /-
theorem iUnion_union [Nonempty ι] (s : Set β) (t : ι → Set β) : (⋃ i, t i) ∪ s = ⋃ i, t i ∪ s :=
iSup_sup
#align set.Union_union Set.iUnion_union
+-/
+#print Set.inter_iInter /-
theorem inter_iInter [Nonempty ι] (s : Set β) (t : ι → Set β) : (s ∩ ⋂ i, t i) = ⋂ i, s ∩ t i :=
inf_iInf
#align set.inter_Inter Set.inter_iInter
+-/
+#print Set.iInter_inter /-
theorem iInter_inter [Nonempty ι] (s : Set β) (t : ι → Set β) : (⋂ i, t i) ∩ s = ⋂ i, t i ∩ s :=
iInf_inf
#align set.Inter_inter Set.iInter_inter
+-/
+#print Set.union_iInter /-
-- classical
theorem union_iInter (s : Set β) (t : ι → Set β) : (s ∪ ⋂ i, t i) = ⋂ i, s ∪ t i :=
sup_iInf_eq _ _
#align set.union_Inter Set.union_iInter
+-/
+#print Set.iInter_union /-
theorem iInter_union (s : ι → Set β) (t : Set β) : (⋂ i, s i) ∪ t = ⋂ i, s i ∪ t :=
iInf_sup_eq _ _
#align set.Inter_union Set.iInter_union
+-/
+#print Set.iUnion_diff /-
theorem iUnion_diff (s : Set β) (t : ι → Set β) : (⋃ i, t i) \ s = ⋃ i, t i \ s :=
iUnion_inter _ _
#align set.Union_diff Set.iUnion_diff
+-/
+#print Set.diff_iUnion /-
theorem diff_iUnion [Nonempty ι] (s : Set β) (t : ι → Set β) : (s \ ⋃ i, t i) = ⋂ i, s \ t i := by
rw [diff_eq, compl_Union, inter_Inter] <;> rfl
#align set.diff_Union Set.diff_iUnion
+-/
+#print Set.diff_iInter /-
theorem diff_iInter (s : Set β) (t : ι → Set β) : (s \ ⋂ i, t i) = ⋃ i, s \ t i := by
rw [diff_eq, compl_Inter, inter_Union] <;> rfl
#align set.diff_Inter Set.diff_iInter
+-/
+#print Set.directed_on_iUnion /-
theorem directed_on_iUnion {r} {f : ι → Set α} (hd : Directed (· ⊆ ·) f)
(h : ∀ x, DirectedOn r (f x)) : DirectedOn r (⋃ x, f x) := by
simp only [DirectedOn, exists_prop, mem_Union, exists_imp] <;>
@@ -621,70 +773,96 @@ theorem directed_on_iUnion {r} {f : ι → Set α} (hd : Directed (· ⊆ ·) f)
let ⟨x, xf, xa₁, xa₂⟩ := h z a₁ (zb₁ fb₁) a₂ (zb₂ fb₂)
⟨x, ⟨z, xf⟩, xa₁, xa₂⟩
#align set.directed_on_Union Set.directed_on_iUnion
+-/
+#print Set.iUnion_inter_subset /-
theorem iUnion_inter_subset {ι α} {s t : ι → Set α} : (⋃ i, s i ∩ t i) ⊆ (⋃ i, s i) ∩ ⋃ i, t i :=
le_iSup_inf_iSup s t
#align set.Union_inter_subset Set.iUnion_inter_subset
+-/
+#print Set.iUnion_inter_of_monotone /-
theorem iUnion_inter_of_monotone {ι α} [Preorder ι] [IsDirected ι (· ≤ ·)] {s t : ι → Set α}
(hs : Monotone s) (ht : Monotone t) : (⋃ i, s i ∩ t i) = (⋃ i, s i) ∩ ⋃ i, t i :=
iSup_inf_of_monotone hs ht
#align set.Union_inter_of_monotone Set.iUnion_inter_of_monotone
+-/
+#print Set.iUnion_inter_of_antitone /-
theorem iUnion_inter_of_antitone {ι α} [Preorder ι] [IsDirected ι (swap (· ≤ ·))] {s t : ι → Set α}
(hs : Antitone s) (ht : Antitone t) : (⋃ i, s i ∩ t i) = (⋃ i, s i) ∩ ⋃ i, t i :=
iSup_inf_of_antitone hs ht
#align set.Union_inter_of_antitone Set.iUnion_inter_of_antitone
+-/
+#print Set.iInter_union_of_monotone /-
theorem iInter_union_of_monotone {ι α} [Preorder ι] [IsDirected ι (swap (· ≤ ·))] {s t : ι → Set α}
(hs : Monotone s) (ht : Monotone t) : (⋂ i, s i ∪ t i) = (⋂ i, s i) ∪ ⋂ i, t i :=
iInf_sup_of_monotone hs ht
#align set.Inter_union_of_monotone Set.iInter_union_of_monotone
+-/
+#print Set.iInter_union_of_antitone /-
theorem iInter_union_of_antitone {ι α} [Preorder ι] [IsDirected ι (· ≤ ·)] {s t : ι → Set α}
(hs : Antitone s) (ht : Antitone t) : (⋂ i, s i ∪ t i) = (⋂ i, s i) ∪ ⋂ i, t i :=
iInf_sup_of_antitone hs ht
#align set.Inter_union_of_antitone Set.iInter_union_of_antitone
+-/
+#print Set.iUnion_iInter_subset /-
/-- An equality version of this lemma is `Union_Inter_of_monotone` in `data.set.finite`. -/
theorem iUnion_iInter_subset {s : ι → ι' → Set α} : (⋃ j, ⋂ i, s i j) ⊆ ⋂ i, ⋃ j, s i j :=
iSup_iInf_le_iInf_iSup (flip s)
#align set.Union_Inter_subset Set.iUnion_iInter_subset
+-/
+#print Set.iUnion_option /-
theorem iUnion_option {ι} (s : Option ι → Set α) : (⋃ o, s o) = s none ∪ ⋃ i, s (some i) :=
iSup_option s
#align set.Union_option Set.iUnion_option
+-/
+#print Set.iInter_option /-
theorem iInter_option {ι} (s : Option ι → Set α) : (⋂ o, s o) = s none ∩ ⋂ i, s (some i) :=
iInf_option s
#align set.Inter_option Set.iInter_option
+-/
section
variable (p : ι → Prop) [DecidablePred p]
+#print Set.iUnion_dite /-
theorem iUnion_dite (f : ∀ i, p i → Set α) (g : ∀ i, ¬p i → Set α) :
(⋃ i, if h : p i then f i h else g i h) = (⋃ (i) (h : p i), f i h) ∪ ⋃ (i) (h : ¬p i), g i h :=
iSup_dite _ _ _
#align set.Union_dite Set.iUnion_dite
+-/
+#print Set.iUnion_ite /-
theorem iUnion_ite (f g : ι → Set α) :
(⋃ i, if p i then f i else g i) = (⋃ (i) (h : p i), f i) ∪ ⋃ (i) (h : ¬p i), g i :=
iUnion_dite _ _ _
#align set.Union_ite Set.iUnion_ite
+-/
+#print Set.iInter_dite /-
theorem iInter_dite (f : ∀ i, p i → Set α) (g : ∀ i, ¬p i → Set α) :
(⋂ i, if h : p i then f i h else g i h) = (⋂ (i) (h : p i), f i h) ∩ ⋂ (i) (h : ¬p i), g i h :=
iInf_dite _ _ _
#align set.Inter_dite Set.iInter_dite
+-/
+#print Set.iInter_ite /-
theorem iInter_ite (f g : ι → Set α) :
(⋂ i, if p i then f i else g i) = (⋂ (i) (h : p i), f i) ∩ ⋂ (i) (h : ¬p i), g i :=
iInter_dite _ _ _
#align set.Inter_ite Set.iInter_ite
+-/
end
+#print Set.image_projection_prod /-
theorem image_projection_prod {ι : Type _} {α : ι → Type _} {v : ∀ i : ι, Set (α i)}
(hv : (pi univ v).Nonempty) (i : ι) :
((fun x : ∀ i : ι, α i => x i) '' ⋂ k, (fun x : ∀ j : ι, α j => x k) ⁻¹' v k) = v i := by
@@ -698,6 +876,7 @@ theorem image_projection_prod {ι : Type _} {α : ι → Type _} {v : ∀ i : ι
rw [@forall_update_iff ι α _ z i y fun i t => t ∈ v i]
exact ⟨y_in, fun j hj => by simpa using hz j⟩
#align set.image_projection_prod Set.image_projection_prod
+-/
/-! ### Unions and intersections indexed by `Prop` -/
@@ -744,44 +923,58 @@ theorem iUnion_exists {p : ι → Prop} {f : Exists p → Set α} :
#align set.Union_exists Set.iUnion_exists
-/
+#print Set.iUnion_empty /-
@[simp]
theorem iUnion_empty : (⋃ i : ι, ∅ : Set α) = ∅ :=
iSup_bot
#align set.Union_empty Set.iUnion_empty
+-/
+#print Set.iInter_univ /-
@[simp]
theorem iInter_univ : (⋂ i : ι, univ : Set α) = univ :=
iInf_top
#align set.Inter_univ Set.iInter_univ
+-/
section
variable {s : ι → Set α}
+#print Set.iUnion_eq_empty /-
@[simp]
theorem iUnion_eq_empty : (⋃ i, s i) = ∅ ↔ ∀ i, s i = ∅ :=
iSup_eq_bot
#align set.Union_eq_empty Set.iUnion_eq_empty
+-/
+#print Set.iInter_eq_univ /-
@[simp]
theorem iInter_eq_univ : (⋂ i, s i) = univ ↔ ∀ i, s i = univ :=
iInf_eq_top
#align set.Inter_eq_univ Set.iInter_eq_univ
+-/
+#print Set.nonempty_iUnion /-
@[simp]
theorem nonempty_iUnion : (⋃ i, s i).Nonempty ↔ ∃ i, (s i).Nonempty := by
simp [nonempty_iff_ne_empty]
#align set.nonempty_Union Set.nonempty_iUnion
+-/
+#print Set.nonempty_biUnion /-
@[simp]
theorem nonempty_biUnion {t : Set α} {s : α → Set β} :
(⋃ i ∈ t, s i).Nonempty ↔ ∃ i ∈ t, (s i).Nonempty := by simp [nonempty_iff_ne_empty]
#align set.nonempty_bUnion Set.nonempty_biUnion
+-/
+#print Set.iUnion_nonempty_index /-
theorem iUnion_nonempty_index (s : Set α) (t : s.Nonempty → Set β) :
(⋃ h, t h) = ⋃ x ∈ s, t ⟨x, ‹_›⟩ :=
iSup_exists
#align set.Union_nonempty_index Set.iUnion_nonempty_index
+-/
end
@@ -817,15 +1010,19 @@ theorem iUnion_iUnion_eq_right {b : β} {s : ∀ x : β, b = x → Set α} :
#align set.Union_Union_eq_right Set.iUnion_iUnion_eq_right
-/
+#print Set.iInter_or /-
theorem iInter_or {p q : Prop} (s : p ∨ q → Set α) :
(⋂ h, s h) = (⋂ h : p, s (Or.inl h)) ∩ ⋂ h : q, s (Or.inr h) :=
iInf_or
#align set.Inter_or Set.iInter_or
+-/
+#print Set.iUnion_or /-
theorem iUnion_or {p q : Prop} (s : p ∨ q → Set α) :
(⋃ h, s h) = (⋃ i, s (Or.inl i)) ∪ ⋃ j, s (Or.inr j) :=
iSup_or
#align set.Union_or Set.iUnion_or
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (hp hq) -/
#print Set.iUnion_and /-
@@ -843,137 +1040,181 @@ theorem iInter_and {p q : Prop} (s : p ∧ q → Set α) : (⋂ h, s h) = ⋂ (h
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i i') -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i' i) -/
+#print Set.iUnion_comm /-
theorem iUnion_comm (s : ι → ι' → Set α) : (⋃ (i) (i'), s i i') = ⋃ (i') (i), s i i' :=
iSup_comm
#align set.Union_comm Set.iUnion_comm
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i i') -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i' i) -/
+#print Set.iInter_comm /-
theorem iInter_comm (s : ι → ι' → Set α) : (⋂ (i) (i'), s i i') = ⋂ (i') (i), s i i' :=
iInf_comm
#align set.Inter_comm Set.iInter_comm
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i₁ j₁ i₂ j₂) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i₂ j₂ i₁ j₁) -/
+#print Set.iUnion₂_comm /-
theorem iUnion₂_comm (s : ∀ i₁, κ₁ i₁ → ∀ i₂, κ₂ i₂ → Set α) :
(⋃ (i₁) (j₁) (i₂) (j₂), s i₁ j₁ i₂ j₂) = ⋃ (i₂) (j₂) (i₁) (j₁), s i₁ j₁ i₂ j₂ :=
iSup₂_comm _
#align set.Union₂_comm Set.iUnion₂_comm
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i₁ j₁ i₂ j₂) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i₂ j₂ i₁ j₁) -/
+#print Set.iInter₂_comm /-
theorem iInter₂_comm (s : ∀ i₁, κ₁ i₁ → ∀ i₂, κ₂ i₂ → Set α) :
(⋂ (i₁) (j₁) (i₂) (j₂), s i₁ j₁ i₂ j₂) = ⋂ (i₂) (j₂) (i₁) (j₁), s i₁ j₁ i₂ j₂ :=
iInf₂_comm _
#align set.Inter₂_comm Set.iInter₂_comm
+-/
+#print Set.biUnion_and /-
@[simp]
theorem biUnion_and (p : ι → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p x ∧ q x y → Set α) :
(⋃ (x : ι) (y : ι') (h : p x ∧ q x y), s x y h) =
⋃ (x : ι) (hx : p x) (y : ι') (hy : q x y), s x y ⟨hx, hy⟩ :=
by simp only [Union_and, @Union_comm _ ι']
#align set.bUnion_and Set.biUnion_and
+-/
+#print Set.biUnion_and' /-
@[simp]
theorem biUnion_and' (p : ι' → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p y ∧ q x y → Set α) :
(⋃ (x : ι) (y : ι') (h : p y ∧ q x y), s x y h) =
⋃ (y : ι') (hy : p y) (x : ι) (hx : q x y), s x y ⟨hy, hx⟩ :=
by simp only [Union_and, @Union_comm _ ι]
#align set.bUnion_and' Set.biUnion_and'
+-/
+#print Set.biInter_and /-
@[simp]
theorem biInter_and (p : ι → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p x ∧ q x y → Set α) :
(⋂ (x : ι) (y : ι') (h : p x ∧ q x y), s x y h) =
⋂ (x : ι) (hx : p x) (y : ι') (hy : q x y), s x y ⟨hx, hy⟩ :=
by simp only [Inter_and, @Inter_comm _ ι']
#align set.bInter_and Set.biInter_and
+-/
+#print Set.biInter_and' /-
@[simp]
theorem biInter_and' (p : ι' → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p y ∧ q x y → Set α) :
(⋂ (x : ι) (y : ι') (h : p y ∧ q x y), s x y h) =
⋂ (y : ι') (hy : p y) (x : ι) (hx : q x y), s x y ⟨hy, hx⟩ :=
by simp only [Inter_and, @Inter_comm _ ι]
#align set.bInter_and' Set.biInter_and'
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (x h) -/
+#print Set.iUnion_iUnion_eq_or_left /-
@[simp]
theorem iUnion_iUnion_eq_or_left {b : β} {p : β → Prop} {s : ∀ x : β, x = b ∨ p x → Set α} :
(⋃ (x) (h), s x h) = s b (Or.inl rfl) ∪ ⋃ (x) (h : p x), s x (Or.inr h) := by
simp only [Union_or, Union_union_distrib, Union_Union_eq_left]
#align set.Union_Union_eq_or_left Set.iUnion_iUnion_eq_or_left
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (x h) -/
+#print Set.iInter_iInter_eq_or_left /-
@[simp]
theorem iInter_iInter_eq_or_left {b : β} {p : β → Prop} {s : ∀ x : β, x = b ∨ p x → Set α} :
(⋂ (x) (h), s x h) = s b (Or.inl rfl) ∩ ⋂ (x) (h : p x), s x (Or.inr h) := by
simp only [Inter_or, Inter_inter_distrib, Inter_Inter_eq_left]
#align set.Inter_Inter_eq_or_left Set.iInter_iInter_eq_or_left
+-/
/-! ### Bounded unions and intersections -/
+#print Set.mem_biUnion /-
/-- A specialization of `mem_Union₂`. -/
theorem mem_biUnion {s : Set α} {t : α → Set β} {x : α} {y : β} (xs : x ∈ s) (ytx : y ∈ t x) :
y ∈ ⋃ x ∈ s, t x :=
mem_iUnion₂_of_mem xs ytx
#align set.mem_bUnion Set.mem_biUnion
+-/
+#print Set.mem_biInter /-
/-- A specialization of `mem_Inter₂`. -/
theorem mem_biInter {s : Set α} {t : α → Set β} {y : β} (h : ∀ x ∈ s, y ∈ t x) : y ∈ ⋂ x ∈ s, t x :=
mem_iInter₂_of_mem h
#align set.mem_bInter Set.mem_biInter
+-/
+#print Set.subset_biUnion_of_mem /-
/-- A specialization of `subset_Union₂`. -/
theorem subset_biUnion_of_mem {s : Set α} {u : α → Set β} {x : α} (xs : x ∈ s) :
u x ⊆ ⋃ x ∈ s, u x :=
subset_iUnion₂ x xs
#align set.subset_bUnion_of_mem Set.subset_biUnion_of_mem
+-/
+#print Set.biInter_subset_of_mem /-
/-- A specialization of `Inter₂_subset`. -/
theorem biInter_subset_of_mem {s : Set α} {t : α → Set β} {x : α} (xs : x ∈ s) :
(⋂ x ∈ s, t x) ⊆ t x :=
iInter₂_subset x xs
#align set.bInter_subset_of_mem Set.biInter_subset_of_mem
+-/
+#print Set.biUnion_subset_biUnion_left /-
theorem biUnion_subset_biUnion_left {s s' : Set α} {t : α → Set β} (h : s ⊆ s') :
(⋃ x ∈ s, t x) ⊆ ⋃ x ∈ s', t x :=
iUnion₂_subset fun x hx => subset_biUnion_of_mem <| h hx
#align set.bUnion_subset_bUnion_left Set.biUnion_subset_biUnion_left
+-/
+#print Set.biInter_subset_biInter_left /-
theorem biInter_subset_biInter_left {s s' : Set α} {t : α → Set β} (h : s' ⊆ s) :
(⋂ x ∈ s, t x) ⊆ ⋂ x ∈ s', t x :=
subset_iInter₂ fun x hx => biInter_subset_of_mem <| h hx
#align set.bInter_subset_bInter_left Set.biInter_subset_biInter_left
+-/
+#print Set.biUnion_mono /-
theorem biUnion_mono {s s' : Set α} {t t' : α → Set β} (hs : s' ⊆ s) (h : ∀ x ∈ s, t x ⊆ t' x) :
(⋃ x ∈ s', t x) ⊆ ⋃ x ∈ s, t' x :=
(biUnion_subset_biUnion_left hs).trans <| iUnion₂_mono h
#align set.bUnion_mono Set.biUnion_mono
+-/
+#print Set.biInter_mono /-
theorem biInter_mono {s s' : Set α} {t t' : α → Set β} (hs : s ⊆ s') (h : ∀ x ∈ s, t x ⊆ t' x) :
(⋂ x ∈ s', t x) ⊆ ⋂ x ∈ s, t' x :=
(biInter_subset_biInter_left hs).trans <| iInter₂_mono h
#align set.bInter_mono Set.biInter_mono
+-/
+#print Set.biUnion_eq_iUnion /-
theorem biUnion_eq_iUnion (s : Set α) (t : ∀ x ∈ s, Set β) :
(⋃ x ∈ s, t x ‹_›) = ⋃ x : s, t x x.2 :=
iSup_subtype'
#align set.bUnion_eq_Union Set.biUnion_eq_iUnion
+-/
+#print Set.biInter_eq_iInter /-
theorem biInter_eq_iInter (s : Set α) (t : ∀ x ∈ s, Set β) :
(⋂ x ∈ s, t x ‹_›) = ⋂ x : s, t x x.2 :=
iInf_subtype'
#align set.bInter_eq_Inter Set.biInter_eq_iInter
+-/
+#print Set.iUnion_subtype /-
theorem iUnion_subtype (p : α → Prop) (s : { x // p x } → Set β) :
(⋃ x : { x // p x }, s x) = ⋃ (x) (hx : p x), s ⟨x, hx⟩ :=
iSup_subtype
#align set.Union_subtype Set.iUnion_subtype
+-/
+#print Set.iInter_subtype /-
theorem iInter_subtype (p : α → Prop) (s : { x // p x } → Set β) :
(⋂ x : { x // p x }, s x) = ⋂ (x) (hx : p x), s ⟨x, hx⟩ :=
iInf_subtype
#align set.Inter_subtype Set.iInter_subtype
+-/
#print Set.biInter_empty /-
theorem biInter_empty (u : α → Set β) : (⋂ x ∈ (∅ : Set α), u x) = univ :=
@@ -1010,33 +1251,43 @@ theorem biInter_singleton (a : α) (s : α → Set β) : (⋂ x ∈ ({a} : Set
#align set.bInter_singleton Set.biInter_singleton
-/
+#print Set.biInter_union /-
theorem biInter_union (s t : Set α) (u : α → Set β) :
(⋂ x ∈ s ∪ t, u x) = (⋂ x ∈ s, u x) ∩ ⋂ x ∈ t, u x :=
iInf_union
#align set.bInter_union Set.biInter_union
+-/
+#print Set.biInter_insert /-
theorem biInter_insert (a : α) (s : Set α) (t : α → Set β) :
(⋂ x ∈ insert a s, t x) = t a ∩ ⋂ x ∈ s, t x := by simp
#align set.bInter_insert Set.biInter_insert
+-/
+#print Set.biInter_pair /-
-- TODO(Jeremy): another example of where an annotation is needed
theorem biInter_pair (a b : α) (s : α → Set β) : (⋂ x ∈ ({a, b} : Set α), s x) = s a ∩ s b := by
rw [bInter_insert, bInter_singleton]
#align set.bInter_pair Set.biInter_pair
+-/
+#print Set.biInter_inter /-
theorem biInter_inter {ι α : Type _} {s : Set ι} (hs : s.Nonempty) (f : ι → Set α) (t : Set α) :
(⋂ i ∈ s, f i ∩ t) = (⋂ i ∈ s, f i) ∩ t :=
by
haveI : Nonempty s := hs.to_subtype
simp [bInter_eq_Inter, ← Inter_inter]
#align set.bInter_inter Set.biInter_inter
+-/
+#print Set.inter_biInter /-
theorem inter_biInter {ι α : Type _} {s : Set ι} (hs : s.Nonempty) (f : ι → Set α) (t : Set α) :
(⋂ i ∈ s, t ∩ f i) = t ∩ ⋂ i ∈ s, f i :=
by
rw [inter_comm, ← bInter_inter hs]
simp [inter_comm]
#align set.inter_bInter Set.inter_biInter
+-/
#print Set.biUnion_empty /-
theorem biUnion_empty (s : α → Set β) : (⋃ x ∈ (∅ : Set α), s x) = ∅ :=
@@ -1063,54 +1314,72 @@ theorem biUnion_of_singleton (s : Set α) : (⋃ x ∈ s, {x}) = s :=
#align set.bUnion_of_singleton Set.biUnion_of_singleton
-/
+#print Set.biUnion_union /-
theorem biUnion_union (s t : Set α) (u : α → Set β) :
(⋃ x ∈ s ∪ t, u x) = (⋃ x ∈ s, u x) ∪ ⋃ x ∈ t, u x :=
iSup_union
#align set.bUnion_union Set.biUnion_union
+-/
+#print Set.iUnion_coe_set /-
@[simp]
theorem iUnion_coe_set {α β : Type _} (s : Set α) (f : s → Set β) :
(⋃ i, f i) = ⋃ i ∈ s, f ⟨i, ‹i ∈ s›⟩ :=
iUnion_subtype _ _
#align set.Union_coe_set Set.iUnion_coe_set
+-/
+#print Set.iInter_coe_set /-
@[simp]
theorem iInter_coe_set {α β : Type _} (s : Set α) (f : s → Set β) :
(⋂ i, f i) = ⋂ i ∈ s, f ⟨i, ‹i ∈ s›⟩ :=
iInter_subtype _ _
#align set.Inter_coe_set Set.iInter_coe_set
+-/
+#print Set.biUnion_insert /-
theorem biUnion_insert (a : α) (s : Set α) (t : α → Set β) :
(⋃ x ∈ insert a s, t x) = t a ∪ ⋃ x ∈ s, t x := by simp
#align set.bUnion_insert Set.biUnion_insert
+-/
+#print Set.biUnion_pair /-
theorem biUnion_pair (a b : α) (s : α → Set β) : (⋃ x ∈ ({a, b} : Set α), s x) = s a ∪ s b := by
simp
#align set.bUnion_pair Set.biUnion_pair
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.inter_iUnion₂ /-
theorem inter_iUnion₂ (s : Set α) (t : ∀ i, κ i → Set α) :
(s ∩ ⋃ (i) (j), t i j) = ⋃ (i) (j), s ∩ t i j := by simp only [inter_Union]
#align set.inter_Union₂ Set.inter_iUnion₂
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.iUnion₂_inter /-
theorem iUnion₂_inter (s : ∀ i, κ i → Set α) (t : Set α) :
(⋃ (i) (j), s i j) ∩ t = ⋃ (i) (j), s i j ∩ t := by simp_rw [Union_inter]
#align set.Union₂_inter Set.iUnion₂_inter
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.union_iInter₂ /-
theorem union_iInter₂ (s : Set α) (t : ∀ i, κ i → Set α) :
(s ∪ ⋂ (i) (j), t i j) = ⋂ (i) (j), s ∪ t i j := by simp_rw [union_Inter]
#align set.union_Inter₂ Set.union_iInter₂
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.iInter₂_union /-
theorem iInter₂_union (s : ∀ i, κ i → Set α) (t : Set α) :
(⋂ (i) (j), s i j) ∪ t = ⋂ (i) (j), s i j ∪ t := by simp_rw [Inter_union]
#align set.Inter₂_union Set.iInter₂_union
+-/
#print Set.mem_sUnion_of_mem /-
theorem mem_sUnion_of_mem {x : α} {t : Set α} {S : Set (Set α)} (hx : x ∈ t) (ht : t ∈ S) :
@@ -1225,10 +1494,12 @@ theorem sInter_eq_univ {S : Set (Set α)} : ⋂₀ S = univ ↔ ∀ s ∈ S, s =
#align set.sInter_eq_univ Set.sInter_eq_univ
-/
+#print Set.nonempty_sUnion /-
@[simp]
theorem nonempty_sUnion {S : Set (Set α)} : (⋃₀ S).Nonempty ↔ ∃ s ∈ S, Set.Nonempty s := by
simp [nonempty_iff_ne_empty]
#align set.nonempty_sUnion Set.nonempty_sUnion
+-/
#print Set.Nonempty.of_sUnion /-
theorem Nonempty.of_sUnion {s : Set (Set α)} (h : (⋃₀ s).Nonempty) : s.Nonempty :=
@@ -1243,41 +1514,57 @@ theorem Nonempty.of_sUnion_eq_univ [Nonempty α] {s : Set (Set α)} (h : ⋃₀
#align set.nonempty.of_sUnion_eq_univ Set.Nonempty.of_sUnion_eq_univ
-/
+#print Set.sUnion_union /-
theorem sUnion_union (S T : Set (Set α)) : ⋃₀ (S ∪ T) = ⋃₀ S ∪ ⋃₀ T :=
sSup_union
#align set.sUnion_union Set.sUnion_union
+-/
+#print Set.sInter_union /-
theorem sInter_union (S T : Set (Set α)) : ⋂₀ (S ∪ T) = ⋂₀ S ∩ ⋂₀ T :=
sInf_union
#align set.sInter_union Set.sInter_union
+-/
+#print Set.sUnion_insert /-
@[simp]
theorem sUnion_insert (s : Set α) (T : Set (Set α)) : ⋃₀ insert s T = s ∪ ⋃₀ T :=
sSup_insert
#align set.sUnion_insert Set.sUnion_insert
+-/
+#print Set.sInter_insert /-
@[simp]
theorem sInter_insert (s : Set α) (T : Set (Set α)) : ⋂₀ insert s T = s ∩ ⋂₀ T :=
sInf_insert
#align set.sInter_insert Set.sInter_insert
+-/
+#print Set.sUnion_diff_singleton_empty /-
@[simp]
theorem sUnion_diff_singleton_empty (s : Set (Set α)) : ⋃₀ (s \ {∅}) = ⋃₀ s :=
sSup_diff_singleton_bot s
#align set.sUnion_diff_singleton_empty Set.sUnion_diff_singleton_empty
+-/
+#print Set.sInter_diff_singleton_univ /-
@[simp]
theorem sInter_diff_singleton_univ (s : Set (Set α)) : ⋂₀ (s \ {univ}) = ⋂₀ s :=
sInf_diff_singleton_top s
#align set.sInter_diff_singleton_univ Set.sInter_diff_singleton_univ
+-/
+#print Set.sUnion_pair /-
theorem sUnion_pair (s t : Set α) : ⋃₀ {s, t} = s ∪ t :=
sSup_pair
#align set.sUnion_pair Set.sUnion_pair
+-/
+#print Set.sInter_pair /-
theorem sInter_pair (s t : Set α) : ⋂₀ {s, t} = s ∩ t :=
sInf_pair
#align set.sInter_pair Set.sInter_pair
+-/
#print Set.sUnion_image /-
@[simp]
@@ -1293,59 +1580,79 @@ theorem sInter_image (f : α → Set β) (s : Set α) : ⋂₀ (f '' s) = ⋂ x
#align set.sInter_image Set.sInter_image
-/
+#print Set.sUnion_range /-
@[simp]
theorem sUnion_range (f : ι → Set β) : ⋃₀ range f = ⋃ x, f x :=
rfl
#align set.sUnion_range Set.sUnion_range
+-/
+#print Set.sInter_range /-
@[simp]
theorem sInter_range (f : ι → Set β) : ⋂₀ range f = ⋂ x, f x :=
rfl
#align set.sInter_range Set.sInter_range
+-/
+#print Set.iUnion_eq_univ_iff /-
theorem iUnion_eq_univ_iff {f : ι → Set α} : (⋃ i, f i) = univ ↔ ∀ x, ∃ i, x ∈ f i := by
simp only [eq_univ_iff_forall, mem_Union]
#align set.Union_eq_univ_iff Set.iUnion_eq_univ_iff
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.iUnion₂_eq_univ_iff /-
theorem iUnion₂_eq_univ_iff {s : ∀ i, κ i → Set α} :
(⋃ (i) (j), s i j) = univ ↔ ∀ a, ∃ i j, a ∈ s i j := by simp only [Union_eq_univ_iff, mem_Union]
#align set.Union₂_eq_univ_iff Set.iUnion₂_eq_univ_iff
+-/
+#print Set.sUnion_eq_univ_iff /-
theorem sUnion_eq_univ_iff {c : Set (Set α)} : ⋃₀ c = univ ↔ ∀ a, ∃ b ∈ c, a ∈ b := by
simp only [eq_univ_iff_forall, mem_sUnion]
#align set.sUnion_eq_univ_iff Set.sUnion_eq_univ_iff
+-/
+#print Set.iInter_eq_empty_iff /-
-- classical
theorem iInter_eq_empty_iff {f : ι → Set α} : (⋂ i, f i) = ∅ ↔ ∀ x, ∃ i, x ∉ f i := by
simp [Set.eq_empty_iff_forall_not_mem]
#align set.Inter_eq_empty_iff Set.iInter_eq_empty_iff
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.iInter₂_eq_empty_iff /-
-- classical
theorem iInter₂_eq_empty_iff {s : ∀ i, κ i → Set α} :
(⋂ (i) (j), s i j) = ∅ ↔ ∀ a, ∃ i j, a ∉ s i j := by
simp only [eq_empty_iff_forall_not_mem, mem_Inter, not_forall]
#align set.Inter₂_eq_empty_iff Set.iInter₂_eq_empty_iff
+-/
+#print Set.sInter_eq_empty_iff /-
-- classical
theorem sInter_eq_empty_iff {c : Set (Set α)} : ⋂₀ c = ∅ ↔ ∀ a, ∃ b ∈ c, a ∉ b := by
simp [Set.eq_empty_iff_forall_not_mem]
#align set.sInter_eq_empty_iff Set.sInter_eq_empty_iff
+-/
+#print Set.nonempty_iInter /-
-- classical
@[simp]
theorem nonempty_iInter {f : ι → Set α} : (⋂ i, f i).Nonempty ↔ ∃ x, ∀ i, x ∈ f i := by
simp [nonempty_iff_ne_empty, Inter_eq_empty_iff]
#align set.nonempty_Inter Set.nonempty_iInter
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.nonempty_iInter₂ /-
-- classical
@[simp]
theorem nonempty_iInter₂ {s : ∀ i, κ i → Set α} :
(⋂ (i) (j), s i j).Nonempty ↔ ∃ a, ∀ i j, a ∈ s i j := by
simp [nonempty_iff_ne_empty, Inter_eq_empty_iff]
#align set.nonempty_Inter₂ Set.nonempty_iInter₂
+-/
#print Set.nonempty_sInter /-
-- classical
@@ -1355,36 +1662,48 @@ theorem nonempty_sInter {c : Set (Set α)} : (⋂₀ c).Nonempty ↔ ∃ a, ∀
#align set.nonempty_sInter Set.nonempty_sInter
-/
+#print Set.compl_sUnion /-
-- classical
theorem compl_sUnion (S : Set (Set α)) : (⋃₀ S)ᶜ = ⋂₀ (compl '' S) :=
ext fun x => by simp
#align set.compl_sUnion Set.compl_sUnion
+-/
+#print Set.sUnion_eq_compl_sInter_compl /-
-- classical
theorem sUnion_eq_compl_sInter_compl (S : Set (Set α)) : ⋃₀ S = (⋂₀ (compl '' S))ᶜ := by
rw [← compl_compl (⋃₀ S), compl_sUnion]
#align set.sUnion_eq_compl_sInter_compl Set.sUnion_eq_compl_sInter_compl
+-/
+#print Set.compl_sInter /-
-- classical
theorem compl_sInter (S : Set (Set α)) : (⋂₀ S)ᶜ = ⋃₀ (compl '' S) := by
rw [sUnion_eq_compl_sInter_compl, compl_compl_image]
#align set.compl_sInter Set.compl_sInter
+-/
+#print Set.sInter_eq_compl_sUnion_compl /-
-- classical
theorem sInter_eq_compl_sUnion_compl (S : Set (Set α)) : ⋂₀ S = (⋃₀ (compl '' S))ᶜ := by
rw [← compl_compl (⋂₀ S), compl_sInter]
#align set.sInter_eq_compl_sUnion_compl Set.sInter_eq_compl_sUnion_compl
+-/
+#print Set.inter_empty_of_inter_sUnion_empty /-
theorem inter_empty_of_inter_sUnion_empty {s t : Set α} {S : Set (Set α)} (hs : t ∈ S)
(h : s ∩ ⋃₀ S = ∅) : s ∩ t = ∅ :=
eq_empty_of_subset_empty <| by
rw [← h] <;> exact inter_subset_inter_right _ (subset_sUnion_of_mem hs)
#align set.inter_empty_of_inter_sUnion_empty Set.inter_empty_of_inter_sUnion_empty
+-/
+#print Set.range_sigma_eq_iUnion_range /-
theorem range_sigma_eq_iUnion_range {γ : α → Type _} (f : Sigma γ → β) :
range f = ⋃ a, range fun b => f ⟨a, b⟩ :=
Set.ext <| by simp
#align set.range_sigma_eq_Union_range Set.range_sigma_eq_iUnion_range
+-/
#print Set.iUnion_eq_range_sigma /-
theorem iUnion_eq_range_sigma (s : α → Set β) : (⋃ i, s i) = range fun a : Σ i, s i => a.2 := by
@@ -1392,10 +1711,13 @@ theorem iUnion_eq_range_sigma (s : α → Set β) : (⋃ i, s i) = range fun a :
#align set.Union_eq_range_sigma Set.iUnion_eq_range_sigma
-/
+#print Set.iUnion_eq_range_psigma /-
theorem iUnion_eq_range_psigma (s : ι → Set β) : (⋃ i, s i) = range fun a : Σ' i, s i => a.2 := by
simp [Set.ext_iff]
#align set.Union_eq_range_psigma Set.iUnion_eq_range_psigma
+-/
+#print Set.iUnion_image_preimage_sigma_mk_eq_self /-
theorem iUnion_image_preimage_sigma_mk_eq_self {ι : Type _} {σ : ι → Type _} (s : Set (Sigma σ)) :
(⋃ i, Sigma.mk i '' (Sigma.mk i ⁻¹' s)) = s :=
by
@@ -1405,6 +1727,7 @@ theorem iUnion_image_preimage_sigma_mk_eq_self {ι : Type _} {σ : ι → Type _
· rintro ⟨i, a, h, rfl⟩; exact h
· intro h; cases' x with i a; exact ⟨i, a, h, rfl⟩
#align set.Union_image_preimage_sigma_mk_eq_self Set.iUnion_image_preimage_sigma_mk_eq_self
+-/
#print Set.Sigma.univ /-
theorem Sigma.univ (X : α → Type _) : (Set.univ : Set (Σ a, X a)) = ⋃ a, range (Sigma.mk a) :=
@@ -1419,14 +1742,18 @@ theorem sUnion_mono {s t : Set (Set α)} (h : s ⊆ t) : ⋃₀ s ⊆ ⋃₀ t :
#align set.sUnion_mono Set.sUnion_mono
-/
+#print Set.iUnion_subset_iUnion_const /-
theorem iUnion_subset_iUnion_const {s : Set α} (h : ι → ι₂) : (⋃ i : ι, s) ⊆ ⋃ j : ι₂, s :=
@iSup_const_mono (Set α) ι ι₂ _ s h
#align set.Union_subset_Union_const Set.iUnion_subset_iUnion_const
+-/
+#print Set.iUnion_singleton_eq_range /-
@[simp]
theorem iUnion_singleton_eq_range {α β : Type _} (f : α → β) : (⋃ x : α, {f x}) = range f := by
ext x; simp [@eq_comm _ x]
#align set.Union_singleton_eq_range Set.iUnion_singleton_eq_range
+-/
#print Set.iUnion_of_singleton /-
theorem iUnion_of_singleton (α : Type _) : (⋃ x, {x} : Set α) = univ := by simp
@@ -1476,42 +1803,59 @@ theorem iInter_of_empty [IsEmpty ι] (s : ι → Set α) : (⋂ i, s i) = univ :
#align set.Inter_of_empty Set.iInter_of_empty
-/
+#print Set.union_eq_iUnion /-
theorem union_eq_iUnion {s₁ s₂ : Set α} : s₁ ∪ s₂ = ⋃ b : Bool, cond b s₁ s₂ :=
sup_eq_iSup s₁ s₂
#align set.union_eq_Union Set.union_eq_iUnion
+-/
+#print Set.inter_eq_iInter /-
theorem inter_eq_iInter {s₁ s₂ : Set α} : s₁ ∩ s₂ = ⋂ b : Bool, cond b s₁ s₂ :=
inf_eq_iInf s₁ s₂
#align set.inter_eq_Inter Set.inter_eq_iInter
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Set.sInter_union_sInter /-
theorem sInter_union_sInter {S T : Set (Set α)} :
⋂₀ S ∪ ⋂₀ T = ⋂ p ∈ S ×ˢ T, (p : Set α × Set α).1 ∪ p.2 :=
sInf_sup_sInf
#align set.sInter_union_sInter Set.sInter_union_sInter
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Set.sUnion_inter_sUnion /-
theorem sUnion_inter_sUnion {s t : Set (Set α)} :
⋃₀ s ∩ ⋃₀ t = ⋃ p ∈ s ×ˢ t, (p : Set α × Set α).1 ∩ p.2 :=
sSup_inf_sSup
#align set.sUnion_inter_sUnion Set.sUnion_inter_sUnion
+-/
+#print Set.biUnion_iUnion /-
theorem biUnion_iUnion (s : ι → Set α) (t : α → Set β) :
(⋃ x ∈ ⋃ i, s i, t x) = ⋃ (i) (x ∈ s i), t x := by simp [@Union_comm _ ι]
#align set.bUnion_Union Set.biUnion_iUnion
+-/
+#print Set.biInter_iUnion /-
theorem biInter_iUnion (s : ι → Set α) (t : α → Set β) :
(⋂ x ∈ ⋃ i, s i, t x) = ⋂ (i) (x ∈ s i), t x := by simp [@Inter_comm _ ι]
#align set.bInter_Union Set.biInter_iUnion
+-/
+#print Set.sUnion_iUnion /-
theorem sUnion_iUnion (s : ι → Set (Set α)) : (⋃₀ ⋃ i, s i) = ⋃ i, ⋃₀ s i := by
simp only [sUnion_eq_bUnion, bUnion_Union]
#align set.sUnion_Union Set.sUnion_iUnion
+-/
+#print Set.sInter_iUnion /-
theorem sInter_iUnion (s : ι → Set (Set α)) : (⋂₀ ⋃ i, s i) = ⋂ i, ⋂₀ s i := by
simp only [sInter_eq_bInter, bInter_Union]
#align set.sInter_Union Set.sInter_iUnion
+-/
+#print Set.iUnion_range_eq_sUnion /-
theorem iUnion_range_eq_sUnion {α β : Type _} (C : Set (Set α)) {f : ∀ s : C, β → s}
(hf : ∀ s : C, Surjective (f s)) : (⋃ y : β, range fun s : C => (f s y).val) = ⋃₀ C :=
by
@@ -1520,7 +1864,9 @@ theorem iUnion_range_eq_sUnion {α β : Type _} (C : Set (Set α)) {f : ∀ s :
· rintro ⟨s, hs, hx⟩; cases' hf ⟨s, hs⟩ ⟨x, hx⟩ with y hy; refine' ⟨_, ⟨y, rfl⟩, ⟨s, hs⟩, _⟩
exact congr_arg Subtype.val hy
#align set.Union_range_eq_sUnion Set.iUnion_range_eq_sUnion
+-/
+#print Set.iUnion_range_eq_iUnion /-
theorem iUnion_range_eq_iUnion (C : ι → Set α) {f : ∀ x : ι, β → C x}
(hf : ∀ x : ι, Surjective (f x)) : (⋃ y : β, range fun x : ι => (f x y).val) = ⋃ x, C x :=
by
@@ -1529,99 +1875,134 @@ theorem iUnion_range_eq_iUnion (C : ι → Set α) {f : ∀ x : ι, β → C x}
· rintro ⟨i, hx⟩; cases' hf i ⟨x, hx⟩ with y hy
exact ⟨y, i, congr_arg Subtype.val hy⟩
#align set.Union_range_eq_Union Set.iUnion_range_eq_iUnion
+-/
+#print Set.union_distrib_iInter_left /-
theorem union_distrib_iInter_left (s : ι → Set α) (t : Set α) : (t ∪ ⋂ i, s i) = ⋂ i, t ∪ s i :=
sup_iInf_eq _ _
#align set.union_distrib_Inter_left Set.union_distrib_iInter_left
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.union_distrib_iInter₂_left /-
theorem union_distrib_iInter₂_left (s : Set α) (t : ∀ i, κ i → Set α) :
(s ∪ ⋂ (i) (j), t i j) = ⋂ (i) (j), s ∪ t i j := by simp_rw [union_distrib_Inter_left]
#align set.union_distrib_Inter₂_left Set.union_distrib_iInter₂_left
+-/
+#print Set.union_distrib_iInter_right /-
theorem union_distrib_iInter_right (s : ι → Set α) (t : Set α) : (⋂ i, s i) ∪ t = ⋂ i, s i ∪ t :=
iInf_sup_eq _ _
#align set.union_distrib_Inter_right Set.union_distrib_iInter_right
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.union_distrib_iInter₂_right /-
theorem union_distrib_iInter₂_right (s : ∀ i, κ i → Set α) (t : Set α) :
(⋂ (i) (j), s i j) ∪ t = ⋂ (i) (j), s i j ∪ t := by simp_rw [union_distrib_Inter_right]
#align set.union_distrib_Inter₂_right Set.union_distrib_iInter₂_right
+-/
section Function
/-! ### `maps_to` -/
+#print Set.mapsTo_sUnion /-
theorem mapsTo_sUnion {S : Set (Set α)} {t : Set β} {f : α → β} (H : ∀ s ∈ S, MapsTo f s t) :
MapsTo f (⋃₀ S) t := fun x ⟨s, hs, hx⟩ => H s hs hx
#align set.maps_to_sUnion Set.mapsTo_sUnion
+-/
+#print Set.mapsTo_iUnion /-
theorem mapsTo_iUnion {s : ι → Set α} {t : Set β} {f : α → β} (H : ∀ i, MapsTo f (s i) t) :
MapsTo f (⋃ i, s i) t :=
mapsTo_sUnion <| forall_range_iff.2 H
#align set.maps_to_Union Set.mapsTo_iUnion
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.mapsTo_iUnion₂ /-
theorem mapsTo_iUnion₂ {s : ∀ i, κ i → Set α} {t : Set β} {f : α → β}
(H : ∀ i j, MapsTo f (s i j) t) : MapsTo f (⋃ (i) (j), s i j) t :=
mapsTo_iUnion fun i => mapsTo_iUnion (H i)
#align set.maps_to_Union₂ Set.mapsTo_iUnion₂
+-/
+#print Set.mapsTo_iUnion_iUnion /-
theorem mapsTo_iUnion_iUnion {s : ι → Set α} {t : ι → Set β} {f : α → β}
(H : ∀ i, MapsTo f (s i) (t i)) : MapsTo f (⋃ i, s i) (⋃ i, t i) :=
mapsTo_iUnion fun i => (H i).mono (Subset.refl _) (subset_iUnion t i)
#align set.maps_to_Union_Union Set.mapsTo_iUnion_iUnion
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.mapsTo_iUnion₂_iUnion₂ /-
theorem mapsTo_iUnion₂_iUnion₂ {s : ∀ i, κ i → Set α} {t : ∀ i, κ i → Set β} {f : α → β}
(H : ∀ i j, MapsTo f (s i j) (t i j)) : MapsTo f (⋃ (i) (j), s i j) (⋃ (i) (j), t i j) :=
mapsTo_iUnion_iUnion fun i => mapsTo_iUnion_iUnion (H i)
#align set.maps_to_Union₂_Union₂ Set.mapsTo_iUnion₂_iUnion₂
+-/
+#print Set.mapsTo_sInter /-
theorem mapsTo_sInter {s : Set α} {T : Set (Set β)} {f : α → β} (H : ∀ t ∈ T, MapsTo f s t) :
MapsTo f s (⋂₀ T) := fun x hx t ht => H t ht hx
#align set.maps_to_sInter Set.mapsTo_sInter
+-/
+#print Set.mapsTo_iInter /-
theorem mapsTo_iInter {s : Set α} {t : ι → Set β} {f : α → β} (H : ∀ i, MapsTo f s (t i)) :
MapsTo f s (⋂ i, t i) := fun x hx => mem_iInter.2 fun i => H i hx
#align set.maps_to_Inter Set.mapsTo_iInter
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.mapsTo_iInter₂ /-
theorem mapsTo_iInter₂ {s : Set α} {t : ∀ i, κ i → Set β} {f : α → β}
(H : ∀ i j, MapsTo f s (t i j)) : MapsTo f s (⋂ (i) (j), t i j) :=
mapsTo_iInter fun i => mapsTo_iInter (H i)
#align set.maps_to_Inter₂ Set.mapsTo_iInter₂
+-/
+#print Set.mapsTo_iInter_iInter /-
theorem mapsTo_iInter_iInter {s : ι → Set α} {t : ι → Set β} {f : α → β}
(H : ∀ i, MapsTo f (s i) (t i)) : MapsTo f (⋂ i, s i) (⋂ i, t i) :=
mapsTo_iInter fun i => (H i).mono (iInter_subset s i) (Subset.refl _)
#align set.maps_to_Inter_Inter Set.mapsTo_iInter_iInter
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.mapsTo_iInter₂_iInter₂ /-
theorem mapsTo_iInter₂_iInter₂ {s : ∀ i, κ i → Set α} {t : ∀ i, κ i → Set β} {f : α → β}
(H : ∀ i j, MapsTo f (s i j) (t i j)) : MapsTo f (⋂ (i) (j), s i j) (⋂ (i) (j), t i j) :=
mapsTo_iInter_iInter fun i => mapsTo_iInter_iInter (H i)
#align set.maps_to_Inter₂_Inter₂ Set.mapsTo_iInter₂_iInter₂
+-/
+#print Set.image_iInter_subset /-
theorem image_iInter_subset (s : ι → Set α) (f : α → β) : (f '' ⋂ i, s i) ⊆ ⋂ i, f '' s i :=
(mapsTo_iInter_iInter fun i => mapsTo_image f (s i)).image_subset
#align set.image_Inter_subset Set.image_iInter_subset
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.image_iInter₂_subset /-
theorem image_iInter₂_subset (s : ∀ i, κ i → Set α) (f : α → β) :
(f '' ⋂ (i) (j), s i j) ⊆ ⋂ (i) (j), f '' s i j :=
(mapsTo_iInter₂_iInter₂ fun i hi => mapsTo_image f (s i hi)).image_subset
#align set.image_Inter₂_subset Set.image_iInter₂_subset
+-/
+#print Set.image_sInter_subset /-
theorem image_sInter_subset (S : Set (Set α)) (f : α → β) : f '' ⋂₀ S ⊆ ⋂ s ∈ S, f '' s := by
rw [sInter_eq_bInter]; apply image_Inter₂_subset
#align set.image_sInter_subset Set.image_sInter_subset
+-/
/-! ### `restrict_preimage` -/
@@ -1632,8 +2013,7 @@ open Function
variable (s : Set β) {f : α → β} {U : ι → Set β} (hU : iUnion U = univ)
-include hU
-
+#print Set.injective_iff_injective_of_iUnion_eq_univ /-
theorem injective_iff_injective_of_iUnion_eq_univ :
Injective f ↔ ∀ i, Injective ((U i).restrictPreimage f) :=
by
@@ -1641,7 +2021,9 @@ theorem injective_iff_injective_of_iUnion_eq_univ :
obtain ⟨i, hi⟩ := set.mem_Union.mp (show f x ∈ Set.iUnion U by rw [hU]; triv)
injection @H i ⟨x, hi⟩ ⟨y, show f y ∈ U i from e ▸ hi⟩ (Subtype.ext e)
#align set.injective_iff_injective_of_Union_eq_univ Set.injective_iff_injective_of_iUnion_eq_univ
+-/
+#print Set.surjective_iff_surjective_of_iUnion_eq_univ /-
theorem surjective_iff_surjective_of_iUnion_eq_univ :
Surjective f ↔ ∀ i, Surjective ((U i).restrictPreimage f) :=
by
@@ -1649,18 +2031,22 @@ theorem surjective_iff_surjective_of_iUnion_eq_univ :
obtain ⟨i, hi⟩ := set.mem_Union.mp (show x ∈ Set.iUnion U by rw [hU]; triv)
exact ⟨_, congr_arg Subtype.val (H i ⟨x, hi⟩).choose_spec⟩
#align set.surjective_iff_surjective_of_Union_eq_univ Set.surjective_iff_surjective_of_iUnion_eq_univ
+-/
+#print Set.bijective_iff_bijective_of_iUnion_eq_univ /-
theorem bijective_iff_bijective_of_iUnion_eq_univ :
Bijective f ↔ ∀ i, Bijective ((U i).restrictPreimage f) := by
simp_rw [bijective, forall_and, injective_iff_injective_of_Union_eq_univ hU,
surjective_iff_surjective_of_Union_eq_univ hU]
#align set.bijective_iff_bijective_of_Union_eq_univ Set.bijective_iff_bijective_of_iUnion_eq_univ
+-/
end
/-! ### `inj_on` -/
+#print Set.InjOn.image_iInter_eq /-
theorem InjOn.image_iInter_eq [Nonempty ι] {s : ι → Set α} {f : α → β} (h : InjOn f (⋃ i, s i)) :
(f '' ⋂ i, s i) = ⋂ i, f '' s i := by
inhabit ι
@@ -1673,10 +2059,12 @@ theorem InjOn.image_iInter_eq [Nonempty ι] {s : ι → Set α} {f : α → β}
apply h (hx _) (hx _)
simp only [hy]
#align set.inj_on.image_Inter_eq Set.InjOn.image_iInter_eq
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i hi) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i hi) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i hi) -/
+#print Set.InjOn.image_biInter_eq /-
theorem InjOn.image_biInter_eq {p : ι → Prop} {s : ∀ (i) (hi : p i), Set α} (hp : ∃ i, p i)
{f : α → β} (h : InjOn f (⋃ (i) (hi), s i hi)) :
(f '' ⋂ (i) (hi), s i hi) = ⋂ (i) (hi), f '' s i hi :=
@@ -1686,7 +2074,9 @@ theorem InjOn.image_biInter_eq {p : ι → Prop} {s : ∀ (i) (hi : p i), Set α
apply inj_on.image_Inter_eq
simpa only [Union, iSup_subtype'] using h
#align set.inj_on.image_bInter_eq Set.InjOn.image_biInter_eq
+-/
+#print Set.image_iInter /-
theorem image_iInter {f : α → β} (hf : Bijective f) (s : ι → Set α) :
(f '' ⋂ i, s i) = ⋂ i, f '' s i :=
by
@@ -1694,13 +2084,17 @@ theorem image_iInter {f : α → β} (hf : Bijective f) (s : ι → Set α) :
· simp_rw [Inter_of_empty, image_univ_of_surjective hf.surjective]
· exact (hf.injective.inj_on _).image_iInter_eq
#align set.image_Inter Set.image_iInter
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.image_iInter₂ /-
theorem image_iInter₂ {f : α → β} (hf : Bijective f) (s : ∀ i, κ i → Set α) :
(f '' ⋂ (i) (j), s i j) = ⋂ (i) (j), f '' s i j := by simp_rw [image_Inter hf]
#align set.image_Inter₂ Set.image_iInter₂
+-/
+#print Set.inj_on_iUnion_of_directed /-
theorem inj_on_iUnion_of_directed {s : ι → Set α} (hs : Directed (· ⊆ ·) s) {f : α → β}
(hf : ∀ i, InjOn f (s i)) : InjOn f (⋃ i, s i) :=
by
@@ -1710,37 +2104,49 @@ theorem inj_on_iUnion_of_directed {s : ι → Set α} (hs : Directed (· ⊆ ·)
rcases hs i j with ⟨k, hi, hj⟩
exact hf k (hi hx) (hj hy) hxy
#align set.inj_on_Union_of_directed Set.inj_on_iUnion_of_directed
+-/
/-! ### `surj_on` -/
+#print Set.surjOn_sUnion /-
theorem surjOn_sUnion {s : Set α} {T : Set (Set β)} {f : α → β} (H : ∀ t ∈ T, SurjOn f s t) :
SurjOn f s (⋃₀ T) := fun x ⟨t, ht, hx⟩ => H t ht hx
#align set.surj_on_sUnion Set.surjOn_sUnion
+-/
+#print Set.surjOn_iUnion /-
theorem surjOn_iUnion {s : Set α} {t : ι → Set β} {f : α → β} (H : ∀ i, SurjOn f s (t i)) :
SurjOn f s (⋃ i, t i) :=
surjOn_sUnion <| forall_range_iff.2 H
#align set.surj_on_Union Set.surjOn_iUnion
+-/
+#print Set.surjOn_iUnion_iUnion /-
theorem surjOn_iUnion_iUnion {s : ι → Set α} {t : ι → Set β} {f : α → β}
(H : ∀ i, SurjOn f (s i) (t i)) : SurjOn f (⋃ i, s i) (⋃ i, t i) :=
surjOn_iUnion fun i => (H i).mono (subset_iUnion _ _) (Subset.refl _)
#align set.surj_on_Union_Union Set.surjOn_iUnion_iUnion
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.surjOn_iUnion₂ /-
theorem surjOn_iUnion₂ {s : Set α} {t : ∀ i, κ i → Set β} {f : α → β}
(H : ∀ i j, SurjOn f s (t i j)) : SurjOn f s (⋃ (i) (j), t i j) :=
surjOn_iUnion fun i => surjOn_iUnion (H i)
#align set.surj_on_Union₂ Set.surjOn_iUnion₂
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.surjOn_iUnion₂_iUnion₂ /-
theorem surjOn_iUnion₂_iUnion₂ {s : ∀ i, κ i → Set α} {t : ∀ i, κ i → Set β} {f : α → β}
(H : ∀ i j, SurjOn f (s i j) (t i j)) : SurjOn f (⋃ (i) (j), s i j) (⋃ (i) (j), t i j) :=
surjOn_iUnion_iUnion fun i => surjOn_iUnion_iUnion (H i)
#align set.surj_on_Union₂_Union₂ Set.surjOn_iUnion₂_iUnion₂
+-/
+#print Set.surjOn_iInter /-
theorem surjOn_iInter [hi : Nonempty ι] {s : ι → Set α} {t : Set β} {f : α → β}
(H : ∀ i, SurjOn f (s i) t) (Hinj : InjOn f (⋃ i, s i)) : SurjOn f (⋂ i, s i) t :=
by
@@ -1748,36 +2154,47 @@ theorem surjOn_iInter [hi : Nonempty ι] {s : ι → Set α} {t : Set β} {f :
rw [Hinj.image_Inter_eq, mem_Inter]
exact fun i => H i hy
#align set.surj_on_Inter Set.surjOn_iInter
+-/
+#print Set.surjOn_iInter_iInter /-
theorem surjOn_iInter_iInter [hi : Nonempty ι] {s : ι → Set α} {t : ι → Set β} {f : α → β}
(H : ∀ i, SurjOn f (s i) (t i)) (Hinj : InjOn f (⋃ i, s i)) : SurjOn f (⋂ i, s i) (⋂ i, t i) :=
surjOn_iInter (fun i => (H i).mono (Subset.refl _) (iInter_subset _ _)) Hinj
#align set.surj_on_Inter_Inter Set.surjOn_iInter_iInter
+-/
/-! ### `bij_on` -/
+#print Set.bijOn_iUnion /-
theorem bijOn_iUnion {s : ι → Set α} {t : ι → Set β} {f : α → β} (H : ∀ i, BijOn f (s i) (t i))
(Hinj : InjOn f (⋃ i, s i)) : BijOn f (⋃ i, s i) (⋃ i, t i) :=
⟨mapsTo_iUnion_iUnion fun i => (H i).MapsTo, Hinj, surjOn_iUnion_iUnion fun i => (H i).SurjOn⟩
#align set.bij_on_Union Set.bijOn_iUnion
+-/
+#print Set.bijOn_iInter /-
theorem bijOn_iInter [hi : Nonempty ι] {s : ι → Set α} {t : ι → Set β} {f : α → β}
(H : ∀ i, BijOn f (s i) (t i)) (Hinj : InjOn f (⋃ i, s i)) : BijOn f (⋂ i, s i) (⋂ i, t i) :=
⟨mapsTo_iInter_iInter fun i => (H i).MapsTo,
hi.elim fun i => (H i).InjOn.mono (iInter_subset _ _),
surjOn_iInter_iInter (fun i => (H i).SurjOn) Hinj⟩
#align set.bij_on_Inter Set.bijOn_iInter
+-/
+#print Set.bijOn_iUnion_of_directed /-
theorem bijOn_iUnion_of_directed {s : ι → Set α} (hs : Directed (· ⊆ ·) s) {t : ι → Set β}
{f : α → β} (H : ∀ i, BijOn f (s i) (t i)) : BijOn f (⋃ i, s i) (⋃ i, t i) :=
bijOn_iUnion H <| inj_on_iUnion_of_directed hs fun i => (H i).InjOn
#align set.bij_on_Union_of_directed Set.bijOn_iUnion_of_directed
+-/
+#print Set.bijOn_iInter_of_directed /-
theorem bijOn_iInter_of_directed [Nonempty ι] {s : ι → Set α} (hs : Directed (· ⊆ ·) s)
{t : ι → Set β} {f : α → β} (H : ∀ i, BijOn f (s i) (t i)) : BijOn f (⋂ i, s i) (⋂ i, t i) :=
bijOn_iInter H <| inj_on_iUnion_of_directed hs fun i => (H i).InjOn
#align set.bij_on_Inter_of_directed Set.bijOn_iInter_of_directed
+-/
end Function
@@ -1786,17 +2203,21 @@ end Function
section Image
+#print Set.image_iUnion /-
theorem image_iUnion {f : α → β} {s : ι → Set α} : (f '' ⋃ i, s i) = ⋃ i, f '' s i :=
by
ext1 x
simp [image, ← exists_and_right, @exists_swap α]
#align set.image_Union Set.image_iUnion
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.image_iUnion₂ /-
theorem image_iUnion₂ (f : α → β) (s : ∀ i, κ i → Set α) :
(f '' ⋃ (i) (j), s i j) = ⋃ (i) (j), f '' s i j := by simp_rw [image_Union]
#align set.image_Union₂ Set.image_iUnion₂
+-/
#print Set.univ_subtype /-
theorem univ_subtype {p : α → Prop} : (univ : Set (Subtype p)) = ⋃ (x) (h : p x), {⟨x, h⟩} :=
@@ -1810,57 +2231,77 @@ theorem range_eq_iUnion {ι} (f : ι → α) : range f = ⋃ i, {f i} :=
#align set.range_eq_Union Set.range_eq_iUnion
-/
+#print Set.image_eq_iUnion /-
theorem image_eq_iUnion (f : α → β) (s : Set α) : f '' s = ⋃ i ∈ s, {f i} :=
Set.ext fun b => by simp [@eq_comm β b]
#align set.image_eq_Union Set.image_eq_iUnion
+-/
+#print Set.biUnion_range /-
theorem biUnion_range {f : ι → α} {g : α → Set β} : (⋃ x ∈ range f, g x) = ⋃ y, g (f y) :=
iSup_range
#align set.bUnion_range Set.biUnion_range
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (x y) -/
+#print Set.iUnion_iUnion_eq' /-
@[simp]
theorem iUnion_iUnion_eq' {f : ι → α} {g : α → Set β} :
(⋃ (x) (y) (h : f y = x), g x) = ⋃ y, g (f y) := by simpa using bUnion_range
#align set.Union_Union_eq' Set.iUnion_iUnion_eq'
+-/
+#print Set.biInter_range /-
theorem biInter_range {f : ι → α} {g : α → Set β} : (⋂ x ∈ range f, g x) = ⋂ y, g (f y) :=
iInf_range
#align set.bInter_range Set.biInter_range
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (x y) -/
+#print Set.iInter_iInter_eq' /-
@[simp]
theorem iInter_iInter_eq' {f : ι → α} {g : α → Set β} :
(⋂ (x) (y) (h : f y = x), g x) = ⋂ y, g (f y) := by simpa using bInter_range
#align set.Inter_Inter_eq' Set.iInter_iInter_eq'
+-/
variable {s : Set γ} {f : γ → α} {g : α → Set β}
+#print Set.biUnion_image /-
theorem biUnion_image : (⋃ x ∈ f '' s, g x) = ⋃ y ∈ s, g (f y) :=
iSup_image
#align set.bUnion_image Set.biUnion_image
+-/
+#print Set.biInter_image /-
theorem biInter_image : (⋂ x ∈ f '' s, g x) = ⋂ y ∈ s, g (f y) :=
iInf_image
#align set.bInter_image Set.biInter_image
+-/
end Image
section Preimage
+#print Set.monotone_preimage /-
theorem monotone_preimage {f : α → β} : Monotone (preimage f) := fun a b h => preimage_mono h
#align set.monotone_preimage Set.monotone_preimage
+-/
+#print Set.preimage_iUnion /-
@[simp]
theorem preimage_iUnion {f : α → β} {s : ι → Set β} : (f ⁻¹' ⋃ i, s i) = ⋃ i, f ⁻¹' s i :=
Set.ext <| by simp [preimage]
#align set.preimage_Union Set.preimage_iUnion
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.preimage_iUnion₂ /-
theorem preimage_iUnion₂ {f : α → β} {s : ∀ i, κ i → Set β} :
(f ⁻¹' ⋃ (i) (j), s i j) = ⋃ (i) (j), f ⁻¹' s i j := by simp_rw [preimage_Union]
#align set.preimage_Union₂ Set.preimage_iUnion₂
+-/
#print Set.preimage_sUnion /-
@[simp]
@@ -1869,15 +2310,19 @@ theorem preimage_sUnion {f : α → β} {s : Set (Set β)} : f ⁻¹' ⋃₀ s =
#align set.preimage_sUnion Set.preimage_sUnion
-/
+#print Set.preimage_iInter /-
theorem preimage_iInter {f : α → β} {s : ι → Set β} : (f ⁻¹' ⋂ i, s i) = ⋂ i, f ⁻¹' s i := by
ext <;> simp
#align set.preimage_Inter Set.preimage_iInter
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.preimage_iInter₂ /-
theorem preimage_iInter₂ {f : α → β} {s : ∀ i, κ i → Set β} :
(f ⁻¹' ⋂ (i) (j), s i j) = ⋂ (i) (j), f ⁻¹' s i j := by simp_rw [preimage_Inter]
#align set.preimage_Inter₂ Set.preimage_iInter₂
+-/
#print Set.preimage_sInter /-
@[simp]
@@ -1893,9 +2338,11 @@ theorem biUnion_preimage_singleton (f : α → β) (s : Set β) : (⋃ y ∈ s,
#align set.bUnion_preimage_singleton Set.biUnion_preimage_singleton
-/
+#print Set.biUnion_range_preimage_singleton /-
theorem biUnion_range_preimage_singleton (f : α → β) : (⋃ y ∈ range f, f ⁻¹' {y}) = univ := by
rw [bUnion_preimage_singleton, preimage_range]
#align set.bUnion_range_preimage_singleton Set.biUnion_range_preimage_singleton
+-/
end Preimage
@@ -1903,52 +2350,67 @@ section Prod
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Set.prod_iUnion /-
theorem prod_iUnion {s : Set α} {t : ι → Set β} : (s ×ˢ ⋃ i, t i) = ⋃ i, s ×ˢ t i := by ext; simp
#align set.prod_Union Set.prod_iUnion
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Set.prod_iUnion₂ /-
theorem prod_iUnion₂ {s : Set α} {t : ∀ i, κ i → Set β} :
(s ×ˢ ⋃ (i) (j), t i j) = ⋃ (i) (j), s ×ˢ t i j := by simp_rw [prod_Union]
#align set.prod_Union₂ Set.prod_iUnion₂
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Set.prod_sUnion /-
theorem prod_sUnion {s : Set α} {C : Set (Set β)} : s ×ˢ ⋃₀ C = ⋃₀ ((fun t => s ×ˢ t) '' C) := by
simp_rw [sUnion_eq_bUnion, bUnion_image, prod_Union₂]
#align set.prod_sUnion Set.prod_sUnion
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Set.iUnion_prod_const /-
theorem iUnion_prod_const {s : ι → Set α} {t : Set β} : (⋃ i, s i) ×ˢ t = ⋃ i, s i ×ˢ t := by ext;
simp
#align set.Union_prod_const Set.iUnion_prod_const
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Set.iUnion₂_prod_const /-
theorem iUnion₂_prod_const {s : ∀ i, κ i → Set α} {t : Set β} :
(⋃ (i) (j), s i j) ×ˢ t = ⋃ (i) (j), s i j ×ˢ t := by simp_rw [Union_prod_const]
#align set.Union₂_prod_const Set.iUnion₂_prod_const
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Set.sUnion_prod_const /-
theorem sUnion_prod_const {C : Set (Set α)} {t : Set β} :
⋃₀ C ×ˢ t = ⋃₀ ((fun s : Set α => s ×ˢ t) '' C) := by
simp only [sUnion_eq_bUnion, Union₂_prod_const, bUnion_image]
#align set.sUnion_prod_const Set.sUnion_prod_const
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Set.iUnion_prod /-
theorem iUnion_prod {ι ι' α β} (s : ι → Set α) (t : ι' → Set β) :
(⋃ x : ι × ι', s x.1 ×ˢ t x.2) = (⋃ i : ι, s i) ×ˢ ⋃ i : ι', t i := by ext; simp
#align set.Union_prod Set.iUnion_prod
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Set.iUnion_prod_of_monotone /-
theorem iUnion_prod_of_monotone [SemilatticeSup α] {s : α → Set β} {t : α → Set γ} (hs : Monotone s)
(ht : Monotone t) : (⋃ x, s x ×ˢ t x) = (⋃ x, s x) ×ˢ ⋃ x, t x :=
by
@@ -1956,18 +2418,22 @@ theorem iUnion_prod_of_monotone [SemilatticeSup α] {s : α → Set β} {t : α
· intro x hz hw; exact ⟨⟨x, hz⟩, x, hw⟩
· intro x hz x' hw; exact ⟨x ⊔ x', hs le_sup_left hz, ht le_sup_right hw⟩
#align set.Union_prod_of_monotone Set.iUnion_prod_of_monotone
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Set.sInter_prod_sInter_subset /-
theorem sInter_prod_sInter_subset (S : Set (Set α)) (T : Set (Set β)) :
⋂₀ S ×ˢ ⋂₀ T ⊆ ⋂ r ∈ S ×ˢ T, r.1 ×ˢ r.2 :=
subset_iInter₂ fun x hx y hy => ⟨hy.1 x.1 hx.1, hy.2 x.2 hx.2⟩
#align set.sInter_prod_sInter_subset Set.sInter_prod_sInter_subset
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Set.sInter_prod_sInter /-
theorem sInter_prod_sInter {S : Set (Set α)} {T : Set (Set β)} (hS : S.Nonempty) (hT : T.Nonempty) :
⋂₀ S ×ˢ ⋂₀ T = ⋂ r ∈ S ×ˢ T, r.1 ×ˢ r.2 :=
by
@@ -1977,14 +2443,17 @@ theorem sInter_prod_sInter {S : Set (Set α)} {T : Set (Set β)} (hS : S.Nonempt
rw [mem_Inter₂] at hx
exact ⟨fun s₀ h₀ => (hx (s₀, s₂) ⟨h₀, h₂⟩).1, fun s₀ h₀ => (hx (s₁, s₀) ⟨h₁, h₀⟩).2⟩
#align set.sInter_prod_sInter Set.sInter_prod_sInter
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Set.sInter_prod /-
theorem sInter_prod {S : Set (Set α)} (hS : S.Nonempty) (t : Set β) : ⋂₀ S ×ˢ t = ⋂ s ∈ S, s ×ˢ t :=
by
rw [← sInter_singleton t, sInter_prod_sInter hS (singleton_nonempty t), sInter_singleton]
simp_rw [prod_singleton, mem_image, Inter_exists, bInter_and', Inter_Inter_eq_right]
#align set.sInter_prod Set.sInter_prod
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
@@ -2002,9 +2471,11 @@ section Image2
variable (f : α → β → γ) {s : Set α} {t : Set β}
+#print Set.iUnion_image_left /-
theorem iUnion_image_left : (⋃ a ∈ s, f a '' t) = image2 f s t := by ext y;
constructor <;> simp only [mem_Union] <;> rintro ⟨a, ha, x, hx, ax⟩ <;> exact ⟨a, x, ha, hx, ax⟩
#align set.Union_image_left Set.iUnion_image_left
+-/
#print Set.iUnion_image_right /-
theorem iUnion_image_right : (⋃ b ∈ t, (fun a => f a b) '' s) = image2 f s t :=
@@ -2014,66 +2485,88 @@ theorem iUnion_image_right : (⋃ b ∈ t, (fun a => f a b) '' s) = image2 f s t
#align set.Union_image_right Set.iUnion_image_right
-/
+#print Set.image2_iUnion_left /-
theorem image2_iUnion_left (s : ι → Set α) (t : Set β) :
image2 f (⋃ i, s i) t = ⋃ i, image2 f (s i) t := by
simp only [← image_prod, Union_prod_const, image_Union]
#align set.image2_Union_left Set.image2_iUnion_left
+-/
+#print Set.image2_iUnion_right /-
theorem image2_iUnion_right (s : Set α) (t : ι → Set β) :
image2 f s (⋃ i, t i) = ⋃ i, image2 f s (t i) := by
simp only [← image_prod, prod_Union, image_Union]
#align set.image2_Union_right Set.image2_iUnion_right
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.image2_iUnion₂_left /-
theorem image2_iUnion₂_left (s : ∀ i, κ i → Set α) (t : Set β) :
image2 f (⋃ (i) (j), s i j) t = ⋃ (i) (j), image2 f (s i j) t := by simp_rw [image2_Union_left]
#align set.image2_Union₂_left Set.image2_iUnion₂_left
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.image2_iUnion₂_right /-
theorem image2_iUnion₂_right (s : Set α) (t : ∀ i, κ i → Set β) :
image2 f s (⋃ (i) (j), t i j) = ⋃ (i) (j), image2 f s (t i j) := by simp_rw [image2_Union_right]
#align set.image2_Union₂_right Set.image2_iUnion₂_right
+-/
+#print Set.image2_iInter_subset_left /-
theorem image2_iInter_subset_left (s : ι → Set α) (t : Set β) :
image2 f (⋂ i, s i) t ⊆ ⋂ i, image2 f (s i) t := by simp_rw [image2_subset_iff, mem_Inter];
exact fun x hx y hy i => mem_image2_of_mem (hx _) hy
#align set.image2_Inter_subset_left Set.image2_iInter_subset_left
+-/
+#print Set.image2_iInter_subset_right /-
theorem image2_iInter_subset_right (s : Set α) (t : ι → Set β) :
image2 f s (⋂ i, t i) ⊆ ⋂ i, image2 f s (t i) := by simp_rw [image2_subset_iff, mem_Inter];
exact fun x hx y hy i => mem_image2_of_mem hx (hy _)
#align set.image2_Inter_subset_right Set.image2_iInter_subset_right
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.image2_iInter₂_subset_left /-
theorem image2_iInter₂_subset_left (s : ∀ i, κ i → Set α) (t : Set β) :
image2 f (⋂ (i) (j), s i j) t ⊆ ⋂ (i) (j), image2 f (s i j) t := by
simp_rw [image2_subset_iff, mem_Inter]; exact fun x hx y hy i j => mem_image2_of_mem (hx _ _) hy
#align set.image2_Inter₂_subset_left Set.image2_iInter₂_subset_left
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.image2_iInter₂_subset_right /-
theorem image2_iInter₂_subset_right (s : Set α) (t : ∀ i, κ i → Set β) :
image2 f s (⋂ (i) (j), t i j) ⊆ ⋂ (i) (j), image2 f s (t i j) := by
simp_rw [image2_subset_iff, mem_Inter]; exact fun x hx y hy i j => mem_image2_of_mem hx (hy _ _)
#align set.image2_Inter₂_subset_right Set.image2_iInter₂_subset_right
+-/
+#print Set.image2_eq_iUnion /-
/-- The `set.image2` version of `set.image_eq_Union` -/
theorem image2_eq_iUnion (s : Set α) (t : Set β) : image2 f s t = ⋃ (i ∈ s) (j ∈ t), {f i j} := by
simp_rw [← image_eq_Union, Union_image_left]
#align set.image2_eq_Union Set.image2_eq_iUnion
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Set.prod_eq_biUnion_left /-
theorem prod_eq_biUnion_left : s ×ˢ t = ⋃ a ∈ s, (fun b => (a, b)) '' t := by
rw [Union_image_left, image2_mk_eq_prod]
#align set.prod_eq_bUnion_left Set.prod_eq_biUnion_left
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Set.prod_eq_biUnion_right /-
theorem prod_eq_biUnion_right : s ×ˢ t = ⋃ b ∈ t, (fun a => (a, b)) '' s := by
rw [Union_image_right, image2_mk_eq_prod]
#align set.prod_eq_bUnion_right Set.prod_eq_biUnion_right
+-/
end Image2
@@ -2087,34 +2580,47 @@ def seq (s : Set (α → β)) (t : Set α) : Set β :=
#align set.seq Set.seq
-/
+#print Set.seq_def /-
theorem seq_def {s : Set (α → β)} {t : Set α} : seq s t = ⋃ f ∈ s, f '' t :=
Set.ext <| by simp [seq]
#align set.seq_def Set.seq_def
+-/
+#print Set.mem_seq_iff /-
@[simp]
theorem mem_seq_iff {s : Set (α → β)} {t : Set α} {b : β} :
b ∈ seq s t ↔ ∃ f ∈ s, ∃ a ∈ t, (f : α → β) a = b :=
Iff.rfl
#align set.mem_seq_iff Set.mem_seq_iff
+-/
+#print Set.seq_subset /-
theorem seq_subset {s : Set (α → β)} {t : Set α} {u : Set β} :
seq s t ⊆ u ↔ ∀ f ∈ s, ∀ a ∈ t, (f : α → β) a ∈ u :=
Iff.intro (fun h f hf a ha => h ⟨f, hf, a, ha, rfl⟩) fun h b ⟨f, hf, a, ha, Eq⟩ =>
Eq ▸ h f hf a ha
#align set.seq_subset Set.seq_subset
+-/
+#print Set.seq_mono /-
theorem seq_mono {s₀ s₁ : Set (α → β)} {t₀ t₁ : Set α} (hs : s₀ ⊆ s₁) (ht : t₀ ⊆ t₁) :
seq s₀ t₀ ⊆ seq s₁ t₁ := fun b ⟨f, hf, a, ha, Eq⟩ => ⟨f, hs hf, a, ht ha, Eq⟩
#align set.seq_mono Set.seq_mono
+-/
+#print Set.singleton_seq /-
theorem singleton_seq {f : α → β} {t : Set α} : Set.seq {f} t = f '' t :=
Set.ext <| by simp
#align set.singleton_seq Set.singleton_seq
+-/
+#print Set.seq_singleton /-
theorem seq_singleton {s : Set (α → β)} {a : α} : Set.seq s {a} = (fun f : α → β => f a) '' s :=
Set.ext <| by simp
#align set.seq_singleton Set.seq_singleton
+-/
+#print Set.seq_seq /-
theorem seq_seq {s : Set (β → γ)} {t : Set (α → β)} {u : Set α} :
seq s (seq t u) = seq (seq ((· ∘ ·) '' s) t) u :=
by
@@ -2124,13 +2630,17 @@ theorem seq_seq {s : Set (β → γ)} {t : Set (α → β)} {u : Set α} :
· rintro ⟨fg, ⟨fc, ⟨f, hfs, rfl⟩, g, hgt, rfl⟩, a, ha, rfl⟩
exact ⟨f, hfs, g a, ⟨g, hgt, a, ha, rfl⟩, rfl⟩
#align set.seq_seq Set.seq_seq
+-/
+#print Set.image_seq /-
theorem image_seq {f : β → γ} {s : Set (α → β)} {t : Set α} :
f '' seq s t = seq ((· ∘ ·) f '' s) t := by
rw [← singleton_seq, ← singleton_seq, seq_seq, image_singleton]
#align set.image_seq Set.image_seq
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Set.prod_eq_seq /-
theorem prod_eq_seq {s : Set α} {t : Set β} : s ×ˢ t = (Prod.mk '' s).seq t :=
by
ext ⟨a, b⟩
@@ -2138,15 +2648,20 @@ theorem prod_eq_seq {s : Set α} {t : Set β} : s ×ˢ t = (Prod.mk '' s).seq t
· rintro ⟨ha, hb⟩; exact ⟨Prod.mk a, ⟨a, ha, rfl⟩, b, hb, rfl⟩
· rintro ⟨f, ⟨x, hx, rfl⟩, y, hy, eq⟩; rw [← Eq]; exact ⟨hx, hy⟩
#align set.prod_eq_seq Set.prod_eq_seq
+-/
+#print Set.prod_image_seq_comm /-
theorem prod_image_seq_comm (s : Set α) (t : Set β) :
(Prod.mk '' s).seq t = seq ((fun b a => (a, b)) '' t) s := by
rw [← prod_eq_seq, ← image_swap_prod, prod_eq_seq, image_seq, ← image_comp, Prod.swap]
#align set.prod_image_seq_comm Set.prod_image_seq_comm
+-/
+#print Set.image2_eq_seq /-
theorem image2_eq_seq (f : α → β → γ) (s : Set α) (t : Set β) : image2 f s t = seq (f '' s) t := by
ext; simp
#align set.image2_eq_seq Set.image2_eq_seq
+-/
end Seq
@@ -2154,8 +2669,10 @@ section Pi
variable {π : α → Type _}
+#print Set.pi_def /-
theorem pi_def (i : Set α) (s : ∀ a, Set (π a)) : pi i s = ⋂ a ∈ i, eval a ⁻¹' s a := by ext; simp
#align set.pi_def Set.pi_def
+-/
#print Set.univ_pi_eq_iInter /-
theorem univ_pi_eq_iInter (t : ∀ i, Set (π i)) : pi univ t = ⋂ i, eval i ⁻¹' t i := by
@@ -2163,6 +2680,7 @@ theorem univ_pi_eq_iInter (t : ∀ i, Set (π i)) : pi univ t = ⋂ i, eval i
#align set.univ_pi_eq_Inter Set.univ_pi_eq_iInter
-/
+#print Set.pi_diff_pi_subset /-
theorem pi_diff_pi_subset (i : Set α) (s t : ∀ a, Set (π a)) :
pi i s \ pi i t ⊆ ⋃ a ∈ i, eval a ⁻¹' (s a \ t a) :=
by
@@ -2171,11 +2689,14 @@ theorem pi_diff_pi_subset (i : Set α) (s t : ∀ a, Set (π a)) :
eval_apply] at hx
exact hx.2 _ ha (hx.1 _ ha)
#align set.pi_diff_pi_subset Set.pi_diff_pi_subset
+-/
+#print Set.iUnion_univ_pi /-
theorem iUnion_univ_pi (t : ∀ i, ι → Set (π i)) :
(⋃ x : α → ι, pi univ fun i => t i (x i)) = pi univ fun i => ⋃ j : ι, t i j := by ext;
simp [Classical.skolem]
#align set.Union_univ_pi Set.iUnion_univ_pi
+-/
end Pi
@@ -2185,13 +2706,17 @@ namespace Function
namespace Surjective
+#print Function.Surjective.iUnion_comp /-
theorem iUnion_comp {f : ι → ι₂} (hf : Surjective f) (g : ι₂ → Set α) : (⋃ x, g (f x)) = ⋃ y, g y :=
hf.iSup_comp g
#align function.surjective.Union_comp Function.Surjective.iUnion_comp
+-/
+#print Function.Surjective.iInter_comp /-
theorem iInter_comp {f : ι → ι₂} (hf : Surjective f) (g : ι₂ → Set α) : (⋂ x, g (f x)) = ⋂ y, g y :=
hf.iInf_comp g
#align function.surjective.Inter_comp Function.Surjective.iInter_comp
+-/
end Surjective
@@ -2210,43 +2735,55 @@ variable {s t u : Set α} {f : α → β}
namespace Set
+#print Set.disjoint_iUnion_left /-
@[simp]
theorem disjoint_iUnion_left {ι : Sort _} {s : ι → Set α} :
Disjoint (⋃ i, s i) t ↔ ∀ i, Disjoint (s i) t :=
iSup_disjoint_iff
#align set.disjoint_Union_left Set.disjoint_iUnion_left
+-/
+#print Set.disjoint_iUnion_right /-
@[simp]
theorem disjoint_iUnion_right {ι : Sort _} {s : ι → Set α} :
Disjoint t (⋃ i, s i) ↔ ∀ i, Disjoint t (s i) :=
disjoint_iSup_iff
#align set.disjoint_Union_right Set.disjoint_iUnion_right
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.disjoint_iUnion₂_left /-
@[simp]
theorem disjoint_iUnion₂_left {s : ∀ i, κ i → Set α} {t : Set α} :
Disjoint (⋃ (i) (j), s i j) t ↔ ∀ i j, Disjoint (s i j) t :=
iSup₂_disjoint_iff
#align set.disjoint_Union₂_left Set.disjoint_iUnion₂_left
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.disjoint_iUnion₂_right /-
@[simp]
theorem disjoint_iUnion₂_right {s : Set α} {t : ∀ i, κ i → Set α} :
Disjoint s (⋃ (i) (j), t i j) ↔ ∀ i j, Disjoint s (t i j) :=
disjoint_iSup₂_iff
#align set.disjoint_Union₂_right Set.disjoint_iUnion₂_right
+-/
+#print Set.disjoint_sUnion_left /-
@[simp]
theorem disjoint_sUnion_left {S : Set (Set α)} {t : Set α} :
Disjoint (⋃₀ S) t ↔ ∀ s ∈ S, Disjoint s t :=
sSup_disjoint_iff
#align set.disjoint_sUnion_left Set.disjoint_sUnion_left
+-/
+#print Set.disjoint_sUnion_right /-
@[simp]
theorem disjoint_sUnion_right {s : Set α} {S : Set (Set α)} :
Disjoint s (⋃₀ S) ↔ ∀ t ∈ S, Disjoint s t :=
disjoint_sSup_iff
#align set.disjoint_sUnion_right Set.disjoint_sUnion_right
+-/
end Set
@@ -2259,31 +2796,43 @@ namespace Set
variable [CompleteLattice α]
+#print Set.Ici_iSup /-
theorem Ici_iSup (f : ι → α) : Ici (⨆ i, f i) = ⋂ i, Ici (f i) :=
ext fun _ => by simp only [mem_Ici, iSup_le_iff, mem_Inter]
#align set.Ici_supr Set.Ici_iSup
+-/
+#print Set.Iic_iInf /-
theorem Iic_iInf (f : ι → α) : Iic (⨅ i, f i) = ⋂ i, Iic (f i) :=
ext fun _ => by simp only [mem_Iic, le_iInf_iff, mem_Inter]
#align set.Iic_infi Set.Iic_iInf
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.Ici_iSup₂ /-
theorem Ici_iSup₂ (f : ∀ i, κ i → α) : Ici (⨆ (i) (j), f i j) = ⋂ (i) (j), Ici (f i j) := by
simp_rw [Ici_supr]
#align set.Ici_supr₂ Set.Ici_iSup₂
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+#print Set.Iic_iInf₂ /-
theorem Iic_iInf₂ (f : ∀ i, κ i → α) : Iic (⨅ (i) (j), f i j) = ⋂ (i) (j), Iic (f i j) := by
simp_rw [Iic_infi]
#align set.Iic_infi₂ Set.Iic_iInf₂
+-/
+#print Set.Ici_sSup /-
theorem Ici_sSup (s : Set α) : Ici (sSup s) = ⋂ a ∈ s, Ici a := by rw [sSup_eq_iSup, Ici_supr₂]
#align set.Ici_Sup Set.Ici_sSup
+-/
+#print Set.Iic_sInf /-
theorem Iic_sInf (s : Set α) : Iic (sInf s) = ⋂ a ∈ s, Iic a := by rw [sInf_eq_iInf, Iic_infi₂]
#align set.Iic_Inf Set.Iic_sInf
+-/
end Set
@@ -2291,6 +2840,7 @@ namespace Set
variable (t : α → Set β)
+#print Set.biUnion_diff_biUnion_subset /-
theorem biUnion_diff_biUnion_subset (s₁ s₂ : Set α) :
((⋃ x ∈ s₁, t x) \ ⋃ x ∈ s₂, t x) ⊆ ⋃ x ∈ s₁ \ s₂, t x :=
by
@@ -2299,6 +2849,7 @@ theorem biUnion_diff_biUnion_subset (s₁ s₂ : Set α) :
rw [union_diff_self]
apply subset_union_right
#align set.bUnion_diff_bUnion_subset Set.biUnion_diff_biUnion_subset
+-/
#print Set.sigmaToiUnion /-
/-- If `t` is an indexed family of sets, then there is a natural map from `Σ i, t i` to `⋃ i, t i`
@@ -2308,13 +2859,16 @@ def sigmaToiUnion (x : Σ i, t i) : ⋃ i, t i :=
#align set.sigma_to_Union Set.sigmaToiUnion
-/
+#print Set.sigmaToiUnion_surjective /-
theorem sigmaToiUnion_surjective : Surjective (sigmaToiUnion t)
| ⟨b, hb⟩ =>
have : ∃ a, b ∈ t a := by simpa using hb
let ⟨a, hb⟩ := this
⟨⟨a, b, hb⟩, rfl⟩
#align set.sigma_to_Union_surjective Set.sigmaToiUnion_surjective
+-/
+#print Set.sigmaToiUnion_injective /-
theorem sigmaToiUnion_injective (h : ∀ i j, i ≠ j → Disjoint (t i) (t j)) :
Injective (sigmaToiUnion t)
| ⟨a₁, b₁, h₁⟩, ⟨a₂, b₂, h₂⟩, Eq =>
@@ -2325,17 +2879,22 @@ theorem sigmaToiUnion_injective (h : ∀ i j, i ≠ j → Disjoint (t i) (t j))
(h _ _ Ne).le_bot this
Sigma.eq a_eq <| Subtype.eq <| by subst b_eq <;> subst a_eq
#align set.sigma_to_Union_injective Set.sigmaToiUnion_injective
+-/
+#print Set.sigmaToiUnion_bijective /-
theorem sigmaToiUnion_bijective (h : ∀ i j, i ≠ j → Disjoint (t i) (t j)) :
Bijective (sigmaToiUnion t) :=
⟨sigmaToiUnion_injective t h, sigmaToiUnion_surjective t⟩
#align set.sigma_to_Union_bijective Set.sigmaToiUnion_bijective
+-/
+#print Set.unionEqSigmaOfDisjoint /-
/-- Equivalence between a disjoint union and a dependent sum. -/
noncomputable def unionEqSigmaOfDisjoint {t : α → Set β} (h : ∀ i j, i ≠ j → Disjoint (t i) (t j)) :
(⋃ i, t i) ≃ Σ i, t i :=
(Equiv.ofBijective _ <| sigmaToiUnion_bijective t h).symm
#align set.Union_eq_sigma_of_disjoint Set.unionEqSigmaOfDisjoint
+-/
#print Set.iUnion_ge_eq_iUnion_nat_add /-
theorem iUnion_ge_eq_iUnion_nat_add (u : ℕ → Set α) (n : ℕ) : (⋃ i ≥ n, u i) = ⋃ i, u (i + n) :=
@@ -2349,15 +2908,19 @@ theorem iInter_ge_eq_iInter_nat_add (u : ℕ → Set α) (n : ℕ) : (⋂ i ≥
#align set.Inter_ge_eq_Inter_nat_add Set.iInter_ge_eq_iInter_nat_add
-/
+#print Monotone.iUnion_nat_add /-
theorem Monotone.iUnion_nat_add {f : ℕ → Set α} (hf : Monotone f) (k : ℕ) :
(⋃ n, f (n + k)) = ⋃ n, f n :=
hf.iSup_nat_add k
#align monotone.Union_nat_add Monotone.iUnion_nat_add
+-/
+#print Antitone.iInter_nat_add /-
theorem Antitone.iInter_nat_add {f : ℕ → Set α} (hf : Antitone f) (k : ℕ) :
(⋂ n, f (n + k)) = ⋂ n, f n :=
hf.iInf_nat_add k
#align antitone.Inter_nat_add Antitone.iInter_nat_add
+-/
#print Set.iUnion_iInter_ge_nat_add /-
@[simp]
@@ -2367,13 +2930,17 @@ theorem iUnion_iInter_ge_nat_add (f : ℕ → Set α) (k : ℕ) :
#align set.Union_Inter_ge_nat_add Set.iUnion_iInter_ge_nat_add
-/
+#print Set.union_iUnion_nat_succ /-
theorem union_iUnion_nat_succ (u : ℕ → Set α) : (u 0 ∪ ⋃ i, u (i + 1)) = ⋃ i, u i :=
sup_iSup_nat_succ u
#align set.union_Union_nat_succ Set.union_iUnion_nat_succ
+-/
+#print Set.inter_iInter_nat_succ /-
theorem inter_iInter_nat_succ (u : ℕ → Set α) : (u 0 ∩ ⋂ i, u (i + 1)) = ⋂ i, u i :=
inf_iInf_nat_succ u
#align set.inter_Inter_nat_succ Set.inter_iInter_nat_succ
+-/
end Set
@@ -2381,19 +2948,27 @@ open Set
variable [CompleteLattice β]
+#print iSup_iUnion /-
theorem iSup_iUnion (s : ι → Set α) (f : α → β) : (⨆ a ∈ ⋃ i, s i, f a) = ⨆ (i) (a ∈ s i), f a := by
rw [iSup_comm]; simp_rw [mem_Union, iSup_exists]
#align supr_Union iSup_iUnion
+-/
+#print iInf_iUnion /-
theorem iInf_iUnion (s : ι → Set α) (f : α → β) : (⨅ a ∈ ⋃ i, s i, f a) = ⨅ (i) (a ∈ s i), f a :=
@iSup_iUnion α βᵒᵈ _ _ s f
#align infi_Union iInf_iUnion
+-/
+#print sSup_sUnion /-
theorem sSup_sUnion (s : Set (Set β)) : sSup (⋃₀ s) = ⨆ t ∈ s, sSup t := by
simp only [sUnion_eq_bUnion, sSup_eq_iSup, iSup_iUnion]
#align Sup_sUnion sSup_sUnion
+-/
+#print sInf_sUnion /-
theorem sInf_sUnion (s : Set (Set β)) : sInf (⋃₀ s) = ⨅ t ∈ s, sInf t :=
@sSup_sUnion βᵒᵈ _ _
#align Inf_sUnion sInf_sUnion
+-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -72,10 +72,10 @@ namespace Set
instance : InfSet (Set α) :=
- ⟨fun s => { a | ∀ t ∈ s, a ∈ t }⟩
+ ⟨fun s => {a | ∀ t ∈ s, a ∈ t}⟩
instance : SupSet (Set α) :=
- ⟨fun s => { a | ∃ t ∈ s, a ∈ t }⟩
+ ⟨fun s => {a | ∃ t ∈ s, a ∈ t}⟩
#print Set.sInter /-
/-- Intersection of a set of sets. -/
@@ -156,7 +156,7 @@ theorem mem_iUnion {x : α} {s : ι → Set α} : (x ∈ ⋃ i, s i) ↔ ∃ i,
@[simp]
theorem mem_iInter {x : α} {s : ι → Set α} : (x ∈ ⋂ i, s i) ↔ ∀ i, x ∈ s i :=
- ⟨fun (h : ∀ a ∈ { a : Set α | ∃ i, s i = a }, x ∈ a) a => h (s a) ⟨a, rfl⟩,
+ ⟨fun (h : ∀ a ∈ {a : Set α | ∃ i, s i = a}, x ∈ a) a => h (s a) ⟨a, rfl⟩,
fun h t ⟨a, (Eq : s a = t)⟩ => Eq ▸ h a⟩
#align set.mem_Inter Set.mem_iInter
@@ -212,7 +212,7 @@ protected theorem image_preimage : GaloisConnection (image f) (preimage f) := fu
#print Set.kernImage /-
/-- `kern_image f s` is the set of `y` such that `f ⁻¹ y ⊆ s`. -/
def kernImage (f : α → β) (s : Set α) : Set β :=
- { y | ∀ ⦃x⦄, f x = y → x ∈ s }
+ {y | ∀ ⦃x⦄, f x = y → x ∈ s}
#align set.kern_image Set.kernImage
-/
@@ -308,11 +308,11 @@ theorem nonempty_of_union_eq_top_of_nonempty {ι : Type _} (t : Set ι) (s : ι
exact ⟨x, m⟩
#align set.nonempty_of_union_eq_top_of_nonempty Set.nonempty_of_union_eq_top_of_nonempty
-theorem setOf_exists (p : ι → β → Prop) : { x | ∃ i, p i x } = ⋃ i, { x | p i x } :=
+theorem setOf_exists (p : ι → β → Prop) : {x | ∃ i, p i x} = ⋃ i, {x | p i x} :=
ext fun i => mem_iUnion.symm
#align set.set_of_exists Set.setOf_exists
-theorem setOf_forall (p : ι → β → Prop) : { x | ∀ i, p i x } = ⋂ i, { x | p i x } :=
+theorem setOf_forall (p : ι → β → Prop) : {x | ∀ i, p i x} = ⋂ i, {x | p i x} :=
ext fun i => mem_iInter.symm
#align set.set_of_forall Set.setOf_forall
@@ -464,12 +464,12 @@ theorem iInter_subset_iInter₂ (κ : ι → Sort _) (s : ι → Set α) :
iInter_mono fun i => subset_iInter fun h => Subset.rfl
#align set.Inter_subset_Inter₂ Set.iInter_subset_iInter₂
-theorem iUnion_setOf (P : ι → α → Prop) : (⋃ i, { x : α | P i x }) = { x : α | ∃ i, P i x } := by
- ext; exact mem_Union
+theorem iUnion_setOf (P : ι → α → Prop) : (⋃ i, {x : α | P i x}) = {x : α | ∃ i, P i x} := by ext;
+ exact mem_Union
#align set.Union_set_of Set.iUnion_setOf
-theorem iInter_setOf (P : ι → α → Prop) : (⋂ i, { x : α | P i x }) = { x : α | ∀ i, P i x } := by
- ext; exact mem_Inter
+theorem iInter_setOf (P : ι → α → Prop) : (⋂ i, {x : α | P i x}) = {x : α | ∀ i, P i x} := by ext;
+ exact mem_Inter
#align set.Inter_set_of Set.iInter_setOf
theorem iUnion_congr_of_surjective {f : ι → Set α} {g : ι₂ → Set α} (h : ι → ι₂) (h1 : Surjective h)
@@ -689,14 +689,14 @@ theorem image_projection_prod {ι : Type _} {α : ι → Type _} {v : ∀ i : ι
(hv : (pi univ v).Nonempty) (i : ι) :
((fun x : ∀ i : ι, α i => x i) '' ⋂ k, (fun x : ∀ j : ι, α j => x k) ⁻¹' v k) = v i := by
classical
- apply subset.antisymm
- · simp [Inter_subset]
- · intro y y_in
- simp only [mem_image, mem_Inter, mem_preimage]
- rcases hv with ⟨z, hz⟩
- refine' ⟨Function.update z i y, _, update_same i y z⟩
- rw [@forall_update_iff ι α _ z i y fun i t => t ∈ v i]
- exact ⟨y_in, fun j hj => by simpa using hz j⟩
+ apply subset.antisymm
+ · simp [Inter_subset]
+ · intro y y_in
+ simp only [mem_image, mem_Inter, mem_preimage]
+ rcases hv with ⟨z, hz⟩
+ refine' ⟨Function.update z i y, _, update_same i y z⟩
+ rw [@forall_update_iff ι α _ z i y fun i t => t ∈ v i]
+ exact ⟨y_in, fun j hj => by simpa using hz j⟩
#align set.image_projection_prod Set.image_projection_prod
/-! ### Unions and intersections indexed by `Prop` -/
@@ -2083,7 +2083,7 @@ section Seq
/-- Given a set `s` of functions `α → β` and `t : set α`, `seq s t` is the union of `f '' t` over
all `f ∈ s`. -/
def seq (s : Set (α → β)) (t : Set α) : Set β :=
- { b | ∃ f ∈ s, ∃ a ∈ t, (f : α → β) a = b }
+ {b | ∃ f ∈ s, ∃ a ∈ t, (f : α → β) a = b}
#align set.seq Set.seq
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -1387,12 +1387,12 @@ theorem range_sigma_eq_iUnion_range {γ : α → Type _} (f : Sigma γ → β) :
#align set.range_sigma_eq_Union_range Set.range_sigma_eq_iUnion_range
#print Set.iUnion_eq_range_sigma /-
-theorem iUnion_eq_range_sigma (s : α → Set β) : (⋃ i, s i) = range fun a : Σi, s i => a.2 := by
+theorem iUnion_eq_range_sigma (s : α → Set β) : (⋃ i, s i) = range fun a : Σ i, s i => a.2 := by
simp [Set.ext_iff]
#align set.Union_eq_range_sigma Set.iUnion_eq_range_sigma
-/
-theorem iUnion_eq_range_psigma (s : ι → Set β) : (⋃ i, s i) = range fun a : Σ'i, s i => a.2 := by
+theorem iUnion_eq_range_psigma (s : ι → Set β) : (⋃ i, s i) = range fun a : Σ' i, s i => a.2 := by
simp [Set.ext_iff]
#align set.Union_eq_range_psigma Set.iUnion_eq_range_psigma
@@ -1407,7 +1407,7 @@ theorem iUnion_image_preimage_sigma_mk_eq_self {ι : Type _} {σ : ι → Type _
#align set.Union_image_preimage_sigma_mk_eq_self Set.iUnion_image_preimage_sigma_mk_eq_self
#print Set.Sigma.univ /-
-theorem Sigma.univ (X : α → Type _) : (Set.univ : Set (Σa, X a)) = ⋃ a, range (Sigma.mk a) :=
+theorem Sigma.univ (X : α → Type _) : (Set.univ : Set (Σ a, X a)) = ⋃ a, range (Sigma.mk a) :=
Set.ext fun x =>
iff_of_true trivial ⟨range (Sigma.mk x.1), Set.mem_range_self _, x.2, Sigma.eta x⟩
#align set.sigma.univ Set.Sigma.univ
@@ -1665,7 +1665,7 @@ theorem InjOn.image_iInter_eq [Nonempty ι] {s : ι → Set α} {f : α → β}
(f '' ⋂ i, s i) = ⋂ i, f '' s i := by
inhabit ι
refine' subset.antisymm (image_Inter_subset s f) fun y hy => _
- simp only [mem_Inter, mem_image_iff_bex] at hy
+ simp only [mem_Inter, mem_image_iff_bex] at hy
choose x hx hy using hy
refine' ⟨x default, mem_Inter.2 fun i => _, hy _⟩
suffices x default = x i by rw [this]; apply hx
@@ -1974,7 +1974,7 @@ theorem sInter_prod_sInter {S : Set (Set α)} {T : Set (Set β)} (hS : S.Nonempt
obtain ⟨s₁, h₁⟩ := hS
obtain ⟨s₂, h₂⟩ := hT
refine' Set.Subset.antisymm (sInter_prod_sInter_subset S T) fun x hx => _
- rw [mem_Inter₂] at hx
+ rw [mem_Inter₂] at hx
exact ⟨fun s₀ h₀ => (hx (s₀, s₂) ⟨h₀, h₂⟩).1, fun s₀ h₀ => (hx (s₁, s₀) ⟨h₁, h₀⟩).2⟩
#align set.sInter_prod_sInter Set.sInter_prod_sInter
@@ -2168,7 +2168,7 @@ theorem pi_diff_pi_subset (i : Set α) (s t : ∀ a, Set (π a)) :
by
refine' diff_subset_comm.2 fun x hx a ha => _
simp only [mem_diff, mem_pi, mem_Union, not_exists, mem_preimage, not_and, Classical.not_not,
- eval_apply] at hx
+ eval_apply] at hx
exact hx.2 _ ha (hx.1 _ ha)
#align set.pi_diff_pi_subset Set.pi_diff_pi_subset
@@ -2303,7 +2303,7 @@ theorem biUnion_diff_biUnion_subset (s₁ s₂ : Set α) :
#print Set.sigmaToiUnion /-
/-- If `t` is an indexed family of sets, then there is a natural map from `Σ i, t i` to `⋃ i, t i`
sending `⟨i, x⟩` to `x`. -/
-def sigmaToiUnion (x : Σi, t i) : ⋃ i, t i :=
+def sigmaToiUnion (x : Σ i, t i) : ⋃ i, t i :=
⟨x.2, mem_iUnion.2 ⟨x.1, x.2.2⟩⟩
#align set.sigma_to_Union Set.sigmaToiUnion
-/
@@ -2333,7 +2333,7 @@ theorem sigmaToiUnion_bijective (h : ∀ i j, i ≠ j → Disjoint (t i) (t j))
/-- Equivalence between a disjoint union and a dependent sum. -/
noncomputable def unionEqSigmaOfDisjoint {t : α → Set β} (h : ∀ i j, i ≠ j → Disjoint (t i) (t j)) :
- (⋃ i, t i) ≃ Σi, t i :=
+ (⋃ i, t i) ≃ Σ i, t i :=
(Equiv.ofBijective _ <| sigmaToiUnion_bijective t h).symm
#align set.Union_eq_sigma_of_disjoint Set.unionEqSigmaOfDisjoint
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -101,12 +101,6 @@ theorem mem_sInter {x : α} {S : Set (Set α)} : x ∈ ⋂₀ S ↔ ∀ t ∈ S,
#align set.mem_sInter Set.mem_sInter
-/
-/- warning: set.mem_sUnion -> Set.mem_sUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {x : α} {S : Set.{u1} (Set.{u1} α)}, Iff (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.sUnion.{u1} α S)) (Exists.{succ u1} (Set.{u1} α) (fun (t : Set.{u1} α) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) t S) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) t S) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x t)))
-but is expected to have type
- forall {α : Type.{u1}} {x : α} {S : Set.{u1} (Set.{u1} α)}, Iff (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (Set.sUnion.{u1} α S)) (Exists.{succ u1} (Set.{u1} α) (fun (t : Set.{u1} α) => And (Membership.mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instMembershipSet.{u1} (Set.{u1} α)) t S) (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x t)))
-Case conversion may be inaccurate. Consider using '#align set.mem_sUnion Set.mem_sUnionₓ'. -/
@[simp]
theorem mem_sUnion {x : α} {S : Set (Set α)} : x ∈ ⋃₀ S ↔ ∃ t ∈ S, x ∈ t :=
Iff.rfl
@@ -132,12 +126,6 @@ notation3"⋃ "(...)", "r:(scoped f => iUnion f) => r
-- mathport name: «expr⋂ , »
notation3"⋂ "(...)", "r:(scoped f => iInter f) => r
-/- warning: set.Sup_eq_sUnion -> Set.sSup_eq_sUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (SupSet.sSup.{u1} (Set.{u1} α) (Set.hasSup.{u1} α) S) (Set.sUnion.{u1} α S)
-but is expected to have type
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (SupSet.sSup.{u1} (Set.{u1} α) (Set.instSupSetSet.{u1} α) S) (Set.sUnion.{u1} α S)
-Case conversion may be inaccurate. Consider using '#align set.Sup_eq_sUnion Set.sSup_eq_sUnionₓ'. -/
@[simp]
theorem sSup_eq_sUnion (S : Set (Set α)) : sSup S = ⋃₀ S :=
rfl
@@ -150,112 +138,52 @@ theorem sInf_eq_sInter (S : Set (Set α)) : sInf S = ⋂₀ S :=
#align set.Inf_eq_sInter Set.sInf_eq_sInter
-/
-/- warning: set.supr_eq_Union -> Set.iSup_eq_iUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (iSup.{u1, u2} (Set.{u1} α) (Set.hasSup.{u1} α) ι s) (Set.iUnion.{u1, u2} α ι s)
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} α)), Eq.{succ u2} (Set.{u2} α) (iSup.{u2, u1} (Set.{u2} α) (Set.instSupSetSet.{u2} α) ι s) (Set.iUnion.{u2, u1} α ι s)
-Case conversion may be inaccurate. Consider using '#align set.supr_eq_Union Set.iSup_eq_iUnionₓ'. -/
@[simp]
theorem iSup_eq_iUnion (s : ι → Set α) : iSup s = iUnion s :=
rfl
#align set.supr_eq_Union Set.iSup_eq_iUnion
-/- warning: set.infi_eq_Inter -> Set.iInf_eq_iInter is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (iInf.{u1, u2} (Set.{u1} α) (Set.hasInf.{u1} α) ι s) (Set.iInter.{u1, u2} α ι s)
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} α)), Eq.{succ u2} (Set.{u2} α) (iInf.{u2, u1} (Set.{u2} α) (Set.instInfSetSet.{u2} α) ι s) (Set.iInter.{u2, u1} α ι s)
-Case conversion may be inaccurate. Consider using '#align set.infi_eq_Inter Set.iInf_eq_iInterₓ'. -/
@[simp]
theorem iInf_eq_iInter (s : ι → Set α) : iInf s = iInter s :=
rfl
#align set.infi_eq_Inter Set.iInf_eq_iInter
-/- warning: set.mem_Union -> Set.mem_iUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {x : α} {s : ι -> (Set.{u1} α)}, Iff (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i))) (Exists.{u2} ι (fun (i : ι) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (s i)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {x : α} {s : ι -> (Set.{u2} α)}, Iff (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.iUnion.{u2, u1} α ι (fun (i : ι) => s i))) (Exists.{u1} ι (fun (i : ι) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (s i)))
-Case conversion may be inaccurate. Consider using '#align set.mem_Union Set.mem_iUnionₓ'. -/
@[simp]
theorem mem_iUnion {x : α} {s : ι → Set α} : (x ∈ ⋃ i, s i) ↔ ∃ i, x ∈ s i :=
⟨fun ⟨t, ⟨⟨a, (t_eq : s a = t)⟩, (h : x ∈ t)⟩⟩ => ⟨a, t_eq.symm ▸ h⟩, fun ⟨a, h⟩ =>
⟨s a, ⟨⟨a, rfl⟩, h⟩⟩⟩
#align set.mem_Union Set.mem_iUnion
-/- warning: set.mem_Inter -> Set.mem_iInter is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {x : α} {s : ι -> (Set.{u1} α)}, Iff (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.iInter.{u1, u2} α ι (fun (i : ι) => s i))) (forall (i : ι), Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (s i))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {x : α} {s : ι -> (Set.{u2} α)}, Iff (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.iInter.{u2, u1} α ι (fun (i : ι) => s i))) (forall (i : ι), Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (s i))
-Case conversion may be inaccurate. Consider using '#align set.mem_Inter Set.mem_iInterₓ'. -/
@[simp]
theorem mem_iInter {x : α} {s : ι → Set α} : (x ∈ ⋂ i, s i) ↔ ∀ i, x ∈ s i :=
⟨fun (h : ∀ a ∈ { a : Set α | ∃ i, s i = a }, x ∈ a) a => h (s a) ⟨a, rfl⟩,
fun h t ⟨a, (Eq : s a = t)⟩ => Eq ▸ h a⟩
#align set.mem_Inter Set.mem_iInter
-/- warning: set.mem_Union₂ -> Set.mem_iUnion₂ is a dubious translation:
-lean 3 declaration is
- forall {γ : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {x : γ} {s : forall (i : ι), (κ i) -> (Set.{u1} γ)}, Iff (Membership.Mem.{u1, u1} γ (Set.{u1} γ) (Set.hasMem.{u1} γ) x (Set.iUnion.{u1, u2} γ ι (fun (i : ι) => Set.iUnion.{u1, u3} γ (κ i) (fun (j : κ i) => s i j)))) (Exists.{u2} ι (fun (i : ι) => Exists.{u3} (κ i) (fun (j : κ i) => Membership.Mem.{u1, u1} γ (Set.{u1} γ) (Set.hasMem.{u1} γ) x (s i j))))
-but is expected to have type
- forall {γ : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {x : γ} {s : forall (i : ι), (κ i) -> (Set.{u3} γ)}, Iff (Membership.mem.{u3, u3} γ (Set.{u3} γ) (Set.instMembershipSet.{u3} γ) x (Set.iUnion.{u3, u2} γ ι (fun (i : ι) => Set.iUnion.{u3, u1} γ (κ i) (fun (j : κ i) => s i j)))) (Exists.{u2} ι (fun (i : ι) => Exists.{u1} (κ i) (fun (j : κ i) => Membership.mem.{u3, u3} γ (Set.{u3} γ) (Set.instMembershipSet.{u3} γ) x (s i j))))
-Case conversion may be inaccurate. Consider using '#align set.mem_Union₂ Set.mem_iUnion₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem mem_iUnion₂ {x : γ} {s : ∀ i, κ i → Set γ} : (x ∈ ⋃ (i) (j), s i j) ↔ ∃ i j, x ∈ s i j := by
simp_rw [mem_Union]
#align set.mem_Union₂ Set.mem_iUnion₂
-/- warning: set.mem_Inter₂ -> Set.mem_iInter₂ is a dubious translation:
-lean 3 declaration is
- forall {γ : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {x : γ} {s : forall (i : ι), (κ i) -> (Set.{u1} γ)}, Iff (Membership.Mem.{u1, u1} γ (Set.{u1} γ) (Set.hasMem.{u1} γ) x (Set.iInter.{u1, u2} γ ι (fun (i : ι) => Set.iInter.{u1, u3} γ (κ i) (fun (j : κ i) => s i j)))) (forall (i : ι) (j : κ i), Membership.Mem.{u1, u1} γ (Set.{u1} γ) (Set.hasMem.{u1} γ) x (s i j))
-but is expected to have type
- forall {γ : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {x : γ} {s : forall (i : ι), (κ i) -> (Set.{u3} γ)}, Iff (Membership.mem.{u3, u3} γ (Set.{u3} γ) (Set.instMembershipSet.{u3} γ) x (Set.iInter.{u3, u2} γ ι (fun (i : ι) => Set.iInter.{u3, u1} γ (κ i) (fun (j : κ i) => s i j)))) (forall (i : ι) (j : κ i), Membership.mem.{u3, u3} γ (Set.{u3} γ) (Set.instMembershipSet.{u3} γ) x (s i j))
-Case conversion may be inaccurate. Consider using '#align set.mem_Inter₂ Set.mem_iInter₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem mem_iInter₂ {x : γ} {s : ∀ i, κ i → Set γ} : (x ∈ ⋂ (i) (j), s i j) ↔ ∀ i j, x ∈ s i j := by
simp_rw [mem_Inter]
#align set.mem_Inter₂ Set.mem_iInter₂
-/- warning: set.mem_Union_of_mem -> Set.mem_iUnion_of_mem is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {a : α} (i : ι), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i)) -> (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {a : α} (i : ι), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a (s i)) -> (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a (Set.iUnion.{u2, u1} α ι (fun (i : ι) => s i)))
-Case conversion may be inaccurate. Consider using '#align set.mem_Union_of_mem Set.mem_iUnion_of_memₓ'. -/
theorem mem_iUnion_of_mem {s : ι → Set α} {a : α} (i : ι) (ha : a ∈ s i) : a ∈ ⋃ i, s i :=
mem_iUnion.2 ⟨i, ha⟩
#align set.mem_Union_of_mem Set.mem_iUnion_of_mem
-/- warning: set.mem_Union₂_of_mem -> Set.mem_iUnion₂_of_mem is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {a : α} {i : ι} (j : κ i), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i j)) -> (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => s i j))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {a : α} {i : ι} (j : κ i), (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i j)) -> (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => s i j))))
-Case conversion may be inaccurate. Consider using '#align set.mem_Union₂_of_mem Set.mem_iUnion₂_of_memₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem mem_iUnion₂_of_mem {s : ∀ i, κ i → Set α} {a : α} {i : ι} (j : κ i) (ha : a ∈ s i j) :
a ∈ ⋃ (i) (j), s i j :=
mem_iUnion₂.2 ⟨i, j, ha⟩
#align set.mem_Union₂_of_mem Set.mem_iUnion₂_of_mem
-/- warning: set.mem_Inter_of_mem -> Set.mem_iInter_of_mem is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {a : α}, (forall (i : ι), Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i)) -> (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Set.iInter.{u1, u2} α ι (fun (i : ι) => s i)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {a : α}, (forall (i : ι), Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a (s i)) -> (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a (Set.iInter.{u2, u1} α ι (fun (i : ι) => s i)))
-Case conversion may be inaccurate. Consider using '#align set.mem_Inter_of_mem Set.mem_iInter_of_memₓ'. -/
theorem mem_iInter_of_mem {s : ι → Set α} {a : α} (h : ∀ i, a ∈ s i) : a ∈ ⋂ i, s i :=
mem_iInter.2 h
#align set.mem_Inter_of_mem Set.mem_iInter_of_mem
-/- warning: set.mem_Inter₂_of_mem -> Set.mem_iInter₂_of_mem is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {a : α}, (forall (i : ι) (j : κ i), Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i j)) -> (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => s i j))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {a : α}, (forall (i : ι) (j : κ i), Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i j)) -> (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => s i j))))
-Case conversion may be inaccurate. Consider using '#align set.mem_Inter₂_of_mem Set.mem_iInter₂_of_memₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem mem_iInter₂_of_mem {s : ∀ i, κ i → Set α} {a : α} (h : ∀ i j, a ∈ s i j) :
a ∈ ⋂ (i) (j), s i j :=
@@ -277,12 +205,6 @@ section GaloisConnection
variable {f : α → β}
-/- warning: set.image_preimage -> Set.image_preimage is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {f : α -> β}, GaloisConnection.{u1, u2} (Set.{u1} α) (Set.{u2} β) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α))))))) (PartialOrder.toPreorder.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.completeBooleanAlgebra.{u2} β))))))) (Set.image.{u1, u2} α β f) (Set.preimage.{u1, u2} α β f)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {f : α -> β}, GaloisConnection.{u2, u1} (Set.{u2} α) (Set.{u1} β) (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α))))))) (PartialOrder.toPreorder.{u1} (Set.{u1} β) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} β) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} β) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} β) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} β) (Set.instCompleteBooleanAlgebraSet.{u1} β))))))) (Set.image.{u2, u1} α β f) (Set.preimage.{u2, u1} α β f)
-Case conversion may be inaccurate. Consider using '#align set.image_preimage Set.image_preimageₓ'. -/
protected theorem image_preimage : GaloisConnection (image f) (preimage f) := fun a b =>
image_subset_iff
#align set.image_preimage Set.image_preimage
@@ -294,12 +216,6 @@ def kernImage (f : α → β) (s : Set α) : Set β :=
#align set.kern_image Set.kernImage
-/
-/- warning: set.preimage_kern_image -> Set.preimage_kernImage is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {f : α -> β}, GaloisConnection.{u2, u1} (Set.{u2} β) (Set.{u1} α) (PartialOrder.toPreorder.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.completeBooleanAlgebra.{u2} β))))))) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α))))))) (Set.preimage.{u1, u2} α β f) (Set.kernImage.{u1, u2} α β f)
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {f : α -> β}, GaloisConnection.{u2, u1} (Set.{u2} β) (Set.{u1} α) (PartialOrder.toPreorder.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.instCompleteBooleanAlgebraSet.{u2} β))))))) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) (Set.preimage.{u1, u2} α β f) (Set.kernImage.{u1, u2} α β f)
-Case conversion may be inaccurate. Consider using '#align set.preimage_kern_image Set.preimage_kernImageₓ'. -/
protected theorem preimage_kernImage : GaloisConnection (preimage f) (kernImage f) := fun a b =>
⟨fun h x hx y hy =>
have : f y ∈ a := hy.symm ▸ hx
@@ -338,12 +254,6 @@ theorem iUnion_plift_up (f : PLift ι → Set α) : (⋃ i, f (PLift.up i)) =
#align set.Union_plift_up Set.iUnion_plift_up
-/
-/- warning: set.Union_plift_down -> Set.iUnion_plift_down is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (f : ι -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α (PLift.{u2} ι) (fun (i : PLift.{u2} ι) => f (PLift.down.{u2} ι i))) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => f i))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (f : ι -> (Set.{u2} α)), Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, succ u1} α (PLift.{u1} ι) (fun (i : PLift.{u1} ι) => f (PLift.down.{u1} ι i))) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => f i))
-Case conversion may be inaccurate. Consider using '#align set.Union_plift_down Set.iUnion_plift_downₓ'. -/
theorem iUnion_plift_down (f : ι → Set α) : (⋃ i, f (PLift.down i)) = ⋃ i, f i :=
iSup_plift_down _
#align set.Union_plift_down Set.iUnion_plift_down
@@ -354,12 +264,6 @@ theorem iInter_plift_up (f : PLift ι → Set α) : (⋂ i, f (PLift.up i)) =
#align set.Inter_plift_up Set.iInter_plift_up
-/
-/- warning: set.Inter_plift_down -> Set.iInter_plift_down is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (f : ι -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, succ u2} α (PLift.{u2} ι) (fun (i : PLift.{u2} ι) => f (PLift.down.{u2} ι i))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => f i))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (f : ι -> (Set.{u2} α)), Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, succ u1} α (PLift.{u1} ι) (fun (i : PLift.{u1} ι) => f (PLift.down.{u1} ι i))) (Set.iInter.{u2, u1} α ι (fun (i : ι) => f i))
-Case conversion may be inaccurate. Consider using '#align set.Inter_plift_down Set.iInter_plift_downₓ'. -/
theorem iInter_plift_down (f : ι → Set α) : (⋂ i, f (PLift.down i)) = ⋂ i, f i :=
iInf_plift_down _
#align set.Inter_plift_down Set.iInter_plift_down
@@ -390,12 +294,6 @@ theorem iInf_eq_dif {p : Prop} [Decidable p] (s : p → Set α) :
#align set.Infi_eq_dif Set.iInf_eq_dif
-/
-/- warning: set.exists_set_mem_of_union_eq_top -> Set.exists_set_mem_of_union_eq_top is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Type.{u2}} (t : Set.{u2} ι) (s : ι -> (Set.{u1} β)), (Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, succ u2} β ι (fun (i : ι) => Set.iUnion.{u1, 0} β (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) (fun (H : Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) => s i))) (Top.top.{u1} (Set.{u1} β) (CompleteLattice.toHasTop.{u1} (Set.{u1} β) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} β) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} β) (Set.completeBooleanAlgebra.{u1} β))))))) -> (forall (x : β), Exists.{succ u2} ι (fun (i : ι) => Exists.{0} (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) (fun (H : Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) => Membership.Mem.{u1, u1} β (Set.{u1} β) (Set.hasMem.{u1} β) x (s i))))
-but is expected to have type
- forall {β : Type.{u1}} {ι : Type.{u2}} (t : Set.{u2} ι) (s : ι -> (Set.{u1} β)), (Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, succ u2} β ι (fun (i : ι) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i t) (fun (H : Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i t) => s i))) (Top.top.{u1} (Set.{u1} β) (CompleteLattice.toTop.{u1} (Set.{u1} β) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} β) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} β) (Set.instCompleteBooleanAlgebraSet.{u1} β))))))) -> (forall (x : β), Exists.{succ u2} ι (fun (i : ι) => And (Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i t) (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) x (s i))))
-Case conversion may be inaccurate. Consider using '#align set.exists_set_mem_of_union_eq_top Set.exists_set_mem_of_union_eq_topₓ'. -/
theorem exists_set_mem_of_union_eq_top {ι : Type _} (t : Set ι) (s : ι → Set β)
(w : (⋃ i ∈ t, s i) = ⊤) (x : β) : ∃ i ∈ t, x ∈ s i :=
by
@@ -403,12 +301,6 @@ theorem exists_set_mem_of_union_eq_top {ι : Type _} (t : Set ι) (s : ι → Se
simpa only [← w, Set.mem_iUnion] using p
#align set.exists_set_mem_of_union_eq_top Set.exists_set_mem_of_union_eq_top
-/- warning: set.nonempty_of_union_eq_top_of_nonempty -> Set.nonempty_of_union_eq_top_of_nonempty is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} (t : Set.{u2} ι) (s : ι -> (Set.{u1} α)), (Nonempty.{succ u1} α) -> (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => Set.iUnion.{u1, 0} α (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) (fun (H : Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) => s i))) (Top.top.{u1} (Set.{u1} α) (CompleteLattice.toHasTop.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α))))))) -> (Set.Nonempty.{u2} ι t)
-but is expected to have type
- forall {α : Type.{u1}} {ι : Type.{u2}} (t : Set.{u2} ι) (s : ι -> (Set.{u1} α)), (Nonempty.{succ u1} α) -> (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => Set.iUnion.{u1, 0} α (Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i t) (fun (H : Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i t) => s i))) (Top.top.{u1} (Set.{u1} α) (CompleteLattice.toTop.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) -> (Set.Nonempty.{u2} ι t)
-Case conversion may be inaccurate. Consider using '#align set.nonempty_of_union_eq_top_of_nonempty Set.nonempty_of_union_eq_top_of_nonemptyₓ'. -/
theorem nonempty_of_union_eq_top_of_nonempty {ι : Type _} (t : Set ι) (s : ι → Set α)
(H : Nonempty α) (w : (⋃ i ∈ t, s i) = ⊤) : t.Nonempty :=
by
@@ -416,175 +308,79 @@ theorem nonempty_of_union_eq_top_of_nonempty {ι : Type _} (t : Set ι) (s : ι
exact ⟨x, m⟩
#align set.nonempty_of_union_eq_top_of_nonempty Set.nonempty_of_union_eq_top_of_nonempty
-/- warning: set.set_of_exists -> Set.setOf_exists is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (p : ι -> β -> Prop), Eq.{succ u1} (Set.{u1} β) (setOf.{u1} β (fun (x : β) => Exists.{u2} ι (fun (i : ι) => p i x))) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => setOf.{u1} β (fun (x : β) => p i x)))
-but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (p : ι -> β -> Prop), Eq.{succ u2} (Set.{u2} β) (setOf.{u2} β (fun (x : β) => Exists.{u1} ι (fun (i : ι) => p i x))) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => setOf.{u2} β (fun (x : β) => p i x)))
-Case conversion may be inaccurate. Consider using '#align set.set_of_exists Set.setOf_existsₓ'. -/
theorem setOf_exists (p : ι → β → Prop) : { x | ∃ i, p i x } = ⋃ i, { x | p i x } :=
ext fun i => mem_iUnion.symm
#align set.set_of_exists Set.setOf_exists
-/- warning: set.set_of_forall -> Set.setOf_forall is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (p : ι -> β -> Prop), Eq.{succ u1} (Set.{u1} β) (setOf.{u1} β (fun (x : β) => forall (i : ι), p i x)) (Set.iInter.{u1, u2} β ι (fun (i : ι) => setOf.{u1} β (fun (x : β) => p i x)))
-but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (p : ι -> β -> Prop), Eq.{succ u2} (Set.{u2} β) (setOf.{u2} β (fun (x : β) => forall (i : ι), p i x)) (Set.iInter.{u2, u1} β ι (fun (i : ι) => setOf.{u2} β (fun (x : β) => p i x)))
-Case conversion may be inaccurate. Consider using '#align set.set_of_forall Set.setOf_forallₓ'. -/
theorem setOf_forall (p : ι → β → Prop) : { x | ∀ i, p i x } = ⋂ i, { x | p i x } :=
ext fun i => mem_iInter.symm
#align set.set_of_forall Set.setOf_forall
-/- warning: set.Union_subset -> Set.iUnion_subset is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {t : Set.{u1} α}, (forall (i : ι), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i) t) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i)) t)
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {t : Set.{u2} α}, (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (s i) t) -> (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => s i)) t)
-Case conversion may be inaccurate. Consider using '#align set.Union_subset Set.iUnion_subsetₓ'. -/
theorem iUnion_subset {s : ι → Set α} {t : Set α} (h : ∀ i, s i ⊆ t) : (⋃ i, s i) ⊆ t :=
@iSup_le (Set α) _ _ _ _ h
#align set.Union_subset Set.iUnion_subset
-/- warning: set.Union₂_subset -> Set.iUnion₂_subset is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : Set.{u1} α}, (forall (i : ι) (j : κ i), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i j) t) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) t)
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {t : Set.{u3} α}, (forall (i : ι) (j : κ i), HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (s i j) t) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) t)
-Case conversion may be inaccurate. Consider using '#align set.Union₂_subset Set.iUnion₂_subsetₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem iUnion₂_subset {s : ∀ i, κ i → Set α} {t : Set α} (h : ∀ i j, s i j ⊆ t) :
(⋃ (i) (j), s i j) ⊆ t :=
iUnion_subset fun x => iUnion_subset (h x)
#align set.Union₂_subset Set.iUnion₂_subset
-/- warning: set.subset_Inter -> Set.subset_iInter is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} {t : Set.{u1} β} {s : ι -> (Set.{u1} β)}, (forall (i : ι), HasSubset.Subset.{u1} (Set.{u1} β) (Set.hasSubset.{u1} β) t (s i)) -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.hasSubset.{u1} β) t (Set.iInter.{u1, u2} β ι (fun (i : ι) => s i)))
-but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} {t : Set.{u2} β} {s : ι -> (Set.{u2} β)}, (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) t (s i)) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) t (Set.iInter.{u2, u1} β ι (fun (i : ι) => s i)))
-Case conversion may be inaccurate. Consider using '#align set.subset_Inter Set.subset_iInterₓ'. -/
theorem subset_iInter {t : Set β} {s : ι → Set β} (h : ∀ i, t ⊆ s i) : t ⊆ ⋂ i, s i :=
@le_iInf (Set β) _ _ _ _ h
#align set.subset_Inter Set.subset_iInter
-/- warning: set.subset_Inter₂ -> Set.subset_iInter₂ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : Set.{u1} α} {t : forall (i : ι), (κ i) -> (Set.{u1} α)}, (forall (i : ι) (j : κ i), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (t i j)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => t i j))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : Set.{u3} α} {t : forall (i : ι), (κ i) -> (Set.{u3} α)}, (forall (i : ι) (j : κ i), HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) s (t i j)) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) s (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => t i j))))
-Case conversion may be inaccurate. Consider using '#align set.subset_Inter₂ Set.subset_iInter₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem subset_iInter₂ {s : Set α} {t : ∀ i, κ i → Set α} (h : ∀ i j, s ⊆ t i j) :
s ⊆ ⋂ (i) (j), t i j :=
subset_iInter fun x => subset_iInter <| h x
#align set.subset_Inter₂ Set.subset_iInter₂
-/- warning: set.Union_subset_iff -> Set.iUnion_subset_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {t : Set.{u1} α}, Iff (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i)) t) (forall (i : ι), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i) t)
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {t : Set.{u2} α}, Iff (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => s i)) t) (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (s i) t)
-Case conversion may be inaccurate. Consider using '#align set.Union_subset_iff Set.iUnion_subset_iffₓ'. -/
@[simp]
theorem iUnion_subset_iff {s : ι → Set α} {t : Set α} : (⋃ i, s i) ⊆ t ↔ ∀ i, s i ⊆ t :=
⟨fun h i => Subset.trans (le_iSup s _) h, iUnion_subset⟩
#align set.Union_subset_iff Set.iUnion_subset_iff
-/- warning: set.Union₂_subset_iff -> Set.iUnion₂_subset_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : Set.{u1} α}, Iff (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) t) (forall (i : ι) (j : κ i), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i j) t)
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {t : Set.{u3} α}, Iff (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) t) (forall (i : ι) (j : κ i), HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (s i j) t)
-Case conversion may be inaccurate. Consider using '#align set.Union₂_subset_iff Set.iUnion₂_subset_iffₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem iUnion₂_subset_iff {s : ∀ i, κ i → Set α} {t : Set α} :
(⋃ (i) (j), s i j) ⊆ t ↔ ∀ i j, s i j ⊆ t := by simp_rw [Union_subset_iff]
#align set.Union₂_subset_iff Set.iUnion₂_subset_iff
-/- warning: set.subset_Inter_iff -> Set.subset_iInter_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : Set.{u1} α} {t : ι -> (Set.{u1} α)}, Iff (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (Set.iInter.{u1, u2} α ι (fun (i : ι) => t i))) (forall (i : ι), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (t i))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : Set.{u2} α} {t : ι -> (Set.{u2} α)}, Iff (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s (Set.iInter.{u2, u1} α ι (fun (i : ι) => t i))) (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s (t i))
-Case conversion may be inaccurate. Consider using '#align set.subset_Inter_iff Set.subset_iInter_iffₓ'. -/
@[simp]
theorem subset_iInter_iff {s : Set α} {t : ι → Set α} : (s ⊆ ⋂ i, t i) ↔ ∀ i, s ⊆ t i :=
@le_iInf_iff (Set α) _ _ _ _
#align set.subset_Inter_iff Set.subset_iInter_iff
-/- warning: set.subset_Inter₂_iff -> Set.subset_iInter₂_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : Set.{u1} α} {t : forall (i : ι), (κ i) -> (Set.{u1} α)}, Iff (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => t i j)))) (forall (i : ι) (j : κ i), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (t i j))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : Set.{u3} α} {t : forall (i : ι), (κ i) -> (Set.{u3} α)}, Iff (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) s (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => t i j)))) (forall (i : ι) (j : κ i), HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) s (t i j))
-Case conversion may be inaccurate. Consider using '#align set.subset_Inter₂_iff Set.subset_iInter₂_iffₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
@[simp]
theorem subset_iInter₂_iff {s : Set α} {t : ∀ i, κ i → Set α} :
(s ⊆ ⋂ (i) (j), t i j) ↔ ∀ i j, s ⊆ t i j := by simp_rw [subset_Inter_iff]
#align set.subset_Inter₂_iff Set.subset_iInter₂_iff
-/- warning: set.subset_Union -> Set.subset_iUnion is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)) (i : ι), HasSubset.Subset.{u1} (Set.{u1} β) (Set.hasSubset.{u1} β) (s i) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => s i))
-but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)) (i : ι), HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (s i) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => s i))
-Case conversion may be inaccurate. Consider using '#align set.subset_Union Set.subset_iUnionₓ'. -/
theorem subset_iUnion : ∀ (s : ι → Set β) (i : ι), s i ⊆ ⋃ i, s i :=
le_iSup
#align set.subset_Union Set.subset_iUnion
-/- warning: set.Inter_subset -> Set.iInter_subset is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)) (i : ι), HasSubset.Subset.{u1} (Set.{u1} β) (Set.hasSubset.{u1} β) (Set.iInter.{u1, u2} β ι (fun (i : ι) => s i)) (s i)
-but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)) (i : ι), HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (Set.iInter.{u2, u1} β ι (fun (i : ι) => s i)) (s i)
-Case conversion may be inaccurate. Consider using '#align set.Inter_subset Set.iInter_subsetₓ'. -/
theorem iInter_subset : ∀ (s : ι → Set β) (i : ι), (⋂ i, s i) ⊆ s i :=
iInf_le
#align set.Inter_subset Set.iInter_subset
-/- warning: set.subset_Union₂ -> Set.subset_iUnion₂ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} (i : ι) (j : κ i), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i j) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => s i j)))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} (i : ι) (j : κ i), HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (s i j) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => s i j)))
-Case conversion may be inaccurate. Consider using '#align set.subset_Union₂ Set.subset_iUnion₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem subset_iUnion₂ {s : ∀ i, κ i → Set α} (i : ι) (j : κ i) : s i j ⊆ ⋃ (i) (j), s i j :=
@le_iSup₂ (Set α) _ _ _ _ i j
#align set.subset_Union₂ Set.subset_iUnion₂
-/- warning: set.Inter₂_subset -> Set.iInter₂_subset is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} (i : ι) (j : κ i), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) (s i j)
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} (i : ι) (j : κ i), HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) (s i j)
-Case conversion may be inaccurate. Consider using '#align set.Inter₂_subset Set.iInter₂_subsetₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem iInter₂_subset {s : ∀ i, κ i → Set α} (i : ι) (j : κ i) : (⋂ (i) (j), s i j) ⊆ s i j :=
@iInf₂_le (Set α) _ _ _ _ i j
#align set.Inter₂_subset Set.iInter₂_subset
-/- warning: set.subset_Union_of_subset -> Set.subset_iUnion_of_subset is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : Set.{u1} α} {t : ι -> (Set.{u1} α)} (i : ι), (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (t i)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (Set.iUnion.{u1, u2} α ι (fun (i : ι) => t i)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : Set.{u2} α} {t : ι -> (Set.{u2} α)} (i : ι), (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s (t i)) -> (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s (Set.iUnion.{u2, u1} α ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.subset_Union_of_subset Set.subset_iUnion_of_subsetₓ'. -/
/-- This rather trivial consequence of `subset_Union`is convenient with `apply`, and has `i`
explicit for this purpose. -/
theorem subset_iUnion_of_subset {s : Set α} {t : ι → Set α} (i : ι) (h : s ⊆ t i) : s ⊆ ⋃ i, t i :=
@le_iSup_of_le (Set α) _ _ _ _ i h
#align set.subset_Union_of_subset Set.subset_iUnion_of_subset
-/- warning: set.Inter_subset_of_subset -> Set.iInter_subset_of_subset is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {t : Set.{u1} α} (i : ι), (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i) t) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => s i)) t)
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {t : Set.{u2} α} (i : ι), (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (s i) t) -> (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => s i)) t)
-Case conversion may be inaccurate. Consider using '#align set.Inter_subset_of_subset Set.iInter_subset_of_subsetₓ'. -/
/-- This rather trivial consequence of `Inter_subset`is convenient with `apply`, and has `i`
explicit for this purpose. -/
theorem iInter_subset_of_subset {s : ι → Set α} {t : Set α} (i : ι) (h : s i ⊆ t) :
@@ -592,12 +388,6 @@ theorem iInter_subset_of_subset {s : ι → Set α} {t : Set α} (i : ι) (h : s
@iInf_le_of_le (Set α) _ _ _ _ i h
#align set.Inter_subset_of_subset Set.iInter_subset_of_subset
-/- warning: set.subset_Union₂_of_subset -> Set.subset_iUnion₂_of_subset is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : Set.{u1} α} {t : forall (i : ι), (κ i) -> (Set.{u1} α)} (i : ι) (j : κ i), (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (t i j)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => t i j))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : Set.{u3} α} {t : forall (i : ι), (κ i) -> (Set.{u3} α)} (i : ι) (j : κ i), (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) s (t i j)) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) s (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => t i j))))
-Case conversion may be inaccurate. Consider using '#align set.subset_Union₂_of_subset Set.subset_iUnion₂_of_subsetₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/-- This rather trivial consequence of `subset_Union₂` is convenient with `apply`, and has `i` and
`j` explicit for this purpose. -/
@@ -606,12 +396,6 @@ theorem subset_iUnion₂_of_subset {s : Set α} {t : ∀ i, κ i → Set α} (i
@le_iSup₂_of_le (Set α) _ _ _ _ _ i j h
#align set.subset_Union₂_of_subset Set.subset_iUnion₂_of_subset
-/- warning: set.Inter₂_subset_of_subset -> Set.iInter₂_subset_of_subset is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : Set.{u1} α} (i : ι) (j : κ i), (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i j) t) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) t)
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {t : Set.{u3} α} (i : ι) (j : κ i), (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (s i j) t) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) t)
-Case conversion may be inaccurate. Consider using '#align set.Inter₂_subset_of_subset Set.iInter₂_subset_of_subsetₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/-- This rather trivial consequence of `Inter₂_subset` is convenient with `apply`, and has `i` and
`j` explicit for this purpose. -/
@@ -620,22 +404,10 @@ theorem iInter₂_subset_of_subset {s : ∀ i, κ i → Set α} {t : Set α} (i
@iInf₂_le_of_le (Set α) _ _ _ _ _ i j h
#align set.Inter₂_subset_of_subset Set.iInter₂_subset_of_subset
-/- warning: set.Union_mono -> Set.iUnion_mono is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (forall (i : ι), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i) (t i)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i)) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => t i)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (s i) (t i)) -> (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.Union_mono Set.iUnion_monoₓ'. -/
theorem iUnion_mono {s t : ι → Set α} (h : ∀ i, s i ⊆ t i) : (⋃ i, s i) ⊆ ⋃ i, t i :=
@iSup_mono (Set α) _ _ s t h
#align set.Union_mono Set.iUnion_mono
-/- warning: set.Union₂_mono -> Set.iUnion₂_mono is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i : ι), (κ i) -> (Set.{u1} α)}, (forall (i : ι) (j : κ i), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i j) (t i j)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => t i j))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {t : forall (i : ι), (κ i) -> (Set.{u3} α)}, (forall (i : ι) (j : κ i), HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (s i j) (t i j)) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => t i j))))
-Case conversion may be inaccurate. Consider using '#align set.Union₂_mono Set.iUnion₂_monoₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem iUnion₂_mono {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j ⊆ t i j) :
@@ -643,22 +415,10 @@ theorem iUnion₂_mono {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j ⊆ t
@iSup₂_mono (Set α) _ _ _ s t h
#align set.Union₂_mono Set.iUnion₂_mono
-/- warning: set.Inter_mono -> Set.iInter_mono is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (forall (i : ι), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i) (t i)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => s i)) (Set.iInter.{u1, u2} α ι (fun (i : ι) => t i)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (s i) (t i)) -> (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => s i)) (Set.iInter.{u2, u1} α ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.Inter_mono Set.iInter_monoₓ'. -/
theorem iInter_mono {s t : ι → Set α} (h : ∀ i, s i ⊆ t i) : (⋂ i, s i) ⊆ ⋂ i, t i :=
@iInf_mono (Set α) _ _ s t h
#align set.Inter_mono Set.iInter_mono
-/- warning: set.Inter₂_mono -> Set.iInter₂_mono is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i : ι), (κ i) -> (Set.{u1} α)}, (forall (i : ι) (j : κ i), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i j) (t i j)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => t i j))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {t : forall (i : ι), (κ i) -> (Set.{u3} α)}, (forall (i : ι) (j : κ i), HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (s i j) (t i j)) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => t i j))))
-Case conversion may be inaccurate. Consider using '#align set.Inter₂_mono Set.iInter₂_monoₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem iInter₂_mono {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j ⊆ t i j) :
@@ -666,23 +426,11 @@ theorem iInter₂_mono {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j ⊆ t
@iInf₂_mono (Set α) _ _ _ s t h
#align set.Inter₂_mono Set.iInter₂_mono
-/- warning: set.Union_mono' -> Set.iUnion_mono' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι₂ : Sort.{u3}} {s : ι -> (Set.{u1} α)} {t : ι₂ -> (Set.{u1} α)}, (forall (i : ι), Exists.{u3} ι₂ (fun (j : ι₂) => HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i) (t j))) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i)) (Set.iUnion.{u1, u3} α ι₂ (fun (i : ι₂) => t i)))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u1}} {ι₂ : Sort.{u2}} {s : ι -> (Set.{u3} α)} {t : ι₂ -> (Set.{u3} α)}, (forall (i : ι), Exists.{u2} ι₂ (fun (j : ι₂) => HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (s i) (t j))) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i)) (Set.iUnion.{u3, u2} α ι₂ (fun (i : ι₂) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.Union_mono' Set.iUnion_mono'ₓ'. -/
theorem iUnion_mono' {s : ι → Set α} {t : ι₂ → Set α} (h : ∀ i, ∃ j, s i ⊆ t j) :
(⋃ i, s i) ⊆ ⋃ i, t i :=
@iSup_mono' (Set α) _ _ _ s t h
#align set.Union_mono' Set.iUnion_mono'
-/- warning: set.Union₂_mono' -> Set.iUnion₂_mono' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} {κ : ι -> Sort.{u4}} {κ' : ι' -> Sort.{u5}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i' : ι'), (κ' i') -> (Set.{u1} α)}, (forall (i : ι) (j : κ i), Exists.{u3} ι' (fun (i' : ι') => Exists.{u5} (κ' i') (fun (j' : κ' i') => HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i j) (t i' j')))) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u4} α (κ i) (fun (j : κ i) => s i j))) (Set.iUnion.{u1, u3} α ι' (fun (i' : ι') => Set.iUnion.{u1, u5} α (κ' i') (fun (j' : κ' i') => t i' j'))))
-but is expected to have type
- forall {α : Type.{u5}} {ι : Sort.{u2}} {ι' : Sort.{u4}} {κ : ι -> Sort.{u1}} {κ' : ι' -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u5} α)} {t : forall (i' : ι'), (κ' i') -> (Set.{u5} α)}, (forall (i : ι) (j : κ i), Exists.{u4} ι' (fun (i' : ι') => Exists.{u3} (κ' i') (fun (j' : κ' i') => HasSubset.Subset.{u5} (Set.{u5} α) (Set.instHasSubsetSet.{u5} α) (s i j) (t i' j')))) -> (HasSubset.Subset.{u5} (Set.{u5} α) (Set.instHasSubsetSet.{u5} α) (Set.iUnion.{u5, u2} α ι (fun (i : ι) => Set.iUnion.{u5, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.iUnion.{u5, u4} α ι' (fun (i' : ι') => Set.iUnion.{u5, u3} α (κ' i') (fun (j' : κ' i') => t i' j'))))
-Case conversion may be inaccurate. Consider using '#align set.Union₂_mono' Set.iUnion₂_mono'ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i' j') -/
theorem iUnion₂_mono' {s : ∀ i, κ i → Set α} {t : ∀ i', κ' i' → Set α}
@@ -690,12 +438,6 @@ theorem iUnion₂_mono' {s : ∀ i, κ i → Set α} {t : ∀ i', κ' i' → Set
@iSup₂_mono' (Set α) _ _ _ _ _ s t h
#align set.Union₂_mono' Set.iUnion₂_mono'
-/- warning: set.Inter_mono' -> Set.iInter_mono' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} {s : ι -> (Set.{u1} α)} {t : ι' -> (Set.{u1} α)}, (forall (j : ι'), Exists.{u2} ι (fun (i : ι) => HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i) (t j))) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => s i)) (Set.iInter.{u1, u3} α ι' (fun (j : ι') => t j)))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} {s : ι -> (Set.{u3} α)} {t : ι' -> (Set.{u3} α)}, (forall (j : ι'), Exists.{u2} ι (fun (i : ι) => HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (s i) (t j))) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.iInter.{u3, u2} α ι (fun (i : ι) => s i)) (Set.iInter.{u3, u1} α ι' (fun (j : ι') => t j)))
-Case conversion may be inaccurate. Consider using '#align set.Inter_mono' Set.iInter_mono'ₓ'. -/
theorem iInter_mono' {s : ι → Set α} {t : ι' → Set α} (h : ∀ j, ∃ i, s i ⊆ t j) :
(⋂ i, s i) ⊆ ⋂ j, t j :=
Set.subset_iInter fun j =>
@@ -703,12 +445,6 @@ theorem iInter_mono' {s : ι → Set α} {t : ι' → Set α} (h : ∀ j, ∃ i,
iInter_subset_of_subset i hi
#align set.Inter_mono' Set.iInter_mono'
-/- warning: set.Inter₂_mono' -> Set.iInter₂_mono' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} {κ : ι -> Sort.{u4}} {κ' : ι' -> Sort.{u5}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i' : ι'), (κ' i') -> (Set.{u1} α)}, (forall (i' : ι') (j' : κ' i'), Exists.{u2} ι (fun (i : ι) => Exists.{u4} (κ i) (fun (j : κ i) => HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i j) (t i' j')))) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u4} α (κ i) (fun (j : κ i) => s i j))) (Set.iInter.{u1, u3} α ι' (fun (i' : ι') => Set.iInter.{u1, u5} α (κ' i') (fun (j' : κ' i') => t i' j'))))
-but is expected to have type
- forall {α : Type.{u5}} {ι : Sort.{u4}} {ι' : Sort.{u2}} {κ : ι -> Sort.{u3}} {κ' : ι' -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u5} α)} {t : forall (i' : ι'), (κ' i') -> (Set.{u5} α)}, (forall (i' : ι') (j' : κ' i'), Exists.{u4} ι (fun (i : ι) => Exists.{u3} (κ i) (fun (j : κ i) => HasSubset.Subset.{u5} (Set.{u5} α) (Set.instHasSubsetSet.{u5} α) (s i j) (t i' j')))) -> (HasSubset.Subset.{u5} (Set.{u5} α) (Set.instHasSubsetSet.{u5} α) (Set.iInter.{u5, u4} α ι (fun (i : ι) => Set.iInter.{u5, u3} α (κ i) (fun (j : κ i) => s i j))) (Set.iInter.{u5, u2} α ι' (fun (i' : ι') => Set.iInter.{u5, u1} α (κ' i') (fun (j' : κ' i') => t i' j'))))
-Case conversion may be inaccurate. Consider using '#align set.Inter₂_mono' Set.iInter₂_mono'ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i' j') -/
theorem iInter₂_mono' {s : ∀ i, κ i → Set α} {t : ∀ i', κ' i' → Set α}
@@ -718,96 +454,42 @@ theorem iInter₂_mono' {s : ∀ i, κ i → Set α} {t : ∀ i', κ' i' → Set
(iInter₂_subset _ _).trans hst
#align set.Inter₂_mono' Set.iInter₂_mono'
-/- warning: set.Union₂_subset_Union -> Set.iUnion₂_subset_iUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (κ : ι -> Sort.{u3}) (s : ι -> (Set.{u1} α)), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => s i))) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (κ : ι -> Sort.{u3}) (s : ι -> (Set.{u2} α)), HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => Set.iUnion.{u2, u3} α (κ i) (fun (j : κ i) => s i))) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => s i))
-Case conversion may be inaccurate. Consider using '#align set.Union₂_subset_Union Set.iUnion₂_subset_iUnionₓ'. -/
theorem iUnion₂_subset_iUnion (κ : ι → Sort _) (s : ι → Set α) :
(⋃ (i) (j : κ i), s i) ⊆ ⋃ i, s i :=
iUnion_mono fun i => iUnion_subset fun h => Subset.rfl
#align set.Union₂_subset_Union Set.iUnion₂_subset_iUnion
-/- warning: set.Inter_subset_Inter₂ -> Set.iInter_subset_iInter₂ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (κ : ι -> Sort.{u3}) (s : ι -> (Set.{u1} α)), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => s i)) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => s i)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (κ : ι -> Sort.{u3}) (s : ι -> (Set.{u2} α)), HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => s i)) (Set.iInter.{u2, u1} α ι (fun (i : ι) => Set.iInter.{u2, u3} α (κ i) (fun (j : κ i) => s i)))
-Case conversion may be inaccurate. Consider using '#align set.Inter_subset_Inter₂ Set.iInter_subset_iInter₂ₓ'. -/
theorem iInter_subset_iInter₂ (κ : ι → Sort _) (s : ι → Set α) :
(⋂ i, s i) ⊆ ⋂ (i) (j : κ i), s i :=
iInter_mono fun i => subset_iInter fun h => Subset.rfl
#align set.Inter_subset_Inter₂ Set.iInter_subset_iInter₂
-/- warning: set.Union_set_of -> Set.iUnion_setOf is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (P : ι -> α -> Prop), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => setOf.{u1} α (fun (x : α) => P i x))) (setOf.{u1} α (fun (x : α) => Exists.{u2} ι (fun (i : ι) => P i x)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (P : ι -> α -> Prop), Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => setOf.{u2} α (fun (x : α) => P i x))) (setOf.{u2} α (fun (x : α) => Exists.{u1} ι (fun (i : ι) => P i x)))
-Case conversion may be inaccurate. Consider using '#align set.Union_set_of Set.iUnion_setOfₓ'. -/
theorem iUnion_setOf (P : ι → α → Prop) : (⋃ i, { x : α | P i x }) = { x : α | ∃ i, P i x } := by
ext; exact mem_Union
#align set.Union_set_of Set.iUnion_setOf
-/- warning: set.Inter_set_of -> Set.iInter_setOf is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (P : ι -> α -> Prop), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => setOf.{u1} α (fun (x : α) => P i x))) (setOf.{u1} α (fun (x : α) => forall (i : ι), P i x))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (P : ι -> α -> Prop), Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => setOf.{u2} α (fun (x : α) => P i x))) (setOf.{u2} α (fun (x : α) => forall (i : ι), P i x))
-Case conversion may be inaccurate. Consider using '#align set.Inter_set_of Set.iInter_setOfₓ'. -/
theorem iInter_setOf (P : ι → α → Prop) : (⋂ i, { x : α | P i x }) = { x : α | ∀ i, P i x } := by
ext; exact mem_Inter
#align set.Inter_set_of Set.iInter_setOf
-/- warning: set.Union_congr_of_surjective -> Set.iUnion_congr_of_surjective is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι₂ : Sort.{u3}} {f : ι -> (Set.{u1} α)} {g : ι₂ -> (Set.{u1} α)} (h : ι -> ι₂), (Function.Surjective.{u2, u3} ι ι₂ h) -> (forall (x : ι), Eq.{succ u1} (Set.{u1} α) (g (h x)) (f x)) -> (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (x : ι) => f x)) (Set.iUnion.{u1, u3} α ι₂ (fun (y : ι₂) => g y)))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {ι₂ : Sort.{u1}} {f : ι -> (Set.{u3} α)} {g : ι₂ -> (Set.{u3} α)} (h : ι -> ι₂), (Function.Surjective.{u2, u1} ι ι₂ h) -> (forall (x : ι), Eq.{succ u3} (Set.{u3} α) (g (h x)) (f x)) -> (Eq.{succ u3} (Set.{u3} α) (Set.iUnion.{u3, u2} α ι (fun (x : ι) => f x)) (Set.iUnion.{u3, u1} α ι₂ (fun (y : ι₂) => g y)))
-Case conversion may be inaccurate. Consider using '#align set.Union_congr_of_surjective Set.iUnion_congr_of_surjectiveₓ'. -/
theorem iUnion_congr_of_surjective {f : ι → Set α} {g : ι₂ → Set α} (h : ι → ι₂) (h1 : Surjective h)
(h2 : ∀ x, g (h x) = f x) : (⋃ x, f x) = ⋃ y, g y :=
h1.iSup_congr h h2
#align set.Union_congr_of_surjective Set.iUnion_congr_of_surjective
-/- warning: set.Inter_congr_of_surjective -> Set.iInter_congr_of_surjective is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι₂ : Sort.{u3}} {f : ι -> (Set.{u1} α)} {g : ι₂ -> (Set.{u1} α)} (h : ι -> ι₂), (Function.Surjective.{u2, u3} ι ι₂ h) -> (forall (x : ι), Eq.{succ u1} (Set.{u1} α) (g (h x)) (f x)) -> (Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (x : ι) => f x)) (Set.iInter.{u1, u3} α ι₂ (fun (y : ι₂) => g y)))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {ι₂ : Sort.{u1}} {f : ι -> (Set.{u3} α)} {g : ι₂ -> (Set.{u3} α)} (h : ι -> ι₂), (Function.Surjective.{u2, u1} ι ι₂ h) -> (forall (x : ι), Eq.{succ u3} (Set.{u3} α) (g (h x)) (f x)) -> (Eq.{succ u3} (Set.{u3} α) (Set.iInter.{u3, u2} α ι (fun (x : ι) => f x)) (Set.iInter.{u3, u1} α ι₂ (fun (y : ι₂) => g y)))
-Case conversion may be inaccurate. Consider using '#align set.Inter_congr_of_surjective Set.iInter_congr_of_surjectiveₓ'. -/
theorem iInter_congr_of_surjective {f : ι → Set α} {g : ι₂ → Set α} (h : ι → ι₂) (h1 : Surjective h)
(h2 : ∀ x, g (h x) = f x) : (⋂ x, f x) = ⋂ y, g y :=
h1.iInf_congr h h2
#align set.Inter_congr_of_surjective Set.iInter_congr_of_surjective
-/- warning: set.Union_congr -> Set.iUnion_congr is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (forall (i : ι), Eq.{succ u1} (Set.{u1} α) (s i) (t i)) -> (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i)) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => t i)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (forall (i : ι), Eq.{succ u2} (Set.{u2} α) (s i) (t i)) -> (Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.Union_congr Set.iUnion_congrₓ'. -/
theorem iUnion_congr {s t : ι → Set α} (h : ∀ i, s i = t i) : (⋃ i, s i) = ⋃ i, t i :=
iSup_congr h
#align set.Union_congr Set.iUnion_congr
-/- warning: set.Inter_congr -> Set.iInter_congr is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (forall (i : ι), Eq.{succ u1} (Set.{u1} α) (s i) (t i)) -> (Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => s i)) (Set.iInter.{u1, u2} α ι (fun (i : ι) => t i)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (forall (i : ι), Eq.{succ u2} (Set.{u2} α) (s i) (t i)) -> (Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => s i)) (Set.iInter.{u2, u1} α ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.Inter_congr Set.iInter_congrₓ'. -/
theorem iInter_congr {s t : ι → Set α} (h : ∀ i, s i = t i) : (⋂ i, s i) = ⋂ i, t i :=
iInf_congr h
#align set.Inter_congr Set.iInter_congr
-/- warning: set.Union₂_congr -> Set.iUnion₂_congr is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i : ι), (κ i) -> (Set.{u1} α)}, (forall (i : ι) (j : κ i), Eq.{succ u1} (Set.{u1} α) (s i j) (t i j)) -> (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => t i j))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {t : forall (i : ι), (κ i) -> (Set.{u3} α)}, (forall (i : ι) (j : κ i), Eq.{succ u3} (Set.{u3} α) (s i j) (t i j)) -> (Eq.{succ u3} (Set.{u3} α) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => t i j))))
-Case conversion may be inaccurate. Consider using '#align set.Union₂_congr Set.iUnion₂_congrₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem iUnion₂_congr {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j = t i j) :
@@ -815,12 +497,6 @@ theorem iUnion₂_congr {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j = t i
iUnion_congr fun i => iUnion_congr <| h i
#align set.Union₂_congr Set.iUnion₂_congr
-/- warning: set.Inter₂_congr -> Set.iInter₂_congr is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i : ι), (κ i) -> (Set.{u1} α)}, (forall (i : ι) (j : κ i), Eq.{succ u1} (Set.{u1} α) (s i j) (t i j)) -> (Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => t i j))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {t : forall (i : ι), (κ i) -> (Set.{u3} α)}, (forall (i : ι) (j : κ i), Eq.{succ u3} (Set.{u3} α) (s i j) (t i j)) -> (Eq.{succ u3} (Set.{u3} α) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => t i j))))
-Case conversion may be inaccurate. Consider using '#align set.Inter₂_congr Set.iInter₂_congrₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem iInter₂_congr {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j = t i j) :
@@ -832,255 +508,111 @@ section Nonempty
variable [Nonempty ι] {f : ι → Set α} {s : Set α}
-/- warning: set.Union_const -> Set.iUnion_const is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β), Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => s)) s
-but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : Nonempty.{u1} ι] (s : Set.{u2} β), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => s)) s
-Case conversion may be inaccurate. Consider using '#align set.Union_const Set.iUnion_constₓ'. -/
theorem iUnion_const (s : Set β) : (⋃ i : ι, s) = s :=
iSup_const
#align set.Union_const Set.iUnion_const
-/- warning: set.Inter_const -> Set.iInter_const is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β), Eq.{succ u1} (Set.{u1} β) (Set.iInter.{u1, u2} β ι (fun (i : ι) => s)) s
-but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : Nonempty.{u1} ι] (s : Set.{u2} β), Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, u1} β ι (fun (i : ι) => s)) s
-Case conversion may be inaccurate. Consider using '#align set.Inter_const Set.iInter_constₓ'. -/
theorem iInter_const (s : Set β) : (⋂ i : ι, s) = s :=
iInf_const
#align set.Inter_const Set.iInter_const
-/- warning: set.Union_eq_const -> Set.iUnion_eq_const is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] {f : ι -> (Set.{u1} α)} {s : Set.{u1} α}, (forall (i : ι), Eq.{succ u1} (Set.{u1} α) (f i) s) -> (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => f i)) s)
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : Nonempty.{u1} ι] {f : ι -> (Set.{u2} α)} {s : Set.{u2} α}, (forall (i : ι), Eq.{succ u2} (Set.{u2} α) (f i) s) -> (Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => f i)) s)
-Case conversion may be inaccurate. Consider using '#align set.Union_eq_const Set.iUnion_eq_constₓ'. -/
theorem iUnion_eq_const (hf : ∀ i, f i = s) : (⋃ i, f i) = s :=
(iUnion_congr hf).trans <| iUnion_const _
#align set.Union_eq_const Set.iUnion_eq_const
-/- warning: set.Inter_eq_const -> Set.iInter_eq_const is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] {f : ι -> (Set.{u1} α)} {s : Set.{u1} α}, (forall (i : ι), Eq.{succ u1} (Set.{u1} α) (f i) s) -> (Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => f i)) s)
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : Nonempty.{u1} ι] {f : ι -> (Set.{u2} α)} {s : Set.{u2} α}, (forall (i : ι), Eq.{succ u2} (Set.{u2} α) (f i) s) -> (Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => f i)) s)
-Case conversion may be inaccurate. Consider using '#align set.Inter_eq_const Set.iInter_eq_constₓ'. -/
theorem iInter_eq_const (hf : ∀ i, f i = s) : (⋂ i, f i) = s :=
(iInter_congr hf).trans <| iInter_const _
#align set.Inter_eq_const Set.iInter_eq_const
end Nonempty
-/- warning: set.compl_Union -> Set.compl_iUnion is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (HasCompl.compl.{u1} (Set.{u1} β) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => s i))) (Set.iInter.{u1, u2} β ι (fun (i : ι) => HasCompl.compl.{u1} (Set.{u1} β) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (s i)))
-but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (HasCompl.compl.{u2} (Set.{u2} β) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} β) (Set.instBooleanAlgebraSet.{u2} β)) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => s i))) (Set.iInter.{u2, u1} β ι (fun (i : ι) => HasCompl.compl.{u2} (Set.{u2} β) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} β) (Set.instBooleanAlgebraSet.{u2} β)) (s i)))
-Case conversion may be inaccurate. Consider using '#align set.compl_Union Set.compl_iUnionₓ'. -/
@[simp]
theorem compl_iUnion (s : ι → Set β) : (⋃ i, s i)ᶜ = ⋂ i, s iᶜ :=
compl_iSup
#align set.compl_Union Set.compl_iUnion
-/- warning: set.compl_Union₂ -> Set.compl_iUnion₂ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} (s : forall (i : ι), (κ i) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => s i j)))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (s i j))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : forall (i : ι), (κ i) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (HasCompl.compl.{u3} (Set.{u3} α) (BooleanAlgebra.toHasCompl.{u3} (Set.{u3} α) (Set.instBooleanAlgebraSet.{u3} α)) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => s i j)))) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => HasCompl.compl.{u3} (Set.{u3} α) (BooleanAlgebra.toHasCompl.{u3} (Set.{u3} α) (Set.instBooleanAlgebraSet.{u3} α)) (s i j))))
-Case conversion may be inaccurate. Consider using '#align set.compl_Union₂ Set.compl_iUnion₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem compl_iUnion₂ (s : ∀ i, κ i → Set α) : (⋃ (i) (j), s i j)ᶜ = ⋂ (i) (j), s i jᶜ := by
simp_rw [compl_Union]
#align set.compl_Union₂ Set.compl_iUnion₂
-/- warning: set.compl_Inter -> Set.compl_iInter is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (HasCompl.compl.{u1} (Set.{u1} β) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (Set.iInter.{u1, u2} β ι (fun (i : ι) => s i))) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => HasCompl.compl.{u1} (Set.{u1} β) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (s i)))
-but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (HasCompl.compl.{u2} (Set.{u2} β) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} β) (Set.instBooleanAlgebraSet.{u2} β)) (Set.iInter.{u2, u1} β ι (fun (i : ι) => s i))) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => HasCompl.compl.{u2} (Set.{u2} β) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} β) (Set.instBooleanAlgebraSet.{u2} β)) (s i)))
-Case conversion may be inaccurate. Consider using '#align set.compl_Inter Set.compl_iInterₓ'. -/
@[simp]
theorem compl_iInter (s : ι → Set β) : (⋂ i, s i)ᶜ = ⋃ i, s iᶜ :=
compl_iInf
#align set.compl_Inter Set.compl_iInter
-/- warning: set.compl_Inter₂ -> Set.compl_iInter₂ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} (s : forall (i : ι), (κ i) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => s i j)))) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (s i j))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : forall (i : ι), (κ i) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (HasCompl.compl.{u3} (Set.{u3} α) (BooleanAlgebra.toHasCompl.{u3} (Set.{u3} α) (Set.instBooleanAlgebraSet.{u3} α)) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => s i j)))) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => HasCompl.compl.{u3} (Set.{u3} α) (BooleanAlgebra.toHasCompl.{u3} (Set.{u3} α) (Set.instBooleanAlgebraSet.{u3} α)) (s i j))))
-Case conversion may be inaccurate. Consider using '#align set.compl_Inter₂ Set.compl_iInter₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem compl_iInter₂ (s : ∀ i, κ i → Set α) : (⋂ (i) (j), s i j)ᶜ = ⋃ (i) (j), s i jᶜ := by
simp_rw [compl_Inter]
#align set.compl_Inter₂ Set.compl_iInter₂
-/- warning: set.Union_eq_compl_Inter_compl -> Set.iUnion_eq_compl_iInter_compl is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => s i)) (HasCompl.compl.{u1} (Set.{u1} β) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (Set.iInter.{u1, u2} β ι (fun (i : ι) => HasCompl.compl.{u1} (Set.{u1} β) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (s i))))
-but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => s i)) (HasCompl.compl.{u2} (Set.{u2} β) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} β) (Set.instBooleanAlgebraSet.{u2} β)) (Set.iInter.{u2, u1} β ι (fun (i : ι) => HasCompl.compl.{u2} (Set.{u2} β) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} β) (Set.instBooleanAlgebraSet.{u2} β)) (s i))))
-Case conversion may be inaccurate. Consider using '#align set.Union_eq_compl_Inter_compl Set.iUnion_eq_compl_iInter_complₓ'. -/
-- classical -- complete_boolean_algebra
theorem iUnion_eq_compl_iInter_compl (s : ι → Set β) : (⋃ i, s i) = (⋂ i, s iᶜ)ᶜ := by
simp only [compl_Inter, compl_compl]
#align set.Union_eq_compl_Inter_compl Set.iUnion_eq_compl_iInter_compl
-/- warning: set.Inter_eq_compl_Union_compl -> Set.iInter_eq_compl_iUnion_compl is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iInter.{u1, u2} β ι (fun (i : ι) => s i)) (HasCompl.compl.{u1} (Set.{u1} β) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => HasCompl.compl.{u1} (Set.{u1} β) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (s i))))
-but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, u1} β ι (fun (i : ι) => s i)) (HasCompl.compl.{u2} (Set.{u2} β) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} β) (Set.instBooleanAlgebraSet.{u2} β)) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => HasCompl.compl.{u2} (Set.{u2} β) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} β) (Set.instBooleanAlgebraSet.{u2} β)) (s i))))
-Case conversion may be inaccurate. Consider using '#align set.Inter_eq_compl_Union_compl Set.iInter_eq_compl_iUnion_complₓ'. -/
-- classical -- complete_boolean_algebra
theorem iInter_eq_compl_iUnion_compl (s : ι → Set β) : (⋂ i, s i) = (⋃ i, s iᶜ)ᶜ := by
simp only [compl_Union, compl_compl]
#align set.Inter_eq_compl_Union_compl Set.iInter_eq_compl_iUnion_compl
-/- warning: set.inter_Union -> Set.inter_iUnion is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) s (Set.iUnion.{u1, u2} β ι (fun (i : ι) => t i))) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) s (t i)))
-but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : Set.{u2} β) (t : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Inter.inter.{u2} (Set.{u2} β) (Set.instInterSet.{u2} β) s (Set.iUnion.{u2, u1} β ι (fun (i : ι) => t i))) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => Inter.inter.{u2} (Set.{u2} β) (Set.instInterSet.{u2} β) s (t i)))
-Case conversion may be inaccurate. Consider using '#align set.inter_Union Set.inter_iUnionₓ'. -/
theorem inter_iUnion (s : Set β) (t : ι → Set β) : (s ∩ ⋃ i, t i) = ⋃ i, s ∩ t i :=
inf_iSup_eq _ _
#align set.inter_Union Set.inter_iUnion
-/- warning: set.Union_inter -> Set.iUnion_inter is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => t i)) s) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) (t i) s))
-but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : Set.{u2} β) (t : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Inter.inter.{u2} (Set.{u2} β) (Set.instInterSet.{u2} β) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => t i)) s) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => Inter.inter.{u2} (Set.{u2} β) (Set.instInterSet.{u2} β) (t i) s))
-Case conversion may be inaccurate. Consider using '#align set.Union_inter Set.iUnion_interₓ'. -/
theorem iUnion_inter (s : Set β) (t : ι → Set β) : (⋃ i, t i) ∩ s = ⋃ i, t i ∩ s :=
iSup_inf_eq _ _
#align set.Union_inter Set.iUnion_inter
-/- warning: set.Union_union_distrib -> Set.iUnion_union_distrib is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) (s i) (t i))) (Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => s i)) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => t i)))
-but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)) (t : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => Union.union.{u2} (Set.{u2} β) (Set.instUnionSet.{u2} β) (s i) (t i))) (Union.union.{u2} (Set.{u2} β) (Set.instUnionSet.{u2} β) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => s i)) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.Union_union_distrib Set.iUnion_union_distribₓ'. -/
theorem iUnion_union_distrib (s : ι → Set β) (t : ι → Set β) :
(⋃ i, s i ∪ t i) = (⋃ i, s i) ∪ ⋃ i, t i :=
iSup_sup_eq
#align set.Union_union_distrib Set.iUnion_union_distrib
-/- warning: set.Inter_inter_distrib -> Set.iInter_inter_distrib is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iInter.{u1, u2} β ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) (s i) (t i))) (Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) (Set.iInter.{u1, u2} β ι (fun (i : ι) => s i)) (Set.iInter.{u1, u2} β ι (fun (i : ι) => t i)))
-but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)) (t : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, u1} β ι (fun (i : ι) => Inter.inter.{u2} (Set.{u2} β) (Set.instInterSet.{u2} β) (s i) (t i))) (Inter.inter.{u2} (Set.{u2} β) (Set.instInterSet.{u2} β) (Set.iInter.{u2, u1} β ι (fun (i : ι) => s i)) (Set.iInter.{u2, u1} β ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.Inter_inter_distrib Set.iInter_inter_distribₓ'. -/
theorem iInter_inter_distrib (s : ι → Set β) (t : ι → Set β) :
(⋂ i, s i ∩ t i) = (⋂ i, s i) ∩ ⋂ i, t i :=
iInf_inf_eq
#align set.Inter_inter_distrib Set.iInter_inter_distrib
-/- warning: set.union_Union -> Set.union_iUnion is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) s (Set.iUnion.{u1, u2} β ι (fun (i : ι) => t i))) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) s (t i)))
-but is expected to have type
- forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Union.union.{u1} (Set.{u1} β) (Set.instUnionSet.{u1} β) s (Set.iUnion.{u1, u2} β ι (fun (i : ι) => t i))) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => Union.union.{u1} (Set.{u1} β) (Set.instUnionSet.{u1} β) s (t i)))
-Case conversion may be inaccurate. Consider using '#align set.union_Union Set.union_iUnionₓ'. -/
theorem union_iUnion [Nonempty ι] (s : Set β) (t : ι → Set β) : (s ∪ ⋃ i, t i) = ⋃ i, s ∪ t i :=
sup_iSup
#align set.union_Union Set.union_iUnion
-/- warning: set.Union_union -> Set.iUnion_union is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => t i)) s) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) (t i) s))
-but is expected to have type
- forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Union.union.{u1} (Set.{u1} β) (Set.instUnionSet.{u1} β) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => t i)) s) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => Union.union.{u1} (Set.{u1} β) (Set.instUnionSet.{u1} β) (t i) s))
-Case conversion may be inaccurate. Consider using '#align set.Union_union Set.iUnion_unionₓ'. -/
theorem iUnion_union [Nonempty ι] (s : Set β) (t : ι → Set β) : (⋃ i, t i) ∪ s = ⋃ i, t i ∪ s :=
iSup_sup
#align set.Union_union Set.iUnion_union
-/- warning: set.inter_Inter -> Set.inter_iInter is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) s (Set.iInter.{u1, u2} β ι (fun (i : ι) => t i))) (Set.iInter.{u1, u2} β ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) s (t i)))
-but is expected to have type
- forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Inter.inter.{u1} (Set.{u1} β) (Set.instInterSet.{u1} β) s (Set.iInter.{u1, u2} β ι (fun (i : ι) => t i))) (Set.iInter.{u1, u2} β ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} β) (Set.instInterSet.{u1} β) s (t i)))
-Case conversion may be inaccurate. Consider using '#align set.inter_Inter Set.inter_iInterₓ'. -/
theorem inter_iInter [Nonempty ι] (s : Set β) (t : ι → Set β) : (s ∩ ⋂ i, t i) = ⋂ i, s ∩ t i :=
inf_iInf
#align set.inter_Inter Set.inter_iInter
-/- warning: set.Inter_inter -> Set.iInter_inter is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) (Set.iInter.{u1, u2} β ι (fun (i : ι) => t i)) s) (Set.iInter.{u1, u2} β ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) (t i) s))
-but is expected to have type
- forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Inter.inter.{u1} (Set.{u1} β) (Set.instInterSet.{u1} β) (Set.iInter.{u1, u2} β ι (fun (i : ι) => t i)) s) (Set.iInter.{u1, u2} β ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} β) (Set.instInterSet.{u1} β) (t i) s))
-Case conversion may be inaccurate. Consider using '#align set.Inter_inter Set.iInter_interₓ'. -/
theorem iInter_inter [Nonempty ι] (s : Set β) (t : ι → Set β) : (⋂ i, t i) ∩ s = ⋂ i, t i ∩ s :=
iInf_inf
#align set.Inter_inter Set.iInter_inter
-/- warning: set.union_Inter -> Set.union_iInter is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) s (Set.iInter.{u1, u2} β ι (fun (i : ι) => t i))) (Set.iInter.{u1, u2} β ι (fun (i : ι) => Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) s (t i)))
-but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : Set.{u2} β) (t : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Union.union.{u2} (Set.{u2} β) (Set.instUnionSet.{u2} β) s (Set.iInter.{u2, u1} β ι (fun (i : ι) => t i))) (Set.iInter.{u2, u1} β ι (fun (i : ι) => Union.union.{u2} (Set.{u2} β) (Set.instUnionSet.{u2} β) s (t i)))
-Case conversion may be inaccurate. Consider using '#align set.union_Inter Set.union_iInterₓ'. -/
-- classical
theorem union_iInter (s : Set β) (t : ι → Set β) : (s ∪ ⋂ i, t i) = ⋂ i, s ∪ t i :=
sup_iInf_eq _ _
#align set.union_Inter Set.union_iInter
-/- warning: set.Inter_union -> Set.iInter_union is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)) (t : Set.{u1} β), Eq.{succ u1} (Set.{u1} β) (Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) (Set.iInter.{u1, u2} β ι (fun (i : ι) => s i)) t) (Set.iInter.{u1, u2} β ι (fun (i : ι) => Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) (s i) t))
-but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)) (t : Set.{u2} β), Eq.{succ u2} (Set.{u2} β) (Union.union.{u2} (Set.{u2} β) (Set.instUnionSet.{u2} β) (Set.iInter.{u2, u1} β ι (fun (i : ι) => s i)) t) (Set.iInter.{u2, u1} β ι (fun (i : ι) => Union.union.{u2} (Set.{u2} β) (Set.instUnionSet.{u2} β) (s i) t))
-Case conversion may be inaccurate. Consider using '#align set.Inter_union Set.iInter_unionₓ'. -/
theorem iInter_union (s : ι → Set β) (t : Set β) : (⋂ i, s i) ∪ t = ⋂ i, s i ∪ t :=
iInf_sup_eq _ _
#align set.Inter_union Set.iInter_union
-/- warning: set.Union_diff -> Set.iUnion_diff is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (SDiff.sdiff.{u1} (Set.{u1} β) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => t i)) s) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => SDiff.sdiff.{u1} (Set.{u1} β) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (t i) s))
-but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : Set.{u2} β) (t : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (SDiff.sdiff.{u2} (Set.{u2} β) (Set.instSDiffSet.{u2} β) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => t i)) s) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => SDiff.sdiff.{u2} (Set.{u2} β) (Set.instSDiffSet.{u2} β) (t i) s))
-Case conversion may be inaccurate. Consider using '#align set.Union_diff Set.iUnion_diffₓ'. -/
theorem iUnion_diff (s : Set β) (t : ι → Set β) : (⋃ i, t i) \ s = ⋃ i, t i \ s :=
iUnion_inter _ _
#align set.Union_diff Set.iUnion_diff
-/- warning: set.diff_Union -> Set.diff_iUnion is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (SDiff.sdiff.{u1} (Set.{u1} β) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) s (Set.iUnion.{u1, u2} β ι (fun (i : ι) => t i))) (Set.iInter.{u1, u2} β ι (fun (i : ι) => SDiff.sdiff.{u1} (Set.{u1} β) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) s (t i)))
-but is expected to have type
- forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (SDiff.sdiff.{u1} (Set.{u1} β) (Set.instSDiffSet.{u1} β) s (Set.iUnion.{u1, u2} β ι (fun (i : ι) => t i))) (Set.iInter.{u1, u2} β ι (fun (i : ι) => SDiff.sdiff.{u1} (Set.{u1} β) (Set.instSDiffSet.{u1} β) s (t i)))
-Case conversion may be inaccurate. Consider using '#align set.diff_Union Set.diff_iUnionₓ'. -/
theorem diff_iUnion [Nonempty ι] (s : Set β) (t : ι → Set β) : (s \ ⋃ i, t i) = ⋂ i, s \ t i := by
rw [diff_eq, compl_Union, inter_Inter] <;> rfl
#align set.diff_Union Set.diff_iUnion
-/- warning: set.diff_Inter -> Set.diff_iInter is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (SDiff.sdiff.{u1} (Set.{u1} β) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) s (Set.iInter.{u1, u2} β ι (fun (i : ι) => t i))) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => SDiff.sdiff.{u1} (Set.{u1} β) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) s (t i)))
-but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : Set.{u2} β) (t : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (SDiff.sdiff.{u2} (Set.{u2} β) (Set.instSDiffSet.{u2} β) s (Set.iInter.{u2, u1} β ι (fun (i : ι) => t i))) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => SDiff.sdiff.{u2} (Set.{u2} β) (Set.instSDiffSet.{u2} β) s (t i)))
-Case conversion may be inaccurate. Consider using '#align set.diff_Inter Set.diff_iInterₓ'. -/
theorem diff_iInter (s : Set β) (t : ι → Set β) : (s \ ⋂ i, t i) = ⋃ i, s \ t i := by
rw [diff_eq, compl_Inter, inter_Union] <;> rfl
#align set.diff_Inter Set.diff_iInter
-/- warning: set.directed_on_Union -> Set.directed_on_iUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {r : α -> α -> Prop} {f : ι -> (Set.{u1} α)}, (Directed.{u1, u2} (Set.{u1} α) ι (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α)) f) -> (forall (x : ι), DirectedOn.{u1} α r (f x)) -> (DirectedOn.{u1} α r (Set.iUnion.{u1, u2} α ι (fun (x : ι) => f x)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {r : α -> α -> Prop} {f : ι -> (Set.{u2} α)}, (Directed.{u2, u1} (Set.{u2} α) ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.8942 : Set.{u2} α) (x._@.Mathlib.Data.Set.Lattice._hyg.8944 : Set.{u2} α) => HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) x._@.Mathlib.Data.Set.Lattice._hyg.8942 x._@.Mathlib.Data.Set.Lattice._hyg.8944) f) -> (forall (x : ι), DirectedOn.{u2} α r (f x)) -> (DirectedOn.{u2} α r (Set.iUnion.{u2, u1} α ι (fun (x : ι) => f x)))
-Case conversion may be inaccurate. Consider using '#align set.directed_on_Union Set.directed_on_iUnionₓ'. -/
theorem directed_on_iUnion {r} {f : ι → Set α} (hd : Directed (· ⊆ ·) f)
(h : ∀ x, DirectedOn r (f x)) : DirectedOn r (⋃ x, f x) := by
simp only [DirectedOn, exists_prop, mem_Union, exists_imp] <;>
@@ -1090,87 +622,39 @@ theorem directed_on_iUnion {r} {f : ι → Set α} (hd : Directed (· ⊆ ·) f)
⟨x, ⟨z, xf⟩, xa₁, xa₂⟩
#align set.directed_on_Union Set.directed_on_iUnion
-/- warning: set.Union_inter_subset -> Set.iUnion_inter_subset is a dubious translation:
-lean 3 declaration is
- forall {ι : Sort.{u1}} {α : Type.{u2}} {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, HasSubset.Subset.{u2} (Set.{u2} α) (Set.hasSubset.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (s i) (t i))) (Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => t i)))
-but is expected to have type
- forall {ι : Sort.{u2}} {α : Type.{u1}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s i) (t i))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i)) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.Union_inter_subset Set.iUnion_inter_subsetₓ'. -/
theorem iUnion_inter_subset {ι α} {s t : ι → Set α} : (⋃ i, s i ∩ t i) ⊆ (⋃ i, s i) ∩ ⋃ i, t i :=
le_iSup_inf_iSup s t
#align set.Union_inter_subset Set.iUnion_inter_subset
-/- warning: set.Union_inter_of_monotone -> Set.iUnion_inter_of_monotone is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : Preorder.{u1} ι] [_inst_2 : IsDirected.{u1} ι (LE.le.{u1} ι (Preorder.toHasLe.{u1} ι _inst_1))] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (Monotone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) s) -> (Monotone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) t) -> (Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, succ u1} α ι (fun (i : ι) => Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (s i) (t i))) (Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (Set.iUnion.{u2, succ u1} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, succ u1} α ι (fun (i : ι) => t i))))
-but is expected to have type
- forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : IsDirected.{u2} ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.9216 : ι) (x._@.Mathlib.Data.Set.Lattice._hyg.9218 : ι) => LE.le.{u2} ι (Preorder.toLE.{u2} ι _inst_1) x._@.Mathlib.Data.Set.Lattice._hyg.9216 x._@.Mathlib.Data.Set.Lattice._hyg.9218)] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (Monotone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) s) -> (Monotone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) t) -> (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s i) (t i))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => s i)) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => t i))))
-Case conversion may be inaccurate. Consider using '#align set.Union_inter_of_monotone Set.iUnion_inter_of_monotoneₓ'. -/
theorem iUnion_inter_of_monotone {ι α} [Preorder ι] [IsDirected ι (· ≤ ·)] {s t : ι → Set α}
(hs : Monotone s) (ht : Monotone t) : (⋃ i, s i ∩ t i) = (⋃ i, s i) ∩ ⋃ i, t i :=
iSup_inf_of_monotone hs ht
#align set.Union_inter_of_monotone Set.iUnion_inter_of_monotone
-/- warning: set.Union_inter_of_antitone -> Set.iUnion_inter_of_antitone is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : Preorder.{u1} ι] [_inst_2 : IsDirected.{u1} ι (Function.swap.{succ u1, succ u1, 1} ι ι (fun (ᾰ : ι) (ᾰ : ι) => Prop) (LE.le.{u1} ι (Preorder.toHasLe.{u1} ι _inst_1)))] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (Antitone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) s) -> (Antitone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) t) -> (Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, succ u1} α ι (fun (i : ι) => Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (s i) (t i))) (Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (Set.iUnion.{u2, succ u1} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, succ u1} α ι (fun (i : ι) => t i))))
-but is expected to have type
- forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : IsDirected.{u2} ι (Function.swap.{succ u2, succ u2, 1} ι ι (fun (ᾰ : ι) (ᾰ : ι) => Prop) (fun (x._@.Mathlib.Data.Set.Lattice._hyg.9340 : ι) (x._@.Mathlib.Data.Set.Lattice._hyg.9342 : ι) => LE.le.{u2} ι (Preorder.toLE.{u2} ι _inst_1) x._@.Mathlib.Data.Set.Lattice._hyg.9340 x._@.Mathlib.Data.Set.Lattice._hyg.9342))] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (Antitone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) s) -> (Antitone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) t) -> (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s i) (t i))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => s i)) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => t i))))
-Case conversion may be inaccurate. Consider using '#align set.Union_inter_of_antitone Set.iUnion_inter_of_antitoneₓ'. -/
theorem iUnion_inter_of_antitone {ι α} [Preorder ι] [IsDirected ι (swap (· ≤ ·))] {s t : ι → Set α}
(hs : Antitone s) (ht : Antitone t) : (⋃ i, s i ∩ t i) = (⋃ i, s i) ∩ ⋃ i, t i :=
iSup_inf_of_antitone hs ht
#align set.Union_inter_of_antitone Set.iUnion_inter_of_antitone
-/- warning: set.Inter_union_of_monotone -> Set.iInter_union_of_monotone is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : Preorder.{u1} ι] [_inst_2 : IsDirected.{u1} ι (Function.swap.{succ u1, succ u1, 1} ι ι (fun (ᾰ : ι) (ᾰ : ι) => Prop) (LE.le.{u1} ι (Preorder.toHasLe.{u1} ι _inst_1)))] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (Monotone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) s) -> (Monotone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) t) -> (Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) (s i) (t i))) (Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => s i)) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => t i))))
-but is expected to have type
- forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : IsDirected.{u2} ι (Function.swap.{succ u2, succ u2, 1} ι ι (fun (ᾰ : ι) (ᾰ : ι) => Prop) (fun (x._@.Mathlib.Data.Set.Lattice._hyg.9464 : ι) (x._@.Mathlib.Data.Set.Lattice._hyg.9466 : ι) => LE.le.{u2} ι (Preorder.toLE.{u2} ι _inst_1) x._@.Mathlib.Data.Set.Lattice._hyg.9464 x._@.Mathlib.Data.Set.Lattice._hyg.9466))] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (Monotone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) s) -> (Monotone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) t) -> (Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (s i) (t i))) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => s i)) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => t i))))
-Case conversion may be inaccurate. Consider using '#align set.Inter_union_of_monotone Set.iInter_union_of_monotoneₓ'. -/
theorem iInter_union_of_monotone {ι α} [Preorder ι] [IsDirected ι (swap (· ≤ ·))] {s t : ι → Set α}
(hs : Monotone s) (ht : Monotone t) : (⋂ i, s i ∪ t i) = (⋂ i, s i) ∪ ⋂ i, t i :=
iInf_sup_of_monotone hs ht
#align set.Inter_union_of_monotone Set.iInter_union_of_monotone
-/- warning: set.Inter_union_of_antitone -> Set.iInter_union_of_antitone is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : Preorder.{u1} ι] [_inst_2 : IsDirected.{u1} ι (LE.le.{u1} ι (Preorder.toHasLe.{u1} ι _inst_1))] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (Antitone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) s) -> (Antitone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) t) -> (Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) (s i) (t i))) (Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => s i)) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => t i))))
-but is expected to have type
- forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : IsDirected.{u2} ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.9585 : ι) (x._@.Mathlib.Data.Set.Lattice._hyg.9587 : ι) => LE.le.{u2} ι (Preorder.toLE.{u2} ι _inst_1) x._@.Mathlib.Data.Set.Lattice._hyg.9585 x._@.Mathlib.Data.Set.Lattice._hyg.9587)] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (Antitone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) s) -> (Antitone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) t) -> (Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (s i) (t i))) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => s i)) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => t i))))
-Case conversion may be inaccurate. Consider using '#align set.Inter_union_of_antitone Set.iInter_union_of_antitoneₓ'. -/
theorem iInter_union_of_antitone {ι α} [Preorder ι] [IsDirected ι (· ≤ ·)] {s t : ι → Set α}
(hs : Antitone s) (ht : Antitone t) : (⋂ i, s i ∪ t i) = (⋂ i, s i) ∪ ⋂ i, t i :=
iInf_sup_of_antitone hs ht
#align set.Inter_union_of_antitone Set.iInter_union_of_antitone
-/- warning: set.Union_Inter_subset -> Set.iUnion_iInter_subset is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} {s : ι -> ι' -> (Set.{u1} α)}, HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iUnion.{u1, u3} α ι' (fun (j : ι') => Set.iInter.{u1, u2} α ι (fun (i : ι) => s i j))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α ι' (fun (j : ι') => s i j)))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u1}} {ι' : Sort.{u2}} {s : ι -> ι' -> (Set.{u3} α)}, HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.iUnion.{u3, u2} α ι' (fun (j : ι') => Set.iInter.{u3, u1} α ι (fun (i : ι) => s i j))) (Set.iInter.{u3, u1} α ι (fun (i : ι) => Set.iUnion.{u3, u2} α ι' (fun (j : ι') => s i j)))
-Case conversion may be inaccurate. Consider using '#align set.Union_Inter_subset Set.iUnion_iInter_subsetₓ'. -/
/-- An equality version of this lemma is `Union_Inter_of_monotone` in `data.set.finite`. -/
theorem iUnion_iInter_subset {s : ι → ι' → Set α} : (⋃ j, ⋂ i, s i j) ⊆ ⋂ i, ⋃ j, s i j :=
iSup_iInf_le_iInf_iSup (flip s)
#align set.Union_Inter_subset Set.iUnion_iInter_subset
-/- warning: set.Union_option -> Set.iUnion_option is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} (s : (Option.{u2} ι) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α (Option.{u2} ι) (fun (o : Option.{u2} ι) => s o)) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (s (Option.none.{u2} ι)) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => s (Option.some.{u2} ι i))))
-but is expected to have type
- forall {α : Type.{u1}} {ι : Type.{u2}} (s : (Option.{u2} ι) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α (Option.{u2} ι) (fun (o : Option.{u2} ι) => s o)) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (s (Option.none.{u2} ι)) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => s (Option.some.{u2} ι i))))
-Case conversion may be inaccurate. Consider using '#align set.Union_option Set.iUnion_optionₓ'. -/
theorem iUnion_option {ι} (s : Option ι → Set α) : (⋃ o, s o) = s none ∪ ⋃ i, s (some i) :=
iSup_option s
#align set.Union_option Set.iUnion_option
-/- warning: set.Inter_option -> Set.iInter_option is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} (s : (Option.{u2} ι) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, succ u2} α (Option.{u2} ι) (fun (o : Option.{u2} ι) => s o)) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s (Option.none.{u2} ι)) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => s (Option.some.{u2} ι i))))
-but is expected to have type
- forall {α : Type.{u1}} {ι : Type.{u2}} (s : (Option.{u2} ι) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, succ u2} α (Option.{u2} ι) (fun (o : Option.{u2} ι) => s o)) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s (Option.none.{u2} ι)) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => s (Option.some.{u2} ι i))))
-Case conversion may be inaccurate. Consider using '#align set.Inter_option Set.iInter_optionₓ'. -/
theorem iInter_option {ι} (s : Option ι → Set α) : (⋂ o, s o) = s none ∩ ⋂ i, s (some i) :=
iInf_option s
#align set.Inter_option Set.iInter_option
@@ -1179,45 +663,21 @@ section
variable (p : ι → Prop) [DecidablePred p]
-/- warning: set.Union_dite -> Set.iUnion_dite is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (p : ι -> Prop) [_inst_1 : DecidablePred.{u2} ι p] (f : forall (i : ι), (p i) -> (Set.{u1} α)) (g : forall (i : ι), (Not (p i)) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => dite.{succ u1} (Set.{u1} α) (p i) (_inst_1 i) (fun (h : p i) => f i h) (fun (h : Not (p i)) => g i h))) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, 0} α (p i) (fun (h : p i) => f i h))) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, 0} α (Not (p i)) (fun (h : Not (p i)) => g i h))))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (p : ι -> Prop) [_inst_1 : DecidablePred.{u1} ι p] (f : forall (i : ι), (p i) -> (Set.{u2} α)) (g : forall (i : ι), (Not (p i)) -> (Set.{u2} α)), Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => dite.{succ u2} (Set.{u2} α) (p i) (_inst_1 i) (fun (h : p i) => f i h) (fun (h : Not (p i)) => g i h))) (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => Set.iUnion.{u2, 0} α (p i) (fun (h : p i) => f i h))) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => Set.iUnion.{u2, 0} α (Not (p i)) (fun (h : Not (p i)) => g i h))))
-Case conversion may be inaccurate. Consider using '#align set.Union_dite Set.iUnion_diteₓ'. -/
theorem iUnion_dite (f : ∀ i, p i → Set α) (g : ∀ i, ¬p i → Set α) :
(⋃ i, if h : p i then f i h else g i h) = (⋃ (i) (h : p i), f i h) ∪ ⋃ (i) (h : ¬p i), g i h :=
iSup_dite _ _ _
#align set.Union_dite Set.iUnion_dite
-/- warning: set.Union_ite -> Set.iUnion_ite is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (p : ι -> Prop) [_inst_1 : DecidablePred.{u2} ι p] (f : ι -> (Set.{u1} α)) (g : ι -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => ite.{succ u1} (Set.{u1} α) (p i) (_inst_1 i) (f i) (g i))) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, 0} α (p i) (fun (h : p i) => f i))) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, 0} α (Not (p i)) (fun (h : Not (p i)) => g i))))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (p : ι -> Prop) [_inst_1 : DecidablePred.{u1} ι p] (f : ι -> (Set.{u2} α)) (g : ι -> (Set.{u2} α)), Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => ite.{succ u2} (Set.{u2} α) (p i) (_inst_1 i) (f i) (g i))) (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => Set.iUnion.{u2, 0} α (p i) (fun (h : p i) => f i))) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => Set.iUnion.{u2, 0} α (Not (p i)) (fun (h : Not (p i)) => g i))))
-Case conversion may be inaccurate. Consider using '#align set.Union_ite Set.iUnion_iteₓ'. -/
theorem iUnion_ite (f g : ι → Set α) :
(⋃ i, if p i then f i else g i) = (⋃ (i) (h : p i), f i) ∪ ⋃ (i) (h : ¬p i), g i :=
iUnion_dite _ _ _
#align set.Union_ite Set.iUnion_ite
-/- warning: set.Inter_dite -> Set.iInter_dite is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (p : ι -> Prop) [_inst_1 : DecidablePred.{u2} ι p] (f : forall (i : ι), (p i) -> (Set.{u1} α)) (g : forall (i : ι), (Not (p i)) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => dite.{succ u1} (Set.{u1} α) (p i) (_inst_1 i) (fun (h : p i) => f i h) (fun (h : Not (p i)) => g i h))) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, 0} α (p i) (fun (h : p i) => f i h))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, 0} α (Not (p i)) (fun (h : Not (p i)) => g i h))))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (p : ι -> Prop) [_inst_1 : DecidablePred.{u1} ι p] (f : forall (i : ι), (p i) -> (Set.{u2} α)) (g : forall (i : ι), (Not (p i)) -> (Set.{u2} α)), Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => dite.{succ u2} (Set.{u2} α) (p i) (_inst_1 i) (fun (h : p i) => f i h) (fun (h : Not (p i)) => g i h))) (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => Set.iInter.{u2, 0} α (p i) (fun (h : p i) => f i h))) (Set.iInter.{u2, u1} α ι (fun (i : ι) => Set.iInter.{u2, 0} α (Not (p i)) (fun (h : Not (p i)) => g i h))))
-Case conversion may be inaccurate. Consider using '#align set.Inter_dite Set.iInter_diteₓ'. -/
theorem iInter_dite (f : ∀ i, p i → Set α) (g : ∀ i, ¬p i → Set α) :
(⋂ i, if h : p i then f i h else g i h) = (⋂ (i) (h : p i), f i h) ∩ ⋂ (i) (h : ¬p i), g i h :=
iInf_dite _ _ _
#align set.Inter_dite Set.iInter_dite
-/- warning: set.Inter_ite -> Set.iInter_ite is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (p : ι -> Prop) [_inst_1 : DecidablePred.{u2} ι p] (f : ι -> (Set.{u1} α)) (g : ι -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => ite.{succ u1} (Set.{u1} α) (p i) (_inst_1 i) (f i) (g i))) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, 0} α (p i) (fun (h : p i) => f i))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, 0} α (Not (p i)) (fun (h : Not (p i)) => g i))))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (p : ι -> Prop) [_inst_1 : DecidablePred.{u1} ι p] (f : ι -> (Set.{u2} α)) (g : ι -> (Set.{u2} α)), Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => ite.{succ u2} (Set.{u2} α) (p i) (_inst_1 i) (f i) (g i))) (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => Set.iInter.{u2, 0} α (p i) (fun (h : p i) => f i))) (Set.iInter.{u2, u1} α ι (fun (i : ι) => Set.iInter.{u2, 0} α (Not (p i)) (fun (h : Not (p i)) => g i))))
-Case conversion may be inaccurate. Consider using '#align set.Inter_ite Set.iInter_iteₓ'. -/
theorem iInter_ite (f g : ι → Set α) :
(⋂ i, if p i then f i else g i) = (⋂ (i) (h : p i), f i) ∩ ⋂ (i) (h : ¬p i), g i :=
iInter_dite _ _ _
@@ -1225,12 +685,6 @@ theorem iInter_ite (f g : ι → Set α) :
end
-/- warning: set.image_projection_prod -> Set.image_projection_prod is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : ι -> Type.{u2}} {v : forall (i : ι), Set.{u2} (α i)}, (Set.Nonempty.{max u1 u2} (forall (i : ι), α i) (Set.pi.{u1, u2} ι (fun (i : ι) => α i) (Set.univ.{u1} ι) v)) -> (forall (i : ι), Eq.{succ u2} (Set.{u2} (α i)) (Set.image.{max u1 u2, u2} (forall (i : ι), α i) (α i) (fun (x : forall (i : ι), α i) => x i) (Set.iInter.{max u1 u2, succ u1} (forall (i : ι), α i) ι (fun (k : ι) => Set.preimage.{max u1 u2, u2} (forall (i : ι), α i) (α k) (fun (x : forall (j : ι), α j) => x k) (v k)))) (v i))
-but is expected to have type
- forall {ι : Type.{u2}} {α : ι -> Type.{u1}} {v : forall (i : ι), Set.{u1} (α i)}, (Set.Nonempty.{max u2 u1} (forall (i : ι), α i) (Set.pi.{u2, u1} ι (fun (i : ι) => α i) (Set.univ.{u2} ι) v)) -> (forall (i : ι), Eq.{succ u1} (Set.{u1} (α i)) (Set.image.{max u2 u1, u1} (forall (i : ι), α i) (α i) (fun (x : forall (i : ι), α i) => x i) (Set.iInter.{max u2 u1, succ u2} (forall (i : ι), α i) ι (fun (k : ι) => Set.preimage.{max u2 u1, u1} (forall (i : ι), α i) (α k) (fun (x : forall (j : ι), α j) => x k) (v k)))) (v i))
-Case conversion may be inaccurate. Consider using '#align set.image_projection_prod Set.image_projection_prodₓ'. -/
theorem image_projection_prod {ι : Type _} {α : ι → Type _} {v : ∀ i : ι, Set (α i)}
(hv : (pi univ v).Nonempty) (i : ι) :
((fun x : ∀ i : ι, α i => x i) '' ⋂ k, (fun x : ∀ j : ι, α j => x k) ⁻¹' v k) = v i := by
@@ -1290,23 +744,11 @@ theorem iUnion_exists {p : ι → Prop} {f : Exists p → Set α} :
#align set.Union_exists Set.iUnion_exists
-/
-/- warning: set.Union_empty -> Set.iUnion_empty is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}}, Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}}, Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => EmptyCollection.emptyCollection.{u2} (Set.{u2} α) (Set.instEmptyCollectionSet.{u2} α))) (EmptyCollection.emptyCollection.{u2} (Set.{u2} α) (Set.instEmptyCollectionSet.{u2} α))
-Case conversion may be inaccurate. Consider using '#align set.Union_empty Set.iUnion_emptyₓ'. -/
@[simp]
theorem iUnion_empty : (⋃ i : ι, ∅ : Set α) = ∅ :=
iSup_bot
#align set.Union_empty Set.iUnion_empty
-/- warning: set.Inter_univ -> Set.iInter_univ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}}, Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.univ.{u1} α)) (Set.univ.{u1} α)
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}}, Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => Set.univ.{u2} α)) (Set.univ.{u2} α)
-Case conversion may be inaccurate. Consider using '#align set.Inter_univ Set.iInter_univₓ'. -/
@[simp]
theorem iInter_univ : (⋂ i : ι, univ : Set α) = univ :=
iInf_top
@@ -1316,56 +758,26 @@ section
variable {s : ι → Set α}
-/- warning: set.Union_eq_empty -> Set.iUnion_eq_empty is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i)) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))) (forall (i : ι), Eq.{succ u1} (Set.{u1} α) (s i) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)}, Iff (Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => s i)) (EmptyCollection.emptyCollection.{u2} (Set.{u2} α) (Set.instEmptyCollectionSet.{u2} α))) (forall (i : ι), Eq.{succ u2} (Set.{u2} α) (s i) (EmptyCollection.emptyCollection.{u2} (Set.{u2} α) (Set.instEmptyCollectionSet.{u2} α)))
-Case conversion may be inaccurate. Consider using '#align set.Union_eq_empty Set.iUnion_eq_emptyₓ'. -/
@[simp]
theorem iUnion_eq_empty : (⋃ i, s i) = ∅ ↔ ∀ i, s i = ∅ :=
iSup_eq_bot
#align set.Union_eq_empty Set.iUnion_eq_empty
-/- warning: set.Inter_eq_univ -> Set.iInter_eq_univ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => s i)) (Set.univ.{u1} α)) (forall (i : ι), Eq.{succ u1} (Set.{u1} α) (s i) (Set.univ.{u1} α))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)}, Iff (Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => s i)) (Set.univ.{u2} α)) (forall (i : ι), Eq.{succ u2} (Set.{u2} α) (s i) (Set.univ.{u2} α))
-Case conversion may be inaccurate. Consider using '#align set.Inter_eq_univ Set.iInter_eq_univₓ'. -/
@[simp]
theorem iInter_eq_univ : (⋂ i, s i) = univ ↔ ∀ i, s i = univ :=
iInf_eq_top
#align set.Inter_eq_univ Set.iInter_eq_univ
-/- warning: set.nonempty_Union -> Set.nonempty_iUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)}, Iff (Set.Nonempty.{u1} α (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i))) (Exists.{u2} ι (fun (i : ι) => Set.Nonempty.{u1} α (s i)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)}, Iff (Set.Nonempty.{u2} α (Set.iUnion.{u2, u1} α ι (fun (i : ι) => s i))) (Exists.{u1} ι (fun (i : ι) => Set.Nonempty.{u2} α (s i)))
-Case conversion may be inaccurate. Consider using '#align set.nonempty_Union Set.nonempty_iUnionₓ'. -/
@[simp]
theorem nonempty_iUnion : (⋃ i, s i).Nonempty ↔ ∃ i, (s i).Nonempty := by
simp [nonempty_iff_ne_empty]
#align set.nonempty_Union Set.nonempty_iUnion
-/- warning: set.nonempty_bUnion -> Set.nonempty_biUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {t : Set.{u1} α} {s : α -> (Set.{u2} β)}, Iff (Set.Nonempty.{u2} β (Set.iUnion.{u2, succ u1} β α (fun (i : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i t) => s i)))) (Exists.{succ u1} α (fun (i : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i t) => Set.Nonempty.{u2} β (s i))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {t : Set.{u2} α} {s : α -> (Set.{u1} β)}, Iff (Set.Nonempty.{u1} β (Set.iUnion.{u1, succ u2} β α (fun (i : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i t) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i t) => s i)))) (Exists.{succ u2} α (fun (i : α) => And (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i t) (Set.Nonempty.{u1} β (s i))))
-Case conversion may be inaccurate. Consider using '#align set.nonempty_bUnion Set.nonempty_biUnionₓ'. -/
@[simp]
theorem nonempty_biUnion {t : Set α} {s : α → Set β} :
(⋃ i ∈ t, s i).Nonempty ↔ ∃ i ∈ t, (s i).Nonempty := by simp [nonempty_iff_ne_empty]
#align set.nonempty_bUnion Set.nonempty_biUnion
-/- warning: set.Union_nonempty_index -> Set.iUnion_nonempty_index is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (s : Set.{u1} α) (t : (Set.Nonempty.{u1} α s) -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, 0} β (Set.Nonempty.{u1} α s) (fun (h : Set.Nonempty.{u1} α s) => t h)) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t (Exists.intro.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) x H))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (s : Set.{u2} α) (t : (Set.Nonempty.{u2} α s) -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, 0} β (Set.Nonempty.{u2} α s) (fun (h : Set.Nonempty.{u2} α s) => t h)) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t (Exists.intro.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) x H))))
-Case conversion may be inaccurate. Consider using '#align set.Union_nonempty_index Set.iUnion_nonempty_indexₓ'. -/
theorem iUnion_nonempty_index (s : Set α) (t : s.Nonempty → Set β) :
(⋃ h, t h) = ⋃ x ∈ s, t ⟨x, ‹_›⟩ :=
iSup_exists
@@ -1405,23 +817,11 @@ theorem iUnion_iUnion_eq_right {b : β} {s : ∀ x : β, b = x → Set α} :
#align set.Union_Union_eq_right Set.iUnion_iUnion_eq_right
-/
-/- warning: set.Inter_or -> Set.iInter_or is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {p : Prop} {q : Prop} (s : (Or p q) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, 0} α (Or p q) (fun (h : Or p q) => s h)) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (Set.iInter.{u1, 0} α p (fun (h : p) => s (Or.inl p q h))) (Set.iInter.{u1, 0} α q (fun (h : q) => s (Or.inr p q h))))
-but is expected to have type
- forall {α : Type.{u1}} {p : Prop} {q : Prop} (s : (Or p q) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, 0} α (Or p q) (fun (h : Or p q) => s h)) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.iInter.{u1, 0} α p (fun (h : p) => s (Or.inl p q h))) (Set.iInter.{u1, 0} α q (fun (h : q) => s (Or.inr p q h))))
-Case conversion may be inaccurate. Consider using '#align set.Inter_or Set.iInter_orₓ'. -/
theorem iInter_or {p q : Prop} (s : p ∨ q → Set α) :
(⋂ h, s h) = (⋂ h : p, s (Or.inl h)) ∩ ⋂ h : q, s (Or.inr h) :=
iInf_or
#align set.Inter_or Set.iInter_or
-/- warning: set.Union_or -> Set.iUnion_or is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {p : Prop} {q : Prop} (s : (Or p q) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, 0} α (Or p q) (fun (h : Or p q) => s h)) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Set.iUnion.{u1, 0} α p (fun (i : p) => s (Or.inl p q i))) (Set.iUnion.{u1, 0} α q (fun (j : q) => s (Or.inr p q j))))
-but is expected to have type
- forall {α : Type.{u1}} {p : Prop} {q : Prop} (s : (Or p q) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, 0} α (Or p q) (fun (h : Or p q) => s h)) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (Set.iUnion.{u1, 0} α p (fun (i : p) => s (Or.inl p q i))) (Set.iUnion.{u1, 0} α q (fun (j : q) => s (Or.inr p q j))))
-Case conversion may be inaccurate. Consider using '#align set.Union_or Set.iUnion_orₓ'. -/
theorem iUnion_or {p q : Prop} (s : p ∨ q → Set α) :
(⋃ h, s h) = (⋃ i, s (Or.inl i)) ∪ ⋃ j, s (Or.inr j) :=
iSup_or
@@ -1441,36 +841,18 @@ theorem iInter_and {p q : Prop} (s : p ∧ q → Set α) : (⋂ h, s h) = ⋂ (h
#align set.Inter_and Set.iInter_and
-/
-/- warning: set.Union_comm -> Set.iUnion_comm is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} (s : ι -> ι' -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α ι' (fun (i' : ι') => s i i'))) (Set.iUnion.{u1, u3} α ι' (fun (i' : ι') => Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i i')))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} (s : ι -> ι' -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α ι' (fun (i' : ι') => s i i'))) (Set.iUnion.{u3, u1} α ι' (fun (i' : ι') => Set.iUnion.{u3, u2} α ι (fun (i : ι) => s i i')))
-Case conversion may be inaccurate. Consider using '#align set.Union_comm Set.iUnion_commₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i i') -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i' i) -/
theorem iUnion_comm (s : ι → ι' → Set α) : (⋃ (i) (i'), s i i') = ⋃ (i') (i), s i i' :=
iSup_comm
#align set.Union_comm Set.iUnion_comm
-/- warning: set.Inter_comm -> Set.iInter_comm is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} (s : ι -> ι' -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α ι' (fun (i' : ι') => s i i'))) (Set.iInter.{u1, u3} α ι' (fun (i' : ι') => Set.iInter.{u1, u2} α ι (fun (i : ι) => s i i')))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} (s : ι -> ι' -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α ι' (fun (i' : ι') => s i i'))) (Set.iInter.{u3, u1} α ι' (fun (i' : ι') => Set.iInter.{u3, u2} α ι (fun (i : ι) => s i i')))
-Case conversion may be inaccurate. Consider using '#align set.Inter_comm Set.iInter_commₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i i') -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i' i) -/
theorem iInter_comm (s : ι → ι' → Set α) : (⋂ (i) (i'), s i i') = ⋂ (i') (i), s i i' :=
iInf_comm
#align set.Inter_comm Set.iInter_comm
-/- warning: set.Union₂_comm -> Set.iUnion₂_comm is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ₁ : ι -> Sort.{u3}} {κ₂ : ι -> Sort.{u4}} (s : forall (i₁ : ι), (κ₁ i₁) -> (forall (i₂ : ι), (κ₂ i₂) -> (Set.{u1} α))), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i₁ : ι) => Set.iUnion.{u1, u3} α (κ₁ i₁) (fun (j₁ : κ₁ i₁) => Set.iUnion.{u1, u2} α ι (fun (i₂ : ι) => Set.iUnion.{u1, u4} α (κ₂ i₂) (fun (j₂ : κ₂ i₂) => s i₁ j₁ i₂ j₂))))) (Set.iUnion.{u1, u2} α ι (fun (i₂ : ι) => Set.iUnion.{u1, u4} α (κ₂ i₂) (fun (j₂ : κ₂ i₂) => Set.iUnion.{u1, u2} α ι (fun (i₁ : ι) => Set.iUnion.{u1, u3} α (κ₁ i₁) (fun (j₁ : κ₁ i₁) => s i₁ j₁ i₂ j₂)))))
-but is expected to have type
- forall {α : Type.{u4}} {ι : Sort.{u3}} {κ₁ : ι -> Sort.{u2}} {κ₂ : ι -> Sort.{u1}} (s : forall (i₁ : ι), (κ₁ i₁) -> (forall (i₂ : ι), (κ₂ i₂) -> (Set.{u4} α))), Eq.{succ u4} (Set.{u4} α) (Set.iUnion.{u4, u3} α ι (fun (i₁ : ι) => Set.iUnion.{u4, u2} α (κ₁ i₁) (fun (j₁ : κ₁ i₁) => Set.iUnion.{u4, u3} α ι (fun (i₂ : ι) => Set.iUnion.{u4, u1} α (κ₂ i₂) (fun (j₂ : κ₂ i₂) => s i₁ j₁ i₂ j₂))))) (Set.iUnion.{u4, u3} α ι (fun (i₂ : ι) => Set.iUnion.{u4, u1} α (κ₂ i₂) (fun (j₂ : κ₂ i₂) => Set.iUnion.{u4, u3} α ι (fun (i₁ : ι) => Set.iUnion.{u4, u2} α (κ₁ i₁) (fun (j₁ : κ₁ i₁) => s i₁ j₁ i₂ j₂)))))
-Case conversion may be inaccurate. Consider using '#align set.Union₂_comm Set.iUnion₂_commₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i₁ j₁ i₂ j₂) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i₂ j₂ i₁ j₁) -/
theorem iUnion₂_comm (s : ∀ i₁, κ₁ i₁ → ∀ i₂, κ₂ i₂ → Set α) :
@@ -1478,12 +860,6 @@ theorem iUnion₂_comm (s : ∀ i₁, κ₁ i₁ → ∀ i₂, κ₂ i₂ → Se
iSup₂_comm _
#align set.Union₂_comm Set.iUnion₂_comm
-/- warning: set.Inter₂_comm -> Set.iInter₂_comm is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ₁ : ι -> Sort.{u3}} {κ₂ : ι -> Sort.{u4}} (s : forall (i₁ : ι), (κ₁ i₁) -> (forall (i₂ : ι), (κ₂ i₂) -> (Set.{u1} α))), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i₁ : ι) => Set.iInter.{u1, u3} α (κ₁ i₁) (fun (j₁ : κ₁ i₁) => Set.iInter.{u1, u2} α ι (fun (i₂ : ι) => Set.iInter.{u1, u4} α (κ₂ i₂) (fun (j₂ : κ₂ i₂) => s i₁ j₁ i₂ j₂))))) (Set.iInter.{u1, u2} α ι (fun (i₂ : ι) => Set.iInter.{u1, u4} α (κ₂ i₂) (fun (j₂ : κ₂ i₂) => Set.iInter.{u1, u2} α ι (fun (i₁ : ι) => Set.iInter.{u1, u3} α (κ₁ i₁) (fun (j₁ : κ₁ i₁) => s i₁ j₁ i₂ j₂)))))
-but is expected to have type
- forall {α : Type.{u4}} {ι : Sort.{u3}} {κ₁ : ι -> Sort.{u2}} {κ₂ : ι -> Sort.{u1}} (s : forall (i₁ : ι), (κ₁ i₁) -> (forall (i₂ : ι), (κ₂ i₂) -> (Set.{u4} α))), Eq.{succ u4} (Set.{u4} α) (Set.iInter.{u4, u3} α ι (fun (i₁ : ι) => Set.iInter.{u4, u2} α (κ₁ i₁) (fun (j₁ : κ₁ i₁) => Set.iInter.{u4, u3} α ι (fun (i₂ : ι) => Set.iInter.{u4, u1} α (κ₂ i₂) (fun (j₂ : κ₂ i₂) => s i₁ j₁ i₂ j₂))))) (Set.iInter.{u4, u3} α ι (fun (i₂ : ι) => Set.iInter.{u4, u1} α (κ₂ i₂) (fun (j₂ : κ₂ i₂) => Set.iInter.{u4, u3} α ι (fun (i₁ : ι) => Set.iInter.{u4, u2} α (κ₁ i₁) (fun (j₁ : κ₁ i₁) => s i₁ j₁ i₂ j₂)))))
-Case conversion may be inaccurate. Consider using '#align set.Inter₂_comm Set.iInter₂_commₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i₁ j₁ i₂ j₂) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i₂ j₂ i₁ j₁) -/
theorem iInter₂_comm (s : ∀ i₁, κ₁ i₁ → ∀ i₂, κ₂ i₂ → Set α) :
@@ -1491,12 +867,6 @@ theorem iInter₂_comm (s : ∀ i₁, κ₁ i₁ → ∀ i₂, κ₂ i₂ → Se
iInf₂_comm _
#align set.Inter₂_comm Set.iInter₂_comm
-/- warning: set.bUnion_and -> Set.biUnion_and is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} (p : ι -> Prop) (q : ι -> ι' -> Prop) (s : forall (x : ι) (y : ι'), (And (p x) (q x y)) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (x : ι) => Set.iUnion.{u1, u3} α ι' (fun (y : ι') => Set.iUnion.{u1, 0} α (And (p x) (q x y)) (fun (h : And (p x) (q x y)) => s x y h)))) (Set.iUnion.{u1, u2} α ι (fun (x : ι) => Set.iUnion.{u1, 0} α (p x) (fun (hx : p x) => Set.iUnion.{u1, u3} α ι' (fun (y : ι') => Set.iUnion.{u1, 0} α (q x y) (fun (hy : q x y) => s x y (And.intro (p x) (q x y) hx hy))))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} (p : ι -> Prop) (q : ι -> ι' -> Prop) (s : forall (x : ι) (y : ι'), (And (p x) (q x y)) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Set.iUnion.{u3, u2} α ι (fun (x : ι) => Set.iUnion.{u3, u1} α ι' (fun (y : ι') => Set.iUnion.{u3, 0} α (And (p x) (q x y)) (fun (h : And (p x) (q x y)) => s x y h)))) (Set.iUnion.{u3, u2} α ι (fun (x : ι) => Set.iUnion.{u3, 0} α (p x) (fun (hx : p x) => Set.iUnion.{u3, u1} α ι' (fun (y : ι') => Set.iUnion.{u3, 0} α (q x y) (fun (hy : q x y) => s x y (And.intro (p x) (q x y) hx hy))))))
-Case conversion may be inaccurate. Consider using '#align set.bUnion_and Set.biUnion_andₓ'. -/
@[simp]
theorem biUnion_and (p : ι → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p x ∧ q x y → Set α) :
(⋃ (x : ι) (y : ι') (h : p x ∧ q x y), s x y h) =
@@ -1504,12 +874,6 @@ theorem biUnion_and (p : ι → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p
by simp only [Union_and, @Union_comm _ ι']
#align set.bUnion_and Set.biUnion_and
-/- warning: set.bUnion_and' -> Set.biUnion_and' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} (p : ι' -> Prop) (q : ι -> ι' -> Prop) (s : forall (x : ι) (y : ι'), (And (p y) (q x y)) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (x : ι) => Set.iUnion.{u1, u3} α ι' (fun (y : ι') => Set.iUnion.{u1, 0} α (And (p y) (q x y)) (fun (h : And (p y) (q x y)) => s x y h)))) (Set.iUnion.{u1, u3} α ι' (fun (y : ι') => Set.iUnion.{u1, 0} α (p y) (fun (hy : p y) => Set.iUnion.{u1, u2} α ι (fun (x : ι) => Set.iUnion.{u1, 0} α (q x y) (fun (hx : q x y) => s x y (And.intro (p y) (q x y) hy hx))))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} (p : ι' -> Prop) (q : ι -> ι' -> Prop) (s : forall (x : ι) (y : ι'), (And (p y) (q x y)) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Set.iUnion.{u3, u2} α ι (fun (x : ι) => Set.iUnion.{u3, u1} α ι' (fun (y : ι') => Set.iUnion.{u3, 0} α (And (p y) (q x y)) (fun (h : And (p y) (q x y)) => s x y h)))) (Set.iUnion.{u3, u1} α ι' (fun (y : ι') => Set.iUnion.{u3, 0} α (p y) (fun (hy : p y) => Set.iUnion.{u3, u2} α ι (fun (x : ι) => Set.iUnion.{u3, 0} α (q x y) (fun (hx : q x y) => s x y (And.intro (p y) (q x y) hy hx))))))
-Case conversion may be inaccurate. Consider using '#align set.bUnion_and' Set.biUnion_and'ₓ'. -/
@[simp]
theorem biUnion_and' (p : ι' → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p y ∧ q x y → Set α) :
(⋃ (x : ι) (y : ι') (h : p y ∧ q x y), s x y h) =
@@ -1517,12 +881,6 @@ theorem biUnion_and' (p : ι' → Prop) (q : ι → ι' → Prop) (s : ∀ x y,
by simp only [Union_and, @Union_comm _ ι]
#align set.bUnion_and' Set.biUnion_and'
-/- warning: set.bInter_and -> Set.biInter_and is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} (p : ι -> Prop) (q : ι -> ι' -> Prop) (s : forall (x : ι) (y : ι'), (And (p x) (q x y)) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (x : ι) => Set.iInter.{u1, u3} α ι' (fun (y : ι') => Set.iInter.{u1, 0} α (And (p x) (q x y)) (fun (h : And (p x) (q x y)) => s x y h)))) (Set.iInter.{u1, u2} α ι (fun (x : ι) => Set.iInter.{u1, 0} α (p x) (fun (hx : p x) => Set.iInter.{u1, u3} α ι' (fun (y : ι') => Set.iInter.{u1, 0} α (q x y) (fun (hy : q x y) => s x y (And.intro (p x) (q x y) hx hy))))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} (p : ι -> Prop) (q : ι -> ι' -> Prop) (s : forall (x : ι) (y : ι'), (And (p x) (q x y)) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Set.iInter.{u3, u2} α ι (fun (x : ι) => Set.iInter.{u3, u1} α ι' (fun (y : ι') => Set.iInter.{u3, 0} α (And (p x) (q x y)) (fun (h : And (p x) (q x y)) => s x y h)))) (Set.iInter.{u3, u2} α ι (fun (x : ι) => Set.iInter.{u3, 0} α (p x) (fun (hx : p x) => Set.iInter.{u3, u1} α ι' (fun (y : ι') => Set.iInter.{u3, 0} α (q x y) (fun (hy : q x y) => s x y (And.intro (p x) (q x y) hx hy))))))
-Case conversion may be inaccurate. Consider using '#align set.bInter_and Set.biInter_andₓ'. -/
@[simp]
theorem biInter_and (p : ι → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p x ∧ q x y → Set α) :
(⋂ (x : ι) (y : ι') (h : p x ∧ q x y), s x y h) =
@@ -1530,12 +888,6 @@ theorem biInter_and (p : ι → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p
by simp only [Inter_and, @Inter_comm _ ι']
#align set.bInter_and Set.biInter_and
-/- warning: set.bInter_and' -> Set.biInter_and' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} (p : ι' -> Prop) (q : ι -> ι' -> Prop) (s : forall (x : ι) (y : ι'), (And (p y) (q x y)) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (x : ι) => Set.iInter.{u1, u3} α ι' (fun (y : ι') => Set.iInter.{u1, 0} α (And (p y) (q x y)) (fun (h : And (p y) (q x y)) => s x y h)))) (Set.iInter.{u1, u3} α ι' (fun (y : ι') => Set.iInter.{u1, 0} α (p y) (fun (hy : p y) => Set.iInter.{u1, u2} α ι (fun (x : ι) => Set.iInter.{u1, 0} α (q x y) (fun (hx : q x y) => s x y (And.intro (p y) (q x y) hy hx))))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} (p : ι' -> Prop) (q : ι -> ι' -> Prop) (s : forall (x : ι) (y : ι'), (And (p y) (q x y)) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Set.iInter.{u3, u2} α ι (fun (x : ι) => Set.iInter.{u3, u1} α ι' (fun (y : ι') => Set.iInter.{u3, 0} α (And (p y) (q x y)) (fun (h : And (p y) (q x y)) => s x y h)))) (Set.iInter.{u3, u1} α ι' (fun (y : ι') => Set.iInter.{u3, 0} α (p y) (fun (hy : p y) => Set.iInter.{u3, u2} α ι (fun (x : ι) => Set.iInter.{u3, 0} α (q x y) (fun (hx : q x y) => s x y (And.intro (p y) (q x y) hy hx))))))
-Case conversion may be inaccurate. Consider using '#align set.bInter_and' Set.biInter_and'ₓ'. -/
@[simp]
theorem biInter_and' (p : ι' → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p y ∧ q x y → Set α) :
(⋂ (x : ι) (y : ι') (h : p y ∧ q x y), s x y h) =
@@ -1543,12 +895,6 @@ theorem biInter_and' (p : ι' → Prop) (q : ι → ι' → Prop) (s : ∀ x y,
by simp only [Inter_and, @Inter_comm _ ι]
#align set.bInter_and' Set.biInter_and'
-/- warning: set.Union_Union_eq_or_left -> Set.iUnion_iUnion_eq_or_left is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {b : β} {p : β -> Prop} {s : forall (x : β), (Or (Eq.{succ u2} β x b) (p x)) -> (Set.{u1} α)}, Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α β (fun (x : β) => Set.iUnion.{u1, 0} α (Or (Eq.{succ u2} β x b) (p x)) (fun (h : Or (Eq.{succ u2} β x b) (p x)) => s x h))) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (s b (Or.inl (Eq.{succ u2} β b b) (p b) (rfl.{succ u2} β b))) (Set.iUnion.{u1, succ u2} α β (fun (x : β) => Set.iUnion.{u1, 0} α (p x) (fun (h : p x) => s x (Or.inr (Eq.{succ u2} β x b) (p x) h)))))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {b : β} {p : β -> Prop} {s : forall (x : β), (Or (Eq.{succ u2} β x b) (p x)) -> (Set.{u1} α)}, Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α β (fun (x : β) => Set.iUnion.{u1, 0} α (Or (Eq.{succ u2} β x b) (p x)) (fun (h : Or (Eq.{succ u2} β x b) (p x)) => s x h))) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (s b (Or.inl (Eq.{succ u2} β b b) (p b) (rfl.{succ u2} β b))) (Set.iUnion.{u1, succ u2} α β (fun (x : β) => Set.iUnion.{u1, 0} α (p x) (fun (h : p x) => s x (Or.inr (Eq.{succ u2} β x b) (p x) h)))))
-Case conversion may be inaccurate. Consider using '#align set.Union_Union_eq_or_left Set.iUnion_iUnion_eq_or_leftₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (x h) -/
@[simp]
theorem iUnion_iUnion_eq_or_left {b : β} {p : β → Prop} {s : ∀ x : β, x = b ∨ p x → Set α} :
@@ -1556,12 +902,6 @@ theorem iUnion_iUnion_eq_or_left {b : β} {p : β → Prop} {s : ∀ x : β, x =
simp only [Union_or, Union_union_distrib, Union_Union_eq_left]
#align set.Union_Union_eq_or_left Set.iUnion_iUnion_eq_or_left
-/- warning: set.Inter_Inter_eq_or_left -> Set.iInter_iInter_eq_or_left is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {b : β} {p : β -> Prop} {s : forall (x : β), (Or (Eq.{succ u2} β x b) (p x)) -> (Set.{u1} α)}, Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, succ u2} α β (fun (x : β) => Set.iInter.{u1, 0} α (Or (Eq.{succ u2} β x b) (p x)) (fun (h : Or (Eq.{succ u2} β x b) (p x)) => s x h))) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s b (Or.inl (Eq.{succ u2} β b b) (p b) (rfl.{succ u2} β b))) (Set.iInter.{u1, succ u2} α β (fun (x : β) => Set.iInter.{u1, 0} α (p x) (fun (h : p x) => s x (Or.inr (Eq.{succ u2} β x b) (p x) h)))))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {b : β} {p : β -> Prop} {s : forall (x : β), (Or (Eq.{succ u2} β x b) (p x)) -> (Set.{u1} α)}, Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, succ u2} α β (fun (x : β) => Set.iInter.{u1, 0} α (Or (Eq.{succ u2} β x b) (p x)) (fun (h : Or (Eq.{succ u2} β x b) (p x)) => s x h))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s b (Or.inl (Eq.{succ u2} β b b) (p b) (rfl.{succ u2} β b))) (Set.iInter.{u1, succ u2} α β (fun (x : β) => Set.iInter.{u1, 0} α (p x) (fun (h : p x) => s x (Or.inr (Eq.{succ u2} β x b) (p x) h)))))
-Case conversion may be inaccurate. Consider using '#align set.Inter_Inter_eq_or_left Set.iInter_iInter_eq_or_leftₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (x h) -/
@[simp]
theorem iInter_iInter_eq_or_left {b : β} {p : β → Prop} {s : ∀ x : β, x = b ∨ p x → Set α} :
@@ -1572,136 +912,64 @@ theorem iInter_iInter_eq_or_left {b : β} {p : β → Prop} {s : ∀ x : β, x =
/-! ### Bounded unions and intersections -/
-/- warning: set.mem_bUnion -> Set.mem_biUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {t : α -> (Set.{u2} β)} {x : α} {y : β}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) y (t x)) -> (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) y (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {t : α -> (Set.{u1} β)} {x : α} {y : β}, (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) y (t x)) -> (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) y (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x))))
-Case conversion may be inaccurate. Consider using '#align set.mem_bUnion Set.mem_biUnionₓ'. -/
/-- A specialization of `mem_Union₂`. -/
theorem mem_biUnion {s : Set α} {t : α → Set β} {x : α} {y : β} (xs : x ∈ s) (ytx : y ∈ t x) :
y ∈ ⋃ x ∈ s, t x :=
mem_iUnion₂_of_mem xs ytx
#align set.mem_bUnion Set.mem_biUnion
-/- warning: set.mem_bInter -> Set.mem_biInter is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {t : α -> (Set.{u2} β)} {y : β}, (forall (x : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) y (t x))) -> (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) y (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {t : α -> (Set.{u1} β)} {y : β}, (forall (x : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) y (t x))) -> (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) y (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x))))
-Case conversion may be inaccurate. Consider using '#align set.mem_bInter Set.mem_biInterₓ'. -/
/-- A specialization of `mem_Inter₂`. -/
theorem mem_biInter {s : Set α} {t : α → Set β} {y : β} (h : ∀ x ∈ s, y ∈ t x) : y ∈ ⋂ x ∈ s, t x :=
mem_iInter₂_of_mem h
#align set.mem_bInter Set.mem_biInter
-/- warning: set.subset_bUnion_of_mem -> Set.subset_biUnion_of_mem is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {u : α -> (Set.{u2} β)} {x : α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (u x) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => u x))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {u : α -> (Set.{u1} β)} {x : α}, (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (u x) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => u x))))
-Case conversion may be inaccurate. Consider using '#align set.subset_bUnion_of_mem Set.subset_biUnion_of_memₓ'. -/
/-- A specialization of `subset_Union₂`. -/
theorem subset_biUnion_of_mem {s : Set α} {u : α → Set β} {x : α} (xs : x ∈ s) :
u x ⊆ ⋃ x ∈ s, u x :=
subset_iUnion₂ x xs
#align set.subset_bUnion_of_mem Set.subset_biUnion_of_mem
-/- warning: set.bInter_subset_of_mem -> Set.biInter_subset_of_mem is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {t : α -> (Set.{u2} β)} {x : α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x))) (t x))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {t : α -> (Set.{u1} β)} {x : α}, (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x))) (t x))
-Case conversion may be inaccurate. Consider using '#align set.bInter_subset_of_mem Set.biInter_subset_of_memₓ'. -/
/-- A specialization of `Inter₂_subset`. -/
theorem biInter_subset_of_mem {s : Set α} {t : α → Set β} {x : α} (xs : x ∈ s) :
(⋂ x ∈ s, t x) ⊆ t x :=
iInter₂_subset x xs
#align set.bInter_subset_of_mem Set.biInter_subset_of_mem
-/- warning: set.bUnion_subset_bUnion_left -> Set.biUnion_subset_biUnion_left is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {s' : Set.{u1} α} {t : α -> (Set.{u2} β)}, (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s s') -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x))) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s') (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s') => t x))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {s' : Set.{u2} α} {t : α -> (Set.{u1} β)}, (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s s') -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x))) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s') (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s') => t x))))
-Case conversion may be inaccurate. Consider using '#align set.bUnion_subset_bUnion_left Set.biUnion_subset_biUnion_leftₓ'. -/
theorem biUnion_subset_biUnion_left {s s' : Set α} {t : α → Set β} (h : s ⊆ s') :
(⋃ x ∈ s, t x) ⊆ ⋃ x ∈ s', t x :=
iUnion₂_subset fun x hx => subset_biUnion_of_mem <| h hx
#align set.bUnion_subset_bUnion_left Set.biUnion_subset_biUnion_left
-/- warning: set.bInter_subset_bInter_left -> Set.biInter_subset_biInter_left is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {s' : Set.{u1} α} {t : α -> (Set.{u2} β)}, (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s' s) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x))) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s') (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s') => t x))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {s' : Set.{u2} α} {t : α -> (Set.{u1} β)}, (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s' s) -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x))) (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s') (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s') => t x))))
-Case conversion may be inaccurate. Consider using '#align set.bInter_subset_bInter_left Set.biInter_subset_biInter_leftₓ'. -/
theorem biInter_subset_biInter_left {s s' : Set α} {t : α → Set β} (h : s' ⊆ s) :
(⋂ x ∈ s, t x) ⊆ ⋂ x ∈ s', t x :=
subset_iInter₂ fun x hx => biInter_subset_of_mem <| h hx
#align set.bInter_subset_bInter_left Set.biInter_subset_biInter_left
-/- warning: set.bUnion_mono -> Set.biUnion_mono is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {s' : Set.{u1} α} {t : α -> (Set.{u2} β)} {t' : α -> (Set.{u2} β)}, (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s' s) -> (forall (x : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (t x) (t' x))) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s') (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s') => t x))) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t' x))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {s' : Set.{u2} α} {t : α -> (Set.{u1} β)} {t' : α -> (Set.{u1} β)}, (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s' s) -> (forall (x : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (t x) (t' x))) -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s') (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s') => t x))) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t' x))))
-Case conversion may be inaccurate. Consider using '#align set.bUnion_mono Set.biUnion_monoₓ'. -/
theorem biUnion_mono {s s' : Set α} {t t' : α → Set β} (hs : s' ⊆ s) (h : ∀ x ∈ s, t x ⊆ t' x) :
(⋃ x ∈ s', t x) ⊆ ⋃ x ∈ s, t' x :=
(biUnion_subset_biUnion_left hs).trans <| iUnion₂_mono h
#align set.bUnion_mono Set.biUnion_mono
-/- warning: set.bInter_mono -> Set.biInter_mono is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {s' : Set.{u1} α} {t : α -> (Set.{u2} β)} {t' : α -> (Set.{u2} β)}, (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s s') -> (forall (x : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (t x) (t' x))) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s') (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s') => t x))) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t' x))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {s' : Set.{u2} α} {t : α -> (Set.{u1} β)} {t' : α -> (Set.{u1} β)}, (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s s') -> (forall (x : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (t x) (t' x))) -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s') (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s') => t x))) (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t' x))))
-Case conversion may be inaccurate. Consider using '#align set.bInter_mono Set.biInter_monoₓ'. -/
theorem biInter_mono {s s' : Set α} {t t' : α → Set β} (hs : s ⊆ s') (h : ∀ x ∈ s, t x ⊆ t' x) :
(⋂ x ∈ s', t x) ⊆ ⋂ x ∈ s, t' x :=
(biInter_subset_biInter_left hs).trans <| iInter₂_mono h
#align set.bInter_mono Set.biInter_mono
-/- warning: set.bUnion_eq_Union -> Set.biUnion_eq_iUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (s : Set.{u1} α) (t : forall (x : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x H))) (Set.iUnion.{u2, succ u1} β (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) (fun (x : coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) => t ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s))))) x) (Subtype.property.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) x)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (s : Set.{u2} α) (t : forall (x : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x H))) (Set.iUnion.{u1, succ u2} β (Set.Elem.{u2} α s) (fun (x : Set.Elem.{u2} α s) => t (Subtype.val.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) x) (Subtype.property.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) x)))
-Case conversion may be inaccurate. Consider using '#align set.bUnion_eq_Union Set.biUnion_eq_iUnionₓ'. -/
theorem biUnion_eq_iUnion (s : Set α) (t : ∀ x ∈ s, Set β) :
(⋃ x ∈ s, t x ‹_›) = ⋃ x : s, t x x.2 :=
iSup_subtype'
#align set.bUnion_eq_Union Set.biUnion_eq_iUnion
-/- warning: set.bInter_eq_Inter -> Set.biInter_eq_iInter is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (s : Set.{u1} α) (t : forall (x : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x H))) (Set.iInter.{u2, succ u1} β (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) (fun (x : coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) => t ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s))))) x) (Subtype.property.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) x)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (s : Set.{u2} α) (t : forall (x : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x H))) (Set.iInter.{u1, succ u2} β (Set.Elem.{u2} α s) (fun (x : Set.Elem.{u2} α s) => t (Subtype.val.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) x) (Subtype.property.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) x)))
-Case conversion may be inaccurate. Consider using '#align set.bInter_eq_Inter Set.biInter_eq_iInterₓ'. -/
theorem biInter_eq_iInter (s : Set α) (t : ∀ x ∈ s, Set β) :
(⋂ x ∈ s, t x ‹_›) = ⋂ x : s, t x x.2 :=
iInf_subtype'
#align set.bInter_eq_Inter Set.biInter_eq_iInter
-/- warning: set.Union_subtype -> Set.iUnion_subtype is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (p : α -> Prop) (s : (Subtype.{succ u1} α (fun (x : α) => p x)) -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u1} β (Subtype.{succ u1} α (fun (x : α) => p x)) (fun (x : Subtype.{succ u1} α (fun (x : α) => p x)) => s x)) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (p x) (fun (hx : p x) => s (Subtype.mk.{succ u1} α (fun (x : α) => p x) x hx))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (p : α -> Prop) (s : (Subtype.{succ u2} α (fun (x : α) => p x)) -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, succ u2} β (Subtype.{succ u2} α (fun (x : α) => p x)) (fun (x : Subtype.{succ u2} α (fun (x : α) => p x)) => s x)) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (p x) (fun (hx : p x) => s (Subtype.mk.{succ u2} α (fun (x : α) => p x) x hx))))
-Case conversion may be inaccurate. Consider using '#align set.Union_subtype Set.iUnion_subtypeₓ'. -/
theorem iUnion_subtype (p : α → Prop) (s : { x // p x } → Set β) :
(⋃ x : { x // p x }, s x) = ⋃ (x) (hx : p x), s ⟨x, hx⟩ :=
iSup_subtype
#align set.Union_subtype Set.iUnion_subtype
-/- warning: set.Inter_subtype -> Set.iInter_subtype is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (p : α -> Prop) (s : (Subtype.{succ u1} α (fun (x : α) => p x)) -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, succ u1} β (Subtype.{succ u1} α (fun (x : α) => p x)) (fun (x : Subtype.{succ u1} α (fun (x : α) => p x)) => s x)) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (p x) (fun (hx : p x) => s (Subtype.mk.{succ u1} α (fun (x : α) => p x) x hx))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (p : α -> Prop) (s : (Subtype.{succ u2} α (fun (x : α) => p x)) -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iInter.{u1, succ u2} β (Subtype.{succ u2} α (fun (x : α) => p x)) (fun (x : Subtype.{succ u2} α (fun (x : α) => p x)) => s x)) (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (p x) (fun (hx : p x) => s (Subtype.mk.{succ u2} α (fun (x : α) => p x) x hx))))
-Case conversion may be inaccurate. Consider using '#align set.Inter_subtype Set.iInter_subtypeₓ'. -/
theorem iInter_subtype (p : α → Prop) (s : { x // p x } → Set β) :
(⋂ x : { x // p x }, s x) = ⋂ (x) (hx : p x), s ⟨x, hx⟩ :=
iInf_subtype
@@ -1742,44 +1010,20 @@ theorem biInter_singleton (a : α) (s : α → Set β) : (⋂ x ∈ ({a} : Set
#align set.bInter_singleton Set.biInter_singleton
-/
-/- warning: set.bInter_union -> Set.biInter_union is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (s : Set.{u1} α) (t : Set.{u1} α) (u : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s t)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s t)) => u x))) (Inter.inter.{u2} (Set.{u2} β) (Set.hasInter.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => u x))) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x t) => u x))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (s : Set.{u2} α) (t : Set.{u2} α) (u : α -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) s t)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) s t)) => u x))) (Inter.inter.{u1} (Set.{u1} β) (Set.instInterSet.{u1} β) (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => u x))) (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x t) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x t) => u x))))
-Case conversion may be inaccurate. Consider using '#align set.bInter_union Set.biInter_unionₓ'. -/
theorem biInter_union (s t : Set α) (u : α → Set β) :
(⋂ x ∈ s ∪ t, u x) = (⋂ x ∈ s, u x) ∩ ⋂ x ∈ t, u x :=
iInf_union
#align set.bInter_union Set.biInter_union
-/- warning: set.bInter_insert -> Set.biInter_insert is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (a : α) (s : Set.{u1} α) (t : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.hasInsert.{u1} α) a s)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.hasInsert.{u1} α) a s)) => t x))) (Inter.inter.{u2} (Set.{u2} β) (Set.hasInter.{u2} β) (t a) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (a : α) (s : Set.{u2} α) (t : α -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Insert.insert.{u2, u2} α (Set.{u2} α) (Set.instInsertSet.{u2} α) a s)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Insert.insert.{u2, u2} α (Set.{u2} α) (Set.instInsertSet.{u2} α) a s)) => t x))) (Inter.inter.{u1} (Set.{u1} β) (Set.instInterSet.{u1} β) (t a) (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x))))
-Case conversion may be inaccurate. Consider using '#align set.bInter_insert Set.biInter_insertₓ'. -/
theorem biInter_insert (a : α) (s : Set α) (t : α → Set β) :
(⋂ x ∈ insert a s, t x) = t a ∩ ⋂ x ∈ s, t x := by simp
#align set.bInter_insert Set.biInter_insert
-/- warning: set.bInter_pair -> Set.biInter_pair is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (a : α) (b : α) (s : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.hasInsert.{u1} α) a (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.hasSingleton.{u1} α) b))) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.hasInsert.{u1} α) a (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.hasSingleton.{u1} α) b))) => s x))) (Inter.inter.{u2} (Set.{u2} β) (Set.hasInter.{u2} β) (s a) (s b))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} (a : α) (b : α) (s : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.instInsertSet.{u1} α) a (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.instSingletonSet.{u1} α) b))) (fun (H : Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.instInsertSet.{u1} α) a (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.instSingletonSet.{u1} α) b))) => s x))) (Inter.inter.{u2} (Set.{u2} β) (Set.instInterSet.{u2} β) (s a) (s b))
-Case conversion may be inaccurate. Consider using '#align set.bInter_pair Set.biInter_pairₓ'. -/
-- TODO(Jeremy): another example of where an annotation is needed
theorem biInter_pair (a b : α) (s : α → Set β) : (⋂ x ∈ ({a, b} : Set α), s x) = s a ∩ s b := by
rw [bInter_insert, bInter_singleton]
#align set.bInter_pair Set.biInter_pair
-/- warning: set.bInter_inter -> Set.biInter_inter is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} {s : Set.{u1} ι}, (Set.Nonempty.{u1} ι s) -> (forall (f : ι -> (Set.{u2} α)) (t : Set.{u2} α), Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => Set.iInter.{u2, 0} α (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i s) (fun (H : Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i s) => Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (f i) t))) (Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => Set.iInter.{u2, 0} α (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i s) (fun (H : Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i s) => f i))) t))
-but is expected to have type
- forall {ι : Type.{u2}} {α : Type.{u1}} {s : Set.{u2} ι}, (Set.Nonempty.{u2} ι s) -> (forall (f : ι -> (Set.{u1} α)) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => Set.iInter.{u1, 0} α (Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i s) (fun (H : Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i s) => Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (f i) t))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => Set.iInter.{u1, 0} α (Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i s) (fun (H : Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i s) => f i))) t))
-Case conversion may be inaccurate. Consider using '#align set.bInter_inter Set.biInter_interₓ'. -/
theorem biInter_inter {ι α : Type _} {s : Set ι} (hs : s.Nonempty) (f : ι → Set α) (t : Set α) :
(⋂ i ∈ s, f i ∩ t) = (⋂ i ∈ s, f i) ∩ t :=
by
@@ -1787,12 +1031,6 @@ theorem biInter_inter {ι α : Type _} {s : Set ι} (hs : s.Nonempty) (f : ι
simp [bInter_eq_Inter, ← Inter_inter]
#align set.bInter_inter Set.biInter_inter
-/- warning: set.inter_bInter -> Set.inter_biInter is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} {s : Set.{u1} ι}, (Set.Nonempty.{u1} ι s) -> (forall (f : ι -> (Set.{u2} α)) (t : Set.{u2} α), Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => Set.iInter.{u2, 0} α (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i s) (fun (H : Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i s) => Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) t (f i)))) (Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) t (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => Set.iInter.{u2, 0} α (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i s) (fun (H : Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i s) => f i)))))
-but is expected to have type
- forall {ι : Type.{u2}} {α : Type.{u1}} {s : Set.{u2} ι}, (Set.Nonempty.{u2} ι s) -> (forall (f : ι -> (Set.{u1} α)) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => Set.iInter.{u1, 0} α (Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i s) (fun (H : Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i s) => Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) t (f i)))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) t (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => Set.iInter.{u1, 0} α (Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i s) (fun (H : Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i s) => f i)))))
-Case conversion may be inaccurate. Consider using '#align set.inter_bInter Set.inter_biInterₓ'. -/
theorem inter_biInter {ι α : Type _} {s : Set ι} (hs : s.Nonempty) (f : ι → Set α) (t : Set α) :
(⋂ i ∈ s, t ∩ f i) = t ∩ ⋂ i ∈ s, f i :=
by
@@ -1825,103 +1063,49 @@ theorem biUnion_of_singleton (s : Set α) : (⋃ x ∈ s, {x}) = s :=
#align set.bUnion_of_singleton Set.biUnion_of_singleton
-/
-/- warning: set.bUnion_union -> Set.biUnion_union is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (s : Set.{u1} α) (t : Set.{u1} α) (u : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s t)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s t)) => u x))) (Union.union.{u2} (Set.{u2} β) (Set.hasUnion.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => u x))) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x t) => u x))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (s : Set.{u2} α) (t : Set.{u2} α) (u : α -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) s t)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) s t)) => u x))) (Union.union.{u1} (Set.{u1} β) (Set.instUnionSet.{u1} β) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => u x))) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x t) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x t) => u x))))
-Case conversion may be inaccurate. Consider using '#align set.bUnion_union Set.biUnion_unionₓ'. -/
theorem biUnion_union (s t : Set α) (u : α → Set β) :
(⋃ x ∈ s ∪ t, u x) = (⋃ x ∈ s, u x) ∪ ⋃ x ∈ t, u x :=
iSup_union
#align set.bUnion_union Set.biUnion_union
-/- warning: set.Union_coe_set -> Set.iUnion_coe_set is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (s : Set.{u1} α) (f : (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u1} β (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) (fun (i : coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) => f i)) (Set.iUnion.{u2, succ u1} β α (fun (i : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i s) => f (Subtype.mk.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) i H))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (s : Set.{u2} α) (f : (Set.Elem.{u2} α s) -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, succ u2} β (Set.Elem.{u2} α s) (fun (i : Set.Elem.{u2} α s) => f i)) (Set.iUnion.{u1, succ u2} β α (fun (i : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i s) => f (Subtype.mk.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) i H))))
-Case conversion may be inaccurate. Consider using '#align set.Union_coe_set Set.iUnion_coe_setₓ'. -/
@[simp]
theorem iUnion_coe_set {α β : Type _} (s : Set α) (f : s → Set β) :
(⋃ i, f i) = ⋃ i ∈ s, f ⟨i, ‹i ∈ s›⟩ :=
iUnion_subtype _ _
#align set.Union_coe_set Set.iUnion_coe_set
-/- warning: set.Inter_coe_set -> Set.iInter_coe_set is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (s : Set.{u1} α) (f : (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, succ u1} β (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) (fun (i : coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) => f i)) (Set.iInter.{u2, succ u1} β α (fun (i : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i s) => f (Subtype.mk.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) i H))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (s : Set.{u2} α) (f : (Set.Elem.{u2} α s) -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iInter.{u1, succ u2} β (Set.Elem.{u2} α s) (fun (i : Set.Elem.{u2} α s) => f i)) (Set.iInter.{u1, succ u2} β α (fun (i : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i s) => f (Subtype.mk.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) i H))))
-Case conversion may be inaccurate. Consider using '#align set.Inter_coe_set Set.iInter_coe_setₓ'. -/
@[simp]
theorem iInter_coe_set {α β : Type _} (s : Set α) (f : s → Set β) :
(⋂ i, f i) = ⋂ i ∈ s, f ⟨i, ‹i ∈ s›⟩ :=
iInter_subtype _ _
#align set.Inter_coe_set Set.iInter_coe_set
-/- warning: set.bUnion_insert -> Set.biUnion_insert is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (a : α) (s : Set.{u1} α) (t : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.hasInsert.{u1} α) a s)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.hasInsert.{u1} α) a s)) => t x))) (Union.union.{u2} (Set.{u2} β) (Set.hasUnion.{u2} β) (t a) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (a : α) (s : Set.{u2} α) (t : α -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Insert.insert.{u2, u2} α (Set.{u2} α) (Set.instInsertSet.{u2} α) a s)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Insert.insert.{u2, u2} α (Set.{u2} α) (Set.instInsertSet.{u2} α) a s)) => t x))) (Union.union.{u1} (Set.{u1} β) (Set.instUnionSet.{u1} β) (t a) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x))))
-Case conversion may be inaccurate. Consider using '#align set.bUnion_insert Set.biUnion_insertₓ'. -/
theorem biUnion_insert (a : α) (s : Set α) (t : α → Set β) :
(⋃ x ∈ insert a s, t x) = t a ∪ ⋃ x ∈ s, t x := by simp
#align set.bUnion_insert Set.biUnion_insert
-/- warning: set.bUnion_pair -> Set.biUnion_pair is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (a : α) (b : α) (s : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.hasInsert.{u1} α) a (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.hasSingleton.{u1} α) b))) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.hasInsert.{u1} α) a (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.hasSingleton.{u1} α) b))) => s x))) (Union.union.{u2} (Set.{u2} β) (Set.hasUnion.{u2} β) (s a) (s b))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} (a : α) (b : α) (s : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.instInsertSet.{u1} α) a (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.instSingletonSet.{u1} α) b))) (fun (H : Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.instInsertSet.{u1} α) a (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.instSingletonSet.{u1} α) b))) => s x))) (Union.union.{u2} (Set.{u2} β) (Set.instUnionSet.{u2} β) (s a) (s b))
-Case conversion may be inaccurate. Consider using '#align set.bUnion_pair Set.biUnion_pairₓ'. -/
theorem biUnion_pair (a b : α) (s : α → Set β) : (⋃ x ∈ ({a, b} : Set α), s x) = s a ∪ s b := by
simp
#align set.bUnion_pair Set.biUnion_pair
-/- warning: set.inter_Union₂ -> Set.inter_iUnion₂ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} (s : Set.{u1} α) (t : forall (i : ι), (κ i) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => t i j)))) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s (t i j))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : Set.{u3} α) (t : forall (i : ι), (κ i) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Inter.inter.{u3} (Set.{u3} α) (Set.instInterSet.{u3} α) s (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => t i j)))) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => Inter.inter.{u3} (Set.{u3} α) (Set.instInterSet.{u3} α) s (t i j))))
-Case conversion may be inaccurate. Consider using '#align set.inter_Union₂ Set.inter_iUnion₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem inter_iUnion₂ (s : Set α) (t : ∀ i, κ i → Set α) :
(s ∩ ⋃ (i) (j), t i j) = ⋃ (i) (j), s ∩ t i j := by simp only [inter_Union]
#align set.inter_Union₂ Set.inter_iUnion₂
-/- warning: set.Union₂_inter -> Set.iUnion₂_inter is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} (s : forall (i : ι), (κ i) -> (Set.{u1} α)) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) t) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s i j) t)))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : forall (i : ι), (κ i) -> (Set.{u3} α)) (t : Set.{u3} α), Eq.{succ u3} (Set.{u3} α) (Inter.inter.{u3} (Set.{u3} α) (Set.instInterSet.{u3} α) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) t) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => Inter.inter.{u3} (Set.{u3} α) (Set.instInterSet.{u3} α) (s i j) t)))
-Case conversion may be inaccurate. Consider using '#align set.Union₂_inter Set.iUnion₂_interₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem iUnion₂_inter (s : ∀ i, κ i → Set α) (t : Set α) :
(⋃ (i) (j), s i j) ∩ t = ⋃ (i) (j), s i j ∩ t := by simp_rw [Union_inter]
#align set.Union₂_inter Set.iUnion₂_inter
-/- warning: set.union_Inter₂ -> Set.union_iInter₂ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} (s : Set.{u1} α) (t : forall (i : ι), (κ i) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => t i j)))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s (t i j))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : Set.{u3} α) (t : forall (i : ι), (κ i) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Union.union.{u3} (Set.{u3} α) (Set.instUnionSet.{u3} α) s (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => t i j)))) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => Union.union.{u3} (Set.{u3} α) (Set.instUnionSet.{u3} α) s (t i j))))
-Case conversion may be inaccurate. Consider using '#align set.union_Inter₂ Set.union_iInter₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem union_iInter₂ (s : Set α) (t : ∀ i, κ i → Set α) :
(s ∪ ⋂ (i) (j), t i j) = ⋂ (i) (j), s ∪ t i j := by simp_rw [union_Inter]
#align set.union_Inter₂ Set.union_iInter₂
-/- warning: set.Inter₂_union -> Set.iInter₂_union is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} (s : forall (i : ι), (κ i) -> (Set.{u1} α)) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) t) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (s i j) t)))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : forall (i : ι), (κ i) -> (Set.{u3} α)) (t : Set.{u3} α), Eq.{succ u3} (Set.{u3} α) (Union.union.{u3} (Set.{u3} α) (Set.instUnionSet.{u3} α) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) t) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => Union.union.{u3} (Set.{u3} α) (Set.instUnionSet.{u3} α) (s i j) t)))
-Case conversion may be inaccurate. Consider using '#align set.Inter₂_union Set.iInter₂_unionₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem iInter₂_union (s : ∀ i, κ i → Set α) (t : Set α) :
@@ -2041,12 +1225,6 @@ theorem sInter_eq_univ {S : Set (Set α)} : ⋂₀ S = univ ↔ ∀ s ∈ S, s =
#align set.sInter_eq_univ Set.sInter_eq_univ
-/
-/- warning: set.nonempty_sUnion -> Set.nonempty_sUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {S : Set.{u1} (Set.{u1} α)}, Iff (Set.Nonempty.{u1} α (Set.sUnion.{u1} α S)) (Exists.{succ u1} (Set.{u1} α) (fun (s : Set.{u1} α) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s S) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s S) => Set.Nonempty.{u1} α s)))
-but is expected to have type
- forall {α : Type.{u1}} {S : Set.{u1} (Set.{u1} α)}, Iff (Set.Nonempty.{u1} α (Set.sUnion.{u1} α S)) (Exists.{succ u1} (Set.{u1} α) (fun (s : Set.{u1} α) => And (Membership.mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instMembershipSet.{u1} (Set.{u1} α)) s S) (Set.Nonempty.{u1} α s)))
-Case conversion may be inaccurate. Consider using '#align set.nonempty_sUnion Set.nonempty_sUnionₓ'. -/
@[simp]
theorem nonempty_sUnion {S : Set (Set α)} : (⋃₀ S).Nonempty ↔ ∃ s ∈ S, Set.Nonempty s := by
simp [nonempty_iff_ne_empty]
@@ -2065,86 +1243,38 @@ theorem Nonempty.of_sUnion_eq_univ [Nonempty α] {s : Set (Set α)} (h : ⋃₀
#align set.nonempty.of_sUnion_eq_univ Set.Nonempty.of_sUnion_eq_univ
-/
-/- warning: set.sUnion_union -> Set.sUnion_union is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)) (T : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α (Union.union.{u1} (Set.{u1} (Set.{u1} α)) (Set.hasUnion.{u1} (Set.{u1} α)) S T)) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Set.sUnion.{u1} α S) (Set.sUnion.{u1} α T))
-but is expected to have type
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)) (T : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α (Union.union.{u1} (Set.{u1} (Set.{u1} α)) (Set.instUnionSet.{u1} (Set.{u1} α)) S T)) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (Set.sUnion.{u1} α S) (Set.sUnion.{u1} α T))
-Case conversion may be inaccurate. Consider using '#align set.sUnion_union Set.sUnion_unionₓ'. -/
theorem sUnion_union (S T : Set (Set α)) : ⋃₀ (S ∪ T) = ⋃₀ S ∪ ⋃₀ T :=
sSup_union
#align set.sUnion_union Set.sUnion_union
-/- warning: set.sInter_union -> Set.sInter_union is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)) (T : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α (Union.union.{u1} (Set.{u1} (Set.{u1} α)) (Set.hasUnion.{u1} (Set.{u1} α)) S T)) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (Set.sInter.{u1} α S) (Set.sInter.{u1} α T))
-but is expected to have type
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)) (T : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α (Union.union.{u1} (Set.{u1} (Set.{u1} α)) (Set.instUnionSet.{u1} (Set.{u1} α)) S T)) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.sInter.{u1} α S) (Set.sInter.{u1} α T))
-Case conversion may be inaccurate. Consider using '#align set.sInter_union Set.sInter_unionₓ'. -/
theorem sInter_union (S T : Set (Set α)) : ⋂₀ (S ∪ T) = ⋂₀ S ∩ ⋂₀ T :=
sInf_union
#align set.sInter_union Set.sInter_union
-/- warning: set.sUnion_insert -> Set.sUnion_insert is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (s : Set.{u1} α) (T : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasInsert.{u1} (Set.{u1} α)) s T)) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s (Set.sUnion.{u1} α T))
-but is expected to have type
- forall {α : Type.{u1}} (s : Set.{u1} α) (T : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instInsertSet.{u1} (Set.{u1} α)) s T)) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) s (Set.sUnion.{u1} α T))
-Case conversion may be inaccurate. Consider using '#align set.sUnion_insert Set.sUnion_insertₓ'. -/
@[simp]
theorem sUnion_insert (s : Set α) (T : Set (Set α)) : ⋃₀ insert s T = s ∪ ⋃₀ T :=
sSup_insert
#align set.sUnion_insert Set.sUnion_insert
-/- warning: set.sInter_insert -> Set.sInter_insert is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (s : Set.{u1} α) (T : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasInsert.{u1} (Set.{u1} α)) s T)) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s (Set.sInter.{u1} α T))
-but is expected to have type
- forall {α : Type.{u1}} (s : Set.{u1} α) (T : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instInsertSet.{u1} (Set.{u1} α)) s T)) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s (Set.sInter.{u1} α T))
-Case conversion may be inaccurate. Consider using '#align set.sInter_insert Set.sInter_insertₓ'. -/
@[simp]
theorem sInter_insert (s : Set α) (T : Set (Set α)) : ⋂₀ insert s T = s ∩ ⋂₀ T :=
sInf_insert
#align set.sInter_insert Set.sInter_insert
-/- warning: set.sUnion_diff_singleton_empty -> Set.sUnion_diff_singleton_empty is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (s : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α (SDiff.sdiff.{u1} (Set.{u1} (Set.{u1} α)) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} (Set.{u1} α)) (Set.booleanAlgebra.{u1} (Set.{u1} α))) s (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasSingleton.{u1} (Set.{u1} α)) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))))) (Set.sUnion.{u1} α s)
-but is expected to have type
- forall {α : Type.{u1}} (s : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α (SDiff.sdiff.{u1} (Set.{u1} (Set.{u1} α)) (Set.instSDiffSet.{u1} (Set.{u1} α)) s (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instSingletonSet.{u1} (Set.{u1} α)) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.instEmptyCollectionSet.{u1} α))))) (Set.sUnion.{u1} α s)
-Case conversion may be inaccurate. Consider using '#align set.sUnion_diff_singleton_empty Set.sUnion_diff_singleton_emptyₓ'. -/
@[simp]
theorem sUnion_diff_singleton_empty (s : Set (Set α)) : ⋃₀ (s \ {∅}) = ⋃₀ s :=
sSup_diff_singleton_bot s
#align set.sUnion_diff_singleton_empty Set.sUnion_diff_singleton_empty
-/- warning: set.sInter_diff_singleton_univ -> Set.sInter_diff_singleton_univ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (s : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α (SDiff.sdiff.{u1} (Set.{u1} (Set.{u1} α)) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} (Set.{u1} α)) (Set.booleanAlgebra.{u1} (Set.{u1} α))) s (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasSingleton.{u1} (Set.{u1} α)) (Set.univ.{u1} α)))) (Set.sInter.{u1} α s)
-but is expected to have type
- forall {α : Type.{u1}} (s : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α (SDiff.sdiff.{u1} (Set.{u1} (Set.{u1} α)) (Set.instSDiffSet.{u1} (Set.{u1} α)) s (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instSingletonSet.{u1} (Set.{u1} α)) (Set.univ.{u1} α)))) (Set.sInter.{u1} α s)
-Case conversion may be inaccurate. Consider using '#align set.sInter_diff_singleton_univ Set.sInter_diff_singleton_univₓ'. -/
@[simp]
theorem sInter_diff_singleton_univ (s : Set (Set α)) : ⋂₀ (s \ {univ}) = ⋂₀ s :=
sInf_diff_singleton_top s
#align set.sInter_diff_singleton_univ Set.sInter_diff_singleton_univ
-/- warning: set.sUnion_pair -> Set.sUnion_pair is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (s : Set.{u1} α) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasInsert.{u1} (Set.{u1} α)) s (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasSingleton.{u1} (Set.{u1} α)) t))) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s t)
-but is expected to have type
- forall {α : Type.{u1}} (s : Set.{u1} α) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instInsertSet.{u1} (Set.{u1} α)) s (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instSingletonSet.{u1} (Set.{u1} α)) t))) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) s t)
-Case conversion may be inaccurate. Consider using '#align set.sUnion_pair Set.sUnion_pairₓ'. -/
theorem sUnion_pair (s t : Set α) : ⋃₀ {s, t} = s ∪ t :=
sSup_pair
#align set.sUnion_pair Set.sUnion_pair
-/- warning: set.sInter_pair -> Set.sInter_pair is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (s : Set.{u1} α) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasInsert.{u1} (Set.{u1} α)) s (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasSingleton.{u1} (Set.{u1} α)) t))) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s t)
-but is expected to have type
- forall {α : Type.{u1}} (s : Set.{u1} α) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instInsertSet.{u1} (Set.{u1} α)) s (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instSingletonSet.{u1} (Set.{u1} α)) t))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s t)
-Case conversion may be inaccurate. Consider using '#align set.sInter_pair Set.sInter_pairₓ'. -/
theorem sInter_pair (s t : Set α) : ⋂₀ {s, t} = s ∩ t :=
sInf_pair
#align set.sInter_pair Set.sInter_pair
@@ -2163,76 +1293,34 @@ theorem sInter_image (f : α → Set β) (s : Set α) : ⋂₀ (f '' s) = ⋂ x
#align set.sInter_image Set.sInter_image
-/
-/- warning: set.sUnion_range -> Set.sUnion_range is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (f : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.sUnion.{u1} β (Set.range.{u1, u2} (Set.{u1} β) ι f)) (Set.iUnion.{u1, u2} β ι (fun (x : ι) => f x))
-but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (f : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.sUnion.{u2} β (Set.range.{u2, u1} (Set.{u2} β) ι f)) (Set.iUnion.{u2, u1} β ι (fun (x : ι) => f x))
-Case conversion may be inaccurate. Consider using '#align set.sUnion_range Set.sUnion_rangeₓ'. -/
@[simp]
theorem sUnion_range (f : ι → Set β) : ⋃₀ range f = ⋃ x, f x :=
rfl
#align set.sUnion_range Set.sUnion_range
-/- warning: set.sInter_range -> Set.sInter_range is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (f : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.sInter.{u1} β (Set.range.{u1, u2} (Set.{u1} β) ι f)) (Set.iInter.{u1, u2} β ι (fun (x : ι) => f x))
-but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (f : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.sInter.{u2} β (Set.range.{u2, u1} (Set.{u2} β) ι f)) (Set.iInter.{u2, u1} β ι (fun (x : ι) => f x))
-Case conversion may be inaccurate. Consider using '#align set.sInter_range Set.sInter_rangeₓ'. -/
@[simp]
theorem sInter_range (f : ι → Set β) : ⋂₀ range f = ⋂ x, f x :=
rfl
#align set.sInter_range Set.sInter_range
-/- warning: set.Union_eq_univ_iff -> Set.iUnion_eq_univ_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {f : ι -> (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => f i)) (Set.univ.{u1} α)) (forall (x : α), Exists.{u2} ι (fun (i : ι) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (f i)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {f : ι -> (Set.{u2} α)}, Iff (Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => f i)) (Set.univ.{u2} α)) (forall (x : α), Exists.{u1} ι (fun (i : ι) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (f i)))
-Case conversion may be inaccurate. Consider using '#align set.Union_eq_univ_iff Set.iUnion_eq_univ_iffₓ'. -/
theorem iUnion_eq_univ_iff {f : ι → Set α} : (⋃ i, f i) = univ ↔ ∀ x, ∃ i, x ∈ f i := by
simp only [eq_univ_iff_forall, mem_Union]
#align set.Union_eq_univ_iff Set.iUnion_eq_univ_iff
-/- warning: set.Union₂_eq_univ_iff -> Set.iUnion₂_eq_univ_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) (Set.univ.{u1} α)) (forall (a : α), Exists.{u2} ι (fun (i : ι) => Exists.{u3} (κ i) (fun (j : κ i) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i j))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)}, Iff (Eq.{succ u3} (Set.{u3} α) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.univ.{u3} α)) (forall (a : α), Exists.{u2} ι (fun (i : ι) => Exists.{u1} (κ i) (fun (j : κ i) => Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i j))))
-Case conversion may be inaccurate. Consider using '#align set.Union₂_eq_univ_iff Set.iUnion₂_eq_univ_iffₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem iUnion₂_eq_univ_iff {s : ∀ i, κ i → Set α} :
(⋃ (i) (j), s i j) = univ ↔ ∀ a, ∃ i j, a ∈ s i j := by simp only [Union_eq_univ_iff, mem_Union]
#align set.Union₂_eq_univ_iff Set.iUnion₂_eq_univ_iff
-/- warning: set.sUnion_eq_univ_iff -> Set.sUnion_eq_univ_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {c : Set.{u1} (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α c) (Set.univ.{u1} α)) (forall (a : α), Exists.{succ u1} (Set.{u1} α) (fun (b : Set.{u1} α) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) b c) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) b c) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a b)))
-but is expected to have type
- forall {α : Type.{u1}} {c : Set.{u1} (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α c) (Set.univ.{u1} α)) (forall (a : α), Exists.{succ u1} (Set.{u1} α) (fun (b : Set.{u1} α) => And (Membership.mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instMembershipSet.{u1} (Set.{u1} α)) b c) (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) a b)))
-Case conversion may be inaccurate. Consider using '#align set.sUnion_eq_univ_iff Set.sUnion_eq_univ_iffₓ'. -/
theorem sUnion_eq_univ_iff {c : Set (Set α)} : ⋃₀ c = univ ↔ ∀ a, ∃ b ∈ c, a ∈ b := by
simp only [eq_univ_iff_forall, mem_sUnion]
#align set.sUnion_eq_univ_iff Set.sUnion_eq_univ_iff
-/- warning: set.Inter_eq_empty_iff -> Set.iInter_eq_empty_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {f : ι -> (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => f i)) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))) (forall (x : α), Exists.{u2} ι (fun (i : ι) => Not (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (f i))))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {f : ι -> (Set.{u2} α)}, Iff (Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => f i)) (EmptyCollection.emptyCollection.{u2} (Set.{u2} α) (Set.instEmptyCollectionSet.{u2} α))) (forall (x : α), Exists.{u1} ι (fun (i : ι) => Not (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (f i))))
-Case conversion may be inaccurate. Consider using '#align set.Inter_eq_empty_iff Set.iInter_eq_empty_iffₓ'. -/
-- classical
theorem iInter_eq_empty_iff {f : ι → Set α} : (⋂ i, f i) = ∅ ↔ ∀ x, ∃ i, x ∉ f i := by
simp [Set.eq_empty_iff_forall_not_mem]
#align set.Inter_eq_empty_iff Set.iInter_eq_empty_iff
-/- warning: set.Inter₂_eq_empty_iff -> Set.iInter₂_eq_empty_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))) (forall (a : α), Exists.{u2} ι (fun (i : ι) => Exists.{u3} (κ i) (fun (j : κ i) => Not (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i j)))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)}, Iff (Eq.{succ u3} (Set.{u3} α) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) (EmptyCollection.emptyCollection.{u3} (Set.{u3} α) (Set.instEmptyCollectionSet.{u3} α))) (forall (a : α), Exists.{u2} ι (fun (i : ι) => Exists.{u1} (κ i) (fun (j : κ i) => Not (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i j)))))
-Case conversion may be inaccurate. Consider using '#align set.Inter₂_eq_empty_iff Set.iInter₂_eq_empty_iffₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-- classical
theorem iInter₂_eq_empty_iff {s : ∀ i, κ i → Set α} :
@@ -2240,35 +1328,17 @@ theorem iInter₂_eq_empty_iff {s : ∀ i, κ i → Set α} :
simp only [eq_empty_iff_forall_not_mem, mem_Inter, not_forall]
#align set.Inter₂_eq_empty_iff Set.iInter₂_eq_empty_iff
-/- warning: set.sInter_eq_empty_iff -> Set.sInter_eq_empty_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {c : Set.{u1} (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α c) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))) (forall (a : α), Exists.{succ u1} (Set.{u1} α) (fun (b : Set.{u1} α) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) b c) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) b c) => Not (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a b))))
-but is expected to have type
- forall {α : Type.{u1}} {c : Set.{u1} (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α c) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.instEmptyCollectionSet.{u1} α))) (forall (a : α), Exists.{succ u1} (Set.{u1} α) (fun (b : Set.{u1} α) => And (Membership.mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instMembershipSet.{u1} (Set.{u1} α)) b c) (Not (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) a b))))
-Case conversion may be inaccurate. Consider using '#align set.sInter_eq_empty_iff Set.sInter_eq_empty_iffₓ'. -/
-- classical
theorem sInter_eq_empty_iff {c : Set (Set α)} : ⋂₀ c = ∅ ↔ ∀ a, ∃ b ∈ c, a ∉ b := by
simp [Set.eq_empty_iff_forall_not_mem]
#align set.sInter_eq_empty_iff Set.sInter_eq_empty_iff
-/- warning: set.nonempty_Inter -> Set.nonempty_iInter is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {f : ι -> (Set.{u1} α)}, Iff (Set.Nonempty.{u1} α (Set.iInter.{u1, u2} α ι (fun (i : ι) => f i))) (Exists.{succ u1} α (fun (x : α) => forall (i : ι), Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (f i)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {f : ι -> (Set.{u2} α)}, Iff (Set.Nonempty.{u2} α (Set.iInter.{u2, u1} α ι (fun (i : ι) => f i))) (Exists.{succ u2} α (fun (x : α) => forall (i : ι), Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (f i)))
-Case conversion may be inaccurate. Consider using '#align set.nonempty_Inter Set.nonempty_iInterₓ'. -/
-- classical
@[simp]
theorem nonempty_iInter {f : ι → Set α} : (⋂ i, f i).Nonempty ↔ ∃ x, ∀ i, x ∈ f i := by
simp [nonempty_iff_ne_empty, Inter_eq_empty_iff]
#align set.nonempty_Inter Set.nonempty_iInter
-/- warning: set.nonempty_Inter₂ -> Set.nonempty_iInter₂ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)}, Iff (Set.Nonempty.{u1} α (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => s i j)))) (Exists.{succ u1} α (fun (a : α) => forall (i : ι) (j : κ i), Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i j)))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)}, Iff (Set.Nonempty.{u3} α (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => s i j)))) (Exists.{succ u3} α (fun (a : α) => forall (i : ι) (j : κ i), Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i j)))
-Case conversion may be inaccurate. Consider using '#align set.nonempty_Inter₂ Set.nonempty_iInter₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-- classical
@[simp]
@@ -2285,68 +1355,32 @@ theorem nonempty_sInter {c : Set (Set α)} : (⋂₀ c).Nonempty ↔ ∃ a, ∀
#align set.nonempty_sInter Set.nonempty_sInter
-/
-/- warning: set.compl_sUnion -> Set.compl_sUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (Set.sUnion.{u1} α S)) (Set.sInter.{u1} α (Set.image.{u1, u1} (Set.{u1} α) (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) S))
-but is expected to have type
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) (Set.sUnion.{u1} α S)) (Set.sInter.{u1} α (Set.image.{u1, u1} (Set.{u1} α) (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α))) S))
-Case conversion may be inaccurate. Consider using '#align set.compl_sUnion Set.compl_sUnionₓ'. -/
-- classical
theorem compl_sUnion (S : Set (Set α)) : (⋃₀ S)ᶜ = ⋂₀ (compl '' S) :=
ext fun x => by simp
#align set.compl_sUnion Set.compl_sUnion
-/- warning: set.sUnion_eq_compl_sInter_compl -> Set.sUnion_eq_compl_sInter_compl is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α S) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (Set.sInter.{u1} α (Set.image.{u1, u1} (Set.{u1} α) (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) S)))
-but is expected to have type
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α S) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) (Set.sInter.{u1} α (Set.image.{u1, u1} (Set.{u1} α) (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α))) S)))
-Case conversion may be inaccurate. Consider using '#align set.sUnion_eq_compl_sInter_compl Set.sUnion_eq_compl_sInter_complₓ'. -/
-- classical
theorem sUnion_eq_compl_sInter_compl (S : Set (Set α)) : ⋃₀ S = (⋂₀ (compl '' S))ᶜ := by
rw [← compl_compl (⋃₀ S), compl_sUnion]
#align set.sUnion_eq_compl_sInter_compl Set.sUnion_eq_compl_sInter_compl
-/- warning: set.compl_sInter -> Set.compl_sInter is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (Set.sInter.{u1} α S)) (Set.sUnion.{u1} α (Set.image.{u1, u1} (Set.{u1} α) (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) S))
-but is expected to have type
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) (Set.sInter.{u1} α S)) (Set.sUnion.{u1} α (Set.image.{u1, u1} (Set.{u1} α) (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α))) S))
-Case conversion may be inaccurate. Consider using '#align set.compl_sInter Set.compl_sInterₓ'. -/
-- classical
theorem compl_sInter (S : Set (Set α)) : (⋂₀ S)ᶜ = ⋃₀ (compl '' S) := by
rw [sUnion_eq_compl_sInter_compl, compl_compl_image]
#align set.compl_sInter Set.compl_sInter
-/- warning: set.sInter_eq_compl_sUnion_compl -> Set.sInter_eq_compl_sUnion_compl is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α S) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (Set.sUnion.{u1} α (Set.image.{u1, u1} (Set.{u1} α) (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) S)))
-but is expected to have type
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α S) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) (Set.sUnion.{u1} α (Set.image.{u1, u1} (Set.{u1} α) (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α))) S)))
-Case conversion may be inaccurate. Consider using '#align set.sInter_eq_compl_sUnion_compl Set.sInter_eq_compl_sUnion_complₓ'. -/
-- classical
theorem sInter_eq_compl_sUnion_compl (S : Set (Set α)) : ⋂₀ S = (⋃₀ (compl '' S))ᶜ := by
rw [← compl_compl (⋂₀ S), compl_sInter]
#align set.sInter_eq_compl_sUnion_compl Set.sInter_eq_compl_sUnion_compl
-/- warning: set.inter_empty_of_inter_sUnion_empty -> Set.inter_empty_of_inter_sUnion_empty is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {s : Set.{u1} α} {t : Set.{u1} α} {S : Set.{u1} (Set.{u1} α)}, (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) t S) -> (Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s (Set.sUnion.{u1} α S)) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))) -> (Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s t) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α)))
-but is expected to have type
- forall {α : Type.{u1}} {s : Set.{u1} α} {t : Set.{u1} α} {S : Set.{u1} (Set.{u1} α)}, (Membership.mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instMembershipSet.{u1} (Set.{u1} α)) t S) -> (Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s (Set.sUnion.{u1} α S)) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.instEmptyCollectionSet.{u1} α))) -> (Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s t) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.instEmptyCollectionSet.{u1} α)))
-Case conversion may be inaccurate. Consider using '#align set.inter_empty_of_inter_sUnion_empty Set.inter_empty_of_inter_sUnion_emptyₓ'. -/
theorem inter_empty_of_inter_sUnion_empty {s t : Set α} {S : Set (Set α)} (hs : t ∈ S)
(h : s ∩ ⋃₀ S = ∅) : s ∩ t = ∅ :=
eq_empty_of_subset_empty <| by
rw [← h] <;> exact inter_subset_inter_right _ (subset_sUnion_of_mem hs)
#align set.inter_empty_of_inter_sUnion_empty Set.inter_empty_of_inter_sUnion_empty
-/- warning: set.range_sigma_eq_Union_range -> Set.range_sigma_eq_iUnion_range is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : α -> Type.{u3}} (f : (Sigma.{u1, u3} α γ) -> β), Eq.{succ u2} (Set.{u2} β) (Set.range.{u2, max (succ u1) (succ u3)} β (Sigma.{u1, u3} α γ) f) (Set.iUnion.{u2, succ u1} β α (fun (a : α) => Set.range.{u2, succ u3} β (γ a) (fun (b : γ a) => f (Sigma.mk.{u1, u3} α γ a b))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {γ : α -> Type.{u3}} (f : (Sigma.{u2, u3} α γ) -> β), Eq.{succ u1} (Set.{u1} β) (Set.range.{u1, max (succ u2) (succ u3)} β (Sigma.{u2, u3} α γ) f) (Set.iUnion.{u1, succ u2} β α (fun (a : α) => Set.range.{u1, succ u3} β (γ a) (fun (b : γ a) => f (Sigma.mk.{u2, u3} α γ a b))))
-Case conversion may be inaccurate. Consider using '#align set.range_sigma_eq_Union_range Set.range_sigma_eq_iUnion_rangeₓ'. -/
theorem range_sigma_eq_iUnion_range {γ : α → Type _} (f : Sigma γ → β) :
range f = ⋃ a, range fun b => f ⟨a, b⟩ :=
Set.ext <| by simp
@@ -2358,22 +1392,10 @@ theorem iUnion_eq_range_sigma (s : α → Set β) : (⋃ i, s i) = range fun a :
#align set.Union_eq_range_sigma Set.iUnion_eq_range_sigma
-/
-/- warning: set.Union_eq_range_psigma -> Set.iUnion_eq_range_psigma is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => s i)) (Set.range.{u1, max 1 u2 (succ u1)} β (PSigma.{u2, succ u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s i))) (fun (a : PSigma.{u2, succ u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s i))) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s (PSigma.fst.{u2, succ u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s i)) a))) β (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s (PSigma.fst.{u2, succ u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s i)) a))) β (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s (PSigma.fst.{u2, succ u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s i)) a))) β (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s (PSigma.fst.{u2, succ u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s i)) a))) β (coeSubtype.{succ u1} β (fun (x : β) => Membership.Mem.{u1, u1} β (Set.{u1} β) (Set.hasMem.{u1} β) x (s (PSigma.fst.{u2, succ u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s i)) a))))))) (PSigma.snd.{u2, succ u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s i)) a)))
-but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => s i)) (Set.range.{u2, max (succ u2) u1} β (PSigma.{u1, succ u2} ι (fun (i : ι) => Set.Elem.{u2} β (s i))) (fun (a : PSigma.{u1, succ u2} ι (fun (i : ι) => Set.Elem.{u2} β (s i))) => Subtype.val.{succ u2} β (fun (x : β) => Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) x (s (PSigma.fst.{u1, succ u2} ι (fun (i : ι) => Set.Elem.{u2} β (s i)) a))) (PSigma.snd.{u1, succ u2} ι (fun (i : ι) => Set.Elem.{u2} β (s i)) a)))
-Case conversion may be inaccurate. Consider using '#align set.Union_eq_range_psigma Set.iUnion_eq_range_psigmaₓ'. -/
theorem iUnion_eq_range_psigma (s : ι → Set β) : (⋃ i, s i) = range fun a : Σ'i, s i => a.2 := by
simp [Set.ext_iff]
#align set.Union_eq_range_psigma Set.iUnion_eq_range_psigma
-/- warning: set.Union_image_preimage_sigma_mk_eq_self -> Set.iUnion_image_preimage_sigma_mk_eq_self is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {σ : ι -> Type.{u2}} (s : Set.{max u1 u2} (Sigma.{u1, u2} ι σ)), Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Sigma.{u1, u2} ι σ)) (Set.iUnion.{max u1 u2, succ u1} (Sigma.{u1, u2} ι σ) ι (fun (i : ι) => Set.image.{u2, max u1 u2} (σ i) (Sigma.{u1, u2} ι σ) (Sigma.mk.{u1, u2} ι σ i) (Set.preimage.{u2, max u1 u2} (σ i) (Sigma.{u1, u2} ι σ) (Sigma.mk.{u1, u2} ι σ i) s))) s
-but is expected to have type
- forall {ι : Type.{u2}} {σ : ι -> Type.{u1}} (s : Set.{max u1 u2} (Sigma.{u2, u1} ι σ)), Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Sigma.{u2, u1} ι (fun (i : ι) => σ i))) (Set.iUnion.{max u1 u2, succ u2} (Sigma.{u2, u1} ι (fun (i : ι) => σ i)) ι (fun (i : ι) => Set.image.{u1, max u1 u2} (σ i) (Sigma.{u2, u1} ι (fun (i : ι) => σ i)) (Sigma.mk.{u2, u1} ι (fun (i : ι) => σ i) i) (Set.preimage.{u1, max u2 u1} (σ i) (Sigma.{u2, u1} ι σ) (Sigma.mk.{u2, u1} ι σ i) s))) s
-Case conversion may be inaccurate. Consider using '#align set.Union_image_preimage_sigma_mk_eq_self Set.iUnion_image_preimage_sigma_mk_eq_selfₓ'. -/
theorem iUnion_image_preimage_sigma_mk_eq_self {ι : Type _} {σ : ι → Type _} (s : Set (Sigma σ)) :
(⋃ i, Sigma.mk i '' (Sigma.mk i ⁻¹' s)) = s :=
by
@@ -2397,22 +1419,10 @@ theorem sUnion_mono {s t : Set (Set α)} (h : s ⊆ t) : ⋃₀ s ⊆ ⋃₀ t :
#align set.sUnion_mono Set.sUnion_mono
-/
-/- warning: set.Union_subset_Union_const -> Set.iUnion_subset_iUnion_const is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι₂ : Sort.{u3}} {s : Set.{u1} α}, (ι -> ι₂) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s)) (Set.iUnion.{u1, u3} α ι₂ (fun (j : ι₂) => s)))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {ι₂ : Sort.{u1}} {s : Set.{u3} α}, (ι -> ι₂) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => s)) (Set.iUnion.{u3, u1} α ι₂ (fun (j : ι₂) => s)))
-Case conversion may be inaccurate. Consider using '#align set.Union_subset_Union_const Set.iUnion_subset_iUnion_constₓ'. -/
theorem iUnion_subset_iUnion_const {s : Set α} (h : ι → ι₂) : (⋃ i : ι, s) ⊆ ⋃ j : ι₂, s :=
@iSup_const_mono (Set α) ι ι₂ _ s h
#align set.Union_subset_Union_const Set.iUnion_subset_iUnion_const
-/- warning: set.Union_singleton_eq_range -> Set.iUnion_singleton_eq_range is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Singleton.singleton.{u2, u2} β (Set.{u2} β) (Set.hasSingleton.{u2} β) (f x))) (Set.range.{u2, succ u1} β α f)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β), Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Singleton.singleton.{u1, u1} β (Set.{u1} β) (Set.instSingletonSet.{u1} β) (f x))) (Set.range.{u1, succ u2} β α f)
-Case conversion may be inaccurate. Consider using '#align set.Union_singleton_eq_range Set.iUnion_singleton_eq_rangeₓ'. -/
@[simp]
theorem iUnion_singleton_eq_range {α β : Type _} (f : α → β) : (⋃ x : α, {f x}) = range f := by
ext x; simp [@eq_comm _ x]
@@ -2466,96 +1476,42 @@ theorem iInter_of_empty [IsEmpty ι] (s : ι → Set α) : (⋂ i, s i) = univ :
#align set.Inter_of_empty Set.iInter_of_empty
-/
-/- warning: set.union_eq_Union -> Set.union_eq_iUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {s₁ : Set.{u1} α} {s₂ : Set.{u1} α}, Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s₁ s₂) (Set.iUnion.{u1, 1} α Bool (fun (b : Bool) => cond.{u1} (Set.{u1} α) b s₁ s₂))
-but is expected to have type
- forall {α : Type.{u1}} {s₁ : Set.{u1} α} {s₂ : Set.{u1} α}, Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) s₁ s₂) (Set.iUnion.{u1, 1} α Bool (fun (b : Bool) => cond.{u1} (Set.{u1} α) b s₁ s₂))
-Case conversion may be inaccurate. Consider using '#align set.union_eq_Union Set.union_eq_iUnionₓ'. -/
theorem union_eq_iUnion {s₁ s₂ : Set α} : s₁ ∪ s₂ = ⋃ b : Bool, cond b s₁ s₂ :=
sup_eq_iSup s₁ s₂
#align set.union_eq_Union Set.union_eq_iUnion
-/- warning: set.inter_eq_Inter -> Set.inter_eq_iInter is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {s₁ : Set.{u1} α} {s₂ : Set.{u1} α}, Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s₁ s₂) (Set.iInter.{u1, 1} α Bool (fun (b : Bool) => cond.{u1} (Set.{u1} α) b s₁ s₂))
-but is expected to have type
- forall {α : Type.{u1}} {s₁ : Set.{u1} α} {s₂ : Set.{u1} α}, Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s₁ s₂) (Set.iInter.{u1, 1} α Bool (fun (b : Bool) => cond.{u1} (Set.{u1} α) b s₁ s₂))
-Case conversion may be inaccurate. Consider using '#align set.inter_eq_Inter Set.inter_eq_iInterₓ'. -/
theorem inter_eq_iInter {s₁ s₂ : Set α} : s₁ ∩ s₂ = ⋂ b : Bool, cond b s₁ s₂ :=
inf_eq_iInf s₁ s₂
#align set.inter_eq_Inter Set.inter_eq_iInter
-/- warning: set.sInter_union_sInter -> Set.sInter_union_sInter is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {S : Set.{u1} (Set.{u1} α)} {T : Set.{u1} (Set.{u1} α)}, Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Set.sInter.{u1} α S) (Set.sInter.{u1} α T)) (Set.iInter.{u1, succ u1} α (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (fun (p : Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) => Set.iInter.{u1, 0} α (Membership.Mem.{u1, u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (Set.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) (Set.hasMem.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) p (Set.prod.{u1, u1} (Set.{u1} α) (Set.{u1} α) S T)) (fun (H : Membership.Mem.{u1, u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (Set.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) (Set.hasMem.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) p (Set.prod.{u1, u1} (Set.{u1} α) (Set.{u1} α) S T)) => Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Prod.fst.{u1, u1} (Set.{u1} α) (Set.{u1} α) p) (Prod.snd.{u1, u1} (Set.{u1} α) (Set.{u1} α) p))))
-but is expected to have type
- forall {α : Type.{u1}} {S : Set.{u1} (Set.{u1} α)} {T : Set.{u1} (Set.{u1} α)}, Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (Set.sInter.{u1} α S) (Set.sInter.{u1} α T)) (Set.iInter.{u1, succ u1} α (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (fun (p : Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) => Set.iInter.{u1, 0} α (Membership.mem.{u1, u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (Set.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) (Set.instMembershipSet.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) p (Set.prod.{u1, u1} (Set.{u1} α) (Set.{u1} α) S T)) (fun (H : Membership.mem.{u1, u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (Set.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) (Set.instMembershipSet.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) p (Set.prod.{u1, u1} (Set.{u1} α) (Set.{u1} α) S T)) => Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (Prod.fst.{u1, u1} (Set.{u1} α) (Set.{u1} α) p) (Prod.snd.{u1, u1} (Set.{u1} α) (Set.{u1} α) p))))
-Case conversion may be inaccurate. Consider using '#align set.sInter_union_sInter Set.sInter_union_sInterₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem sInter_union_sInter {S T : Set (Set α)} :
⋂₀ S ∪ ⋂₀ T = ⋂ p ∈ S ×ˢ T, (p : Set α × Set α).1 ∪ p.2 :=
sInf_sup_sInf
#align set.sInter_union_sInter Set.sInter_union_sInter
-/- warning: set.sUnion_inter_sUnion -> Set.sUnion_inter_sUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {s : Set.{u1} (Set.{u1} α)} {t : Set.{u1} (Set.{u1} α)}, Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (Set.sUnion.{u1} α s) (Set.sUnion.{u1} α t)) (Set.iUnion.{u1, succ u1} α (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (fun (p : Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) => Set.iUnion.{u1, 0} α (Membership.Mem.{u1, u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (Set.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) (Set.hasMem.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) p (Set.prod.{u1, u1} (Set.{u1} α) (Set.{u1} α) s t)) (fun (H : Membership.Mem.{u1, u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (Set.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) (Set.hasMem.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) p (Set.prod.{u1, u1} (Set.{u1} α) (Set.{u1} α) s t)) => Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (Prod.fst.{u1, u1} (Set.{u1} α) (Set.{u1} α) p) (Prod.snd.{u1, u1} (Set.{u1} α) (Set.{u1} α) p))))
-but is expected to have type
- forall {α : Type.{u1}} {s : Set.{u1} (Set.{u1} α)} {t : Set.{u1} (Set.{u1} α)}, Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.sUnion.{u1} α s) (Set.sUnion.{u1} α t)) (Set.iUnion.{u1, succ u1} α (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (fun (p : Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) => Set.iUnion.{u1, 0} α (Membership.mem.{u1, u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (Set.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) (Set.instMembershipSet.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) p (Set.prod.{u1, u1} (Set.{u1} α) (Set.{u1} α) s t)) (fun (H : Membership.mem.{u1, u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (Set.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) (Set.instMembershipSet.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) p (Set.prod.{u1, u1} (Set.{u1} α) (Set.{u1} α) s t)) => Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Prod.fst.{u1, u1} (Set.{u1} α) (Set.{u1} α) p) (Prod.snd.{u1, u1} (Set.{u1} α) (Set.{u1} α) p))))
-Case conversion may be inaccurate. Consider using '#align set.sUnion_inter_sUnion Set.sUnion_inter_sUnionₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem sUnion_inter_sUnion {s t : Set (Set α)} :
⋃₀ s ∩ ⋃₀ t = ⋃ p ∈ s ×ˢ t, (p : Set α × Set α).1 ∩ p.2 :=
sSup_inf_sSup
#align set.sUnion_inter_sUnion Set.sUnion_inter_sUnion
-/- warning: set.bUnion_Union -> Set.biUnion_iUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} (s : ι -> (Set.{u1} α)) (t : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) => t x))) (Set.iUnion.{u2, u3} β ι (fun (i : ι) => Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (s i)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (s i)) => t x))))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u3} α)) (t : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u3} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i))) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i))) => t x))) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => Set.iUnion.{u2, succ u3} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x (s i)) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x (s i)) => t x))))
-Case conversion may be inaccurate. Consider using '#align set.bUnion_Union Set.biUnion_iUnionₓ'. -/
theorem biUnion_iUnion (s : ι → Set α) (t : α → Set β) :
(⋃ x ∈ ⋃ i, s i, t x) = ⋃ (i) (x ∈ s i), t x := by simp [@Union_comm _ ι]
#align set.bUnion_Union Set.biUnion_iUnion
-/- warning: set.bInter_Union -> Set.biInter_iUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} (s : ι -> (Set.{u1} α)) (t : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) => t x))) (Set.iInter.{u2, u3} β ι (fun (i : ι) => Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (s i)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (s i)) => t x))))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u3} α)) (t : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, succ u3} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i))) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i))) => t x))) (Set.iInter.{u2, u1} β ι (fun (i : ι) => Set.iInter.{u2, succ u3} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x (s i)) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x (s i)) => t x))))
-Case conversion may be inaccurate. Consider using '#align set.bInter_Union Set.biInter_iUnionₓ'. -/
theorem biInter_iUnion (s : ι → Set α) (t : α → Set β) :
(⋂ x ∈ ⋃ i, s i, t x) = ⋂ (i) (x ∈ s i), t x := by simp [@Inter_comm _ ι]
#align set.bInter_Union Set.biInter_iUnion
-/- warning: set.sUnion_Union -> Set.sUnion_iUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} (Set.{u1} α))), Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α (Set.iUnion.{u1, u2} (Set.{u1} α) ι (fun (i : ι) => s i))) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.sUnion.{u1} α (s i)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} (Set.{u2} α))), Eq.{succ u2} (Set.{u2} α) (Set.sUnion.{u2} α (Set.iUnion.{u2, u1} (Set.{u2} α) ι (fun (i : ι) => s i))) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => Set.sUnion.{u2} α (s i)))
-Case conversion may be inaccurate. Consider using '#align set.sUnion_Union Set.sUnion_iUnionₓ'. -/
theorem sUnion_iUnion (s : ι → Set (Set α)) : (⋃₀ ⋃ i, s i) = ⋃ i, ⋃₀ s i := by
simp only [sUnion_eq_bUnion, bUnion_Union]
#align set.sUnion_Union Set.sUnion_iUnion
-/- warning: set.sInter_Union -> Set.sInter_iUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} (Set.{u1} α))), Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α (Set.iUnion.{u1, u2} (Set.{u1} α) ι (fun (i : ι) => s i))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.sInter.{u1} α (s i)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} (Set.{u2} α))), Eq.{succ u2} (Set.{u2} α) (Set.sInter.{u2} α (Set.iUnion.{u2, u1} (Set.{u2} α) ι (fun (i : ι) => s i))) (Set.iInter.{u2, u1} α ι (fun (i : ι) => Set.sInter.{u2} α (s i)))
-Case conversion may be inaccurate. Consider using '#align set.sInter_Union Set.sInter_iUnionₓ'. -/
theorem sInter_iUnion (s : ι → Set (Set α)) : (⋂₀ ⋃ i, s i) = ⋂ i, ⋂₀ s i := by
simp only [sInter_eq_bInter, bInter_Union]
#align set.sInter_Union Set.sInter_iUnion
-/- warning: set.Union_range_eq_sUnion -> Set.iUnion_range_eq_sUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (C : Set.{u1} (Set.{u1} α)) {f : forall (s : coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C), β -> (coeSort.{succ u1, succ (succ u1)} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) Type.{u1} (coeSortTrans.{succ (succ u1), succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) (coeBaseAux.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) (Set.{u1} α) (coeSubtype.{succ u1} (Set.{u1} α) (fun (x : Set.{u1} α) => Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) x C)))) s)}, (forall (s : coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C), Function.Surjective.{succ u2, succ u1} β (coeSort.{succ u1, succ (succ u1)} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) Type.{u1} (coeSortTrans.{succ (succ u1), succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) (coeBaseAux.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) (Set.{u1} α) (coeSubtype.{succ u1} (Set.{u1} α) (fun (x : Set.{u1} α) => Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) x C)))) s) (f s)) -> (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α β (fun (y : β) => Set.range.{u1, succ u1} α (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) (fun (s : coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) => Subtype.val.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (HasCoeTAux.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) (Set.{u1} α) (coeBaseAux.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) (Set.{u1} α) (coeSubtype.{succ u1} (Set.{u1} α) (fun (x : Set.{u1} α) => Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) x C))) s)) (f s y)))) (Set.sUnion.{u1} α C))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (C : Set.{u2} (Set.{u2} α)) {f : forall (s : Set.Elem.{u2} (Set.{u2} α) C), β -> (Set.Elem.{u2} α (Subtype.val.{succ u2} (Set.{u2} α) (fun (x : Set.{u2} α) => Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) x C) s))}, (forall (s : Set.Elem.{u2} (Set.{u2} α) C), Function.Surjective.{succ u1, succ u2} β (Set.Elem.{u2} α (Subtype.val.{succ u2} (Set.{u2} α) (fun (x : Set.{u2} α) => Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) x C) s)) (f s)) -> (Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, succ u1} α β (fun (y : β) => Set.range.{u2, succ u2} α (Set.Elem.{u2} (Set.{u2} α) C) (fun (s : Set.Elem.{u2} (Set.{u2} α) C) => Subtype.val.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Subtype.val.{succ u2} (Set.{u2} α) (fun (x : Set.{u2} α) => Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) x C) s)) (f s y)))) (Set.sUnion.{u2} α C))
-Case conversion may be inaccurate. Consider using '#align set.Union_range_eq_sUnion Set.iUnion_range_eq_sUnionₓ'. -/
theorem iUnion_range_eq_sUnion {α β : Type _} (C : Set (Set α)) {f : ∀ s : C, β → s}
(hf : ∀ s : C, Surjective (f s)) : (⋃ y : β, range fun s : C => (f s y).val) = ⋃₀ C :=
by
@@ -2565,12 +1521,6 @@ theorem iUnion_range_eq_sUnion {α β : Type _} (C : Set (Set α)) {f : ∀ s :
exact congr_arg Subtype.val hy
#align set.Union_range_eq_sUnion Set.iUnion_range_eq_sUnion
-/- warning: set.Union_range_eq_Union -> Set.iUnion_range_eq_iUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} (C : ι -> (Set.{u1} α)) {f : forall (x : ι), β -> (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) (C x))}, (forall (x : ι), Function.Surjective.{succ u2, succ u1} β (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) (C x)) (f x)) -> (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α β (fun (y : β) => Set.range.{u1, u3} α ι (fun (x : ι) => Subtype.val.{succ u1} α (fun (x_1 : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x_1 (C x)) (f x y)))) (Set.iUnion.{u1, u3} α ι (fun (x : ι) => C x)))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} (C : ι -> (Set.{u3} α)) {f : forall (x : ι), β -> (Set.Elem.{u3} α (C x))}, (forall (x : ι), Function.Surjective.{succ u2, succ u3} β (Set.Elem.{u3} α (C x)) (f x)) -> (Eq.{succ u3} (Set.{u3} α) (Set.iUnion.{u3, succ u2} α β (fun (y : β) => Set.range.{u3, u1} α ι (fun (x : ι) => Subtype.val.{succ u3} α (fun (x_1 : α) => Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x_1 (C x)) (f x y)))) (Set.iUnion.{u3, u1} α ι (fun (x : ι) => C x)))
-Case conversion may be inaccurate. Consider using '#align set.Union_range_eq_Union Set.iUnion_range_eq_iUnionₓ'. -/
theorem iUnion_range_eq_iUnion (C : ι → Set α) {f : ∀ x : ι, β → C x}
(hf : ∀ x : ι, Surjective (f x)) : (⋃ y : β, range fun x : ι => (f x y).val) = ⋃ x, C x :=
by
@@ -2580,44 +1530,20 @@ theorem iUnion_range_eq_iUnion (C : ι → Set α) {f : ∀ x : ι, β → C x}
exact ⟨y, i, congr_arg Subtype.val hy⟩
#align set.Union_range_eq_Union Set.iUnion_range_eq_iUnion
-/- warning: set.union_distrib_Inter_left -> Set.union_distrib_iInter_left is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} α)) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) t (Set.iInter.{u1, u2} α ι (fun (i : ι) => s i))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) t (s i)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} α)) (t : Set.{u2} α), Eq.{succ u2} (Set.{u2} α) (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) t (Set.iInter.{u2, u1} α ι (fun (i : ι) => s i))) (Set.iInter.{u2, u1} α ι (fun (i : ι) => Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) t (s i)))
-Case conversion may be inaccurate. Consider using '#align set.union_distrib_Inter_left Set.union_distrib_iInter_leftₓ'. -/
theorem union_distrib_iInter_left (s : ι → Set α) (t : Set α) : (t ∪ ⋂ i, s i) = ⋂ i, t ∪ s i :=
sup_iInf_eq _ _
#align set.union_distrib_Inter_left Set.union_distrib_iInter_left
-/- warning: set.union_distrib_Inter₂_left -> Set.union_distrib_iInter₂_left is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} (s : Set.{u1} α) (t : forall (i : ι), (κ i) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => t i j)))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s (t i j))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : Set.{u3} α) (t : forall (i : ι), (κ i) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Union.union.{u3} (Set.{u3} α) (Set.instUnionSet.{u3} α) s (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => t i j)))) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => Union.union.{u3} (Set.{u3} α) (Set.instUnionSet.{u3} α) s (t i j))))
-Case conversion may be inaccurate. Consider using '#align set.union_distrib_Inter₂_left Set.union_distrib_iInter₂_leftₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem union_distrib_iInter₂_left (s : Set α) (t : ∀ i, κ i → Set α) :
(s ∪ ⋂ (i) (j), t i j) = ⋂ (i) (j), s ∪ t i j := by simp_rw [union_distrib_Inter_left]
#align set.union_distrib_Inter₂_left Set.union_distrib_iInter₂_left
-/- warning: set.union_distrib_Inter_right -> Set.union_distrib_iInter_right is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} α)) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => s i)) t) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (s i) t))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} α)) (t : Set.{u2} α), Eq.{succ u2} (Set.{u2} α) (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => s i)) t) (Set.iInter.{u2, u1} α ι (fun (i : ι) => Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) (s i) t))
-Case conversion may be inaccurate. Consider using '#align set.union_distrib_Inter_right Set.union_distrib_iInter_rightₓ'. -/
theorem union_distrib_iInter_right (s : ι → Set α) (t : Set α) : (⋂ i, s i) ∪ t = ⋂ i, s i ∪ t :=
iInf_sup_eq _ _
#align set.union_distrib_Inter_right Set.union_distrib_iInter_right
-/- warning: set.union_distrib_Inter₂_right -> Set.union_distrib_iInter₂_right is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} (s : forall (i : ι), (κ i) -> (Set.{u1} α)) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) t) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (s i j) t)))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : forall (i : ι), (κ i) -> (Set.{u3} α)) (t : Set.{u3} α), Eq.{succ u3} (Set.{u3} α) (Union.union.{u3} (Set.{u3} α) (Set.instUnionSet.{u3} α) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) t) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => Union.union.{u3} (Set.{u3} α) (Set.instUnionSet.{u3} α) (s i j) t)))
-Case conversion may be inaccurate. Consider using '#align set.union_distrib_Inter₂_right Set.union_distrib_iInter₂_rightₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem union_distrib_iInter₂_right (s : ∀ i, κ i → Set α) (t : Set α) :
@@ -2629,56 +1555,26 @@ section Function
/-! ### `maps_to` -/
-/- warning: set.maps_to_sUnion -> Set.mapsTo_sUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {S : Set.{u1} (Set.{u1} α)} {t : Set.{u2} β} {f : α -> β}, (forall (s : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s S) -> (Set.MapsTo.{u1, u2} α β f s t)) -> (Set.MapsTo.{u1, u2} α β f (Set.sUnion.{u1} α S) t)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {S : Set.{u2} (Set.{u2} α)} {t : Set.{u1} β} {f : α -> β}, (forall (s : Set.{u2} α), (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) s S) -> (Set.MapsTo.{u2, u1} α β f s t)) -> (Set.MapsTo.{u2, u1} α β f (Set.sUnion.{u2} α S) t)
-Case conversion may be inaccurate. Consider using '#align set.maps_to_sUnion Set.mapsTo_sUnionₓ'. -/
theorem mapsTo_sUnion {S : Set (Set α)} {t : Set β} {f : α → β} (H : ∀ s ∈ S, MapsTo f s t) :
MapsTo f (⋃₀ S) t := fun x ⟨s, hs, hx⟩ => H s hs hx
#align set.maps_to_sUnion Set.mapsTo_sUnion
-/- warning: set.maps_to_Union -> Set.mapsTo_iUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)} {t : Set.{u2} β} {f : α -> β}, (forall (i : ι), Set.MapsTo.{u1, u2} α β f (s i) t) -> (Set.MapsTo.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i)) t)
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u3} α)} {t : Set.{u2} β} {f : α -> β}, (forall (i : ι), Set.MapsTo.{u3, u2} α β f (s i) t) -> (Set.MapsTo.{u3, u2} α β f (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i)) t)
-Case conversion may be inaccurate. Consider using '#align set.maps_to_Union Set.mapsTo_iUnionₓ'. -/
theorem mapsTo_iUnion {s : ι → Set α} {t : Set β} {f : α → β} (H : ∀ i, MapsTo f (s i) t) :
MapsTo f (⋃ i, s i) t :=
mapsTo_sUnion <| forall_range_iff.2 H
#align set.maps_to_Union Set.mapsTo_iUnion
-/- warning: set.maps_to_Union₂ -> Set.mapsTo_iUnion₂ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : Set.{u2} β} {f : α -> β}, (forall (i : ι) (j : κ i), Set.MapsTo.{u1, u2} α β f (s i j) t) -> (Set.MapsTo.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => Set.iUnion.{u1, u4} α (κ i) (fun (j : κ i) => s i j))) t)
-but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u4} α)} {t : Set.{u3} β} {f : α -> β}, (forall (i : ι) (j : κ i), Set.MapsTo.{u4, u3} α β f (s i j) t) -> (Set.MapsTo.{u4, u3} α β f (Set.iUnion.{u4, u2} α ι (fun (i : ι) => Set.iUnion.{u4, u1} α (κ i) (fun (j : κ i) => s i j))) t)
-Case conversion may be inaccurate. Consider using '#align set.maps_to_Union₂ Set.mapsTo_iUnion₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem mapsTo_iUnion₂ {s : ∀ i, κ i → Set α} {t : Set β} {f : α → β}
(H : ∀ i j, MapsTo f (s i j) t) : MapsTo f (⋃ (i) (j), s i j) t :=
mapsTo_iUnion fun i => mapsTo_iUnion (H i)
#align set.maps_to_Union₂ Set.mapsTo_iUnion₂
-/- warning: set.maps_to_Union_Union -> Set.mapsTo_iUnion_iUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.MapsTo.{u1, u2} α β f (s i) (t i)) -> (Set.MapsTo.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, u3} β ι (fun (i : ι) => t i)))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u3} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.MapsTo.{u3, u2} α β f (s i) (t i)) -> (Set.MapsTo.{u3, u2} α β f (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.maps_to_Union_Union Set.mapsTo_iUnion_iUnionₓ'. -/
theorem mapsTo_iUnion_iUnion {s : ι → Set α} {t : ι → Set β} {f : α → β}
(H : ∀ i, MapsTo f (s i) (t i)) : MapsTo f (⋃ i, s i) (⋃ i, t i) :=
mapsTo_iUnion fun i => (H i).mono (Subset.refl _) (subset_iUnion t i)
#align set.maps_to_Union_Union Set.mapsTo_iUnion_iUnion
-/- warning: set.maps_to_Union₂_Union₂ -> Set.mapsTo_iUnion₂_iUnion₂ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i : ι), (κ i) -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.MapsTo.{u1, u2} α β f (s i j) (t i j)) -> (Set.MapsTo.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => Set.iUnion.{u1, u4} α (κ i) (fun (j : κ i) => s i j))) (Set.iUnion.{u2, u3} β ι (fun (i : ι) => Set.iUnion.{u2, u4} β (κ i) (fun (j : κ i) => t i j))))
-but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u4} α)} {t : forall (i : ι), (κ i) -> (Set.{u3} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.MapsTo.{u4, u3} α β f (s i j) (t i j)) -> (Set.MapsTo.{u4, u3} α β f (Set.iUnion.{u4, u2} α ι (fun (i : ι) => Set.iUnion.{u4, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.iUnion.{u3, u2} β ι (fun (i : ι) => Set.iUnion.{u3, u1} β (κ i) (fun (j : κ i) => t i j))))
-Case conversion may be inaccurate. Consider using '#align set.maps_to_Union₂_Union₂ Set.mapsTo_iUnion₂_iUnion₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem mapsTo_iUnion₂_iUnion₂ {s : ∀ i, κ i → Set α} {t : ∀ i, κ i → Set β} {f : α → β}
@@ -2686,55 +1582,25 @@ theorem mapsTo_iUnion₂_iUnion₂ {s : ∀ i, κ i → Set α} {t : ∀ i, κ i
mapsTo_iUnion_iUnion fun i => mapsTo_iUnion_iUnion (H i)
#align set.maps_to_Union₂_Union₂ Set.mapsTo_iUnion₂_iUnion₂
-/- warning: set.maps_to_sInter -> Set.mapsTo_sInter is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {T : Set.{u2} (Set.{u2} β)} {f : α -> β}, (forall (t : Set.{u2} β), (Membership.Mem.{u2, u2} (Set.{u2} β) (Set.{u2} (Set.{u2} β)) (Set.hasMem.{u2} (Set.{u2} β)) t T) -> (Set.MapsTo.{u1, u2} α β f s t)) -> (Set.MapsTo.{u1, u2} α β f s (Set.sInter.{u2} β T))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {T : Set.{u1} (Set.{u1} β)} {f : α -> β}, (forall (t : Set.{u1} β), (Membership.mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.instMembershipSet.{u1} (Set.{u1} β)) t T) -> (Set.MapsTo.{u2, u1} α β f s t)) -> (Set.MapsTo.{u2, u1} α β f s (Set.sInter.{u1} β T))
-Case conversion may be inaccurate. Consider using '#align set.maps_to_sInter Set.mapsTo_sInterₓ'. -/
theorem mapsTo_sInter {s : Set α} {T : Set (Set β)} {f : α → β} (H : ∀ t ∈ T, MapsTo f s t) :
MapsTo f s (⋂₀ T) := fun x hx t ht => H t ht hx
#align set.maps_to_sInter Set.mapsTo_sInter
-/- warning: set.maps_to_Inter -> Set.mapsTo_iInter is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : Set.{u1} α} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.MapsTo.{u1, u2} α β f s (t i)) -> (Set.MapsTo.{u1, u2} α β f s (Set.iInter.{u2, u3} β ι (fun (i : ι) => t i)))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : Set.{u3} α} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.MapsTo.{u3, u2} α β f s (t i)) -> (Set.MapsTo.{u3, u2} α β f s (Set.iInter.{u2, u1} β ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.maps_to_Inter Set.mapsTo_iInterₓ'. -/
theorem mapsTo_iInter {s : Set α} {t : ι → Set β} {f : α → β} (H : ∀ i, MapsTo f s (t i)) :
MapsTo f s (⋂ i, t i) := fun x hx => mem_iInter.2 fun i => H i hx
#align set.maps_to_Inter Set.mapsTo_iInter
-/- warning: set.maps_to_Inter₂ -> Set.mapsTo_iInter₂ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {s : Set.{u1} α} {t : forall (i : ι), (κ i) -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.MapsTo.{u1, u2} α β f s (t i j)) -> (Set.MapsTo.{u1, u2} α β f s (Set.iInter.{u2, u3} β ι (fun (i : ι) => Set.iInter.{u2, u4} β (κ i) (fun (j : κ i) => t i j))))
-but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : Set.{u4} α} {t : forall (i : ι), (κ i) -> (Set.{u3} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.MapsTo.{u4, u3} α β f s (t i j)) -> (Set.MapsTo.{u4, u3} α β f s (Set.iInter.{u3, u2} β ι (fun (i : ι) => Set.iInter.{u3, u1} β (κ i) (fun (j : κ i) => t i j))))
-Case conversion may be inaccurate. Consider using '#align set.maps_to_Inter₂ Set.mapsTo_iInter₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem mapsTo_iInter₂ {s : Set α} {t : ∀ i, κ i → Set β} {f : α → β}
(H : ∀ i j, MapsTo f s (t i j)) : MapsTo f s (⋂ (i) (j), t i j) :=
mapsTo_iInter fun i => mapsTo_iInter (H i)
#align set.maps_to_Inter₂ Set.mapsTo_iInter₂
-/- warning: set.maps_to_Inter_Inter -> Set.mapsTo_iInter_iInter is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.MapsTo.{u1, u2} α β f (s i) (t i)) -> (Set.MapsTo.{u1, u2} α β f (Set.iInter.{u1, u3} α ι (fun (i : ι) => s i)) (Set.iInter.{u2, u3} β ι (fun (i : ι) => t i)))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u3} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.MapsTo.{u3, u2} α β f (s i) (t i)) -> (Set.MapsTo.{u3, u2} α β f (Set.iInter.{u3, u1} α ι (fun (i : ι) => s i)) (Set.iInter.{u2, u1} β ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.maps_to_Inter_Inter Set.mapsTo_iInter_iInterₓ'. -/
theorem mapsTo_iInter_iInter {s : ι → Set α} {t : ι → Set β} {f : α → β}
(H : ∀ i, MapsTo f (s i) (t i)) : MapsTo f (⋂ i, s i) (⋂ i, t i) :=
mapsTo_iInter fun i => (H i).mono (iInter_subset s i) (Subset.refl _)
#align set.maps_to_Inter_Inter Set.mapsTo_iInter_iInter
-/- warning: set.maps_to_Inter₂_Inter₂ -> Set.mapsTo_iInter₂_iInter₂ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i : ι), (κ i) -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.MapsTo.{u1, u2} α β f (s i j) (t i j)) -> (Set.MapsTo.{u1, u2} α β f (Set.iInter.{u1, u3} α ι (fun (i : ι) => Set.iInter.{u1, u4} α (κ i) (fun (j : κ i) => s i j))) (Set.iInter.{u2, u3} β ι (fun (i : ι) => Set.iInter.{u2, u4} β (κ i) (fun (j : κ i) => t i j))))
-but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u4} α)} {t : forall (i : ι), (κ i) -> (Set.{u3} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.MapsTo.{u4, u3} α β f (s i j) (t i j)) -> (Set.MapsTo.{u4, u3} α β f (Set.iInter.{u4, u2} α ι (fun (i : ι) => Set.iInter.{u4, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.iInter.{u3, u2} β ι (fun (i : ι) => Set.iInter.{u3, u1} β (κ i) (fun (j : κ i) => t i j))))
-Case conversion may be inaccurate. Consider using '#align set.maps_to_Inter₂_Inter₂ Set.mapsTo_iInter₂_iInter₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem mapsTo_iInter₂_iInter₂ {s : ∀ i, κ i → Set α} {t : ∀ i, κ i → Set β} {f : α → β}
@@ -2742,22 +1608,10 @@ theorem mapsTo_iInter₂_iInter₂ {s : ∀ i, κ i → Set α} {t : ∀ i, κ i
mapsTo_iInter_iInter fun i => mapsTo_iInter_iInter (H i)
#align set.maps_to_Inter₂_Inter₂ Set.mapsTo_iInter₂_iInter₂
-/- warning: set.image_Inter_subset -> Set.image_iInter_subset is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} (s : ι -> (Set.{u1} α)) (f : α -> β), HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.image.{u1, u2} α β f (Set.iInter.{u1, u3} α ι (fun (i : ι) => s i))) (Set.iInter.{u2, u3} β ι (fun (i : ι) => Set.image.{u1, u2} α β f (s i)))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u3} α)) (f : α -> β), HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (Set.image.{u3, u2} α β f (Set.iInter.{u3, u1} α ι (fun (i : ι) => s i))) (Set.iInter.{u2, u1} β ι (fun (i : ι) => Set.image.{u3, u2} α β f (s i)))
-Case conversion may be inaccurate. Consider using '#align set.image_Inter_subset Set.image_iInter_subsetₓ'. -/
theorem image_iInter_subset (s : ι → Set α) (f : α → β) : (f '' ⋂ i, s i) ⊆ ⋂ i, f '' s i :=
(mapsTo_iInter_iInter fun i => mapsTo_image f (s i)).image_subset
#align set.image_Inter_subset Set.image_iInter_subset
-/- warning: set.image_Inter₂_subset -> Set.image_iInter₂_subset is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} (s : forall (i : ι), (κ i) -> (Set.{u1} α)) (f : α -> β), HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.image.{u1, u2} α β f (Set.iInter.{u1, u3} α ι (fun (i : ι) => Set.iInter.{u1, u4} α (κ i) (fun (j : κ i) => s i j)))) (Set.iInter.{u2, u3} β ι (fun (i : ι) => Set.iInter.{u2, u4} β (κ i) (fun (j : κ i) => Set.image.{u1, u2} α β f (s i j))))
-but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : forall (i : ι), (κ i) -> (Set.{u4} α)) (f : α -> β), HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (Set.image.{u4, u3} α β f (Set.iInter.{u4, u2} α ι (fun (i : ι) => Set.iInter.{u4, u1} α (κ i) (fun (j : κ i) => s i j)))) (Set.iInter.{u3, u2} β ι (fun (i : ι) => Set.iInter.{u3, u1} β (κ i) (fun (j : κ i) => Set.image.{u4, u3} α β f (s i j))))
-Case conversion may be inaccurate. Consider using '#align set.image_Inter₂_subset Set.image_iInter₂_subsetₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem image_iInter₂_subset (s : ∀ i, κ i → Set α) (f : α → β) :
@@ -2765,12 +1619,6 @@ theorem image_iInter₂_subset (s : ∀ i, κ i → Set α) (f : α → β) :
(mapsTo_iInter₂_iInter₂ fun i hi => mapsTo_image f (s i hi)).image_subset
#align set.image_Inter₂_subset Set.image_iInter₂_subset
-/- warning: set.image_sInter_subset -> Set.image_sInter_subset is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (S : Set.{u1} (Set.{u1} α)) (f : α -> β), HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.image.{u1, u2} α β f (Set.sInter.{u1} α S)) (Set.iInter.{u2, succ u1} β (Set.{u1} α) (fun (s : Set.{u1} α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s S) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s S) => Set.image.{u1, u2} α β f s)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (S : Set.{u2} (Set.{u2} α)) (f : α -> β), HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (Set.image.{u2, u1} α β f (Set.sInter.{u2} α S)) (Set.iInter.{u1, succ u2} β (Set.{u2} α) (fun (s : Set.{u2} α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) s S) (fun (H : Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) s S) => Set.image.{u2, u1} α β f s)))
-Case conversion may be inaccurate. Consider using '#align set.image_sInter_subset Set.image_sInter_subsetₓ'. -/
theorem image_sInter_subset (S : Set (Set α)) (f : α → β) : f '' ⋂₀ S ⊆ ⋂ s ∈ S, f '' s := by
rw [sInter_eq_bInter]; apply image_Inter₂_subset
#align set.image_sInter_subset Set.image_sInter_subset
@@ -2786,12 +1634,6 @@ variable (s : Set β) {f : α → β} {U : ι → Set β} (hU : iUnion U = univ)
include hU
-/- warning: set.injective_iff_injective_of_Union_eq_univ -> Set.injective_iff_injective_of_iUnion_eq_univ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : α -> β} {U : ι -> (Set.{u2} β)}, (Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, u3} β ι U) (Set.univ.{u2} β)) -> (Iff (Function.Injective.{succ u1, succ u2} α β f) (forall (i : ι), Function.Injective.{succ u1, succ u2} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) (Set.preimage.{u1, u2} α β f (U i))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (U i)) (Set.restrictPreimage.{u1, u2} α β (U i) f)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} {f : α -> β} {U : ι -> (Set.{u1} β)}, (Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, u3} β ι U) (Set.univ.{u1} β)) -> (Iff (Function.Injective.{succ u2, succ u1} α β f) (forall (i : ι), Function.Injective.{succ u2, succ u1} (Set.Elem.{u2} α (Set.preimage.{u2, u1} α β f (U i))) (Set.Elem.{u1} β (U i)) (Set.restrictPreimage.{u2, u1} α β (U i) f)))
-Case conversion may be inaccurate. Consider using '#align set.injective_iff_injective_of_Union_eq_univ Set.injective_iff_injective_of_iUnion_eq_univₓ'. -/
theorem injective_iff_injective_of_iUnion_eq_univ :
Injective f ↔ ∀ i, Injective ((U i).restrictPreimage f) :=
by
@@ -2800,12 +1642,6 @@ theorem injective_iff_injective_of_iUnion_eq_univ :
injection @H i ⟨x, hi⟩ ⟨y, show f y ∈ U i from e ▸ hi⟩ (Subtype.ext e)
#align set.injective_iff_injective_of_Union_eq_univ Set.injective_iff_injective_of_iUnion_eq_univ
-/- warning: set.surjective_iff_surjective_of_Union_eq_univ -> Set.surjective_iff_surjective_of_iUnion_eq_univ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : α -> β} {U : ι -> (Set.{u2} β)}, (Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, u3} β ι U) (Set.univ.{u2} β)) -> (Iff (Function.Surjective.{succ u1, succ u2} α β f) (forall (i : ι), Function.Surjective.{succ u1, succ u2} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) (Set.preimage.{u1, u2} α β f (U i))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (U i)) (Set.restrictPreimage.{u1, u2} α β (U i) f)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} {f : α -> β} {U : ι -> (Set.{u1} β)}, (Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, u3} β ι U) (Set.univ.{u1} β)) -> (Iff (Function.Surjective.{succ u2, succ u1} α β f) (forall (i : ι), Function.Surjective.{succ u2, succ u1} (Set.Elem.{u2} α (Set.preimage.{u2, u1} α β f (U i))) (Set.Elem.{u1} β (U i)) (Set.restrictPreimage.{u2, u1} α β (U i) f)))
-Case conversion may be inaccurate. Consider using '#align set.surjective_iff_surjective_of_Union_eq_univ Set.surjective_iff_surjective_of_iUnion_eq_univₓ'. -/
theorem surjective_iff_surjective_of_iUnion_eq_univ :
Surjective f ↔ ∀ i, Surjective ((U i).restrictPreimage f) :=
by
@@ -2814,12 +1650,6 @@ theorem surjective_iff_surjective_of_iUnion_eq_univ :
exact ⟨_, congr_arg Subtype.val (H i ⟨x, hi⟩).choose_spec⟩
#align set.surjective_iff_surjective_of_Union_eq_univ Set.surjective_iff_surjective_of_iUnion_eq_univ
-/- warning: set.bijective_iff_bijective_of_Union_eq_univ -> Set.bijective_iff_bijective_of_iUnion_eq_univ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : α -> β} {U : ι -> (Set.{u2} β)}, (Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, u3} β ι U) (Set.univ.{u2} β)) -> (Iff (Function.Bijective.{succ u1, succ u2} α β f) (forall (i : ι), Function.Bijective.{succ u1, succ u2} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) (Set.preimage.{u1, u2} α β f (U i))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (U i)) (Set.restrictPreimage.{u1, u2} α β (U i) f)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} {f : α -> β} {U : ι -> (Set.{u1} β)}, (Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, u3} β ι U) (Set.univ.{u1} β)) -> (Iff (Function.Bijective.{succ u2, succ u1} α β f) (forall (i : ι), Function.Bijective.{succ u2, succ u1} (Set.Elem.{u2} α (Set.preimage.{u2, u1} α β f (U i))) (Set.Elem.{u1} β (U i)) (Set.restrictPreimage.{u2, u1} α β (U i) f)))
-Case conversion may be inaccurate. Consider using '#align set.bijective_iff_bijective_of_Union_eq_univ Set.bijective_iff_bijective_of_iUnion_eq_univₓ'. -/
theorem bijective_iff_bijective_of_iUnion_eq_univ :
Bijective f ↔ ∀ i, Bijective ((U i).restrictPreimage f) := by
simp_rw [bijective, forall_and, injective_iff_injective_of_Union_eq_univ hU,
@@ -2831,12 +1661,6 @@ end
/-! ### `inj_on` -/
-/- warning: set.inj_on.image_Inter_eq -> Set.InjOn.image_iInter_eq is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} [_inst_1 : Nonempty.{u3} ι] {s : ι -> (Set.{u1} α)} {f : α -> β}, (Set.InjOn.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) -> (Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β f (Set.iInter.{u1, u3} α ι (fun (i : ι) => s i))) (Set.iInter.{u2, u3} β ι (fun (i : ι) => Set.image.{u1, u2} α β f (s i))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} [_inst_1 : Nonempty.{u3} ι] {s : ι -> (Set.{u2} α)} {f : α -> β}, (Set.InjOn.{u2, u1} α β f (Set.iUnion.{u2, u3} α ι (fun (i : ι) => s i))) -> (Eq.{succ u1} (Set.{u1} β) (Set.image.{u2, u1} α β f (Set.iInter.{u2, u3} α ι (fun (i : ι) => s i))) (Set.iInter.{u1, u3} β ι (fun (i : ι) => Set.image.{u2, u1} α β f (s i))))
-Case conversion may be inaccurate. Consider using '#align set.inj_on.image_Inter_eq Set.InjOn.image_iInter_eqₓ'. -/
theorem InjOn.image_iInter_eq [Nonempty ι] {s : ι → Set α} {f : α → β} (h : InjOn f (⋃ i, s i)) :
(f '' ⋂ i, s i) = ⋂ i, f '' s i := by
inhabit ι
@@ -2850,12 +1674,6 @@ theorem InjOn.image_iInter_eq [Nonempty ι] {s : ι → Set α} {f : α → β}
simp only [hy]
#align set.inj_on.image_Inter_eq Set.InjOn.image_iInter_eq
-/- warning: set.inj_on.image_bInter_eq -> Set.InjOn.image_biInter_eq is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {p : ι -> Prop} {s : forall (i : ι), (p i) -> (Set.{u1} α)}, (Exists.{u3} ι (fun (i : ι) => p i)) -> (forall {f : α -> β}, (Set.InjOn.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => Set.iUnion.{u1, 0} α (p i) (fun (hi : p i) => s i hi)))) -> (Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β f (Set.iInter.{u1, u3} α ι (fun (i : ι) => Set.iInter.{u1, 0} α (p i) (fun (hi : p i) => s i hi)))) (Set.iInter.{u2, u3} β ι (fun (i : ι) => Set.iInter.{u2, 0} β (p i) (fun (hi : p i) => Set.image.{u1, u2} α β f (s i hi))))))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u1}} {ι : Sort.{u2}} {p : ι -> Prop} {s : forall (i : ι), (p i) -> (Set.{u3} α)}, (Exists.{u2} ι (fun (i : ι) => p i)) -> (forall {f : α -> β}, (Set.InjOn.{u3, u1} α β f (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, 0} α (p i) (fun (hi : p i) => s i hi)))) -> (Eq.{succ u1} (Set.{u1} β) (Set.image.{u3, u1} α β f (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, 0} α (p i) (fun (hi : p i) => s i hi)))) (Set.iInter.{u1, u2} β ι (fun (i : ι) => Set.iInter.{u1, 0} β (p i) (fun (hi : p i) => Set.image.{u3, u1} α β f (s i hi))))))
-Case conversion may be inaccurate. Consider using '#align set.inj_on.image_bInter_eq Set.InjOn.image_biInter_eqₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i hi) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i hi) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i hi) -/
@@ -2869,12 +1687,6 @@ theorem InjOn.image_biInter_eq {p : ι → Prop} {s : ∀ (i) (hi : p i), Set α
simpa only [Union, iSup_subtype'] using h
#align set.inj_on.image_bInter_eq Set.InjOn.image_biInter_eq
-/- warning: set.image_Inter -> Set.image_iInter is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : α -> β}, (Function.Bijective.{succ u1, succ u2} α β f) -> (forall (s : ι -> (Set.{u1} α)), Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β f (Set.iInter.{u1, u3} α ι (fun (i : ι) => s i))) (Set.iInter.{u2, u3} β ι (fun (i : ι) => Set.image.{u1, u2} α β f (s i))))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {f : α -> β}, (Function.Bijective.{succ u3, succ u2} α β f) -> (forall (s : ι -> (Set.{u3} α)), Eq.{succ u2} (Set.{u2} β) (Set.image.{u3, u2} α β f (Set.iInter.{u3, u1} α ι (fun (i : ι) => s i))) (Set.iInter.{u2, u1} β ι (fun (i : ι) => Set.image.{u3, u2} α β f (s i))))
-Case conversion may be inaccurate. Consider using '#align set.image_Inter Set.image_iInterₓ'. -/
theorem image_iInter {f : α → β} (hf : Bijective f) (s : ι → Set α) :
(f '' ⋂ i, s i) = ⋂ i, f '' s i :=
by
@@ -2883,24 +1695,12 @@ theorem image_iInter {f : α → β} (hf : Bijective f) (s : ι → Set α) :
· exact (hf.injective.inj_on _).image_iInter_eq
#align set.image_Inter Set.image_iInter
-/- warning: set.image_Inter₂ -> Set.image_iInter₂ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {f : α -> β}, (Function.Bijective.{succ u1, succ u2} α β f) -> (forall (s : forall (i : ι), (κ i) -> (Set.{u1} α)), Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β f (Set.iInter.{u1, u3} α ι (fun (i : ι) => Set.iInter.{u1, u4} α (κ i) (fun (j : κ i) => s i j)))) (Set.iInter.{u2, u3} β ι (fun (i : ι) => Set.iInter.{u2, u4} β (κ i) (fun (j : κ i) => Set.image.{u1, u2} α β f (s i j)))))
-but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {f : α -> β}, (Function.Bijective.{succ u4, succ u3} α β f) -> (forall (s : forall (i : ι), (κ i) -> (Set.{u4} α)), Eq.{succ u3} (Set.{u3} β) (Set.image.{u4, u3} α β f (Set.iInter.{u4, u2} α ι (fun (i : ι) => Set.iInter.{u4, u1} α (κ i) (fun (j : κ i) => s i j)))) (Set.iInter.{u3, u2} β ι (fun (i : ι) => Set.iInter.{u3, u1} β (κ i) (fun (j : κ i) => Set.image.{u4, u3} α β f (s i j)))))
-Case conversion may be inaccurate. Consider using '#align set.image_Inter₂ Set.image_iInter₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem image_iInter₂ {f : α → β} (hf : Bijective f) (s : ∀ i, κ i → Set α) :
(f '' ⋂ (i) (j), s i j) = ⋂ (i) (j), f '' s i j := by simp_rw [image_Inter hf]
#align set.image_Inter₂ Set.image_iInter₂
-/- warning: set.inj_on_Union_of_directed -> Set.inj_on_iUnion_of_directed is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)}, (Directed.{u1, u3} (Set.{u1} α) ι (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α)) s) -> (forall {f : α -> β}, (forall (i : ι), Set.InjOn.{u1, u2} α β f (s i)) -> (Set.InjOn.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u3} α)}, (Directed.{u3, u2} (Set.{u3} α) ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.23851 : Set.{u3} α) (x._@.Mathlib.Data.Set.Lattice._hyg.23853 : Set.{u3} α) => HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) x._@.Mathlib.Data.Set.Lattice._hyg.23851 x._@.Mathlib.Data.Set.Lattice._hyg.23853) s) -> (forall {f : α -> β}, (forall (i : ι), Set.InjOn.{u3, u1} α β f (s i)) -> (Set.InjOn.{u3, u1} α β f (Set.iUnion.{u3, u2} α ι (fun (i : ι) => s i))))
-Case conversion may be inaccurate. Consider using '#align set.inj_on_Union_of_directed Set.inj_on_iUnion_of_directedₓ'. -/
theorem inj_on_iUnion_of_directed {s : ι → Set α} (hs : Directed (· ⊆ ·) s) {f : α → β}
(hf : ∀ i, InjOn f (s i)) : InjOn f (⋃ i, s i) :=
by
@@ -2914,56 +1714,26 @@ theorem inj_on_iUnion_of_directed {s : ι → Set α} (hs : Directed (· ⊆ ·)
/-! ### `surj_on` -/
-/- warning: set.surj_on_sUnion -> Set.surjOn_sUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {T : Set.{u2} (Set.{u2} β)} {f : α -> β}, (forall (t : Set.{u2} β), (Membership.Mem.{u2, u2} (Set.{u2} β) (Set.{u2} (Set.{u2} β)) (Set.hasMem.{u2} (Set.{u2} β)) t T) -> (Set.SurjOn.{u1, u2} α β f s t)) -> (Set.SurjOn.{u1, u2} α β f s (Set.sUnion.{u2} β T))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {T : Set.{u1} (Set.{u1} β)} {f : α -> β}, (forall (t : Set.{u1} β), (Membership.mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.instMembershipSet.{u1} (Set.{u1} β)) t T) -> (Set.SurjOn.{u2, u1} α β f s t)) -> (Set.SurjOn.{u2, u1} α β f s (Set.sUnion.{u1} β T))
-Case conversion may be inaccurate. Consider using '#align set.surj_on_sUnion Set.surjOn_sUnionₓ'. -/
theorem surjOn_sUnion {s : Set α} {T : Set (Set β)} {f : α → β} (H : ∀ t ∈ T, SurjOn f s t) :
SurjOn f s (⋃₀ T) := fun x ⟨t, ht, hx⟩ => H t ht hx
#align set.surj_on_sUnion Set.surjOn_sUnion
-/- warning: set.surj_on_Union -> Set.surjOn_iUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : Set.{u1} α} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.SurjOn.{u1, u2} α β f s (t i)) -> (Set.SurjOn.{u1, u2} α β f s (Set.iUnion.{u2, u3} β ι (fun (i : ι) => t i)))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : Set.{u3} α} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.SurjOn.{u3, u2} α β f s (t i)) -> (Set.SurjOn.{u3, u2} α β f s (Set.iUnion.{u2, u1} β ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.surj_on_Union Set.surjOn_iUnionₓ'. -/
theorem surjOn_iUnion {s : Set α} {t : ι → Set β} {f : α → β} (H : ∀ i, SurjOn f s (t i)) :
SurjOn f s (⋃ i, t i) :=
surjOn_sUnion <| forall_range_iff.2 H
#align set.surj_on_Union Set.surjOn_iUnion
-/- warning: set.surj_on_Union_Union -> Set.surjOn_iUnion_iUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.SurjOn.{u1, u2} α β f (s i) (t i)) -> (Set.SurjOn.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, u3} β ι (fun (i : ι) => t i)))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u3} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.SurjOn.{u3, u2} α β f (s i) (t i)) -> (Set.SurjOn.{u3, u2} α β f (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.surj_on_Union_Union Set.surjOn_iUnion_iUnionₓ'. -/
theorem surjOn_iUnion_iUnion {s : ι → Set α} {t : ι → Set β} {f : α → β}
(H : ∀ i, SurjOn f (s i) (t i)) : SurjOn f (⋃ i, s i) (⋃ i, t i) :=
surjOn_iUnion fun i => (H i).mono (subset_iUnion _ _) (Subset.refl _)
#align set.surj_on_Union_Union Set.surjOn_iUnion_iUnion
-/- warning: set.surj_on_Union₂ -> Set.surjOn_iUnion₂ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {s : Set.{u1} α} {t : forall (i : ι), (κ i) -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.SurjOn.{u1, u2} α β f s (t i j)) -> (Set.SurjOn.{u1, u2} α β f s (Set.iUnion.{u2, u3} β ι (fun (i : ι) => Set.iUnion.{u2, u4} β (κ i) (fun (j : κ i) => t i j))))
-but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : Set.{u4} α} {t : forall (i : ι), (κ i) -> (Set.{u3} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.SurjOn.{u4, u3} α β f s (t i j)) -> (Set.SurjOn.{u4, u3} α β f s (Set.iUnion.{u3, u2} β ι (fun (i : ι) => Set.iUnion.{u3, u1} β (κ i) (fun (j : κ i) => t i j))))
-Case conversion may be inaccurate. Consider using '#align set.surj_on_Union₂ Set.surjOn_iUnion₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem surjOn_iUnion₂ {s : Set α} {t : ∀ i, κ i → Set β} {f : α → β}
(H : ∀ i j, SurjOn f s (t i j)) : SurjOn f s (⋃ (i) (j), t i j) :=
surjOn_iUnion fun i => surjOn_iUnion (H i)
#align set.surj_on_Union₂ Set.surjOn_iUnion₂
-/- warning: set.surj_on_Union₂_Union₂ -> Set.surjOn_iUnion₂_iUnion₂ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i : ι), (κ i) -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.SurjOn.{u1, u2} α β f (s i j) (t i j)) -> (Set.SurjOn.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => Set.iUnion.{u1, u4} α (κ i) (fun (j : κ i) => s i j))) (Set.iUnion.{u2, u3} β ι (fun (i : ι) => Set.iUnion.{u2, u4} β (κ i) (fun (j : κ i) => t i j))))
-but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u4} α)} {t : forall (i : ι), (κ i) -> (Set.{u3} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.SurjOn.{u4, u3} α β f (s i j) (t i j)) -> (Set.SurjOn.{u4, u3} α β f (Set.iUnion.{u4, u2} α ι (fun (i : ι) => Set.iUnion.{u4, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.iUnion.{u3, u2} β ι (fun (i : ι) => Set.iUnion.{u3, u1} β (κ i) (fun (j : κ i) => t i j))))
-Case conversion may be inaccurate. Consider using '#align set.surj_on_Union₂_Union₂ Set.surjOn_iUnion₂_iUnion₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem surjOn_iUnion₂_iUnion₂ {s : ∀ i, κ i → Set α} {t : ∀ i, κ i → Set β} {f : α → β}
@@ -2971,12 +1741,6 @@ theorem surjOn_iUnion₂_iUnion₂ {s : ∀ i, κ i → Set α} {t : ∀ i, κ i
surjOn_iUnion_iUnion fun i => surjOn_iUnion_iUnion (H i)
#align set.surj_on_Union₂_Union₂ Set.surjOn_iUnion₂_iUnion₂
-/- warning: set.surj_on_Inter -> Set.surjOn_iInter is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} [hi : Nonempty.{u3} ι] {s : ι -> (Set.{u1} α)} {t : Set.{u2} β} {f : α -> β}, (forall (i : ι), Set.SurjOn.{u1, u2} α β f (s i) t) -> (Set.InjOn.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) -> (Set.SurjOn.{u1, u2} α β f (Set.iInter.{u1, u3} α ι (fun (i : ι) => s i)) t)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} [hi : Nonempty.{u3} ι] {s : ι -> (Set.{u2} α)} {t : Set.{u1} β} {f : α -> β}, (forall (i : ι), Set.SurjOn.{u2, u1} α β f (s i) t) -> (Set.InjOn.{u2, u1} α β f (Set.iUnion.{u2, u3} α ι (fun (i : ι) => s i))) -> (Set.SurjOn.{u2, u1} α β f (Set.iInter.{u2, u3} α ι (fun (i : ι) => s i)) t)
-Case conversion may be inaccurate. Consider using '#align set.surj_on_Inter Set.surjOn_iInterₓ'. -/
theorem surjOn_iInter [hi : Nonempty ι] {s : ι → Set α} {t : Set β} {f : α → β}
(H : ∀ i, SurjOn f (s i) t) (Hinj : InjOn f (⋃ i, s i)) : SurjOn f (⋂ i, s i) t :=
by
@@ -2985,12 +1749,6 @@ theorem surjOn_iInter [hi : Nonempty ι] {s : ι → Set α} {t : Set β} {f :
exact fun i => H i hy
#align set.surj_on_Inter Set.surjOn_iInter
-/- warning: set.surj_on_Inter_Inter -> Set.surjOn_iInter_iInter is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} [hi : Nonempty.{u3} ι] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.SurjOn.{u1, u2} α β f (s i) (t i)) -> (Set.InjOn.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) -> (Set.SurjOn.{u1, u2} α β f (Set.iInter.{u1, u3} α ι (fun (i : ι) => s i)) (Set.iInter.{u2, u3} β ι (fun (i : ι) => t i)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} [hi : Nonempty.{u3} ι] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u1} β)} {f : α -> β}, (forall (i : ι), Set.SurjOn.{u2, u1} α β f (s i) (t i)) -> (Set.InjOn.{u2, u1} α β f (Set.iUnion.{u2, u3} α ι (fun (i : ι) => s i))) -> (Set.SurjOn.{u2, u1} α β f (Set.iInter.{u2, u3} α ι (fun (i : ι) => s i)) (Set.iInter.{u1, u3} β ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.surj_on_Inter_Inter Set.surjOn_iInter_iInterₓ'. -/
theorem surjOn_iInter_iInter [hi : Nonempty ι] {s : ι → Set α} {t : ι → Set β} {f : α → β}
(H : ∀ i, SurjOn f (s i) (t i)) (Hinj : InjOn f (⋃ i, s i)) : SurjOn f (⋂ i, s i) (⋂ i, t i) :=
surjOn_iInter (fun i => (H i).mono (Subset.refl _) (iInter_subset _ _)) Hinj
@@ -2999,23 +1757,11 @@ theorem surjOn_iInter_iInter [hi : Nonempty ι] {s : ι → Set α} {t : ι →
/-! ### `bij_on` -/
-/- warning: set.bij_on_Union -> Set.bijOn_iUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u1, u2} α β f (s i) (t i)) -> (Set.InjOn.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) -> (Set.BijOn.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, u3} β ι (fun (i : ι) => t i)))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u3} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u3, u2} α β f (s i) (t i)) -> (Set.InjOn.{u3, u2} α β f (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i))) -> (Set.BijOn.{u3, u2} α β f (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.bij_on_Union Set.bijOn_iUnionₓ'. -/
theorem bijOn_iUnion {s : ι → Set α} {t : ι → Set β} {f : α → β} (H : ∀ i, BijOn f (s i) (t i))
(Hinj : InjOn f (⋃ i, s i)) : BijOn f (⋃ i, s i) (⋃ i, t i) :=
⟨mapsTo_iUnion_iUnion fun i => (H i).MapsTo, Hinj, surjOn_iUnion_iUnion fun i => (H i).SurjOn⟩
#align set.bij_on_Union Set.bijOn_iUnion
-/- warning: set.bij_on_Inter -> Set.bijOn_iInter is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} [hi : Nonempty.{u3} ι] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u1, u2} α β f (s i) (t i)) -> (Set.InjOn.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) -> (Set.BijOn.{u1, u2} α β f (Set.iInter.{u1, u3} α ι (fun (i : ι) => s i)) (Set.iInter.{u2, u3} β ι (fun (i : ι) => t i)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} [hi : Nonempty.{u3} ι] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u1} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u2, u1} α β f (s i) (t i)) -> (Set.InjOn.{u2, u1} α β f (Set.iUnion.{u2, u3} α ι (fun (i : ι) => s i))) -> (Set.BijOn.{u2, u1} α β f (Set.iInter.{u2, u3} α ι (fun (i : ι) => s i)) (Set.iInter.{u1, u3} β ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.bij_on_Inter Set.bijOn_iInterₓ'. -/
theorem bijOn_iInter [hi : Nonempty ι] {s : ι → Set α} {t : ι → Set β} {f : α → β}
(H : ∀ i, BijOn f (s i) (t i)) (Hinj : InjOn f (⋃ i, s i)) : BijOn f (⋂ i, s i) (⋂ i, t i) :=
⟨mapsTo_iInter_iInter fun i => (H i).MapsTo,
@@ -3023,23 +1769,11 @@ theorem bijOn_iInter [hi : Nonempty ι] {s : ι → Set α} {t : ι → Set β}
surjOn_iInter_iInter (fun i => (H i).SurjOn) Hinj⟩
#align set.bij_on_Inter Set.bijOn_iInter
-/- warning: set.bij_on_Union_of_directed -> Set.bijOn_iUnion_of_directed is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)}, (Directed.{u1, u3} (Set.{u1} α) ι (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α)) s) -> (forall {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u1, u2} α β f (s i) (t i)) -> (Set.BijOn.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, u3} β ι (fun (i : ι) => t i))))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u3} α)}, (Directed.{u3, u2} (Set.{u3} α) ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.24973 : Set.{u3} α) (x._@.Mathlib.Data.Set.Lattice._hyg.24975 : Set.{u3} α) => HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) x._@.Mathlib.Data.Set.Lattice._hyg.24973 x._@.Mathlib.Data.Set.Lattice._hyg.24975) s) -> (forall {t : ι -> (Set.{u1} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u3, u1} α β f (s i) (t i)) -> (Set.BijOn.{u3, u1} α β f (Set.iUnion.{u3, u2} α ι (fun (i : ι) => s i)) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => t i))))
-Case conversion may be inaccurate. Consider using '#align set.bij_on_Union_of_directed Set.bijOn_iUnion_of_directedₓ'. -/
theorem bijOn_iUnion_of_directed {s : ι → Set α} (hs : Directed (· ⊆ ·) s) {t : ι → Set β}
{f : α → β} (H : ∀ i, BijOn f (s i) (t i)) : BijOn f (⋃ i, s i) (⋃ i, t i) :=
bijOn_iUnion H <| inj_on_iUnion_of_directed hs fun i => (H i).InjOn
#align set.bij_on_Union_of_directed Set.bijOn_iUnion_of_directed
-/- warning: set.bij_on_Inter_of_directed -> Set.bijOn_iInter_of_directed is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} [_inst_1 : Nonempty.{u3} ι] {s : ι -> (Set.{u1} α)}, (Directed.{u1, u3} (Set.{u1} α) ι (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α)) s) -> (forall {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u1, u2} α β f (s i) (t i)) -> (Set.BijOn.{u1, u2} α β f (Set.iInter.{u1, u3} α ι (fun (i : ι) => s i)) (Set.iInter.{u2, u3} β ι (fun (i : ι) => t i))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} [_inst_1 : Nonempty.{u3} ι] {s : ι -> (Set.{u2} α)}, (Directed.{u2, u3} (Set.{u2} α) ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.25093 : Set.{u2} α) (x._@.Mathlib.Data.Set.Lattice._hyg.25095 : Set.{u2} α) => HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) x._@.Mathlib.Data.Set.Lattice._hyg.25093 x._@.Mathlib.Data.Set.Lattice._hyg.25095) s) -> (forall {t : ι -> (Set.{u1} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u2, u1} α β f (s i) (t i)) -> (Set.BijOn.{u2, u1} α β f (Set.iInter.{u2, u3} α ι (fun (i : ι) => s i)) (Set.iInter.{u1, u3} β ι (fun (i : ι) => t i))))
-Case conversion may be inaccurate. Consider using '#align set.bij_on_Inter_of_directed Set.bijOn_iInter_of_directedₓ'. -/
theorem bijOn_iInter_of_directed [Nonempty ι] {s : ι → Set α} (hs : Directed (· ⊆ ·) s)
{t : ι → Set β} {f : α → β} (H : ∀ i, BijOn f (s i) (t i)) : BijOn f (⋂ i, s i) (⋂ i, t i) :=
bijOn_iInter H <| inj_on_iUnion_of_directed hs fun i => (H i).InjOn
@@ -3052,24 +1786,12 @@ end Function
section Image
-/- warning: set.image_Union -> Set.image_iUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : α -> β} {s : ι -> (Set.{u1} α)}, Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) (Set.iUnion.{u2, u3} β ι (fun (i : ι) => Set.image.{u1, u2} α β f (s i)))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {f : α -> β} {s : ι -> (Set.{u3} α)}, Eq.{succ u2} (Set.{u2} β) (Set.image.{u3, u2} α β f (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i))) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => Set.image.{u3, u2} α β f (s i)))
-Case conversion may be inaccurate. Consider using '#align set.image_Union Set.image_iUnionₓ'. -/
theorem image_iUnion {f : α → β} {s : ι → Set α} : (f '' ⋃ i, s i) = ⋃ i, f '' s i :=
by
ext1 x
simp [image, ← exists_and_right, @exists_swap α]
#align set.image_Union Set.image_iUnion
-/- warning: set.image_Union₂ -> Set.image_iUnion₂ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} (f : α -> β) (s : forall (i : ι), (κ i) -> (Set.{u1} α)), Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => Set.iUnion.{u1, u4} α (κ i) (fun (j : κ i) => s i j)))) (Set.iUnion.{u2, u3} β ι (fun (i : ι) => Set.iUnion.{u2, u4} β (κ i) (fun (j : κ i) => Set.image.{u1, u2} α β f (s i j))))
-but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (f : α -> β) (s : forall (i : ι), (κ i) -> (Set.{u4} α)), Eq.{succ u3} (Set.{u3} β) (Set.image.{u4, u3} α β f (Set.iUnion.{u4, u2} α ι (fun (i : ι) => Set.iUnion.{u4, u1} α (κ i) (fun (j : κ i) => s i j)))) (Set.iUnion.{u3, u2} β ι (fun (i : ι) => Set.iUnion.{u3, u1} β (κ i) (fun (j : κ i) => Set.image.{u4, u3} α β f (s i j))))
-Case conversion may be inaccurate. Consider using '#align set.image_Union₂ Set.image_iUnion₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem image_iUnion₂ (f : α → β) (s : ∀ i, κ i → Set α) :
@@ -3088,54 +1810,24 @@ theorem range_eq_iUnion {ι} (f : ι → α) : range f = ⋃ i, {f i} :=
#align set.range_eq_Union Set.range_eq_iUnion
-/
-/- warning: set.image_eq_Union -> Set.image_eq_iUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (s : Set.{u1} α), Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β f s) (Set.iUnion.{u2, succ u1} β α (fun (i : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i s) => Singleton.singleton.{u2, u2} β (Set.{u2} β) (Set.hasSingleton.{u2} β) (f i))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β) (s : Set.{u2} α), Eq.{succ u1} (Set.{u1} β) (Set.image.{u2, u1} α β f s) (Set.iUnion.{u1, succ u2} β α (fun (i : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i s) => Singleton.singleton.{u1, u1} β (Set.{u1} β) (Set.instSingletonSet.{u1} β) (f i))))
-Case conversion may be inaccurate. Consider using '#align set.image_eq_Union Set.image_eq_iUnionₓ'. -/
theorem image_eq_iUnion (f : α → β) (s : Set α) : f '' s = ⋃ i ∈ s, {f i} :=
Set.ext fun b => by simp [@eq_comm β b]
#align set.image_eq_Union Set.image_eq_iUnion
-/- warning: set.bUnion_range -> Set.biUnion_range is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : ι -> α} {g : α -> (Set.{u2} β)}, Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.range.{u1, u3} α ι f)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.range.{u1, u3} α ι f)) => g x))) (Set.iUnion.{u2, u3} β ι (fun (y : ι) => g (f y)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} {ι : Sort.{u1}} {f : ι -> α} {g : α -> (Set.{u3} β)}, Eq.{succ u3} (Set.{u3} β) (Set.iUnion.{u3, succ u2} β α (fun (x : α) => Set.iUnion.{u3, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.range.{u2, u1} α ι f)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.range.{u2, u1} α ι f)) => g x))) (Set.iUnion.{u3, u1} β ι (fun (y : ι) => g (f y)))
-Case conversion may be inaccurate. Consider using '#align set.bUnion_range Set.biUnion_rangeₓ'. -/
theorem biUnion_range {f : ι → α} {g : α → Set β} : (⋃ x ∈ range f, g x) = ⋃ y, g (f y) :=
iSup_range
#align set.bUnion_range Set.biUnion_range
-/- warning: set.Union_Union_eq' -> Set.iUnion_iUnion_eq' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : ι -> α} {g : α -> (Set.{u2} β)}, Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, u3} β ι (fun (y : ι) => Set.iUnion.{u2, 0} β (Eq.{succ u1} α (f y) x) (fun (h : Eq.{succ u1} α (f y) x) => g x)))) (Set.iUnion.{u2, u3} β ι (fun (y : ι) => g (f y)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} {ι : Sort.{u1}} {f : ι -> α} {g : α -> (Set.{u3} β)}, Eq.{succ u3} (Set.{u3} β) (Set.iUnion.{u3, succ u2} β α (fun (x : α) => Set.iUnion.{u3, u1} β ι (fun (y : ι) => Set.iUnion.{u3, 0} β (Eq.{succ u2} α (f y) x) (fun (h : Eq.{succ u2} α (f y) x) => g x)))) (Set.iUnion.{u3, u1} β ι (fun (y : ι) => g (f y)))
-Case conversion may be inaccurate. Consider using '#align set.Union_Union_eq' Set.iUnion_iUnion_eq'ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (x y) -/
@[simp]
theorem iUnion_iUnion_eq' {f : ι → α} {g : α → Set β} :
(⋃ (x) (y) (h : f y = x), g x) = ⋃ y, g (f y) := by simpa using bUnion_range
#align set.Union_Union_eq' Set.iUnion_iUnion_eq'
-/- warning: set.bInter_range -> Set.biInter_range is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : ι -> α} {g : α -> (Set.{u2} β)}, Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.range.{u1, u3} α ι f)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.range.{u1, u3} α ι f)) => g x))) (Set.iInter.{u2, u3} β ι (fun (y : ι) => g (f y)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} {ι : Sort.{u1}} {f : ι -> α} {g : α -> (Set.{u3} β)}, Eq.{succ u3} (Set.{u3} β) (Set.iInter.{u3, succ u2} β α (fun (x : α) => Set.iInter.{u3, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.range.{u2, u1} α ι f)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.range.{u2, u1} α ι f)) => g x))) (Set.iInter.{u3, u1} β ι (fun (y : ι) => g (f y)))
-Case conversion may be inaccurate. Consider using '#align set.bInter_range Set.biInter_rangeₓ'. -/
theorem biInter_range {f : ι → α} {g : α → Set β} : (⋂ x ∈ range f, g x) = ⋂ y, g (f y) :=
iInf_range
#align set.bInter_range Set.biInter_range
-/- warning: set.Inter_Inter_eq' -> Set.iInter_iInter_eq' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : ι -> α} {g : α -> (Set.{u2} β)}, Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, u3} β ι (fun (y : ι) => Set.iInter.{u2, 0} β (Eq.{succ u1} α (f y) x) (fun (h : Eq.{succ u1} α (f y) x) => g x)))) (Set.iInter.{u2, u3} β ι (fun (y : ι) => g (f y)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} {ι : Sort.{u1}} {f : ι -> α} {g : α -> (Set.{u3} β)}, Eq.{succ u3} (Set.{u3} β) (Set.iInter.{u3, succ u2} β α (fun (x : α) => Set.iInter.{u3, u1} β ι (fun (y : ι) => Set.iInter.{u3, 0} β (Eq.{succ u2} α (f y) x) (fun (h : Eq.{succ u2} α (f y) x) => g x)))) (Set.iInter.{u3, u1} β ι (fun (y : ι) => g (f y)))
-Case conversion may be inaccurate. Consider using '#align set.Inter_Inter_eq' Set.iInter_iInter_eq'ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (x y) -/
@[simp]
theorem iInter_iInter_eq' {f : ι → α} {g : α → Set β} :
@@ -3144,22 +1836,10 @@ theorem iInter_iInter_eq' {f : ι → α} {g : α → Set β} :
variable {s : Set γ} {f : γ → α} {g : α → Set β}
-/- warning: set.bUnion_image -> Set.biUnion_image is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {s : Set.{u3} γ} {f : γ -> α} {g : α -> (Set.{u2} β)}, Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.image.{u3, u1} γ α f s)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.image.{u3, u1} γ α f s)) => g x))) (Set.iUnion.{u2, succ u3} β γ (fun (y : γ) => Set.iUnion.{u2, 0} β (Membership.Mem.{u3, u3} γ (Set.{u3} γ) (Set.hasMem.{u3} γ) y s) (fun (H : Membership.Mem.{u3, u3} γ (Set.{u3} γ) (Set.hasMem.{u3} γ) y s) => g (f y))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} {γ : Type.{u1}} {s : Set.{u1} γ} {f : γ -> α} {g : α -> (Set.{u3} β)}, Eq.{succ u3} (Set.{u3} β) (Set.iUnion.{u3, succ u2} β α (fun (x : α) => Set.iUnion.{u3, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.image.{u1, u2} γ α f s)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.image.{u1, u2} γ α f s)) => g x))) (Set.iUnion.{u3, succ u1} β γ (fun (y : γ) => Set.iUnion.{u3, 0} β (Membership.mem.{u1, u1} γ (Set.{u1} γ) (Set.instMembershipSet.{u1} γ) y s) (fun (H : Membership.mem.{u1, u1} γ (Set.{u1} γ) (Set.instMembershipSet.{u1} γ) y s) => g (f y))))
-Case conversion may be inaccurate. Consider using '#align set.bUnion_image Set.biUnion_imageₓ'. -/
theorem biUnion_image : (⋃ x ∈ f '' s, g x) = ⋃ y ∈ s, g (f y) :=
iSup_image
#align set.bUnion_image Set.biUnion_image
-/- warning: set.bInter_image -> Set.biInter_image is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {s : Set.{u3} γ} {f : γ -> α} {g : α -> (Set.{u2} β)}, Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.image.{u3, u1} γ α f s)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.image.{u3, u1} γ α f s)) => g x))) (Set.iInter.{u2, succ u3} β γ (fun (y : γ) => Set.iInter.{u2, 0} β (Membership.Mem.{u3, u3} γ (Set.{u3} γ) (Set.hasMem.{u3} γ) y s) (fun (H : Membership.Mem.{u3, u3} γ (Set.{u3} γ) (Set.hasMem.{u3} γ) y s) => g (f y))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} {γ : Type.{u1}} {s : Set.{u1} γ} {f : γ -> α} {g : α -> (Set.{u3} β)}, Eq.{succ u3} (Set.{u3} β) (Set.iInter.{u3, succ u2} β α (fun (x : α) => Set.iInter.{u3, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.image.{u1, u2} γ α f s)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.image.{u1, u2} γ α f s)) => g x))) (Set.iInter.{u3, succ u1} β γ (fun (y : γ) => Set.iInter.{u3, 0} β (Membership.mem.{u1, u1} γ (Set.{u1} γ) (Set.instMembershipSet.{u1} γ) y s) (fun (H : Membership.mem.{u1, u1} γ (Set.{u1} γ) (Set.instMembershipSet.{u1} γ) y s) => g (f y))))
-Case conversion may be inaccurate. Consider using '#align set.bInter_image Set.biInter_imageₓ'. -/
theorem biInter_image : (⋂ x ∈ f '' s, g x) = ⋂ y ∈ s, g (f y) :=
iInf_image
#align set.bInter_image Set.biInter_image
@@ -3168,32 +1848,14 @@ end Image
section Preimage
-/- warning: set.monotone_preimage -> Set.monotone_preimage is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {f : α -> β}, Monotone.{u2, u1} (Set.{u2} β) (Set.{u1} α) (PartialOrder.toPreorder.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.completeBooleanAlgebra.{u2} β))))))) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α))))))) (Set.preimage.{u1, u2} α β f)
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {f : α -> β}, Monotone.{u2, u1} (Set.{u2} β) (Set.{u1} α) (PartialOrder.toPreorder.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.instCompleteBooleanAlgebraSet.{u2} β))))))) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) (Set.preimage.{u1, u2} α β f)
-Case conversion may be inaccurate. Consider using '#align set.monotone_preimage Set.monotone_preimageₓ'. -/
theorem monotone_preimage {f : α → β} : Monotone (preimage f) := fun a b h => preimage_mono h
#align set.monotone_preimage Set.monotone_preimage
-/- warning: set.preimage_Union -> Set.preimage_iUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : α -> β} {s : ι -> (Set.{u2} β)}, Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α β f (Set.iUnion.{u2, u3} β ι (fun (i : ι) => s i))) (Set.iUnion.{u1, u3} α ι (fun (i : ι) => Set.preimage.{u1, u2} α β f (s i)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} {ι : Sort.{u1}} {f : α -> β} {s : ι -> (Set.{u3} β)}, Eq.{succ u2} (Set.{u2} α) (Set.preimage.{u2, u3} α β f (Set.iUnion.{u3, u1} β ι (fun (i : ι) => s i))) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => Set.preimage.{u2, u3} α β f (s i)))
-Case conversion may be inaccurate. Consider using '#align set.preimage_Union Set.preimage_iUnionₓ'. -/
@[simp]
theorem preimage_iUnion {f : α → β} {s : ι → Set β} : (f ⁻¹' ⋃ i, s i) = ⋃ i, f ⁻¹' s i :=
Set.ext <| by simp [preimage]
#align set.preimage_Union Set.preimage_iUnion
-/- warning: set.preimage_Union₂ -> Set.preimage_iUnion₂ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {f : α -> β} {s : forall (i : ι), (κ i) -> (Set.{u2} β)}, Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α β f (Set.iUnion.{u2, u3} β ι (fun (i : ι) => Set.iUnion.{u2, u4} β (κ i) (fun (j : κ i) => s i j)))) (Set.iUnion.{u1, u3} α ι (fun (i : ι) => Set.iUnion.{u1, u4} α (κ i) (fun (j : κ i) => Set.preimage.{u1, u2} α β f (s i j))))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u4}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {f : α -> β} {s : forall (i : ι), (κ i) -> (Set.{u4} β)}, Eq.{succ u3} (Set.{u3} α) (Set.preimage.{u3, u4} α β f (Set.iUnion.{u4, u2} β ι (fun (i : ι) => Set.iUnion.{u4, u1} β (κ i) (fun (j : κ i) => s i j)))) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => Set.preimage.{u3, u4} α β f (s i j))))
-Case conversion may be inaccurate. Consider using '#align set.preimage_Union₂ Set.preimage_iUnion₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem preimage_iUnion₂ {f : α → β} {s : ∀ i, κ i → Set β} :
@@ -3207,22 +1869,10 @@ theorem preimage_sUnion {f : α → β} {s : Set (Set β)} : f ⁻¹' ⋃₀ s =
#align set.preimage_sUnion Set.preimage_sUnion
-/
-/- warning: set.preimage_Inter -> Set.preimage_iInter is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : α -> β} {s : ι -> (Set.{u2} β)}, Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α β f (Set.iInter.{u2, u3} β ι (fun (i : ι) => s i))) (Set.iInter.{u1, u3} α ι (fun (i : ι) => Set.preimage.{u1, u2} α β f (s i)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} {ι : Sort.{u1}} {f : α -> β} {s : ι -> (Set.{u3} β)}, Eq.{succ u2} (Set.{u2} α) (Set.preimage.{u2, u3} α β f (Set.iInter.{u3, u1} β ι (fun (i : ι) => s i))) (Set.iInter.{u2, u1} α ι (fun (i : ι) => Set.preimage.{u2, u3} α β f (s i)))
-Case conversion may be inaccurate. Consider using '#align set.preimage_Inter Set.preimage_iInterₓ'. -/
theorem preimage_iInter {f : α → β} {s : ι → Set β} : (f ⁻¹' ⋂ i, s i) = ⋂ i, f ⁻¹' s i := by
ext <;> simp
#align set.preimage_Inter Set.preimage_iInter
-/- warning: set.preimage_Inter₂ -> Set.preimage_iInter₂ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {f : α -> β} {s : forall (i : ι), (κ i) -> (Set.{u2} β)}, Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α β f (Set.iInter.{u2, u3} β ι (fun (i : ι) => Set.iInter.{u2, u4} β (κ i) (fun (j : κ i) => s i j)))) (Set.iInter.{u1, u3} α ι (fun (i : ι) => Set.iInter.{u1, u4} α (κ i) (fun (j : κ i) => Set.preimage.{u1, u2} α β f (s i j))))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u4}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {f : α -> β} {s : forall (i : ι), (κ i) -> (Set.{u4} β)}, Eq.{succ u3} (Set.{u3} α) (Set.preimage.{u3, u4} α β f (Set.iInter.{u4, u2} β ι (fun (i : ι) => Set.iInter.{u4, u1} β (κ i) (fun (j : κ i) => s i j)))) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => Set.preimage.{u3, u4} α β f (s i j))))
-Case conversion may be inaccurate. Consider using '#align set.preimage_Inter₂ Set.preimage_iInter₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem preimage_iInter₂ {f : α → β} {s : ∀ i, κ i → Set β} :
@@ -3243,12 +1893,6 @@ theorem biUnion_preimage_singleton (f : α → β) (s : Set β) : (⋃ y ∈ s,
#align set.bUnion_preimage_singleton Set.biUnion_preimage_singleton
-/
-/- warning: set.bUnion_range_preimage_singleton -> Set.biUnion_range_preimage_singleton is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α β (fun (y : β) => Set.iUnion.{u1, 0} α (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) y (Set.range.{u2, succ u1} β α f)) (fun (H : Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) y (Set.range.{u2, succ u1} β α f)) => Set.preimage.{u1, u2} α β f (Singleton.singleton.{u2, u2} β (Set.{u2} β) (Set.hasSingleton.{u2} β) y)))) (Set.univ.{u1} α)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β), Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, succ u1} α β (fun (y : β) => Set.iUnion.{u2, 0} α (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) y (Set.range.{u1, succ u2} β α f)) (fun (H : Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) y (Set.range.{u1, succ u2} β α f)) => Set.preimage.{u2, u1} α β f (Singleton.singleton.{u1, u1} β (Set.{u1} β) (Set.instSingletonSet.{u1} β) y)))) (Set.univ.{u2} α)
-Case conversion may be inaccurate. Consider using '#align set.bUnion_range_preimage_singleton Set.biUnion_range_preimage_singletonₓ'. -/
theorem biUnion_range_preimage_singleton (f : α → β) : (⋃ y ∈ range f, f ⁻¹' {y}) = univ := by
rw [bUnion_preimage_singleton, preimage_range]
#align set.bUnion_range_preimage_singleton Set.biUnion_range_preimage_singleton
@@ -3257,23 +1901,11 @@ end Preimage
section Prod
-/- warning: set.prod_Union -> Set.prod_iUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : Set.{u1} α} {t : ι -> (Set.{u2} β)}, Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β s (Set.iUnion.{u2, u3} β ι (fun (i : ι) => t i))) (Set.iUnion.{max u1 u2, u3} (Prod.{u1, u2} α β) ι (fun (i : ι) => Set.prod.{u1, u2} α β s (t i)))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : Set.{u3} α} {t : ι -> (Set.{u2} β)}, Eq.{max (succ u3) (succ u2)} (Set.{max u2 u3} (Prod.{u3, u2} α β)) (Set.prod.{u3, u2} α β s (Set.iUnion.{u2, u1} β ι (fun (i : ι) => t i))) (Set.iUnion.{max u2 u3, u1} (Prod.{u3, u2} α β) ι (fun (i : ι) => Set.prod.{u3, u2} α β s (t i)))
-Case conversion may be inaccurate. Consider using '#align set.prod_Union Set.prod_iUnionₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem prod_iUnion {s : Set α} {t : ι → Set β} : (s ×ˢ ⋃ i, t i) = ⋃ i, s ×ˢ t i := by ext; simp
#align set.prod_Union Set.prod_iUnion
-/- warning: set.prod_Union₂ -> Set.prod_iUnion₂ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {s : Set.{u1} α} {t : forall (i : ι), (κ i) -> (Set.{u2} β)}, Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β s (Set.iUnion.{u2, u3} β ι (fun (i : ι) => Set.iUnion.{u2, u4} β (κ i) (fun (j : κ i) => t i j)))) (Set.iUnion.{max u1 u2, u3} (Prod.{u1, u2} α β) ι (fun (i : ι) => Set.iUnion.{max u1 u2, u4} (Prod.{u1, u2} α β) (κ i) (fun (j : κ i) => Set.prod.{u1, u2} α β s (t i j))))
-but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : Set.{u4} α} {t : forall (i : ι), (κ i) -> (Set.{u3} β)}, Eq.{max (succ u4) (succ u3)} (Set.{max u3 u4} (Prod.{u4, u3} α β)) (Set.prod.{u4, u3} α β s (Set.iUnion.{u3, u2} β ι (fun (i : ι) => Set.iUnion.{u3, u1} β (κ i) (fun (j : κ i) => t i j)))) (Set.iUnion.{max u3 u4, u2} (Prod.{u4, u3} α β) ι (fun (i : ι) => Set.iUnion.{max u3 u4, u1} (Prod.{u4, u3} α β) (κ i) (fun (j : κ i) => Set.prod.{u4, u3} α β s (t i j))))
-Case conversion may be inaccurate. Consider using '#align set.prod_Union₂ Set.prod_iUnion₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
@@ -3282,36 +1914,18 @@ theorem prod_iUnion₂ {s : Set α} {t : ∀ i, κ i → Set β} :
(s ×ˢ ⋃ (i) (j), t i j) = ⋃ (i) (j), s ×ˢ t i j := by simp_rw [prod_Union]
#align set.prod_Union₂ Set.prod_iUnion₂
-/- warning: set.prod_sUnion -> Set.prod_sUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {C : Set.{u2} (Set.{u2} β)}, Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β s (Set.sUnion.{u2} β C)) (Set.sUnion.{max u1 u2} (Prod.{u1, u2} α β) (Set.image.{u2, max u1 u2} (Set.{u2} β) (Set.{max u1 u2} (Prod.{u1, u2} α β)) (fun (t : Set.{u2} β) => Set.prod.{u1, u2} α β s t) C))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {C : Set.{u1} (Set.{u1} β)}, Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Prod.{u2, u1} α β)) (Set.prod.{u2, u1} α β s (Set.sUnion.{u1} β C)) (Set.sUnion.{max u1 u2} (Prod.{u2, u1} α β) (Set.image.{u1, max u1 u2} (Set.{u1} β) (Set.{max u1 u2} (Prod.{u2, u1} α β)) (fun (t : Set.{u1} β) => Set.prod.{u2, u1} α β s t) C))
-Case conversion may be inaccurate. Consider using '#align set.prod_sUnion Set.prod_sUnionₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem prod_sUnion {s : Set α} {C : Set (Set β)} : s ×ˢ ⋃₀ C = ⋃₀ ((fun t => s ×ˢ t) '' C) := by
simp_rw [sUnion_eq_bUnion, bUnion_image, prod_Union₂]
#align set.prod_sUnion Set.prod_sUnion
-/- warning: set.Union_prod_const -> Set.iUnion_prod_const is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)} {t : Set.{u2} β}, Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i)) t) (Set.iUnion.{max u1 u2, u3} (Prod.{u1, u2} α β) ι (fun (i : ι) => Set.prod.{u1, u2} α β (s i) t))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u3} α)} {t : Set.{u2} β}, Eq.{max (succ u3) (succ u2)} (Set.{max u2 u3} (Prod.{u3, u2} α β)) (Set.prod.{u3, u2} α β (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i)) t) (Set.iUnion.{max u2 u3, u1} (Prod.{u3, u2} α β) ι (fun (i : ι) => Set.prod.{u3, u2} α β (s i) t))
-Case conversion may be inaccurate. Consider using '#align set.Union_prod_const Set.iUnion_prod_constₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem iUnion_prod_const {s : ι → Set α} {t : Set β} : (⋃ i, s i) ×ˢ t = ⋃ i, s i ×ˢ t := by ext;
simp
#align set.Union_prod_const Set.iUnion_prod_const
-/- warning: set.Union₂_prod_const -> Set.iUnion₂_prod_const is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : Set.{u2} β}, Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β (Set.iUnion.{u1, u3} α ι (fun (i : ι) => Set.iUnion.{u1, u4} α (κ i) (fun (j : κ i) => s i j))) t) (Set.iUnion.{max u1 u2, u3} (Prod.{u1, u2} α β) ι (fun (i : ι) => Set.iUnion.{max u1 u2, u4} (Prod.{u1, u2} α β) (κ i) (fun (j : κ i) => Set.prod.{u1, u2} α β (s i j) t)))
-but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u4} α)} {t : Set.{u3} β}, Eq.{max (succ u4) (succ u3)} (Set.{max u3 u4} (Prod.{u4, u3} α β)) (Set.prod.{u4, u3} α β (Set.iUnion.{u4, u2} α ι (fun (i : ι) => Set.iUnion.{u4, u1} α (κ i) (fun (j : κ i) => s i j))) t) (Set.iUnion.{max u3 u4, u2} (Prod.{u4, u3} α β) ι (fun (i : ι) => Set.iUnion.{max u3 u4, u1} (Prod.{u4, u3} α β) (κ i) (fun (j : κ i) => Set.prod.{u4, u3} α β (s i j) t)))
-Case conversion may be inaccurate. Consider using '#align set.Union₂_prod_const Set.iUnion₂_prod_constₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
@@ -3320,12 +1934,6 @@ theorem iUnion₂_prod_const {s : ∀ i, κ i → Set α} {t : Set β} :
(⋃ (i) (j), s i j) ×ˢ t = ⋃ (i) (j), s i j ×ˢ t := by simp_rw [Union_prod_const]
#align set.Union₂_prod_const Set.iUnion₂_prod_const
-/- warning: set.sUnion_prod_const -> Set.sUnion_prod_const is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {C : Set.{u1} (Set.{u1} α)} {t : Set.{u2} β}, Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β (Set.sUnion.{u1} α C) t) (Set.sUnion.{max u1 u2} (Prod.{u1, u2} α β) (Set.image.{u1, max u1 u2} (Set.{u1} α) (Set.{max u1 u2} (Prod.{u1, u2} α β)) (fun (s : Set.{u1} α) => Set.prod.{u1, u2} α β s t) C))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {C : Set.{u2} (Set.{u2} α)} {t : Set.{u1} β}, Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Prod.{u2, u1} α β)) (Set.prod.{u2, u1} α β (Set.sUnion.{u2} α C) t) (Set.sUnion.{max u1 u2} (Prod.{u2, u1} α β) (Set.image.{u2, max u1 u2} (Set.{u2} α) (Set.{max u1 u2} (Prod.{u2, u1} α β)) (fun (s : Set.{u2} α) => Set.prod.{u2, u1} α β s t) C))
-Case conversion may be inaccurate. Consider using '#align set.sUnion_prod_const Set.sUnion_prod_constₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem sUnion_prod_const {C : Set (Set α)} {t : Set β} :
@@ -3333,24 +1941,12 @@ theorem sUnion_prod_const {C : Set (Set α)} {t : Set β} :
simp only [sUnion_eq_bUnion, Union₂_prod_const, bUnion_image]
#align set.sUnion_prod_const Set.sUnion_prod_const
-/- warning: set.Union_prod -> Set.iUnion_prod is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {ι' : Type.{u2}} {α : Type.{u3}} {β : Type.{u4}} (s : ι -> (Set.{u3} α)) (t : ι' -> (Set.{u4} β)), Eq.{succ (max u3 u4)} (Set.{max u3 u4} (Prod.{u3, u4} α β)) (Set.iUnion.{max u3 u4, max (succ u1) (succ u2)} (Prod.{u3, u4} α β) (Prod.{u1, u2} ι ι') (fun (x : Prod.{u1, u2} ι ι') => Set.prod.{u3, u4} α β (s (Prod.fst.{u1, u2} ι ι' x)) (t (Prod.snd.{u1, u2} ι ι' x)))) (Set.prod.{u3, u4} α β (Set.iUnion.{u3, succ u1} α ι (fun (i : ι) => s i)) (Set.iUnion.{u4, succ u2} β ι' (fun (i : ι') => t i)))
-but is expected to have type
- forall {ι : Type.{u4}} {ι' : Type.{u3}} {α : Type.{u2}} {β : Type.{u1}} (s : ι -> (Set.{u2} α)) (t : ι' -> (Set.{u1} β)), Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Prod.{u2, u1} α β)) (Set.iUnion.{max u1 u2, max (succ u3) (succ u4)} (Prod.{u2, u1} α β) (Prod.{u4, u3} ι ι') (fun (x : Prod.{u4, u3} ι ι') => Set.prod.{u2, u1} α β (s (Prod.fst.{u4, u3} ι ι' x)) (t (Prod.snd.{u4, u3} ι ι' x)))) (Set.prod.{u2, u1} α β (Set.iUnion.{u2, succ u4} α ι (fun (i : ι) => s i)) (Set.iUnion.{u1, succ u3} β ι' (fun (i : ι') => t i)))
-Case conversion may be inaccurate. Consider using '#align set.Union_prod Set.iUnion_prodₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem iUnion_prod {ι ι' α β} (s : ι → Set α) (t : ι' → Set β) :
(⋃ x : ι × ι', s x.1 ×ˢ t x.2) = (⋃ i : ι, s i) ×ˢ ⋃ i : ι', t i := by ext; simp
#align set.Union_prod Set.iUnion_prod
-/- warning: set.Union_prod_of_monotone -> Set.iUnion_prod_of_monotone is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : SemilatticeSup.{u1} α] {s : α -> (Set.{u2} β)} {t : α -> (Set.{u3} γ)}, (Monotone.{u1, u2} α (Set.{u2} β) (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.completeBooleanAlgebra.{u2} β))))))) s) -> (Monotone.{u1, u3} α (Set.{u3} γ) (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} (Set.{u3} γ) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} γ) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} γ) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} γ) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} γ) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} γ) (Set.completeBooleanAlgebra.{u3} γ))))))) t) -> (Eq.{succ (max u2 u3)} (Set.{max u2 u3} (Prod.{u2, u3} β γ)) (Set.iUnion.{max u2 u3, succ u1} (Prod.{u2, u3} β γ) α (fun (x : α) => Set.prod.{u2, u3} β γ (s x) (t x))) (Set.prod.{u2, u3} β γ (Set.iUnion.{u2, succ u1} β α (fun (x : α) => s x)) (Set.iUnion.{u3, succ u1} γ α (fun (x : α) => t x))))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : SemilatticeSup.{u3} α] {s : α -> (Set.{u2} β)} {t : α -> (Set.{u1} γ)}, (Monotone.{u3, u2} α (Set.{u2} β) (PartialOrder.toPreorder.{u3} α (SemilatticeSup.toPartialOrder.{u3} α _inst_1)) (PartialOrder.toPreorder.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.instCompleteBooleanAlgebraSet.{u2} β))))))) s) -> (Monotone.{u3, u1} α (Set.{u1} γ) (PartialOrder.toPreorder.{u3} α (SemilatticeSup.toPartialOrder.{u3} α _inst_1)) (PartialOrder.toPreorder.{u1} (Set.{u1} γ) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} γ) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} γ) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} γ) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} γ) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} γ) (Set.instCompleteBooleanAlgebraSet.{u1} γ))))))) t) -> (Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Prod.{u2, u1} β γ)) (Set.iUnion.{max u1 u2, succ u3} (Prod.{u2, u1} β γ) α (fun (x : α) => Set.prod.{u2, u1} β γ (s x) (t x))) (Set.prod.{u2, u1} β γ (Set.iUnion.{u2, succ u3} β α (fun (x : α) => s x)) (Set.iUnion.{u1, succ u3} γ α (fun (x : α) => t x))))
-Case conversion may be inaccurate. Consider using '#align set.Union_prod_of_monotone Set.iUnion_prod_of_monotoneₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem iUnion_prod_of_monotone [SemilatticeSup α] {s : α → Set β} {t : α → Set γ} (hs : Monotone s)
@@ -3361,12 +1957,6 @@ theorem iUnion_prod_of_monotone [SemilatticeSup α] {s : α → Set β} {t : α
· intro x hz x' hw; exact ⟨x ⊔ x', hs le_sup_left hz, ht le_sup_right hw⟩
#align set.Union_prod_of_monotone Set.iUnion_prod_of_monotone
-/- warning: set.sInter_prod_sInter_subset -> Set.sInter_prod_sInter_subset is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (S : Set.{u1} (Set.{u1} α)) (T : Set.{u2} (Set.{u2} β)), HasSubset.Subset.{max u1 u2} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.hasSubset.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β (Set.sInter.{u1} α S) (Set.sInter.{u2} β T)) (Set.iInter.{max u1 u2, succ (max u1 u2)} (Prod.{u1, u2} α β) (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β)) (fun (r : Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β)) => Set.iInter.{max u1 u2, 0} (Prod.{u1, u2} α β) (Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β)) (Set.{max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β))) (Set.hasMem.{max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β))) r (Set.prod.{u1, u2} (Set.{u1} α) (Set.{u2} β) S T)) (fun (H : Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β)) (Set.{max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β))) (Set.hasMem.{max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β))) r (Set.prod.{u1, u2} (Set.{u1} α) (Set.{u2} β) S T)) => Set.prod.{u1, u2} α β (Prod.fst.{u1, u2} (Set.{u1} α) (Set.{u2} β) r) (Prod.snd.{u1, u2} (Set.{u1} α) (Set.{u2} β) r))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (S : Set.{u2} (Set.{u2} α)) (T : Set.{u1} (Set.{u1} β)), HasSubset.Subset.{max u1 u2} (Set.{max u1 u2} (Prod.{u2, u1} α β)) (Set.instHasSubsetSet.{max u2 u1} (Prod.{u2, u1} α β)) (Set.prod.{u2, u1} α β (Set.sInter.{u2} α S) (Set.sInter.{u1} β T)) (Set.iInter.{max u2 u1, succ (max u2 u1)} (Prod.{u2, u1} α β) (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β)) (fun (r : Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β)) => Set.iInter.{max u2 u1, 0} (Prod.{u2, u1} α β) (Membership.mem.{max u2 u1, max u1 u2} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β)) (Set.{max u1 u2} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β))) (Set.instMembershipSet.{max u2 u1} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β))) r (Set.prod.{u2, u1} (Set.{u2} α) (Set.{u1} β) S T)) (fun (H : Membership.mem.{max u2 u1, max u1 u2} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β)) (Set.{max u1 u2} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β))) (Set.instMembershipSet.{max u2 u1} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β))) r (Set.prod.{u2, u1} (Set.{u2} α) (Set.{u1} β) S T)) => Set.prod.{u2, u1} α β (Prod.fst.{u2, u1} (Set.{u2} α) (Set.{u1} β) r) (Prod.snd.{u2, u1} (Set.{u2} α) (Set.{u1} β) r))))
-Case conversion may be inaccurate. Consider using '#align set.sInter_prod_sInter_subset Set.sInter_prod_sInter_subsetₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
@@ -3375,12 +1965,6 @@ theorem sInter_prod_sInter_subset (S : Set (Set α)) (T : Set (Set β)) :
subset_iInter₂ fun x hx y hy => ⟨hy.1 x.1 hx.1, hy.2 x.2 hx.2⟩
#align set.sInter_prod_sInter_subset Set.sInter_prod_sInter_subset
-/- warning: set.sInter_prod_sInter -> Set.sInter_prod_sInter is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {S : Set.{u1} (Set.{u1} α)} {T : Set.{u2} (Set.{u2} β)}, (Set.Nonempty.{u1} (Set.{u1} α) S) -> (Set.Nonempty.{u2} (Set.{u2} β) T) -> (Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β (Set.sInter.{u1} α S) (Set.sInter.{u2} β T)) (Set.iInter.{max u1 u2, succ (max u1 u2)} (Prod.{u1, u2} α β) (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β)) (fun (r : Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β)) => Set.iInter.{max u1 u2, 0} (Prod.{u1, u2} α β) (Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β)) (Set.{max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β))) (Set.hasMem.{max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β))) r (Set.prod.{u1, u2} (Set.{u1} α) (Set.{u2} β) S T)) (fun (H : Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β)) (Set.{max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β))) (Set.hasMem.{max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β))) r (Set.prod.{u1, u2} (Set.{u1} α) (Set.{u2} β) S T)) => Set.prod.{u1, u2} α β (Prod.fst.{u1, u2} (Set.{u1} α) (Set.{u2} β) r) (Prod.snd.{u1, u2} (Set.{u1} α) (Set.{u2} β) r)))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {S : Set.{u2} (Set.{u2} α)} {T : Set.{u1} (Set.{u1} β)}, (Set.Nonempty.{u2} (Set.{u2} α) S) -> (Set.Nonempty.{u1} (Set.{u1} β) T) -> (Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Prod.{u2, u1} α β)) (Set.prod.{u2, u1} α β (Set.sInter.{u2} α S) (Set.sInter.{u1} β T)) (Set.iInter.{max u1 u2, succ (max u2 u1)} (Prod.{u2, u1} α β) (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β)) (fun (r : Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β)) => Set.iInter.{max u1 u2, 0} (Prod.{u2, u1} α β) (Membership.mem.{max u2 u1, max u1 u2} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β)) (Set.{max u1 u2} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β))) (Set.instMembershipSet.{max u2 u1} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β))) r (Set.prod.{u2, u1} (Set.{u2} α) (Set.{u1} β) S T)) (fun (H : Membership.mem.{max u2 u1, max u1 u2} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β)) (Set.{max u1 u2} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β))) (Set.instMembershipSet.{max u2 u1} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β))) r (Set.prod.{u2, u1} (Set.{u2} α) (Set.{u1} β) S T)) => Set.prod.{u2, u1} α β (Prod.fst.{u2, u1} (Set.{u2} α) (Set.{u1} β) r) (Prod.snd.{u2, u1} (Set.{u2} α) (Set.{u1} β) r)))))
-Case conversion may be inaccurate. Consider using '#align set.sInter_prod_sInter Set.sInter_prod_sInterₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
@@ -3394,12 +1978,6 @@ theorem sInter_prod_sInter {S : Set (Set α)} {T : Set (Set β)} (hS : S.Nonempt
exact ⟨fun s₀ h₀ => (hx (s₀, s₂) ⟨h₀, h₂⟩).1, fun s₀ h₀ => (hx (s₁, s₀) ⟨h₁, h₀⟩).2⟩
#align set.sInter_prod_sInter Set.sInter_prod_sInter
-/- warning: set.sInter_prod -> Set.sInter_prod is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {S : Set.{u1} (Set.{u1} α)}, (Set.Nonempty.{u1} (Set.{u1} α) S) -> (forall (t : Set.{u2} β), Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β (Set.sInter.{u1} α S) t) (Set.iInter.{max u1 u2, succ u1} (Prod.{u1, u2} α β) (Set.{u1} α) (fun (s : Set.{u1} α) => Set.iInter.{max u1 u2, 0} (Prod.{u1, u2} α β) (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s S) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s S) => Set.prod.{u1, u2} α β s t))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {S : Set.{u2} (Set.{u2} α)}, (Set.Nonempty.{u2} (Set.{u2} α) S) -> (forall (t : Set.{u1} β), Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Prod.{u2, u1} α β)) (Set.prod.{u2, u1} α β (Set.sInter.{u2} α S) t) (Set.iInter.{max u1 u2, succ u2} (Prod.{u2, u1} α β) (Set.{u2} α) (fun (s : Set.{u2} α) => Set.iInter.{max u1 u2, 0} (Prod.{u2, u1} α β) (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) s S) (fun (H : Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) s S) => Set.prod.{u2, u1} α β s t))))
-Case conversion may be inaccurate. Consider using '#align set.sInter_prod Set.sInter_prodₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem sInter_prod {S : Set (Set α)} (hS : S.Nonempty) (t : Set β) : ⋂₀ S ×ˢ t = ⋂ s ∈ S, s ×ˢ t :=
@@ -3424,12 +2002,6 @@ section Image2
variable (f : α → β → γ) {s : Set α} {t : Set β}
-/- warning: set.Union_image_left -> Set.iUnion_image_left is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} (f : α -> β -> γ) {s : Set.{u1} α} {t : Set.{u2} β}, Eq.{succ u3} (Set.{u3} γ) (Set.iUnion.{u3, succ u1} γ α (fun (a : α) => Set.iUnion.{u3, 0} γ (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) => Set.image.{u2, u3} β γ (f a) t))) (Set.image2.{u1, u2, u3} α β γ f s t)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {γ : Type.{u3}} (f : α -> β -> γ) {s : Set.{u2} α} {t : Set.{u1} β}, Eq.{succ u3} (Set.{u3} γ) (Set.iUnion.{u3, succ u2} γ α (fun (a : α) => Set.iUnion.{u3, 0} γ (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) => Set.image.{u1, u3} β γ (f a) t))) (Set.image2.{u2, u1, u3} α β γ f s t)
-Case conversion may be inaccurate. Consider using '#align set.Union_image_left Set.iUnion_image_leftₓ'. -/
theorem iUnion_image_left : (⋃ a ∈ s, f a '' t) = image2 f s t := by ext y;
constructor <;> simp only [mem_Union] <;> rintro ⟨a, ha, x, hx, ax⟩ <;> exact ⟨a, x, ha, hx, ax⟩
#align set.Union_image_left Set.iUnion_image_left
@@ -3442,80 +2014,38 @@ theorem iUnion_image_right : (⋃ b ∈ t, (fun a => f a b) '' s) = image2 f s t
#align set.Union_image_right Set.iUnion_image_right
-/
-/- warning: set.image2_Union_left -> Set.image2_iUnion_left is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {ι : Sort.{u4}} (f : α -> β -> γ) (s : ι -> (Set.{u1} α)) (t : Set.{u2} β), Eq.{succ u3} (Set.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f (Set.iUnion.{u1, u4} α ι (fun (i : ι) => s i)) t) (Set.iUnion.{u3, u4} γ ι (fun (i : ι) => Set.image2.{u1, u2, u3} α β γ f (s i) t))
-but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {γ : Type.{u2}} {ι : Sort.{u1}} (f : α -> β -> γ) (s : ι -> (Set.{u4} α)) (t : Set.{u3} β), Eq.{succ u2} (Set.{u2} γ) (Set.image2.{u4, u3, u2} α β γ f (Set.iUnion.{u4, u1} α ι (fun (i : ι) => s i)) t) (Set.iUnion.{u2, u1} γ ι (fun (i : ι) => Set.image2.{u4, u3, u2} α β γ f (s i) t))
-Case conversion may be inaccurate. Consider using '#align set.image2_Union_left Set.image2_iUnion_leftₓ'. -/
theorem image2_iUnion_left (s : ι → Set α) (t : Set β) :
image2 f (⋃ i, s i) t = ⋃ i, image2 f (s i) t := by
simp only [← image_prod, Union_prod_const, image_Union]
#align set.image2_Union_left Set.image2_iUnion_left
-/- warning: set.image2_Union_right -> Set.image2_iUnion_right is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {ι : Sort.{u4}} (f : α -> β -> γ) (s : Set.{u1} α) (t : ι -> (Set.{u2} β)), Eq.{succ u3} (Set.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f s (Set.iUnion.{u2, u4} β ι (fun (i : ι) => t i))) (Set.iUnion.{u3, u4} γ ι (fun (i : ι) => Set.image2.{u1, u2, u3} α β γ f s (t i)))
-but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {γ : Type.{u2}} {ι : Sort.{u1}} (f : α -> β -> γ) (s : Set.{u4} α) (t : ι -> (Set.{u3} β)), Eq.{succ u2} (Set.{u2} γ) (Set.image2.{u4, u3, u2} α β γ f s (Set.iUnion.{u3, u1} β ι (fun (i : ι) => t i))) (Set.iUnion.{u2, u1} γ ι (fun (i : ι) => Set.image2.{u4, u3, u2} α β γ f s (t i)))
-Case conversion may be inaccurate. Consider using '#align set.image2_Union_right Set.image2_iUnion_rightₓ'. -/
theorem image2_iUnion_right (s : Set α) (t : ι → Set β) :
image2 f s (⋃ i, t i) = ⋃ i, image2 f s (t i) := by
simp only [← image_prod, prod_Union, image_Union]
#align set.image2_Union_right Set.image2_iUnion_right
-/- warning: set.image2_Union₂_left -> Set.image2_iUnion₂_left is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {ι : Sort.{u4}} {κ : ι -> Sort.{u5}} (f : α -> β -> γ) (s : forall (i : ι), (κ i) -> (Set.{u1} α)) (t : Set.{u2} β), Eq.{succ u3} (Set.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f (Set.iUnion.{u1, u4} α ι (fun (i : ι) => Set.iUnion.{u1, u5} α (κ i) (fun (j : κ i) => s i j))) t) (Set.iUnion.{u3, u4} γ ι (fun (i : ι) => Set.iUnion.{u3, u5} γ (κ i) (fun (j : κ i) => Set.image2.{u1, u2, u3} α β γ f (s i j) t)))
-but is expected to have type
- forall {α : Type.{u5}} {β : Type.{u4}} {γ : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (f : α -> β -> γ) (s : forall (i : ι), (κ i) -> (Set.{u5} α)) (t : Set.{u4} β), Eq.{succ u3} (Set.{u3} γ) (Set.image2.{u5, u4, u3} α β γ f (Set.iUnion.{u5, u2} α ι (fun (i : ι) => Set.iUnion.{u5, u1} α (κ i) (fun (j : κ i) => s i j))) t) (Set.iUnion.{u3, u2} γ ι (fun (i : ι) => Set.iUnion.{u3, u1} γ (κ i) (fun (j : κ i) => Set.image2.{u5, u4, u3} α β γ f (s i j) t)))
-Case conversion may be inaccurate. Consider using '#align set.image2_Union₂_left Set.image2_iUnion₂_leftₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem image2_iUnion₂_left (s : ∀ i, κ i → Set α) (t : Set β) :
image2 f (⋃ (i) (j), s i j) t = ⋃ (i) (j), image2 f (s i j) t := by simp_rw [image2_Union_left]
#align set.image2_Union₂_left Set.image2_iUnion₂_left
-/- warning: set.image2_Union₂_right -> Set.image2_iUnion₂_right is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {ι : Sort.{u4}} {κ : ι -> Sort.{u5}} (f : α -> β -> γ) (s : Set.{u1} α) (t : forall (i : ι), (κ i) -> (Set.{u2} β)), Eq.{succ u3} (Set.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f s (Set.iUnion.{u2, u4} β ι (fun (i : ι) => Set.iUnion.{u2, u5} β (κ i) (fun (j : κ i) => t i j)))) (Set.iUnion.{u3, u4} γ ι (fun (i : ι) => Set.iUnion.{u3, u5} γ (κ i) (fun (j : κ i) => Set.image2.{u1, u2, u3} α β γ f s (t i j))))
-but is expected to have type
- forall {α : Type.{u5}} {β : Type.{u4}} {γ : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (f : α -> β -> γ) (s : Set.{u5} α) (t : forall (i : ι), (κ i) -> (Set.{u4} β)), Eq.{succ u3} (Set.{u3} γ) (Set.image2.{u5, u4, u3} α β γ f s (Set.iUnion.{u4, u2} β ι (fun (i : ι) => Set.iUnion.{u4, u1} β (κ i) (fun (j : κ i) => t i j)))) (Set.iUnion.{u3, u2} γ ι (fun (i : ι) => Set.iUnion.{u3, u1} γ (κ i) (fun (j : κ i) => Set.image2.{u5, u4, u3} α β γ f s (t i j))))
-Case conversion may be inaccurate. Consider using '#align set.image2_Union₂_right Set.image2_iUnion₂_rightₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem image2_iUnion₂_right (s : Set α) (t : ∀ i, κ i → Set β) :
image2 f s (⋃ (i) (j), t i j) = ⋃ (i) (j), image2 f s (t i j) := by simp_rw [image2_Union_right]
#align set.image2_Union₂_right Set.image2_iUnion₂_right
-/- warning: set.image2_Inter_subset_left -> Set.image2_iInter_subset_left is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {ι : Sort.{u4}} (f : α -> β -> γ) (s : ι -> (Set.{u1} α)) (t : Set.{u2} β), HasSubset.Subset.{u3} (Set.{u3} γ) (Set.hasSubset.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f (Set.iInter.{u1, u4} α ι (fun (i : ι) => s i)) t) (Set.iInter.{u3, u4} γ ι (fun (i : ι) => Set.image2.{u1, u2, u3} α β γ f (s i) t))
-but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {γ : Type.{u2}} {ι : Sort.{u1}} (f : α -> β -> γ) (s : ι -> (Set.{u4} α)) (t : Set.{u3} β), HasSubset.Subset.{u2} (Set.{u2} γ) (Set.instHasSubsetSet.{u2} γ) (Set.image2.{u4, u3, u2} α β γ f (Set.iInter.{u4, u1} α ι (fun (i : ι) => s i)) t) (Set.iInter.{u2, u1} γ ι (fun (i : ι) => Set.image2.{u4, u3, u2} α β γ f (s i) t))
-Case conversion may be inaccurate. Consider using '#align set.image2_Inter_subset_left Set.image2_iInter_subset_leftₓ'. -/
theorem image2_iInter_subset_left (s : ι → Set α) (t : Set β) :
image2 f (⋂ i, s i) t ⊆ ⋂ i, image2 f (s i) t := by simp_rw [image2_subset_iff, mem_Inter];
exact fun x hx y hy i => mem_image2_of_mem (hx _) hy
#align set.image2_Inter_subset_left Set.image2_iInter_subset_left
-/- warning: set.image2_Inter_subset_right -> Set.image2_iInter_subset_right is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {ι : Sort.{u4}} (f : α -> β -> γ) (s : Set.{u1} α) (t : ι -> (Set.{u2} β)), HasSubset.Subset.{u3} (Set.{u3} γ) (Set.hasSubset.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f s (Set.iInter.{u2, u4} β ι (fun (i : ι) => t i))) (Set.iInter.{u3, u4} γ ι (fun (i : ι) => Set.image2.{u1, u2, u3} α β γ f s (t i)))
-but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {γ : Type.{u2}} {ι : Sort.{u1}} (f : α -> β -> γ) (s : Set.{u4} α) (t : ι -> (Set.{u3} β)), HasSubset.Subset.{u2} (Set.{u2} γ) (Set.instHasSubsetSet.{u2} γ) (Set.image2.{u4, u3, u2} α β γ f s (Set.iInter.{u3, u1} β ι (fun (i : ι) => t i))) (Set.iInter.{u2, u1} γ ι (fun (i : ι) => Set.image2.{u4, u3, u2} α β γ f s (t i)))
-Case conversion may be inaccurate. Consider using '#align set.image2_Inter_subset_right Set.image2_iInter_subset_rightₓ'. -/
theorem image2_iInter_subset_right (s : Set α) (t : ι → Set β) :
image2 f s (⋂ i, t i) ⊆ ⋂ i, image2 f s (t i) := by simp_rw [image2_subset_iff, mem_Inter];
exact fun x hx y hy i => mem_image2_of_mem hx (hy _)
#align set.image2_Inter_subset_right Set.image2_iInter_subset_right
-/- warning: set.image2_Inter₂_subset_left -> Set.image2_iInter₂_subset_left is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {ι : Sort.{u4}} {κ : ι -> Sort.{u5}} (f : α -> β -> γ) (s : forall (i : ι), (κ i) -> (Set.{u1} α)) (t : Set.{u2} β), HasSubset.Subset.{u3} (Set.{u3} γ) (Set.hasSubset.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f (Set.iInter.{u1, u4} α ι (fun (i : ι) => Set.iInter.{u1, u5} α (κ i) (fun (j : κ i) => s i j))) t) (Set.iInter.{u3, u4} γ ι (fun (i : ι) => Set.iInter.{u3, u5} γ (κ i) (fun (j : κ i) => Set.image2.{u1, u2, u3} α β γ f (s i j) t)))
-but is expected to have type
- forall {α : Type.{u5}} {β : Type.{u4}} {γ : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (f : α -> β -> γ) (s : forall (i : ι), (κ i) -> (Set.{u5} α)) (t : Set.{u4} β), HasSubset.Subset.{u3} (Set.{u3} γ) (Set.instHasSubsetSet.{u3} γ) (Set.image2.{u5, u4, u3} α β γ f (Set.iInter.{u5, u2} α ι (fun (i : ι) => Set.iInter.{u5, u1} α (κ i) (fun (j : κ i) => s i j))) t) (Set.iInter.{u3, u2} γ ι (fun (i : ι) => Set.iInter.{u3, u1} γ (κ i) (fun (j : κ i) => Set.image2.{u5, u4, u3} α β γ f (s i j) t)))
-Case conversion may be inaccurate. Consider using '#align set.image2_Inter₂_subset_left Set.image2_iInter₂_subset_leftₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem image2_iInter₂_subset_left (s : ∀ i, κ i → Set α) (t : Set β) :
@@ -3523,12 +2053,6 @@ theorem image2_iInter₂_subset_left (s : ∀ i, κ i → Set α) (t : Set β) :
simp_rw [image2_subset_iff, mem_Inter]; exact fun x hx y hy i j => mem_image2_of_mem (hx _ _) hy
#align set.image2_Inter₂_subset_left Set.image2_iInter₂_subset_left
-/- warning: set.image2_Inter₂_subset_right -> Set.image2_iInter₂_subset_right is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {ι : Sort.{u4}} {κ : ι -> Sort.{u5}} (f : α -> β -> γ) (s : Set.{u1} α) (t : forall (i : ι), (κ i) -> (Set.{u2} β)), HasSubset.Subset.{u3} (Set.{u3} γ) (Set.hasSubset.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f s (Set.iInter.{u2, u4} β ι (fun (i : ι) => Set.iInter.{u2, u5} β (κ i) (fun (j : κ i) => t i j)))) (Set.iInter.{u3, u4} γ ι (fun (i : ι) => Set.iInter.{u3, u5} γ (κ i) (fun (j : κ i) => Set.image2.{u1, u2, u3} α β γ f s (t i j))))
-but is expected to have type
- forall {α : Type.{u5}} {β : Type.{u4}} {γ : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (f : α -> β -> γ) (s : Set.{u5} α) (t : forall (i : ι), (κ i) -> (Set.{u4} β)), HasSubset.Subset.{u3} (Set.{u3} γ) (Set.instHasSubsetSet.{u3} γ) (Set.image2.{u5, u4, u3} α β γ f s (Set.iInter.{u4, u2} β ι (fun (i : ι) => Set.iInter.{u4, u1} β (κ i) (fun (j : κ i) => t i j)))) (Set.iInter.{u3, u2} γ ι (fun (i : ι) => Set.iInter.{u3, u1} γ (κ i) (fun (j : κ i) => Set.image2.{u5, u4, u3} α β γ f s (t i j))))
-Case conversion may be inaccurate. Consider using '#align set.image2_Inter₂_subset_right Set.image2_iInter₂_subset_rightₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem image2_iInter₂_subset_right (s : Set α) (t : ∀ i, κ i → Set β) :
@@ -3536,34 +2060,16 @@ theorem image2_iInter₂_subset_right (s : Set α) (t : ∀ i, κ i → Set β)
simp_rw [image2_subset_iff, mem_Inter]; exact fun x hx y hy i j => mem_image2_of_mem hx (hy _ _)
#align set.image2_Inter₂_subset_right Set.image2_iInter₂_subset_right
-/- warning: set.image2_eq_Union -> Set.image2_eq_iUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} (f : α -> β -> γ) (s : Set.{u1} α) (t : Set.{u2} β), Eq.{succ u3} (Set.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f s t) (Set.iUnion.{u3, succ u1} γ α (fun (i : α) => Set.iUnion.{u3, 0} γ (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i s) => Set.iUnion.{u3, succ u2} γ β (fun (j : β) => Set.iUnion.{u3, 0} γ (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) j t) (fun (H : Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) j t) => Singleton.singleton.{u3, u3} γ (Set.{u3} γ) (Set.hasSingleton.{u3} γ) (f i j))))))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} (f : α -> β -> γ) (s : Set.{u3} α) (t : Set.{u2} β), Eq.{succ u1} (Set.{u1} γ) (Set.image2.{u3, u2, u1} α β γ f s t) (Set.iUnion.{u1, succ u3} γ α (fun (i : α) => Set.iUnion.{u1, 0} γ (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) i s) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) i s) => Set.iUnion.{u1, succ u2} γ β (fun (j : β) => Set.iUnion.{u1, 0} γ (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) j t) (fun (H : Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) j t) => Singleton.singleton.{u1, u1} γ (Set.{u1} γ) (Set.instSingletonSet.{u1} γ) (f i j))))))
-Case conversion may be inaccurate. Consider using '#align set.image2_eq_Union Set.image2_eq_iUnionₓ'. -/
/-- The `set.image2` version of `set.image_eq_Union` -/
theorem image2_eq_iUnion (s : Set α) (t : Set β) : image2 f s t = ⋃ (i ∈ s) (j ∈ t), {f i j} := by
simp_rw [← image_eq_Union, Union_image_left]
#align set.image2_eq_Union Set.image2_eq_iUnion
-/- warning: set.prod_eq_bUnion_left -> Set.prod_eq_biUnion_left is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {t : Set.{u2} β}, Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β s t) (Set.iUnion.{max u1 u2, succ u1} (Prod.{u1, u2} α β) α (fun (a : α) => Set.iUnion.{max u1 u2, 0} (Prod.{u1, u2} α β) (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) => Set.image.{u2, max u1 u2} β (Prod.{u1, u2} α β) (fun (b : β) => Prod.mk.{u1, u2} α β a b) t)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {t : Set.{u1} β}, Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Prod.{u2, u1} α β)) (Set.prod.{u2, u1} α β s t) (Set.iUnion.{max u1 u2, succ u2} (Prod.{u2, u1} α β) α (fun (a : α) => Set.iUnion.{max u1 u2, 0} (Prod.{u2, u1} α β) (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) => Set.image.{u1, max u1 u2} β (Prod.{u2, u1} α β) (fun (b : β) => Prod.mk.{u2, u1} α β a b) t)))
-Case conversion may be inaccurate. Consider using '#align set.prod_eq_bUnion_left Set.prod_eq_biUnion_leftₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem prod_eq_biUnion_left : s ×ˢ t = ⋃ a ∈ s, (fun b => (a, b)) '' t := by
rw [Union_image_left, image2_mk_eq_prod]
#align set.prod_eq_bUnion_left Set.prod_eq_biUnion_left
-/- warning: set.prod_eq_bUnion_right -> Set.prod_eq_biUnion_right is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {t : Set.{u2} β}, Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β s t) (Set.iUnion.{max u1 u2, succ u2} (Prod.{u1, u2} α β) β (fun (b : β) => Set.iUnion.{max u1 u2, 0} (Prod.{u1, u2} α β) (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) b t) (fun (H : Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) b t) => Set.image.{u1, max u1 u2} α (Prod.{u1, u2} α β) (fun (a : α) => Prod.mk.{u1, u2} α β a b) s)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {t : Set.{u1} β}, Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Prod.{u2, u1} α β)) (Set.prod.{u2, u1} α β s t) (Set.iUnion.{max u1 u2, succ u1} (Prod.{u2, u1} α β) β (fun (b : β) => Set.iUnion.{max u1 u2, 0} (Prod.{u2, u1} α β) (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) b t) (fun (H : Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) b t) => Set.image.{u2, max u1 u2} α (Prod.{u2, u1} α β) (fun (a : α) => Prod.mk.{u2, u1} α β a b) s)))
-Case conversion may be inaccurate. Consider using '#align set.prod_eq_bUnion_right Set.prod_eq_biUnion_rightₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem prod_eq_biUnion_right : s ×ˢ t = ⋃ b ∈ t, (fun a => (a, b)) '' s := by
rw [Union_image_right, image2_mk_eq_prod]
@@ -3581,76 +2087,34 @@ def seq (s : Set (α → β)) (t : Set α) : Set β :=
#align set.seq Set.seq
-/
-/- warning: set.seq_def -> Set.seq_def is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{max u1 u2} (α -> β)} {t : Set.{u1} α}, Eq.{succ u2} (Set.{u2} β) (Set.seq.{u1, u2} α β s t) (Set.iUnion.{u2, succ (max u1 u2)} β (α -> β) (fun (f : α -> β) => Set.iUnion.{u2, 0} β (Membership.Mem.{max u1 u2, max u1 u2} (α -> β) (Set.{max u1 u2} (α -> β)) (Set.hasMem.{max u1 u2} (α -> β)) f s) (fun (H : Membership.Mem.{max u1 u2, max u1 u2} (α -> β) (Set.{max u1 u2} (α -> β)) (Set.hasMem.{max u1 u2} (α -> β)) f s) => Set.image.{u1, u2} α β f t)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{max u2 u1} (α -> β)} {t : Set.{u2} α}, Eq.{succ u1} (Set.{u1} β) (Set.seq.{u2, u1} α β s t) (Set.iUnion.{u1, succ (max u2 u1)} β (α -> β) (fun (f : α -> β) => Set.iUnion.{u1, 0} β (Membership.mem.{max u2 u1, max u2 u1} (α -> β) (Set.{max u2 u1} (α -> β)) (Set.instMembershipSet.{max u2 u1} (α -> β)) f s) (fun (H : Membership.mem.{max u2 u1, max u2 u1} (α -> β) (Set.{max u2 u1} (α -> β)) (Set.instMembershipSet.{max u2 u1} (α -> β)) f s) => Set.image.{u2, u1} α β f t)))
-Case conversion may be inaccurate. Consider using '#align set.seq_def Set.seq_defₓ'. -/
theorem seq_def {s : Set (α → β)} {t : Set α} : seq s t = ⋃ f ∈ s, f '' t :=
Set.ext <| by simp [seq]
#align set.seq_def Set.seq_def
-/- warning: set.mem_seq_iff -> Set.mem_seq_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{max u1 u2} (α -> β)} {t : Set.{u1} α} {b : β}, Iff (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) b (Set.seq.{u1, u2} α β s t)) (Exists.{succ (max u1 u2)} (α -> β) (fun (f : α -> β) => Exists.{0} (Membership.Mem.{max u1 u2, max u1 u2} (α -> β) (Set.{max u1 u2} (α -> β)) (Set.hasMem.{max u1 u2} (α -> β)) f s) (fun (H : Membership.Mem.{max u1 u2, max u1 u2} (α -> β) (Set.{max u1 u2} (α -> β)) (Set.hasMem.{max u1 u2} (α -> β)) f s) => Exists.{succ u1} α (fun (a : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a t) => Eq.{succ u2} β (f a) b)))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{max u2 u1} (α -> β)} {t : Set.{u2} α} {b : β}, Iff (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) b (Set.seq.{u2, u1} α β s t)) (Exists.{succ (max u2 u1)} (α -> β) (fun (f : α -> β) => And (Membership.mem.{max u2 u1, max u2 u1} (α -> β) (Set.{max u2 u1} (α -> β)) (Set.instMembershipSet.{max u2 u1} (α -> β)) f s) (Exists.{succ u2} α (fun (a : α) => And (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a t) (Eq.{succ u1} β (f a) b)))))
-Case conversion may be inaccurate. Consider using '#align set.mem_seq_iff Set.mem_seq_iffₓ'. -/
@[simp]
theorem mem_seq_iff {s : Set (α → β)} {t : Set α} {b : β} :
b ∈ seq s t ↔ ∃ f ∈ s, ∃ a ∈ t, (f : α → β) a = b :=
Iff.rfl
#align set.mem_seq_iff Set.mem_seq_iff
-/- warning: set.seq_subset -> Set.seq_subset is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{max u1 u2} (α -> β)} {t : Set.{u1} α} {u : Set.{u2} β}, Iff (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.seq.{u1, u2} α β s t) u) (forall (f : α -> β), (Membership.Mem.{max u1 u2, max u1 u2} (α -> β) (Set.{max u1 u2} (α -> β)) (Set.hasMem.{max u1 u2} (α -> β)) f s) -> (forall (a : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a t) -> (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) (f a) u)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{max u2 u1} (α -> β)} {t : Set.{u2} α} {u : Set.{u1} β}, Iff (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (Set.seq.{u2, u1} α β s t) u) (forall (f : α -> β), (Membership.mem.{max u2 u1, max u2 u1} (α -> β) (Set.{max u2 u1} (α -> β)) (Set.instMembershipSet.{max u2 u1} (α -> β)) f s) -> (forall (a : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a t) -> (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) (f a) u)))
-Case conversion may be inaccurate. Consider using '#align set.seq_subset Set.seq_subsetₓ'. -/
theorem seq_subset {s : Set (α → β)} {t : Set α} {u : Set β} :
seq s t ⊆ u ↔ ∀ f ∈ s, ∀ a ∈ t, (f : α → β) a ∈ u :=
Iff.intro (fun h f hf a ha => h ⟨f, hf, a, ha, rfl⟩) fun h b ⟨f, hf, a, ha, Eq⟩ =>
Eq ▸ h f hf a ha
#align set.seq_subset Set.seq_subset
-/- warning: set.seq_mono -> Set.seq_mono is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s₀ : Set.{max u1 u2} (α -> β)} {s₁ : Set.{max u1 u2} (α -> β)} {t₀ : Set.{u1} α} {t₁ : Set.{u1} α}, (HasSubset.Subset.{max u1 u2} (Set.{max u1 u2} (α -> β)) (Set.hasSubset.{max u1 u2} (α -> β)) s₀ s₁) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) t₀ t₁) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.seq.{u1, u2} α β s₀ t₀) (Set.seq.{u1, u2} α β s₁ t₁))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s₀ : Set.{max u2 u1} (α -> β)} {s₁ : Set.{max u2 u1} (α -> β)} {t₀ : Set.{u2} α} {t₁ : Set.{u2} α}, (HasSubset.Subset.{max u2 u1} (Set.{max u2 u1} (α -> β)) (Set.instHasSubsetSet.{max u2 u1} (α -> β)) s₀ s₁) -> (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) t₀ t₁) -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (Set.seq.{u2, u1} α β s₀ t₀) (Set.seq.{u2, u1} α β s₁ t₁))
-Case conversion may be inaccurate. Consider using '#align set.seq_mono Set.seq_monoₓ'. -/
theorem seq_mono {s₀ s₁ : Set (α → β)} {t₀ t₁ : Set α} (hs : s₀ ⊆ s₁) (ht : t₀ ⊆ t₁) :
seq s₀ t₀ ⊆ seq s₁ t₁ := fun b ⟨f, hf, a, ha, Eq⟩ => ⟨f, hs hf, a, ht ha, Eq⟩
#align set.seq_mono Set.seq_mono
-/- warning: set.singleton_seq -> Set.singleton_seq is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {f : α -> β} {t : Set.{u1} α}, Eq.{succ u2} (Set.{u2} β) (Set.seq.{u1, u2} α β (Singleton.singleton.{max u1 u2, max u1 u2} (α -> β) (Set.{max u1 u2} (α -> β)) (Set.hasSingleton.{max u1 u2} (α -> β)) f) t) (Set.image.{u1, u2} α β f t)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {f : α -> β} {t : Set.{u2} α}, Eq.{succ u1} (Set.{u1} β) (Set.seq.{u2, u1} α β (Singleton.singleton.{max u2 u1, max u2 u1} (α -> β) (Set.{max u2 u1} (α -> β)) (Set.instSingletonSet.{max u2 u1} (α -> β)) f) t) (Set.image.{u2, u1} α β f t)
-Case conversion may be inaccurate. Consider using '#align set.singleton_seq Set.singleton_seqₓ'. -/
theorem singleton_seq {f : α → β} {t : Set α} : Set.seq {f} t = f '' t :=
Set.ext <| by simp
#align set.singleton_seq Set.singleton_seq
-/- warning: set.seq_singleton -> Set.seq_singleton is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{max u1 u2} (α -> β)} {a : α}, Eq.{succ u2} (Set.{u2} β) (Set.seq.{u1, u2} α β s (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.hasSingleton.{u1} α) a)) (Set.image.{max u1 u2, u2} (α -> β) β (fun (f : α -> β) => f a) s)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{max u2 u1} (α -> β)} {a : α}, Eq.{succ u1} (Set.{u1} β) (Set.seq.{u2, u1} α β s (Singleton.singleton.{u2, u2} α (Set.{u2} α) (Set.instSingletonSet.{u2} α) a)) (Set.image.{max u2 u1, u1} (α -> β) β (fun (f : α -> β) => f a) s)
-Case conversion may be inaccurate. Consider using '#align set.seq_singleton Set.seq_singletonₓ'. -/
theorem seq_singleton {s : Set (α → β)} {a : α} : Set.seq s {a} = (fun f : α → β => f a) '' s :=
Set.ext <| by simp
#align set.seq_singleton Set.seq_singleton
-/- warning: set.seq_seq -> Set.seq_seq is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {s : Set.{max u2 u3} (β -> γ)} {t : Set.{max u1 u2} (α -> β)} {u : Set.{u1} α}, Eq.{succ u3} (Set.{u3} γ) (Set.seq.{u2, u3} β γ s (Set.seq.{u1, u2} α β t u)) (Set.seq.{u1, u3} α γ (Set.seq.{max u1 u2, max u1 u3} (α -> β) (α -> γ) (Set.image.{max u2 u3, max (max u1 u2) u1 u3} (β -> γ) ((α -> β) -> α -> γ) (Function.comp.{succ u1, succ u2, succ u3} α β γ) s) t) u)
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u3}} {γ : Type.{u2}} {s : Set.{max u3 u2} (β -> γ)} {t : Set.{max u1 u3} (α -> β)} {u : Set.{u1} α}, Eq.{succ u2} (Set.{u2} γ) (Set.seq.{u3, u2} β γ s (Set.seq.{u1, u3} α β t u)) (Set.seq.{u1, u2} α γ (Set.seq.{max u3 u1, max u2 u1} (α -> β) (α -> γ) (Set.image.{max u3 u2, max (max u2 u1) u3 u1} (β -> γ) ((α -> β) -> α -> γ) (fun (x._@.Mathlib.Data.Set.Lattice._hyg.30299 : β -> γ) (x._@.Mathlib.Data.Set.Lattice._hyg.30301 : α -> β) => Function.comp.{succ u1, succ u3, succ u2} α β γ x._@.Mathlib.Data.Set.Lattice._hyg.30299 x._@.Mathlib.Data.Set.Lattice._hyg.30301) s) t) u)
-Case conversion may be inaccurate. Consider using '#align set.seq_seq Set.seq_seqₓ'. -/
theorem seq_seq {s : Set (β → γ)} {t : Set (α → β)} {u : Set α} :
seq s (seq t u) = seq (seq ((· ∘ ·) '' s) t) u :=
by
@@ -3661,23 +2125,11 @@ theorem seq_seq {s : Set (β → γ)} {t : Set (α → β)} {u : Set α} :
exact ⟨f, hfs, g a, ⟨g, hgt, a, ha, rfl⟩, rfl⟩
#align set.seq_seq Set.seq_seq
-/- warning: set.image_seq -> Set.image_seq is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {f : β -> γ} {s : Set.{max u1 u2} (α -> β)} {t : Set.{u1} α}, Eq.{succ u3} (Set.{u3} γ) (Set.image.{u2, u3} β γ f (Set.seq.{u1, u2} α β s t)) (Set.seq.{u1, u3} α γ (Set.image.{max u1 u2, max u1 u3} (α -> β) (α -> γ) (Function.comp.{succ u1, succ u2, succ u3} α β γ f) s) t)
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} {f : β -> γ} {s : Set.{max u3 u2} (α -> β)} {t : Set.{u3} α}, Eq.{succ u1} (Set.{u1} γ) (Set.image.{u2, u1} β γ f (Set.seq.{u3, u2} α β s t)) (Set.seq.{u3, u1} α γ (Set.image.{max u2 u3, max u1 u3} (α -> β) (α -> γ) ((fun (x._@.Mathlib.Data.Set.Lattice._hyg.30479 : β -> γ) (x._@.Mathlib.Data.Set.Lattice._hyg.30481 : α -> β) => Function.comp.{succ u3, succ u2, succ u1} α β γ x._@.Mathlib.Data.Set.Lattice._hyg.30479 x._@.Mathlib.Data.Set.Lattice._hyg.30481) f) s) t)
-Case conversion may be inaccurate. Consider using '#align set.image_seq Set.image_seqₓ'. -/
theorem image_seq {f : β → γ} {s : Set (α → β)} {t : Set α} :
f '' seq s t = seq ((· ∘ ·) f '' s) t := by
rw [← singleton_seq, ← singleton_seq, seq_seq, image_singleton]
#align set.image_seq Set.image_seq
-/- warning: set.prod_eq_seq -> Set.prod_eq_seq is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {t : Set.{u2} β}, Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β s t) (Set.seq.{u2, max u1 u2} β (Prod.{u1, u2} α β) (Set.image.{u1, max u1 u2} α (β -> (Prod.{u1, u2} α β)) (Prod.mk.{u1, u2} α β) s) t)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {t : Set.{u1} β}, Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Prod.{u2, u1} α β)) (Set.prod.{u2, u1} α β s t) (Set.seq.{u1, max u2 u1} β (Prod.{u2, u1} α β) (Set.image.{u2, max u1 u2} α (β -> (Prod.{u2, u1} α β)) (Prod.mk.{u2, u1} α β) s) t)
-Case conversion may be inaccurate. Consider using '#align set.prod_eq_seq Set.prod_eq_seqₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem prod_eq_seq {s : Set α} {t : Set β} : s ×ˢ t = (Prod.mk '' s).seq t :=
by
@@ -3687,23 +2139,11 @@ theorem prod_eq_seq {s : Set α} {t : Set β} : s ×ˢ t = (Prod.mk '' s).seq t
· rintro ⟨f, ⟨x, hx, rfl⟩, y, hy, eq⟩; rw [← Eq]; exact ⟨hx, hy⟩
#align set.prod_eq_seq Set.prod_eq_seq
-/- warning: set.prod_image_seq_comm -> Set.prod_image_seq_comm is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (s : Set.{u1} α) (t : Set.{u2} β), Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.seq.{u2, max u1 u2} β (Prod.{u1, u2} α β) (Set.image.{u1, max u1 u2} α (β -> (Prod.{u1, u2} α β)) (Prod.mk.{u1, u2} α β) s) t) (Set.seq.{u1, max u1 u2} α (Prod.{u1, u2} α β) (Set.image.{u2, max u1 u2} β (α -> (Prod.{u1, u2} α β)) (fun (b : β) (a : α) => Prod.mk.{u1, u2} α β a b) t) s)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (s : Set.{u2} α) (t : Set.{u1} β), Eq.{max (succ u2) (succ u1)} (Set.{max u2 u1} (Prod.{u2, u1} α β)) (Set.seq.{u1, max u2 u1} β (Prod.{u2, u1} α β) (Set.image.{u2, max u1 u2} α (β -> (Prod.{u2, u1} α β)) (Prod.mk.{u2, u1} α β) s) t) (Set.seq.{u2, max u1 u2} α (Prod.{u2, u1} α β) (Set.image.{u1, max u1 u2} β (α -> (Prod.{u2, u1} α β)) (fun (b : β) (a : α) => Prod.mk.{u2, u1} α β a b) t) s)
-Case conversion may be inaccurate. Consider using '#align set.prod_image_seq_comm Set.prod_image_seq_commₓ'. -/
theorem prod_image_seq_comm (s : Set α) (t : Set β) :
(Prod.mk '' s).seq t = seq ((fun b a => (a, b)) '' t) s := by
rw [← prod_eq_seq, ← image_swap_prod, prod_eq_seq, image_seq, ← image_comp, Prod.swap]
#align set.prod_image_seq_comm Set.prod_image_seq_comm
-/- warning: set.image2_eq_seq -> Set.image2_eq_seq is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} (f : α -> β -> γ) (s : Set.{u1} α) (t : Set.{u2} β), Eq.{succ u3} (Set.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f s t) (Set.seq.{u2, u3} β γ (Set.image.{u1, max u2 u3} α (β -> γ) f s) t)
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} (f : α -> β -> γ) (s : Set.{u3} α) (t : Set.{u2} β), Eq.{succ u1} (Set.{u1} γ) (Set.image2.{u3, u2, u1} α β γ f s t) (Set.seq.{u2, u1} β γ (Set.image.{u3, max u1 u2} α (β -> γ) f s) t)
-Case conversion may be inaccurate. Consider using '#align set.image2_eq_seq Set.image2_eq_seqₓ'. -/
theorem image2_eq_seq (f : α → β → γ) (s : Set α) (t : Set β) : image2 f s t = seq (f '' s) t := by
ext; simp
#align set.image2_eq_seq Set.image2_eq_seq
@@ -3714,12 +2154,6 @@ section Pi
variable {π : α → Type _}
-/- warning: set.pi_def -> Set.pi_def is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {π : α -> Type.{u2}} (i : Set.{u1} α) (s : forall (a : α), Set.{u2} (π a)), Eq.{succ (max u1 u2)} (Set.{max u1 u2} (forall (i : α), π i)) (Set.pi.{u1, u2} α (fun (a : α) => π a) i s) (Set.iInter.{max u1 u2, succ u1} (forall (i : α), π i) α (fun (a : α) => Set.iInter.{max u1 u2, 0} (forall (i : α), π i) (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a i) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a i) => Set.preimage.{max u1 u2, u2} (forall (i : α), π i) (π a) (Function.eval.{succ u1, succ u2} α (fun (i : α) => π i) a) (s a))))
-but is expected to have type
- forall {α : Type.{u2}} {π : α -> Type.{u1}} (i : Set.{u2} α) (s : forall (a : α), Set.{u1} (π a)), Eq.{max (succ u2) (succ u1)} (Set.{max u2 u1} (forall (i : α), π i)) (Set.pi.{u2, u1} α (fun (a : α) => π a) i s) (Set.iInter.{max u2 u1, succ u2} (forall (i : α), π i) α (fun (a : α) => Set.iInter.{max u2 u1, 0} (forall (i : α), π i) (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a i) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a i) => Set.preimage.{max u2 u1, u1} (forall (i : α), π i) (π a) (Function.eval.{succ u2, succ u1} α (fun (i : α) => π i) a) (s a))))
-Case conversion may be inaccurate. Consider using '#align set.pi_def Set.pi_defₓ'. -/
theorem pi_def (i : Set α) (s : ∀ a, Set (π a)) : pi i s = ⋂ a ∈ i, eval a ⁻¹' s a := by ext; simp
#align set.pi_def Set.pi_def
@@ -3729,12 +2163,6 @@ theorem univ_pi_eq_iInter (t : ∀ i, Set (π i)) : pi univ t = ⋂ i, eval i
#align set.univ_pi_eq_Inter Set.univ_pi_eq_iInter
-/
-/- warning: set.pi_diff_pi_subset -> Set.pi_diff_pi_subset is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {π : α -> Type.{u2}} (i : Set.{u1} α) (s : forall (a : α), Set.{u2} (π a)) (t : forall (a : α), Set.{u2} (π a)), HasSubset.Subset.{max u1 u2} (Set.{max u1 u2} (forall (i : α), π i)) (Set.hasSubset.{max u1 u2} (forall (i : α), π i)) (SDiff.sdiff.{max u1 u2} (Set.{max u1 u2} (forall (i : α), π i)) (BooleanAlgebra.toHasSdiff.{max u1 u2} (Set.{max u1 u2} (forall (i : α), π i)) (Set.booleanAlgebra.{max u1 u2} (forall (i : α), π i))) (Set.pi.{u1, u2} α (fun (a : α) => π a) i s) (Set.pi.{u1, u2} α (fun (i : α) => π i) i t)) (Set.iUnion.{max u1 u2, succ u1} (forall (i : α), π i) α (fun (a : α) => Set.iUnion.{max u1 u2, 0} (forall (i : α), π i) (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a i) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a i) => Set.preimage.{max u1 u2, u2} (forall (i : α), π i) (π a) (Function.eval.{succ u1, succ u2} α (fun (i : α) => π i) a) (SDiff.sdiff.{u2} (Set.{u2} (π a)) (BooleanAlgebra.toHasSdiff.{u2} (Set.{u2} (π a)) (Set.booleanAlgebra.{u2} (π a))) (s a) (t a)))))
-but is expected to have type
- forall {α : Type.{u2}} {π : α -> Type.{u1}} (i : Set.{u2} α) (s : forall (a : α), Set.{u1} (π a)) (t : forall (a : α), Set.{u1} (π a)), HasSubset.Subset.{max u1 u2} (Set.{max u2 u1} (forall (i : α), π i)) (Set.instHasSubsetSet.{max u2 u1} (forall (i : α), π i)) (SDiff.sdiff.{max u1 u2} (Set.{max u2 u1} (forall (i : α), π i)) (Set.instSDiffSet.{max u2 u1} (forall (i : α), π i)) (Set.pi.{u2, u1} α (fun (a : α) => π a) i s) (Set.pi.{u2, u1} α (fun (i : α) => π i) i t)) (Set.iUnion.{max u2 u1, succ u2} (forall (i : α), π i) α (fun (a : α) => Set.iUnion.{max u2 u1, 0} (forall (i : α), π i) (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a i) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a i) => Set.preimage.{max u2 u1, u1} (forall (i : α), π i) (π a) (Function.eval.{succ u2, succ u1} α (fun (i : α) => π i) a) (SDiff.sdiff.{u1} (Set.{u1} (π a)) (Set.instSDiffSet.{u1} (π a)) (s a) (t a)))))
-Case conversion may be inaccurate. Consider using '#align set.pi_diff_pi_subset Set.pi_diff_pi_subsetₓ'. -/
theorem pi_diff_pi_subset (i : Set α) (s t : ∀ a, Set (π a)) :
pi i s \ pi i t ⊆ ⋃ a ∈ i, eval a ⁻¹' (s a \ t a) :=
by
@@ -3744,12 +2172,6 @@ theorem pi_diff_pi_subset (i : Set α) (s t : ∀ a, Set (π a)) :
exact hx.2 _ ha (hx.1 _ ha)
#align set.pi_diff_pi_subset Set.pi_diff_pi_subset
-/- warning: set.Union_univ_pi -> Set.iUnion_univ_pi is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {π : α -> Type.{u3}} (t : forall (i : α), ι -> (Set.{u3} (π i))), Eq.{succ (max u1 u3)} (Set.{max u1 u3} (forall (i : α), π i)) (Set.iUnion.{max u1 u3, imax (succ u1) u2} (forall (i : α), π i) (α -> ι) (fun (x : α -> ι) => Set.pi.{u1, u3} α (fun (i : α) => π i) (Set.univ.{u1} α) (fun (i : α) => t i (x i)))) (Set.pi.{u1, u3} α (fun (i : α) => π i) (Set.univ.{u1} α) (fun (i : α) => Set.iUnion.{u3, u2} (π i) ι (fun (j : ι) => t i j)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {π : α -> Type.{u3}} (t : forall (i : α), ι -> (Set.{u3} (π i))), Eq.{max (succ u2) (succ u3)} (Set.{max u3 u2} (forall (i : α), π i)) (Set.iUnion.{max u3 u2, imax (succ u2) u1} (forall (i : α), π i) (α -> ι) (fun (x : α -> ι) => Set.pi.{u2, u3} α (fun (i : α) => π i) (Set.univ.{u2} α) (fun (i : α) => t i (x i)))) (Set.pi.{u2, u3} α (fun (i : α) => π i) (Set.univ.{u2} α) (fun (i : α) => Set.iUnion.{u3, u1} (π i) ι (fun (j : ι) => t i j)))
-Case conversion may be inaccurate. Consider using '#align set.Union_univ_pi Set.iUnion_univ_piₓ'. -/
theorem iUnion_univ_pi (t : ∀ i, ι → Set (π i)) :
(⋃ x : α → ι, pi univ fun i => t i (x i)) = pi univ fun i => ⋃ j : ι, t i j := by ext;
simp [Classical.skolem]
@@ -3763,22 +2185,10 @@ namespace Function
namespace Surjective
-/- warning: function.surjective.Union_comp -> Function.Surjective.iUnion_comp is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι₂ : Sort.{u3}} {f : ι -> ι₂}, (Function.Surjective.{u2, u3} ι ι₂ f) -> (forall (g : ι₂ -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (x : ι) => g (f x))) (Set.iUnion.{u1, u3} α ι₂ (fun (y : ι₂) => g y)))
-but is expected to have type
- forall {α : Type.{u1}} {ι : Sort.{u3}} {ι₂ : Sort.{u2}} {f : ι -> ι₂}, (Function.Surjective.{u3, u2} ι ι₂ f) -> (forall (g : ι₂ -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u3} α ι (fun (x : ι) => g (f x))) (Set.iUnion.{u1, u2} α ι₂ (fun (y : ι₂) => g y)))
-Case conversion may be inaccurate. Consider using '#align function.surjective.Union_comp Function.Surjective.iUnion_compₓ'. -/
theorem iUnion_comp {f : ι → ι₂} (hf : Surjective f) (g : ι₂ → Set α) : (⋃ x, g (f x)) = ⋃ y, g y :=
hf.iSup_comp g
#align function.surjective.Union_comp Function.Surjective.iUnion_comp
-/- warning: function.surjective.Inter_comp -> Function.Surjective.iInter_comp is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι₂ : Sort.{u3}} {f : ι -> ι₂}, (Function.Surjective.{u2, u3} ι ι₂ f) -> (forall (g : ι₂ -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (x : ι) => g (f x))) (Set.iInter.{u1, u3} α ι₂ (fun (y : ι₂) => g y)))
-but is expected to have type
- forall {α : Type.{u1}} {ι : Sort.{u3}} {ι₂ : Sort.{u2}} {f : ι -> ι₂}, (Function.Surjective.{u3, u2} ι ι₂ f) -> (forall (g : ι₂ -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u3} α ι (fun (x : ι) => g (f x))) (Set.iInter.{u1, u2} α ι₂ (fun (y : ι₂) => g y)))
-Case conversion may be inaccurate. Consider using '#align function.surjective.Inter_comp Function.Surjective.iInter_compₓ'. -/
theorem iInter_comp {f : ι → ι₂} (hf : Surjective f) (g : ι₂ → Set α) : (⋂ x, g (f x)) = ⋂ y, g y :=
hf.iInf_comp g
#align function.surjective.Inter_comp Function.Surjective.iInter_comp
@@ -3800,36 +2210,18 @@ variable {s t u : Set α} {f : α → β}
namespace Set
-/- warning: set.disjoint_Union_left -> Set.disjoint_iUnion_left is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {t : Set.{u1} α} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i)) t) (forall (i : ι), Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (s i) t)
-but is expected to have type
- forall {α : Type.{u1}} {t : Set.{u1} α} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i)) t) (forall (i : ι), Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (s i) t)
-Case conversion may be inaccurate. Consider using '#align set.disjoint_Union_left Set.disjoint_iUnion_leftₓ'. -/
@[simp]
theorem disjoint_iUnion_left {ι : Sort _} {s : ι → Set α} :
Disjoint (⋃ i, s i) t ↔ ∀ i, Disjoint (s i) t :=
iSup_disjoint_iff
#align set.disjoint_Union_left Set.disjoint_iUnion_left
-/- warning: set.disjoint_Union_right -> Set.disjoint_iUnion_right is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {t : Set.{u1} α} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) t (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i))) (forall (i : ι), Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) t (s i))
-but is expected to have type
- forall {α : Type.{u1}} {t : Set.{u1} α} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) t (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i))) (forall (i : ι), Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) t (s i))
-Case conversion may be inaccurate. Consider using '#align set.disjoint_Union_right Set.disjoint_iUnion_rightₓ'. -/
@[simp]
theorem disjoint_iUnion_right {ι : Sort _} {s : ι → Set α} :
Disjoint t (⋃ i, s i) ↔ ∀ i, Disjoint t (s i) :=
disjoint_iSup_iff
#align set.disjoint_Union_right Set.disjoint_iUnion_right
-/- warning: set.disjoint_Union₂_left -> Set.disjoint_iUnion₂_left is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : Set.{u1} α}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) t) (forall (i : ι) (j : κ i), Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (s i j) t)
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {t : Set.{u3} α}, Iff (Disjoint.{u3} (Set.{u3} α) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} α) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))) (BoundedOrder.toOrderBot.{u3} (Set.{u3} α) (Preorder.toLE.{u3} (Set.{u3} α) (PartialOrder.toPreorder.{u3} (Set.{u3} α) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} α) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))))) (CompleteLattice.toBoundedOrder.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) t) (forall (i : ι) (j : κ i), Disjoint.{u3} (Set.{u3} α) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} α) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))) (BoundedOrder.toOrderBot.{u3} (Set.{u3} α) (Preorder.toLE.{u3} (Set.{u3} α) (PartialOrder.toPreorder.{u3} (Set.{u3} α) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} α) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))))) (CompleteLattice.toBoundedOrder.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))) (s i j) t)
-Case conversion may be inaccurate. Consider using '#align set.disjoint_Union₂_left Set.disjoint_iUnion₂_leftₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
@[simp]
theorem disjoint_iUnion₂_left {s : ∀ i, κ i → Set α} {t : Set α} :
@@ -3837,12 +2229,6 @@ theorem disjoint_iUnion₂_left {s : ∀ i, κ i → Set α} {t : Set α} :
iSup₂_disjoint_iff
#align set.disjoint_Union₂_left Set.disjoint_iUnion₂_left
-/- warning: set.disjoint_Union₂_right -> Set.disjoint_iUnion₂_right is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : Set.{u1} α} {t : forall (i : ι), (κ i) -> (Set.{u1} α)}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) s (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => t i j)))) (forall (i : ι) (j : κ i), Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) s (t i j))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : Set.{u3} α} {t : forall (i : ι), (κ i) -> (Set.{u3} α)}, Iff (Disjoint.{u3} (Set.{u3} α) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} α) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))) (BoundedOrder.toOrderBot.{u3} (Set.{u3} α) (Preorder.toLE.{u3} (Set.{u3} α) (PartialOrder.toPreorder.{u3} (Set.{u3} α) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} α) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))))) (CompleteLattice.toBoundedOrder.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))) s (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => t i j)))) (forall (i : ι) (j : κ i), Disjoint.{u3} (Set.{u3} α) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} α) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))) (BoundedOrder.toOrderBot.{u3} (Set.{u3} α) (Preorder.toLE.{u3} (Set.{u3} α) (PartialOrder.toPreorder.{u3} (Set.{u3} α) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} α) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))))) (CompleteLattice.toBoundedOrder.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))) s (t i j))
-Case conversion may be inaccurate. Consider using '#align set.disjoint_Union₂_right Set.disjoint_iUnion₂_rightₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
@[simp]
theorem disjoint_iUnion₂_right {s : Set α} {t : ∀ i, κ i → Set α} :
@@ -3850,24 +2236,12 @@ theorem disjoint_iUnion₂_right {s : Set α} {t : ∀ i, κ i → Set α} :
disjoint_iSup₂_iff
#align set.disjoint_Union₂_right Set.disjoint_iUnion₂_right
-/- warning: set.disjoint_sUnion_left -> Set.disjoint_sUnion_left is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {S : Set.{u1} (Set.{u1} α)} {t : Set.{u1} α}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (Set.sUnion.{u1} α S) t) (forall (s : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s S) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) s t))
-but is expected to have type
- forall {α : Type.{u1}} {S : Set.{u1} (Set.{u1} α)} {t : Set.{u1} α}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (Set.sUnion.{u1} α S) t) (forall (s : Set.{u1} α), (Membership.mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instMembershipSet.{u1} (Set.{u1} α)) s S) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) s t))
-Case conversion may be inaccurate. Consider using '#align set.disjoint_sUnion_left Set.disjoint_sUnion_leftₓ'. -/
@[simp]
theorem disjoint_sUnion_left {S : Set (Set α)} {t : Set α} :
Disjoint (⋃₀ S) t ↔ ∀ s ∈ S, Disjoint s t :=
sSup_disjoint_iff
#align set.disjoint_sUnion_left Set.disjoint_sUnion_left
-/- warning: set.disjoint_sUnion_right -> Set.disjoint_sUnion_right is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {s : Set.{u1} α} {S : Set.{u1} (Set.{u1} α)}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) s (Set.sUnion.{u1} α S)) (forall (t : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) t S) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) s t))
-but is expected to have type
- forall {α : Type.{u1}} {s : Set.{u1} α} {S : Set.{u1} (Set.{u1} α)}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) s (Set.sUnion.{u1} α S)) (forall (t : Set.{u1} α), (Membership.mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instMembershipSet.{u1} (Set.{u1} α)) t S) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) s t))
-Case conversion may be inaccurate. Consider using '#align set.disjoint_sUnion_right Set.disjoint_sUnion_rightₓ'. -/
@[simp]
theorem disjoint_sUnion_right {s : Set α} {S : Set (Set α)} :
Disjoint s (⋃₀ S) ↔ ∀ t ∈ S, Disjoint s t :=
@@ -3885,65 +2259,29 @@ namespace Set
variable [CompleteLattice α]
-/- warning: set.Ici_supr -> Set.Ici_iSup is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : CompleteLattice.{u1} α] (f : ι -> α), Eq.{succ u1} (Set.{u1} α) (Set.Ici.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (iSup.{u1, u2} α (CompleteSemilatticeSup.toHasSup.{u1} α (CompleteLattice.toCompleteSemilatticeSup.{u1} α _inst_1)) ι (fun (i : ι) => f i))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.Ici.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (f i)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : CompleteLattice.{u2} α] (f : ι -> α), Eq.{succ u2} (Set.{u2} α) (Set.Ici.{u2} α (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α _inst_1))) (iSup.{u2, u1} α (CompleteLattice.toSupSet.{u2} α _inst_1) ι (fun (i : ι) => f i))) (Set.iInter.{u2, u1} α ι (fun (i : ι) => Set.Ici.{u2} α (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α _inst_1))) (f i)))
-Case conversion may be inaccurate. Consider using '#align set.Ici_supr Set.Ici_iSupₓ'. -/
theorem Ici_iSup (f : ι → α) : Ici (⨆ i, f i) = ⋂ i, Ici (f i) :=
ext fun _ => by simp only [mem_Ici, iSup_le_iff, mem_Inter]
#align set.Ici_supr Set.Ici_iSup
-/- warning: set.Iic_infi -> Set.Iic_iInf is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : CompleteLattice.{u1} α] (f : ι -> α), Eq.{succ u1} (Set.{u1} α) (Set.Iic.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (iInf.{u1, u2} α (CompleteSemilatticeInf.toHasInf.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1)) ι (fun (i : ι) => f i))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.Iic.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (f i)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : CompleteLattice.{u2} α] (f : ι -> α), Eq.{succ u2} (Set.{u2} α) (Set.Iic.{u2} α (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α _inst_1))) (iInf.{u2, u1} α (CompleteLattice.toInfSet.{u2} α _inst_1) ι (fun (i : ι) => f i))) (Set.iInter.{u2, u1} α ι (fun (i : ι) => Set.Iic.{u2} α (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α _inst_1))) (f i)))
-Case conversion may be inaccurate. Consider using '#align set.Iic_infi Set.Iic_iInfₓ'. -/
theorem Iic_iInf (f : ι → α) : Iic (⨅ i, f i) = ⋂ i, Iic (f i) :=
ext fun _ => by simp only [mem_Iic, le_iInf_iff, mem_Inter]
#align set.Iic_infi Set.Iic_iInf
-/- warning: set.Ici_supr₂ -> Set.Ici_iSup₂ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} [_inst_1 : CompleteLattice.{u1} α] (f : forall (i : ι), (κ i) -> α), Eq.{succ u1} (Set.{u1} α) (Set.Ici.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (iSup.{u1, u2} α (CompleteSemilatticeSup.toHasSup.{u1} α (CompleteLattice.toCompleteSemilatticeSup.{u1} α _inst_1)) ι (fun (i : ι) => iSup.{u1, u3} α (CompleteSemilatticeSup.toHasSup.{u1} α (CompleteLattice.toCompleteSemilatticeSup.{u1} α _inst_1)) (κ i) (fun (j : κ i) => f i j)))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => Set.Ici.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (f i j))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} [_inst_1 : CompleteLattice.{u3} α] (f : forall (i : ι), (κ i) -> α), Eq.{succ u3} (Set.{u3} α) (Set.Ici.{u3} α (PartialOrder.toPreorder.{u3} α (CompleteSemilatticeInf.toPartialOrder.{u3} α (CompleteLattice.toCompleteSemilatticeInf.{u3} α _inst_1))) (iSup.{u3, u2} α (CompleteLattice.toSupSet.{u3} α _inst_1) ι (fun (i : ι) => iSup.{u3, u1} α (CompleteLattice.toSupSet.{u3} α _inst_1) (κ i) (fun (j : κ i) => f i j)))) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => Set.Ici.{u3} α (PartialOrder.toPreorder.{u3} α (CompleteSemilatticeInf.toPartialOrder.{u3} α (CompleteLattice.toCompleteSemilatticeInf.{u3} α _inst_1))) (f i j))))
-Case conversion may be inaccurate. Consider using '#align set.Ici_supr₂ Set.Ici_iSup₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem Ici_iSup₂ (f : ∀ i, κ i → α) : Ici (⨆ (i) (j), f i j) = ⋂ (i) (j), Ici (f i j) := by
simp_rw [Ici_supr]
#align set.Ici_supr₂ Set.Ici_iSup₂
-/- warning: set.Iic_infi₂ -> Set.Iic_iInf₂ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} [_inst_1 : CompleteLattice.{u1} α] (f : forall (i : ι), (κ i) -> α), Eq.{succ u1} (Set.{u1} α) (Set.Iic.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (iInf.{u1, u2} α (CompleteSemilatticeInf.toHasInf.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1)) ι (fun (i : ι) => iInf.{u1, u3} α (CompleteSemilatticeInf.toHasInf.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1)) (κ i) (fun (j : κ i) => f i j)))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => Set.Iic.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (f i j))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} [_inst_1 : CompleteLattice.{u3} α] (f : forall (i : ι), (κ i) -> α), Eq.{succ u3} (Set.{u3} α) (Set.Iic.{u3} α (PartialOrder.toPreorder.{u3} α (CompleteSemilatticeInf.toPartialOrder.{u3} α (CompleteLattice.toCompleteSemilatticeInf.{u3} α _inst_1))) (iInf.{u3, u2} α (CompleteLattice.toInfSet.{u3} α _inst_1) ι (fun (i : ι) => iInf.{u3, u1} α (CompleteLattice.toInfSet.{u3} α _inst_1) (κ i) (fun (j : κ i) => f i j)))) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => Set.Iic.{u3} α (PartialOrder.toPreorder.{u3} α (CompleteSemilatticeInf.toPartialOrder.{u3} α (CompleteLattice.toCompleteSemilatticeInf.{u3} α _inst_1))) (f i j))))
-Case conversion may be inaccurate. Consider using '#align set.Iic_infi₂ Set.Iic_iInf₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem Iic_iInf₂ (f : ∀ i, κ i → α) : Iic (⨅ (i) (j), f i j) = ⋂ (i) (j), Iic (f i j) := by
simp_rw [Iic_infi]
#align set.Iic_infi₂ Set.Iic_iInf₂
-/- warning: set.Ici_Sup -> Set.Ici_sSup is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : CompleteLattice.{u1} α] (s : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.Ici.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (SupSet.sSup.{u1} α (CompleteSemilatticeSup.toHasSup.{u1} α (CompleteLattice.toCompleteSemilatticeSup.{u1} α _inst_1)) s)) (Set.iInter.{u1, succ u1} α α (fun (a : α) => Set.iInter.{u1, 0} α (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) => Set.Ici.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) a)))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : CompleteLattice.{u1} α] (s : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.Ici.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (SupSet.sSup.{u1} α (CompleteLattice.toSupSet.{u1} α _inst_1) s)) (Set.iInter.{u1, succ u1} α α (fun (a : α) => Set.iInter.{u1, 0} α (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) a s) (fun (H : Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) a s) => Set.Ici.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) a)))
-Case conversion may be inaccurate. Consider using '#align set.Ici_Sup Set.Ici_sSupₓ'. -/
theorem Ici_sSup (s : Set α) : Ici (sSup s) = ⋂ a ∈ s, Ici a := by rw [sSup_eq_iSup, Ici_supr₂]
#align set.Ici_Sup Set.Ici_sSup
-/- warning: set.Iic_Inf -> Set.Iic_sInf is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : CompleteLattice.{u1} α] (s : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.Iic.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (InfSet.sInf.{u1} α (CompleteSemilatticeInf.toHasInf.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1)) s)) (Set.iInter.{u1, succ u1} α α (fun (a : α) => Set.iInter.{u1, 0} α (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) => Set.Iic.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) a)))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : CompleteLattice.{u1} α] (s : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.Iic.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (InfSet.sInf.{u1} α (CompleteLattice.toInfSet.{u1} α _inst_1) s)) (Set.iInter.{u1, succ u1} α α (fun (a : α) => Set.iInter.{u1, 0} α (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) a s) (fun (H : Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) a s) => Set.Iic.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) a)))
-Case conversion may be inaccurate. Consider using '#align set.Iic_Inf Set.Iic_sInfₓ'. -/
theorem Iic_sInf (s : Set α) : Iic (sInf s) = ⋂ a ∈ s, Iic a := by rw [sInf_eq_iInf, Iic_infi₂]
#align set.Iic_Inf Set.Iic_sInf
@@ -3953,12 +2291,6 @@ namespace Set
variable (t : α → Set β)
-/- warning: set.bUnion_diff_bUnion_subset -> Set.biUnion_diff_biUnion_subset is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (t : α -> (Set.{u2} β)) (s₁ : Set.{u1} α) (s₂ : Set.{u1} α), HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (SDiff.sdiff.{u2} (Set.{u2} β) (BooleanAlgebra.toHasSdiff.{u2} (Set.{u2} β) (Set.booleanAlgebra.{u2} β)) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s₁) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s₁) => t x))) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s₂) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s₂) => t x)))) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (SDiff.sdiff.{u1} (Set.{u1} α) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) s₁ s₂)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (SDiff.sdiff.{u1} (Set.{u1} α) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) s₁ s₂)) => t x)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (t : α -> (Set.{u1} β)) (s₁ : Set.{u2} α) (s₂ : Set.{u2} α), HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (SDiff.sdiff.{u1} (Set.{u1} β) (Set.instSDiffSet.{u1} β) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s₁) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s₁) => t x))) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s₂) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s₂) => t x)))) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (SDiff.sdiff.{u2} (Set.{u2} α) (Set.instSDiffSet.{u2} α) s₁ s₂)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (SDiff.sdiff.{u2} (Set.{u2} α) (Set.instSDiffSet.{u2} α) s₁ s₂)) => t x)))
-Case conversion may be inaccurate. Consider using '#align set.bUnion_diff_bUnion_subset Set.biUnion_diff_biUnion_subsetₓ'. -/
theorem biUnion_diff_biUnion_subset (s₁ s₂ : Set α) :
((⋃ x ∈ s₁, t x) \ ⋃ x ∈ s₂, t x) ⊆ ⋃ x ∈ s₁ \ s₂, t x :=
by
@@ -3976,12 +2308,6 @@ def sigmaToiUnion (x : Σi, t i) : ⋃ i, t i :=
#align set.sigma_to_Union Set.sigmaToiUnion
-/
-/- warning: set.sigma_to_Union_surjective -> Set.sigmaToiUnion_surjective is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (t : α -> (Set.{u2} β)), Function.Surjective.{max (succ u1) (succ u2), succ u2} (Sigma.{u1, u2} α (fun (i : α) => coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (t i))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (i : α) => t i))) (Set.sigmaToiUnion.{u1, u2} α β t)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (t : α -> (Set.{u1} β)), Function.Surjective.{max (succ u2) (succ u1), succ u1} (Sigma.{u2, u1} α (fun (i : α) => Set.Elem.{u1} β (t i))) (Set.Elem.{u1} β (Set.iUnion.{u1, succ u2} β α (fun (i : α) => t i))) (Set.sigmaToiUnion.{u2, u1} α β t)
-Case conversion may be inaccurate. Consider using '#align set.sigma_to_Union_surjective Set.sigmaToiUnion_surjectiveₓ'. -/
theorem sigmaToiUnion_surjective : Surjective (sigmaToiUnion t)
| ⟨b, hb⟩ =>
have : ∃ a, b ∈ t a := by simpa using hb
@@ -3989,12 +2315,6 @@ theorem sigmaToiUnion_surjective : Surjective (sigmaToiUnion t)
⟨⟨a, b, hb⟩, rfl⟩
#align set.sigma_to_Union_surjective Set.sigmaToiUnion_surjective
-/- warning: set.sigma_to_Union_injective -> Set.sigmaToiUnion_injective is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (t : α -> (Set.{u2} β)), (forall (i : α) (j : α), (Ne.{succ u1} α i j) -> (Disjoint.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.completeBooleanAlgebra.{u2} β)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u2} (Set.{u2} β) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u2} (Set.{u2} β) (Set.booleanAlgebra.{u2} β))) (t i) (t j))) -> (Function.Injective.{max (succ u1) (succ u2), succ u2} (Sigma.{u1, u2} α (fun (i : α) => coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (t i))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (i : α) => t i))) (Set.sigmaToiUnion.{u1, u2} α β t))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (t : α -> (Set.{u1} β)), (forall (i : α) (j : α), (Ne.{succ u2} α i j) -> (Disjoint.{u1} (Set.{u1} β) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} β) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} β) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} β) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} β) (Set.instCompleteBooleanAlgebraSet.{u1} β)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} β) (Preorder.toLE.{u1} (Set.{u1} β) (PartialOrder.toPreorder.{u1} (Set.{u1} β) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} β) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} β) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} β) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} β) (Set.instCompleteBooleanAlgebraSet.{u1} β)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} β) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} β) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} β) (Set.instCompleteBooleanAlgebraSet.{u1} β)))))) (t i) (t j))) -> (Function.Injective.{max (succ u2) (succ u1), succ u1} (Sigma.{u2, u1} α (fun (i : α) => Set.Elem.{u1} β (t i))) (Set.Elem.{u1} β (Set.iUnion.{u1, succ u2} β α (fun (i : α) => t i))) (Set.sigmaToiUnion.{u2, u1} α β t))
-Case conversion may be inaccurate. Consider using '#align set.sigma_to_Union_injective Set.sigmaToiUnion_injectiveₓ'. -/
theorem sigmaToiUnion_injective (h : ∀ i j, i ≠ j → Disjoint (t i) (t j)) :
Injective (sigmaToiUnion t)
| ⟨a₁, b₁, h₁⟩, ⟨a₂, b₂, h₂⟩, Eq =>
@@ -4006,23 +2326,11 @@ theorem sigmaToiUnion_injective (h : ∀ i j, i ≠ j → Disjoint (t i) (t j))
Sigma.eq a_eq <| Subtype.eq <| by subst b_eq <;> subst a_eq
#align set.sigma_to_Union_injective Set.sigmaToiUnion_injective
-/- warning: set.sigma_to_Union_bijective -> Set.sigmaToiUnion_bijective is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (t : α -> (Set.{u2} β)), (forall (i : α) (j : α), (Ne.{succ u1} α i j) -> (Disjoint.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.completeBooleanAlgebra.{u2} β)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u2} (Set.{u2} β) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u2} (Set.{u2} β) (Set.booleanAlgebra.{u2} β))) (t i) (t j))) -> (Function.Bijective.{max (succ u1) (succ u2), succ u2} (Sigma.{u1, u2} α (fun (i : α) => coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (t i))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (i : α) => t i))) (Set.sigmaToiUnion.{u1, u2} α β t))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (t : α -> (Set.{u1} β)), (forall (i : α) (j : α), (Ne.{succ u2} α i j) -> (Disjoint.{u1} (Set.{u1} β) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} β) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} β) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} β) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} β) (Set.instCompleteBooleanAlgebraSet.{u1} β)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} β) (Preorder.toLE.{u1} (Set.{u1} β) (PartialOrder.toPreorder.{u1} (Set.{u1} β) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} β) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} β) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} β) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} β) (Set.instCompleteBooleanAlgebraSet.{u1} β)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} β) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} β) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} β) (Set.instCompleteBooleanAlgebraSet.{u1} β)))))) (t i) (t j))) -> (Function.Bijective.{max (succ u2) (succ u1), succ u1} (Sigma.{u2, u1} α (fun (i : α) => Set.Elem.{u1} β (t i))) (Set.Elem.{u1} β (Set.iUnion.{u1, succ u2} β α (fun (i : α) => t i))) (Set.sigmaToiUnion.{u2, u1} α β t))
-Case conversion may be inaccurate. Consider using '#align set.sigma_to_Union_bijective Set.sigmaToiUnion_bijectiveₓ'. -/
theorem sigmaToiUnion_bijective (h : ∀ i j, i ≠ j → Disjoint (t i) (t j)) :
Bijective (sigmaToiUnion t) :=
⟨sigmaToiUnion_injective t h, sigmaToiUnion_surjective t⟩
#align set.sigma_to_Union_bijective Set.sigmaToiUnion_bijective
-/- warning: set.Union_eq_sigma_of_disjoint -> Set.unionEqSigmaOfDisjoint is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {t : α -> (Set.{u2} β)}, (forall (i : α) (j : α), (Ne.{succ u1} α i j) -> (Disjoint.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.completeBooleanAlgebra.{u2} β)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u2} (Set.{u2} β) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u2} (Set.{u2} β) (Set.booleanAlgebra.{u2} β))) (t i) (t j))) -> (Equiv.{succ u2, max (succ u1) (succ u2)} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (i : α) => t i))) (Sigma.{u1, u2} α (fun (i : α) => coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (t i))))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {t : α -> (Set.{u2} β)}, (forall (i : α) (j : α), (Ne.{succ u1} α i j) -> (Disjoint.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.instCompleteBooleanAlgebraSet.{u2} β)))))) (BoundedOrder.toOrderBot.{u2} (Set.{u2} β) (Preorder.toLE.{u2} (Set.{u2} β) (PartialOrder.toPreorder.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.instCompleteBooleanAlgebraSet.{u2} β)))))))) (CompleteLattice.toBoundedOrder.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.instCompleteBooleanAlgebraSet.{u2} β)))))) (t i) (t j))) -> (Equiv.{succ u2, max (succ u2) (succ u1)} (Set.Elem.{u2} β (Set.iUnion.{u2, succ u1} β α (fun (i : α) => t i))) (Sigma.{u1, u2} α (fun (i : α) => Set.Elem.{u2} β (t i))))
-Case conversion may be inaccurate. Consider using '#align set.Union_eq_sigma_of_disjoint Set.unionEqSigmaOfDisjointₓ'. -/
/-- Equivalence between a disjoint union and a dependent sum. -/
noncomputable def unionEqSigmaOfDisjoint {t : α → Set β} (h : ∀ i j, i ≠ j → Disjoint (t i) (t j)) :
(⋃ i, t i) ≃ Σi, t i :=
@@ -4041,23 +2349,11 @@ theorem iInter_ge_eq_iInter_nat_add (u : ℕ → Set α) (n : ℕ) : (⋂ i ≥
#align set.Inter_ge_eq_Inter_nat_add Set.iInter_ge_eq_iInter_nat_add
-/
-/- warning: monotone.Union_nat_add -> Monotone.iUnion_nat_add is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {f : Nat -> (Set.{u1} α)}, (Monotone.{0, u1} Nat (Set.{u1} α) (PartialOrder.toPreorder.{0} Nat (SemilatticeInf.toPartialOrder.{0} Nat (Lattice.toSemilatticeInf.{0} Nat (LinearOrder.toLattice.{0} Nat Nat.linearOrder)))) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α))))))) f) -> (forall (k : Nat), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, 1} α Nat (fun (n : Nat) => f (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n k))) (Set.iUnion.{u1, 1} α Nat (fun (n : Nat) => f n)))
-but is expected to have type
- forall {α : Type.{u1}} {f : Nat -> (Set.{u1} α)}, (Monotone.{0, u1} Nat (Set.{u1} α) (PartialOrder.toPreorder.{0} Nat (SemilatticeInf.toPartialOrder.{0} Nat (Lattice.toSemilatticeInf.{0} Nat (DistribLattice.toLattice.{0} Nat instDistribLatticeNat)))) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) f) -> (forall (k : Nat), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, 1} α Nat (fun (n : Nat) => f (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n k))) (Set.iUnion.{u1, 1} α Nat (fun (n : Nat) => f n)))
-Case conversion may be inaccurate. Consider using '#align monotone.Union_nat_add Monotone.iUnion_nat_addₓ'. -/
theorem Monotone.iUnion_nat_add {f : ℕ → Set α} (hf : Monotone f) (k : ℕ) :
(⋃ n, f (n + k)) = ⋃ n, f n :=
hf.iSup_nat_add k
#align monotone.Union_nat_add Monotone.iUnion_nat_add
-/- warning: antitone.Inter_nat_add -> Antitone.iInter_nat_add is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {f : Nat -> (Set.{u1} α)}, (Antitone.{0, u1} Nat (Set.{u1} α) (PartialOrder.toPreorder.{0} Nat (SemilatticeInf.toPartialOrder.{0} Nat (Lattice.toSemilatticeInf.{0} Nat (LinearOrder.toLattice.{0} Nat Nat.linearOrder)))) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α))))))) f) -> (forall (k : Nat), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, 1} α Nat (fun (n : Nat) => f (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n k))) (Set.iInter.{u1, 1} α Nat (fun (n : Nat) => f n)))
-but is expected to have type
- forall {α : Type.{u1}} {f : Nat -> (Set.{u1} α)}, (Antitone.{0, u1} Nat (Set.{u1} α) (PartialOrder.toPreorder.{0} Nat (SemilatticeInf.toPartialOrder.{0} Nat (Lattice.toSemilatticeInf.{0} Nat (DistribLattice.toLattice.{0} Nat instDistribLatticeNat)))) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) f) -> (forall (k : Nat), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, 1} α Nat (fun (n : Nat) => f (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n k))) (Set.iInter.{u1, 1} α Nat (fun (n : Nat) => f n)))
-Case conversion may be inaccurate. Consider using '#align antitone.Inter_nat_add Antitone.iInter_nat_addₓ'. -/
theorem Antitone.iInter_nat_add {f : ℕ → Set α} (hf : Antitone f) (k : ℕ) :
(⋂ n, f (n + k)) = ⋂ n, f n :=
hf.iInf_nat_add k
@@ -4071,22 +2367,10 @@ theorem iUnion_iInter_ge_nat_add (f : ℕ → Set α) (k : ℕ) :
#align set.Union_Inter_ge_nat_add Set.iUnion_iInter_ge_nat_add
-/
-/- warning: set.union_Union_nat_succ -> Set.union_iUnion_nat_succ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (u : Nat -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (u (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) (Set.iUnion.{u1, 1} α Nat (fun (i : Nat) => u (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) i (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))) (Set.iUnion.{u1, 1} α Nat (fun (i : Nat) => u i))
-but is expected to have type
- forall {α : Type.{u1}} (u : Nat -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (u (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))) (Set.iUnion.{u1, 1} α Nat (fun (i : Nat) => u (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) i (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))) (Set.iUnion.{u1, 1} α Nat (fun (i : Nat) => u i))
-Case conversion may be inaccurate. Consider using '#align set.union_Union_nat_succ Set.union_iUnion_nat_succₓ'. -/
theorem union_iUnion_nat_succ (u : ℕ → Set α) : (u 0 ∪ ⋃ i, u (i + 1)) = ⋃ i, u i :=
sup_iSup_nat_succ u
#align set.union_Union_nat_succ Set.union_iUnion_nat_succ
-/- warning: set.inter_Inter_nat_succ -> Set.inter_iInter_nat_succ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (u : Nat -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (u (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) (Set.iInter.{u1, 1} α Nat (fun (i : Nat) => u (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) i (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))) (Set.iInter.{u1, 1} α Nat (fun (i : Nat) => u i))
-but is expected to have type
- forall {α : Type.{u1}} (u : Nat -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (u (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))) (Set.iInter.{u1, 1} α Nat (fun (i : Nat) => u (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) i (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))) (Set.iInter.{u1, 1} α Nat (fun (i : Nat) => u i))
-Case conversion may be inaccurate. Consider using '#align set.inter_Inter_nat_succ Set.inter_iInter_nat_succₓ'. -/
theorem inter_iInter_nat_succ (u : ℕ → Set α) : (u 0 ∩ ⋂ i, u (i + 1)) = ⋂ i, u i :=
inf_iInf_nat_succ u
#align set.inter_Inter_nat_succ Set.inter_iInter_nat_succ
@@ -4097,42 +2381,18 @@ open Set
variable [CompleteLattice β]
-/- warning: supr_Union -> iSup_iUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} [_inst_1 : CompleteLattice.{u2} β] (s : ι -> (Set.{u1} α)) (f : α -> β), Eq.{succ u2} β (iSup.{u2, succ u1} β (CompleteSemilatticeSup.toHasSup.{u2} β (CompleteLattice.toCompleteSemilatticeSup.{u2} β _inst_1)) α (fun (a : α) => iSup.{u2, 0} β (CompleteSemilatticeSup.toHasSup.{u2} β (CompleteLattice.toCompleteSemilatticeSup.{u2} β _inst_1)) (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) => f a))) (iSup.{u2, u3} β (CompleteSemilatticeSup.toHasSup.{u2} β (CompleteLattice.toCompleteSemilatticeSup.{u2} β _inst_1)) ι (fun (i : ι) => iSup.{u2, succ u1} β (CompleteSemilatticeSup.toHasSup.{u2} β (CompleteLattice.toCompleteSemilatticeSup.{u2} β _inst_1)) α (fun (a : α) => iSup.{u2, 0} β (CompleteSemilatticeSup.toHasSup.{u2} β (CompleteLattice.toCompleteSemilatticeSup.{u2} β _inst_1)) (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i)) => f a))))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : CompleteLattice.{u2} β] (s : ι -> (Set.{u3} α)) (f : α -> β), Eq.{succ u2} β (iSup.{u2, succ u3} β (CompleteLattice.toSupSet.{u2} β _inst_1) α (fun (a : α) => iSup.{u2, 0} β (CompleteLattice.toSupSet.{u2} β _inst_1) (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i))) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i))) => f a))) (iSup.{u2, u1} β (CompleteLattice.toSupSet.{u2} β _inst_1) ι (fun (i : ι) => iSup.{u2, succ u3} β (CompleteLattice.toSupSet.{u2} β _inst_1) α (fun (a : α) => iSup.{u2, 0} β (CompleteLattice.toSupSet.{u2} β _inst_1) (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i)) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i)) => f a))))
-Case conversion may be inaccurate. Consider using '#align supr_Union iSup_iUnionₓ'. -/
theorem iSup_iUnion (s : ι → Set α) (f : α → β) : (⨆ a ∈ ⋃ i, s i, f a) = ⨆ (i) (a ∈ s i), f a := by
rw [iSup_comm]; simp_rw [mem_Union, iSup_exists]
#align supr_Union iSup_iUnion
-/- warning: infi_Union -> iInf_iUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} [_inst_1 : CompleteLattice.{u2} β] (s : ι -> (Set.{u1} α)) (f : α -> β), Eq.{succ u2} β (iInf.{u2, succ u1} β (CompleteSemilatticeInf.toHasInf.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_1)) α (fun (a : α) => iInf.{u2, 0} β (CompleteSemilatticeInf.toHasInf.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_1)) (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) => f a))) (iInf.{u2, u3} β (CompleteSemilatticeInf.toHasInf.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_1)) ι (fun (i : ι) => iInf.{u2, succ u1} β (CompleteSemilatticeInf.toHasInf.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_1)) α (fun (a : α) => iInf.{u2, 0} β (CompleteSemilatticeInf.toHasInf.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_1)) (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i)) => f a))))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : CompleteLattice.{u2} β] (s : ι -> (Set.{u3} α)) (f : α -> β), Eq.{succ u2} β (iInf.{u2, succ u3} β (CompleteLattice.toInfSet.{u2} β _inst_1) α (fun (a : α) => iInf.{u2, 0} β (CompleteLattice.toInfSet.{u2} β _inst_1) (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i))) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i))) => f a))) (iInf.{u2, u1} β (CompleteLattice.toInfSet.{u2} β _inst_1) ι (fun (i : ι) => iInf.{u2, succ u3} β (CompleteLattice.toInfSet.{u2} β _inst_1) α (fun (a : α) => iInf.{u2, 0} β (CompleteLattice.toInfSet.{u2} β _inst_1) (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i)) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i)) => f a))))
-Case conversion may be inaccurate. Consider using '#align infi_Union iInf_iUnionₓ'. -/
theorem iInf_iUnion (s : ι → Set α) (f : α → β) : (⨅ a ∈ ⋃ i, s i, f a) = ⨅ (i) (a ∈ s i), f a :=
@iSup_iUnion α βᵒᵈ _ _ s f
#align infi_Union iInf_iUnion
-/- warning: Sup_sUnion -> sSup_sUnion is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} [_inst_1 : CompleteLattice.{u1} β] (s : Set.{u1} (Set.{u1} β)), Eq.{succ u1} β (SupSet.sSup.{u1} β (CompleteSemilatticeSup.toHasSup.{u1} β (CompleteLattice.toCompleteSemilatticeSup.{u1} β _inst_1)) (Set.sUnion.{u1} β s)) (iSup.{u1, succ u1} β (CompleteSemilatticeSup.toHasSup.{u1} β (CompleteLattice.toCompleteSemilatticeSup.{u1} β _inst_1)) (Set.{u1} β) (fun (t : Set.{u1} β) => iSup.{u1, 0} β (CompleteSemilatticeSup.toHasSup.{u1} β (CompleteLattice.toCompleteSemilatticeSup.{u1} β _inst_1)) (Membership.Mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.hasMem.{u1} (Set.{u1} β)) t s) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.hasMem.{u1} (Set.{u1} β)) t s) => SupSet.sSup.{u1} β (CompleteSemilatticeSup.toHasSup.{u1} β (CompleteLattice.toCompleteSemilatticeSup.{u1} β _inst_1)) t)))
-but is expected to have type
- forall {β : Type.{u1}} [_inst_1 : CompleteLattice.{u1} β] (s : Set.{u1} (Set.{u1} β)), Eq.{succ u1} β (SupSet.sSup.{u1} β (CompleteLattice.toSupSet.{u1} β _inst_1) (Set.sUnion.{u1} β s)) (iSup.{u1, succ u1} β (CompleteLattice.toSupSet.{u1} β _inst_1) (Set.{u1} β) (fun (t : Set.{u1} β) => iSup.{u1, 0} β (CompleteLattice.toSupSet.{u1} β _inst_1) (Membership.mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.instMembershipSet.{u1} (Set.{u1} β)) t s) (fun (H : Membership.mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.instMembershipSet.{u1} (Set.{u1} β)) t s) => SupSet.sSup.{u1} β (CompleteLattice.toSupSet.{u1} β _inst_1) t)))
-Case conversion may be inaccurate. Consider using '#align Sup_sUnion sSup_sUnionₓ'. -/
theorem sSup_sUnion (s : Set (Set β)) : sSup (⋃₀ s) = ⨆ t ∈ s, sSup t := by
simp only [sUnion_eq_bUnion, sSup_eq_iSup, iSup_iUnion]
#align Sup_sUnion sSup_sUnion
-/- warning: Inf_sUnion -> sInf_sUnion is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} [_inst_1 : CompleteLattice.{u1} β] (s : Set.{u1} (Set.{u1} β)), Eq.{succ u1} β (InfSet.sInf.{u1} β (CompleteSemilatticeInf.toHasInf.{u1} β (CompleteLattice.toCompleteSemilatticeInf.{u1} β _inst_1)) (Set.sUnion.{u1} β s)) (iInf.{u1, succ u1} β (CompleteSemilatticeInf.toHasInf.{u1} β (CompleteLattice.toCompleteSemilatticeInf.{u1} β _inst_1)) (Set.{u1} β) (fun (t : Set.{u1} β) => iInf.{u1, 0} β (CompleteSemilatticeInf.toHasInf.{u1} β (CompleteLattice.toCompleteSemilatticeInf.{u1} β _inst_1)) (Membership.Mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.hasMem.{u1} (Set.{u1} β)) t s) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.hasMem.{u1} (Set.{u1} β)) t s) => InfSet.sInf.{u1} β (CompleteSemilatticeInf.toHasInf.{u1} β (CompleteLattice.toCompleteSemilatticeInf.{u1} β _inst_1)) t)))
-but is expected to have type
- forall {β : Type.{u1}} [_inst_1 : CompleteLattice.{u1} β] (s : Set.{u1} (Set.{u1} β)), Eq.{succ u1} β (InfSet.sInf.{u1} β (CompleteLattice.toInfSet.{u1} β _inst_1) (Set.sUnion.{u1} β s)) (iInf.{u1, succ u1} β (CompleteLattice.toInfSet.{u1} β _inst_1) (Set.{u1} β) (fun (t : Set.{u1} β) => iInf.{u1, 0} β (CompleteLattice.toInfSet.{u1} β _inst_1) (Membership.mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.instMembershipSet.{u1} (Set.{u1} β)) t s) (fun (H : Membership.mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.instMembershipSet.{u1} (Set.{u1} β)) t s) => InfSet.sInf.{u1} β (CompleteLattice.toInfSet.{u1} β _inst_1) t)))
-Case conversion may be inaccurate. Consider using '#align Inf_sUnion sInf_sUnionₓ'. -/
theorem sInf_sUnion (s : Set (Set β)) : sInf (⋃₀ s) = ⨅ t ∈ s, sInf t :=
@sSup_sUnion βᵒᵈ _ _
#align Inf_sUnion sInf_sUnion
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -746,10 +746,8 @@ lean 3 declaration is
but is expected to have type
forall {α : Type.{u2}} {ι : Sort.{u1}} (P : ι -> α -> Prop), Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => setOf.{u2} α (fun (x : α) => P i x))) (setOf.{u2} α (fun (x : α) => Exists.{u1} ι (fun (i : ι) => P i x)))
Case conversion may be inaccurate. Consider using '#align set.Union_set_of Set.iUnion_setOfₓ'. -/
-theorem iUnion_setOf (P : ι → α → Prop) : (⋃ i, { x : α | P i x }) = { x : α | ∃ i, P i x } :=
- by
- ext
- exact mem_Union
+theorem iUnion_setOf (P : ι → α → Prop) : (⋃ i, { x : α | P i x }) = { x : α | ∃ i, P i x } := by
+ ext; exact mem_Union
#align set.Union_set_of Set.iUnion_setOf
/- warning: set.Inter_set_of -> Set.iInter_setOf is a dubious translation:
@@ -758,10 +756,8 @@ lean 3 declaration is
but is expected to have type
forall {α : Type.{u2}} {ι : Sort.{u1}} (P : ι -> α -> Prop), Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => setOf.{u2} α (fun (x : α) => P i x))) (setOf.{u2} α (fun (x : α) => forall (i : ι), P i x))
Case conversion may be inaccurate. Consider using '#align set.Inter_set_of Set.iInter_setOfₓ'. -/
-theorem iInter_setOf (P : ι → α → Prop) : (⋂ i, { x : α | P i x }) = { x : α | ∀ i, P i x } :=
- by
- ext
- exact mem_Inter
+theorem iInter_setOf (P : ι → α → Prop) : (⋂ i, { x : α | P i x }) = { x : α | ∀ i, P i x } := by
+ ext; exact mem_Inter
#align set.Inter_set_of Set.iInter_setOf
/- warning: set.Union_congr_of_surjective -> Set.iUnion_congr_of_surjective is a dubious translation:
@@ -2384,11 +2380,8 @@ theorem iUnion_image_preimage_sigma_mk_eq_self {ι : Type _} {σ : ι → Type _
ext x
simp only [mem_Union, mem_image, mem_preimage]
constructor
- · rintro ⟨i, a, h, rfl⟩
- exact h
- · intro h
- cases' x with i a
- exact ⟨i, a, h, rfl⟩
+ · rintro ⟨i, a, h, rfl⟩; exact h
+ · intro h; cases' x with i a; exact ⟨i, a, h, rfl⟩
#align set.Union_image_preimage_sigma_mk_eq_self Set.iUnion_image_preimage_sigma_mk_eq_self
#print Set.Sigma.univ /-
@@ -2421,10 +2414,8 @@ but is expected to have type
forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β), Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Singleton.singleton.{u1, u1} β (Set.{u1} β) (Set.instSingletonSet.{u1} β) (f x))) (Set.range.{u1, succ u2} β α f)
Case conversion may be inaccurate. Consider using '#align set.Union_singleton_eq_range Set.iUnion_singleton_eq_rangeₓ'. -/
@[simp]
-theorem iUnion_singleton_eq_range {α β : Type _} (f : α → β) : (⋃ x : α, {f x}) = range f :=
- by
- ext x
- simp [@eq_comm _ x]
+theorem iUnion_singleton_eq_range {α β : Type _} (f : α → β) : (⋃ x : α, {f x}) = range f := by
+ ext x; simp [@eq_comm _ x]
#align set.Union_singleton_eq_range Set.iUnion_singleton_eq_range
#print Set.iUnion_of_singleton /-
@@ -2569,12 +2560,8 @@ theorem iUnion_range_eq_sUnion {α β : Type _} (C : Set (Set α)) {f : ∀ s :
(hf : ∀ s : C, Surjective (f s)) : (⋃ y : β, range fun s : C => (f s y).val) = ⋃₀ C :=
by
ext x; constructor
- · rintro ⟨s, ⟨y, rfl⟩, ⟨s, hs⟩, rfl⟩
- refine' ⟨_, hs, _⟩
- exact (f ⟨s, hs⟩ y).2
- · rintro ⟨s, hs, hx⟩
- cases' hf ⟨s, hs⟩ ⟨x, hx⟩ with y hy
- refine' ⟨_, ⟨y, rfl⟩, ⟨s, hs⟩, _⟩
+ · rintro ⟨s, ⟨y, rfl⟩, ⟨s, hs⟩, rfl⟩; refine' ⟨_, hs, _⟩; exact (f ⟨s, hs⟩ y).2
+ · rintro ⟨s, hs, hx⟩; cases' hf ⟨s, hs⟩ ⟨x, hx⟩ with y hy; refine' ⟨_, ⟨y, rfl⟩, ⟨s, hs⟩, _⟩
exact congr_arg Subtype.val hy
#align set.Union_range_eq_sUnion Set.iUnion_range_eq_sUnion
@@ -2588,10 +2575,8 @@ theorem iUnion_range_eq_iUnion (C : ι → Set α) {f : ∀ x : ι, β → C x}
(hf : ∀ x : ι, Surjective (f x)) : (⋃ y : β, range fun x : ι => (f x y).val) = ⋃ x, C x :=
by
ext x; rw [mem_Union, mem_Union]; constructor
- · rintro ⟨y, i, rfl⟩
- exact ⟨i, (f i y).2⟩
- · rintro ⟨i, hx⟩
- cases' hf i ⟨x, hx⟩ with y hy
+ · rintro ⟨y, i, rfl⟩; exact ⟨i, (f i y).2⟩
+ · rintro ⟨i, hx⟩; cases' hf i ⟨x, hx⟩ with y hy
exact ⟨y, i, congr_arg Subtype.val hy⟩
#align set.Union_range_eq_Union Set.iUnion_range_eq_iUnion
@@ -2786,10 +2771,8 @@ lean 3 declaration is
but is expected to have type
forall {α : Type.{u2}} {β : Type.{u1}} (S : Set.{u2} (Set.{u2} α)) (f : α -> β), HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (Set.image.{u2, u1} α β f (Set.sInter.{u2} α S)) (Set.iInter.{u1, succ u2} β (Set.{u2} α) (fun (s : Set.{u2} α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) s S) (fun (H : Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) s S) => Set.image.{u2, u1} α β f s)))
Case conversion may be inaccurate. Consider using '#align set.image_sInter_subset Set.image_sInter_subsetₓ'. -/
-theorem image_sInter_subset (S : Set (Set α)) (f : α → β) : f '' ⋂₀ S ⊆ ⋂ s ∈ S, f '' s :=
- by
- rw [sInter_eq_bInter]
- apply image_Inter₂_subset
+theorem image_sInter_subset (S : Set (Set α)) (f : α → β) : f '' ⋂₀ S ⊆ ⋂ s ∈ S, f '' s := by
+ rw [sInter_eq_bInter]; apply image_Inter₂_subset
#align set.image_sInter_subset Set.image_sInter_subset
/-! ### `restrict_preimage` -/
@@ -2813,11 +2796,7 @@ theorem injective_iff_injective_of_iUnion_eq_univ :
Injective f ↔ ∀ i, Injective ((U i).restrictPreimage f) :=
by
refine' ⟨fun H i => (U i).restrictPreimage_injective H, fun H x y e => _⟩
- obtain ⟨i, hi⟩ :=
- set.mem_Union.mp
- (show f x ∈ Set.iUnion U by
- rw [hU]
- triv)
+ obtain ⟨i, hi⟩ := set.mem_Union.mp (show f x ∈ Set.iUnion U by rw [hU]; triv)
injection @H i ⟨x, hi⟩ ⟨y, show f y ∈ U i from e ▸ hi⟩ (Subtype.ext e)
#align set.injective_iff_injective_of_Union_eq_univ Set.injective_iff_injective_of_iUnion_eq_univ
@@ -2831,11 +2810,7 @@ theorem surjective_iff_surjective_of_iUnion_eq_univ :
Surjective f ↔ ∀ i, Surjective ((U i).restrictPreimage f) :=
by
refine' ⟨fun H i => (U i).restrictPreimage_surjective H, fun H x => _⟩
- obtain ⟨i, hi⟩ :=
- set.mem_Union.mp
- (show x ∈ Set.iUnion U by
- rw [hU]
- triv)
+ obtain ⟨i, hi⟩ := set.mem_Union.mp (show x ∈ Set.iUnion U by rw [hU]; triv)
exact ⟨_, congr_arg Subtype.val (H i ⟨x, hi⟩).choose_spec⟩
#align set.surjective_iff_surjective_of_Union_eq_univ Set.surjective_iff_surjective_of_iUnion_eq_univ
@@ -2869,9 +2844,7 @@ theorem InjOn.image_iInter_eq [Nonempty ι] {s : ι → Set α} {f : α → β}
simp only [mem_Inter, mem_image_iff_bex] at hy
choose x hx hy using hy
refine' ⟨x default, mem_Inter.2 fun i => _, hy _⟩
- suffices x default = x i by
- rw [this]
- apply hx
+ suffices x default = x i by rw [this]; apply hx
replace hx : ∀ i, x i ∈ ⋃ j, s j := fun i => (subset_Union _ _) (hx i)
apply h (hx _) (hx _)
simp only [hy]
@@ -3292,10 +3265,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align set.prod_Union Set.prod_iUnionₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem prod_iUnion {s : Set α} {t : ι → Set β} : (s ×ˢ ⋃ i, t i) = ⋃ i, s ×ˢ t i :=
- by
- ext
- simp
+theorem prod_iUnion {s : Set α} {t : ι → Set β} : (s ×ˢ ⋃ i, t i) = ⋃ i, s ×ˢ t i := by ext; simp
#align set.prod_Union Set.prod_iUnion
/- warning: set.prod_Union₂ -> Set.prod_iUnion₂ is a dubious translation:
@@ -3332,9 +3302,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align set.Union_prod_const Set.iUnion_prod_constₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem iUnion_prod_const {s : ι → Set α} {t : Set β} : (⋃ i, s i) ×ˢ t = ⋃ i, s i ×ˢ t :=
- by
- ext
+theorem iUnion_prod_const {s : ι → Set α} {t : Set β} : (⋃ i, s i) ×ˢ t = ⋃ i, s i ×ˢ t := by ext;
simp
#align set.Union_prod_const Set.iUnion_prod_const
@@ -3374,10 +3342,7 @@ Case conversion may be inaccurate. Consider using '#align set.Union_prod Set.iUn
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem iUnion_prod {ι ι' α β} (s : ι → Set α) (t : ι' → Set β) :
- (⋃ x : ι × ι', s x.1 ×ˢ t x.2) = (⋃ i : ι, s i) ×ˢ ⋃ i : ι', t i :=
- by
- ext
- simp
+ (⋃ x : ι × ι', s x.1 ×ˢ t x.2) = (⋃ i : ι, s i) ×ˢ ⋃ i : ι', t i := by ext; simp
#align set.Union_prod Set.iUnion_prod
/- warning: set.Union_prod_of_monotone -> Set.iUnion_prod_of_monotone is a dubious translation:
@@ -3392,10 +3357,8 @@ theorem iUnion_prod_of_monotone [SemilatticeSup α] {s : α → Set β} {t : α
(ht : Monotone t) : (⋃ x, s x ×ˢ t x) = (⋃ x, s x) ×ˢ ⋃ x, t x :=
by
ext ⟨z, w⟩; simp only [mem_prod, mem_Union, exists_imp, and_imp, iff_def]; constructor
- · intro x hz hw
- exact ⟨⟨x, hz⟩, x, hw⟩
- · intro x hz x' hw
- exact ⟨x ⊔ x', hs le_sup_left hz, ht le_sup_right hw⟩
+ · intro x hz hw; exact ⟨⟨x, hz⟩, x, hw⟩
+ · intro x hz x' hw; exact ⟨x ⊔ x', hs le_sup_left hz, ht le_sup_right hw⟩
#align set.Union_prod_of_monotone Set.iUnion_prod_of_monotone
/- warning: set.sInter_prod_sInter_subset -> Set.sInter_prod_sInter_subset is a dubious translation:
@@ -3467,18 +3430,14 @@ lean 3 declaration is
but is expected to have type
forall {α : Type.{u2}} {β : Type.{u1}} {γ : Type.{u3}} (f : α -> β -> γ) {s : Set.{u2} α} {t : Set.{u1} β}, Eq.{succ u3} (Set.{u3} γ) (Set.iUnion.{u3, succ u2} γ α (fun (a : α) => Set.iUnion.{u3, 0} γ (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) => Set.image.{u1, u3} β γ (f a) t))) (Set.image2.{u2, u1, u3} α β γ f s t)
Case conversion may be inaccurate. Consider using '#align set.Union_image_left Set.iUnion_image_leftₓ'. -/
-theorem iUnion_image_left : (⋃ a ∈ s, f a '' t) = image2 f s t :=
- by
- ext y
+theorem iUnion_image_left : (⋃ a ∈ s, f a '' t) = image2 f s t := by ext y;
constructor <;> simp only [mem_Union] <;> rintro ⟨a, ha, x, hx, ax⟩ <;> exact ⟨a, x, ha, hx, ax⟩
#align set.Union_image_left Set.iUnion_image_left
#print Set.iUnion_image_right /-
theorem iUnion_image_right : (⋃ b ∈ t, (fun a => f a b) '' s) = image2 f s t :=
by
- ext y
- constructor <;> simp only [mem_Union] <;> rintro ⟨a, b, c, d, e⟩
- exact ⟨c, a, d, b, e⟩
+ ext y; constructor <;> simp only [mem_Union] <;> rintro ⟨a, b, c, d, e⟩; exact ⟨c, a, d, b, e⟩
exact ⟨b, d, a, c, e⟩
#align set.Union_image_right Set.iUnion_image_right
-/
@@ -3536,9 +3495,7 @@ but is expected to have type
forall {α : Type.{u4}} {β : Type.{u3}} {γ : Type.{u2}} {ι : Sort.{u1}} (f : α -> β -> γ) (s : ι -> (Set.{u4} α)) (t : Set.{u3} β), HasSubset.Subset.{u2} (Set.{u2} γ) (Set.instHasSubsetSet.{u2} γ) (Set.image2.{u4, u3, u2} α β γ f (Set.iInter.{u4, u1} α ι (fun (i : ι) => s i)) t) (Set.iInter.{u2, u1} γ ι (fun (i : ι) => Set.image2.{u4, u3, u2} α β γ f (s i) t))
Case conversion may be inaccurate. Consider using '#align set.image2_Inter_subset_left Set.image2_iInter_subset_leftₓ'. -/
theorem image2_iInter_subset_left (s : ι → Set α) (t : Set β) :
- image2 f (⋂ i, s i) t ⊆ ⋂ i, image2 f (s i) t :=
- by
- simp_rw [image2_subset_iff, mem_Inter]
+ image2 f (⋂ i, s i) t ⊆ ⋂ i, image2 f (s i) t := by simp_rw [image2_subset_iff, mem_Inter];
exact fun x hx y hy i => mem_image2_of_mem (hx _) hy
#align set.image2_Inter_subset_left Set.image2_iInter_subset_left
@@ -3549,9 +3506,7 @@ but is expected to have type
forall {α : Type.{u4}} {β : Type.{u3}} {γ : Type.{u2}} {ι : Sort.{u1}} (f : α -> β -> γ) (s : Set.{u4} α) (t : ι -> (Set.{u3} β)), HasSubset.Subset.{u2} (Set.{u2} γ) (Set.instHasSubsetSet.{u2} γ) (Set.image2.{u4, u3, u2} α β γ f s (Set.iInter.{u3, u1} β ι (fun (i : ι) => t i))) (Set.iInter.{u2, u1} γ ι (fun (i : ι) => Set.image2.{u4, u3, u2} α β γ f s (t i)))
Case conversion may be inaccurate. Consider using '#align set.image2_Inter_subset_right Set.image2_iInter_subset_rightₓ'. -/
theorem image2_iInter_subset_right (s : Set α) (t : ι → Set β) :
- image2 f s (⋂ i, t i) ⊆ ⋂ i, image2 f s (t i) :=
- by
- simp_rw [image2_subset_iff, mem_Inter]
+ image2 f s (⋂ i, t i) ⊆ ⋂ i, image2 f s (t i) := by simp_rw [image2_subset_iff, mem_Inter];
exact fun x hx y hy i => mem_image2_of_mem hx (hy _)
#align set.image2_Inter_subset_right Set.image2_iInter_subset_right
@@ -3564,10 +3519,8 @@ Case conversion may be inaccurate. Consider using '#align set.image2_Inter₂_su
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem image2_iInter₂_subset_left (s : ∀ i, κ i → Set α) (t : Set β) :
- image2 f (⋂ (i) (j), s i j) t ⊆ ⋂ (i) (j), image2 f (s i j) t :=
- by
- simp_rw [image2_subset_iff, mem_Inter]
- exact fun x hx y hy i j => mem_image2_of_mem (hx _ _) hy
+ image2 f (⋂ (i) (j), s i j) t ⊆ ⋂ (i) (j), image2 f (s i j) t := by
+ simp_rw [image2_subset_iff, mem_Inter]; exact fun x hx y hy i j => mem_image2_of_mem (hx _ _) hy
#align set.image2_Inter₂_subset_left Set.image2_iInter₂_subset_left
/- warning: set.image2_Inter₂_subset_right -> Set.image2_iInter₂_subset_right is a dubious translation:
@@ -3579,10 +3532,8 @@ Case conversion may be inaccurate. Consider using '#align set.image2_Inter₂_su
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem image2_iInter₂_subset_right (s : Set α) (t : ∀ i, κ i → Set β) :
- image2 f s (⋂ (i) (j), t i j) ⊆ ⋂ (i) (j), image2 f s (t i j) :=
- by
- simp_rw [image2_subset_iff, mem_Inter]
- exact fun x hx y hy i j => mem_image2_of_mem hx (hy _ _)
+ image2 f s (⋂ (i) (j), t i j) ⊆ ⋂ (i) (j), image2 f s (t i j) := by
+ simp_rw [image2_subset_iff, mem_Inter]; exact fun x hx y hy i j => mem_image2_of_mem hx (hy _ _)
#align set.image2_Inter₂_subset_right Set.image2_iInter₂_subset_right
/- warning: set.image2_eq_Union -> Set.image2_eq_iUnion is a dubious translation:
@@ -3732,11 +3683,8 @@ theorem prod_eq_seq {s : Set α} {t : Set β} : s ×ˢ t = (Prod.mk '' s).seq t
by
ext ⟨a, b⟩
constructor
- · rintro ⟨ha, hb⟩
- exact ⟨Prod.mk a, ⟨a, ha, rfl⟩, b, hb, rfl⟩
- · rintro ⟨f, ⟨x, hx, rfl⟩, y, hy, eq⟩
- rw [← Eq]
- exact ⟨hx, hy⟩
+ · rintro ⟨ha, hb⟩; exact ⟨Prod.mk a, ⟨a, ha, rfl⟩, b, hb, rfl⟩
+ · rintro ⟨f, ⟨x, hx, rfl⟩, y, hy, eq⟩; rw [← Eq]; exact ⟨hx, hy⟩
#align set.prod_eq_seq Set.prod_eq_seq
/- warning: set.prod_image_seq_comm -> Set.prod_image_seq_comm is a dubious translation:
@@ -3756,10 +3704,8 @@ lean 3 declaration is
but is expected to have type
forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} (f : α -> β -> γ) (s : Set.{u3} α) (t : Set.{u2} β), Eq.{succ u1} (Set.{u1} γ) (Set.image2.{u3, u2, u1} α β γ f s t) (Set.seq.{u2, u1} β γ (Set.image.{u3, max u1 u2} α (β -> γ) f s) t)
Case conversion may be inaccurate. Consider using '#align set.image2_eq_seq Set.image2_eq_seqₓ'. -/
-theorem image2_eq_seq (f : α → β → γ) (s : Set α) (t : Set β) : image2 f s t = seq (f '' s) t :=
- by
- ext
- simp
+theorem image2_eq_seq (f : α → β → γ) (s : Set α) (t : Set β) : image2 f s t = seq (f '' s) t := by
+ ext; simp
#align set.image2_eq_seq Set.image2_eq_seq
end Seq
@@ -3774,10 +3720,7 @@ lean 3 declaration is
but is expected to have type
forall {α : Type.{u2}} {π : α -> Type.{u1}} (i : Set.{u2} α) (s : forall (a : α), Set.{u1} (π a)), Eq.{max (succ u2) (succ u1)} (Set.{max u2 u1} (forall (i : α), π i)) (Set.pi.{u2, u1} α (fun (a : α) => π a) i s) (Set.iInter.{max u2 u1, succ u2} (forall (i : α), π i) α (fun (a : α) => Set.iInter.{max u2 u1, 0} (forall (i : α), π i) (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a i) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a i) => Set.preimage.{max u2 u1, u1} (forall (i : α), π i) (π a) (Function.eval.{succ u2, succ u1} α (fun (i : α) => π i) a) (s a))))
Case conversion may be inaccurate. Consider using '#align set.pi_def Set.pi_defₓ'. -/
-theorem pi_def (i : Set α) (s : ∀ a, Set (π a)) : pi i s = ⋂ a ∈ i, eval a ⁻¹' s a :=
- by
- ext
- simp
+theorem pi_def (i : Set α) (s : ∀ a, Set (π a)) : pi i s = ⋂ a ∈ i, eval a ⁻¹' s a := by ext; simp
#align set.pi_def Set.pi_def
#print Set.univ_pi_eq_iInter /-
@@ -3808,9 +3751,7 @@ but is expected to have type
forall {α : Type.{u2}} {ι : Sort.{u1}} {π : α -> Type.{u3}} (t : forall (i : α), ι -> (Set.{u3} (π i))), Eq.{max (succ u2) (succ u3)} (Set.{max u3 u2} (forall (i : α), π i)) (Set.iUnion.{max u3 u2, imax (succ u2) u1} (forall (i : α), π i) (α -> ι) (fun (x : α -> ι) => Set.pi.{u2, u3} α (fun (i : α) => π i) (Set.univ.{u2} α) (fun (i : α) => t i (x i)))) (Set.pi.{u2, u3} α (fun (i : α) => π i) (Set.univ.{u2} α) (fun (i : α) => Set.iUnion.{u3, u1} (π i) ι (fun (j : ι) => t i j)))
Case conversion may be inaccurate. Consider using '#align set.Union_univ_pi Set.iUnion_univ_piₓ'. -/
theorem iUnion_univ_pi (t : ∀ i, ι → Set (π i)) :
- (⋃ x : α → ι, pi univ fun i => t i (x i)) = pi univ fun i => ⋃ j : ι, t i j :=
- by
- ext
+ (⋃ x : α → ι, pi univ fun i => t i (x i)) = pi univ fun i => ⋃ j : ι, t i j := by ext;
simp [Classical.skolem]
#align set.Union_univ_pi Set.iUnion_univ_pi
@@ -4162,10 +4103,8 @@ lean 3 declaration is
but is expected to have type
forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : CompleteLattice.{u2} β] (s : ι -> (Set.{u3} α)) (f : α -> β), Eq.{succ u2} β (iSup.{u2, succ u3} β (CompleteLattice.toSupSet.{u2} β _inst_1) α (fun (a : α) => iSup.{u2, 0} β (CompleteLattice.toSupSet.{u2} β _inst_1) (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i))) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i))) => f a))) (iSup.{u2, u1} β (CompleteLattice.toSupSet.{u2} β _inst_1) ι (fun (i : ι) => iSup.{u2, succ u3} β (CompleteLattice.toSupSet.{u2} β _inst_1) α (fun (a : α) => iSup.{u2, 0} β (CompleteLattice.toSupSet.{u2} β _inst_1) (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i)) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i)) => f a))))
Case conversion may be inaccurate. Consider using '#align supr_Union iSup_iUnionₓ'. -/
-theorem iSup_iUnion (s : ι → Set α) (f : α → β) : (⨆ a ∈ ⋃ i, s i, f a) = ⨆ (i) (a ∈ s i), f a :=
- by
- rw [iSup_comm]
- simp_rw [mem_Union, iSup_exists]
+theorem iSup_iUnion (s : ι → Set α) (f : α → β) : (⨆ a ∈ ⋃ i, s i, f a) = ⨆ (i) (a ∈ s i), f a := by
+ rw [iSup_comm]; simp_rw [mem_Union, iSup_exists]
#align supr_Union iSup_iUnion
/- warning: infi_Union -> iInf_iUnion is a dubious translation:
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -1106,7 +1106,7 @@ theorem iUnion_inter_subset {ι α} {s t : ι → Set α} : (⋃ i, s i ∩ t i)
/- warning: set.Union_inter_of_monotone -> Set.iUnion_inter_of_monotone is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : Preorder.{u1} ι] [_inst_2 : IsDirected.{u1} ι (LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_1))] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (Monotone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) s) -> (Monotone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) t) -> (Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, succ u1} α ι (fun (i : ι) => Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (s i) (t i))) (Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (Set.iUnion.{u2, succ u1} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, succ u1} α ι (fun (i : ι) => t i))))
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : Preorder.{u1} ι] [_inst_2 : IsDirected.{u1} ι (LE.le.{u1} ι (Preorder.toHasLe.{u1} ι _inst_1))] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (Monotone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) s) -> (Monotone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) t) -> (Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, succ u1} α ι (fun (i : ι) => Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (s i) (t i))) (Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (Set.iUnion.{u2, succ u1} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, succ u1} α ι (fun (i : ι) => t i))))
but is expected to have type
forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : IsDirected.{u2} ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.9216 : ι) (x._@.Mathlib.Data.Set.Lattice._hyg.9218 : ι) => LE.le.{u2} ι (Preorder.toLE.{u2} ι _inst_1) x._@.Mathlib.Data.Set.Lattice._hyg.9216 x._@.Mathlib.Data.Set.Lattice._hyg.9218)] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (Monotone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) s) -> (Monotone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) t) -> (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s i) (t i))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => s i)) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => t i))))
Case conversion may be inaccurate. Consider using '#align set.Union_inter_of_monotone Set.iUnion_inter_of_monotoneₓ'. -/
@@ -1117,7 +1117,7 @@ theorem iUnion_inter_of_monotone {ι α} [Preorder ι] [IsDirected ι (· ≤ ·
/- warning: set.Union_inter_of_antitone -> Set.iUnion_inter_of_antitone is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : Preorder.{u1} ι] [_inst_2 : IsDirected.{u1} ι (Function.swap.{succ u1, succ u1, 1} ι ι (fun (ᾰ : ι) (ᾰ : ι) => Prop) (LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_1)))] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (Antitone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) s) -> (Antitone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) t) -> (Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, succ u1} α ι (fun (i : ι) => Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (s i) (t i))) (Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (Set.iUnion.{u2, succ u1} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, succ u1} α ι (fun (i : ι) => t i))))
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : Preorder.{u1} ι] [_inst_2 : IsDirected.{u1} ι (Function.swap.{succ u1, succ u1, 1} ι ι (fun (ᾰ : ι) (ᾰ : ι) => Prop) (LE.le.{u1} ι (Preorder.toHasLe.{u1} ι _inst_1)))] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (Antitone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) s) -> (Antitone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) t) -> (Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, succ u1} α ι (fun (i : ι) => Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (s i) (t i))) (Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (Set.iUnion.{u2, succ u1} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, succ u1} α ι (fun (i : ι) => t i))))
but is expected to have type
forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : IsDirected.{u2} ι (Function.swap.{succ u2, succ u2, 1} ι ι (fun (ᾰ : ι) (ᾰ : ι) => Prop) (fun (x._@.Mathlib.Data.Set.Lattice._hyg.9340 : ι) (x._@.Mathlib.Data.Set.Lattice._hyg.9342 : ι) => LE.le.{u2} ι (Preorder.toLE.{u2} ι _inst_1) x._@.Mathlib.Data.Set.Lattice._hyg.9340 x._@.Mathlib.Data.Set.Lattice._hyg.9342))] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (Antitone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) s) -> (Antitone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) t) -> (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s i) (t i))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => s i)) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => t i))))
Case conversion may be inaccurate. Consider using '#align set.Union_inter_of_antitone Set.iUnion_inter_of_antitoneₓ'. -/
@@ -1128,7 +1128,7 @@ theorem iUnion_inter_of_antitone {ι α} [Preorder ι] [IsDirected ι (swap (·
/- warning: set.Inter_union_of_monotone -> Set.iInter_union_of_monotone is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : Preorder.{u1} ι] [_inst_2 : IsDirected.{u1} ι (Function.swap.{succ u1, succ u1, 1} ι ι (fun (ᾰ : ι) (ᾰ : ι) => Prop) (LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_1)))] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (Monotone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) s) -> (Monotone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) t) -> (Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) (s i) (t i))) (Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => s i)) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => t i))))
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : Preorder.{u1} ι] [_inst_2 : IsDirected.{u1} ι (Function.swap.{succ u1, succ u1, 1} ι ι (fun (ᾰ : ι) (ᾰ : ι) => Prop) (LE.le.{u1} ι (Preorder.toHasLe.{u1} ι _inst_1)))] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (Monotone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) s) -> (Monotone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) t) -> (Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) (s i) (t i))) (Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => s i)) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => t i))))
but is expected to have type
forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : IsDirected.{u2} ι (Function.swap.{succ u2, succ u2, 1} ι ι (fun (ᾰ : ι) (ᾰ : ι) => Prop) (fun (x._@.Mathlib.Data.Set.Lattice._hyg.9464 : ι) (x._@.Mathlib.Data.Set.Lattice._hyg.9466 : ι) => LE.le.{u2} ι (Preorder.toLE.{u2} ι _inst_1) x._@.Mathlib.Data.Set.Lattice._hyg.9464 x._@.Mathlib.Data.Set.Lattice._hyg.9466))] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (Monotone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) s) -> (Monotone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) t) -> (Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (s i) (t i))) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => s i)) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => t i))))
Case conversion may be inaccurate. Consider using '#align set.Inter_union_of_monotone Set.iInter_union_of_monotoneₓ'. -/
@@ -1139,7 +1139,7 @@ theorem iInter_union_of_monotone {ι α} [Preorder ι] [IsDirected ι (swap (·
/- warning: set.Inter_union_of_antitone -> Set.iInter_union_of_antitone is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : Preorder.{u1} ι] [_inst_2 : IsDirected.{u1} ι (LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_1))] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (Antitone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) s) -> (Antitone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) t) -> (Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) (s i) (t i))) (Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => s i)) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => t i))))
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : Preorder.{u1} ι] [_inst_2 : IsDirected.{u1} ι (LE.le.{u1} ι (Preorder.toHasLe.{u1} ι _inst_1))] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (Antitone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) s) -> (Antitone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) t) -> (Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) (s i) (t i))) (Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => s i)) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => t i))))
but is expected to have type
forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : IsDirected.{u2} ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.9585 : ι) (x._@.Mathlib.Data.Set.Lattice._hyg.9587 : ι) => LE.le.{u2} ι (Preorder.toLE.{u2} ι _inst_1) x._@.Mathlib.Data.Set.Lattice._hyg.9585 x._@.Mathlib.Data.Set.Lattice._hyg.9587)] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (Antitone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) s) -> (Antitone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) t) -> (Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (s i) (t i))) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => s i)) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => t i))))
Case conversion may be inaccurate. Consider using '#align set.Inter_union_of_antitone Set.iInter_union_of_antitoneₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -77,201 +77,201 @@ instance : InfSet (Set α) :=
instance : SupSet (Set α) :=
⟨fun s => { a | ∃ t ∈ s, a ∈ t }⟩
-#print Set.interₛ /-
+#print Set.sInter /-
/-- Intersection of a set of sets. -/
-def interₛ (S : Set (Set α)) : Set α :=
- infₛ S
-#align set.sInter Set.interₛ
+def sInter (S : Set (Set α)) : Set α :=
+ sInf S
+#align set.sInter Set.sInter
-/
-#print Set.unionₛ /-
+#print Set.sUnion /-
/-- Union of a set of sets. -/
-def unionₛ (S : Set (Set α)) : Set α :=
- supₛ S
-#align set.sUnion Set.unionₛ
+def sUnion (S : Set (Set α)) : Set α :=
+ sSup S
+#align set.sUnion Set.sUnion
-/
-- mathport name: «expr⋂₀ »
-prefix:110 "⋂₀ " => interₛ
+prefix:110 "⋂₀ " => sInter
-#print Set.mem_interₛ /-
+#print Set.mem_sInter /-
@[simp]
-theorem mem_interₛ {x : α} {S : Set (Set α)} : x ∈ ⋂₀ S ↔ ∀ t ∈ S, x ∈ t :=
+theorem mem_sInter {x : α} {S : Set (Set α)} : x ∈ ⋂₀ S ↔ ∀ t ∈ S, x ∈ t :=
Iff.rfl
-#align set.mem_sInter Set.mem_interₛ
+#align set.mem_sInter Set.mem_sInter
-/
-/- warning: set.mem_sUnion -> Set.mem_unionₛ is a dubious translation:
+/- warning: set.mem_sUnion -> Set.mem_sUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {x : α} {S : Set.{u1} (Set.{u1} α)}, Iff (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.unionₛ.{u1} α S)) (Exists.{succ u1} (Set.{u1} α) (fun (t : Set.{u1} α) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) t S) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) t S) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x t)))
+ forall {α : Type.{u1}} {x : α} {S : Set.{u1} (Set.{u1} α)}, Iff (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.sUnion.{u1} α S)) (Exists.{succ u1} (Set.{u1} α) (fun (t : Set.{u1} α) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) t S) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) t S) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x t)))
but is expected to have type
- forall {α : Type.{u1}} {x : α} {S : Set.{u1} (Set.{u1} α)}, Iff (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (Set.unionₛ.{u1} α S)) (Exists.{succ u1} (Set.{u1} α) (fun (t : Set.{u1} α) => And (Membership.mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instMembershipSet.{u1} (Set.{u1} α)) t S) (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x t)))
-Case conversion may be inaccurate. Consider using '#align set.mem_sUnion Set.mem_unionₛₓ'. -/
+ forall {α : Type.{u1}} {x : α} {S : Set.{u1} (Set.{u1} α)}, Iff (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (Set.sUnion.{u1} α S)) (Exists.{succ u1} (Set.{u1} α) (fun (t : Set.{u1} α) => And (Membership.mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instMembershipSet.{u1} (Set.{u1} α)) t S) (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x t)))
+Case conversion may be inaccurate. Consider using '#align set.mem_sUnion Set.mem_sUnionₓ'. -/
@[simp]
-theorem mem_unionₛ {x : α} {S : Set (Set α)} : x ∈ ⋃₀ S ↔ ∃ t ∈ S, x ∈ t :=
+theorem mem_sUnion {x : α} {S : Set (Set α)} : x ∈ ⋃₀ S ↔ ∃ t ∈ S, x ∈ t :=
Iff.rfl
-#align set.mem_sUnion Set.mem_unionₛ
+#align set.mem_sUnion Set.mem_sUnion
-#print Set.unionᵢ /-
+#print Set.iUnion /-
/-- Indexed union of a family of sets -/
-def unionᵢ (s : ι → Set β) : Set β :=
- supᵢ s
-#align set.Union Set.unionᵢ
+def iUnion (s : ι → Set β) : Set β :=
+ iSup s
+#align set.Union Set.iUnion
-/
-#print Set.interᵢ /-
+#print Set.iInter /-
/-- Indexed intersection of a family of sets -/
-def interᵢ (s : ι → Set β) : Set β :=
- infᵢ s
-#align set.Inter Set.interᵢ
+def iInter (s : ι → Set β) : Set β :=
+ iInf s
+#align set.Inter Set.iInter
-/
-- mathport name: «expr⋃ , »
-notation3"⋃ "(...)", "r:(scoped f => unionᵢ f) => r
+notation3"⋃ "(...)", "r:(scoped f => iUnion f) => r
-- mathport name: «expr⋂ , »
-notation3"⋂ "(...)", "r:(scoped f => interᵢ f) => r
+notation3"⋂ "(...)", "r:(scoped f => iInter f) => r
-/- warning: set.Sup_eq_sUnion -> Set.supₛ_eq_unionₛ is a dubious translation:
+/- warning: set.Sup_eq_sUnion -> Set.sSup_eq_sUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (SupSet.supₛ.{u1} (Set.{u1} α) (Set.hasSup.{u1} α) S) (Set.unionₛ.{u1} α S)
+ forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (SupSet.sSup.{u1} (Set.{u1} α) (Set.hasSup.{u1} α) S) (Set.sUnion.{u1} α S)
but is expected to have type
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (SupSet.supₛ.{u1} (Set.{u1} α) (Set.instSupSetSet.{u1} α) S) (Set.unionₛ.{u1} α S)
-Case conversion may be inaccurate. Consider using '#align set.Sup_eq_sUnion Set.supₛ_eq_unionₛₓ'. -/
+ forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (SupSet.sSup.{u1} (Set.{u1} α) (Set.instSupSetSet.{u1} α) S) (Set.sUnion.{u1} α S)
+Case conversion may be inaccurate. Consider using '#align set.Sup_eq_sUnion Set.sSup_eq_sUnionₓ'. -/
@[simp]
-theorem supₛ_eq_unionₛ (S : Set (Set α)) : supₛ S = ⋃₀ S :=
+theorem sSup_eq_sUnion (S : Set (Set α)) : sSup S = ⋃₀ S :=
rfl
-#align set.Sup_eq_sUnion Set.supₛ_eq_unionₛ
+#align set.Sup_eq_sUnion Set.sSup_eq_sUnion
-#print Set.infₛ_eq_interₛ /-
+#print Set.sInf_eq_sInter /-
@[simp]
-theorem infₛ_eq_interₛ (S : Set (Set α)) : infₛ S = ⋂₀ S :=
+theorem sInf_eq_sInter (S : Set (Set α)) : sInf S = ⋂₀ S :=
rfl
-#align set.Inf_eq_sInter Set.infₛ_eq_interₛ
+#align set.Inf_eq_sInter Set.sInf_eq_sInter
-/
-/- warning: set.supr_eq_Union -> Set.supᵢ_eq_unionᵢ is a dubious translation:
+/- warning: set.supr_eq_Union -> Set.iSup_eq_iUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (supᵢ.{u1, u2} (Set.{u1} α) (Set.hasSup.{u1} α) ι s) (Set.unionᵢ.{u1, u2} α ι s)
+ forall {α : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (iSup.{u1, u2} (Set.{u1} α) (Set.hasSup.{u1} α) ι s) (Set.iUnion.{u1, u2} α ι s)
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} α)), Eq.{succ u2} (Set.{u2} α) (supᵢ.{u2, u1} (Set.{u2} α) (Set.instSupSetSet.{u2} α) ι s) (Set.unionᵢ.{u2, u1} α ι s)
-Case conversion may be inaccurate. Consider using '#align set.supr_eq_Union Set.supᵢ_eq_unionᵢₓ'. -/
+ forall {α : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} α)), Eq.{succ u2} (Set.{u2} α) (iSup.{u2, u1} (Set.{u2} α) (Set.instSupSetSet.{u2} α) ι s) (Set.iUnion.{u2, u1} α ι s)
+Case conversion may be inaccurate. Consider using '#align set.supr_eq_Union Set.iSup_eq_iUnionₓ'. -/
@[simp]
-theorem supᵢ_eq_unionᵢ (s : ι → Set α) : supᵢ s = unionᵢ s :=
+theorem iSup_eq_iUnion (s : ι → Set α) : iSup s = iUnion s :=
rfl
-#align set.supr_eq_Union Set.supᵢ_eq_unionᵢ
+#align set.supr_eq_Union Set.iSup_eq_iUnion
-/- warning: set.infi_eq_Inter -> Set.infᵢ_eq_interᵢ is a dubious translation:
+/- warning: set.infi_eq_Inter -> Set.iInf_eq_iInter is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (infᵢ.{u1, u2} (Set.{u1} α) (Set.hasInf.{u1} α) ι s) (Set.interᵢ.{u1, u2} α ι s)
+ forall {α : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (iInf.{u1, u2} (Set.{u1} α) (Set.hasInf.{u1} α) ι s) (Set.iInter.{u1, u2} α ι s)
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} α)), Eq.{succ u2} (Set.{u2} α) (infᵢ.{u2, u1} (Set.{u2} α) (Set.instInfSetSet.{u2} α) ι s) (Set.interᵢ.{u2, u1} α ι s)
-Case conversion may be inaccurate. Consider using '#align set.infi_eq_Inter Set.infᵢ_eq_interᵢₓ'. -/
+ forall {α : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} α)), Eq.{succ u2} (Set.{u2} α) (iInf.{u2, u1} (Set.{u2} α) (Set.instInfSetSet.{u2} α) ι s) (Set.iInter.{u2, u1} α ι s)
+Case conversion may be inaccurate. Consider using '#align set.infi_eq_Inter Set.iInf_eq_iInterₓ'. -/
@[simp]
-theorem infᵢ_eq_interᵢ (s : ι → Set α) : infᵢ s = interᵢ s :=
+theorem iInf_eq_iInter (s : ι → Set α) : iInf s = iInter s :=
rfl
-#align set.infi_eq_Inter Set.infᵢ_eq_interᵢ
+#align set.infi_eq_Inter Set.iInf_eq_iInter
-/- warning: set.mem_Union -> Set.mem_unionᵢ is a dubious translation:
+/- warning: set.mem_Union -> Set.mem_iUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {x : α} {s : ι -> (Set.{u1} α)}, Iff (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => s i))) (Exists.{u2} ι (fun (i : ι) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (s i)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {x : α} {s : ι -> (Set.{u1} α)}, Iff (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i))) (Exists.{u2} ι (fun (i : ι) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (s i)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {x : α} {s : ι -> (Set.{u2} α)}, Iff (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => s i))) (Exists.{u1} ι (fun (i : ι) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (s i)))
-Case conversion may be inaccurate. Consider using '#align set.mem_Union Set.mem_unionᵢₓ'. -/
+ forall {α : Type.{u2}} {ι : Sort.{u1}} {x : α} {s : ι -> (Set.{u2} α)}, Iff (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.iUnion.{u2, u1} α ι (fun (i : ι) => s i))) (Exists.{u1} ι (fun (i : ι) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (s i)))
+Case conversion may be inaccurate. Consider using '#align set.mem_Union Set.mem_iUnionₓ'. -/
@[simp]
-theorem mem_unionᵢ {x : α} {s : ι → Set α} : (x ∈ ⋃ i, s i) ↔ ∃ i, x ∈ s i :=
+theorem mem_iUnion {x : α} {s : ι → Set α} : (x ∈ ⋃ i, s i) ↔ ∃ i, x ∈ s i :=
⟨fun ⟨t, ⟨⟨a, (t_eq : s a = t)⟩, (h : x ∈ t)⟩⟩ => ⟨a, t_eq.symm ▸ h⟩, fun ⟨a, h⟩ =>
⟨s a, ⟨⟨a, rfl⟩, h⟩⟩⟩
-#align set.mem_Union Set.mem_unionᵢ
+#align set.mem_Union Set.mem_iUnion
-/- warning: set.mem_Inter -> Set.mem_interᵢ is a dubious translation:
+/- warning: set.mem_Inter -> Set.mem_iInter is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {x : α} {s : ι -> (Set.{u1} α)}, Iff (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => s i))) (forall (i : ι), Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (s i))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {x : α} {s : ι -> (Set.{u1} α)}, Iff (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.iInter.{u1, u2} α ι (fun (i : ι) => s i))) (forall (i : ι), Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (s i))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {x : α} {s : ι -> (Set.{u2} α)}, Iff (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => s i))) (forall (i : ι), Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (s i))
-Case conversion may be inaccurate. Consider using '#align set.mem_Inter Set.mem_interᵢₓ'. -/
+ forall {α : Type.{u2}} {ι : Sort.{u1}} {x : α} {s : ι -> (Set.{u2} α)}, Iff (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.iInter.{u2, u1} α ι (fun (i : ι) => s i))) (forall (i : ι), Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (s i))
+Case conversion may be inaccurate. Consider using '#align set.mem_Inter Set.mem_iInterₓ'. -/
@[simp]
-theorem mem_interᵢ {x : α} {s : ι → Set α} : (x ∈ ⋂ i, s i) ↔ ∀ i, x ∈ s i :=
+theorem mem_iInter {x : α} {s : ι → Set α} : (x ∈ ⋂ i, s i) ↔ ∀ i, x ∈ s i :=
⟨fun (h : ∀ a ∈ { a : Set α | ∃ i, s i = a }, x ∈ a) a => h (s a) ⟨a, rfl⟩,
fun h t ⟨a, (Eq : s a = t)⟩ => Eq ▸ h a⟩
-#align set.mem_Inter Set.mem_interᵢ
+#align set.mem_Inter Set.mem_iInter
-/- warning: set.mem_Union₂ -> Set.mem_unionᵢ₂ is a dubious translation:
+/- warning: set.mem_Union₂ -> Set.mem_iUnion₂ is a dubious translation:
lean 3 declaration is
- forall {γ : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {x : γ} {s : forall (i : ι), (κ i) -> (Set.{u1} γ)}, Iff (Membership.Mem.{u1, u1} γ (Set.{u1} γ) (Set.hasMem.{u1} γ) x (Set.unionᵢ.{u1, u2} γ ι (fun (i : ι) => Set.unionᵢ.{u1, u3} γ (κ i) (fun (j : κ i) => s i j)))) (Exists.{u2} ι (fun (i : ι) => Exists.{u3} (κ i) (fun (j : κ i) => Membership.Mem.{u1, u1} γ (Set.{u1} γ) (Set.hasMem.{u1} γ) x (s i j))))
+ forall {γ : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {x : γ} {s : forall (i : ι), (κ i) -> (Set.{u1} γ)}, Iff (Membership.Mem.{u1, u1} γ (Set.{u1} γ) (Set.hasMem.{u1} γ) x (Set.iUnion.{u1, u2} γ ι (fun (i : ι) => Set.iUnion.{u1, u3} γ (κ i) (fun (j : κ i) => s i j)))) (Exists.{u2} ι (fun (i : ι) => Exists.{u3} (κ i) (fun (j : κ i) => Membership.Mem.{u1, u1} γ (Set.{u1} γ) (Set.hasMem.{u1} γ) x (s i j))))
but is expected to have type
- forall {γ : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {x : γ} {s : forall (i : ι), (κ i) -> (Set.{u3} γ)}, Iff (Membership.mem.{u3, u3} γ (Set.{u3} γ) (Set.instMembershipSet.{u3} γ) x (Set.unionᵢ.{u3, u2} γ ι (fun (i : ι) => Set.unionᵢ.{u3, u1} γ (κ i) (fun (j : κ i) => s i j)))) (Exists.{u2} ι (fun (i : ι) => Exists.{u1} (κ i) (fun (j : κ i) => Membership.mem.{u3, u3} γ (Set.{u3} γ) (Set.instMembershipSet.{u3} γ) x (s i j))))
-Case conversion may be inaccurate. Consider using '#align set.mem_Union₂ Set.mem_unionᵢ₂ₓ'. -/
+ forall {γ : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {x : γ} {s : forall (i : ι), (κ i) -> (Set.{u3} γ)}, Iff (Membership.mem.{u3, u3} γ (Set.{u3} γ) (Set.instMembershipSet.{u3} γ) x (Set.iUnion.{u3, u2} γ ι (fun (i : ι) => Set.iUnion.{u3, u1} γ (κ i) (fun (j : κ i) => s i j)))) (Exists.{u2} ι (fun (i : ι) => Exists.{u1} (κ i) (fun (j : κ i) => Membership.mem.{u3, u3} γ (Set.{u3} γ) (Set.instMembershipSet.{u3} γ) x (s i j))))
+Case conversion may be inaccurate. Consider using '#align set.mem_Union₂ Set.mem_iUnion₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem mem_unionᵢ₂ {x : γ} {s : ∀ i, κ i → Set γ} : (x ∈ ⋃ (i) (j), s i j) ↔ ∃ i j, x ∈ s i j := by
+theorem mem_iUnion₂ {x : γ} {s : ∀ i, κ i → Set γ} : (x ∈ ⋃ (i) (j), s i j) ↔ ∃ i j, x ∈ s i j := by
simp_rw [mem_Union]
-#align set.mem_Union₂ Set.mem_unionᵢ₂
+#align set.mem_Union₂ Set.mem_iUnion₂
-/- warning: set.mem_Inter₂ -> Set.mem_interᵢ₂ is a dubious translation:
+/- warning: set.mem_Inter₂ -> Set.mem_iInter₂ is a dubious translation:
lean 3 declaration is
- forall {γ : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {x : γ} {s : forall (i : ι), (κ i) -> (Set.{u1} γ)}, Iff (Membership.Mem.{u1, u1} γ (Set.{u1} γ) (Set.hasMem.{u1} γ) x (Set.interᵢ.{u1, u2} γ ι (fun (i : ι) => Set.interᵢ.{u1, u3} γ (κ i) (fun (j : κ i) => s i j)))) (forall (i : ι) (j : κ i), Membership.Mem.{u1, u1} γ (Set.{u1} γ) (Set.hasMem.{u1} γ) x (s i j))
+ forall {γ : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {x : γ} {s : forall (i : ι), (κ i) -> (Set.{u1} γ)}, Iff (Membership.Mem.{u1, u1} γ (Set.{u1} γ) (Set.hasMem.{u1} γ) x (Set.iInter.{u1, u2} γ ι (fun (i : ι) => Set.iInter.{u1, u3} γ (κ i) (fun (j : κ i) => s i j)))) (forall (i : ι) (j : κ i), Membership.Mem.{u1, u1} γ (Set.{u1} γ) (Set.hasMem.{u1} γ) x (s i j))
but is expected to have type
- forall {γ : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {x : γ} {s : forall (i : ι), (κ i) -> (Set.{u3} γ)}, Iff (Membership.mem.{u3, u3} γ (Set.{u3} γ) (Set.instMembershipSet.{u3} γ) x (Set.interᵢ.{u3, u2} γ ι (fun (i : ι) => Set.interᵢ.{u3, u1} γ (κ i) (fun (j : κ i) => s i j)))) (forall (i : ι) (j : κ i), Membership.mem.{u3, u3} γ (Set.{u3} γ) (Set.instMembershipSet.{u3} γ) x (s i j))
-Case conversion may be inaccurate. Consider using '#align set.mem_Inter₂ Set.mem_interᵢ₂ₓ'. -/
+ forall {γ : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {x : γ} {s : forall (i : ι), (κ i) -> (Set.{u3} γ)}, Iff (Membership.mem.{u3, u3} γ (Set.{u3} γ) (Set.instMembershipSet.{u3} γ) x (Set.iInter.{u3, u2} γ ι (fun (i : ι) => Set.iInter.{u3, u1} γ (κ i) (fun (j : κ i) => s i j)))) (forall (i : ι) (j : κ i), Membership.mem.{u3, u3} γ (Set.{u3} γ) (Set.instMembershipSet.{u3} γ) x (s i j))
+Case conversion may be inaccurate. Consider using '#align set.mem_Inter₂ Set.mem_iInter₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem mem_interᵢ₂ {x : γ} {s : ∀ i, κ i → Set γ} : (x ∈ ⋂ (i) (j), s i j) ↔ ∀ i j, x ∈ s i j := by
+theorem mem_iInter₂ {x : γ} {s : ∀ i, κ i → Set γ} : (x ∈ ⋂ (i) (j), s i j) ↔ ∀ i j, x ∈ s i j := by
simp_rw [mem_Inter]
-#align set.mem_Inter₂ Set.mem_interᵢ₂
+#align set.mem_Inter₂ Set.mem_iInter₂
-/- warning: set.mem_Union_of_mem -> Set.mem_unionᵢ_of_mem is a dubious translation:
+/- warning: set.mem_Union_of_mem -> Set.mem_iUnion_of_mem is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {a : α} (i : ι), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i)) -> (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => s i)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {a : α} (i : ι), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i)) -> (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {a : α} (i : ι), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a (s i)) -> (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => s i)))
-Case conversion may be inaccurate. Consider using '#align set.mem_Union_of_mem Set.mem_unionᵢ_of_memₓ'. -/
-theorem mem_unionᵢ_of_mem {s : ι → Set α} {a : α} (i : ι) (ha : a ∈ s i) : a ∈ ⋃ i, s i :=
- mem_unionᵢ.2 ⟨i, ha⟩
-#align set.mem_Union_of_mem Set.mem_unionᵢ_of_mem
+ forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {a : α} (i : ι), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a (s i)) -> (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a (Set.iUnion.{u2, u1} α ι (fun (i : ι) => s i)))
+Case conversion may be inaccurate. Consider using '#align set.mem_Union_of_mem Set.mem_iUnion_of_memₓ'. -/
+theorem mem_iUnion_of_mem {s : ι → Set α} {a : α} (i : ι) (ha : a ∈ s i) : a ∈ ⋃ i, s i :=
+ mem_iUnion.2 ⟨i, ha⟩
+#align set.mem_Union_of_mem Set.mem_iUnion_of_mem
-/- warning: set.mem_Union₂_of_mem -> Set.mem_unionᵢ₂_of_mem is a dubious translation:
+/- warning: set.mem_Union₂_of_mem -> Set.mem_iUnion₂_of_mem is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {a : α} {i : ι} (j : κ i), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i j)) -> (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, u3} α (κ i) (fun (j : κ i) => s i j))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {a : α} {i : ι} (j : κ i), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i j)) -> (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => s i j))))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {a : α} {i : ι} (j : κ i), (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i j)) -> (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => Set.unionᵢ.{u3, u1} α (κ i) (fun (j : κ i) => s i j))))
-Case conversion may be inaccurate. Consider using '#align set.mem_Union₂_of_mem Set.mem_unionᵢ₂_of_memₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {a : α} {i : ι} (j : κ i), (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i j)) -> (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => s i j))))
+Case conversion may be inaccurate. Consider using '#align set.mem_Union₂_of_mem Set.mem_iUnion₂_of_memₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem mem_unionᵢ₂_of_mem {s : ∀ i, κ i → Set α} {a : α} {i : ι} (j : κ i) (ha : a ∈ s i j) :
+theorem mem_iUnion₂_of_mem {s : ∀ i, κ i → Set α} {a : α} {i : ι} (j : κ i) (ha : a ∈ s i j) :
a ∈ ⋃ (i) (j), s i j :=
- mem_unionᵢ₂.2 ⟨i, j, ha⟩
-#align set.mem_Union₂_of_mem Set.mem_unionᵢ₂_of_mem
+ mem_iUnion₂.2 ⟨i, j, ha⟩
+#align set.mem_Union₂_of_mem Set.mem_iUnion₂_of_mem
-/- warning: set.mem_Inter_of_mem -> Set.mem_interᵢ_of_mem is a dubious translation:
+/- warning: set.mem_Inter_of_mem -> Set.mem_iInter_of_mem is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {a : α}, (forall (i : ι), Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i)) -> (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => s i)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {a : α}, (forall (i : ι), Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i)) -> (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Set.iInter.{u1, u2} α ι (fun (i : ι) => s i)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {a : α}, (forall (i : ι), Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a (s i)) -> (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => s i)))
-Case conversion may be inaccurate. Consider using '#align set.mem_Inter_of_mem Set.mem_interᵢ_of_memₓ'. -/
-theorem mem_interᵢ_of_mem {s : ι → Set α} {a : α} (h : ∀ i, a ∈ s i) : a ∈ ⋂ i, s i :=
- mem_interᵢ.2 h
-#align set.mem_Inter_of_mem Set.mem_interᵢ_of_mem
+ forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {a : α}, (forall (i : ι), Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a (s i)) -> (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a (Set.iInter.{u2, u1} α ι (fun (i : ι) => s i)))
+Case conversion may be inaccurate. Consider using '#align set.mem_Inter_of_mem Set.mem_iInter_of_memₓ'. -/
+theorem mem_iInter_of_mem {s : ι → Set α} {a : α} (h : ∀ i, a ∈ s i) : a ∈ ⋂ i, s i :=
+ mem_iInter.2 h
+#align set.mem_Inter_of_mem Set.mem_iInter_of_mem
-/- warning: set.mem_Inter₂_of_mem -> Set.mem_interᵢ₂_of_mem is a dubious translation:
+/- warning: set.mem_Inter₂_of_mem -> Set.mem_iInter₂_of_mem is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {a : α}, (forall (i : ι) (j : κ i), Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i j)) -> (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u3} α (κ i) (fun (j : κ i) => s i j))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {a : α}, (forall (i : ι) (j : κ i), Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i j)) -> (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => s i j))))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {a : α}, (forall (i : ι) (j : κ i), Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i j)) -> (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, u1} α (κ i) (fun (j : κ i) => s i j))))
-Case conversion may be inaccurate. Consider using '#align set.mem_Inter₂_of_mem Set.mem_interᵢ₂_of_memₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {a : α}, (forall (i : ι) (j : κ i), Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i j)) -> (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => s i j))))
+Case conversion may be inaccurate. Consider using '#align set.mem_Inter₂_of_mem Set.mem_iInter₂_of_memₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem mem_interᵢ₂_of_mem {s : ∀ i, κ i → Set α} {a : α} (h : ∀ i j, a ∈ s i j) :
+theorem mem_iInter₂_of_mem {s : ∀ i, κ i → Set α} {a : α} (h : ∀ i j, a ∈ s i j) :
a ∈ ⋂ (i) (j), s i j :=
- mem_interᵢ₂.2 h
-#align set.mem_Inter₂_of_mem Set.mem_interᵢ₂_of_mem
+ mem_iInter₂.2 h
+#align set.mem_Inter₂_of_mem Set.mem_iInter₂_of_mem
instance : CompleteBooleanAlgebra (Set α) :=
{ Set.booleanAlgebra with
- supₛ := supₛ
- infₛ := infₛ
+ sSup := sSup
+ sInf := sInf
le_sup := fun s t t_in a a_in => ⟨t, ⟨t_in, a_in⟩⟩
sup_le := fun s t h a ⟨t', ⟨t'_in, a_in⟩⟩ => h t' t'_in a_in
le_inf := fun s t h a a_in t' t'_in => h t' t'_in a_in
inf_le := fun s t t_in a h => h _ t_in
- infᵢ_sup_le_sup_inf := fun s S x => Iff.mp <| by simp [forall_or_left]
- inf_sup_le_supᵢ_inf := fun s S x => Iff.mp <| by simp [exists_and_left] }
+ iInf_sup_le_sup_inf := fun s S x => Iff.mp <| by simp [forall_or_left]
+ inf_sup_le_iSup_inf := fun s S x => Iff.mp <| by simp [exists_and_left] }
section GaloisConnection
@@ -316,98 +316,98 @@ instance : OrderTop (Set α) where
top := univ
le_top := by simp
-#print Set.unionᵢ_congr_Prop /-
+#print Set.iUnion_congr_Prop /-
@[congr]
-theorem unionᵢ_congr_Prop {p q : Prop} {f₁ : p → Set α} {f₂ : q → Set α} (pq : p ↔ q)
- (f : ∀ x, f₁ (pq.mpr x) = f₂ x) : unionᵢ f₁ = unionᵢ f₂ :=
- supᵢ_congr_Prop pq f
-#align set.Union_congr_Prop Set.unionᵢ_congr_Prop
+theorem iUnion_congr_Prop {p q : Prop} {f₁ : p → Set α} {f₂ : q → Set α} (pq : p ↔ q)
+ (f : ∀ x, f₁ (pq.mpr x) = f₂ x) : iUnion f₁ = iUnion f₂ :=
+ iSup_congr_Prop pq f
+#align set.Union_congr_Prop Set.iUnion_congr_Prop
-/
-#print Set.interᵢ_congr_Prop /-
+#print Set.iInter_congr_Prop /-
@[congr]
-theorem interᵢ_congr_Prop {p q : Prop} {f₁ : p → Set α} {f₂ : q → Set α} (pq : p ↔ q)
- (f : ∀ x, f₁ (pq.mpr x) = f₂ x) : interᵢ f₁ = interᵢ f₂ :=
- infᵢ_congr_Prop pq f
-#align set.Inter_congr_Prop Set.interᵢ_congr_Prop
+theorem iInter_congr_Prop {p q : Prop} {f₁ : p → Set α} {f₂ : q → Set α} (pq : p ↔ q)
+ (f : ∀ x, f₁ (pq.mpr x) = f₂ x) : iInter f₁ = iInter f₂ :=
+ iInf_congr_Prop pq f
+#align set.Inter_congr_Prop Set.iInter_congr_Prop
-/
-#print Set.unionᵢ_plift_up /-
-theorem unionᵢ_plift_up (f : PLift ι → Set α) : (⋃ i, f (PLift.up i)) = ⋃ i, f i :=
- supᵢ_plift_up _
-#align set.Union_plift_up Set.unionᵢ_plift_up
+#print Set.iUnion_plift_up /-
+theorem iUnion_plift_up (f : PLift ι → Set α) : (⋃ i, f (PLift.up i)) = ⋃ i, f i :=
+ iSup_plift_up _
+#align set.Union_plift_up Set.iUnion_plift_up
-/
-/- warning: set.Union_plift_down -> Set.unionᵢ_plift_down is a dubious translation:
+/- warning: set.Union_plift_down -> Set.iUnion_plift_down is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (f : ι -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, succ u2} α (PLift.{u2} ι) (fun (i : PLift.{u2} ι) => f (PLift.down.{u2} ι i))) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => f i))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} (f : ι -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α (PLift.{u2} ι) (fun (i : PLift.{u2} ι) => f (PLift.down.{u2} ι i))) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => f i))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (f : ι -> (Set.{u2} α)), Eq.{succ u2} (Set.{u2} α) (Set.unionᵢ.{u2, succ u1} α (PLift.{u1} ι) (fun (i : PLift.{u1} ι) => f (PLift.down.{u1} ι i))) (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => f i))
-Case conversion may be inaccurate. Consider using '#align set.Union_plift_down Set.unionᵢ_plift_downₓ'. -/
-theorem unionᵢ_plift_down (f : ι → Set α) : (⋃ i, f (PLift.down i)) = ⋃ i, f i :=
- supᵢ_plift_down _
-#align set.Union_plift_down Set.unionᵢ_plift_down
+ forall {α : Type.{u2}} {ι : Sort.{u1}} (f : ι -> (Set.{u2} α)), Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, succ u1} α (PLift.{u1} ι) (fun (i : PLift.{u1} ι) => f (PLift.down.{u1} ι i))) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => f i))
+Case conversion may be inaccurate. Consider using '#align set.Union_plift_down Set.iUnion_plift_downₓ'. -/
+theorem iUnion_plift_down (f : ι → Set α) : (⋃ i, f (PLift.down i)) = ⋃ i, f i :=
+ iSup_plift_down _
+#align set.Union_plift_down Set.iUnion_plift_down
-#print Set.interᵢ_plift_up /-
-theorem interᵢ_plift_up (f : PLift ι → Set α) : (⋂ i, f (PLift.up i)) = ⋂ i, f i :=
- infᵢ_plift_up _
-#align set.Inter_plift_up Set.interᵢ_plift_up
+#print Set.iInter_plift_up /-
+theorem iInter_plift_up (f : PLift ι → Set α) : (⋂ i, f (PLift.up i)) = ⋂ i, f i :=
+ iInf_plift_up _
+#align set.Inter_plift_up Set.iInter_plift_up
-/
-/- warning: set.Inter_plift_down -> Set.interᵢ_plift_down is a dubious translation:
+/- warning: set.Inter_plift_down -> Set.iInter_plift_down is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (f : ι -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, succ u2} α (PLift.{u2} ι) (fun (i : PLift.{u2} ι) => f (PLift.down.{u2} ι i))) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => f i))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} (f : ι -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, succ u2} α (PLift.{u2} ι) (fun (i : PLift.{u2} ι) => f (PLift.down.{u2} ι i))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => f i))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (f : ι -> (Set.{u2} α)), Eq.{succ u2} (Set.{u2} α) (Set.interᵢ.{u2, succ u1} α (PLift.{u1} ι) (fun (i : PLift.{u1} ι) => f (PLift.down.{u1} ι i))) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => f i))
-Case conversion may be inaccurate. Consider using '#align set.Inter_plift_down Set.interᵢ_plift_downₓ'. -/
-theorem interᵢ_plift_down (f : ι → Set α) : (⋂ i, f (PLift.down i)) = ⋂ i, f i :=
- infᵢ_plift_down _
-#align set.Inter_plift_down Set.interᵢ_plift_down
+ forall {α : Type.{u2}} {ι : Sort.{u1}} (f : ι -> (Set.{u2} α)), Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, succ u1} α (PLift.{u1} ι) (fun (i : PLift.{u1} ι) => f (PLift.down.{u1} ι i))) (Set.iInter.{u2, u1} α ι (fun (i : ι) => f i))
+Case conversion may be inaccurate. Consider using '#align set.Inter_plift_down Set.iInter_plift_downₓ'. -/
+theorem iInter_plift_down (f : ι → Set α) : (⋂ i, f (PLift.down i)) = ⋂ i, f i :=
+ iInf_plift_down _
+#align set.Inter_plift_down Set.iInter_plift_down
-#print Set.unionᵢ_eq_if /-
-theorem unionᵢ_eq_if {p : Prop} [Decidable p] (s : Set α) : (⋃ h : p, s) = if p then s else ∅ :=
- supᵢ_eq_if _
-#align set.Union_eq_if Set.unionᵢ_eq_if
+#print Set.iUnion_eq_if /-
+theorem iUnion_eq_if {p : Prop} [Decidable p] (s : Set α) : (⋃ h : p, s) = if p then s else ∅ :=
+ iSup_eq_if _
+#align set.Union_eq_if Set.iUnion_eq_if
-/
-#print Set.unionᵢ_eq_dif /-
-theorem unionᵢ_eq_dif {p : Prop} [Decidable p] (s : p → Set α) :
+#print Set.iUnion_eq_dif /-
+theorem iUnion_eq_dif {p : Prop} [Decidable p] (s : p → Set α) :
(⋃ h : p, s h) = if h : p then s h else ∅ :=
- supᵢ_eq_dif _
-#align set.Union_eq_dif Set.unionᵢ_eq_dif
+ iSup_eq_dif _
+#align set.Union_eq_dif Set.iUnion_eq_dif
-/
-#print Set.interᵢ_eq_if /-
-theorem interᵢ_eq_if {p : Prop} [Decidable p] (s : Set α) : (⋂ h : p, s) = if p then s else univ :=
- infᵢ_eq_if _
-#align set.Inter_eq_if Set.interᵢ_eq_if
+#print Set.iInter_eq_if /-
+theorem iInter_eq_if {p : Prop} [Decidable p] (s : Set α) : (⋂ h : p, s) = if p then s else univ :=
+ iInf_eq_if _
+#align set.Inter_eq_if Set.iInter_eq_if
-/
-#print Set.infᵢ_eq_dif /-
-theorem infᵢ_eq_dif {p : Prop} [Decidable p] (s : p → Set α) :
+#print Set.iInf_eq_dif /-
+theorem iInf_eq_dif {p : Prop} [Decidable p] (s : p → Set α) :
(⋂ h : p, s h) = if h : p then s h else univ :=
- infᵢ_eq_dif _
-#align set.Infi_eq_dif Set.infᵢ_eq_dif
+ iInf_eq_dif _
+#align set.Infi_eq_dif Set.iInf_eq_dif
-/
/- warning: set.exists_set_mem_of_union_eq_top -> Set.exists_set_mem_of_union_eq_top is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Type.{u2}} (t : Set.{u2} ι) (s : ι -> (Set.{u1} β)), (Eq.{succ u1} (Set.{u1} β) (Set.unionᵢ.{u1, succ u2} β ι (fun (i : ι) => Set.unionᵢ.{u1, 0} β (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) (fun (H : Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) => s i))) (Top.top.{u1} (Set.{u1} β) (CompleteLattice.toHasTop.{u1} (Set.{u1} β) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} β) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} β) (Set.completeBooleanAlgebra.{u1} β))))))) -> (forall (x : β), Exists.{succ u2} ι (fun (i : ι) => Exists.{0} (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) (fun (H : Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) => Membership.Mem.{u1, u1} β (Set.{u1} β) (Set.hasMem.{u1} β) x (s i))))
+ forall {β : Type.{u1}} {ι : Type.{u2}} (t : Set.{u2} ι) (s : ι -> (Set.{u1} β)), (Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, succ u2} β ι (fun (i : ι) => Set.iUnion.{u1, 0} β (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) (fun (H : Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) => s i))) (Top.top.{u1} (Set.{u1} β) (CompleteLattice.toHasTop.{u1} (Set.{u1} β) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} β) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} β) (Set.completeBooleanAlgebra.{u1} β))))))) -> (forall (x : β), Exists.{succ u2} ι (fun (i : ι) => Exists.{0} (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) (fun (H : Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) => Membership.Mem.{u1, u1} β (Set.{u1} β) (Set.hasMem.{u1} β) x (s i))))
but is expected to have type
- forall {β : Type.{u1}} {ι : Type.{u2}} (t : Set.{u2} ι) (s : ι -> (Set.{u1} β)), (Eq.{succ u1} (Set.{u1} β) (Set.unionᵢ.{u1, succ u2} β ι (fun (i : ι) => Set.unionᵢ.{u1, 0} β (Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i t) (fun (H : Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i t) => s i))) (Top.top.{u1} (Set.{u1} β) (CompleteLattice.toTop.{u1} (Set.{u1} β) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} β) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} β) (Set.instCompleteBooleanAlgebraSet.{u1} β))))))) -> (forall (x : β), Exists.{succ u2} ι (fun (i : ι) => And (Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i t) (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) x (s i))))
+ forall {β : Type.{u1}} {ι : Type.{u2}} (t : Set.{u2} ι) (s : ι -> (Set.{u1} β)), (Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, succ u2} β ι (fun (i : ι) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i t) (fun (H : Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i t) => s i))) (Top.top.{u1} (Set.{u1} β) (CompleteLattice.toTop.{u1} (Set.{u1} β) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} β) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} β) (Set.instCompleteBooleanAlgebraSet.{u1} β))))))) -> (forall (x : β), Exists.{succ u2} ι (fun (i : ι) => And (Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i t) (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) x (s i))))
Case conversion may be inaccurate. Consider using '#align set.exists_set_mem_of_union_eq_top Set.exists_set_mem_of_union_eq_topₓ'. -/
theorem exists_set_mem_of_union_eq_top {ι : Type _} (t : Set ι) (s : ι → Set β)
(w : (⋃ i ∈ t, s i) = ⊤) (x : β) : ∃ i ∈ t, x ∈ s i :=
by
have p : x ∈ ⊤ := Set.mem_univ x
- simpa only [← w, Set.mem_unionᵢ] using p
+ simpa only [← w, Set.mem_iUnion] using p
#align set.exists_set_mem_of_union_eq_top Set.exists_set_mem_of_union_eq_top
/- warning: set.nonempty_of_union_eq_top_of_nonempty -> Set.nonempty_of_union_eq_top_of_nonempty is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} (t : Set.{u2} ι) (s : ι -> (Set.{u1} α)), (Nonempty.{succ u1} α) -> (Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, succ u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, 0} α (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) (fun (H : Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) => s i))) (Top.top.{u1} (Set.{u1} α) (CompleteLattice.toHasTop.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α))))))) -> (Set.Nonempty.{u2} ι t)
+ forall {α : Type.{u1}} {ι : Type.{u2}} (t : Set.{u2} ι) (s : ι -> (Set.{u1} α)), (Nonempty.{succ u1} α) -> (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => Set.iUnion.{u1, 0} α (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) (fun (H : Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) => s i))) (Top.top.{u1} (Set.{u1} α) (CompleteLattice.toHasTop.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α))))))) -> (Set.Nonempty.{u2} ι t)
but is expected to have type
- forall {α : Type.{u1}} {ι : Type.{u2}} (t : Set.{u2} ι) (s : ι -> (Set.{u1} α)), (Nonempty.{succ u1} α) -> (Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, succ u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, 0} α (Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i t) (fun (H : Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i t) => s i))) (Top.top.{u1} (Set.{u1} α) (CompleteLattice.toTop.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) -> (Set.Nonempty.{u2} ι t)
+ forall {α : Type.{u1}} {ι : Type.{u2}} (t : Set.{u2} ι) (s : ι -> (Set.{u1} α)), (Nonempty.{succ u1} α) -> (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => Set.iUnion.{u1, 0} α (Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i t) (fun (H : Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i t) => s i))) (Top.top.{u1} (Set.{u1} α) (CompleteLattice.toTop.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) -> (Set.Nonempty.{u2} ι t)
Case conversion may be inaccurate. Consider using '#align set.nonempty_of_union_eq_top_of_nonempty Set.nonempty_of_union_eq_top_of_nonemptyₓ'. -/
theorem nonempty_of_union_eq_top_of_nonempty {ι : Type _} (t : Set ι) (s : ι → Set α)
(H : Nonempty α) (w : (⋃ i ∈ t, s i) = ⊤) : t.Nonempty :=
@@ -418,822 +418,822 @@ theorem nonempty_of_union_eq_top_of_nonempty {ι : Type _} (t : Set ι) (s : ι
/- warning: set.set_of_exists -> Set.setOf_exists is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (p : ι -> β -> Prop), Eq.{succ u1} (Set.{u1} β) (setOf.{u1} β (fun (x : β) => Exists.{u2} ι (fun (i : ι) => p i x))) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => setOf.{u1} β (fun (x : β) => p i x)))
+ forall {β : Type.{u1}} {ι : Sort.{u2}} (p : ι -> β -> Prop), Eq.{succ u1} (Set.{u1} β) (setOf.{u1} β (fun (x : β) => Exists.{u2} ι (fun (i : ι) => p i x))) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => setOf.{u1} β (fun (x : β) => p i x)))
but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (p : ι -> β -> Prop), Eq.{succ u2} (Set.{u2} β) (setOf.{u2} β (fun (x : β) => Exists.{u1} ι (fun (i : ι) => p i x))) (Set.unionᵢ.{u2, u1} β ι (fun (i : ι) => setOf.{u2} β (fun (x : β) => p i x)))
+ forall {β : Type.{u2}} {ι : Sort.{u1}} (p : ι -> β -> Prop), Eq.{succ u2} (Set.{u2} β) (setOf.{u2} β (fun (x : β) => Exists.{u1} ι (fun (i : ι) => p i x))) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => setOf.{u2} β (fun (x : β) => p i x)))
Case conversion may be inaccurate. Consider using '#align set.set_of_exists Set.setOf_existsₓ'. -/
theorem setOf_exists (p : ι → β → Prop) : { x | ∃ i, p i x } = ⋃ i, { x | p i x } :=
- ext fun i => mem_unionᵢ.symm
+ ext fun i => mem_iUnion.symm
#align set.set_of_exists Set.setOf_exists
/- warning: set.set_of_forall -> Set.setOf_forall is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (p : ι -> β -> Prop), Eq.{succ u1} (Set.{u1} β) (setOf.{u1} β (fun (x : β) => forall (i : ι), p i x)) (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => setOf.{u1} β (fun (x : β) => p i x)))
+ forall {β : Type.{u1}} {ι : Sort.{u2}} (p : ι -> β -> Prop), Eq.{succ u1} (Set.{u1} β) (setOf.{u1} β (fun (x : β) => forall (i : ι), p i x)) (Set.iInter.{u1, u2} β ι (fun (i : ι) => setOf.{u1} β (fun (x : β) => p i x)))
but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (p : ι -> β -> Prop), Eq.{succ u2} (Set.{u2} β) (setOf.{u2} β (fun (x : β) => forall (i : ι), p i x)) (Set.interᵢ.{u2, u1} β ι (fun (i : ι) => setOf.{u2} β (fun (x : β) => p i x)))
+ forall {β : Type.{u2}} {ι : Sort.{u1}} (p : ι -> β -> Prop), Eq.{succ u2} (Set.{u2} β) (setOf.{u2} β (fun (x : β) => forall (i : ι), p i x)) (Set.iInter.{u2, u1} β ι (fun (i : ι) => setOf.{u2} β (fun (x : β) => p i x)))
Case conversion may be inaccurate. Consider using '#align set.set_of_forall Set.setOf_forallₓ'. -/
theorem setOf_forall (p : ι → β → Prop) : { x | ∀ i, p i x } = ⋂ i, { x | p i x } :=
- ext fun i => mem_interᵢ.symm
+ ext fun i => mem_iInter.symm
#align set.set_of_forall Set.setOf_forall
-/- warning: set.Union_subset -> Set.unionᵢ_subset is a dubious translation:
+/- warning: set.Union_subset -> Set.iUnion_subset is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {t : Set.{u1} α}, (forall (i : ι), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i) t) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => s i)) t)
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {t : Set.{u1} α}, (forall (i : ι), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i) t) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i)) t)
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {t : Set.{u2} α}, (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (s i) t) -> (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => s i)) t)
-Case conversion may be inaccurate. Consider using '#align set.Union_subset Set.unionᵢ_subsetₓ'. -/
-theorem unionᵢ_subset {s : ι → Set α} {t : Set α} (h : ∀ i, s i ⊆ t) : (⋃ i, s i) ⊆ t :=
- @supᵢ_le (Set α) _ _ _ _ h
-#align set.Union_subset Set.unionᵢ_subset
+ forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {t : Set.{u2} α}, (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (s i) t) -> (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => s i)) t)
+Case conversion may be inaccurate. Consider using '#align set.Union_subset Set.iUnion_subsetₓ'. -/
+theorem iUnion_subset {s : ι → Set α} {t : Set α} (h : ∀ i, s i ⊆ t) : (⋃ i, s i) ⊆ t :=
+ @iSup_le (Set α) _ _ _ _ h
+#align set.Union_subset Set.iUnion_subset
-/- warning: set.Union₂_subset -> Set.unionᵢ₂_subset is a dubious translation:
+/- warning: set.Union₂_subset -> Set.iUnion₂_subset is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : Set.{u1} α}, (forall (i : ι) (j : κ i), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i j) t) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) t)
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : Set.{u1} α}, (forall (i : ι) (j : κ i), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i j) t) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) t)
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {t : Set.{u3} α}, (forall (i : ι) (j : κ i), HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (s i j) t) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => Set.unionᵢ.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) t)
-Case conversion may be inaccurate. Consider using '#align set.Union₂_subset Set.unionᵢ₂_subsetₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {t : Set.{u3} α}, (forall (i : ι) (j : κ i), HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (s i j) t) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) t)
+Case conversion may be inaccurate. Consider using '#align set.Union₂_subset Set.iUnion₂_subsetₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem unionᵢ₂_subset {s : ∀ i, κ i → Set α} {t : Set α} (h : ∀ i j, s i j ⊆ t) :
+theorem iUnion₂_subset {s : ∀ i, κ i → Set α} {t : Set α} (h : ∀ i j, s i j ⊆ t) :
(⋃ (i) (j), s i j) ⊆ t :=
- unionᵢ_subset fun x => unionᵢ_subset (h x)
-#align set.Union₂_subset Set.unionᵢ₂_subset
+ iUnion_subset fun x => iUnion_subset (h x)
+#align set.Union₂_subset Set.iUnion₂_subset
-/- warning: set.subset_Inter -> Set.subset_interᵢ is a dubious translation:
+/- warning: set.subset_Inter -> Set.subset_iInter is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} {t : Set.{u1} β} {s : ι -> (Set.{u1} β)}, (forall (i : ι), HasSubset.Subset.{u1} (Set.{u1} β) (Set.hasSubset.{u1} β) t (s i)) -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.hasSubset.{u1} β) t (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => s i)))
+ forall {β : Type.{u1}} {ι : Sort.{u2}} {t : Set.{u1} β} {s : ι -> (Set.{u1} β)}, (forall (i : ι), HasSubset.Subset.{u1} (Set.{u1} β) (Set.hasSubset.{u1} β) t (s i)) -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.hasSubset.{u1} β) t (Set.iInter.{u1, u2} β ι (fun (i : ι) => s i)))
but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} {t : Set.{u2} β} {s : ι -> (Set.{u2} β)}, (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) t (s i)) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) t (Set.interᵢ.{u2, u1} β ι (fun (i : ι) => s i)))
-Case conversion may be inaccurate. Consider using '#align set.subset_Inter Set.subset_interᵢₓ'. -/
-theorem subset_interᵢ {t : Set β} {s : ι → Set β} (h : ∀ i, t ⊆ s i) : t ⊆ ⋂ i, s i :=
- @le_infᵢ (Set β) _ _ _ _ h
-#align set.subset_Inter Set.subset_interᵢ
+ forall {β : Type.{u2}} {ι : Sort.{u1}} {t : Set.{u2} β} {s : ι -> (Set.{u2} β)}, (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) t (s i)) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) t (Set.iInter.{u2, u1} β ι (fun (i : ι) => s i)))
+Case conversion may be inaccurate. Consider using '#align set.subset_Inter Set.subset_iInterₓ'. -/
+theorem subset_iInter {t : Set β} {s : ι → Set β} (h : ∀ i, t ⊆ s i) : t ⊆ ⋂ i, s i :=
+ @le_iInf (Set β) _ _ _ _ h
+#align set.subset_Inter Set.subset_iInter
-/- warning: set.subset_Inter₂ -> Set.subset_interᵢ₂ is a dubious translation:
+/- warning: set.subset_Inter₂ -> Set.subset_iInter₂ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : Set.{u1} α} {t : forall (i : ι), (κ i) -> (Set.{u1} α)}, (forall (i : ι) (j : κ i), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (t i j)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u3} α (κ i) (fun (j : κ i) => t i j))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : Set.{u1} α} {t : forall (i : ι), (κ i) -> (Set.{u1} α)}, (forall (i : ι) (j : κ i), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (t i j)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => t i j))))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : Set.{u3} α} {t : forall (i : ι), (κ i) -> (Set.{u3} α)}, (forall (i : ι) (j : κ i), HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) s (t i j)) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) s (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, u1} α (κ i) (fun (j : κ i) => t i j))))
-Case conversion may be inaccurate. Consider using '#align set.subset_Inter₂ Set.subset_interᵢ₂ₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : Set.{u3} α} {t : forall (i : ι), (κ i) -> (Set.{u3} α)}, (forall (i : ι) (j : κ i), HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) s (t i j)) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) s (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => t i j))))
+Case conversion may be inaccurate. Consider using '#align set.subset_Inter₂ Set.subset_iInter₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem subset_interᵢ₂ {s : Set α} {t : ∀ i, κ i → Set α} (h : ∀ i j, s ⊆ t i j) :
+theorem subset_iInter₂ {s : Set α} {t : ∀ i, κ i → Set α} (h : ∀ i j, s ⊆ t i j) :
s ⊆ ⋂ (i) (j), t i j :=
- subset_interᵢ fun x => subset_interᵢ <| h x
-#align set.subset_Inter₂ Set.subset_interᵢ₂
+ subset_iInter fun x => subset_iInter <| h x
+#align set.subset_Inter₂ Set.subset_iInter₂
-/- warning: set.Union_subset_iff -> Set.unionᵢ_subset_iff is a dubious translation:
+/- warning: set.Union_subset_iff -> Set.iUnion_subset_iff is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {t : Set.{u1} α}, Iff (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => s i)) t) (forall (i : ι), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i) t)
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {t : Set.{u1} α}, Iff (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i)) t) (forall (i : ι), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i) t)
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {t : Set.{u2} α}, Iff (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => s i)) t) (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (s i) t)
-Case conversion may be inaccurate. Consider using '#align set.Union_subset_iff Set.unionᵢ_subset_iffₓ'. -/
+ forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {t : Set.{u2} α}, Iff (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => s i)) t) (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (s i) t)
+Case conversion may be inaccurate. Consider using '#align set.Union_subset_iff Set.iUnion_subset_iffₓ'. -/
@[simp]
-theorem unionᵢ_subset_iff {s : ι → Set α} {t : Set α} : (⋃ i, s i) ⊆ t ↔ ∀ i, s i ⊆ t :=
- ⟨fun h i => Subset.trans (le_supᵢ s _) h, unionᵢ_subset⟩
-#align set.Union_subset_iff Set.unionᵢ_subset_iff
+theorem iUnion_subset_iff {s : ι → Set α} {t : Set α} : (⋃ i, s i) ⊆ t ↔ ∀ i, s i ⊆ t :=
+ ⟨fun h i => Subset.trans (le_iSup s _) h, iUnion_subset⟩
+#align set.Union_subset_iff Set.iUnion_subset_iff
-/- warning: set.Union₂_subset_iff -> Set.unionᵢ₂_subset_iff is a dubious translation:
+/- warning: set.Union₂_subset_iff -> Set.iUnion₂_subset_iff is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : Set.{u1} α}, Iff (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) t) (forall (i : ι) (j : κ i), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i j) t)
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : Set.{u1} α}, Iff (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) t) (forall (i : ι) (j : κ i), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i j) t)
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {t : Set.{u3} α}, Iff (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => Set.unionᵢ.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) t) (forall (i : ι) (j : κ i), HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (s i j) t)
-Case conversion may be inaccurate. Consider using '#align set.Union₂_subset_iff Set.unionᵢ₂_subset_iffₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {t : Set.{u3} α}, Iff (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) t) (forall (i : ι) (j : κ i), HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (s i j) t)
+Case conversion may be inaccurate. Consider using '#align set.Union₂_subset_iff Set.iUnion₂_subset_iffₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem unionᵢ₂_subset_iff {s : ∀ i, κ i → Set α} {t : Set α} :
+theorem iUnion₂_subset_iff {s : ∀ i, κ i → Set α} {t : Set α} :
(⋃ (i) (j), s i j) ⊆ t ↔ ∀ i j, s i j ⊆ t := by simp_rw [Union_subset_iff]
-#align set.Union₂_subset_iff Set.unionᵢ₂_subset_iff
+#align set.Union₂_subset_iff Set.iUnion₂_subset_iff
-/- warning: set.subset_Inter_iff -> Set.subset_interᵢ_iff is a dubious translation:
+/- warning: set.subset_Inter_iff -> Set.subset_iInter_iff is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : Set.{u1} α} {t : ι -> (Set.{u1} α)}, Iff (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => t i))) (forall (i : ι), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (t i))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {s : Set.{u1} α} {t : ι -> (Set.{u1} α)}, Iff (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (Set.iInter.{u1, u2} α ι (fun (i : ι) => t i))) (forall (i : ι), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (t i))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : Set.{u2} α} {t : ι -> (Set.{u2} α)}, Iff (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => t i))) (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s (t i))
-Case conversion may be inaccurate. Consider using '#align set.subset_Inter_iff Set.subset_interᵢ_iffₓ'. -/
+ forall {α : Type.{u2}} {ι : Sort.{u1}} {s : Set.{u2} α} {t : ι -> (Set.{u2} α)}, Iff (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s (Set.iInter.{u2, u1} α ι (fun (i : ι) => t i))) (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s (t i))
+Case conversion may be inaccurate. Consider using '#align set.subset_Inter_iff Set.subset_iInter_iffₓ'. -/
@[simp]
-theorem subset_interᵢ_iff {s : Set α} {t : ι → Set α} : (s ⊆ ⋂ i, t i) ↔ ∀ i, s ⊆ t i :=
- @le_infᵢ_iff (Set α) _ _ _ _
-#align set.subset_Inter_iff Set.subset_interᵢ_iff
+theorem subset_iInter_iff {s : Set α} {t : ι → Set α} : (s ⊆ ⋂ i, t i) ↔ ∀ i, s ⊆ t i :=
+ @le_iInf_iff (Set α) _ _ _ _
+#align set.subset_Inter_iff Set.subset_iInter_iff
-/- warning: set.subset_Inter₂_iff -> Set.subset_interᵢ₂_iff is a dubious translation:
+/- warning: set.subset_Inter₂_iff -> Set.subset_iInter₂_iff is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : Set.{u1} α} {t : forall (i : ι), (κ i) -> (Set.{u1} α)}, Iff (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u3} α (κ i) (fun (j : κ i) => t i j)))) (forall (i : ι) (j : κ i), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (t i j))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : Set.{u1} α} {t : forall (i : ι), (κ i) -> (Set.{u1} α)}, Iff (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => t i j)))) (forall (i : ι) (j : κ i), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (t i j))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : Set.{u3} α} {t : forall (i : ι), (κ i) -> (Set.{u3} α)}, Iff (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) s (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, u1} α (κ i) (fun (j : κ i) => t i j)))) (forall (i : ι) (j : κ i), HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) s (t i j))
-Case conversion may be inaccurate. Consider using '#align set.subset_Inter₂_iff Set.subset_interᵢ₂_iffₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : Set.{u3} α} {t : forall (i : ι), (κ i) -> (Set.{u3} α)}, Iff (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) s (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => t i j)))) (forall (i : ι) (j : κ i), HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) s (t i j))
+Case conversion may be inaccurate. Consider using '#align set.subset_Inter₂_iff Set.subset_iInter₂_iffₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
@[simp]
-theorem subset_interᵢ₂_iff {s : Set α} {t : ∀ i, κ i → Set α} :
+theorem subset_iInter₂_iff {s : Set α} {t : ∀ i, κ i → Set α} :
(s ⊆ ⋂ (i) (j), t i j) ↔ ∀ i j, s ⊆ t i j := by simp_rw [subset_Inter_iff]
-#align set.subset_Inter₂_iff Set.subset_interᵢ₂_iff
+#align set.subset_Inter₂_iff Set.subset_iInter₂_iff
-/- warning: set.subset_Union -> Set.subset_unionᵢ is a dubious translation:
+/- warning: set.subset_Union -> Set.subset_iUnion is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)) (i : ι), HasSubset.Subset.{u1} (Set.{u1} β) (Set.hasSubset.{u1} β) (s i) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => s i))
+ forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)) (i : ι), HasSubset.Subset.{u1} (Set.{u1} β) (Set.hasSubset.{u1} β) (s i) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => s i))
but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)) (i : ι), HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (s i) (Set.unionᵢ.{u2, u1} β ι (fun (i : ι) => s i))
-Case conversion may be inaccurate. Consider using '#align set.subset_Union Set.subset_unionᵢₓ'. -/
-theorem subset_unionᵢ : ∀ (s : ι → Set β) (i : ι), s i ⊆ ⋃ i, s i :=
- le_supᵢ
-#align set.subset_Union Set.subset_unionᵢ
+ forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)) (i : ι), HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (s i) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => s i))
+Case conversion may be inaccurate. Consider using '#align set.subset_Union Set.subset_iUnionₓ'. -/
+theorem subset_iUnion : ∀ (s : ι → Set β) (i : ι), s i ⊆ ⋃ i, s i :=
+ le_iSup
+#align set.subset_Union Set.subset_iUnion
-/- warning: set.Inter_subset -> Set.interᵢ_subset is a dubious translation:
+/- warning: set.Inter_subset -> Set.iInter_subset is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)) (i : ι), HasSubset.Subset.{u1} (Set.{u1} β) (Set.hasSubset.{u1} β) (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => s i)) (s i)
+ forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)) (i : ι), HasSubset.Subset.{u1} (Set.{u1} β) (Set.hasSubset.{u1} β) (Set.iInter.{u1, u2} β ι (fun (i : ι) => s i)) (s i)
but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)) (i : ι), HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (Set.interᵢ.{u2, u1} β ι (fun (i : ι) => s i)) (s i)
-Case conversion may be inaccurate. Consider using '#align set.Inter_subset Set.interᵢ_subsetₓ'. -/
-theorem interᵢ_subset : ∀ (s : ι → Set β) (i : ι), (⋂ i, s i) ⊆ s i :=
- infᵢ_le
-#align set.Inter_subset Set.interᵢ_subset
+ forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)) (i : ι), HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (Set.iInter.{u2, u1} β ι (fun (i : ι) => s i)) (s i)
+Case conversion may be inaccurate. Consider using '#align set.Inter_subset Set.iInter_subsetₓ'. -/
+theorem iInter_subset : ∀ (s : ι → Set β) (i : ι), (⋂ i, s i) ⊆ s i :=
+ iInf_le
+#align set.Inter_subset Set.iInter_subset
-/- warning: set.subset_Union₂ -> Set.subset_unionᵢ₂ is a dubious translation:
+/- warning: set.subset_Union₂ -> Set.subset_iUnion₂ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} (i : ι) (j : κ i), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i j) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, u3} α (κ i) (fun (j : κ i) => s i j)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} (i : ι) (j : κ i), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i j) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => s i j)))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} (i : ι) (j : κ i), HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (s i j) (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => Set.unionᵢ.{u3, u1} α (κ i) (fun (j : κ i) => s i j)))
-Case conversion may be inaccurate. Consider using '#align set.subset_Union₂ Set.subset_unionᵢ₂ₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} (i : ι) (j : κ i), HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (s i j) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => s i j)))
+Case conversion may be inaccurate. Consider using '#align set.subset_Union₂ Set.subset_iUnion₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem subset_unionᵢ₂ {s : ∀ i, κ i → Set α} (i : ι) (j : κ i) : s i j ⊆ ⋃ (i) (j), s i j :=
- @le_supᵢ₂ (Set α) _ _ _ _ i j
-#align set.subset_Union₂ Set.subset_unionᵢ₂
+theorem subset_iUnion₂ {s : ∀ i, κ i → Set α} (i : ι) (j : κ i) : s i j ⊆ ⋃ (i) (j), s i j :=
+ @le_iSup₂ (Set α) _ _ _ _ i j
+#align set.subset_Union₂ Set.subset_iUnion₂
-/- warning: set.Inter₂_subset -> Set.interᵢ₂_subset is a dubious translation:
+/- warning: set.Inter₂_subset -> Set.iInter₂_subset is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} (i : ι) (j : κ i), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) (s i j)
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} (i : ι) (j : κ i), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) (s i j)
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} (i : ι) (j : κ i), HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) (s i j)
-Case conversion may be inaccurate. Consider using '#align set.Inter₂_subset Set.interᵢ₂_subsetₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} (i : ι) (j : κ i), HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) (s i j)
+Case conversion may be inaccurate. Consider using '#align set.Inter₂_subset Set.iInter₂_subsetₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem interᵢ₂_subset {s : ∀ i, κ i → Set α} (i : ι) (j : κ i) : (⋂ (i) (j), s i j) ⊆ s i j :=
- @infᵢ₂_le (Set α) _ _ _ _ i j
-#align set.Inter₂_subset Set.interᵢ₂_subset
+theorem iInter₂_subset {s : ∀ i, κ i → Set α} (i : ι) (j : κ i) : (⋂ (i) (j), s i j) ⊆ s i j :=
+ @iInf₂_le (Set α) _ _ _ _ i j
+#align set.Inter₂_subset Set.iInter₂_subset
-/- warning: set.subset_Union_of_subset -> Set.subset_unionᵢ_of_subset is a dubious translation:
+/- warning: set.subset_Union_of_subset -> Set.subset_iUnion_of_subset is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : Set.{u1} α} {t : ι -> (Set.{u1} α)} (i : ι), (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (t i)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => t i)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {s : Set.{u1} α} {t : ι -> (Set.{u1} α)} (i : ι), (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (t i)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (Set.iUnion.{u1, u2} α ι (fun (i : ι) => t i)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : Set.{u2} α} {t : ι -> (Set.{u2} α)} (i : ι), (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s (t i)) -> (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.subset_Union_of_subset Set.subset_unionᵢ_of_subsetₓ'. -/
+ forall {α : Type.{u2}} {ι : Sort.{u1}} {s : Set.{u2} α} {t : ι -> (Set.{u2} α)} (i : ι), (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s (t i)) -> (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s (Set.iUnion.{u2, u1} α ι (fun (i : ι) => t i)))
+Case conversion may be inaccurate. Consider using '#align set.subset_Union_of_subset Set.subset_iUnion_of_subsetₓ'. -/
/-- This rather trivial consequence of `subset_Union`is convenient with `apply`, and has `i`
explicit for this purpose. -/
-theorem subset_unionᵢ_of_subset {s : Set α} {t : ι → Set α} (i : ι) (h : s ⊆ t i) : s ⊆ ⋃ i, t i :=
- @le_supᵢ_of_le (Set α) _ _ _ _ i h
-#align set.subset_Union_of_subset Set.subset_unionᵢ_of_subset
+theorem subset_iUnion_of_subset {s : Set α} {t : ι → Set α} (i : ι) (h : s ⊆ t i) : s ⊆ ⋃ i, t i :=
+ @le_iSup_of_le (Set α) _ _ _ _ i h
+#align set.subset_Union_of_subset Set.subset_iUnion_of_subset
-/- warning: set.Inter_subset_of_subset -> Set.interᵢ_subset_of_subset is a dubious translation:
+/- warning: set.Inter_subset_of_subset -> Set.iInter_subset_of_subset is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {t : Set.{u1} α} (i : ι), (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i) t) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => s i)) t)
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {t : Set.{u1} α} (i : ι), (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i) t) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => s i)) t)
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {t : Set.{u2} α} (i : ι), (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (s i) t) -> (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => s i)) t)
-Case conversion may be inaccurate. Consider using '#align set.Inter_subset_of_subset Set.interᵢ_subset_of_subsetₓ'. -/
+ forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {t : Set.{u2} α} (i : ι), (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (s i) t) -> (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => s i)) t)
+Case conversion may be inaccurate. Consider using '#align set.Inter_subset_of_subset Set.iInter_subset_of_subsetₓ'. -/
/-- This rather trivial consequence of `Inter_subset`is convenient with `apply`, and has `i`
explicit for this purpose. -/
-theorem interᵢ_subset_of_subset {s : ι → Set α} {t : Set α} (i : ι) (h : s i ⊆ t) :
+theorem iInter_subset_of_subset {s : ι → Set α} {t : Set α} (i : ι) (h : s i ⊆ t) :
(⋂ i, s i) ⊆ t :=
- @infᵢ_le_of_le (Set α) _ _ _ _ i h
-#align set.Inter_subset_of_subset Set.interᵢ_subset_of_subset
+ @iInf_le_of_le (Set α) _ _ _ _ i h
+#align set.Inter_subset_of_subset Set.iInter_subset_of_subset
-/- warning: set.subset_Union₂_of_subset -> Set.subset_unionᵢ₂_of_subset is a dubious translation:
+/- warning: set.subset_Union₂_of_subset -> Set.subset_iUnion₂_of_subset is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : Set.{u1} α} {t : forall (i : ι), (κ i) -> (Set.{u1} α)} (i : ι) (j : κ i), (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (t i j)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, u3} α (κ i) (fun (j : κ i) => t i j))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : Set.{u1} α} {t : forall (i : ι), (κ i) -> (Set.{u1} α)} (i : ι) (j : κ i), (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (t i j)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => t i j))))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : Set.{u3} α} {t : forall (i : ι), (κ i) -> (Set.{u3} α)} (i : ι) (j : κ i), (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) s (t i j)) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) s (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => Set.unionᵢ.{u3, u1} α (κ i) (fun (j : κ i) => t i j))))
-Case conversion may be inaccurate. Consider using '#align set.subset_Union₂_of_subset Set.subset_unionᵢ₂_of_subsetₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : Set.{u3} α} {t : forall (i : ι), (κ i) -> (Set.{u3} α)} (i : ι) (j : κ i), (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) s (t i j)) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) s (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => t i j))))
+Case conversion may be inaccurate. Consider using '#align set.subset_Union₂_of_subset Set.subset_iUnion₂_of_subsetₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/-- This rather trivial consequence of `subset_Union₂` is convenient with `apply`, and has `i` and
`j` explicit for this purpose. -/
-theorem subset_unionᵢ₂_of_subset {s : Set α} {t : ∀ i, κ i → Set α} (i : ι) (j : κ i)
+theorem subset_iUnion₂_of_subset {s : Set α} {t : ∀ i, κ i → Set α} (i : ι) (j : κ i)
(h : s ⊆ t i j) : s ⊆ ⋃ (i) (j), t i j :=
- @le_supᵢ₂_of_le (Set α) _ _ _ _ _ i j h
-#align set.subset_Union₂_of_subset Set.subset_unionᵢ₂_of_subset
+ @le_iSup₂_of_le (Set α) _ _ _ _ _ i j h
+#align set.subset_Union₂_of_subset Set.subset_iUnion₂_of_subset
-/- warning: set.Inter₂_subset_of_subset -> Set.interᵢ₂_subset_of_subset is a dubious translation:
+/- warning: set.Inter₂_subset_of_subset -> Set.iInter₂_subset_of_subset is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : Set.{u1} α} (i : ι) (j : κ i), (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i j) t) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) t)
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : Set.{u1} α} (i : ι) (j : κ i), (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i j) t) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) t)
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {t : Set.{u3} α} (i : ι) (j : κ i), (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (s i j) t) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) t)
-Case conversion may be inaccurate. Consider using '#align set.Inter₂_subset_of_subset Set.interᵢ₂_subset_of_subsetₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {t : Set.{u3} α} (i : ι) (j : κ i), (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (s i j) t) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) t)
+Case conversion may be inaccurate. Consider using '#align set.Inter₂_subset_of_subset Set.iInter₂_subset_of_subsetₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/-- This rather trivial consequence of `Inter₂_subset` is convenient with `apply`, and has `i` and
`j` explicit for this purpose. -/
-theorem interᵢ₂_subset_of_subset {s : ∀ i, κ i → Set α} {t : Set α} (i : ι) (j : κ i)
+theorem iInter₂_subset_of_subset {s : ∀ i, κ i → Set α} {t : Set α} (i : ι) (j : κ i)
(h : s i j ⊆ t) : (⋂ (i) (j), s i j) ⊆ t :=
- @infᵢ₂_le_of_le (Set α) _ _ _ _ _ i j h
-#align set.Inter₂_subset_of_subset Set.interᵢ₂_subset_of_subset
+ @iInf₂_le_of_le (Set α) _ _ _ _ _ i j h
+#align set.Inter₂_subset_of_subset Set.iInter₂_subset_of_subset
-/- warning: set.Union_mono -> Set.unionᵢ_mono is a dubious translation:
+/- warning: set.Union_mono -> Set.iUnion_mono is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (forall (i : ι), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i) (t i)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => t i)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (forall (i : ι), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i) (t i)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i)) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => t i)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (s i) (t i)) -> (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.Union_mono Set.unionᵢ_monoₓ'. -/
-theorem unionᵢ_mono {s t : ι → Set α} (h : ∀ i, s i ⊆ t i) : (⋃ i, s i) ⊆ ⋃ i, t i :=
- @supᵢ_mono (Set α) _ _ s t h
-#align set.Union_mono Set.unionᵢ_mono
+ forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (s i) (t i)) -> (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => t i)))
+Case conversion may be inaccurate. Consider using '#align set.Union_mono Set.iUnion_monoₓ'. -/
+theorem iUnion_mono {s t : ι → Set α} (h : ∀ i, s i ⊆ t i) : (⋃ i, s i) ⊆ ⋃ i, t i :=
+ @iSup_mono (Set α) _ _ s t h
+#align set.Union_mono Set.iUnion_mono
-/- warning: set.Union₂_mono -> Set.unionᵢ₂_mono is a dubious translation:
+/- warning: set.Union₂_mono -> Set.iUnion₂_mono is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i : ι), (κ i) -> (Set.{u1} α)}, (forall (i : ι) (j : κ i), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i j) (t i j)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, u3} α (κ i) (fun (j : κ i) => t i j))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i : ι), (κ i) -> (Set.{u1} α)}, (forall (i : ι) (j : κ i), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i j) (t i j)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => t i j))))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {t : forall (i : ι), (κ i) -> (Set.{u3} α)}, (forall (i : ι) (j : κ i), HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (s i j) (t i j)) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => Set.unionᵢ.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => Set.unionᵢ.{u3, u1} α (κ i) (fun (j : κ i) => t i j))))
-Case conversion may be inaccurate. Consider using '#align set.Union₂_mono Set.unionᵢ₂_monoₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {t : forall (i : ι), (κ i) -> (Set.{u3} α)}, (forall (i : ι) (j : κ i), HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (s i j) (t i j)) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => t i j))))
+Case conversion may be inaccurate. Consider using '#align set.Union₂_mono Set.iUnion₂_monoₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem unionᵢ₂_mono {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j ⊆ t i j) :
+theorem iUnion₂_mono {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j ⊆ t i j) :
(⋃ (i) (j), s i j) ⊆ ⋃ (i) (j), t i j :=
- @supᵢ₂_mono (Set α) _ _ _ s t h
-#align set.Union₂_mono Set.unionᵢ₂_mono
+ @iSup₂_mono (Set α) _ _ _ s t h
+#align set.Union₂_mono Set.iUnion₂_mono
-/- warning: set.Inter_mono -> Set.interᵢ_mono is a dubious translation:
+/- warning: set.Inter_mono -> Set.iInter_mono is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (forall (i : ι), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i) (t i)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => t i)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (forall (i : ι), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i) (t i)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => s i)) (Set.iInter.{u1, u2} α ι (fun (i : ι) => t i)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (s i) (t i)) -> (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.Inter_mono Set.interᵢ_monoₓ'. -/
-theorem interᵢ_mono {s t : ι → Set α} (h : ∀ i, s i ⊆ t i) : (⋂ i, s i) ⊆ ⋂ i, t i :=
- @infᵢ_mono (Set α) _ _ s t h
-#align set.Inter_mono Set.interᵢ_mono
+ forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (s i) (t i)) -> (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => s i)) (Set.iInter.{u2, u1} α ι (fun (i : ι) => t i)))
+Case conversion may be inaccurate. Consider using '#align set.Inter_mono Set.iInter_monoₓ'. -/
+theorem iInter_mono {s t : ι → Set α} (h : ∀ i, s i ⊆ t i) : (⋂ i, s i) ⊆ ⋂ i, t i :=
+ @iInf_mono (Set α) _ _ s t h
+#align set.Inter_mono Set.iInter_mono
-/- warning: set.Inter₂_mono -> Set.interᵢ₂_mono is a dubious translation:
+/- warning: set.Inter₂_mono -> Set.iInter₂_mono is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i : ι), (κ i) -> (Set.{u1} α)}, (forall (i : ι) (j : κ i), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i j) (t i j)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u3} α (κ i) (fun (j : κ i) => t i j))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i : ι), (κ i) -> (Set.{u1} α)}, (forall (i : ι) (j : κ i), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i j) (t i j)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => t i j))))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {t : forall (i : ι), (κ i) -> (Set.{u3} α)}, (forall (i : ι) (j : κ i), HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (s i j) (t i j)) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, u1} α (κ i) (fun (j : κ i) => t i j))))
-Case conversion may be inaccurate. Consider using '#align set.Inter₂_mono Set.interᵢ₂_monoₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {t : forall (i : ι), (κ i) -> (Set.{u3} α)}, (forall (i : ι) (j : κ i), HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (s i j) (t i j)) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => t i j))))
+Case conversion may be inaccurate. Consider using '#align set.Inter₂_mono Set.iInter₂_monoₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem interᵢ₂_mono {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j ⊆ t i j) :
+theorem iInter₂_mono {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j ⊆ t i j) :
(⋂ (i) (j), s i j) ⊆ ⋂ (i) (j), t i j :=
- @infᵢ₂_mono (Set α) _ _ _ s t h
-#align set.Inter₂_mono Set.interᵢ₂_mono
+ @iInf₂_mono (Set α) _ _ _ s t h
+#align set.Inter₂_mono Set.iInter₂_mono
-/- warning: set.Union_mono' -> Set.unionᵢ_mono' is a dubious translation:
+/- warning: set.Union_mono' -> Set.iUnion_mono' is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι₂ : Sort.{u3}} {s : ι -> (Set.{u1} α)} {t : ι₂ -> (Set.{u1} α)}, (forall (i : ι), Exists.{u3} ι₂ (fun (j : ι₂) => HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i) (t j))) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u1, u3} α ι₂ (fun (i : ι₂) => t i)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {ι₂ : Sort.{u3}} {s : ι -> (Set.{u1} α)} {t : ι₂ -> (Set.{u1} α)}, (forall (i : ι), Exists.{u3} ι₂ (fun (j : ι₂) => HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i) (t j))) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i)) (Set.iUnion.{u1, u3} α ι₂ (fun (i : ι₂) => t i)))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u1}} {ι₂ : Sort.{u2}} {s : ι -> (Set.{u3} α)} {t : ι₂ -> (Set.{u3} α)}, (forall (i : ι), Exists.{u2} ι₂ (fun (j : ι₂) => HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (s i) (t j))) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.unionᵢ.{u3, u1} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u3, u2} α ι₂ (fun (i : ι₂) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.Union_mono' Set.unionᵢ_mono'ₓ'. -/
-theorem unionᵢ_mono' {s : ι → Set α} {t : ι₂ → Set α} (h : ∀ i, ∃ j, s i ⊆ t j) :
+ forall {α : Type.{u3}} {ι : Sort.{u1}} {ι₂ : Sort.{u2}} {s : ι -> (Set.{u3} α)} {t : ι₂ -> (Set.{u3} α)}, (forall (i : ι), Exists.{u2} ι₂ (fun (j : ι₂) => HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (s i) (t j))) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i)) (Set.iUnion.{u3, u2} α ι₂ (fun (i : ι₂) => t i)))
+Case conversion may be inaccurate. Consider using '#align set.Union_mono' Set.iUnion_mono'ₓ'. -/
+theorem iUnion_mono' {s : ι → Set α} {t : ι₂ → Set α} (h : ∀ i, ∃ j, s i ⊆ t j) :
(⋃ i, s i) ⊆ ⋃ i, t i :=
- @supᵢ_mono' (Set α) _ _ _ s t h
-#align set.Union_mono' Set.unionᵢ_mono'
+ @iSup_mono' (Set α) _ _ _ s t h
+#align set.Union_mono' Set.iUnion_mono'
-/- warning: set.Union₂_mono' -> Set.unionᵢ₂_mono' is a dubious translation:
+/- warning: set.Union₂_mono' -> Set.iUnion₂_mono' is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} {κ : ι -> Sort.{u4}} {κ' : ι' -> Sort.{u5}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i' : ι'), (κ' i') -> (Set.{u1} α)}, (forall (i : ι) (j : κ i), Exists.{u3} ι' (fun (i' : ι') => Exists.{u5} (κ' i') (fun (j' : κ' i') => HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i j) (t i' j')))) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, u4} α (κ i) (fun (j : κ i) => s i j))) (Set.unionᵢ.{u1, u3} α ι' (fun (i' : ι') => Set.unionᵢ.{u1, u5} α (κ' i') (fun (j' : κ' i') => t i' j'))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} {κ : ι -> Sort.{u4}} {κ' : ι' -> Sort.{u5}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i' : ι'), (κ' i') -> (Set.{u1} α)}, (forall (i : ι) (j : κ i), Exists.{u3} ι' (fun (i' : ι') => Exists.{u5} (κ' i') (fun (j' : κ' i') => HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i j) (t i' j')))) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u4} α (κ i) (fun (j : κ i) => s i j))) (Set.iUnion.{u1, u3} α ι' (fun (i' : ι') => Set.iUnion.{u1, u5} α (κ' i') (fun (j' : κ' i') => t i' j'))))
but is expected to have type
- forall {α : Type.{u5}} {ι : Sort.{u2}} {ι' : Sort.{u4}} {κ : ι -> Sort.{u1}} {κ' : ι' -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u5} α)} {t : forall (i' : ι'), (κ' i') -> (Set.{u5} α)}, (forall (i : ι) (j : κ i), Exists.{u4} ι' (fun (i' : ι') => Exists.{u3} (κ' i') (fun (j' : κ' i') => HasSubset.Subset.{u5} (Set.{u5} α) (Set.instHasSubsetSet.{u5} α) (s i j) (t i' j')))) -> (HasSubset.Subset.{u5} (Set.{u5} α) (Set.instHasSubsetSet.{u5} α) (Set.unionᵢ.{u5, u2} α ι (fun (i : ι) => Set.unionᵢ.{u5, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.unionᵢ.{u5, u4} α ι' (fun (i' : ι') => Set.unionᵢ.{u5, u3} α (κ' i') (fun (j' : κ' i') => t i' j'))))
-Case conversion may be inaccurate. Consider using '#align set.Union₂_mono' Set.unionᵢ₂_mono'ₓ'. -/
+ forall {α : Type.{u5}} {ι : Sort.{u2}} {ι' : Sort.{u4}} {κ : ι -> Sort.{u1}} {κ' : ι' -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u5} α)} {t : forall (i' : ι'), (κ' i') -> (Set.{u5} α)}, (forall (i : ι) (j : κ i), Exists.{u4} ι' (fun (i' : ι') => Exists.{u3} (κ' i') (fun (j' : κ' i') => HasSubset.Subset.{u5} (Set.{u5} α) (Set.instHasSubsetSet.{u5} α) (s i j) (t i' j')))) -> (HasSubset.Subset.{u5} (Set.{u5} α) (Set.instHasSubsetSet.{u5} α) (Set.iUnion.{u5, u2} α ι (fun (i : ι) => Set.iUnion.{u5, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.iUnion.{u5, u4} α ι' (fun (i' : ι') => Set.iUnion.{u5, u3} α (κ' i') (fun (j' : κ' i') => t i' j'))))
+Case conversion may be inaccurate. Consider using '#align set.Union₂_mono' Set.iUnion₂_mono'ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i' j') -/
-theorem unionᵢ₂_mono' {s : ∀ i, κ i → Set α} {t : ∀ i', κ' i' → Set α}
+theorem iUnion₂_mono' {s : ∀ i, κ i → Set α} {t : ∀ i', κ' i' → Set α}
(h : ∀ i j, ∃ i' j', s i j ⊆ t i' j') : (⋃ (i) (j), s i j) ⊆ ⋃ (i') (j'), t i' j' :=
- @supᵢ₂_mono' (Set α) _ _ _ _ _ s t h
-#align set.Union₂_mono' Set.unionᵢ₂_mono'
+ @iSup₂_mono' (Set α) _ _ _ _ _ s t h
+#align set.Union₂_mono' Set.iUnion₂_mono'
-/- warning: set.Inter_mono' -> Set.interᵢ_mono' is a dubious translation:
+/- warning: set.Inter_mono' -> Set.iInter_mono' is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} {s : ι -> (Set.{u1} α)} {t : ι' -> (Set.{u1} α)}, (forall (j : ι'), Exists.{u2} ι (fun (i : ι) => HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i) (t j))) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u1, u3} α ι' (fun (j : ι') => t j)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} {s : ι -> (Set.{u1} α)} {t : ι' -> (Set.{u1} α)}, (forall (j : ι'), Exists.{u2} ι (fun (i : ι) => HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i) (t j))) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => s i)) (Set.iInter.{u1, u3} α ι' (fun (j : ι') => t j)))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} {s : ι -> (Set.{u3} α)} {t : ι' -> (Set.{u3} α)}, (forall (j : ι'), Exists.{u2} ι (fun (i : ι) => HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (s i) (t j))) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u3, u1} α ι' (fun (j : ι') => t j)))
-Case conversion may be inaccurate. Consider using '#align set.Inter_mono' Set.interᵢ_mono'ₓ'. -/
-theorem interᵢ_mono' {s : ι → Set α} {t : ι' → Set α} (h : ∀ j, ∃ i, s i ⊆ t j) :
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} {s : ι -> (Set.{u3} α)} {t : ι' -> (Set.{u3} α)}, (forall (j : ι'), Exists.{u2} ι (fun (i : ι) => HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (s i) (t j))) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.iInter.{u3, u2} α ι (fun (i : ι) => s i)) (Set.iInter.{u3, u1} α ι' (fun (j : ι') => t j)))
+Case conversion may be inaccurate. Consider using '#align set.Inter_mono' Set.iInter_mono'ₓ'. -/
+theorem iInter_mono' {s : ι → Set α} {t : ι' → Set α} (h : ∀ j, ∃ i, s i ⊆ t j) :
(⋂ i, s i) ⊆ ⋂ j, t j :=
- Set.subset_interᵢ fun j =>
+ Set.subset_iInter fun j =>
let ⟨i, hi⟩ := h j
- interᵢ_subset_of_subset i hi
-#align set.Inter_mono' Set.interᵢ_mono'
+ iInter_subset_of_subset i hi
+#align set.Inter_mono' Set.iInter_mono'
-/- warning: set.Inter₂_mono' -> Set.interᵢ₂_mono' is a dubious translation:
+/- warning: set.Inter₂_mono' -> Set.iInter₂_mono' is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} {κ : ι -> Sort.{u4}} {κ' : ι' -> Sort.{u5}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i' : ι'), (κ' i') -> (Set.{u1} α)}, (forall (i' : ι') (j' : κ' i'), Exists.{u2} ι (fun (i : ι) => Exists.{u4} (κ i) (fun (j : κ i) => HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i j) (t i' j')))) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u4} α (κ i) (fun (j : κ i) => s i j))) (Set.interᵢ.{u1, u3} α ι' (fun (i' : ι') => Set.interᵢ.{u1, u5} α (κ' i') (fun (j' : κ' i') => t i' j'))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} {κ : ι -> Sort.{u4}} {κ' : ι' -> Sort.{u5}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i' : ι'), (κ' i') -> (Set.{u1} α)}, (forall (i' : ι') (j' : κ' i'), Exists.{u2} ι (fun (i : ι) => Exists.{u4} (κ i) (fun (j : κ i) => HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (s i j) (t i' j')))) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u4} α (κ i) (fun (j : κ i) => s i j))) (Set.iInter.{u1, u3} α ι' (fun (i' : ι') => Set.iInter.{u1, u5} α (κ' i') (fun (j' : κ' i') => t i' j'))))
but is expected to have type
- forall {α : Type.{u5}} {ι : Sort.{u4}} {ι' : Sort.{u2}} {κ : ι -> Sort.{u3}} {κ' : ι' -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u5} α)} {t : forall (i' : ι'), (κ' i') -> (Set.{u5} α)}, (forall (i' : ι') (j' : κ' i'), Exists.{u4} ι (fun (i : ι) => Exists.{u3} (κ i) (fun (j : κ i) => HasSubset.Subset.{u5} (Set.{u5} α) (Set.instHasSubsetSet.{u5} α) (s i j) (t i' j')))) -> (HasSubset.Subset.{u5} (Set.{u5} α) (Set.instHasSubsetSet.{u5} α) (Set.interᵢ.{u5, u4} α ι (fun (i : ι) => Set.interᵢ.{u5, u3} α (κ i) (fun (j : κ i) => s i j))) (Set.interᵢ.{u5, u2} α ι' (fun (i' : ι') => Set.interᵢ.{u5, u1} α (κ' i') (fun (j' : κ' i') => t i' j'))))
-Case conversion may be inaccurate. Consider using '#align set.Inter₂_mono' Set.interᵢ₂_mono'ₓ'. -/
+ forall {α : Type.{u5}} {ι : Sort.{u4}} {ι' : Sort.{u2}} {κ : ι -> Sort.{u3}} {κ' : ι' -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u5} α)} {t : forall (i' : ι'), (κ' i') -> (Set.{u5} α)}, (forall (i' : ι') (j' : κ' i'), Exists.{u4} ι (fun (i : ι) => Exists.{u3} (κ i) (fun (j : κ i) => HasSubset.Subset.{u5} (Set.{u5} α) (Set.instHasSubsetSet.{u5} α) (s i j) (t i' j')))) -> (HasSubset.Subset.{u5} (Set.{u5} α) (Set.instHasSubsetSet.{u5} α) (Set.iInter.{u5, u4} α ι (fun (i : ι) => Set.iInter.{u5, u3} α (κ i) (fun (j : κ i) => s i j))) (Set.iInter.{u5, u2} α ι' (fun (i' : ι') => Set.iInter.{u5, u1} α (κ' i') (fun (j' : κ' i') => t i' j'))))
+Case conversion may be inaccurate. Consider using '#align set.Inter₂_mono' Set.iInter₂_mono'ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i' j') -/
-theorem interᵢ₂_mono' {s : ∀ i, κ i → Set α} {t : ∀ i', κ' i' → Set α}
+theorem iInter₂_mono' {s : ∀ i, κ i → Set α} {t : ∀ i', κ' i' → Set α}
(h : ∀ i' j', ∃ i j, s i j ⊆ t i' j') : (⋂ (i) (j), s i j) ⊆ ⋂ (i') (j'), t i' j' :=
- subset_interᵢ₂_iff.2 fun i' j' =>
+ subset_iInter₂_iff.2 fun i' j' =>
let ⟨i, j, hst⟩ := h i' j'
- (interᵢ₂_subset _ _).trans hst
-#align set.Inter₂_mono' Set.interᵢ₂_mono'
+ (iInter₂_subset _ _).trans hst
+#align set.Inter₂_mono' Set.iInter₂_mono'
-/- warning: set.Union₂_subset_Union -> Set.unionᵢ₂_subset_unionᵢ is a dubious translation:
+/- warning: set.Union₂_subset_Union -> Set.iUnion₂_subset_iUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (κ : ι -> Sort.{u3}) (s : ι -> (Set.{u1} α)), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, u3} α (κ i) (fun (j : κ i) => s i))) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => s i))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} (κ : ι -> Sort.{u3}) (s : ι -> (Set.{u1} α)), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => s i))) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (κ : ι -> Sort.{u3}) (s : ι -> (Set.{u2} α)), HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => Set.unionᵢ.{u2, u3} α (κ i) (fun (j : κ i) => s i))) (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => s i))
-Case conversion may be inaccurate. Consider using '#align set.Union₂_subset_Union Set.unionᵢ₂_subset_unionᵢₓ'. -/
-theorem unionᵢ₂_subset_unionᵢ (κ : ι → Sort _) (s : ι → Set α) :
+ forall {α : Type.{u2}} {ι : Sort.{u1}} (κ : ι -> Sort.{u3}) (s : ι -> (Set.{u2} α)), HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => Set.iUnion.{u2, u3} α (κ i) (fun (j : κ i) => s i))) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => s i))
+Case conversion may be inaccurate. Consider using '#align set.Union₂_subset_Union Set.iUnion₂_subset_iUnionₓ'. -/
+theorem iUnion₂_subset_iUnion (κ : ι → Sort _) (s : ι → Set α) :
(⋃ (i) (j : κ i), s i) ⊆ ⋃ i, s i :=
- unionᵢ_mono fun i => unionᵢ_subset fun h => Subset.rfl
-#align set.Union₂_subset_Union Set.unionᵢ₂_subset_unionᵢ
+ iUnion_mono fun i => iUnion_subset fun h => Subset.rfl
+#align set.Union₂_subset_Union Set.iUnion₂_subset_iUnion
-/- warning: set.Inter_subset_Inter₂ -> Set.interᵢ_subset_interᵢ₂ is a dubious translation:
+/- warning: set.Inter_subset_Inter₂ -> Set.iInter_subset_iInter₂ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (κ : ι -> Sort.{u3}) (s : ι -> (Set.{u1} α)), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u3} α (κ i) (fun (j : κ i) => s i)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} (κ : ι -> Sort.{u3}) (s : ι -> (Set.{u1} α)), HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => s i)) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => s i)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (κ : ι -> Sort.{u3}) (s : ι -> (Set.{u2} α)), HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => Set.interᵢ.{u2, u3} α (κ i) (fun (j : κ i) => s i)))
-Case conversion may be inaccurate. Consider using '#align set.Inter_subset_Inter₂ Set.interᵢ_subset_interᵢ₂ₓ'. -/
-theorem interᵢ_subset_interᵢ₂ (κ : ι → Sort _) (s : ι → Set α) :
+ forall {α : Type.{u2}} {ι : Sort.{u1}} (κ : ι -> Sort.{u3}) (s : ι -> (Set.{u2} α)), HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => s i)) (Set.iInter.{u2, u1} α ι (fun (i : ι) => Set.iInter.{u2, u3} α (κ i) (fun (j : κ i) => s i)))
+Case conversion may be inaccurate. Consider using '#align set.Inter_subset_Inter₂ Set.iInter_subset_iInter₂ₓ'. -/
+theorem iInter_subset_iInter₂ (κ : ι → Sort _) (s : ι → Set α) :
(⋂ i, s i) ⊆ ⋂ (i) (j : κ i), s i :=
- interᵢ_mono fun i => subset_interᵢ fun h => Subset.rfl
-#align set.Inter_subset_Inter₂ Set.interᵢ_subset_interᵢ₂
+ iInter_mono fun i => subset_iInter fun h => Subset.rfl
+#align set.Inter_subset_Inter₂ Set.iInter_subset_iInter₂
-/- warning: set.Union_set_of -> Set.unionᵢ_setOf is a dubious translation:
+/- warning: set.Union_set_of -> Set.iUnion_setOf is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (P : ι -> α -> Prop), Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => setOf.{u1} α (fun (x : α) => P i x))) (setOf.{u1} α (fun (x : α) => Exists.{u2} ι (fun (i : ι) => P i x)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} (P : ι -> α -> Prop), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => setOf.{u1} α (fun (x : α) => P i x))) (setOf.{u1} α (fun (x : α) => Exists.{u2} ι (fun (i : ι) => P i x)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (P : ι -> α -> Prop), Eq.{succ u2} (Set.{u2} α) (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => setOf.{u2} α (fun (x : α) => P i x))) (setOf.{u2} α (fun (x : α) => Exists.{u1} ι (fun (i : ι) => P i x)))
-Case conversion may be inaccurate. Consider using '#align set.Union_set_of Set.unionᵢ_setOfₓ'. -/
-theorem unionᵢ_setOf (P : ι → α → Prop) : (⋃ i, { x : α | P i x }) = { x : α | ∃ i, P i x } :=
+ forall {α : Type.{u2}} {ι : Sort.{u1}} (P : ι -> α -> Prop), Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => setOf.{u2} α (fun (x : α) => P i x))) (setOf.{u2} α (fun (x : α) => Exists.{u1} ι (fun (i : ι) => P i x)))
+Case conversion may be inaccurate. Consider using '#align set.Union_set_of Set.iUnion_setOfₓ'. -/
+theorem iUnion_setOf (P : ι → α → Prop) : (⋃ i, { x : α | P i x }) = { x : α | ∃ i, P i x } :=
by
ext
exact mem_Union
-#align set.Union_set_of Set.unionᵢ_setOf
+#align set.Union_set_of Set.iUnion_setOf
-/- warning: set.Inter_set_of -> Set.interᵢ_setOf is a dubious translation:
+/- warning: set.Inter_set_of -> Set.iInter_setOf is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (P : ι -> α -> Prop), Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => setOf.{u1} α (fun (x : α) => P i x))) (setOf.{u1} α (fun (x : α) => forall (i : ι), P i x))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} (P : ι -> α -> Prop), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => setOf.{u1} α (fun (x : α) => P i x))) (setOf.{u1} α (fun (x : α) => forall (i : ι), P i x))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (P : ι -> α -> Prop), Eq.{succ u2} (Set.{u2} α) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => setOf.{u2} α (fun (x : α) => P i x))) (setOf.{u2} α (fun (x : α) => forall (i : ι), P i x))
-Case conversion may be inaccurate. Consider using '#align set.Inter_set_of Set.interᵢ_setOfₓ'. -/
-theorem interᵢ_setOf (P : ι → α → Prop) : (⋂ i, { x : α | P i x }) = { x : α | ∀ i, P i x } :=
+ forall {α : Type.{u2}} {ι : Sort.{u1}} (P : ι -> α -> Prop), Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => setOf.{u2} α (fun (x : α) => P i x))) (setOf.{u2} α (fun (x : α) => forall (i : ι), P i x))
+Case conversion may be inaccurate. Consider using '#align set.Inter_set_of Set.iInter_setOfₓ'. -/
+theorem iInter_setOf (P : ι → α → Prop) : (⋂ i, { x : α | P i x }) = { x : α | ∀ i, P i x } :=
by
ext
exact mem_Inter
-#align set.Inter_set_of Set.interᵢ_setOf
+#align set.Inter_set_of Set.iInter_setOf
-/- warning: set.Union_congr_of_surjective -> Set.unionᵢ_congr_of_surjective is a dubious translation:
+/- warning: set.Union_congr_of_surjective -> Set.iUnion_congr_of_surjective is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι₂ : Sort.{u3}} {f : ι -> (Set.{u1} α)} {g : ι₂ -> (Set.{u1} α)} (h : ι -> ι₂), (Function.Surjective.{u2, u3} ι ι₂ h) -> (forall (x : ι), Eq.{succ u1} (Set.{u1} α) (g (h x)) (f x)) -> (Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (x : ι) => f x)) (Set.unionᵢ.{u1, u3} α ι₂ (fun (y : ι₂) => g y)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {ι₂ : Sort.{u3}} {f : ι -> (Set.{u1} α)} {g : ι₂ -> (Set.{u1} α)} (h : ι -> ι₂), (Function.Surjective.{u2, u3} ι ι₂ h) -> (forall (x : ι), Eq.{succ u1} (Set.{u1} α) (g (h x)) (f x)) -> (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (x : ι) => f x)) (Set.iUnion.{u1, u3} α ι₂ (fun (y : ι₂) => g y)))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {ι₂ : Sort.{u1}} {f : ι -> (Set.{u3} α)} {g : ι₂ -> (Set.{u3} α)} (h : ι -> ι₂), (Function.Surjective.{u2, u1} ι ι₂ h) -> (forall (x : ι), Eq.{succ u3} (Set.{u3} α) (g (h x)) (f x)) -> (Eq.{succ u3} (Set.{u3} α) (Set.unionᵢ.{u3, u2} α ι (fun (x : ι) => f x)) (Set.unionᵢ.{u3, u1} α ι₂ (fun (y : ι₂) => g y)))
-Case conversion may be inaccurate. Consider using '#align set.Union_congr_of_surjective Set.unionᵢ_congr_of_surjectiveₓ'. -/
-theorem unionᵢ_congr_of_surjective {f : ι → Set α} {g : ι₂ → Set α} (h : ι → ι₂) (h1 : Surjective h)
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {ι₂ : Sort.{u1}} {f : ι -> (Set.{u3} α)} {g : ι₂ -> (Set.{u3} α)} (h : ι -> ι₂), (Function.Surjective.{u2, u1} ι ι₂ h) -> (forall (x : ι), Eq.{succ u3} (Set.{u3} α) (g (h x)) (f x)) -> (Eq.{succ u3} (Set.{u3} α) (Set.iUnion.{u3, u2} α ι (fun (x : ι) => f x)) (Set.iUnion.{u3, u1} α ι₂ (fun (y : ι₂) => g y)))
+Case conversion may be inaccurate. Consider using '#align set.Union_congr_of_surjective Set.iUnion_congr_of_surjectiveₓ'. -/
+theorem iUnion_congr_of_surjective {f : ι → Set α} {g : ι₂ → Set α} (h : ι → ι₂) (h1 : Surjective h)
(h2 : ∀ x, g (h x) = f x) : (⋃ x, f x) = ⋃ y, g y :=
- h1.supᵢ_congr h h2
-#align set.Union_congr_of_surjective Set.unionᵢ_congr_of_surjective
+ h1.iSup_congr h h2
+#align set.Union_congr_of_surjective Set.iUnion_congr_of_surjective
-/- warning: set.Inter_congr_of_surjective -> Set.interᵢ_congr_of_surjective is a dubious translation:
+/- warning: set.Inter_congr_of_surjective -> Set.iInter_congr_of_surjective is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι₂ : Sort.{u3}} {f : ι -> (Set.{u1} α)} {g : ι₂ -> (Set.{u1} α)} (h : ι -> ι₂), (Function.Surjective.{u2, u3} ι ι₂ h) -> (forall (x : ι), Eq.{succ u1} (Set.{u1} α) (g (h x)) (f x)) -> (Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (x : ι) => f x)) (Set.interᵢ.{u1, u3} α ι₂ (fun (y : ι₂) => g y)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {ι₂ : Sort.{u3}} {f : ι -> (Set.{u1} α)} {g : ι₂ -> (Set.{u1} α)} (h : ι -> ι₂), (Function.Surjective.{u2, u3} ι ι₂ h) -> (forall (x : ι), Eq.{succ u1} (Set.{u1} α) (g (h x)) (f x)) -> (Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (x : ι) => f x)) (Set.iInter.{u1, u3} α ι₂ (fun (y : ι₂) => g y)))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {ι₂ : Sort.{u1}} {f : ι -> (Set.{u3} α)} {g : ι₂ -> (Set.{u3} α)} (h : ι -> ι₂), (Function.Surjective.{u2, u1} ι ι₂ h) -> (forall (x : ι), Eq.{succ u3} (Set.{u3} α) (g (h x)) (f x)) -> (Eq.{succ u3} (Set.{u3} α) (Set.interᵢ.{u3, u2} α ι (fun (x : ι) => f x)) (Set.interᵢ.{u3, u1} α ι₂ (fun (y : ι₂) => g y)))
-Case conversion may be inaccurate. Consider using '#align set.Inter_congr_of_surjective Set.interᵢ_congr_of_surjectiveₓ'. -/
-theorem interᵢ_congr_of_surjective {f : ι → Set α} {g : ι₂ → Set α} (h : ι → ι₂) (h1 : Surjective h)
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {ι₂ : Sort.{u1}} {f : ι -> (Set.{u3} α)} {g : ι₂ -> (Set.{u3} α)} (h : ι -> ι₂), (Function.Surjective.{u2, u1} ι ι₂ h) -> (forall (x : ι), Eq.{succ u3} (Set.{u3} α) (g (h x)) (f x)) -> (Eq.{succ u3} (Set.{u3} α) (Set.iInter.{u3, u2} α ι (fun (x : ι) => f x)) (Set.iInter.{u3, u1} α ι₂ (fun (y : ι₂) => g y)))
+Case conversion may be inaccurate. Consider using '#align set.Inter_congr_of_surjective Set.iInter_congr_of_surjectiveₓ'. -/
+theorem iInter_congr_of_surjective {f : ι → Set α} {g : ι₂ → Set α} (h : ι → ι₂) (h1 : Surjective h)
(h2 : ∀ x, g (h x) = f x) : (⋂ x, f x) = ⋂ y, g y :=
- h1.infᵢ_congr h h2
-#align set.Inter_congr_of_surjective Set.interᵢ_congr_of_surjective
+ h1.iInf_congr h h2
+#align set.Inter_congr_of_surjective Set.iInter_congr_of_surjective
-/- warning: set.Union_congr -> Set.unionᵢ_congr is a dubious translation:
+/- warning: set.Union_congr -> Set.iUnion_congr is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (forall (i : ι), Eq.{succ u1} (Set.{u1} α) (s i) (t i)) -> (Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => t i)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (forall (i : ι), Eq.{succ u1} (Set.{u1} α) (s i) (t i)) -> (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i)) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => t i)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (forall (i : ι), Eq.{succ u2} (Set.{u2} α) (s i) (t i)) -> (Eq.{succ u2} (Set.{u2} α) (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.Union_congr Set.unionᵢ_congrₓ'. -/
-theorem unionᵢ_congr {s t : ι → Set α} (h : ∀ i, s i = t i) : (⋃ i, s i) = ⋃ i, t i :=
- supᵢ_congr h
-#align set.Union_congr Set.unionᵢ_congr
+ forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (forall (i : ι), Eq.{succ u2} (Set.{u2} α) (s i) (t i)) -> (Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => t i)))
+Case conversion may be inaccurate. Consider using '#align set.Union_congr Set.iUnion_congrₓ'. -/
+theorem iUnion_congr {s t : ι → Set α} (h : ∀ i, s i = t i) : (⋃ i, s i) = ⋃ i, t i :=
+ iSup_congr h
+#align set.Union_congr Set.iUnion_congr
-/- warning: set.Inter_congr -> Set.interᵢ_congr is a dubious translation:
+/- warning: set.Inter_congr -> Set.iInter_congr is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (forall (i : ι), Eq.{succ u1} (Set.{u1} α) (s i) (t i)) -> (Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => t i)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (forall (i : ι), Eq.{succ u1} (Set.{u1} α) (s i) (t i)) -> (Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => s i)) (Set.iInter.{u1, u2} α ι (fun (i : ι) => t i)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (forall (i : ι), Eq.{succ u2} (Set.{u2} α) (s i) (t i)) -> (Eq.{succ u2} (Set.{u2} α) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.Inter_congr Set.interᵢ_congrₓ'. -/
-theorem interᵢ_congr {s t : ι → Set α} (h : ∀ i, s i = t i) : (⋂ i, s i) = ⋂ i, t i :=
- infᵢ_congr h
-#align set.Inter_congr Set.interᵢ_congr
+ forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (forall (i : ι), Eq.{succ u2} (Set.{u2} α) (s i) (t i)) -> (Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => s i)) (Set.iInter.{u2, u1} α ι (fun (i : ι) => t i)))
+Case conversion may be inaccurate. Consider using '#align set.Inter_congr Set.iInter_congrₓ'. -/
+theorem iInter_congr {s t : ι → Set α} (h : ∀ i, s i = t i) : (⋂ i, s i) = ⋂ i, t i :=
+ iInf_congr h
+#align set.Inter_congr Set.iInter_congr
-/- warning: set.Union₂_congr -> Set.unionᵢ₂_congr is a dubious translation:
+/- warning: set.Union₂_congr -> Set.iUnion₂_congr is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i : ι), (κ i) -> (Set.{u1} α)}, (forall (i : ι) (j : κ i), Eq.{succ u1} (Set.{u1} α) (s i j) (t i j)) -> (Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, u3} α (κ i) (fun (j : κ i) => t i j))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i : ι), (κ i) -> (Set.{u1} α)}, (forall (i : ι) (j : κ i), Eq.{succ u1} (Set.{u1} α) (s i j) (t i j)) -> (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => t i j))))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {t : forall (i : ι), (κ i) -> (Set.{u3} α)}, (forall (i : ι) (j : κ i), Eq.{succ u3} (Set.{u3} α) (s i j) (t i j)) -> (Eq.{succ u3} (Set.{u3} α) (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => Set.unionᵢ.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => Set.unionᵢ.{u3, u1} α (κ i) (fun (j : κ i) => t i j))))
-Case conversion may be inaccurate. Consider using '#align set.Union₂_congr Set.unionᵢ₂_congrₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {t : forall (i : ι), (κ i) -> (Set.{u3} α)}, (forall (i : ι) (j : κ i), Eq.{succ u3} (Set.{u3} α) (s i j) (t i j)) -> (Eq.{succ u3} (Set.{u3} α) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => t i j))))
+Case conversion may be inaccurate. Consider using '#align set.Union₂_congr Set.iUnion₂_congrₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem unionᵢ₂_congr {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j = t i j) :
+theorem iUnion₂_congr {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j = t i j) :
(⋃ (i) (j), s i j) = ⋃ (i) (j), t i j :=
- unionᵢ_congr fun i => unionᵢ_congr <| h i
-#align set.Union₂_congr Set.unionᵢ₂_congr
+ iUnion_congr fun i => iUnion_congr <| h i
+#align set.Union₂_congr Set.iUnion₂_congr
-/- warning: set.Inter₂_congr -> Set.interᵢ₂_congr is a dubious translation:
+/- warning: set.Inter₂_congr -> Set.iInter₂_congr is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i : ι), (κ i) -> (Set.{u1} α)}, (forall (i : ι) (j : κ i), Eq.{succ u1} (Set.{u1} α) (s i j) (t i j)) -> (Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u3} α (κ i) (fun (j : κ i) => t i j))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i : ι), (κ i) -> (Set.{u1} α)}, (forall (i : ι) (j : κ i), Eq.{succ u1} (Set.{u1} α) (s i j) (t i j)) -> (Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => t i j))))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {t : forall (i : ι), (κ i) -> (Set.{u3} α)}, (forall (i : ι) (j : κ i), Eq.{succ u3} (Set.{u3} α) (s i j) (t i j)) -> (Eq.{succ u3} (Set.{u3} α) (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, u1} α (κ i) (fun (j : κ i) => t i j))))
-Case conversion may be inaccurate. Consider using '#align set.Inter₂_congr Set.interᵢ₂_congrₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {t : forall (i : ι), (κ i) -> (Set.{u3} α)}, (forall (i : ι) (j : κ i), Eq.{succ u3} (Set.{u3} α) (s i j) (t i j)) -> (Eq.{succ u3} (Set.{u3} α) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => t i j))))
+Case conversion may be inaccurate. Consider using '#align set.Inter₂_congr Set.iInter₂_congrₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem interᵢ₂_congr {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j = t i j) :
+theorem iInter₂_congr {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j = t i j) :
(⋂ (i) (j), s i j) = ⋂ (i) (j), t i j :=
- interᵢ_congr fun i => interᵢ_congr <| h i
-#align set.Inter₂_congr Set.interᵢ₂_congr
+ iInter_congr fun i => iInter_congr <| h i
+#align set.Inter₂_congr Set.iInter₂_congr
section Nonempty
variable [Nonempty ι] {f : ι → Set α} {s : Set α}
-/- warning: set.Union_const -> Set.unionᵢ_const is a dubious translation:
+/- warning: set.Union_const -> Set.iUnion_const is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β), Eq.{succ u1} (Set.{u1} β) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => s)) s
+ forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β), Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => s)) s
but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : Nonempty.{u1} ι] (s : Set.{u2} β), Eq.{succ u2} (Set.{u2} β) (Set.unionᵢ.{u2, u1} β ι (fun (i : ι) => s)) s
-Case conversion may be inaccurate. Consider using '#align set.Union_const Set.unionᵢ_constₓ'. -/
-theorem unionᵢ_const (s : Set β) : (⋃ i : ι, s) = s :=
- supᵢ_const
-#align set.Union_const Set.unionᵢ_const
+ forall {β : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : Nonempty.{u1} ι] (s : Set.{u2} β), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => s)) s
+Case conversion may be inaccurate. Consider using '#align set.Union_const Set.iUnion_constₓ'. -/
+theorem iUnion_const (s : Set β) : (⋃ i : ι, s) = s :=
+ iSup_const
+#align set.Union_const Set.iUnion_const
-/- warning: set.Inter_const -> Set.interᵢ_const is a dubious translation:
+/- warning: set.Inter_const -> Set.iInter_const is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β), Eq.{succ u1} (Set.{u1} β) (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => s)) s
+ forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β), Eq.{succ u1} (Set.{u1} β) (Set.iInter.{u1, u2} β ι (fun (i : ι) => s)) s
but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : Nonempty.{u1} ι] (s : Set.{u2} β), Eq.{succ u2} (Set.{u2} β) (Set.interᵢ.{u2, u1} β ι (fun (i : ι) => s)) s
-Case conversion may be inaccurate. Consider using '#align set.Inter_const Set.interᵢ_constₓ'. -/
-theorem interᵢ_const (s : Set β) : (⋂ i : ι, s) = s :=
- infᵢ_const
-#align set.Inter_const Set.interᵢ_const
+ forall {β : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : Nonempty.{u1} ι] (s : Set.{u2} β), Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, u1} β ι (fun (i : ι) => s)) s
+Case conversion may be inaccurate. Consider using '#align set.Inter_const Set.iInter_constₓ'. -/
+theorem iInter_const (s : Set β) : (⋂ i : ι, s) = s :=
+ iInf_const
+#align set.Inter_const Set.iInter_const
-/- warning: set.Union_eq_const -> Set.unionᵢ_eq_const is a dubious translation:
+/- warning: set.Union_eq_const -> Set.iUnion_eq_const is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] {f : ι -> (Set.{u1} α)} {s : Set.{u1} α}, (forall (i : ι), Eq.{succ u1} (Set.{u1} α) (f i) s) -> (Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => f i)) s)
+ forall {α : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] {f : ι -> (Set.{u1} α)} {s : Set.{u1} α}, (forall (i : ι), Eq.{succ u1} (Set.{u1} α) (f i) s) -> (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => f i)) s)
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : Nonempty.{u1} ι] {f : ι -> (Set.{u2} α)} {s : Set.{u2} α}, (forall (i : ι), Eq.{succ u2} (Set.{u2} α) (f i) s) -> (Eq.{succ u2} (Set.{u2} α) (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => f i)) s)
-Case conversion may be inaccurate. Consider using '#align set.Union_eq_const Set.unionᵢ_eq_constₓ'. -/
-theorem unionᵢ_eq_const (hf : ∀ i, f i = s) : (⋃ i, f i) = s :=
- (unionᵢ_congr hf).trans <| unionᵢ_const _
-#align set.Union_eq_const Set.unionᵢ_eq_const
+ forall {α : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : Nonempty.{u1} ι] {f : ι -> (Set.{u2} α)} {s : Set.{u2} α}, (forall (i : ι), Eq.{succ u2} (Set.{u2} α) (f i) s) -> (Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => f i)) s)
+Case conversion may be inaccurate. Consider using '#align set.Union_eq_const Set.iUnion_eq_constₓ'. -/
+theorem iUnion_eq_const (hf : ∀ i, f i = s) : (⋃ i, f i) = s :=
+ (iUnion_congr hf).trans <| iUnion_const _
+#align set.Union_eq_const Set.iUnion_eq_const
-/- warning: set.Inter_eq_const -> Set.interᵢ_eq_const is a dubious translation:
+/- warning: set.Inter_eq_const -> Set.iInter_eq_const is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] {f : ι -> (Set.{u1} α)} {s : Set.{u1} α}, (forall (i : ι), Eq.{succ u1} (Set.{u1} α) (f i) s) -> (Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => f i)) s)
+ forall {α : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] {f : ι -> (Set.{u1} α)} {s : Set.{u1} α}, (forall (i : ι), Eq.{succ u1} (Set.{u1} α) (f i) s) -> (Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => f i)) s)
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : Nonempty.{u1} ι] {f : ι -> (Set.{u2} α)} {s : Set.{u2} α}, (forall (i : ι), Eq.{succ u2} (Set.{u2} α) (f i) s) -> (Eq.{succ u2} (Set.{u2} α) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => f i)) s)
-Case conversion may be inaccurate. Consider using '#align set.Inter_eq_const Set.interᵢ_eq_constₓ'. -/
-theorem interᵢ_eq_const (hf : ∀ i, f i = s) : (⋂ i, f i) = s :=
- (interᵢ_congr hf).trans <| interᵢ_const _
-#align set.Inter_eq_const Set.interᵢ_eq_const
+ forall {α : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : Nonempty.{u1} ι] {f : ι -> (Set.{u2} α)} {s : Set.{u2} α}, (forall (i : ι), Eq.{succ u2} (Set.{u2} α) (f i) s) -> (Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => f i)) s)
+Case conversion may be inaccurate. Consider using '#align set.Inter_eq_const Set.iInter_eq_constₓ'. -/
+theorem iInter_eq_const (hf : ∀ i, f i = s) : (⋂ i, f i) = s :=
+ (iInter_congr hf).trans <| iInter_const _
+#align set.Inter_eq_const Set.iInter_eq_const
end Nonempty
-/- warning: set.compl_Union -> Set.compl_unionᵢ is a dubious translation:
+/- warning: set.compl_Union -> Set.compl_iUnion is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (HasCompl.compl.{u1} (Set.{u1} β) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => s i))) (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => HasCompl.compl.{u1} (Set.{u1} β) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (s i)))
+ forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (HasCompl.compl.{u1} (Set.{u1} β) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => s i))) (Set.iInter.{u1, u2} β ι (fun (i : ι) => HasCompl.compl.{u1} (Set.{u1} β) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (s i)))
but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (HasCompl.compl.{u2} (Set.{u2} β) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} β) (Set.instBooleanAlgebraSet.{u2} β)) (Set.unionᵢ.{u2, u1} β ι (fun (i : ι) => s i))) (Set.interᵢ.{u2, u1} β ι (fun (i : ι) => HasCompl.compl.{u2} (Set.{u2} β) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} β) (Set.instBooleanAlgebraSet.{u2} β)) (s i)))
-Case conversion may be inaccurate. Consider using '#align set.compl_Union Set.compl_unionᵢₓ'. -/
+ forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (HasCompl.compl.{u2} (Set.{u2} β) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} β) (Set.instBooleanAlgebraSet.{u2} β)) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => s i))) (Set.iInter.{u2, u1} β ι (fun (i : ι) => HasCompl.compl.{u2} (Set.{u2} β) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} β) (Set.instBooleanAlgebraSet.{u2} β)) (s i)))
+Case conversion may be inaccurate. Consider using '#align set.compl_Union Set.compl_iUnionₓ'. -/
@[simp]
-theorem compl_unionᵢ (s : ι → Set β) : (⋃ i, s i)ᶜ = ⋂ i, s iᶜ :=
- compl_supᵢ
-#align set.compl_Union Set.compl_unionᵢ
+theorem compl_iUnion (s : ι → Set β) : (⋃ i, s i)ᶜ = ⋂ i, s iᶜ :=
+ compl_iSup
+#align set.compl_Union Set.compl_iUnion
-/- warning: set.compl_Union₂ -> Set.compl_unionᵢ₂ is a dubious translation:
+/- warning: set.compl_Union₂ -> Set.compl_iUnion₂ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} (s : forall (i : ι), (κ i) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, u3} α (κ i) (fun (j : κ i) => s i j)))) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u3} α (κ i) (fun (j : κ i) => HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (s i j))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} (s : forall (i : ι), (κ i) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => s i j)))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (s i j))))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : forall (i : ι), (κ i) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (HasCompl.compl.{u3} (Set.{u3} α) (BooleanAlgebra.toHasCompl.{u3} (Set.{u3} α) (Set.instBooleanAlgebraSet.{u3} α)) (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => Set.unionᵢ.{u3, u1} α (κ i) (fun (j : κ i) => s i j)))) (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, u1} α (κ i) (fun (j : κ i) => HasCompl.compl.{u3} (Set.{u3} α) (BooleanAlgebra.toHasCompl.{u3} (Set.{u3} α) (Set.instBooleanAlgebraSet.{u3} α)) (s i j))))
-Case conversion may be inaccurate. Consider using '#align set.compl_Union₂ Set.compl_unionᵢ₂ₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : forall (i : ι), (κ i) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (HasCompl.compl.{u3} (Set.{u3} α) (BooleanAlgebra.toHasCompl.{u3} (Set.{u3} α) (Set.instBooleanAlgebraSet.{u3} α)) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => s i j)))) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => HasCompl.compl.{u3} (Set.{u3} α) (BooleanAlgebra.toHasCompl.{u3} (Set.{u3} α) (Set.instBooleanAlgebraSet.{u3} α)) (s i j))))
+Case conversion may be inaccurate. Consider using '#align set.compl_Union₂ Set.compl_iUnion₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem compl_unionᵢ₂ (s : ∀ i, κ i → Set α) : (⋃ (i) (j), s i j)ᶜ = ⋂ (i) (j), s i jᶜ := by
+theorem compl_iUnion₂ (s : ∀ i, κ i → Set α) : (⋃ (i) (j), s i j)ᶜ = ⋂ (i) (j), s i jᶜ := by
simp_rw [compl_Union]
-#align set.compl_Union₂ Set.compl_unionᵢ₂
+#align set.compl_Union₂ Set.compl_iUnion₂
-/- warning: set.compl_Inter -> Set.compl_interᵢ is a dubious translation:
+/- warning: set.compl_Inter -> Set.compl_iInter is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (HasCompl.compl.{u1} (Set.{u1} β) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => s i))) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => HasCompl.compl.{u1} (Set.{u1} β) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (s i)))
+ forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (HasCompl.compl.{u1} (Set.{u1} β) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (Set.iInter.{u1, u2} β ι (fun (i : ι) => s i))) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => HasCompl.compl.{u1} (Set.{u1} β) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (s i)))
but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (HasCompl.compl.{u2} (Set.{u2} β) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} β) (Set.instBooleanAlgebraSet.{u2} β)) (Set.interᵢ.{u2, u1} β ι (fun (i : ι) => s i))) (Set.unionᵢ.{u2, u1} β ι (fun (i : ι) => HasCompl.compl.{u2} (Set.{u2} β) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} β) (Set.instBooleanAlgebraSet.{u2} β)) (s i)))
-Case conversion may be inaccurate. Consider using '#align set.compl_Inter Set.compl_interᵢₓ'. -/
+ forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (HasCompl.compl.{u2} (Set.{u2} β) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} β) (Set.instBooleanAlgebraSet.{u2} β)) (Set.iInter.{u2, u1} β ι (fun (i : ι) => s i))) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => HasCompl.compl.{u2} (Set.{u2} β) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} β) (Set.instBooleanAlgebraSet.{u2} β)) (s i)))
+Case conversion may be inaccurate. Consider using '#align set.compl_Inter Set.compl_iInterₓ'. -/
@[simp]
-theorem compl_interᵢ (s : ι → Set β) : (⋂ i, s i)ᶜ = ⋃ i, s iᶜ :=
- compl_infᵢ
-#align set.compl_Inter Set.compl_interᵢ
+theorem compl_iInter (s : ι → Set β) : (⋂ i, s i)ᶜ = ⋃ i, s iᶜ :=
+ compl_iInf
+#align set.compl_Inter Set.compl_iInter
-/- warning: set.compl_Inter₂ -> Set.compl_interᵢ₂ is a dubious translation:
+/- warning: set.compl_Inter₂ -> Set.compl_iInter₂ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} (s : forall (i : ι), (κ i) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u3} α (κ i) (fun (j : κ i) => s i j)))) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, u3} α (κ i) (fun (j : κ i) => HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (s i j))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} (s : forall (i : ι), (κ i) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => s i j)))) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (s i j))))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : forall (i : ι), (κ i) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (HasCompl.compl.{u3} (Set.{u3} α) (BooleanAlgebra.toHasCompl.{u3} (Set.{u3} α) (Set.instBooleanAlgebraSet.{u3} α)) (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, u1} α (κ i) (fun (j : κ i) => s i j)))) (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => Set.unionᵢ.{u3, u1} α (κ i) (fun (j : κ i) => HasCompl.compl.{u3} (Set.{u3} α) (BooleanAlgebra.toHasCompl.{u3} (Set.{u3} α) (Set.instBooleanAlgebraSet.{u3} α)) (s i j))))
-Case conversion may be inaccurate. Consider using '#align set.compl_Inter₂ Set.compl_interᵢ₂ₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : forall (i : ι), (κ i) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (HasCompl.compl.{u3} (Set.{u3} α) (BooleanAlgebra.toHasCompl.{u3} (Set.{u3} α) (Set.instBooleanAlgebraSet.{u3} α)) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => s i j)))) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => HasCompl.compl.{u3} (Set.{u3} α) (BooleanAlgebra.toHasCompl.{u3} (Set.{u3} α) (Set.instBooleanAlgebraSet.{u3} α)) (s i j))))
+Case conversion may be inaccurate. Consider using '#align set.compl_Inter₂ Set.compl_iInter₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem compl_interᵢ₂ (s : ∀ i, κ i → Set α) : (⋂ (i) (j), s i j)ᶜ = ⋃ (i) (j), s i jᶜ := by
+theorem compl_iInter₂ (s : ∀ i, κ i → Set α) : (⋂ (i) (j), s i j)ᶜ = ⋃ (i) (j), s i jᶜ := by
simp_rw [compl_Inter]
-#align set.compl_Inter₂ Set.compl_interᵢ₂
+#align set.compl_Inter₂ Set.compl_iInter₂
-/- warning: set.Union_eq_compl_Inter_compl -> Set.unionᵢ_eq_compl_interᵢ_compl is a dubious translation:
+/- warning: set.Union_eq_compl_Inter_compl -> Set.iUnion_eq_compl_iInter_compl is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => s i)) (HasCompl.compl.{u1} (Set.{u1} β) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => HasCompl.compl.{u1} (Set.{u1} β) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (s i))))
+ forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => s i)) (HasCompl.compl.{u1} (Set.{u1} β) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (Set.iInter.{u1, u2} β ι (fun (i : ι) => HasCompl.compl.{u1} (Set.{u1} β) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (s i))))
but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.unionᵢ.{u2, u1} β ι (fun (i : ι) => s i)) (HasCompl.compl.{u2} (Set.{u2} β) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} β) (Set.instBooleanAlgebraSet.{u2} β)) (Set.interᵢ.{u2, u1} β ι (fun (i : ι) => HasCompl.compl.{u2} (Set.{u2} β) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} β) (Set.instBooleanAlgebraSet.{u2} β)) (s i))))
-Case conversion may be inaccurate. Consider using '#align set.Union_eq_compl_Inter_compl Set.unionᵢ_eq_compl_interᵢ_complₓ'. -/
+ forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => s i)) (HasCompl.compl.{u2} (Set.{u2} β) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} β) (Set.instBooleanAlgebraSet.{u2} β)) (Set.iInter.{u2, u1} β ι (fun (i : ι) => HasCompl.compl.{u2} (Set.{u2} β) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} β) (Set.instBooleanAlgebraSet.{u2} β)) (s i))))
+Case conversion may be inaccurate. Consider using '#align set.Union_eq_compl_Inter_compl Set.iUnion_eq_compl_iInter_complₓ'. -/
-- classical -- complete_boolean_algebra
-theorem unionᵢ_eq_compl_interᵢ_compl (s : ι → Set β) : (⋃ i, s i) = (⋂ i, s iᶜ)ᶜ := by
+theorem iUnion_eq_compl_iInter_compl (s : ι → Set β) : (⋃ i, s i) = (⋂ i, s iᶜ)ᶜ := by
simp only [compl_Inter, compl_compl]
-#align set.Union_eq_compl_Inter_compl Set.unionᵢ_eq_compl_interᵢ_compl
+#align set.Union_eq_compl_Inter_compl Set.iUnion_eq_compl_iInter_compl
-/- warning: set.Inter_eq_compl_Union_compl -> Set.interᵢ_eq_compl_unionᵢ_compl is a dubious translation:
+/- warning: set.Inter_eq_compl_Union_compl -> Set.iInter_eq_compl_iUnion_compl is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => s i)) (HasCompl.compl.{u1} (Set.{u1} β) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => HasCompl.compl.{u1} (Set.{u1} β) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (s i))))
+ forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iInter.{u1, u2} β ι (fun (i : ι) => s i)) (HasCompl.compl.{u1} (Set.{u1} β) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => HasCompl.compl.{u1} (Set.{u1} β) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (s i))))
but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.interᵢ.{u2, u1} β ι (fun (i : ι) => s i)) (HasCompl.compl.{u2} (Set.{u2} β) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} β) (Set.instBooleanAlgebraSet.{u2} β)) (Set.unionᵢ.{u2, u1} β ι (fun (i : ι) => HasCompl.compl.{u2} (Set.{u2} β) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} β) (Set.instBooleanAlgebraSet.{u2} β)) (s i))))
-Case conversion may be inaccurate. Consider using '#align set.Inter_eq_compl_Union_compl Set.interᵢ_eq_compl_unionᵢ_complₓ'. -/
+ forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, u1} β ι (fun (i : ι) => s i)) (HasCompl.compl.{u2} (Set.{u2} β) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} β) (Set.instBooleanAlgebraSet.{u2} β)) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => HasCompl.compl.{u2} (Set.{u2} β) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} β) (Set.instBooleanAlgebraSet.{u2} β)) (s i))))
+Case conversion may be inaccurate. Consider using '#align set.Inter_eq_compl_Union_compl Set.iInter_eq_compl_iUnion_complₓ'. -/
-- classical -- complete_boolean_algebra
-theorem interᵢ_eq_compl_unionᵢ_compl (s : ι → Set β) : (⋂ i, s i) = (⋃ i, s iᶜ)ᶜ := by
+theorem iInter_eq_compl_iUnion_compl (s : ι → Set β) : (⋂ i, s i) = (⋃ i, s iᶜ)ᶜ := by
simp only [compl_Union, compl_compl]
-#align set.Inter_eq_compl_Union_compl Set.interᵢ_eq_compl_unionᵢ_compl
+#align set.Inter_eq_compl_Union_compl Set.iInter_eq_compl_iUnion_compl
-/- warning: set.inter_Union -> Set.inter_unionᵢ is a dubious translation:
+/- warning: set.inter_Union -> Set.inter_iUnion is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) s (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => t i))) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) s (t i)))
+ forall {β : Type.{u1}} {ι : Sort.{u2}} (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) s (Set.iUnion.{u1, u2} β ι (fun (i : ι) => t i))) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) s (t i)))
but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : Set.{u2} β) (t : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Inter.inter.{u2} (Set.{u2} β) (Set.instInterSet.{u2} β) s (Set.unionᵢ.{u2, u1} β ι (fun (i : ι) => t i))) (Set.unionᵢ.{u2, u1} β ι (fun (i : ι) => Inter.inter.{u2} (Set.{u2} β) (Set.instInterSet.{u2} β) s (t i)))
-Case conversion may be inaccurate. Consider using '#align set.inter_Union Set.inter_unionᵢₓ'. -/
-theorem inter_unionᵢ (s : Set β) (t : ι → Set β) : (s ∩ ⋃ i, t i) = ⋃ i, s ∩ t i :=
- inf_supᵢ_eq _ _
-#align set.inter_Union Set.inter_unionᵢ
+ forall {β : Type.{u2}} {ι : Sort.{u1}} (s : Set.{u2} β) (t : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Inter.inter.{u2} (Set.{u2} β) (Set.instInterSet.{u2} β) s (Set.iUnion.{u2, u1} β ι (fun (i : ι) => t i))) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => Inter.inter.{u2} (Set.{u2} β) (Set.instInterSet.{u2} β) s (t i)))
+Case conversion may be inaccurate. Consider using '#align set.inter_Union Set.inter_iUnionₓ'. -/
+theorem inter_iUnion (s : Set β) (t : ι → Set β) : (s ∩ ⋃ i, t i) = ⋃ i, s ∩ t i :=
+ inf_iSup_eq _ _
+#align set.inter_Union Set.inter_iUnion
-/- warning: set.Union_inter -> Set.unionᵢ_inter is a dubious translation:
+/- warning: set.Union_inter -> Set.iUnion_inter is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => t i)) s) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) (t i) s))
+ forall {β : Type.{u1}} {ι : Sort.{u2}} (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => t i)) s) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) (t i) s))
but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : Set.{u2} β) (t : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Inter.inter.{u2} (Set.{u2} β) (Set.instInterSet.{u2} β) (Set.unionᵢ.{u2, u1} β ι (fun (i : ι) => t i)) s) (Set.unionᵢ.{u2, u1} β ι (fun (i : ι) => Inter.inter.{u2} (Set.{u2} β) (Set.instInterSet.{u2} β) (t i) s))
-Case conversion may be inaccurate. Consider using '#align set.Union_inter Set.unionᵢ_interₓ'. -/
-theorem unionᵢ_inter (s : Set β) (t : ι → Set β) : (⋃ i, t i) ∩ s = ⋃ i, t i ∩ s :=
- supᵢ_inf_eq _ _
-#align set.Union_inter Set.unionᵢ_inter
+ forall {β : Type.{u2}} {ι : Sort.{u1}} (s : Set.{u2} β) (t : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Inter.inter.{u2} (Set.{u2} β) (Set.instInterSet.{u2} β) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => t i)) s) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => Inter.inter.{u2} (Set.{u2} β) (Set.instInterSet.{u2} β) (t i) s))
+Case conversion may be inaccurate. Consider using '#align set.Union_inter Set.iUnion_interₓ'. -/
+theorem iUnion_inter (s : Set β) (t : ι → Set β) : (⋃ i, t i) ∩ s = ⋃ i, t i ∩ s :=
+ iSup_inf_eq _ _
+#align set.Union_inter Set.iUnion_inter
-/- warning: set.Union_union_distrib -> Set.unionᵢ_union_distrib is a dubious translation:
+/- warning: set.Union_union_distrib -> Set.iUnion_union_distrib is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) (s i) (t i))) (Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => s i)) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => t i)))
+ forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) (s i) (t i))) (Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => s i)) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => t i)))
but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)) (t : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.unionᵢ.{u2, u1} β ι (fun (i : ι) => Union.union.{u2} (Set.{u2} β) (Set.instUnionSet.{u2} β) (s i) (t i))) (Union.union.{u2} (Set.{u2} β) (Set.instUnionSet.{u2} β) (Set.unionᵢ.{u2, u1} β ι (fun (i : ι) => s i)) (Set.unionᵢ.{u2, u1} β ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.Union_union_distrib Set.unionᵢ_union_distribₓ'. -/
-theorem unionᵢ_union_distrib (s : ι → Set β) (t : ι → Set β) :
+ forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)) (t : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => Union.union.{u2} (Set.{u2} β) (Set.instUnionSet.{u2} β) (s i) (t i))) (Union.union.{u2} (Set.{u2} β) (Set.instUnionSet.{u2} β) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => s i)) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => t i)))
+Case conversion may be inaccurate. Consider using '#align set.Union_union_distrib Set.iUnion_union_distribₓ'. -/
+theorem iUnion_union_distrib (s : ι → Set β) (t : ι → Set β) :
(⋃ i, s i ∪ t i) = (⋃ i, s i) ∪ ⋃ i, t i :=
- supᵢ_sup_eq
-#align set.Union_union_distrib Set.unionᵢ_union_distrib
+ iSup_sup_eq
+#align set.Union_union_distrib Set.iUnion_union_distrib
-/- warning: set.Inter_inter_distrib -> Set.interᵢ_inter_distrib is a dubious translation:
+/- warning: set.Inter_inter_distrib -> Set.iInter_inter_distrib is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) (s i) (t i))) (Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => s i)) (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => t i)))
+ forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iInter.{u1, u2} β ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) (s i) (t i))) (Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) (Set.iInter.{u1, u2} β ι (fun (i : ι) => s i)) (Set.iInter.{u1, u2} β ι (fun (i : ι) => t i)))
but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)) (t : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.interᵢ.{u2, u1} β ι (fun (i : ι) => Inter.inter.{u2} (Set.{u2} β) (Set.instInterSet.{u2} β) (s i) (t i))) (Inter.inter.{u2} (Set.{u2} β) (Set.instInterSet.{u2} β) (Set.interᵢ.{u2, u1} β ι (fun (i : ι) => s i)) (Set.interᵢ.{u2, u1} β ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.Inter_inter_distrib Set.interᵢ_inter_distribₓ'. -/
-theorem interᵢ_inter_distrib (s : ι → Set β) (t : ι → Set β) :
+ forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)) (t : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, u1} β ι (fun (i : ι) => Inter.inter.{u2} (Set.{u2} β) (Set.instInterSet.{u2} β) (s i) (t i))) (Inter.inter.{u2} (Set.{u2} β) (Set.instInterSet.{u2} β) (Set.iInter.{u2, u1} β ι (fun (i : ι) => s i)) (Set.iInter.{u2, u1} β ι (fun (i : ι) => t i)))
+Case conversion may be inaccurate. Consider using '#align set.Inter_inter_distrib Set.iInter_inter_distribₓ'. -/
+theorem iInter_inter_distrib (s : ι → Set β) (t : ι → Set β) :
(⋂ i, s i ∩ t i) = (⋂ i, s i) ∩ ⋂ i, t i :=
- infᵢ_inf_eq
-#align set.Inter_inter_distrib Set.interᵢ_inter_distrib
+ iInf_inf_eq
+#align set.Inter_inter_distrib Set.iInter_inter_distrib
-/- warning: set.union_Union -> Set.union_unionᵢ is a dubious translation:
+/- warning: set.union_Union -> Set.union_iUnion is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) s (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => t i))) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) s (t i)))
+ forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) s (Set.iUnion.{u1, u2} β ι (fun (i : ι) => t i))) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) s (t i)))
but is expected to have type
- forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Union.union.{u1} (Set.{u1} β) (Set.instUnionSet.{u1} β) s (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => t i))) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => Union.union.{u1} (Set.{u1} β) (Set.instUnionSet.{u1} β) s (t i)))
-Case conversion may be inaccurate. Consider using '#align set.union_Union Set.union_unionᵢₓ'. -/
-theorem union_unionᵢ [Nonempty ι] (s : Set β) (t : ι → Set β) : (s ∪ ⋃ i, t i) = ⋃ i, s ∪ t i :=
- sup_supᵢ
-#align set.union_Union Set.union_unionᵢ
+ forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Union.union.{u1} (Set.{u1} β) (Set.instUnionSet.{u1} β) s (Set.iUnion.{u1, u2} β ι (fun (i : ι) => t i))) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => Union.union.{u1} (Set.{u1} β) (Set.instUnionSet.{u1} β) s (t i)))
+Case conversion may be inaccurate. Consider using '#align set.union_Union Set.union_iUnionₓ'. -/
+theorem union_iUnion [Nonempty ι] (s : Set β) (t : ι → Set β) : (s ∪ ⋃ i, t i) = ⋃ i, s ∪ t i :=
+ sup_iSup
+#align set.union_Union Set.union_iUnion
-/- warning: set.Union_union -> Set.unionᵢ_union is a dubious translation:
+/- warning: set.Union_union -> Set.iUnion_union is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => t i)) s) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) (t i) s))
+ forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => t i)) s) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) (t i) s))
but is expected to have type
- forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Union.union.{u1} (Set.{u1} β) (Set.instUnionSet.{u1} β) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => t i)) s) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => Union.union.{u1} (Set.{u1} β) (Set.instUnionSet.{u1} β) (t i) s))
-Case conversion may be inaccurate. Consider using '#align set.Union_union Set.unionᵢ_unionₓ'. -/
-theorem unionᵢ_union [Nonempty ι] (s : Set β) (t : ι → Set β) : (⋃ i, t i) ∪ s = ⋃ i, t i ∪ s :=
- supᵢ_sup
-#align set.Union_union Set.unionᵢ_union
+ forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Union.union.{u1} (Set.{u1} β) (Set.instUnionSet.{u1} β) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => t i)) s) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => Union.union.{u1} (Set.{u1} β) (Set.instUnionSet.{u1} β) (t i) s))
+Case conversion may be inaccurate. Consider using '#align set.Union_union Set.iUnion_unionₓ'. -/
+theorem iUnion_union [Nonempty ι] (s : Set β) (t : ι → Set β) : (⋃ i, t i) ∪ s = ⋃ i, t i ∪ s :=
+ iSup_sup
+#align set.Union_union Set.iUnion_union
-/- warning: set.inter_Inter -> Set.inter_interᵢ is a dubious translation:
+/- warning: set.inter_Inter -> Set.inter_iInter is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) s (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => t i))) (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) s (t i)))
+ forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) s (Set.iInter.{u1, u2} β ι (fun (i : ι) => t i))) (Set.iInter.{u1, u2} β ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) s (t i)))
but is expected to have type
- forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Inter.inter.{u1} (Set.{u1} β) (Set.instInterSet.{u1} β) s (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => t i))) (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} β) (Set.instInterSet.{u1} β) s (t i)))
-Case conversion may be inaccurate. Consider using '#align set.inter_Inter Set.inter_interᵢₓ'. -/
-theorem inter_interᵢ [Nonempty ι] (s : Set β) (t : ι → Set β) : (s ∩ ⋂ i, t i) = ⋂ i, s ∩ t i :=
- inf_infᵢ
-#align set.inter_Inter Set.inter_interᵢ
+ forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Inter.inter.{u1} (Set.{u1} β) (Set.instInterSet.{u1} β) s (Set.iInter.{u1, u2} β ι (fun (i : ι) => t i))) (Set.iInter.{u1, u2} β ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} β) (Set.instInterSet.{u1} β) s (t i)))
+Case conversion may be inaccurate. Consider using '#align set.inter_Inter Set.inter_iInterₓ'. -/
+theorem inter_iInter [Nonempty ι] (s : Set β) (t : ι → Set β) : (s ∩ ⋂ i, t i) = ⋂ i, s ∩ t i :=
+ inf_iInf
+#align set.inter_Inter Set.inter_iInter
-/- warning: set.Inter_inter -> Set.interᵢ_inter is a dubious translation:
+/- warning: set.Inter_inter -> Set.iInter_inter is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => t i)) s) (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) (t i) s))
+ forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) (Set.iInter.{u1, u2} β ι (fun (i : ι) => t i)) s) (Set.iInter.{u1, u2} β ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} β) (Set.hasInter.{u1} β) (t i) s))
but is expected to have type
- forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Inter.inter.{u1} (Set.{u1} β) (Set.instInterSet.{u1} β) (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => t i)) s) (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} β) (Set.instInterSet.{u1} β) (t i) s))
-Case conversion may be inaccurate. Consider using '#align set.Inter_inter Set.interᵢ_interₓ'. -/
-theorem interᵢ_inter [Nonempty ι] (s : Set β) (t : ι → Set β) : (⋂ i, t i) ∩ s = ⋂ i, t i ∩ s :=
- infᵢ_inf
-#align set.Inter_inter Set.interᵢ_inter
+ forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Inter.inter.{u1} (Set.{u1} β) (Set.instInterSet.{u1} β) (Set.iInter.{u1, u2} β ι (fun (i : ι) => t i)) s) (Set.iInter.{u1, u2} β ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} β) (Set.instInterSet.{u1} β) (t i) s))
+Case conversion may be inaccurate. Consider using '#align set.Inter_inter Set.iInter_interₓ'. -/
+theorem iInter_inter [Nonempty ι] (s : Set β) (t : ι → Set β) : (⋂ i, t i) ∩ s = ⋂ i, t i ∩ s :=
+ iInf_inf
+#align set.Inter_inter Set.iInter_inter
-/- warning: set.union_Inter -> Set.union_interᵢ is a dubious translation:
+/- warning: set.union_Inter -> Set.union_iInter is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) s (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => t i))) (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) s (t i)))
+ forall {β : Type.{u1}} {ι : Sort.{u2}} (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) s (Set.iInter.{u1, u2} β ι (fun (i : ι) => t i))) (Set.iInter.{u1, u2} β ι (fun (i : ι) => Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) s (t i)))
but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : Set.{u2} β) (t : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Union.union.{u2} (Set.{u2} β) (Set.instUnionSet.{u2} β) s (Set.interᵢ.{u2, u1} β ι (fun (i : ι) => t i))) (Set.interᵢ.{u2, u1} β ι (fun (i : ι) => Union.union.{u2} (Set.{u2} β) (Set.instUnionSet.{u2} β) s (t i)))
-Case conversion may be inaccurate. Consider using '#align set.union_Inter Set.union_interᵢₓ'. -/
+ forall {β : Type.{u2}} {ι : Sort.{u1}} (s : Set.{u2} β) (t : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Union.union.{u2} (Set.{u2} β) (Set.instUnionSet.{u2} β) s (Set.iInter.{u2, u1} β ι (fun (i : ι) => t i))) (Set.iInter.{u2, u1} β ι (fun (i : ι) => Union.union.{u2} (Set.{u2} β) (Set.instUnionSet.{u2} β) s (t i)))
+Case conversion may be inaccurate. Consider using '#align set.union_Inter Set.union_iInterₓ'. -/
-- classical
-theorem union_interᵢ (s : Set β) (t : ι → Set β) : (s ∪ ⋂ i, t i) = ⋂ i, s ∪ t i :=
- sup_infᵢ_eq _ _
-#align set.union_Inter Set.union_interᵢ
+theorem union_iInter (s : Set β) (t : ι → Set β) : (s ∪ ⋂ i, t i) = ⋂ i, s ∪ t i :=
+ sup_iInf_eq _ _
+#align set.union_Inter Set.union_iInter
-/- warning: set.Inter_union -> Set.interᵢ_union is a dubious translation:
+/- warning: set.Inter_union -> Set.iInter_union is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)) (t : Set.{u1} β), Eq.{succ u1} (Set.{u1} β) (Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => s i)) t) (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) (s i) t))
+ forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)) (t : Set.{u1} β), Eq.{succ u1} (Set.{u1} β) (Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) (Set.iInter.{u1, u2} β ι (fun (i : ι) => s i)) t) (Set.iInter.{u1, u2} β ι (fun (i : ι) => Union.union.{u1} (Set.{u1} β) (Set.hasUnion.{u1} β) (s i) t))
but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)) (t : Set.{u2} β), Eq.{succ u2} (Set.{u2} β) (Union.union.{u2} (Set.{u2} β) (Set.instUnionSet.{u2} β) (Set.interᵢ.{u2, u1} β ι (fun (i : ι) => s i)) t) (Set.interᵢ.{u2, u1} β ι (fun (i : ι) => Union.union.{u2} (Set.{u2} β) (Set.instUnionSet.{u2} β) (s i) t))
-Case conversion may be inaccurate. Consider using '#align set.Inter_union Set.interᵢ_unionₓ'. -/
-theorem interᵢ_union (s : ι → Set β) (t : Set β) : (⋂ i, s i) ∪ t = ⋂ i, s i ∪ t :=
- infᵢ_sup_eq _ _
-#align set.Inter_union Set.interᵢ_union
+ forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)) (t : Set.{u2} β), Eq.{succ u2} (Set.{u2} β) (Union.union.{u2} (Set.{u2} β) (Set.instUnionSet.{u2} β) (Set.iInter.{u2, u1} β ι (fun (i : ι) => s i)) t) (Set.iInter.{u2, u1} β ι (fun (i : ι) => Union.union.{u2} (Set.{u2} β) (Set.instUnionSet.{u2} β) (s i) t))
+Case conversion may be inaccurate. Consider using '#align set.Inter_union Set.iInter_unionₓ'. -/
+theorem iInter_union (s : ι → Set β) (t : Set β) : (⋂ i, s i) ∪ t = ⋂ i, s i ∪ t :=
+ iInf_sup_eq _ _
+#align set.Inter_union Set.iInter_union
-/- warning: set.Union_diff -> Set.unionᵢ_diff is a dubious translation:
+/- warning: set.Union_diff -> Set.iUnion_diff is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (SDiff.sdiff.{u1} (Set.{u1} β) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => t i)) s) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => SDiff.sdiff.{u1} (Set.{u1} β) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (t i) s))
+ forall {β : Type.{u1}} {ι : Sort.{u2}} (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (SDiff.sdiff.{u1} (Set.{u1} β) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => t i)) s) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => SDiff.sdiff.{u1} (Set.{u1} β) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) (t i) s))
but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : Set.{u2} β) (t : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (SDiff.sdiff.{u2} (Set.{u2} β) (Set.instSDiffSet.{u2} β) (Set.unionᵢ.{u2, u1} β ι (fun (i : ι) => t i)) s) (Set.unionᵢ.{u2, u1} β ι (fun (i : ι) => SDiff.sdiff.{u2} (Set.{u2} β) (Set.instSDiffSet.{u2} β) (t i) s))
-Case conversion may be inaccurate. Consider using '#align set.Union_diff Set.unionᵢ_diffₓ'. -/
-theorem unionᵢ_diff (s : Set β) (t : ι → Set β) : (⋃ i, t i) \ s = ⋃ i, t i \ s :=
- unionᵢ_inter _ _
-#align set.Union_diff Set.unionᵢ_diff
+ forall {β : Type.{u2}} {ι : Sort.{u1}} (s : Set.{u2} β) (t : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (SDiff.sdiff.{u2} (Set.{u2} β) (Set.instSDiffSet.{u2} β) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => t i)) s) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => SDiff.sdiff.{u2} (Set.{u2} β) (Set.instSDiffSet.{u2} β) (t i) s))
+Case conversion may be inaccurate. Consider using '#align set.Union_diff Set.iUnion_diffₓ'. -/
+theorem iUnion_diff (s : Set β) (t : ι → Set β) : (⋃ i, t i) \ s = ⋃ i, t i \ s :=
+ iUnion_inter _ _
+#align set.Union_diff Set.iUnion_diff
-/- warning: set.diff_Union -> Set.diff_unionᵢ is a dubious translation:
+/- warning: set.diff_Union -> Set.diff_iUnion is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (SDiff.sdiff.{u1} (Set.{u1} β) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) s (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => t i))) (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => SDiff.sdiff.{u1} (Set.{u1} β) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) s (t i)))
+ forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (SDiff.sdiff.{u1} (Set.{u1} β) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) s (Set.iUnion.{u1, u2} β ι (fun (i : ι) => t i))) (Set.iInter.{u1, u2} β ι (fun (i : ι) => SDiff.sdiff.{u1} (Set.{u1} β) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) s (t i)))
but is expected to have type
- forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (SDiff.sdiff.{u1} (Set.{u1} β) (Set.instSDiffSet.{u1} β) s (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => t i))) (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => SDiff.sdiff.{u1} (Set.{u1} β) (Set.instSDiffSet.{u1} β) s (t i)))
-Case conversion may be inaccurate. Consider using '#align set.diff_Union Set.diff_unionᵢₓ'. -/
-theorem diff_unionᵢ [Nonempty ι] (s : Set β) (t : ι → Set β) : (s \ ⋃ i, t i) = ⋂ i, s \ t i := by
+ forall {β : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (SDiff.sdiff.{u1} (Set.{u1} β) (Set.instSDiffSet.{u1} β) s (Set.iUnion.{u1, u2} β ι (fun (i : ι) => t i))) (Set.iInter.{u1, u2} β ι (fun (i : ι) => SDiff.sdiff.{u1} (Set.{u1} β) (Set.instSDiffSet.{u1} β) s (t i)))
+Case conversion may be inaccurate. Consider using '#align set.diff_Union Set.diff_iUnionₓ'. -/
+theorem diff_iUnion [Nonempty ι] (s : Set β) (t : ι → Set β) : (s \ ⋃ i, t i) = ⋂ i, s \ t i := by
rw [diff_eq, compl_Union, inter_Inter] <;> rfl
-#align set.diff_Union Set.diff_unionᵢ
+#align set.diff_Union Set.diff_iUnion
-/- warning: set.diff_Inter -> Set.diff_interᵢ is a dubious translation:
+/- warning: set.diff_Inter -> Set.diff_iInter is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (SDiff.sdiff.{u1} (Set.{u1} β) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) s (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => t i))) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => SDiff.sdiff.{u1} (Set.{u1} β) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) s (t i)))
+ forall {β : Type.{u1}} {ι : Sort.{u2}} (s : Set.{u1} β) (t : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (SDiff.sdiff.{u1} (Set.{u1} β) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) s (Set.iInter.{u1, u2} β ι (fun (i : ι) => t i))) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => SDiff.sdiff.{u1} (Set.{u1} β) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} β) (Set.booleanAlgebra.{u1} β)) s (t i)))
but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : Set.{u2} β) (t : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (SDiff.sdiff.{u2} (Set.{u2} β) (Set.instSDiffSet.{u2} β) s (Set.interᵢ.{u2, u1} β ι (fun (i : ι) => t i))) (Set.unionᵢ.{u2, u1} β ι (fun (i : ι) => SDiff.sdiff.{u2} (Set.{u2} β) (Set.instSDiffSet.{u2} β) s (t i)))
-Case conversion may be inaccurate. Consider using '#align set.diff_Inter Set.diff_interᵢₓ'. -/
-theorem diff_interᵢ (s : Set β) (t : ι → Set β) : (s \ ⋂ i, t i) = ⋃ i, s \ t i := by
+ forall {β : Type.{u2}} {ι : Sort.{u1}} (s : Set.{u2} β) (t : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (SDiff.sdiff.{u2} (Set.{u2} β) (Set.instSDiffSet.{u2} β) s (Set.iInter.{u2, u1} β ι (fun (i : ι) => t i))) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => SDiff.sdiff.{u2} (Set.{u2} β) (Set.instSDiffSet.{u2} β) s (t i)))
+Case conversion may be inaccurate. Consider using '#align set.diff_Inter Set.diff_iInterₓ'. -/
+theorem diff_iInter (s : Set β) (t : ι → Set β) : (s \ ⋂ i, t i) = ⋃ i, s \ t i := by
rw [diff_eq, compl_Inter, inter_Union] <;> rfl
-#align set.diff_Inter Set.diff_interᵢ
+#align set.diff_Inter Set.diff_iInter
-/- warning: set.directed_on_Union -> Set.directed_on_unionᵢ is a dubious translation:
+/- warning: set.directed_on_Union -> Set.directed_on_iUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {r : α -> α -> Prop} {f : ι -> (Set.{u1} α)}, (Directed.{u1, u2} (Set.{u1} α) ι (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α)) f) -> (forall (x : ι), DirectedOn.{u1} α r (f x)) -> (DirectedOn.{u1} α r (Set.unionᵢ.{u1, u2} α ι (fun (x : ι) => f x)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {r : α -> α -> Prop} {f : ι -> (Set.{u1} α)}, (Directed.{u1, u2} (Set.{u1} α) ι (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α)) f) -> (forall (x : ι), DirectedOn.{u1} α r (f x)) -> (DirectedOn.{u1} α r (Set.iUnion.{u1, u2} α ι (fun (x : ι) => f x)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {r : α -> α -> Prop} {f : ι -> (Set.{u2} α)}, (Directed.{u2, u1} (Set.{u2} α) ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.8942 : Set.{u2} α) (x._@.Mathlib.Data.Set.Lattice._hyg.8944 : Set.{u2} α) => HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) x._@.Mathlib.Data.Set.Lattice._hyg.8942 x._@.Mathlib.Data.Set.Lattice._hyg.8944) f) -> (forall (x : ι), DirectedOn.{u2} α r (f x)) -> (DirectedOn.{u2} α r (Set.unionᵢ.{u2, u1} α ι (fun (x : ι) => f x)))
-Case conversion may be inaccurate. Consider using '#align set.directed_on_Union Set.directed_on_unionᵢₓ'. -/
-theorem directed_on_unionᵢ {r} {f : ι → Set α} (hd : Directed (· ⊆ ·) f)
+ forall {α : Type.{u2}} {ι : Sort.{u1}} {r : α -> α -> Prop} {f : ι -> (Set.{u2} α)}, (Directed.{u2, u1} (Set.{u2} α) ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.8942 : Set.{u2} α) (x._@.Mathlib.Data.Set.Lattice._hyg.8944 : Set.{u2} α) => HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) x._@.Mathlib.Data.Set.Lattice._hyg.8942 x._@.Mathlib.Data.Set.Lattice._hyg.8944) f) -> (forall (x : ι), DirectedOn.{u2} α r (f x)) -> (DirectedOn.{u2} α r (Set.iUnion.{u2, u1} α ι (fun (x : ι) => f x)))
+Case conversion may be inaccurate. Consider using '#align set.directed_on_Union Set.directed_on_iUnionₓ'. -/
+theorem directed_on_iUnion {r} {f : ι → Set α} (hd : Directed (· ⊆ ·) f)
(h : ∀ x, DirectedOn r (f x)) : DirectedOn r (⋃ x, f x) := by
simp only [DirectedOn, exists_prop, mem_Union, exists_imp] <;>
exact fun a₁ b₁ fb₁ a₂ b₂ fb₂ =>
let ⟨z, zb₁, zb₂⟩ := hd b₁ b₂
let ⟨x, xf, xa₁, xa₂⟩ := h z a₁ (zb₁ fb₁) a₂ (zb₂ fb₂)
⟨x, ⟨z, xf⟩, xa₁, xa₂⟩
-#align set.directed_on_Union Set.directed_on_unionᵢ
+#align set.directed_on_Union Set.directed_on_iUnion
-/- warning: set.Union_inter_subset -> Set.unionᵢ_inter_subset is a dubious translation:
+/- warning: set.Union_inter_subset -> Set.iUnion_inter_subset is a dubious translation:
lean 3 declaration is
- forall {ι : Sort.{u1}} {α : Type.{u2}} {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, HasSubset.Subset.{u2} (Set.{u2} α) (Set.hasSubset.{u2} α) (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (s i) (t i))) (Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => t i)))
+ forall {ι : Sort.{u1}} {α : Type.{u2}} {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, HasSubset.Subset.{u2} (Set.{u2} α) (Set.hasSubset.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (s i) (t i))) (Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => t i)))
but is expected to have type
- forall {ι : Sort.{u2}} {α : Type.{u1}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s i) (t i))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.Union_inter_subset Set.unionᵢ_inter_subsetₓ'. -/
-theorem unionᵢ_inter_subset {ι α} {s t : ι → Set α} : (⋃ i, s i ∩ t i) ⊆ (⋃ i, s i) ∩ ⋃ i, t i :=
- le_supᵢ_inf_supᵢ s t
-#align set.Union_inter_subset Set.unionᵢ_inter_subset
+ forall {ι : Sort.{u2}} {α : Type.{u1}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s i) (t i))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i)) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => t i)))
+Case conversion may be inaccurate. Consider using '#align set.Union_inter_subset Set.iUnion_inter_subsetₓ'. -/
+theorem iUnion_inter_subset {ι α} {s t : ι → Set α} : (⋃ i, s i ∩ t i) ⊆ (⋃ i, s i) ∩ ⋃ i, t i :=
+ le_iSup_inf_iSup s t
+#align set.Union_inter_subset Set.iUnion_inter_subset
-/- warning: set.Union_inter_of_monotone -> Set.unionᵢ_inter_of_monotone is a dubious translation:
+/- warning: set.Union_inter_of_monotone -> Set.iUnion_inter_of_monotone is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : Preorder.{u1} ι] [_inst_2 : IsDirected.{u1} ι (LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_1))] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (Monotone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) s) -> (Monotone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) t) -> (Eq.{succ u2} (Set.{u2} α) (Set.unionᵢ.{u2, succ u1} α ι (fun (i : ι) => Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (s i) (t i))) (Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (Set.unionᵢ.{u2, succ u1} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u2, succ u1} α ι (fun (i : ι) => t i))))
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : Preorder.{u1} ι] [_inst_2 : IsDirected.{u1} ι (LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_1))] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (Monotone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) s) -> (Monotone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) t) -> (Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, succ u1} α ι (fun (i : ι) => Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (s i) (t i))) (Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (Set.iUnion.{u2, succ u1} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, succ u1} α ι (fun (i : ι) => t i))))
but is expected to have type
- forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : IsDirected.{u2} ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.9216 : ι) (x._@.Mathlib.Data.Set.Lattice._hyg.9218 : ι) => LE.le.{u2} ι (Preorder.toLE.{u2} ι _inst_1) x._@.Mathlib.Data.Set.Lattice._hyg.9216 x._@.Mathlib.Data.Set.Lattice._hyg.9218)] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (Monotone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) s) -> (Monotone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) t) -> (Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, succ u2} α ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s i) (t i))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.unionᵢ.{u1, succ u2} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u1, succ u2} α ι (fun (i : ι) => t i))))
-Case conversion may be inaccurate. Consider using '#align set.Union_inter_of_monotone Set.unionᵢ_inter_of_monotoneₓ'. -/
-theorem unionᵢ_inter_of_monotone {ι α} [Preorder ι] [IsDirected ι (· ≤ ·)] {s t : ι → Set α}
+ forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : IsDirected.{u2} ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.9216 : ι) (x._@.Mathlib.Data.Set.Lattice._hyg.9218 : ι) => LE.le.{u2} ι (Preorder.toLE.{u2} ι _inst_1) x._@.Mathlib.Data.Set.Lattice._hyg.9216 x._@.Mathlib.Data.Set.Lattice._hyg.9218)] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (Monotone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) s) -> (Monotone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) t) -> (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s i) (t i))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => s i)) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => t i))))
+Case conversion may be inaccurate. Consider using '#align set.Union_inter_of_monotone Set.iUnion_inter_of_monotoneₓ'. -/
+theorem iUnion_inter_of_monotone {ι α} [Preorder ι] [IsDirected ι (· ≤ ·)] {s t : ι → Set α}
(hs : Monotone s) (ht : Monotone t) : (⋃ i, s i ∩ t i) = (⋃ i, s i) ∩ ⋃ i, t i :=
- supᵢ_inf_of_monotone hs ht
-#align set.Union_inter_of_monotone Set.unionᵢ_inter_of_monotone
+ iSup_inf_of_monotone hs ht
+#align set.Union_inter_of_monotone Set.iUnion_inter_of_monotone
-/- warning: set.Union_inter_of_antitone -> Set.unionᵢ_inter_of_antitone is a dubious translation:
+/- warning: set.Union_inter_of_antitone -> Set.iUnion_inter_of_antitone is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : Preorder.{u1} ι] [_inst_2 : IsDirected.{u1} ι (Function.swap.{succ u1, succ u1, 1} ι ι (fun (ᾰ : ι) (ᾰ : ι) => Prop) (LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_1)))] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (Antitone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) s) -> (Antitone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) t) -> (Eq.{succ u2} (Set.{u2} α) (Set.unionᵢ.{u2, succ u1} α ι (fun (i : ι) => Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (s i) (t i))) (Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (Set.unionᵢ.{u2, succ u1} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u2, succ u1} α ι (fun (i : ι) => t i))))
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : Preorder.{u1} ι] [_inst_2 : IsDirected.{u1} ι (Function.swap.{succ u1, succ u1, 1} ι ι (fun (ᾰ : ι) (ᾰ : ι) => Prop) (LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_1)))] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (Antitone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) s) -> (Antitone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) t) -> (Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, succ u1} α ι (fun (i : ι) => Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (s i) (t i))) (Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (Set.iUnion.{u2, succ u1} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, succ u1} α ι (fun (i : ι) => t i))))
but is expected to have type
- forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : IsDirected.{u2} ι (Function.swap.{succ u2, succ u2, 1} ι ι (fun (ᾰ : ι) (ᾰ : ι) => Prop) (fun (x._@.Mathlib.Data.Set.Lattice._hyg.9340 : ι) (x._@.Mathlib.Data.Set.Lattice._hyg.9342 : ι) => LE.le.{u2} ι (Preorder.toLE.{u2} ι _inst_1) x._@.Mathlib.Data.Set.Lattice._hyg.9340 x._@.Mathlib.Data.Set.Lattice._hyg.9342))] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (Antitone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) s) -> (Antitone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) t) -> (Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, succ u2} α ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s i) (t i))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.unionᵢ.{u1, succ u2} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u1, succ u2} α ι (fun (i : ι) => t i))))
-Case conversion may be inaccurate. Consider using '#align set.Union_inter_of_antitone Set.unionᵢ_inter_of_antitoneₓ'. -/
-theorem unionᵢ_inter_of_antitone {ι α} [Preorder ι] [IsDirected ι (swap (· ≤ ·))] {s t : ι → Set α}
+ forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : IsDirected.{u2} ι (Function.swap.{succ u2, succ u2, 1} ι ι (fun (ᾰ : ι) (ᾰ : ι) => Prop) (fun (x._@.Mathlib.Data.Set.Lattice._hyg.9340 : ι) (x._@.Mathlib.Data.Set.Lattice._hyg.9342 : ι) => LE.le.{u2} ι (Preorder.toLE.{u2} ι _inst_1) x._@.Mathlib.Data.Set.Lattice._hyg.9340 x._@.Mathlib.Data.Set.Lattice._hyg.9342))] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (Antitone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) s) -> (Antitone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) t) -> (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s i) (t i))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => s i)) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => t i))))
+Case conversion may be inaccurate. Consider using '#align set.Union_inter_of_antitone Set.iUnion_inter_of_antitoneₓ'. -/
+theorem iUnion_inter_of_antitone {ι α} [Preorder ι] [IsDirected ι (swap (· ≤ ·))] {s t : ι → Set α}
(hs : Antitone s) (ht : Antitone t) : (⋃ i, s i ∩ t i) = (⋃ i, s i) ∩ ⋃ i, t i :=
- supᵢ_inf_of_antitone hs ht
-#align set.Union_inter_of_antitone Set.unionᵢ_inter_of_antitone
+ iSup_inf_of_antitone hs ht
+#align set.Union_inter_of_antitone Set.iUnion_inter_of_antitone
-/- warning: set.Inter_union_of_monotone -> Set.interᵢ_union_of_monotone is a dubious translation:
+/- warning: set.Inter_union_of_monotone -> Set.iInter_union_of_monotone is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : Preorder.{u1} ι] [_inst_2 : IsDirected.{u1} ι (Function.swap.{succ u1, succ u1, 1} ι ι (fun (ᾰ : ι) (ᾰ : ι) => Prop) (LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_1)))] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (Monotone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) s) -> (Monotone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) t) -> (Eq.{succ u2} (Set.{u2} α) (Set.interᵢ.{u2, succ u1} α ι (fun (i : ι) => Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) (s i) (t i))) (Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) (Set.interᵢ.{u2, succ u1} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u2, succ u1} α ι (fun (i : ι) => t i))))
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : Preorder.{u1} ι] [_inst_2 : IsDirected.{u1} ι (Function.swap.{succ u1, succ u1, 1} ι ι (fun (ᾰ : ι) (ᾰ : ι) => Prop) (LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_1)))] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (Monotone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) s) -> (Monotone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) t) -> (Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) (s i) (t i))) (Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => s i)) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => t i))))
but is expected to have type
- forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : IsDirected.{u2} ι (Function.swap.{succ u2, succ u2, 1} ι ι (fun (ᾰ : ι) (ᾰ : ι) => Prop) (fun (x._@.Mathlib.Data.Set.Lattice._hyg.9464 : ι) (x._@.Mathlib.Data.Set.Lattice._hyg.9466 : ι) => LE.le.{u2} ι (Preorder.toLE.{u2} ι _inst_1) x._@.Mathlib.Data.Set.Lattice._hyg.9464 x._@.Mathlib.Data.Set.Lattice._hyg.9466))] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (Monotone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) s) -> (Monotone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) t) -> (Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, succ u2} α ι (fun (i : ι) => Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (s i) (t i))) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (Set.interᵢ.{u1, succ u2} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u1, succ u2} α ι (fun (i : ι) => t i))))
-Case conversion may be inaccurate. Consider using '#align set.Inter_union_of_monotone Set.interᵢ_union_of_monotoneₓ'. -/
-theorem interᵢ_union_of_monotone {ι α} [Preorder ι] [IsDirected ι (swap (· ≤ ·))] {s t : ι → Set α}
+ forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : IsDirected.{u2} ι (Function.swap.{succ u2, succ u2, 1} ι ι (fun (ᾰ : ι) (ᾰ : ι) => Prop) (fun (x._@.Mathlib.Data.Set.Lattice._hyg.9464 : ι) (x._@.Mathlib.Data.Set.Lattice._hyg.9466 : ι) => LE.le.{u2} ι (Preorder.toLE.{u2} ι _inst_1) x._@.Mathlib.Data.Set.Lattice._hyg.9464 x._@.Mathlib.Data.Set.Lattice._hyg.9466))] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (Monotone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) s) -> (Monotone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) t) -> (Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (s i) (t i))) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => s i)) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => t i))))
+Case conversion may be inaccurate. Consider using '#align set.Inter_union_of_monotone Set.iInter_union_of_monotoneₓ'. -/
+theorem iInter_union_of_monotone {ι α} [Preorder ι] [IsDirected ι (swap (· ≤ ·))] {s t : ι → Set α}
(hs : Monotone s) (ht : Monotone t) : (⋂ i, s i ∪ t i) = (⋂ i, s i) ∪ ⋂ i, t i :=
- infᵢ_sup_of_monotone hs ht
-#align set.Inter_union_of_monotone Set.interᵢ_union_of_monotone
+ iInf_sup_of_monotone hs ht
+#align set.Inter_union_of_monotone Set.iInter_union_of_monotone
-/- warning: set.Inter_union_of_antitone -> Set.interᵢ_union_of_antitone is a dubious translation:
+/- warning: set.Inter_union_of_antitone -> Set.iInter_union_of_antitone is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : Preorder.{u1} ι] [_inst_2 : IsDirected.{u1} ι (LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_1))] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (Antitone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) s) -> (Antitone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) t) -> (Eq.{succ u2} (Set.{u2} α) (Set.interᵢ.{u2, succ u1} α ι (fun (i : ι) => Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) (s i) (t i))) (Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) (Set.interᵢ.{u2, succ u1} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u2, succ u1} α ι (fun (i : ι) => t i))))
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : Preorder.{u1} ι] [_inst_2 : IsDirected.{u1} ι (LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_1))] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (Antitone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) s) -> (Antitone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) t) -> (Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) (s i) (t i))) (Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => s i)) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => t i))))
but is expected to have type
- forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : IsDirected.{u2} ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.9585 : ι) (x._@.Mathlib.Data.Set.Lattice._hyg.9587 : ι) => LE.le.{u2} ι (Preorder.toLE.{u2} ι _inst_1) x._@.Mathlib.Data.Set.Lattice._hyg.9585 x._@.Mathlib.Data.Set.Lattice._hyg.9587)] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (Antitone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) s) -> (Antitone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) t) -> (Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, succ u2} α ι (fun (i : ι) => Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (s i) (t i))) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (Set.interᵢ.{u1, succ u2} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u1, succ u2} α ι (fun (i : ι) => t i))))
-Case conversion may be inaccurate. Consider using '#align set.Inter_union_of_antitone Set.interᵢ_union_of_antitoneₓ'. -/
-theorem interᵢ_union_of_antitone {ι α} [Preorder ι] [IsDirected ι (· ≤ ·)] {s t : ι → Set α}
+ forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : IsDirected.{u2} ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.9585 : ι) (x._@.Mathlib.Data.Set.Lattice._hyg.9587 : ι) => LE.le.{u2} ι (Preorder.toLE.{u2} ι _inst_1) x._@.Mathlib.Data.Set.Lattice._hyg.9585 x._@.Mathlib.Data.Set.Lattice._hyg.9587)] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (Antitone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) s) -> (Antitone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) t) -> (Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (s i) (t i))) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => s i)) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => t i))))
+Case conversion may be inaccurate. Consider using '#align set.Inter_union_of_antitone Set.iInter_union_of_antitoneₓ'. -/
+theorem iInter_union_of_antitone {ι α} [Preorder ι] [IsDirected ι (· ≤ ·)] {s t : ι → Set α}
(hs : Antitone s) (ht : Antitone t) : (⋂ i, s i ∪ t i) = (⋂ i, s i) ∪ ⋂ i, t i :=
- infᵢ_sup_of_antitone hs ht
-#align set.Inter_union_of_antitone Set.interᵢ_union_of_antitone
+ iInf_sup_of_antitone hs ht
+#align set.Inter_union_of_antitone Set.iInter_union_of_antitone
-/- warning: set.Union_Inter_subset -> Set.unionᵢ_interᵢ_subset is a dubious translation:
+/- warning: set.Union_Inter_subset -> Set.iUnion_iInter_subset is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} {s : ι -> ι' -> (Set.{u1} α)}, HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.unionᵢ.{u1, u3} α ι' (fun (j : ι') => Set.interᵢ.{u1, u2} α ι (fun (i : ι) => s i j))) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, u3} α ι' (fun (j : ι') => s i j)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} {s : ι -> ι' -> (Set.{u1} α)}, HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iUnion.{u1, u3} α ι' (fun (j : ι') => Set.iInter.{u1, u2} α ι (fun (i : ι) => s i j))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α ι' (fun (j : ι') => s i j)))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u1}} {ι' : Sort.{u2}} {s : ι -> ι' -> (Set.{u3} α)}, HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.unionᵢ.{u3, u2} α ι' (fun (j : ι') => Set.interᵢ.{u3, u1} α ι (fun (i : ι) => s i j))) (Set.interᵢ.{u3, u1} α ι (fun (i : ι) => Set.unionᵢ.{u3, u2} α ι' (fun (j : ι') => s i j)))
-Case conversion may be inaccurate. Consider using '#align set.Union_Inter_subset Set.unionᵢ_interᵢ_subsetₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u1}} {ι' : Sort.{u2}} {s : ι -> ι' -> (Set.{u3} α)}, HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.iUnion.{u3, u2} α ι' (fun (j : ι') => Set.iInter.{u3, u1} α ι (fun (i : ι) => s i j))) (Set.iInter.{u3, u1} α ι (fun (i : ι) => Set.iUnion.{u3, u2} α ι' (fun (j : ι') => s i j)))
+Case conversion may be inaccurate. Consider using '#align set.Union_Inter_subset Set.iUnion_iInter_subsetₓ'. -/
/-- An equality version of this lemma is `Union_Inter_of_monotone` in `data.set.finite`. -/
-theorem unionᵢ_interᵢ_subset {s : ι → ι' → Set α} : (⋃ j, ⋂ i, s i j) ⊆ ⋂ i, ⋃ j, s i j :=
- supᵢ_infᵢ_le_infᵢ_supᵢ (flip s)
-#align set.Union_Inter_subset Set.unionᵢ_interᵢ_subset
+theorem iUnion_iInter_subset {s : ι → ι' → Set α} : (⋃ j, ⋂ i, s i j) ⊆ ⋂ i, ⋃ j, s i j :=
+ iSup_iInf_le_iInf_iSup (flip s)
+#align set.Union_Inter_subset Set.iUnion_iInter_subset
-/- warning: set.Union_option -> Set.unionᵢ_option is a dubious translation:
+/- warning: set.Union_option -> Set.iUnion_option is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} (s : (Option.{u2} ι) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, succ u2} α (Option.{u2} ι) (fun (o : Option.{u2} ι) => s o)) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (s (Option.none.{u2} ι)) (Set.unionᵢ.{u1, succ u2} α ι (fun (i : ι) => s (Option.some.{u2} ι i))))
+ forall {α : Type.{u1}} {ι : Type.{u2}} (s : (Option.{u2} ι) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α (Option.{u2} ι) (fun (o : Option.{u2} ι) => s o)) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (s (Option.none.{u2} ι)) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => s (Option.some.{u2} ι i))))
but is expected to have type
- forall {α : Type.{u1}} {ι : Type.{u2}} (s : (Option.{u2} ι) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, succ u2} α (Option.{u2} ι) (fun (o : Option.{u2} ι) => s o)) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (s (Option.none.{u2} ι)) (Set.unionᵢ.{u1, succ u2} α ι (fun (i : ι) => s (Option.some.{u2} ι i))))
-Case conversion may be inaccurate. Consider using '#align set.Union_option Set.unionᵢ_optionₓ'. -/
-theorem unionᵢ_option {ι} (s : Option ι → Set α) : (⋃ o, s o) = s none ∪ ⋃ i, s (some i) :=
- supᵢ_option s
-#align set.Union_option Set.unionᵢ_option
+ forall {α : Type.{u1}} {ι : Type.{u2}} (s : (Option.{u2} ι) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α (Option.{u2} ι) (fun (o : Option.{u2} ι) => s o)) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (s (Option.none.{u2} ι)) (Set.iUnion.{u1, succ u2} α ι (fun (i : ι) => s (Option.some.{u2} ι i))))
+Case conversion may be inaccurate. Consider using '#align set.Union_option Set.iUnion_optionₓ'. -/
+theorem iUnion_option {ι} (s : Option ι → Set α) : (⋃ o, s o) = s none ∪ ⋃ i, s (some i) :=
+ iSup_option s
+#align set.Union_option Set.iUnion_option
-/- warning: set.Inter_option -> Set.interᵢ_option is a dubious translation:
+/- warning: set.Inter_option -> Set.iInter_option is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} (s : (Option.{u2} ι) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, succ u2} α (Option.{u2} ι) (fun (o : Option.{u2} ι) => s o)) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s (Option.none.{u2} ι)) (Set.interᵢ.{u1, succ u2} α ι (fun (i : ι) => s (Option.some.{u2} ι i))))
+ forall {α : Type.{u1}} {ι : Type.{u2}} (s : (Option.{u2} ι) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, succ u2} α (Option.{u2} ι) (fun (o : Option.{u2} ι) => s o)) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s (Option.none.{u2} ι)) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => s (Option.some.{u2} ι i))))
but is expected to have type
- forall {α : Type.{u1}} {ι : Type.{u2}} (s : (Option.{u2} ι) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, succ u2} α (Option.{u2} ι) (fun (o : Option.{u2} ι) => s o)) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s (Option.none.{u2} ι)) (Set.interᵢ.{u1, succ u2} α ι (fun (i : ι) => s (Option.some.{u2} ι i))))
-Case conversion may be inaccurate. Consider using '#align set.Inter_option Set.interᵢ_optionₓ'. -/
-theorem interᵢ_option {ι} (s : Option ι → Set α) : (⋂ o, s o) = s none ∩ ⋂ i, s (some i) :=
- infᵢ_option s
-#align set.Inter_option Set.interᵢ_option
+ forall {α : Type.{u1}} {ι : Type.{u2}} (s : (Option.{u2} ι) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, succ u2} α (Option.{u2} ι) (fun (o : Option.{u2} ι) => s o)) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s (Option.none.{u2} ι)) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => s (Option.some.{u2} ι i))))
+Case conversion may be inaccurate. Consider using '#align set.Inter_option Set.iInter_optionₓ'. -/
+theorem iInter_option {ι} (s : Option ι → Set α) : (⋂ o, s o) = s none ∩ ⋂ i, s (some i) :=
+ iInf_option s
+#align set.Inter_option Set.iInter_option
section
variable (p : ι → Prop) [DecidablePred p]
-/- warning: set.Union_dite -> Set.unionᵢ_dite is a dubious translation:
+/- warning: set.Union_dite -> Set.iUnion_dite is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (p : ι -> Prop) [_inst_1 : DecidablePred.{u2} ι p] (f : forall (i : ι), (p i) -> (Set.{u1} α)) (g : forall (i : ι), (Not (p i)) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => dite.{succ u1} (Set.{u1} α) (p i) (_inst_1 i) (fun (h : p i) => f i h) (fun (h : Not (p i)) => g i h))) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, 0} α (p i) (fun (h : p i) => f i h))) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, 0} α (Not (p i)) (fun (h : Not (p i)) => g i h))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} (p : ι -> Prop) [_inst_1 : DecidablePred.{u2} ι p] (f : forall (i : ι), (p i) -> (Set.{u1} α)) (g : forall (i : ι), (Not (p i)) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => dite.{succ u1} (Set.{u1} α) (p i) (_inst_1 i) (fun (h : p i) => f i h) (fun (h : Not (p i)) => g i h))) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, 0} α (p i) (fun (h : p i) => f i h))) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, 0} α (Not (p i)) (fun (h : Not (p i)) => g i h))))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (p : ι -> Prop) [_inst_1 : DecidablePred.{u1} ι p] (f : forall (i : ι), (p i) -> (Set.{u2} α)) (g : forall (i : ι), (Not (p i)) -> (Set.{u2} α)), Eq.{succ u2} (Set.{u2} α) (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => dite.{succ u2} (Set.{u2} α) (p i) (_inst_1 i) (fun (h : p i) => f i h) (fun (h : Not (p i)) => g i h))) (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => Set.unionᵢ.{u2, 0} α (p i) (fun (h : p i) => f i h))) (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => Set.unionᵢ.{u2, 0} α (Not (p i)) (fun (h : Not (p i)) => g i h))))
-Case conversion may be inaccurate. Consider using '#align set.Union_dite Set.unionᵢ_diteₓ'. -/
-theorem unionᵢ_dite (f : ∀ i, p i → Set α) (g : ∀ i, ¬p i → Set α) :
+ forall {α : Type.{u2}} {ι : Sort.{u1}} (p : ι -> Prop) [_inst_1 : DecidablePred.{u1} ι p] (f : forall (i : ι), (p i) -> (Set.{u2} α)) (g : forall (i : ι), (Not (p i)) -> (Set.{u2} α)), Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => dite.{succ u2} (Set.{u2} α) (p i) (_inst_1 i) (fun (h : p i) => f i h) (fun (h : Not (p i)) => g i h))) (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => Set.iUnion.{u2, 0} α (p i) (fun (h : p i) => f i h))) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => Set.iUnion.{u2, 0} α (Not (p i)) (fun (h : Not (p i)) => g i h))))
+Case conversion may be inaccurate. Consider using '#align set.Union_dite Set.iUnion_diteₓ'. -/
+theorem iUnion_dite (f : ∀ i, p i → Set α) (g : ∀ i, ¬p i → Set α) :
(⋃ i, if h : p i then f i h else g i h) = (⋃ (i) (h : p i), f i h) ∪ ⋃ (i) (h : ¬p i), g i h :=
- supᵢ_dite _ _ _
-#align set.Union_dite Set.unionᵢ_dite
+ iSup_dite _ _ _
+#align set.Union_dite Set.iUnion_dite
-/- warning: set.Union_ite -> Set.unionᵢ_ite is a dubious translation:
+/- warning: set.Union_ite -> Set.iUnion_ite is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (p : ι -> Prop) [_inst_1 : DecidablePred.{u2} ι p] (f : ι -> (Set.{u1} α)) (g : ι -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => ite.{succ u1} (Set.{u1} α) (p i) (_inst_1 i) (f i) (g i))) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, 0} α (p i) (fun (h : p i) => f i))) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, 0} α (Not (p i)) (fun (h : Not (p i)) => g i))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} (p : ι -> Prop) [_inst_1 : DecidablePred.{u2} ι p] (f : ι -> (Set.{u1} α)) (g : ι -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => ite.{succ u1} (Set.{u1} α) (p i) (_inst_1 i) (f i) (g i))) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, 0} α (p i) (fun (h : p i) => f i))) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, 0} α (Not (p i)) (fun (h : Not (p i)) => g i))))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (p : ι -> Prop) [_inst_1 : DecidablePred.{u1} ι p] (f : ι -> (Set.{u2} α)) (g : ι -> (Set.{u2} α)), Eq.{succ u2} (Set.{u2} α) (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => ite.{succ u2} (Set.{u2} α) (p i) (_inst_1 i) (f i) (g i))) (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => Set.unionᵢ.{u2, 0} α (p i) (fun (h : p i) => f i))) (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => Set.unionᵢ.{u2, 0} α (Not (p i)) (fun (h : Not (p i)) => g i))))
-Case conversion may be inaccurate. Consider using '#align set.Union_ite Set.unionᵢ_iteₓ'. -/
-theorem unionᵢ_ite (f g : ι → Set α) :
+ forall {α : Type.{u2}} {ι : Sort.{u1}} (p : ι -> Prop) [_inst_1 : DecidablePred.{u1} ι p] (f : ι -> (Set.{u2} α)) (g : ι -> (Set.{u2} α)), Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => ite.{succ u2} (Set.{u2} α) (p i) (_inst_1 i) (f i) (g i))) (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => Set.iUnion.{u2, 0} α (p i) (fun (h : p i) => f i))) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => Set.iUnion.{u2, 0} α (Not (p i)) (fun (h : Not (p i)) => g i))))
+Case conversion may be inaccurate. Consider using '#align set.Union_ite Set.iUnion_iteₓ'. -/
+theorem iUnion_ite (f g : ι → Set α) :
(⋃ i, if p i then f i else g i) = (⋃ (i) (h : p i), f i) ∪ ⋃ (i) (h : ¬p i), g i :=
- unionᵢ_dite _ _ _
-#align set.Union_ite Set.unionᵢ_ite
+ iUnion_dite _ _ _
+#align set.Union_ite Set.iUnion_ite
-/- warning: set.Inter_dite -> Set.interᵢ_dite is a dubious translation:
+/- warning: set.Inter_dite -> Set.iInter_dite is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (p : ι -> Prop) [_inst_1 : DecidablePred.{u2} ι p] (f : forall (i : ι), (p i) -> (Set.{u1} α)) (g : forall (i : ι), (Not (p i)) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => dite.{succ u1} (Set.{u1} α) (p i) (_inst_1 i) (fun (h : p i) => f i h) (fun (h : Not (p i)) => g i h))) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, 0} α (p i) (fun (h : p i) => f i h))) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, 0} α (Not (p i)) (fun (h : Not (p i)) => g i h))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} (p : ι -> Prop) [_inst_1 : DecidablePred.{u2} ι p] (f : forall (i : ι), (p i) -> (Set.{u1} α)) (g : forall (i : ι), (Not (p i)) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => dite.{succ u1} (Set.{u1} α) (p i) (_inst_1 i) (fun (h : p i) => f i h) (fun (h : Not (p i)) => g i h))) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, 0} α (p i) (fun (h : p i) => f i h))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, 0} α (Not (p i)) (fun (h : Not (p i)) => g i h))))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (p : ι -> Prop) [_inst_1 : DecidablePred.{u1} ι p] (f : forall (i : ι), (p i) -> (Set.{u2} α)) (g : forall (i : ι), (Not (p i)) -> (Set.{u2} α)), Eq.{succ u2} (Set.{u2} α) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => dite.{succ u2} (Set.{u2} α) (p i) (_inst_1 i) (fun (h : p i) => f i h) (fun (h : Not (p i)) => g i h))) (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => Set.interᵢ.{u2, 0} α (p i) (fun (h : p i) => f i h))) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => Set.interᵢ.{u2, 0} α (Not (p i)) (fun (h : Not (p i)) => g i h))))
-Case conversion may be inaccurate. Consider using '#align set.Inter_dite Set.interᵢ_diteₓ'. -/
-theorem interᵢ_dite (f : ∀ i, p i → Set α) (g : ∀ i, ¬p i → Set α) :
+ forall {α : Type.{u2}} {ι : Sort.{u1}} (p : ι -> Prop) [_inst_1 : DecidablePred.{u1} ι p] (f : forall (i : ι), (p i) -> (Set.{u2} α)) (g : forall (i : ι), (Not (p i)) -> (Set.{u2} α)), Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => dite.{succ u2} (Set.{u2} α) (p i) (_inst_1 i) (fun (h : p i) => f i h) (fun (h : Not (p i)) => g i h))) (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => Set.iInter.{u2, 0} α (p i) (fun (h : p i) => f i h))) (Set.iInter.{u2, u1} α ι (fun (i : ι) => Set.iInter.{u2, 0} α (Not (p i)) (fun (h : Not (p i)) => g i h))))
+Case conversion may be inaccurate. Consider using '#align set.Inter_dite Set.iInter_diteₓ'. -/
+theorem iInter_dite (f : ∀ i, p i → Set α) (g : ∀ i, ¬p i → Set α) :
(⋂ i, if h : p i then f i h else g i h) = (⋂ (i) (h : p i), f i h) ∩ ⋂ (i) (h : ¬p i), g i h :=
- infᵢ_dite _ _ _
-#align set.Inter_dite Set.interᵢ_dite
+ iInf_dite _ _ _
+#align set.Inter_dite Set.iInter_dite
-/- warning: set.Inter_ite -> Set.interᵢ_ite is a dubious translation:
+/- warning: set.Inter_ite -> Set.iInter_ite is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (p : ι -> Prop) [_inst_1 : DecidablePred.{u2} ι p] (f : ι -> (Set.{u1} α)) (g : ι -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => ite.{succ u1} (Set.{u1} α) (p i) (_inst_1 i) (f i) (g i))) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, 0} α (p i) (fun (h : p i) => f i))) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, 0} α (Not (p i)) (fun (h : Not (p i)) => g i))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} (p : ι -> Prop) [_inst_1 : DecidablePred.{u2} ι p] (f : ι -> (Set.{u1} α)) (g : ι -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => ite.{succ u1} (Set.{u1} α) (p i) (_inst_1 i) (f i) (g i))) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, 0} α (p i) (fun (h : p i) => f i))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, 0} α (Not (p i)) (fun (h : Not (p i)) => g i))))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (p : ι -> Prop) [_inst_1 : DecidablePred.{u1} ι p] (f : ι -> (Set.{u2} α)) (g : ι -> (Set.{u2} α)), Eq.{succ u2} (Set.{u2} α) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => ite.{succ u2} (Set.{u2} α) (p i) (_inst_1 i) (f i) (g i))) (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => Set.interᵢ.{u2, 0} α (p i) (fun (h : p i) => f i))) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => Set.interᵢ.{u2, 0} α (Not (p i)) (fun (h : Not (p i)) => g i))))
-Case conversion may be inaccurate. Consider using '#align set.Inter_ite Set.interᵢ_iteₓ'. -/
-theorem interᵢ_ite (f g : ι → Set α) :
+ forall {α : Type.{u2}} {ι : Sort.{u1}} (p : ι -> Prop) [_inst_1 : DecidablePred.{u1} ι p] (f : ι -> (Set.{u2} α)) (g : ι -> (Set.{u2} α)), Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => ite.{succ u2} (Set.{u2} α) (p i) (_inst_1 i) (f i) (g i))) (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => Set.iInter.{u2, 0} α (p i) (fun (h : p i) => f i))) (Set.iInter.{u2, u1} α ι (fun (i : ι) => Set.iInter.{u2, 0} α (Not (p i)) (fun (h : Not (p i)) => g i))))
+Case conversion may be inaccurate. Consider using '#align set.Inter_ite Set.iInter_iteₓ'. -/
+theorem iInter_ite (f g : ι → Set α) :
(⋂ i, if p i then f i else g i) = (⋂ (i) (h : p i), f i) ∩ ⋂ (i) (h : ¬p i), g i :=
- interᵢ_dite _ _ _
-#align set.Inter_ite Set.interᵢ_ite
+ iInter_dite _ _ _
+#align set.Inter_ite Set.iInter_ite
end
/- warning: set.image_projection_prod -> Set.image_projection_prod is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : ι -> Type.{u2}} {v : forall (i : ι), Set.{u2} (α i)}, (Set.Nonempty.{max u1 u2} (forall (i : ι), α i) (Set.pi.{u1, u2} ι (fun (i : ι) => α i) (Set.univ.{u1} ι) v)) -> (forall (i : ι), Eq.{succ u2} (Set.{u2} (α i)) (Set.image.{max u1 u2, u2} (forall (i : ι), α i) (α i) (fun (x : forall (i : ι), α i) => x i) (Set.interᵢ.{max u1 u2, succ u1} (forall (i : ι), α i) ι (fun (k : ι) => Set.preimage.{max u1 u2, u2} (forall (i : ι), α i) (α k) (fun (x : forall (j : ι), α j) => x k) (v k)))) (v i))
+ forall {ι : Type.{u1}} {α : ι -> Type.{u2}} {v : forall (i : ι), Set.{u2} (α i)}, (Set.Nonempty.{max u1 u2} (forall (i : ι), α i) (Set.pi.{u1, u2} ι (fun (i : ι) => α i) (Set.univ.{u1} ι) v)) -> (forall (i : ι), Eq.{succ u2} (Set.{u2} (α i)) (Set.image.{max u1 u2, u2} (forall (i : ι), α i) (α i) (fun (x : forall (i : ι), α i) => x i) (Set.iInter.{max u1 u2, succ u1} (forall (i : ι), α i) ι (fun (k : ι) => Set.preimage.{max u1 u2, u2} (forall (i : ι), α i) (α k) (fun (x : forall (j : ι), α j) => x k) (v k)))) (v i))
but is expected to have type
- forall {ι : Type.{u2}} {α : ι -> Type.{u1}} {v : forall (i : ι), Set.{u1} (α i)}, (Set.Nonempty.{max u2 u1} (forall (i : ι), α i) (Set.pi.{u2, u1} ι (fun (i : ι) => α i) (Set.univ.{u2} ι) v)) -> (forall (i : ι), Eq.{succ u1} (Set.{u1} (α i)) (Set.image.{max u2 u1, u1} (forall (i : ι), α i) (α i) (fun (x : forall (i : ι), α i) => x i) (Set.interᵢ.{max u2 u1, succ u2} (forall (i : ι), α i) ι (fun (k : ι) => Set.preimage.{max u2 u1, u1} (forall (i : ι), α i) (α k) (fun (x : forall (j : ι), α j) => x k) (v k)))) (v i))
+ forall {ι : Type.{u2}} {α : ι -> Type.{u1}} {v : forall (i : ι), Set.{u1} (α i)}, (Set.Nonempty.{max u2 u1} (forall (i : ι), α i) (Set.pi.{u2, u1} ι (fun (i : ι) => α i) (Set.univ.{u2} ι) v)) -> (forall (i : ι), Eq.{succ u1} (Set.{u1} (α i)) (Set.image.{max u2 u1, u1} (forall (i : ι), α i) (α i) (fun (x : forall (i : ι), α i) => x i) (Set.iInter.{max u2 u1, succ u2} (forall (i : ι), α i) ι (fun (k : ι) => Set.preimage.{max u2 u1, u1} (forall (i : ι), α i) (α k) (fun (x : forall (j : ι), α j) => x k) (v k)))) (v i))
Case conversion may be inaccurate. Consider using '#align set.image_projection_prod Set.image_projection_prodₓ'. -/
theorem image_projection_prod {ι : Type _} {α : ι → Type _} {v : ∀ i : ι, Set (α i)}
(hv : (pi univ v).Nonempty) (i : ι) :
@@ -1252,1133 +1252,1133 @@ theorem image_projection_prod {ι : Type _} {α : ι → Type _} {v : ∀ i : ι
/-! ### Unions and intersections indexed by `Prop` -/
-#print Set.interᵢ_false /-
-theorem interᵢ_false {s : False → Set α} : interᵢ s = univ :=
- infᵢ_false
-#align set.Inter_false Set.interᵢ_false
+#print Set.iInter_false /-
+theorem iInter_false {s : False → Set α} : iInter s = univ :=
+ iInf_false
+#align set.Inter_false Set.iInter_false
-/
-#print Set.unionᵢ_false /-
-theorem unionᵢ_false {s : False → Set α} : unionᵢ s = ∅ :=
- supᵢ_false
-#align set.Union_false Set.unionᵢ_false
+#print Set.iUnion_false /-
+theorem iUnion_false {s : False → Set α} : iUnion s = ∅ :=
+ iSup_false
+#align set.Union_false Set.iUnion_false
-/
-#print Set.interᵢ_true /-
+#print Set.iInter_true /-
@[simp]
-theorem interᵢ_true {s : True → Set α} : interᵢ s = s trivial :=
- infᵢ_true
-#align set.Inter_true Set.interᵢ_true
+theorem iInter_true {s : True → Set α} : iInter s = s trivial :=
+ iInf_true
+#align set.Inter_true Set.iInter_true
-/
-#print Set.unionᵢ_true /-
+#print Set.iUnion_true /-
@[simp]
-theorem unionᵢ_true {s : True → Set α} : unionᵢ s = s trivial :=
- supᵢ_true
-#align set.Union_true Set.unionᵢ_true
+theorem iUnion_true {s : True → Set α} : iUnion s = s trivial :=
+ iSup_true
+#align set.Union_true Set.iUnion_true
-/
-#print Set.interᵢ_exists /-
+#print Set.iInter_exists /-
@[simp]
-theorem interᵢ_exists {p : ι → Prop} {f : Exists p → Set α} :
+theorem iInter_exists {p : ι → Prop} {f : Exists p → Set α} :
(⋂ x, f x) = ⋂ (i) (h : p i), f ⟨i, h⟩ :=
- infᵢ_exists
-#align set.Inter_exists Set.interᵢ_exists
+ iInf_exists
+#align set.Inter_exists Set.iInter_exists
-/
-#print Set.unionᵢ_exists /-
+#print Set.iUnion_exists /-
@[simp]
-theorem unionᵢ_exists {p : ι → Prop} {f : Exists p → Set α} :
+theorem iUnion_exists {p : ι → Prop} {f : Exists p → Set α} :
(⋃ x, f x) = ⋃ (i) (h : p i), f ⟨i, h⟩ :=
- supᵢ_exists
-#align set.Union_exists Set.unionᵢ_exists
+ iSup_exists
+#align set.Union_exists Set.iUnion_exists
-/
-/- warning: set.Union_empty -> Set.unionᵢ_empty is a dubious translation:
+/- warning: set.Union_empty -> Set.iUnion_empty is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}}, Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))
+ forall {α : Type.{u1}} {ι : Sort.{u2}}, Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}}, Eq.{succ u2} (Set.{u2} α) (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => EmptyCollection.emptyCollection.{u2} (Set.{u2} α) (Set.instEmptyCollectionSet.{u2} α))) (EmptyCollection.emptyCollection.{u2} (Set.{u2} α) (Set.instEmptyCollectionSet.{u2} α))
-Case conversion may be inaccurate. Consider using '#align set.Union_empty Set.unionᵢ_emptyₓ'. -/
+ forall {α : Type.{u2}} {ι : Sort.{u1}}, Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => EmptyCollection.emptyCollection.{u2} (Set.{u2} α) (Set.instEmptyCollectionSet.{u2} α))) (EmptyCollection.emptyCollection.{u2} (Set.{u2} α) (Set.instEmptyCollectionSet.{u2} α))
+Case conversion may be inaccurate. Consider using '#align set.Union_empty Set.iUnion_emptyₓ'. -/
@[simp]
-theorem unionᵢ_empty : (⋃ i : ι, ∅ : Set α) = ∅ :=
- supᵢ_bot
-#align set.Union_empty Set.unionᵢ_empty
+theorem iUnion_empty : (⋃ i : ι, ∅ : Set α) = ∅ :=
+ iSup_bot
+#align set.Union_empty Set.iUnion_empty
-/- warning: set.Inter_univ -> Set.interᵢ_univ is a dubious translation:
+/- warning: set.Inter_univ -> Set.iInter_univ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}}, Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.univ.{u1} α)) (Set.univ.{u1} α)
+ forall {α : Type.{u1}} {ι : Sort.{u2}}, Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.univ.{u1} α)) (Set.univ.{u1} α)
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}}, Eq.{succ u2} (Set.{u2} α) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => Set.univ.{u2} α)) (Set.univ.{u2} α)
-Case conversion may be inaccurate. Consider using '#align set.Inter_univ Set.interᵢ_univₓ'. -/
+ forall {α : Type.{u2}} {ι : Sort.{u1}}, Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => Set.univ.{u2} α)) (Set.univ.{u2} α)
+Case conversion may be inaccurate. Consider using '#align set.Inter_univ Set.iInter_univₓ'. -/
@[simp]
-theorem interᵢ_univ : (⋂ i : ι, univ : Set α) = univ :=
- infᵢ_top
-#align set.Inter_univ Set.interᵢ_univ
+theorem iInter_univ : (⋂ i : ι, univ : Set α) = univ :=
+ iInf_top
+#align set.Inter_univ Set.iInter_univ
section
variable {s : ι → Set α}
-/- warning: set.Union_eq_empty -> Set.unionᵢ_eq_empty is a dubious translation:
+/- warning: set.Union_eq_empty -> Set.iUnion_eq_empty is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => s i)) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))) (forall (i : ι), Eq.{succ u1} (Set.{u1} α) (s i) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i)) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))) (forall (i : ι), Eq.{succ u1} (Set.{u1} α) (s i) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)}, Iff (Eq.{succ u2} (Set.{u2} α) (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => s i)) (EmptyCollection.emptyCollection.{u2} (Set.{u2} α) (Set.instEmptyCollectionSet.{u2} α))) (forall (i : ι), Eq.{succ u2} (Set.{u2} α) (s i) (EmptyCollection.emptyCollection.{u2} (Set.{u2} α) (Set.instEmptyCollectionSet.{u2} α)))
-Case conversion may be inaccurate. Consider using '#align set.Union_eq_empty Set.unionᵢ_eq_emptyₓ'. -/
+ forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)}, Iff (Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => s i)) (EmptyCollection.emptyCollection.{u2} (Set.{u2} α) (Set.instEmptyCollectionSet.{u2} α))) (forall (i : ι), Eq.{succ u2} (Set.{u2} α) (s i) (EmptyCollection.emptyCollection.{u2} (Set.{u2} α) (Set.instEmptyCollectionSet.{u2} α)))
+Case conversion may be inaccurate. Consider using '#align set.Union_eq_empty Set.iUnion_eq_emptyₓ'. -/
@[simp]
-theorem unionᵢ_eq_empty : (⋃ i, s i) = ∅ ↔ ∀ i, s i = ∅ :=
- supᵢ_eq_bot
-#align set.Union_eq_empty Set.unionᵢ_eq_empty
+theorem iUnion_eq_empty : (⋃ i, s i) = ∅ ↔ ∀ i, s i = ∅ :=
+ iSup_eq_bot
+#align set.Union_eq_empty Set.iUnion_eq_empty
-/- warning: set.Inter_eq_univ -> Set.interᵢ_eq_univ is a dubious translation:
+/- warning: set.Inter_eq_univ -> Set.iInter_eq_univ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => s i)) (Set.univ.{u1} α)) (forall (i : ι), Eq.{succ u1} (Set.{u1} α) (s i) (Set.univ.{u1} α))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => s i)) (Set.univ.{u1} α)) (forall (i : ι), Eq.{succ u1} (Set.{u1} α) (s i) (Set.univ.{u1} α))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)}, Iff (Eq.{succ u2} (Set.{u2} α) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => s i)) (Set.univ.{u2} α)) (forall (i : ι), Eq.{succ u2} (Set.{u2} α) (s i) (Set.univ.{u2} α))
-Case conversion may be inaccurate. Consider using '#align set.Inter_eq_univ Set.interᵢ_eq_univₓ'. -/
+ forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)}, Iff (Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => s i)) (Set.univ.{u2} α)) (forall (i : ι), Eq.{succ u2} (Set.{u2} α) (s i) (Set.univ.{u2} α))
+Case conversion may be inaccurate. Consider using '#align set.Inter_eq_univ Set.iInter_eq_univₓ'. -/
@[simp]
-theorem interᵢ_eq_univ : (⋂ i, s i) = univ ↔ ∀ i, s i = univ :=
- infᵢ_eq_top
-#align set.Inter_eq_univ Set.interᵢ_eq_univ
+theorem iInter_eq_univ : (⋂ i, s i) = univ ↔ ∀ i, s i = univ :=
+ iInf_eq_top
+#align set.Inter_eq_univ Set.iInter_eq_univ
-/- warning: set.nonempty_Union -> Set.nonempty_unionᵢ is a dubious translation:
+/- warning: set.nonempty_Union -> Set.nonempty_iUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)}, Iff (Set.Nonempty.{u1} α (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => s i))) (Exists.{u2} ι (fun (i : ι) => Set.Nonempty.{u1} α (s i)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)}, Iff (Set.Nonempty.{u1} α (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i))) (Exists.{u2} ι (fun (i : ι) => Set.Nonempty.{u1} α (s i)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)}, Iff (Set.Nonempty.{u2} α (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => s i))) (Exists.{u1} ι (fun (i : ι) => Set.Nonempty.{u2} α (s i)))
-Case conversion may be inaccurate. Consider using '#align set.nonempty_Union Set.nonempty_unionᵢₓ'. -/
+ forall {α : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)}, Iff (Set.Nonempty.{u2} α (Set.iUnion.{u2, u1} α ι (fun (i : ι) => s i))) (Exists.{u1} ι (fun (i : ι) => Set.Nonempty.{u2} α (s i)))
+Case conversion may be inaccurate. Consider using '#align set.nonempty_Union Set.nonempty_iUnionₓ'. -/
@[simp]
-theorem nonempty_unionᵢ : (⋃ i, s i).Nonempty ↔ ∃ i, (s i).Nonempty := by
+theorem nonempty_iUnion : (⋃ i, s i).Nonempty ↔ ∃ i, (s i).Nonempty := by
simp [nonempty_iff_ne_empty]
-#align set.nonempty_Union Set.nonempty_unionᵢ
+#align set.nonempty_Union Set.nonempty_iUnion
-/- warning: set.nonempty_bUnion -> Set.nonempty_bunionᵢ is a dubious translation:
+/- warning: set.nonempty_bUnion -> Set.nonempty_biUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {t : Set.{u1} α} {s : α -> (Set.{u2} β)}, Iff (Set.Nonempty.{u2} β (Set.unionᵢ.{u2, succ u1} β α (fun (i : α) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i t) => s i)))) (Exists.{succ u1} α (fun (i : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i t) => Set.Nonempty.{u2} β (s i))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {t : Set.{u1} α} {s : α -> (Set.{u2} β)}, Iff (Set.Nonempty.{u2} β (Set.iUnion.{u2, succ u1} β α (fun (i : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i t) => s i)))) (Exists.{succ u1} α (fun (i : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i t) => Set.Nonempty.{u2} β (s i))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {t : Set.{u2} α} {s : α -> (Set.{u1} β)}, Iff (Set.Nonempty.{u1} β (Set.unionᵢ.{u1, succ u2} β α (fun (i : α) => Set.unionᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i t) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i t) => s i)))) (Exists.{succ u2} α (fun (i : α) => And (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i t) (Set.Nonempty.{u1} β (s i))))
-Case conversion may be inaccurate. Consider using '#align set.nonempty_bUnion Set.nonempty_bunionᵢₓ'. -/
+ forall {α : Type.{u2}} {β : Type.{u1}} {t : Set.{u2} α} {s : α -> (Set.{u1} β)}, Iff (Set.Nonempty.{u1} β (Set.iUnion.{u1, succ u2} β α (fun (i : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i t) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i t) => s i)))) (Exists.{succ u2} α (fun (i : α) => And (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i t) (Set.Nonempty.{u1} β (s i))))
+Case conversion may be inaccurate. Consider using '#align set.nonempty_bUnion Set.nonempty_biUnionₓ'. -/
@[simp]
-theorem nonempty_bunionᵢ {t : Set α} {s : α → Set β} :
+theorem nonempty_biUnion {t : Set α} {s : α → Set β} :
(⋃ i ∈ t, s i).Nonempty ↔ ∃ i ∈ t, (s i).Nonempty := by simp [nonempty_iff_ne_empty]
-#align set.nonempty_bUnion Set.nonempty_bunionᵢ
+#align set.nonempty_bUnion Set.nonempty_biUnion
-/- warning: set.Union_nonempty_index -> Set.unionᵢ_nonempty_index is a dubious translation:
+/- warning: set.Union_nonempty_index -> Set.iUnion_nonempty_index is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (s : Set.{u1} α) (t : (Set.Nonempty.{u1} α s) -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.unionᵢ.{u2, 0} β (Set.Nonempty.{u1} α s) (fun (h : Set.Nonempty.{u1} α s) => t h)) (Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t (Exists.intro.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) x H))))
+ forall {α : Type.{u1}} {β : Type.{u2}} (s : Set.{u1} α) (t : (Set.Nonempty.{u1} α s) -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, 0} β (Set.Nonempty.{u1} α s) (fun (h : Set.Nonempty.{u1} α s) => t h)) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t (Exists.intro.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) x H))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (s : Set.{u2} α) (t : (Set.Nonempty.{u2} α s) -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.unionᵢ.{u1, 0} β (Set.Nonempty.{u2} α s) (fun (h : Set.Nonempty.{u2} α s) => t h)) (Set.unionᵢ.{u1, succ u2} β α (fun (x : α) => Set.unionᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t (Exists.intro.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) x H))))
-Case conversion may be inaccurate. Consider using '#align set.Union_nonempty_index Set.unionᵢ_nonempty_indexₓ'. -/
-theorem unionᵢ_nonempty_index (s : Set α) (t : s.Nonempty → Set β) :
+ forall {α : Type.{u2}} {β : Type.{u1}} (s : Set.{u2} α) (t : (Set.Nonempty.{u2} α s) -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, 0} β (Set.Nonempty.{u2} α s) (fun (h : Set.Nonempty.{u2} α s) => t h)) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t (Exists.intro.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) x H))))
+Case conversion may be inaccurate. Consider using '#align set.Union_nonempty_index Set.iUnion_nonempty_indexₓ'. -/
+theorem iUnion_nonempty_index (s : Set α) (t : s.Nonempty → Set β) :
(⋃ h, t h) = ⋃ x ∈ s, t ⟨x, ‹_›⟩ :=
- supᵢ_exists
-#align set.Union_nonempty_index Set.unionᵢ_nonempty_index
+ iSup_exists
+#align set.Union_nonempty_index Set.iUnion_nonempty_index
end
-#print Set.interᵢ_interᵢ_eq_left /-
+#print Set.iInter_iInter_eq_left /-
@[simp]
-theorem interᵢ_interᵢ_eq_left {b : β} {s : ∀ x : β, x = b → Set α} :
+theorem iInter_iInter_eq_left {b : β} {s : ∀ x : β, x = b → Set α} :
(⋂ (x) (h : x = b), s x h) = s b rfl :=
- infᵢ_infᵢ_eq_left
-#align set.Inter_Inter_eq_left Set.interᵢ_interᵢ_eq_left
+ iInf_iInf_eq_left
+#align set.Inter_Inter_eq_left Set.iInter_iInter_eq_left
-/
-#print Set.interᵢ_interᵢ_eq_right /-
+#print Set.iInter_iInter_eq_right /-
@[simp]
-theorem interᵢ_interᵢ_eq_right {b : β} {s : ∀ x : β, b = x → Set α} :
+theorem iInter_iInter_eq_right {b : β} {s : ∀ x : β, b = x → Set α} :
(⋂ (x) (h : b = x), s x h) = s b rfl :=
- infᵢ_infᵢ_eq_right
-#align set.Inter_Inter_eq_right Set.interᵢ_interᵢ_eq_right
+ iInf_iInf_eq_right
+#align set.Inter_Inter_eq_right Set.iInter_iInter_eq_right
-/
-#print Set.unionᵢ_unionᵢ_eq_left /-
+#print Set.iUnion_iUnion_eq_left /-
@[simp]
-theorem unionᵢ_unionᵢ_eq_left {b : β} {s : ∀ x : β, x = b → Set α} :
+theorem iUnion_iUnion_eq_left {b : β} {s : ∀ x : β, x = b → Set α} :
(⋃ (x) (h : x = b), s x h) = s b rfl :=
- supᵢ_supᵢ_eq_left
-#align set.Union_Union_eq_left Set.unionᵢ_unionᵢ_eq_left
+ iSup_iSup_eq_left
+#align set.Union_Union_eq_left Set.iUnion_iUnion_eq_left
-/
-#print Set.unionᵢ_unionᵢ_eq_right /-
+#print Set.iUnion_iUnion_eq_right /-
@[simp]
-theorem unionᵢ_unionᵢ_eq_right {b : β} {s : ∀ x : β, b = x → Set α} :
+theorem iUnion_iUnion_eq_right {b : β} {s : ∀ x : β, b = x → Set α} :
(⋃ (x) (h : b = x), s x h) = s b rfl :=
- supᵢ_supᵢ_eq_right
-#align set.Union_Union_eq_right Set.unionᵢ_unionᵢ_eq_right
+ iSup_iSup_eq_right
+#align set.Union_Union_eq_right Set.iUnion_iUnion_eq_right
-/
-/- warning: set.Inter_or -> Set.interᵢ_or is a dubious translation:
+/- warning: set.Inter_or -> Set.iInter_or is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {p : Prop} {q : Prop} (s : (Or p q) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, 0} α (Or p q) (fun (h : Or p q) => s h)) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (Set.interᵢ.{u1, 0} α p (fun (h : p) => s (Or.inl p q h))) (Set.interᵢ.{u1, 0} α q (fun (h : q) => s (Or.inr p q h))))
+ forall {α : Type.{u1}} {p : Prop} {q : Prop} (s : (Or p q) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, 0} α (Or p q) (fun (h : Or p q) => s h)) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (Set.iInter.{u1, 0} α p (fun (h : p) => s (Or.inl p q h))) (Set.iInter.{u1, 0} α q (fun (h : q) => s (Or.inr p q h))))
but is expected to have type
- forall {α : Type.{u1}} {p : Prop} {q : Prop} (s : (Or p q) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, 0} α (Or p q) (fun (h : Or p q) => s h)) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.interᵢ.{u1, 0} α p (fun (h : p) => s (Or.inl p q h))) (Set.interᵢ.{u1, 0} α q (fun (h : q) => s (Or.inr p q h))))
-Case conversion may be inaccurate. Consider using '#align set.Inter_or Set.interᵢ_orₓ'. -/
-theorem interᵢ_or {p q : Prop} (s : p ∨ q → Set α) :
+ forall {α : Type.{u1}} {p : Prop} {q : Prop} (s : (Or p q) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, 0} α (Or p q) (fun (h : Or p q) => s h)) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.iInter.{u1, 0} α p (fun (h : p) => s (Or.inl p q h))) (Set.iInter.{u1, 0} α q (fun (h : q) => s (Or.inr p q h))))
+Case conversion may be inaccurate. Consider using '#align set.Inter_or Set.iInter_orₓ'. -/
+theorem iInter_or {p q : Prop} (s : p ∨ q → Set α) :
(⋂ h, s h) = (⋂ h : p, s (Or.inl h)) ∩ ⋂ h : q, s (Or.inr h) :=
- infᵢ_or
-#align set.Inter_or Set.interᵢ_or
+ iInf_or
+#align set.Inter_or Set.iInter_or
-/- warning: set.Union_or -> Set.unionᵢ_or is a dubious translation:
+/- warning: set.Union_or -> Set.iUnion_or is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {p : Prop} {q : Prop} (s : (Or p q) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, 0} α (Or p q) (fun (h : Or p q) => s h)) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Set.unionᵢ.{u1, 0} α p (fun (i : p) => s (Or.inl p q i))) (Set.unionᵢ.{u1, 0} α q (fun (j : q) => s (Or.inr p q j))))
+ forall {α : Type.{u1}} {p : Prop} {q : Prop} (s : (Or p q) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, 0} α (Or p q) (fun (h : Or p q) => s h)) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Set.iUnion.{u1, 0} α p (fun (i : p) => s (Or.inl p q i))) (Set.iUnion.{u1, 0} α q (fun (j : q) => s (Or.inr p q j))))
but is expected to have type
- forall {α : Type.{u1}} {p : Prop} {q : Prop} (s : (Or p q) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, 0} α (Or p q) (fun (h : Or p q) => s h)) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (Set.unionᵢ.{u1, 0} α p (fun (i : p) => s (Or.inl p q i))) (Set.unionᵢ.{u1, 0} α q (fun (j : q) => s (Or.inr p q j))))
-Case conversion may be inaccurate. Consider using '#align set.Union_or Set.unionᵢ_orₓ'. -/
-theorem unionᵢ_or {p q : Prop} (s : p ∨ q → Set α) :
+ forall {α : Type.{u1}} {p : Prop} {q : Prop} (s : (Or p q) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, 0} α (Or p q) (fun (h : Or p q) => s h)) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (Set.iUnion.{u1, 0} α p (fun (i : p) => s (Or.inl p q i))) (Set.iUnion.{u1, 0} α q (fun (j : q) => s (Or.inr p q j))))
+Case conversion may be inaccurate. Consider using '#align set.Union_or Set.iUnion_orₓ'. -/
+theorem iUnion_or {p q : Prop} (s : p ∨ q → Set α) :
(⋃ h, s h) = (⋃ i, s (Or.inl i)) ∪ ⋃ j, s (Or.inr j) :=
- supᵢ_or
-#align set.Union_or Set.unionᵢ_or
+ iSup_or
+#align set.Union_or Set.iUnion_or
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (hp hq) -/
-#print Set.unionᵢ_and /-
-theorem unionᵢ_and {p q : Prop} (s : p ∧ q → Set α) : (⋃ h, s h) = ⋃ (hp) (hq), s ⟨hp, hq⟩ :=
- supᵢ_and
-#align set.Union_and Set.unionᵢ_and
+#print Set.iUnion_and /-
+theorem iUnion_and {p q : Prop} (s : p ∧ q → Set α) : (⋃ h, s h) = ⋃ (hp) (hq), s ⟨hp, hq⟩ :=
+ iSup_and
+#align set.Union_and Set.iUnion_and
-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (hp hq) -/
-#print Set.interᵢ_and /-
-theorem interᵢ_and {p q : Prop} (s : p ∧ q → Set α) : (⋂ h, s h) = ⋂ (hp) (hq), s ⟨hp, hq⟩ :=
- infᵢ_and
-#align set.Inter_and Set.interᵢ_and
+#print Set.iInter_and /-
+theorem iInter_and {p q : Prop} (s : p ∧ q → Set α) : (⋂ h, s h) = ⋂ (hp) (hq), s ⟨hp, hq⟩ :=
+ iInf_and
+#align set.Inter_and Set.iInter_and
-/
-/- warning: set.Union_comm -> Set.unionᵢ_comm is a dubious translation:
+/- warning: set.Union_comm -> Set.iUnion_comm is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} (s : ι -> ι' -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, u3} α ι' (fun (i' : ι') => s i i'))) (Set.unionᵢ.{u1, u3} α ι' (fun (i' : ι') => Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => s i i')))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} (s : ι -> ι' -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α ι' (fun (i' : ι') => s i i'))) (Set.iUnion.{u1, u3} α ι' (fun (i' : ι') => Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i i')))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} (s : ι -> ι' -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => Set.unionᵢ.{u3, u1} α ι' (fun (i' : ι') => s i i'))) (Set.unionᵢ.{u3, u1} α ι' (fun (i' : ι') => Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => s i i')))
-Case conversion may be inaccurate. Consider using '#align set.Union_comm Set.unionᵢ_commₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} (s : ι -> ι' -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α ι' (fun (i' : ι') => s i i'))) (Set.iUnion.{u3, u1} α ι' (fun (i' : ι') => Set.iUnion.{u3, u2} α ι (fun (i : ι) => s i i')))
+Case conversion may be inaccurate. Consider using '#align set.Union_comm Set.iUnion_commₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i i') -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i' i) -/
-theorem unionᵢ_comm (s : ι → ι' → Set α) : (⋃ (i) (i'), s i i') = ⋃ (i') (i), s i i' :=
- supᵢ_comm
-#align set.Union_comm Set.unionᵢ_comm
+theorem iUnion_comm (s : ι → ι' → Set α) : (⋃ (i) (i'), s i i') = ⋃ (i') (i), s i i' :=
+ iSup_comm
+#align set.Union_comm Set.iUnion_comm
-/- warning: set.Inter_comm -> Set.interᵢ_comm is a dubious translation:
+/- warning: set.Inter_comm -> Set.iInter_comm is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} (s : ι -> ι' -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u3} α ι' (fun (i' : ι') => s i i'))) (Set.interᵢ.{u1, u3} α ι' (fun (i' : ι') => Set.interᵢ.{u1, u2} α ι (fun (i : ι) => s i i')))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} (s : ι -> ι' -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α ι' (fun (i' : ι') => s i i'))) (Set.iInter.{u1, u3} α ι' (fun (i' : ι') => Set.iInter.{u1, u2} α ι (fun (i : ι) => s i i')))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} (s : ι -> ι' -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, u1} α ι' (fun (i' : ι') => s i i'))) (Set.interᵢ.{u3, u1} α ι' (fun (i' : ι') => Set.interᵢ.{u3, u2} α ι (fun (i : ι) => s i i')))
-Case conversion may be inaccurate. Consider using '#align set.Inter_comm Set.interᵢ_commₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} (s : ι -> ι' -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α ι' (fun (i' : ι') => s i i'))) (Set.iInter.{u3, u1} α ι' (fun (i' : ι') => Set.iInter.{u3, u2} α ι (fun (i : ι) => s i i')))
+Case conversion may be inaccurate. Consider using '#align set.Inter_comm Set.iInter_commₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i i') -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i' i) -/
-theorem interᵢ_comm (s : ι → ι' → Set α) : (⋂ (i) (i'), s i i') = ⋂ (i') (i), s i i' :=
- infᵢ_comm
-#align set.Inter_comm Set.interᵢ_comm
+theorem iInter_comm (s : ι → ι' → Set α) : (⋂ (i) (i'), s i i') = ⋂ (i') (i), s i i' :=
+ iInf_comm
+#align set.Inter_comm Set.iInter_comm
-/- warning: set.Union₂_comm -> Set.unionᵢ₂_comm is a dubious translation:
+/- warning: set.Union₂_comm -> Set.iUnion₂_comm is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ₁ : ι -> Sort.{u3}} {κ₂ : ι -> Sort.{u4}} (s : forall (i₁ : ι), (κ₁ i₁) -> (forall (i₂ : ι), (κ₂ i₂) -> (Set.{u1} α))), Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i₁ : ι) => Set.unionᵢ.{u1, u3} α (κ₁ i₁) (fun (j₁ : κ₁ i₁) => Set.unionᵢ.{u1, u2} α ι (fun (i₂ : ι) => Set.unionᵢ.{u1, u4} α (κ₂ i₂) (fun (j₂ : κ₂ i₂) => s i₁ j₁ i₂ j₂))))) (Set.unionᵢ.{u1, u2} α ι (fun (i₂ : ι) => Set.unionᵢ.{u1, u4} α (κ₂ i₂) (fun (j₂ : κ₂ i₂) => Set.unionᵢ.{u1, u2} α ι (fun (i₁ : ι) => Set.unionᵢ.{u1, u3} α (κ₁ i₁) (fun (j₁ : κ₁ i₁) => s i₁ j₁ i₂ j₂)))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ₁ : ι -> Sort.{u3}} {κ₂ : ι -> Sort.{u4}} (s : forall (i₁ : ι), (κ₁ i₁) -> (forall (i₂ : ι), (κ₂ i₂) -> (Set.{u1} α))), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i₁ : ι) => Set.iUnion.{u1, u3} α (κ₁ i₁) (fun (j₁ : κ₁ i₁) => Set.iUnion.{u1, u2} α ι (fun (i₂ : ι) => Set.iUnion.{u1, u4} α (κ₂ i₂) (fun (j₂ : κ₂ i₂) => s i₁ j₁ i₂ j₂))))) (Set.iUnion.{u1, u2} α ι (fun (i₂ : ι) => Set.iUnion.{u1, u4} α (κ₂ i₂) (fun (j₂ : κ₂ i₂) => Set.iUnion.{u1, u2} α ι (fun (i₁ : ι) => Set.iUnion.{u1, u3} α (κ₁ i₁) (fun (j₁ : κ₁ i₁) => s i₁ j₁ i₂ j₂)))))
but is expected to have type
- forall {α : Type.{u4}} {ι : Sort.{u3}} {κ₁ : ι -> Sort.{u2}} {κ₂ : ι -> Sort.{u1}} (s : forall (i₁ : ι), (κ₁ i₁) -> (forall (i₂ : ι), (κ₂ i₂) -> (Set.{u4} α))), Eq.{succ u4} (Set.{u4} α) (Set.unionᵢ.{u4, u3} α ι (fun (i₁ : ι) => Set.unionᵢ.{u4, u2} α (κ₁ i₁) (fun (j₁ : κ₁ i₁) => Set.unionᵢ.{u4, u3} α ι (fun (i₂ : ι) => Set.unionᵢ.{u4, u1} α (κ₂ i₂) (fun (j₂ : κ₂ i₂) => s i₁ j₁ i₂ j₂))))) (Set.unionᵢ.{u4, u3} α ι (fun (i₂ : ι) => Set.unionᵢ.{u4, u1} α (κ₂ i₂) (fun (j₂ : κ₂ i₂) => Set.unionᵢ.{u4, u3} α ι (fun (i₁ : ι) => Set.unionᵢ.{u4, u2} α (κ₁ i₁) (fun (j₁ : κ₁ i₁) => s i₁ j₁ i₂ j₂)))))
-Case conversion may be inaccurate. Consider using '#align set.Union₂_comm Set.unionᵢ₂_commₓ'. -/
+ forall {α : Type.{u4}} {ι : Sort.{u3}} {κ₁ : ι -> Sort.{u2}} {κ₂ : ι -> Sort.{u1}} (s : forall (i₁ : ι), (κ₁ i₁) -> (forall (i₂ : ι), (κ₂ i₂) -> (Set.{u4} α))), Eq.{succ u4} (Set.{u4} α) (Set.iUnion.{u4, u3} α ι (fun (i₁ : ι) => Set.iUnion.{u4, u2} α (κ₁ i₁) (fun (j₁ : κ₁ i₁) => Set.iUnion.{u4, u3} α ι (fun (i₂ : ι) => Set.iUnion.{u4, u1} α (κ₂ i₂) (fun (j₂ : κ₂ i₂) => s i₁ j₁ i₂ j₂))))) (Set.iUnion.{u4, u3} α ι (fun (i₂ : ι) => Set.iUnion.{u4, u1} α (κ₂ i₂) (fun (j₂ : κ₂ i₂) => Set.iUnion.{u4, u3} α ι (fun (i₁ : ι) => Set.iUnion.{u4, u2} α (κ₁ i₁) (fun (j₁ : κ₁ i₁) => s i₁ j₁ i₂ j₂)))))
+Case conversion may be inaccurate. Consider using '#align set.Union₂_comm Set.iUnion₂_commₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i₁ j₁ i₂ j₂) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i₂ j₂ i₁ j₁) -/
-theorem unionᵢ₂_comm (s : ∀ i₁, κ₁ i₁ → ∀ i₂, κ₂ i₂ → Set α) :
+theorem iUnion₂_comm (s : ∀ i₁, κ₁ i₁ → ∀ i₂, κ₂ i₂ → Set α) :
(⋃ (i₁) (j₁) (i₂) (j₂), s i₁ j₁ i₂ j₂) = ⋃ (i₂) (j₂) (i₁) (j₁), s i₁ j₁ i₂ j₂ :=
- supᵢ₂_comm _
-#align set.Union₂_comm Set.unionᵢ₂_comm
+ iSup₂_comm _
+#align set.Union₂_comm Set.iUnion₂_comm
-/- warning: set.Inter₂_comm -> Set.interᵢ₂_comm is a dubious translation:
+/- warning: set.Inter₂_comm -> Set.iInter₂_comm is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ₁ : ι -> Sort.{u3}} {κ₂ : ι -> Sort.{u4}} (s : forall (i₁ : ι), (κ₁ i₁) -> (forall (i₂ : ι), (κ₂ i₂) -> (Set.{u1} α))), Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (i₁ : ι) => Set.interᵢ.{u1, u3} α (κ₁ i₁) (fun (j₁ : κ₁ i₁) => Set.interᵢ.{u1, u2} α ι (fun (i₂ : ι) => Set.interᵢ.{u1, u4} α (κ₂ i₂) (fun (j₂ : κ₂ i₂) => s i₁ j₁ i₂ j₂))))) (Set.interᵢ.{u1, u2} α ι (fun (i₂ : ι) => Set.interᵢ.{u1, u4} α (κ₂ i₂) (fun (j₂ : κ₂ i₂) => Set.interᵢ.{u1, u2} α ι (fun (i₁ : ι) => Set.interᵢ.{u1, u3} α (κ₁ i₁) (fun (j₁ : κ₁ i₁) => s i₁ j₁ i₂ j₂)))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ₁ : ι -> Sort.{u3}} {κ₂ : ι -> Sort.{u4}} (s : forall (i₁ : ι), (κ₁ i₁) -> (forall (i₂ : ι), (κ₂ i₂) -> (Set.{u1} α))), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i₁ : ι) => Set.iInter.{u1, u3} α (κ₁ i₁) (fun (j₁ : κ₁ i₁) => Set.iInter.{u1, u2} α ι (fun (i₂ : ι) => Set.iInter.{u1, u4} α (κ₂ i₂) (fun (j₂ : κ₂ i₂) => s i₁ j₁ i₂ j₂))))) (Set.iInter.{u1, u2} α ι (fun (i₂ : ι) => Set.iInter.{u1, u4} α (κ₂ i₂) (fun (j₂ : κ₂ i₂) => Set.iInter.{u1, u2} α ι (fun (i₁ : ι) => Set.iInter.{u1, u3} α (κ₁ i₁) (fun (j₁ : κ₁ i₁) => s i₁ j₁ i₂ j₂)))))
but is expected to have type
- forall {α : Type.{u4}} {ι : Sort.{u3}} {κ₁ : ι -> Sort.{u2}} {κ₂ : ι -> Sort.{u1}} (s : forall (i₁ : ι), (κ₁ i₁) -> (forall (i₂ : ι), (κ₂ i₂) -> (Set.{u4} α))), Eq.{succ u4} (Set.{u4} α) (Set.interᵢ.{u4, u3} α ι (fun (i₁ : ι) => Set.interᵢ.{u4, u2} α (κ₁ i₁) (fun (j₁ : κ₁ i₁) => Set.interᵢ.{u4, u3} α ι (fun (i₂ : ι) => Set.interᵢ.{u4, u1} α (κ₂ i₂) (fun (j₂ : κ₂ i₂) => s i₁ j₁ i₂ j₂))))) (Set.interᵢ.{u4, u3} α ι (fun (i₂ : ι) => Set.interᵢ.{u4, u1} α (κ₂ i₂) (fun (j₂ : κ₂ i₂) => Set.interᵢ.{u4, u3} α ι (fun (i₁ : ι) => Set.interᵢ.{u4, u2} α (κ₁ i₁) (fun (j₁ : κ₁ i₁) => s i₁ j₁ i₂ j₂)))))
-Case conversion may be inaccurate. Consider using '#align set.Inter₂_comm Set.interᵢ₂_commₓ'. -/
+ forall {α : Type.{u4}} {ι : Sort.{u3}} {κ₁ : ι -> Sort.{u2}} {κ₂ : ι -> Sort.{u1}} (s : forall (i₁ : ι), (κ₁ i₁) -> (forall (i₂ : ι), (κ₂ i₂) -> (Set.{u4} α))), Eq.{succ u4} (Set.{u4} α) (Set.iInter.{u4, u3} α ι (fun (i₁ : ι) => Set.iInter.{u4, u2} α (κ₁ i₁) (fun (j₁ : κ₁ i₁) => Set.iInter.{u4, u3} α ι (fun (i₂ : ι) => Set.iInter.{u4, u1} α (κ₂ i₂) (fun (j₂ : κ₂ i₂) => s i₁ j₁ i₂ j₂))))) (Set.iInter.{u4, u3} α ι (fun (i₂ : ι) => Set.iInter.{u4, u1} α (κ₂ i₂) (fun (j₂ : κ₂ i₂) => Set.iInter.{u4, u3} α ι (fun (i₁ : ι) => Set.iInter.{u4, u2} α (κ₁ i₁) (fun (j₁ : κ₁ i₁) => s i₁ j₁ i₂ j₂)))))
+Case conversion may be inaccurate. Consider using '#align set.Inter₂_comm Set.iInter₂_commₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i₁ j₁ i₂ j₂) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i₂ j₂ i₁ j₁) -/
-theorem interᵢ₂_comm (s : ∀ i₁, κ₁ i₁ → ∀ i₂, κ₂ i₂ → Set α) :
+theorem iInter₂_comm (s : ∀ i₁, κ₁ i₁ → ∀ i₂, κ₂ i₂ → Set α) :
(⋂ (i₁) (j₁) (i₂) (j₂), s i₁ j₁ i₂ j₂) = ⋂ (i₂) (j₂) (i₁) (j₁), s i₁ j₁ i₂ j₂ :=
- infᵢ₂_comm _
-#align set.Inter₂_comm Set.interᵢ₂_comm
+ iInf₂_comm _
+#align set.Inter₂_comm Set.iInter₂_comm
-/- warning: set.bUnion_and -> Set.bunionᵢ_and is a dubious translation:
+/- warning: set.bUnion_and -> Set.biUnion_and is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} (p : ι -> Prop) (q : ι -> ι' -> Prop) (s : forall (x : ι) (y : ι'), (And (p x) (q x y)) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (x : ι) => Set.unionᵢ.{u1, u3} α ι' (fun (y : ι') => Set.unionᵢ.{u1, 0} α (And (p x) (q x y)) (fun (h : And (p x) (q x y)) => s x y h)))) (Set.unionᵢ.{u1, u2} α ι (fun (x : ι) => Set.unionᵢ.{u1, 0} α (p x) (fun (hx : p x) => Set.unionᵢ.{u1, u3} α ι' (fun (y : ι') => Set.unionᵢ.{u1, 0} α (q x y) (fun (hy : q x y) => s x y (And.intro (p x) (q x y) hx hy))))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} (p : ι -> Prop) (q : ι -> ι' -> Prop) (s : forall (x : ι) (y : ι'), (And (p x) (q x y)) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (x : ι) => Set.iUnion.{u1, u3} α ι' (fun (y : ι') => Set.iUnion.{u1, 0} α (And (p x) (q x y)) (fun (h : And (p x) (q x y)) => s x y h)))) (Set.iUnion.{u1, u2} α ι (fun (x : ι) => Set.iUnion.{u1, 0} α (p x) (fun (hx : p x) => Set.iUnion.{u1, u3} α ι' (fun (y : ι') => Set.iUnion.{u1, 0} α (q x y) (fun (hy : q x y) => s x y (And.intro (p x) (q x y) hx hy))))))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} (p : ι -> Prop) (q : ι -> ι' -> Prop) (s : forall (x : ι) (y : ι'), (And (p x) (q x y)) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Set.unionᵢ.{u3, u2} α ι (fun (x : ι) => Set.unionᵢ.{u3, u1} α ι' (fun (y : ι') => Set.unionᵢ.{u3, 0} α (And (p x) (q x y)) (fun (h : And (p x) (q x y)) => s x y h)))) (Set.unionᵢ.{u3, u2} α ι (fun (x : ι) => Set.unionᵢ.{u3, 0} α (p x) (fun (hx : p x) => Set.unionᵢ.{u3, u1} α ι' (fun (y : ι') => Set.unionᵢ.{u3, 0} α (q x y) (fun (hy : q x y) => s x y (And.intro (p x) (q x y) hx hy))))))
-Case conversion may be inaccurate. Consider using '#align set.bUnion_and Set.bunionᵢ_andₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} (p : ι -> Prop) (q : ι -> ι' -> Prop) (s : forall (x : ι) (y : ι'), (And (p x) (q x y)) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Set.iUnion.{u3, u2} α ι (fun (x : ι) => Set.iUnion.{u3, u1} α ι' (fun (y : ι') => Set.iUnion.{u3, 0} α (And (p x) (q x y)) (fun (h : And (p x) (q x y)) => s x y h)))) (Set.iUnion.{u3, u2} α ι (fun (x : ι) => Set.iUnion.{u3, 0} α (p x) (fun (hx : p x) => Set.iUnion.{u3, u1} α ι' (fun (y : ι') => Set.iUnion.{u3, 0} α (q x y) (fun (hy : q x y) => s x y (And.intro (p x) (q x y) hx hy))))))
+Case conversion may be inaccurate. Consider using '#align set.bUnion_and Set.biUnion_andₓ'. -/
@[simp]
-theorem bunionᵢ_and (p : ι → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p x ∧ q x y → Set α) :
+theorem biUnion_and (p : ι → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p x ∧ q x y → Set α) :
(⋃ (x : ι) (y : ι') (h : p x ∧ q x y), s x y h) =
⋃ (x : ι) (hx : p x) (y : ι') (hy : q x y), s x y ⟨hx, hy⟩ :=
by simp only [Union_and, @Union_comm _ ι']
-#align set.bUnion_and Set.bunionᵢ_and
+#align set.bUnion_and Set.biUnion_and
-/- warning: set.bUnion_and' -> Set.bunionᵢ_and' is a dubious translation:
+/- warning: set.bUnion_and' -> Set.biUnion_and' is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} (p : ι' -> Prop) (q : ι -> ι' -> Prop) (s : forall (x : ι) (y : ι'), (And (p y) (q x y)) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (x : ι) => Set.unionᵢ.{u1, u3} α ι' (fun (y : ι') => Set.unionᵢ.{u1, 0} α (And (p y) (q x y)) (fun (h : And (p y) (q x y)) => s x y h)))) (Set.unionᵢ.{u1, u3} α ι' (fun (y : ι') => Set.unionᵢ.{u1, 0} α (p y) (fun (hy : p y) => Set.unionᵢ.{u1, u2} α ι (fun (x : ι) => Set.unionᵢ.{u1, 0} α (q x y) (fun (hx : q x y) => s x y (And.intro (p y) (q x y) hy hx))))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} (p : ι' -> Prop) (q : ι -> ι' -> Prop) (s : forall (x : ι) (y : ι'), (And (p y) (q x y)) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (x : ι) => Set.iUnion.{u1, u3} α ι' (fun (y : ι') => Set.iUnion.{u1, 0} α (And (p y) (q x y)) (fun (h : And (p y) (q x y)) => s x y h)))) (Set.iUnion.{u1, u3} α ι' (fun (y : ι') => Set.iUnion.{u1, 0} α (p y) (fun (hy : p y) => Set.iUnion.{u1, u2} α ι (fun (x : ι) => Set.iUnion.{u1, 0} α (q x y) (fun (hx : q x y) => s x y (And.intro (p y) (q x y) hy hx))))))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} (p : ι' -> Prop) (q : ι -> ι' -> Prop) (s : forall (x : ι) (y : ι'), (And (p y) (q x y)) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Set.unionᵢ.{u3, u2} α ι (fun (x : ι) => Set.unionᵢ.{u3, u1} α ι' (fun (y : ι') => Set.unionᵢ.{u3, 0} α (And (p y) (q x y)) (fun (h : And (p y) (q x y)) => s x y h)))) (Set.unionᵢ.{u3, u1} α ι' (fun (y : ι') => Set.unionᵢ.{u3, 0} α (p y) (fun (hy : p y) => Set.unionᵢ.{u3, u2} α ι (fun (x : ι) => Set.unionᵢ.{u3, 0} α (q x y) (fun (hx : q x y) => s x y (And.intro (p y) (q x y) hy hx))))))
-Case conversion may be inaccurate. Consider using '#align set.bUnion_and' Set.bunionᵢ_and'ₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} (p : ι' -> Prop) (q : ι -> ι' -> Prop) (s : forall (x : ι) (y : ι'), (And (p y) (q x y)) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Set.iUnion.{u3, u2} α ι (fun (x : ι) => Set.iUnion.{u3, u1} α ι' (fun (y : ι') => Set.iUnion.{u3, 0} α (And (p y) (q x y)) (fun (h : And (p y) (q x y)) => s x y h)))) (Set.iUnion.{u3, u1} α ι' (fun (y : ι') => Set.iUnion.{u3, 0} α (p y) (fun (hy : p y) => Set.iUnion.{u3, u2} α ι (fun (x : ι) => Set.iUnion.{u3, 0} α (q x y) (fun (hx : q x y) => s x y (And.intro (p y) (q x y) hy hx))))))
+Case conversion may be inaccurate. Consider using '#align set.bUnion_and' Set.biUnion_and'ₓ'. -/
@[simp]
-theorem bunionᵢ_and' (p : ι' → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p y ∧ q x y → Set α) :
+theorem biUnion_and' (p : ι' → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p y ∧ q x y → Set α) :
(⋃ (x : ι) (y : ι') (h : p y ∧ q x y), s x y h) =
⋃ (y : ι') (hy : p y) (x : ι) (hx : q x y), s x y ⟨hy, hx⟩ :=
by simp only [Union_and, @Union_comm _ ι]
-#align set.bUnion_and' Set.bunionᵢ_and'
+#align set.bUnion_and' Set.biUnion_and'
-/- warning: set.bInter_and -> Set.binterᵢ_and is a dubious translation:
+/- warning: set.bInter_and -> Set.biInter_and is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} (p : ι -> Prop) (q : ι -> ι' -> Prop) (s : forall (x : ι) (y : ι'), (And (p x) (q x y)) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (x : ι) => Set.interᵢ.{u1, u3} α ι' (fun (y : ι') => Set.interᵢ.{u1, 0} α (And (p x) (q x y)) (fun (h : And (p x) (q x y)) => s x y h)))) (Set.interᵢ.{u1, u2} α ι (fun (x : ι) => Set.interᵢ.{u1, 0} α (p x) (fun (hx : p x) => Set.interᵢ.{u1, u3} α ι' (fun (y : ι') => Set.interᵢ.{u1, 0} α (q x y) (fun (hy : q x y) => s x y (And.intro (p x) (q x y) hx hy))))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} (p : ι -> Prop) (q : ι -> ι' -> Prop) (s : forall (x : ι) (y : ι'), (And (p x) (q x y)) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (x : ι) => Set.iInter.{u1, u3} α ι' (fun (y : ι') => Set.iInter.{u1, 0} α (And (p x) (q x y)) (fun (h : And (p x) (q x y)) => s x y h)))) (Set.iInter.{u1, u2} α ι (fun (x : ι) => Set.iInter.{u1, 0} α (p x) (fun (hx : p x) => Set.iInter.{u1, u3} α ι' (fun (y : ι') => Set.iInter.{u1, 0} α (q x y) (fun (hy : q x y) => s x y (And.intro (p x) (q x y) hx hy))))))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} (p : ι -> Prop) (q : ι -> ι' -> Prop) (s : forall (x : ι) (y : ι'), (And (p x) (q x y)) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Set.interᵢ.{u3, u2} α ι (fun (x : ι) => Set.interᵢ.{u3, u1} α ι' (fun (y : ι') => Set.interᵢ.{u3, 0} α (And (p x) (q x y)) (fun (h : And (p x) (q x y)) => s x y h)))) (Set.interᵢ.{u3, u2} α ι (fun (x : ι) => Set.interᵢ.{u3, 0} α (p x) (fun (hx : p x) => Set.interᵢ.{u3, u1} α ι' (fun (y : ι') => Set.interᵢ.{u3, 0} α (q x y) (fun (hy : q x y) => s x y (And.intro (p x) (q x y) hx hy))))))
-Case conversion may be inaccurate. Consider using '#align set.bInter_and Set.binterᵢ_andₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} (p : ι -> Prop) (q : ι -> ι' -> Prop) (s : forall (x : ι) (y : ι'), (And (p x) (q x y)) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Set.iInter.{u3, u2} α ι (fun (x : ι) => Set.iInter.{u3, u1} α ι' (fun (y : ι') => Set.iInter.{u3, 0} α (And (p x) (q x y)) (fun (h : And (p x) (q x y)) => s x y h)))) (Set.iInter.{u3, u2} α ι (fun (x : ι) => Set.iInter.{u3, 0} α (p x) (fun (hx : p x) => Set.iInter.{u3, u1} α ι' (fun (y : ι') => Set.iInter.{u3, 0} α (q x y) (fun (hy : q x y) => s x y (And.intro (p x) (q x y) hx hy))))))
+Case conversion may be inaccurate. Consider using '#align set.bInter_and Set.biInter_andₓ'. -/
@[simp]
-theorem binterᵢ_and (p : ι → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p x ∧ q x y → Set α) :
+theorem biInter_and (p : ι → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p x ∧ q x y → Set α) :
(⋂ (x : ι) (y : ι') (h : p x ∧ q x y), s x y h) =
⋂ (x : ι) (hx : p x) (y : ι') (hy : q x y), s x y ⟨hx, hy⟩ :=
by simp only [Inter_and, @Inter_comm _ ι']
-#align set.bInter_and Set.binterᵢ_and
+#align set.bInter_and Set.biInter_and
-/- warning: set.bInter_and' -> Set.binterᵢ_and' is a dubious translation:
+/- warning: set.bInter_and' -> Set.biInter_and' is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} (p : ι' -> Prop) (q : ι -> ι' -> Prop) (s : forall (x : ι) (y : ι'), (And (p y) (q x y)) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (x : ι) => Set.interᵢ.{u1, u3} α ι' (fun (y : ι') => Set.interᵢ.{u1, 0} α (And (p y) (q x y)) (fun (h : And (p y) (q x y)) => s x y h)))) (Set.interᵢ.{u1, u3} α ι' (fun (y : ι') => Set.interᵢ.{u1, 0} α (p y) (fun (hy : p y) => Set.interᵢ.{u1, u2} α ι (fun (x : ι) => Set.interᵢ.{u1, 0} α (q x y) (fun (hx : q x y) => s x y (And.intro (p y) (q x y) hy hx))))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} (p : ι' -> Prop) (q : ι -> ι' -> Prop) (s : forall (x : ι) (y : ι'), (And (p y) (q x y)) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (x : ι) => Set.iInter.{u1, u3} α ι' (fun (y : ι') => Set.iInter.{u1, 0} α (And (p y) (q x y)) (fun (h : And (p y) (q x y)) => s x y h)))) (Set.iInter.{u1, u3} α ι' (fun (y : ι') => Set.iInter.{u1, 0} α (p y) (fun (hy : p y) => Set.iInter.{u1, u2} α ι (fun (x : ι) => Set.iInter.{u1, 0} α (q x y) (fun (hx : q x y) => s x y (And.intro (p y) (q x y) hy hx))))))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} (p : ι' -> Prop) (q : ι -> ι' -> Prop) (s : forall (x : ι) (y : ι'), (And (p y) (q x y)) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Set.interᵢ.{u3, u2} α ι (fun (x : ι) => Set.interᵢ.{u3, u1} α ι' (fun (y : ι') => Set.interᵢ.{u3, 0} α (And (p y) (q x y)) (fun (h : And (p y) (q x y)) => s x y h)))) (Set.interᵢ.{u3, u1} α ι' (fun (y : ι') => Set.interᵢ.{u3, 0} α (p y) (fun (hy : p y) => Set.interᵢ.{u3, u2} α ι (fun (x : ι) => Set.interᵢ.{u3, 0} α (q x y) (fun (hx : q x y) => s x y (And.intro (p y) (q x y) hy hx))))))
-Case conversion may be inaccurate. Consider using '#align set.bInter_and' Set.binterᵢ_and'ₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} (p : ι' -> Prop) (q : ι -> ι' -> Prop) (s : forall (x : ι) (y : ι'), (And (p y) (q x y)) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Set.iInter.{u3, u2} α ι (fun (x : ι) => Set.iInter.{u3, u1} α ι' (fun (y : ι') => Set.iInter.{u3, 0} α (And (p y) (q x y)) (fun (h : And (p y) (q x y)) => s x y h)))) (Set.iInter.{u3, u1} α ι' (fun (y : ι') => Set.iInter.{u3, 0} α (p y) (fun (hy : p y) => Set.iInter.{u3, u2} α ι (fun (x : ι) => Set.iInter.{u3, 0} α (q x y) (fun (hx : q x y) => s x y (And.intro (p y) (q x y) hy hx))))))
+Case conversion may be inaccurate. Consider using '#align set.bInter_and' Set.biInter_and'ₓ'. -/
@[simp]
-theorem binterᵢ_and' (p : ι' → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p y ∧ q x y → Set α) :
+theorem biInter_and' (p : ι' → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p y ∧ q x y → Set α) :
(⋂ (x : ι) (y : ι') (h : p y ∧ q x y), s x y h) =
⋂ (y : ι') (hy : p y) (x : ι) (hx : q x y), s x y ⟨hy, hx⟩ :=
by simp only [Inter_and, @Inter_comm _ ι]
-#align set.bInter_and' Set.binterᵢ_and'
+#align set.bInter_and' Set.biInter_and'
-/- warning: set.Union_Union_eq_or_left -> Set.unionᵢ_unionᵢ_eq_or_left is a dubious translation:
+/- warning: set.Union_Union_eq_or_left -> Set.iUnion_iUnion_eq_or_left is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {b : β} {p : β -> Prop} {s : forall (x : β), (Or (Eq.{succ u2} β x b) (p x)) -> (Set.{u1} α)}, Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, succ u2} α β (fun (x : β) => Set.unionᵢ.{u1, 0} α (Or (Eq.{succ u2} β x b) (p x)) (fun (h : Or (Eq.{succ u2} β x b) (p x)) => s x h))) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (s b (Or.inl (Eq.{succ u2} β b b) (p b) (rfl.{succ u2} β b))) (Set.unionᵢ.{u1, succ u2} α β (fun (x : β) => Set.unionᵢ.{u1, 0} α (p x) (fun (h : p x) => s x (Or.inr (Eq.{succ u2} β x b) (p x) h)))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {b : β} {p : β -> Prop} {s : forall (x : β), (Or (Eq.{succ u2} β x b) (p x)) -> (Set.{u1} α)}, Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α β (fun (x : β) => Set.iUnion.{u1, 0} α (Or (Eq.{succ u2} β x b) (p x)) (fun (h : Or (Eq.{succ u2} β x b) (p x)) => s x h))) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (s b (Or.inl (Eq.{succ u2} β b b) (p b) (rfl.{succ u2} β b))) (Set.iUnion.{u1, succ u2} α β (fun (x : β) => Set.iUnion.{u1, 0} α (p x) (fun (h : p x) => s x (Or.inr (Eq.{succ u2} β x b) (p x) h)))))
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {b : β} {p : β -> Prop} {s : forall (x : β), (Or (Eq.{succ u2} β x b) (p x)) -> (Set.{u1} α)}, Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, succ u2} α β (fun (x : β) => Set.unionᵢ.{u1, 0} α (Or (Eq.{succ u2} β x b) (p x)) (fun (h : Or (Eq.{succ u2} β x b) (p x)) => s x h))) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (s b (Or.inl (Eq.{succ u2} β b b) (p b) (rfl.{succ u2} β b))) (Set.unionᵢ.{u1, succ u2} α β (fun (x : β) => Set.unionᵢ.{u1, 0} α (p x) (fun (h : p x) => s x (Or.inr (Eq.{succ u2} β x b) (p x) h)))))
-Case conversion may be inaccurate. Consider using '#align set.Union_Union_eq_or_left Set.unionᵢ_unionᵢ_eq_or_leftₓ'. -/
+ forall {α : Type.{u1}} {β : Type.{u2}} {b : β} {p : β -> Prop} {s : forall (x : β), (Or (Eq.{succ u2} β x b) (p x)) -> (Set.{u1} α)}, Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α β (fun (x : β) => Set.iUnion.{u1, 0} α (Or (Eq.{succ u2} β x b) (p x)) (fun (h : Or (Eq.{succ u2} β x b) (p x)) => s x h))) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (s b (Or.inl (Eq.{succ u2} β b b) (p b) (rfl.{succ u2} β b))) (Set.iUnion.{u1, succ u2} α β (fun (x : β) => Set.iUnion.{u1, 0} α (p x) (fun (h : p x) => s x (Or.inr (Eq.{succ u2} β x b) (p x) h)))))
+Case conversion may be inaccurate. Consider using '#align set.Union_Union_eq_or_left Set.iUnion_iUnion_eq_or_leftₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (x h) -/
@[simp]
-theorem unionᵢ_unionᵢ_eq_or_left {b : β} {p : β → Prop} {s : ∀ x : β, x = b ∨ p x → Set α} :
+theorem iUnion_iUnion_eq_or_left {b : β} {p : β → Prop} {s : ∀ x : β, x = b ∨ p x → Set α} :
(⋃ (x) (h), s x h) = s b (Or.inl rfl) ∪ ⋃ (x) (h : p x), s x (Or.inr h) := by
simp only [Union_or, Union_union_distrib, Union_Union_eq_left]
-#align set.Union_Union_eq_or_left Set.unionᵢ_unionᵢ_eq_or_left
+#align set.Union_Union_eq_or_left Set.iUnion_iUnion_eq_or_left
-/- warning: set.Inter_Inter_eq_or_left -> Set.interᵢ_interᵢ_eq_or_left is a dubious translation:
+/- warning: set.Inter_Inter_eq_or_left -> Set.iInter_iInter_eq_or_left is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {b : β} {p : β -> Prop} {s : forall (x : β), (Or (Eq.{succ u2} β x b) (p x)) -> (Set.{u1} α)}, Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, succ u2} α β (fun (x : β) => Set.interᵢ.{u1, 0} α (Or (Eq.{succ u2} β x b) (p x)) (fun (h : Or (Eq.{succ u2} β x b) (p x)) => s x h))) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s b (Or.inl (Eq.{succ u2} β b b) (p b) (rfl.{succ u2} β b))) (Set.interᵢ.{u1, succ u2} α β (fun (x : β) => Set.interᵢ.{u1, 0} α (p x) (fun (h : p x) => s x (Or.inr (Eq.{succ u2} β x b) (p x) h)))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {b : β} {p : β -> Prop} {s : forall (x : β), (Or (Eq.{succ u2} β x b) (p x)) -> (Set.{u1} α)}, Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, succ u2} α β (fun (x : β) => Set.iInter.{u1, 0} α (Or (Eq.{succ u2} β x b) (p x)) (fun (h : Or (Eq.{succ u2} β x b) (p x)) => s x h))) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s b (Or.inl (Eq.{succ u2} β b b) (p b) (rfl.{succ u2} β b))) (Set.iInter.{u1, succ u2} α β (fun (x : β) => Set.iInter.{u1, 0} α (p x) (fun (h : p x) => s x (Or.inr (Eq.{succ u2} β x b) (p x) h)))))
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {b : β} {p : β -> Prop} {s : forall (x : β), (Or (Eq.{succ u2} β x b) (p x)) -> (Set.{u1} α)}, Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, succ u2} α β (fun (x : β) => Set.interᵢ.{u1, 0} α (Or (Eq.{succ u2} β x b) (p x)) (fun (h : Or (Eq.{succ u2} β x b) (p x)) => s x h))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s b (Or.inl (Eq.{succ u2} β b b) (p b) (rfl.{succ u2} β b))) (Set.interᵢ.{u1, succ u2} α β (fun (x : β) => Set.interᵢ.{u1, 0} α (p x) (fun (h : p x) => s x (Or.inr (Eq.{succ u2} β x b) (p x) h)))))
-Case conversion may be inaccurate. Consider using '#align set.Inter_Inter_eq_or_left Set.interᵢ_interᵢ_eq_or_leftₓ'. -/
+ forall {α : Type.{u1}} {β : Type.{u2}} {b : β} {p : β -> Prop} {s : forall (x : β), (Or (Eq.{succ u2} β x b) (p x)) -> (Set.{u1} α)}, Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, succ u2} α β (fun (x : β) => Set.iInter.{u1, 0} α (Or (Eq.{succ u2} β x b) (p x)) (fun (h : Or (Eq.{succ u2} β x b) (p x)) => s x h))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s b (Or.inl (Eq.{succ u2} β b b) (p b) (rfl.{succ u2} β b))) (Set.iInter.{u1, succ u2} α β (fun (x : β) => Set.iInter.{u1, 0} α (p x) (fun (h : p x) => s x (Or.inr (Eq.{succ u2} β x b) (p x) h)))))
+Case conversion may be inaccurate. Consider using '#align set.Inter_Inter_eq_or_left Set.iInter_iInter_eq_or_leftₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (x h) -/
@[simp]
-theorem interᵢ_interᵢ_eq_or_left {b : β} {p : β → Prop} {s : ∀ x : β, x = b ∨ p x → Set α} :
+theorem iInter_iInter_eq_or_left {b : β} {p : β → Prop} {s : ∀ x : β, x = b ∨ p x → Set α} :
(⋂ (x) (h), s x h) = s b (Or.inl rfl) ∩ ⋂ (x) (h : p x), s x (Or.inr h) := by
simp only [Inter_or, Inter_inter_distrib, Inter_Inter_eq_left]
-#align set.Inter_Inter_eq_or_left Set.interᵢ_interᵢ_eq_or_left
+#align set.Inter_Inter_eq_or_left Set.iInter_iInter_eq_or_left
/-! ### Bounded unions and intersections -/
-/- warning: set.mem_bUnion -> Set.mem_bunionᵢ is a dubious translation:
+/- warning: set.mem_bUnion -> Set.mem_biUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {t : α -> (Set.{u2} β)} {x : α} {y : β}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) y (t x)) -> (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) y (Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {t : α -> (Set.{u2} β)} {x : α} {y : β}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) y (t x)) -> (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) y (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {t : α -> (Set.{u1} β)} {x : α} {y : β}, (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) y (t x)) -> (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) y (Set.unionᵢ.{u1, succ u2} β α (fun (x : α) => Set.unionᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x))))
-Case conversion may be inaccurate. Consider using '#align set.mem_bUnion Set.mem_bunionᵢₓ'. -/
+ forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {t : α -> (Set.{u1} β)} {x : α} {y : β}, (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) y (t x)) -> (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) y (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x))))
+Case conversion may be inaccurate. Consider using '#align set.mem_bUnion Set.mem_biUnionₓ'. -/
/-- A specialization of `mem_Union₂`. -/
-theorem mem_bunionᵢ {s : Set α} {t : α → Set β} {x : α} {y : β} (xs : x ∈ s) (ytx : y ∈ t x) :
+theorem mem_biUnion {s : Set α} {t : α → Set β} {x : α} {y : β} (xs : x ∈ s) (ytx : y ∈ t x) :
y ∈ ⋃ x ∈ s, t x :=
- mem_unionᵢ₂_of_mem xs ytx
-#align set.mem_bUnion Set.mem_bunionᵢ
+ mem_iUnion₂_of_mem xs ytx
+#align set.mem_bUnion Set.mem_biUnion
-/- warning: set.mem_bInter -> Set.mem_binterᵢ is a dubious translation:
+/- warning: set.mem_bInter -> Set.mem_biInter is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {t : α -> (Set.{u2} β)} {y : β}, (forall (x : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) y (t x))) -> (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) y (Set.interᵢ.{u2, succ u1} β α (fun (x : α) => Set.interᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {t : α -> (Set.{u2} β)} {y : β}, (forall (x : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) y (t x))) -> (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) y (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {t : α -> (Set.{u1} β)} {y : β}, (forall (x : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) y (t x))) -> (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) y (Set.interᵢ.{u1, succ u2} β α (fun (x : α) => Set.interᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x))))
-Case conversion may be inaccurate. Consider using '#align set.mem_bInter Set.mem_binterᵢₓ'. -/
+ forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {t : α -> (Set.{u1} β)} {y : β}, (forall (x : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) y (t x))) -> (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) y (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x))))
+Case conversion may be inaccurate. Consider using '#align set.mem_bInter Set.mem_biInterₓ'. -/
/-- A specialization of `mem_Inter₂`. -/
-theorem mem_binterᵢ {s : Set α} {t : α → Set β} {y : β} (h : ∀ x ∈ s, y ∈ t x) : y ∈ ⋂ x ∈ s, t x :=
- mem_interᵢ₂_of_mem h
-#align set.mem_bInter Set.mem_binterᵢ
+theorem mem_biInter {s : Set α} {t : α → Set β} {y : β} (h : ∀ x ∈ s, y ∈ t x) : y ∈ ⋂ x ∈ s, t x :=
+ mem_iInter₂_of_mem h
+#align set.mem_bInter Set.mem_biInter
-/- warning: set.subset_bUnion_of_mem -> Set.subset_bunionᵢ_of_mem is a dubious translation:
+/- warning: set.subset_bUnion_of_mem -> Set.subset_biUnion_of_mem is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {u : α -> (Set.{u2} β)} {x : α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (u x) (Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => u x))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {u : α -> (Set.{u2} β)} {x : α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (u x) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => u x))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {u : α -> (Set.{u1} β)} {x : α}, (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (u x) (Set.unionᵢ.{u1, succ u2} β α (fun (x : α) => Set.unionᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => u x))))
-Case conversion may be inaccurate. Consider using '#align set.subset_bUnion_of_mem Set.subset_bunionᵢ_of_memₓ'. -/
+ forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {u : α -> (Set.{u1} β)} {x : α}, (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (u x) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => u x))))
+Case conversion may be inaccurate. Consider using '#align set.subset_bUnion_of_mem Set.subset_biUnion_of_memₓ'. -/
/-- A specialization of `subset_Union₂`. -/
-theorem subset_bunionᵢ_of_mem {s : Set α} {u : α → Set β} {x : α} (xs : x ∈ s) :
+theorem subset_biUnion_of_mem {s : Set α} {u : α → Set β} {x : α} (xs : x ∈ s) :
u x ⊆ ⋃ x ∈ s, u x :=
- subset_unionᵢ₂ x xs
-#align set.subset_bUnion_of_mem Set.subset_bunionᵢ_of_mem
+ subset_iUnion₂ x xs
+#align set.subset_bUnion_of_mem Set.subset_biUnion_of_mem
-/- warning: set.bInter_subset_of_mem -> Set.binterᵢ_subset_of_mem is a dubious translation:
+/- warning: set.bInter_subset_of_mem -> Set.biInter_subset_of_mem is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {t : α -> (Set.{u2} β)} {x : α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.interᵢ.{u2, succ u1} β α (fun (x : α) => Set.interᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x))) (t x))
+ forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {t : α -> (Set.{u2} β)} {x : α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x))) (t x))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {t : α -> (Set.{u1} β)} {x : α}, (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (Set.interᵢ.{u1, succ u2} β α (fun (x : α) => Set.interᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x))) (t x))
-Case conversion may be inaccurate. Consider using '#align set.bInter_subset_of_mem Set.binterᵢ_subset_of_memₓ'. -/
+ forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {t : α -> (Set.{u1} β)} {x : α}, (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x))) (t x))
+Case conversion may be inaccurate. Consider using '#align set.bInter_subset_of_mem Set.biInter_subset_of_memₓ'. -/
/-- A specialization of `Inter₂_subset`. -/
-theorem binterᵢ_subset_of_mem {s : Set α} {t : α → Set β} {x : α} (xs : x ∈ s) :
+theorem biInter_subset_of_mem {s : Set α} {t : α → Set β} {x : α} (xs : x ∈ s) :
(⋂ x ∈ s, t x) ⊆ t x :=
- interᵢ₂_subset x xs
-#align set.bInter_subset_of_mem Set.binterᵢ_subset_of_mem
+ iInter₂_subset x xs
+#align set.bInter_subset_of_mem Set.biInter_subset_of_mem
-/- warning: set.bUnion_subset_bUnion_left -> Set.bunionᵢ_subset_bunionᵢ_left is a dubious translation:
+/- warning: set.bUnion_subset_bUnion_left -> Set.biUnion_subset_biUnion_left is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {s' : Set.{u1} α} {t : α -> (Set.{u2} β)}, (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s s') -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x))) (Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s') (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s') => t x))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {s' : Set.{u1} α} {t : α -> (Set.{u2} β)}, (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s s') -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x))) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s') (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s') => t x))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {s' : Set.{u2} α} {t : α -> (Set.{u1} β)}, (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s s') -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (Set.unionᵢ.{u1, succ u2} β α (fun (x : α) => Set.unionᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x))) (Set.unionᵢ.{u1, succ u2} β α (fun (x : α) => Set.unionᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s') (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s') => t x))))
-Case conversion may be inaccurate. Consider using '#align set.bUnion_subset_bUnion_left Set.bunionᵢ_subset_bunionᵢ_leftₓ'. -/
-theorem bunionᵢ_subset_bunionᵢ_left {s s' : Set α} {t : α → Set β} (h : s ⊆ s') :
+ forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {s' : Set.{u2} α} {t : α -> (Set.{u1} β)}, (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s s') -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x))) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s') (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s') => t x))))
+Case conversion may be inaccurate. Consider using '#align set.bUnion_subset_bUnion_left Set.biUnion_subset_biUnion_leftₓ'. -/
+theorem biUnion_subset_biUnion_left {s s' : Set α} {t : α → Set β} (h : s ⊆ s') :
(⋃ x ∈ s, t x) ⊆ ⋃ x ∈ s', t x :=
- unionᵢ₂_subset fun x hx => subset_bunionᵢ_of_mem <| h hx
-#align set.bUnion_subset_bUnion_left Set.bunionᵢ_subset_bunionᵢ_left
+ iUnion₂_subset fun x hx => subset_biUnion_of_mem <| h hx
+#align set.bUnion_subset_bUnion_left Set.biUnion_subset_biUnion_left
-/- warning: set.bInter_subset_bInter_left -> Set.binterᵢ_subset_binterᵢ_left is a dubious translation:
+/- warning: set.bInter_subset_bInter_left -> Set.biInter_subset_biInter_left is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {s' : Set.{u1} α} {t : α -> (Set.{u2} β)}, (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s' s) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.interᵢ.{u2, succ u1} β α (fun (x : α) => Set.interᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x))) (Set.interᵢ.{u2, succ u1} β α (fun (x : α) => Set.interᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s') (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s') => t x))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {s' : Set.{u1} α} {t : α -> (Set.{u2} β)}, (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s' s) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x))) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s') (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s') => t x))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {s' : Set.{u2} α} {t : α -> (Set.{u1} β)}, (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s' s) -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (Set.interᵢ.{u1, succ u2} β α (fun (x : α) => Set.interᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x))) (Set.interᵢ.{u1, succ u2} β α (fun (x : α) => Set.interᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s') (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s') => t x))))
-Case conversion may be inaccurate. Consider using '#align set.bInter_subset_bInter_left Set.binterᵢ_subset_binterᵢ_leftₓ'. -/
-theorem binterᵢ_subset_binterᵢ_left {s s' : Set α} {t : α → Set β} (h : s' ⊆ s) :
+ forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {s' : Set.{u2} α} {t : α -> (Set.{u1} β)}, (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s' s) -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x))) (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s') (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s') => t x))))
+Case conversion may be inaccurate. Consider using '#align set.bInter_subset_bInter_left Set.biInter_subset_biInter_leftₓ'. -/
+theorem biInter_subset_biInter_left {s s' : Set α} {t : α → Set β} (h : s' ⊆ s) :
(⋂ x ∈ s, t x) ⊆ ⋂ x ∈ s', t x :=
- subset_interᵢ₂ fun x hx => binterᵢ_subset_of_mem <| h hx
-#align set.bInter_subset_bInter_left Set.binterᵢ_subset_binterᵢ_left
+ subset_iInter₂ fun x hx => biInter_subset_of_mem <| h hx
+#align set.bInter_subset_bInter_left Set.biInter_subset_biInter_left
-/- warning: set.bUnion_mono -> Set.bunionᵢ_mono is a dubious translation:
+/- warning: set.bUnion_mono -> Set.biUnion_mono is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {s' : Set.{u1} α} {t : α -> (Set.{u2} β)} {t' : α -> (Set.{u2} β)}, (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s' s) -> (forall (x : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (t x) (t' x))) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s') (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s') => t x))) (Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t' x))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {s' : Set.{u1} α} {t : α -> (Set.{u2} β)} {t' : α -> (Set.{u2} β)}, (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s' s) -> (forall (x : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (t x) (t' x))) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s') (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s') => t x))) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t' x))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {s' : Set.{u2} α} {t : α -> (Set.{u1} β)} {t' : α -> (Set.{u1} β)}, (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s' s) -> (forall (x : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (t x) (t' x))) -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (Set.unionᵢ.{u1, succ u2} β α (fun (x : α) => Set.unionᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s') (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s') => t x))) (Set.unionᵢ.{u1, succ u2} β α (fun (x : α) => Set.unionᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t' x))))
-Case conversion may be inaccurate. Consider using '#align set.bUnion_mono Set.bunionᵢ_monoₓ'. -/
-theorem bunionᵢ_mono {s s' : Set α} {t t' : α → Set β} (hs : s' ⊆ s) (h : ∀ x ∈ s, t x ⊆ t' x) :
+ forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {s' : Set.{u2} α} {t : α -> (Set.{u1} β)} {t' : α -> (Set.{u1} β)}, (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s' s) -> (forall (x : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (t x) (t' x))) -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s') (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s') => t x))) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t' x))))
+Case conversion may be inaccurate. Consider using '#align set.bUnion_mono Set.biUnion_monoₓ'. -/
+theorem biUnion_mono {s s' : Set α} {t t' : α → Set β} (hs : s' ⊆ s) (h : ∀ x ∈ s, t x ⊆ t' x) :
(⋃ x ∈ s', t x) ⊆ ⋃ x ∈ s, t' x :=
- (bunionᵢ_subset_bunionᵢ_left hs).trans <| unionᵢ₂_mono h
-#align set.bUnion_mono Set.bunionᵢ_mono
+ (biUnion_subset_biUnion_left hs).trans <| iUnion₂_mono h
+#align set.bUnion_mono Set.biUnion_mono
-/- warning: set.bInter_mono -> Set.binterᵢ_mono is a dubious translation:
+/- warning: set.bInter_mono -> Set.biInter_mono is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {s' : Set.{u1} α} {t : α -> (Set.{u2} β)} {t' : α -> (Set.{u2} β)}, (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s s') -> (forall (x : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (t x) (t' x))) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.interᵢ.{u2, succ u1} β α (fun (x : α) => Set.interᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s') (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s') => t x))) (Set.interᵢ.{u2, succ u1} β α (fun (x : α) => Set.interᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t' x))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {s' : Set.{u1} α} {t : α -> (Set.{u2} β)} {t' : α -> (Set.{u2} β)}, (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s s') -> (forall (x : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (t x) (t' x))) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s') (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s') => t x))) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t' x))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {s' : Set.{u2} α} {t : α -> (Set.{u1} β)} {t' : α -> (Set.{u1} β)}, (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s s') -> (forall (x : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (t x) (t' x))) -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (Set.interᵢ.{u1, succ u2} β α (fun (x : α) => Set.interᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s') (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s') => t x))) (Set.interᵢ.{u1, succ u2} β α (fun (x : α) => Set.interᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t' x))))
-Case conversion may be inaccurate. Consider using '#align set.bInter_mono Set.binterᵢ_monoₓ'. -/
-theorem binterᵢ_mono {s s' : Set α} {t t' : α → Set β} (hs : s ⊆ s') (h : ∀ x ∈ s, t x ⊆ t' x) :
+ forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {s' : Set.{u2} α} {t : α -> (Set.{u1} β)} {t' : α -> (Set.{u1} β)}, (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s s') -> (forall (x : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (t x) (t' x))) -> (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s') (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s') => t x))) (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t' x))))
+Case conversion may be inaccurate. Consider using '#align set.bInter_mono Set.biInter_monoₓ'. -/
+theorem biInter_mono {s s' : Set α} {t t' : α → Set β} (hs : s ⊆ s') (h : ∀ x ∈ s, t x ⊆ t' x) :
(⋂ x ∈ s', t x) ⊆ ⋂ x ∈ s, t' x :=
- (binterᵢ_subset_binterᵢ_left hs).trans <| interᵢ₂_mono h
-#align set.bInter_mono Set.binterᵢ_mono
+ (biInter_subset_biInter_left hs).trans <| iInter₂_mono h
+#align set.bInter_mono Set.biInter_mono
-/- warning: set.bUnion_eq_Union -> Set.bunionᵢ_eq_unionᵢ is a dubious translation:
+/- warning: set.bUnion_eq_Union -> Set.biUnion_eq_iUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (s : Set.{u1} α) (t : forall (x : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x H))) (Set.unionᵢ.{u2, succ u1} β (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) (fun (x : coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) => t ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s))))) x) (Subtype.property.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) x)))
+ forall {α : Type.{u1}} {β : Type.{u2}} (s : Set.{u1} α) (t : forall (x : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x H))) (Set.iUnion.{u2, succ u1} β (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) (fun (x : coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) => t ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s))))) x) (Subtype.property.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) x)))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (s : Set.{u2} α) (t : forall (x : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.unionᵢ.{u1, succ u2} β α (fun (x : α) => Set.unionᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x H))) (Set.unionᵢ.{u1, succ u2} β (Set.Elem.{u2} α s) (fun (x : Set.Elem.{u2} α s) => t (Subtype.val.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) x) (Subtype.property.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) x)))
-Case conversion may be inaccurate. Consider using '#align set.bUnion_eq_Union Set.bunionᵢ_eq_unionᵢₓ'. -/
-theorem bunionᵢ_eq_unionᵢ (s : Set α) (t : ∀ x ∈ s, Set β) :
+ forall {α : Type.{u2}} {β : Type.{u1}} (s : Set.{u2} α) (t : forall (x : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x H))) (Set.iUnion.{u1, succ u2} β (Set.Elem.{u2} α s) (fun (x : Set.Elem.{u2} α s) => t (Subtype.val.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) x) (Subtype.property.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) x)))
+Case conversion may be inaccurate. Consider using '#align set.bUnion_eq_Union Set.biUnion_eq_iUnionₓ'. -/
+theorem biUnion_eq_iUnion (s : Set α) (t : ∀ x ∈ s, Set β) :
(⋃ x ∈ s, t x ‹_›) = ⋃ x : s, t x x.2 :=
- supᵢ_subtype'
-#align set.bUnion_eq_Union Set.bunionᵢ_eq_unionᵢ
+ iSup_subtype'
+#align set.bUnion_eq_Union Set.biUnion_eq_iUnion
-/- warning: set.bInter_eq_Inter -> Set.binterᵢ_eq_interᵢ is a dubious translation:
+/- warning: set.bInter_eq_Inter -> Set.biInter_eq_iInter is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (s : Set.{u1} α) (t : forall (x : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.interᵢ.{u2, succ u1} β α (fun (x : α) => Set.interᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x H))) (Set.interᵢ.{u2, succ u1} β (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) (fun (x : coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) => t ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s))))) x) (Subtype.property.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) x)))
+ forall {α : Type.{u1}} {β : Type.{u2}} (s : Set.{u1} α) (t : forall (x : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x H))) (Set.iInter.{u2, succ u1} β (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) (fun (x : coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) => t ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s))))) x) (Subtype.property.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) x)))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (s : Set.{u2} α) (t : forall (x : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.interᵢ.{u1, succ u2} β α (fun (x : α) => Set.interᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x H))) (Set.interᵢ.{u1, succ u2} β (Set.Elem.{u2} α s) (fun (x : Set.Elem.{u2} α s) => t (Subtype.val.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) x) (Subtype.property.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) x)))
-Case conversion may be inaccurate. Consider using '#align set.bInter_eq_Inter Set.binterᵢ_eq_interᵢₓ'. -/
-theorem binterᵢ_eq_interᵢ (s : Set α) (t : ∀ x ∈ s, Set β) :
+ forall {α : Type.{u2}} {β : Type.{u1}} (s : Set.{u2} α) (t : forall (x : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x H))) (Set.iInter.{u1, succ u2} β (Set.Elem.{u2} α s) (fun (x : Set.Elem.{u2} α s) => t (Subtype.val.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) x) (Subtype.property.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) x)))
+Case conversion may be inaccurate. Consider using '#align set.bInter_eq_Inter Set.biInter_eq_iInterₓ'. -/
+theorem biInter_eq_iInter (s : Set α) (t : ∀ x ∈ s, Set β) :
(⋂ x ∈ s, t x ‹_›) = ⋂ x : s, t x x.2 :=
- infᵢ_subtype'
-#align set.bInter_eq_Inter Set.binterᵢ_eq_interᵢ
+ iInf_subtype'
+#align set.bInter_eq_Inter Set.biInter_eq_iInter
-/- warning: set.Union_subtype -> Set.unionᵢ_subtype is a dubious translation:
+/- warning: set.Union_subtype -> Set.iUnion_subtype is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (p : α -> Prop) (s : (Subtype.{succ u1} α (fun (x : α) => p x)) -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.unionᵢ.{u2, succ u1} β (Subtype.{succ u1} α (fun (x : α) => p x)) (fun (x : Subtype.{succ u1} α (fun (x : α) => p x)) => s x)) (Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => Set.unionᵢ.{u2, 0} β (p x) (fun (hx : p x) => s (Subtype.mk.{succ u1} α (fun (x : α) => p x) x hx))))
+ forall {α : Type.{u1}} {β : Type.{u2}} (p : α -> Prop) (s : (Subtype.{succ u1} α (fun (x : α) => p x)) -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u1} β (Subtype.{succ u1} α (fun (x : α) => p x)) (fun (x : Subtype.{succ u1} α (fun (x : α) => p x)) => s x)) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (p x) (fun (hx : p x) => s (Subtype.mk.{succ u1} α (fun (x : α) => p x) x hx))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (p : α -> Prop) (s : (Subtype.{succ u2} α (fun (x : α) => p x)) -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.unionᵢ.{u1, succ u2} β (Subtype.{succ u2} α (fun (x : α) => p x)) (fun (x : Subtype.{succ u2} α (fun (x : α) => p x)) => s x)) (Set.unionᵢ.{u1, succ u2} β α (fun (x : α) => Set.unionᵢ.{u1, 0} β (p x) (fun (hx : p x) => s (Subtype.mk.{succ u2} α (fun (x : α) => p x) x hx))))
-Case conversion may be inaccurate. Consider using '#align set.Union_subtype Set.unionᵢ_subtypeₓ'. -/
-theorem unionᵢ_subtype (p : α → Prop) (s : { x // p x } → Set β) :
+ forall {α : Type.{u2}} {β : Type.{u1}} (p : α -> Prop) (s : (Subtype.{succ u2} α (fun (x : α) => p x)) -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, succ u2} β (Subtype.{succ u2} α (fun (x : α) => p x)) (fun (x : Subtype.{succ u2} α (fun (x : α) => p x)) => s x)) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (p x) (fun (hx : p x) => s (Subtype.mk.{succ u2} α (fun (x : α) => p x) x hx))))
+Case conversion may be inaccurate. Consider using '#align set.Union_subtype Set.iUnion_subtypeₓ'. -/
+theorem iUnion_subtype (p : α → Prop) (s : { x // p x } → Set β) :
(⋃ x : { x // p x }, s x) = ⋃ (x) (hx : p x), s ⟨x, hx⟩ :=
- supᵢ_subtype
-#align set.Union_subtype Set.unionᵢ_subtype
+ iSup_subtype
+#align set.Union_subtype Set.iUnion_subtype
-/- warning: set.Inter_subtype -> Set.interᵢ_subtype is a dubious translation:
+/- warning: set.Inter_subtype -> Set.iInter_subtype is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (p : α -> Prop) (s : (Subtype.{succ u1} α (fun (x : α) => p x)) -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.interᵢ.{u2, succ u1} β (Subtype.{succ u1} α (fun (x : α) => p x)) (fun (x : Subtype.{succ u1} α (fun (x : α) => p x)) => s x)) (Set.interᵢ.{u2, succ u1} β α (fun (x : α) => Set.interᵢ.{u2, 0} β (p x) (fun (hx : p x) => s (Subtype.mk.{succ u1} α (fun (x : α) => p x) x hx))))
+ forall {α : Type.{u1}} {β : Type.{u2}} (p : α -> Prop) (s : (Subtype.{succ u1} α (fun (x : α) => p x)) -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, succ u1} β (Subtype.{succ u1} α (fun (x : α) => p x)) (fun (x : Subtype.{succ u1} α (fun (x : α) => p x)) => s x)) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (p x) (fun (hx : p x) => s (Subtype.mk.{succ u1} α (fun (x : α) => p x) x hx))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (p : α -> Prop) (s : (Subtype.{succ u2} α (fun (x : α) => p x)) -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.interᵢ.{u1, succ u2} β (Subtype.{succ u2} α (fun (x : α) => p x)) (fun (x : Subtype.{succ u2} α (fun (x : α) => p x)) => s x)) (Set.interᵢ.{u1, succ u2} β α (fun (x : α) => Set.interᵢ.{u1, 0} β (p x) (fun (hx : p x) => s (Subtype.mk.{succ u2} α (fun (x : α) => p x) x hx))))
-Case conversion may be inaccurate. Consider using '#align set.Inter_subtype Set.interᵢ_subtypeₓ'. -/
-theorem interᵢ_subtype (p : α → Prop) (s : { x // p x } → Set β) :
+ forall {α : Type.{u2}} {β : Type.{u1}} (p : α -> Prop) (s : (Subtype.{succ u2} α (fun (x : α) => p x)) -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iInter.{u1, succ u2} β (Subtype.{succ u2} α (fun (x : α) => p x)) (fun (x : Subtype.{succ u2} α (fun (x : α) => p x)) => s x)) (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (p x) (fun (hx : p x) => s (Subtype.mk.{succ u2} α (fun (x : α) => p x) x hx))))
+Case conversion may be inaccurate. Consider using '#align set.Inter_subtype Set.iInter_subtypeₓ'. -/
+theorem iInter_subtype (p : α → Prop) (s : { x // p x } → Set β) :
(⋂ x : { x // p x }, s x) = ⋂ (x) (hx : p x), s ⟨x, hx⟩ :=
- infᵢ_subtype
-#align set.Inter_subtype Set.interᵢ_subtype
+ iInf_subtype
+#align set.Inter_subtype Set.iInter_subtype
-#print Set.binterᵢ_empty /-
-theorem binterᵢ_empty (u : α → Set β) : (⋂ x ∈ (∅ : Set α), u x) = univ :=
- infᵢ_emptyset
-#align set.bInter_empty Set.binterᵢ_empty
+#print Set.biInter_empty /-
+theorem biInter_empty (u : α → Set β) : (⋂ x ∈ (∅ : Set α), u x) = univ :=
+ iInf_emptyset
+#align set.bInter_empty Set.biInter_empty
-/
-#print Set.binterᵢ_univ /-
-theorem binterᵢ_univ (u : α → Set β) : (⋂ x ∈ @univ α, u x) = ⋂ x, u x :=
- infᵢ_univ
-#align set.bInter_univ Set.binterᵢ_univ
+#print Set.biInter_univ /-
+theorem biInter_univ (u : α → Set β) : (⋂ x ∈ @univ α, u x) = ⋂ x, u x :=
+ iInf_univ
+#align set.bInter_univ Set.biInter_univ
-/
-#print Set.bunionᵢ_self /-
+#print Set.biUnion_self /-
@[simp]
-theorem bunionᵢ_self (s : Set α) : (⋃ x ∈ s, s) = s :=
- Subset.antisymm (unionᵢ₂_subset fun x hx => Subset.refl s) fun x hx => mem_bunionᵢ hx hx
-#align set.bUnion_self Set.bunionᵢ_self
+theorem biUnion_self (s : Set α) : (⋃ x ∈ s, s) = s :=
+ Subset.antisymm (iUnion₂_subset fun x hx => Subset.refl s) fun x hx => mem_biUnion hx hx
+#align set.bUnion_self Set.biUnion_self
-/
-#print Set.unionᵢ_nonempty_self /-
+#print Set.iUnion_nonempty_self /-
@[simp]
-theorem unionᵢ_nonempty_self (s : Set α) : (⋃ h : s.Nonempty, s) = s := by
+theorem iUnion_nonempty_self (s : Set α) : (⋃ h : s.Nonempty, s) = s := by
rw [Union_nonempty_index, bUnion_self]
-#align set.Union_nonempty_self Set.unionᵢ_nonempty_self
+#align set.Union_nonempty_self Set.iUnion_nonempty_self
-/
-#print Set.binterᵢ_singleton /-
+#print Set.biInter_singleton /-
-- TODO(Jeremy): here is an artifact of the encoding of bounded intersection:
-- without dsimp, the next theorem fails to type check, because there is a lambda
-- in a type that needs to be contracted. Using simp [eq_of_mem_singleton xa] also works.
-theorem binterᵢ_singleton (a : α) (s : α → Set β) : (⋂ x ∈ ({a} : Set α), s x) = s a :=
- infᵢ_singleton
-#align set.bInter_singleton Set.binterᵢ_singleton
+theorem biInter_singleton (a : α) (s : α → Set β) : (⋂ x ∈ ({a} : Set α), s x) = s a :=
+ iInf_singleton
+#align set.bInter_singleton Set.biInter_singleton
-/
-/- warning: set.bInter_union -> Set.binterᵢ_union is a dubious translation:
+/- warning: set.bInter_union -> Set.biInter_union is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (s : Set.{u1} α) (t : Set.{u1} α) (u : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.interᵢ.{u2, succ u1} β α (fun (x : α) => Set.interᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s t)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s t)) => u x))) (Inter.inter.{u2} (Set.{u2} β) (Set.hasInter.{u2} β) (Set.interᵢ.{u2, succ u1} β α (fun (x : α) => Set.interᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => u x))) (Set.interᵢ.{u2, succ u1} β α (fun (x : α) => Set.interᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x t) => u x))))
+ forall {α : Type.{u1}} {β : Type.{u2}} (s : Set.{u1} α) (t : Set.{u1} α) (u : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s t)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s t)) => u x))) (Inter.inter.{u2} (Set.{u2} β) (Set.hasInter.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => u x))) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x t) => u x))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (s : Set.{u2} α) (t : Set.{u2} α) (u : α -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.interᵢ.{u1, succ u2} β α (fun (x : α) => Set.interᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) s t)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) s t)) => u x))) (Inter.inter.{u1} (Set.{u1} β) (Set.instInterSet.{u1} β) (Set.interᵢ.{u1, succ u2} β α (fun (x : α) => Set.interᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => u x))) (Set.interᵢ.{u1, succ u2} β α (fun (x : α) => Set.interᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x t) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x t) => u x))))
-Case conversion may be inaccurate. Consider using '#align set.bInter_union Set.binterᵢ_unionₓ'. -/
-theorem binterᵢ_union (s t : Set α) (u : α → Set β) :
+ forall {α : Type.{u2}} {β : Type.{u1}} (s : Set.{u2} α) (t : Set.{u2} α) (u : α -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) s t)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) s t)) => u x))) (Inter.inter.{u1} (Set.{u1} β) (Set.instInterSet.{u1} β) (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => u x))) (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x t) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x t) => u x))))
+Case conversion may be inaccurate. Consider using '#align set.bInter_union Set.biInter_unionₓ'. -/
+theorem biInter_union (s t : Set α) (u : α → Set β) :
(⋂ x ∈ s ∪ t, u x) = (⋂ x ∈ s, u x) ∩ ⋂ x ∈ t, u x :=
- infᵢ_union
-#align set.bInter_union Set.binterᵢ_union
+ iInf_union
+#align set.bInter_union Set.biInter_union
-/- warning: set.bInter_insert -> Set.binterᵢ_insert is a dubious translation:
+/- warning: set.bInter_insert -> Set.biInter_insert is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (a : α) (s : Set.{u1} α) (t : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.interᵢ.{u2, succ u1} β α (fun (x : α) => Set.interᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.hasInsert.{u1} α) a s)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.hasInsert.{u1} α) a s)) => t x))) (Inter.inter.{u2} (Set.{u2} β) (Set.hasInter.{u2} β) (t a) (Set.interᵢ.{u2, succ u1} β α (fun (x : α) => Set.interᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x))))
+ forall {α : Type.{u1}} {β : Type.{u2}} (a : α) (s : Set.{u1} α) (t : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.hasInsert.{u1} α) a s)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.hasInsert.{u1} α) a s)) => t x))) (Inter.inter.{u2} (Set.{u2} β) (Set.hasInter.{u2} β) (t a) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (a : α) (s : Set.{u2} α) (t : α -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.interᵢ.{u1, succ u2} β α (fun (x : α) => Set.interᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Insert.insert.{u2, u2} α (Set.{u2} α) (Set.instInsertSet.{u2} α) a s)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Insert.insert.{u2, u2} α (Set.{u2} α) (Set.instInsertSet.{u2} α) a s)) => t x))) (Inter.inter.{u1} (Set.{u1} β) (Set.instInterSet.{u1} β) (t a) (Set.interᵢ.{u1, succ u2} β α (fun (x : α) => Set.interᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x))))
-Case conversion may be inaccurate. Consider using '#align set.bInter_insert Set.binterᵢ_insertₓ'. -/
-theorem binterᵢ_insert (a : α) (s : Set α) (t : α → Set β) :
+ forall {α : Type.{u2}} {β : Type.{u1}} (a : α) (s : Set.{u2} α) (t : α -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Insert.insert.{u2, u2} α (Set.{u2} α) (Set.instInsertSet.{u2} α) a s)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Insert.insert.{u2, u2} α (Set.{u2} α) (Set.instInsertSet.{u2} α) a s)) => t x))) (Inter.inter.{u1} (Set.{u1} β) (Set.instInterSet.{u1} β) (t a) (Set.iInter.{u1, succ u2} β α (fun (x : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x))))
+Case conversion may be inaccurate. Consider using '#align set.bInter_insert Set.biInter_insertₓ'. -/
+theorem biInter_insert (a : α) (s : Set α) (t : α → Set β) :
(⋂ x ∈ insert a s, t x) = t a ∩ ⋂ x ∈ s, t x := by simp
-#align set.bInter_insert Set.binterᵢ_insert
+#align set.bInter_insert Set.biInter_insert
-/- warning: set.bInter_pair -> Set.binterᵢ_pair is a dubious translation:
+/- warning: set.bInter_pair -> Set.biInter_pair is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (a : α) (b : α) (s : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.interᵢ.{u2, succ u1} β α (fun (x : α) => Set.interᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.hasInsert.{u1} α) a (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.hasSingleton.{u1} α) b))) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.hasInsert.{u1} α) a (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.hasSingleton.{u1} α) b))) => s x))) (Inter.inter.{u2} (Set.{u2} β) (Set.hasInter.{u2} β) (s a) (s b))
+ forall {α : Type.{u1}} {β : Type.{u2}} (a : α) (b : α) (s : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.hasInsert.{u1} α) a (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.hasSingleton.{u1} α) b))) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.hasInsert.{u1} α) a (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.hasSingleton.{u1} α) b))) => s x))) (Inter.inter.{u2} (Set.{u2} β) (Set.hasInter.{u2} β) (s a) (s b))
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} (a : α) (b : α) (s : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.interᵢ.{u2, succ u1} β α (fun (x : α) => Set.interᵢ.{u2, 0} β (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.instInsertSet.{u1} α) a (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.instSingletonSet.{u1} α) b))) (fun (H : Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.instInsertSet.{u1} α) a (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.instSingletonSet.{u1} α) b))) => s x))) (Inter.inter.{u2} (Set.{u2} β) (Set.instInterSet.{u2} β) (s a) (s b))
-Case conversion may be inaccurate. Consider using '#align set.bInter_pair Set.binterᵢ_pairₓ'. -/
+ forall {α : Type.{u1}} {β : Type.{u2}} (a : α) (b : α) (s : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.instInsertSet.{u1} α) a (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.instSingletonSet.{u1} α) b))) (fun (H : Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.instInsertSet.{u1} α) a (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.instSingletonSet.{u1} α) b))) => s x))) (Inter.inter.{u2} (Set.{u2} β) (Set.instInterSet.{u2} β) (s a) (s b))
+Case conversion may be inaccurate. Consider using '#align set.bInter_pair Set.biInter_pairₓ'. -/
-- TODO(Jeremy): another example of where an annotation is needed
-theorem binterᵢ_pair (a b : α) (s : α → Set β) : (⋂ x ∈ ({a, b} : Set α), s x) = s a ∩ s b := by
+theorem biInter_pair (a b : α) (s : α → Set β) : (⋂ x ∈ ({a, b} : Set α), s x) = s a ∩ s b := by
rw [bInter_insert, bInter_singleton]
-#align set.bInter_pair Set.binterᵢ_pair
+#align set.bInter_pair Set.biInter_pair
-/- warning: set.bInter_inter -> Set.binterᵢ_inter is a dubious translation:
+/- warning: set.bInter_inter -> Set.biInter_inter is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} {s : Set.{u1} ι}, (Set.Nonempty.{u1} ι s) -> (forall (f : ι -> (Set.{u2} α)) (t : Set.{u2} α), Eq.{succ u2} (Set.{u2} α) (Set.interᵢ.{u2, succ u1} α ι (fun (i : ι) => Set.interᵢ.{u2, 0} α (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i s) (fun (H : Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i s) => Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (f i) t))) (Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (Set.interᵢ.{u2, succ u1} α ι (fun (i : ι) => Set.interᵢ.{u2, 0} α (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i s) (fun (H : Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i s) => f i))) t))
+ forall {ι : Type.{u1}} {α : Type.{u2}} {s : Set.{u1} ι}, (Set.Nonempty.{u1} ι s) -> (forall (f : ι -> (Set.{u2} α)) (t : Set.{u2} α), Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => Set.iInter.{u2, 0} α (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i s) (fun (H : Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i s) => Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (f i) t))) (Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => Set.iInter.{u2, 0} α (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i s) (fun (H : Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i s) => f i))) t))
but is expected to have type
- forall {ι : Type.{u2}} {α : Type.{u1}} {s : Set.{u2} ι}, (Set.Nonempty.{u2} ι s) -> (forall (f : ι -> (Set.{u1} α)) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, succ u2} α ι (fun (i : ι) => Set.interᵢ.{u1, 0} α (Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i s) (fun (H : Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i s) => Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (f i) t))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.interᵢ.{u1, succ u2} α ι (fun (i : ι) => Set.interᵢ.{u1, 0} α (Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i s) (fun (H : Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i s) => f i))) t))
-Case conversion may be inaccurate. Consider using '#align set.bInter_inter Set.binterᵢ_interₓ'. -/
-theorem binterᵢ_inter {ι α : Type _} {s : Set ι} (hs : s.Nonempty) (f : ι → Set α) (t : Set α) :
+ forall {ι : Type.{u2}} {α : Type.{u1}} {s : Set.{u2} ι}, (Set.Nonempty.{u2} ι s) -> (forall (f : ι -> (Set.{u1} α)) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => Set.iInter.{u1, 0} α (Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i s) (fun (H : Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i s) => Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (f i) t))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => Set.iInter.{u1, 0} α (Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i s) (fun (H : Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i s) => f i))) t))
+Case conversion may be inaccurate. Consider using '#align set.bInter_inter Set.biInter_interₓ'. -/
+theorem biInter_inter {ι α : Type _} {s : Set ι} (hs : s.Nonempty) (f : ι → Set α) (t : Set α) :
(⋂ i ∈ s, f i ∩ t) = (⋂ i ∈ s, f i) ∩ t :=
by
haveI : Nonempty s := hs.to_subtype
simp [bInter_eq_Inter, ← Inter_inter]
-#align set.bInter_inter Set.binterᵢ_inter
+#align set.bInter_inter Set.biInter_inter
-/- warning: set.inter_bInter -> Set.inter_binterᵢ is a dubious translation:
+/- warning: set.inter_bInter -> Set.inter_biInter is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} {s : Set.{u1} ι}, (Set.Nonempty.{u1} ι s) -> (forall (f : ι -> (Set.{u2} α)) (t : Set.{u2} α), Eq.{succ u2} (Set.{u2} α) (Set.interᵢ.{u2, succ u1} α ι (fun (i : ι) => Set.interᵢ.{u2, 0} α (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i s) (fun (H : Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i s) => Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) t (f i)))) (Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) t (Set.interᵢ.{u2, succ u1} α ι (fun (i : ι) => Set.interᵢ.{u2, 0} α (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i s) (fun (H : Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i s) => f i)))))
+ forall {ι : Type.{u1}} {α : Type.{u2}} {s : Set.{u1} ι}, (Set.Nonempty.{u1} ι s) -> (forall (f : ι -> (Set.{u2} α)) (t : Set.{u2} α), Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => Set.iInter.{u2, 0} α (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i s) (fun (H : Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i s) => Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) t (f i)))) (Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) t (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => Set.iInter.{u2, 0} α (Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i s) (fun (H : Membership.Mem.{u1, u1} ι (Set.{u1} ι) (Set.hasMem.{u1} ι) i s) => f i)))))
but is expected to have type
- forall {ι : Type.{u2}} {α : Type.{u1}} {s : Set.{u2} ι}, (Set.Nonempty.{u2} ι s) -> (forall (f : ι -> (Set.{u1} α)) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, succ u2} α ι (fun (i : ι) => Set.interᵢ.{u1, 0} α (Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i s) (fun (H : Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i s) => Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) t (f i)))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) t (Set.interᵢ.{u1, succ u2} α ι (fun (i : ι) => Set.interᵢ.{u1, 0} α (Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i s) (fun (H : Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i s) => f i)))))
-Case conversion may be inaccurate. Consider using '#align set.inter_bInter Set.inter_binterᵢₓ'. -/
-theorem inter_binterᵢ {ι α : Type _} {s : Set ι} (hs : s.Nonempty) (f : ι → Set α) (t : Set α) :
+ forall {ι : Type.{u2}} {α : Type.{u1}} {s : Set.{u2} ι}, (Set.Nonempty.{u2} ι s) -> (forall (f : ι -> (Set.{u1} α)) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => Set.iInter.{u1, 0} α (Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i s) (fun (H : Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i s) => Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) t (f i)))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) t (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => Set.iInter.{u1, 0} α (Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i s) (fun (H : Membership.mem.{u2, u2} ι (Set.{u2} ι) (Set.instMembershipSet.{u2} ι) i s) => f i)))))
+Case conversion may be inaccurate. Consider using '#align set.inter_bInter Set.inter_biInterₓ'. -/
+theorem inter_biInter {ι α : Type _} {s : Set ι} (hs : s.Nonempty) (f : ι → Set α) (t : Set α) :
(⋂ i ∈ s, t ∩ f i) = t ∩ ⋂ i ∈ s, f i :=
by
rw [inter_comm, ← bInter_inter hs]
simp [inter_comm]
-#align set.inter_bInter Set.inter_binterᵢ
+#align set.inter_bInter Set.inter_biInter
-#print Set.bunionᵢ_empty /-
-theorem bunionᵢ_empty (s : α → Set β) : (⋃ x ∈ (∅ : Set α), s x) = ∅ :=
- supᵢ_emptyset
-#align set.bUnion_empty Set.bunionᵢ_empty
+#print Set.biUnion_empty /-
+theorem biUnion_empty (s : α → Set β) : (⋃ x ∈ (∅ : Set α), s x) = ∅ :=
+ iSup_emptyset
+#align set.bUnion_empty Set.biUnion_empty
-/
-#print Set.bunionᵢ_univ /-
-theorem bunionᵢ_univ (s : α → Set β) : (⋃ x ∈ @univ α, s x) = ⋃ x, s x :=
- supᵢ_univ
-#align set.bUnion_univ Set.bunionᵢ_univ
+#print Set.biUnion_univ /-
+theorem biUnion_univ (s : α → Set β) : (⋃ x ∈ @univ α, s x) = ⋃ x, s x :=
+ iSup_univ
+#align set.bUnion_univ Set.biUnion_univ
-/
-#print Set.bunionᵢ_singleton /-
-theorem bunionᵢ_singleton (a : α) (s : α → Set β) : (⋃ x ∈ ({a} : Set α), s x) = s a :=
- supᵢ_singleton
-#align set.bUnion_singleton Set.bunionᵢ_singleton
+#print Set.biUnion_singleton /-
+theorem biUnion_singleton (a : α) (s : α → Set β) : (⋃ x ∈ ({a} : Set α), s x) = s a :=
+ iSup_singleton
+#align set.bUnion_singleton Set.biUnion_singleton
-/
-#print Set.bunionᵢ_of_singleton /-
+#print Set.biUnion_of_singleton /-
@[simp]
-theorem bunionᵢ_of_singleton (s : Set α) : (⋃ x ∈ s, {x}) = s :=
+theorem biUnion_of_singleton (s : Set α) : (⋃ x ∈ s, {x}) = s :=
ext <| by simp
-#align set.bUnion_of_singleton Set.bunionᵢ_of_singleton
+#align set.bUnion_of_singleton Set.biUnion_of_singleton
-/
-/- warning: set.bUnion_union -> Set.bunionᵢ_union is a dubious translation:
+/- warning: set.bUnion_union -> Set.biUnion_union is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (s : Set.{u1} α) (t : Set.{u1} α) (u : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s t)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s t)) => u x))) (Union.union.{u2} (Set.{u2} β) (Set.hasUnion.{u2} β) (Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => u x))) (Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x t) => u x))))
+ forall {α : Type.{u1}} {β : Type.{u2}} (s : Set.{u1} α) (t : Set.{u1} α) (u : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s t)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s t)) => u x))) (Union.union.{u2} (Set.{u2} β) (Set.hasUnion.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => u x))) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x t) => u x))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (s : Set.{u2} α) (t : Set.{u2} α) (u : α -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.unionᵢ.{u1, succ u2} β α (fun (x : α) => Set.unionᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) s t)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) s t)) => u x))) (Union.union.{u1} (Set.{u1} β) (Set.instUnionSet.{u1} β) (Set.unionᵢ.{u1, succ u2} β α (fun (x : α) => Set.unionᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => u x))) (Set.unionᵢ.{u1, succ u2} β α (fun (x : α) => Set.unionᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x t) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x t) => u x))))
-Case conversion may be inaccurate. Consider using '#align set.bUnion_union Set.bunionᵢ_unionₓ'. -/
-theorem bunionᵢ_union (s t : Set α) (u : α → Set β) :
+ forall {α : Type.{u2}} {β : Type.{u1}} (s : Set.{u2} α) (t : Set.{u2} α) (u : α -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) s t)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) s t)) => u x))) (Union.union.{u1} (Set.{u1} β) (Set.instUnionSet.{u1} β) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => u x))) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x t) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x t) => u x))))
+Case conversion may be inaccurate. Consider using '#align set.bUnion_union Set.biUnion_unionₓ'. -/
+theorem biUnion_union (s t : Set α) (u : α → Set β) :
(⋃ x ∈ s ∪ t, u x) = (⋃ x ∈ s, u x) ∪ ⋃ x ∈ t, u x :=
- supᵢ_union
-#align set.bUnion_union Set.bunionᵢ_union
+ iSup_union
+#align set.bUnion_union Set.biUnion_union
-/- warning: set.Union_coe_set -> Set.unionᵢ_coe_set is a dubious translation:
+/- warning: set.Union_coe_set -> Set.iUnion_coe_set is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (s : Set.{u1} α) (f : (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.unionᵢ.{u2, succ u1} β (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) (fun (i : coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) => f i)) (Set.unionᵢ.{u2, succ u1} β α (fun (i : α) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i s) => f (Subtype.mk.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) i H))))
+ forall {α : Type.{u1}} {β : Type.{u2}} (s : Set.{u1} α) (f : (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u1} β (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) (fun (i : coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) => f i)) (Set.iUnion.{u2, succ u1} β α (fun (i : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i s) => f (Subtype.mk.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) i H))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (s : Set.{u2} α) (f : (Set.Elem.{u2} α s) -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.unionᵢ.{u1, succ u2} β (Set.Elem.{u2} α s) (fun (i : Set.Elem.{u2} α s) => f i)) (Set.unionᵢ.{u1, succ u2} β α (fun (i : α) => Set.unionᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i s) => f (Subtype.mk.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) i H))))
-Case conversion may be inaccurate. Consider using '#align set.Union_coe_set Set.unionᵢ_coe_setₓ'. -/
+ forall {α : Type.{u2}} {β : Type.{u1}} (s : Set.{u2} α) (f : (Set.Elem.{u2} α s) -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, succ u2} β (Set.Elem.{u2} α s) (fun (i : Set.Elem.{u2} α s) => f i)) (Set.iUnion.{u1, succ u2} β α (fun (i : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i s) => f (Subtype.mk.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) i H))))
+Case conversion may be inaccurate. Consider using '#align set.Union_coe_set Set.iUnion_coe_setₓ'. -/
@[simp]
-theorem unionᵢ_coe_set {α β : Type _} (s : Set α) (f : s → Set β) :
+theorem iUnion_coe_set {α β : Type _} (s : Set α) (f : s → Set β) :
(⋃ i, f i) = ⋃ i ∈ s, f ⟨i, ‹i ∈ s›⟩ :=
- unionᵢ_subtype _ _
-#align set.Union_coe_set Set.unionᵢ_coe_set
+ iUnion_subtype _ _
+#align set.Union_coe_set Set.iUnion_coe_set
-/- warning: set.Inter_coe_set -> Set.interᵢ_coe_set is a dubious translation:
+/- warning: set.Inter_coe_set -> Set.iInter_coe_set is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (s : Set.{u1} α) (f : (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.interᵢ.{u2, succ u1} β (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) (fun (i : coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) => f i)) (Set.interᵢ.{u2, succ u1} β α (fun (i : α) => Set.interᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i s) => f (Subtype.mk.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) i H))))
+ forall {α : Type.{u1}} {β : Type.{u2}} (s : Set.{u1} α) (f : (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, succ u1} β (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) (fun (i : coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) => f i)) (Set.iInter.{u2, succ u1} β α (fun (i : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i s) => f (Subtype.mk.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) i H))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (s : Set.{u2} α) (f : (Set.Elem.{u2} α s) -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.interᵢ.{u1, succ u2} β (Set.Elem.{u2} α s) (fun (i : Set.Elem.{u2} α s) => f i)) (Set.interᵢ.{u1, succ u2} β α (fun (i : α) => Set.interᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i s) => f (Subtype.mk.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) i H))))
-Case conversion may be inaccurate. Consider using '#align set.Inter_coe_set Set.interᵢ_coe_setₓ'. -/
+ forall {α : Type.{u2}} {β : Type.{u1}} (s : Set.{u2} α) (f : (Set.Elem.{u2} α s) -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iInter.{u1, succ u2} β (Set.Elem.{u2} α s) (fun (i : Set.Elem.{u2} α s) => f i)) (Set.iInter.{u1, succ u2} β α (fun (i : α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i s) => f (Subtype.mk.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) i H))))
+Case conversion may be inaccurate. Consider using '#align set.Inter_coe_set Set.iInter_coe_setₓ'. -/
@[simp]
-theorem interᵢ_coe_set {α β : Type _} (s : Set α) (f : s → Set β) :
+theorem iInter_coe_set {α β : Type _} (s : Set α) (f : s → Set β) :
(⋂ i, f i) = ⋂ i ∈ s, f ⟨i, ‹i ∈ s›⟩ :=
- interᵢ_subtype _ _
-#align set.Inter_coe_set Set.interᵢ_coe_set
+ iInter_subtype _ _
+#align set.Inter_coe_set Set.iInter_coe_set
-/- warning: set.bUnion_insert -> Set.bunionᵢ_insert is a dubious translation:
+/- warning: set.bUnion_insert -> Set.biUnion_insert is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (a : α) (s : Set.{u1} α) (t : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.hasInsert.{u1} α) a s)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.hasInsert.{u1} α) a s)) => t x))) (Union.union.{u2} (Set.{u2} β) (Set.hasUnion.{u2} β) (t a) (Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x))))
+ forall {α : Type.{u1}} {β : Type.{u2}} (a : α) (s : Set.{u1} α) (t : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.hasInsert.{u1} α) a s)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.hasInsert.{u1} α) a s)) => t x))) (Union.union.{u2} (Set.{u2} β) (Set.hasUnion.{u2} β) (t a) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) => t x))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (a : α) (s : Set.{u2} α) (t : α -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.unionᵢ.{u1, succ u2} β α (fun (x : α) => Set.unionᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Insert.insert.{u2, u2} α (Set.{u2} α) (Set.instInsertSet.{u2} α) a s)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Insert.insert.{u2, u2} α (Set.{u2} α) (Set.instInsertSet.{u2} α) a s)) => t x))) (Union.union.{u1} (Set.{u1} β) (Set.instUnionSet.{u1} β) (t a) (Set.unionᵢ.{u1, succ u2} β α (fun (x : α) => Set.unionᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x))))
-Case conversion may be inaccurate. Consider using '#align set.bUnion_insert Set.bunionᵢ_insertₓ'. -/
-theorem bunionᵢ_insert (a : α) (s : Set α) (t : α → Set β) :
+ forall {α : Type.{u2}} {β : Type.{u1}} (a : α) (s : Set.{u2} α) (t : α -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Insert.insert.{u2, u2} α (Set.{u2} α) (Set.instInsertSet.{u2} α) a s)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Insert.insert.{u2, u2} α (Set.{u2} α) (Set.instInsertSet.{u2} α) a s)) => t x))) (Union.union.{u1} (Set.{u1} β) (Set.instUnionSet.{u1} β) (t a) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) => t x))))
+Case conversion may be inaccurate. Consider using '#align set.bUnion_insert Set.biUnion_insertₓ'. -/
+theorem biUnion_insert (a : α) (s : Set α) (t : α → Set β) :
(⋃ x ∈ insert a s, t x) = t a ∪ ⋃ x ∈ s, t x := by simp
-#align set.bUnion_insert Set.bunionᵢ_insert
+#align set.bUnion_insert Set.biUnion_insert
-/- warning: set.bUnion_pair -> Set.bunionᵢ_pair is a dubious translation:
+/- warning: set.bUnion_pair -> Set.biUnion_pair is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (a : α) (b : α) (s : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.hasInsert.{u1} α) a (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.hasSingleton.{u1} α) b))) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.hasInsert.{u1} α) a (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.hasSingleton.{u1} α) b))) => s x))) (Union.union.{u2} (Set.{u2} β) (Set.hasUnion.{u2} β) (s a) (s b))
+ forall {α : Type.{u1}} {β : Type.{u2}} (a : α) (b : α) (s : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.hasInsert.{u1} α) a (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.hasSingleton.{u1} α) b))) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.hasInsert.{u1} α) a (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.hasSingleton.{u1} α) b))) => s x))) (Union.union.{u2} (Set.{u2} β) (Set.hasUnion.{u2} β) (s a) (s b))
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} (a : α) (b : α) (s : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => Set.unionᵢ.{u2, 0} β (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.instInsertSet.{u1} α) a (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.instSingletonSet.{u1} α) b))) (fun (H : Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.instInsertSet.{u1} α) a (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.instSingletonSet.{u1} α) b))) => s x))) (Union.union.{u2} (Set.{u2} β) (Set.instUnionSet.{u2} β) (s a) (s b))
-Case conversion may be inaccurate. Consider using '#align set.bUnion_pair Set.bunionᵢ_pairₓ'. -/
-theorem bunionᵢ_pair (a b : α) (s : α → Set β) : (⋃ x ∈ ({a, b} : Set α), s x) = s a ∪ s b := by
+ forall {α : Type.{u1}} {β : Type.{u2}} (a : α) (b : α) (s : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.instInsertSet.{u1} α) a (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.instSingletonSet.{u1} α) b))) (fun (H : Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (Insert.insert.{u1, u1} α (Set.{u1} α) (Set.instInsertSet.{u1} α) a (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.instSingletonSet.{u1} α) b))) => s x))) (Union.union.{u2} (Set.{u2} β) (Set.instUnionSet.{u2} β) (s a) (s b))
+Case conversion may be inaccurate. Consider using '#align set.bUnion_pair Set.biUnion_pairₓ'. -/
+theorem biUnion_pair (a b : α) (s : α → Set β) : (⋃ x ∈ ({a, b} : Set α), s x) = s a ∪ s b := by
simp
-#align set.bUnion_pair Set.bunionᵢ_pair
+#align set.bUnion_pair Set.biUnion_pair
-/- warning: set.inter_Union₂ -> Set.inter_unionᵢ₂ is a dubious translation:
+/- warning: set.inter_Union₂ -> Set.inter_iUnion₂ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} (s : Set.{u1} α) (t : forall (i : ι), (κ i) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, u3} α (κ i) (fun (j : κ i) => t i j)))) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, u3} α (κ i) (fun (j : κ i) => Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s (t i j))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} (s : Set.{u1} α) (t : forall (i : ι), (κ i) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => t i j)))) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s (t i j))))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : Set.{u3} α) (t : forall (i : ι), (κ i) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Inter.inter.{u3} (Set.{u3} α) (Set.instInterSet.{u3} α) s (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => Set.unionᵢ.{u3, u1} α (κ i) (fun (j : κ i) => t i j)))) (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => Set.unionᵢ.{u3, u1} α (κ i) (fun (j : κ i) => Inter.inter.{u3} (Set.{u3} α) (Set.instInterSet.{u3} α) s (t i j))))
-Case conversion may be inaccurate. Consider using '#align set.inter_Union₂ Set.inter_unionᵢ₂ₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : Set.{u3} α) (t : forall (i : ι), (κ i) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Inter.inter.{u3} (Set.{u3} α) (Set.instInterSet.{u3} α) s (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => t i j)))) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => Inter.inter.{u3} (Set.{u3} α) (Set.instInterSet.{u3} α) s (t i j))))
+Case conversion may be inaccurate. Consider using '#align set.inter_Union₂ Set.inter_iUnion₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem inter_unionᵢ₂ (s : Set α) (t : ∀ i, κ i → Set α) :
+theorem inter_iUnion₂ (s : Set α) (t : ∀ i, κ i → Set α) :
(s ∩ ⋃ (i) (j), t i j) = ⋃ (i) (j), s ∩ t i j := by simp only [inter_Union]
-#align set.inter_Union₂ Set.inter_unionᵢ₂
+#align set.inter_Union₂ Set.inter_iUnion₂
-/- warning: set.Union₂_inter -> Set.unionᵢ₂_inter is a dubious translation:
+/- warning: set.Union₂_inter -> Set.iUnion₂_inter is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} (s : forall (i : ι), (κ i) -> (Set.{u1} α)) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) t) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, u3} α (κ i) (fun (j : κ i) => Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s i j) t)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} (s : forall (i : ι), (κ i) -> (Set.{u1} α)) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) t) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s i j) t)))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : forall (i : ι), (κ i) -> (Set.{u3} α)) (t : Set.{u3} α), Eq.{succ u3} (Set.{u3} α) (Inter.inter.{u3} (Set.{u3} α) (Set.instInterSet.{u3} α) (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => Set.unionᵢ.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) t) (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => Set.unionᵢ.{u3, u1} α (κ i) (fun (j : κ i) => Inter.inter.{u3} (Set.{u3} α) (Set.instInterSet.{u3} α) (s i j) t)))
-Case conversion may be inaccurate. Consider using '#align set.Union₂_inter Set.unionᵢ₂_interₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : forall (i : ι), (κ i) -> (Set.{u3} α)) (t : Set.{u3} α), Eq.{succ u3} (Set.{u3} α) (Inter.inter.{u3} (Set.{u3} α) (Set.instInterSet.{u3} α) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) t) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => Inter.inter.{u3} (Set.{u3} α) (Set.instInterSet.{u3} α) (s i j) t)))
+Case conversion may be inaccurate. Consider using '#align set.Union₂_inter Set.iUnion₂_interₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem unionᵢ₂_inter (s : ∀ i, κ i → Set α) (t : Set α) :
+theorem iUnion₂_inter (s : ∀ i, κ i → Set α) (t : Set α) :
(⋃ (i) (j), s i j) ∩ t = ⋃ (i) (j), s i j ∩ t := by simp_rw [Union_inter]
-#align set.Union₂_inter Set.unionᵢ₂_inter
+#align set.Union₂_inter Set.iUnion₂_inter
-/- warning: set.union_Inter₂ -> Set.union_interᵢ₂ is a dubious translation:
+/- warning: set.union_Inter₂ -> Set.union_iInter₂ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} (s : Set.{u1} α) (t : forall (i : ι), (κ i) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u3} α (κ i) (fun (j : κ i) => t i j)))) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u3} α (κ i) (fun (j : κ i) => Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s (t i j))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} (s : Set.{u1} α) (t : forall (i : ι), (κ i) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => t i j)))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s (t i j))))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : Set.{u3} α) (t : forall (i : ι), (κ i) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Union.union.{u3} (Set.{u3} α) (Set.instUnionSet.{u3} α) s (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, u1} α (κ i) (fun (j : κ i) => t i j)))) (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, u1} α (κ i) (fun (j : κ i) => Union.union.{u3} (Set.{u3} α) (Set.instUnionSet.{u3} α) s (t i j))))
-Case conversion may be inaccurate. Consider using '#align set.union_Inter₂ Set.union_interᵢ₂ₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : Set.{u3} α) (t : forall (i : ι), (κ i) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Union.union.{u3} (Set.{u3} α) (Set.instUnionSet.{u3} α) s (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => t i j)))) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => Union.union.{u3} (Set.{u3} α) (Set.instUnionSet.{u3} α) s (t i j))))
+Case conversion may be inaccurate. Consider using '#align set.union_Inter₂ Set.union_iInter₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem union_interᵢ₂ (s : Set α) (t : ∀ i, κ i → Set α) :
+theorem union_iInter₂ (s : Set α) (t : ∀ i, κ i → Set α) :
(s ∪ ⋂ (i) (j), t i j) = ⋂ (i) (j), s ∪ t i j := by simp_rw [union_Inter]
-#align set.union_Inter₂ Set.union_interᵢ₂
+#align set.union_Inter₂ Set.union_iInter₂
-/- warning: set.Inter₂_union -> Set.interᵢ₂_union is a dubious translation:
+/- warning: set.Inter₂_union -> Set.iInter₂_union is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} (s : forall (i : ι), (κ i) -> (Set.{u1} α)) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) t) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u3} α (κ i) (fun (j : κ i) => Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (s i j) t)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} (s : forall (i : ι), (κ i) -> (Set.{u1} α)) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) t) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (s i j) t)))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : forall (i : ι), (κ i) -> (Set.{u3} α)) (t : Set.{u3} α), Eq.{succ u3} (Set.{u3} α) (Union.union.{u3} (Set.{u3} α) (Set.instUnionSet.{u3} α) (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) t) (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, u1} α (κ i) (fun (j : κ i) => Union.union.{u3} (Set.{u3} α) (Set.instUnionSet.{u3} α) (s i j) t)))
-Case conversion may be inaccurate. Consider using '#align set.Inter₂_union Set.interᵢ₂_unionₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : forall (i : ι), (κ i) -> (Set.{u3} α)) (t : Set.{u3} α), Eq.{succ u3} (Set.{u3} α) (Union.union.{u3} (Set.{u3} α) (Set.instUnionSet.{u3} α) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) t) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => Union.union.{u3} (Set.{u3} α) (Set.instUnionSet.{u3} α) (s i j) t)))
+Case conversion may be inaccurate. Consider using '#align set.Inter₂_union Set.iInter₂_unionₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem interᵢ₂_union (s : ∀ i, κ i → Set α) (t : Set α) :
+theorem iInter₂_union (s : ∀ i, κ i → Set α) (t : Set α) :
(⋂ (i) (j), s i j) ∪ t = ⋂ (i) (j), s i j ∪ t := by simp_rw [Inter_union]
-#align set.Inter₂_union Set.interᵢ₂_union
+#align set.Inter₂_union Set.iInter₂_union
-#print Set.mem_unionₛ_of_mem /-
-theorem mem_unionₛ_of_mem {x : α} {t : Set α} {S : Set (Set α)} (hx : x ∈ t) (ht : t ∈ S) :
+#print Set.mem_sUnion_of_mem /-
+theorem mem_sUnion_of_mem {x : α} {t : Set α} {S : Set (Set α)} (hx : x ∈ t) (ht : t ∈ S) :
x ∈ ⋃₀ S :=
⟨t, ht, hx⟩
-#align set.mem_sUnion_of_mem Set.mem_unionₛ_of_mem
+#align set.mem_sUnion_of_mem Set.mem_sUnion_of_mem
-/
-#print Set.not_mem_of_not_mem_unionₛ /-
+#print Set.not_mem_of_not_mem_sUnion /-
-- is this theorem really necessary?
-theorem not_mem_of_not_mem_unionₛ {x : α} {t : Set α} {S : Set (Set α)} (hx : x ∉ ⋃₀ S)
+theorem not_mem_of_not_mem_sUnion {x : α} {t : Set α} {S : Set (Set α)} (hx : x ∉ ⋃₀ S)
(ht : t ∈ S) : x ∉ t := fun h => hx ⟨t, ht, h⟩
-#align set.not_mem_of_not_mem_sUnion Set.not_mem_of_not_mem_unionₛ
+#align set.not_mem_of_not_mem_sUnion Set.not_mem_of_not_mem_sUnion
-/
-#print Set.interₛ_subset_of_mem /-
-theorem interₛ_subset_of_mem {S : Set (Set α)} {t : Set α} (tS : t ∈ S) : ⋂₀ S ⊆ t :=
- infₛ_le tS
-#align set.sInter_subset_of_mem Set.interₛ_subset_of_mem
+#print Set.sInter_subset_of_mem /-
+theorem sInter_subset_of_mem {S : Set (Set α)} {t : Set α} (tS : t ∈ S) : ⋂₀ S ⊆ t :=
+ sInf_le tS
+#align set.sInter_subset_of_mem Set.sInter_subset_of_mem
-/
-#print Set.subset_unionₛ_of_mem /-
-theorem subset_unionₛ_of_mem {S : Set (Set α)} {t : Set α} (tS : t ∈ S) : t ⊆ ⋃₀ S :=
- le_supₛ tS
-#align set.subset_sUnion_of_mem Set.subset_unionₛ_of_mem
+#print Set.subset_sUnion_of_mem /-
+theorem subset_sUnion_of_mem {S : Set (Set α)} {t : Set α} (tS : t ∈ S) : t ⊆ ⋃₀ S :=
+ le_sSup tS
+#align set.subset_sUnion_of_mem Set.subset_sUnion_of_mem
-/
-#print Set.subset_unionₛ_of_subset /-
-theorem subset_unionₛ_of_subset {s : Set α} (t : Set (Set α)) (u : Set α) (h₁ : s ⊆ u)
+#print Set.subset_sUnion_of_subset /-
+theorem subset_sUnion_of_subset {s : Set α} (t : Set (Set α)) (u : Set α) (h₁ : s ⊆ u)
(h₂ : u ∈ t) : s ⊆ ⋃₀ t :=
- Subset.trans h₁ (subset_unionₛ_of_mem h₂)
-#align set.subset_sUnion_of_subset Set.subset_unionₛ_of_subset
+ Subset.trans h₁ (subset_sUnion_of_mem h₂)
+#align set.subset_sUnion_of_subset Set.subset_sUnion_of_subset
-/
-#print Set.unionₛ_subset /-
-theorem unionₛ_subset {S : Set (Set α)} {t : Set α} (h : ∀ t' ∈ S, t' ⊆ t) : ⋃₀ S ⊆ t :=
- supₛ_le h
-#align set.sUnion_subset Set.unionₛ_subset
+#print Set.sUnion_subset /-
+theorem sUnion_subset {S : Set (Set α)} {t : Set α} (h : ∀ t' ∈ S, t' ⊆ t) : ⋃₀ S ⊆ t :=
+ sSup_le h
+#align set.sUnion_subset Set.sUnion_subset
-/
-#print Set.unionₛ_subset_iff /-
+#print Set.sUnion_subset_iff /-
@[simp]
-theorem unionₛ_subset_iff {s : Set (Set α)} {t : Set α} : ⋃₀ s ⊆ t ↔ ∀ t' ∈ s, t' ⊆ t :=
- @supₛ_le_iff (Set α) _ _ _
-#align set.sUnion_subset_iff Set.unionₛ_subset_iff
+theorem sUnion_subset_iff {s : Set (Set α)} {t : Set α} : ⋃₀ s ⊆ t ↔ ∀ t' ∈ s, t' ⊆ t :=
+ @sSup_le_iff (Set α) _ _ _
+#align set.sUnion_subset_iff Set.sUnion_subset_iff
-/
-#print Set.subset_interₛ /-
-theorem subset_interₛ {S : Set (Set α)} {t : Set α} (h : ∀ t' ∈ S, t ⊆ t') : t ⊆ ⋂₀ S :=
- le_infₛ h
-#align set.subset_sInter Set.subset_interₛ
+#print Set.subset_sInter /-
+theorem subset_sInter {S : Set (Set α)} {t : Set α} (h : ∀ t' ∈ S, t ⊆ t') : t ⊆ ⋂₀ S :=
+ le_sInf h
+#align set.subset_sInter Set.subset_sInter
-/
-#print Set.subset_interₛ_iff /-
+#print Set.subset_sInter_iff /-
@[simp]
-theorem subset_interₛ_iff {S : Set (Set α)} {t : Set α} : t ⊆ ⋂₀ S ↔ ∀ t' ∈ S, t ⊆ t' :=
- @le_infₛ_iff (Set α) _ _ _
-#align set.subset_sInter_iff Set.subset_interₛ_iff
+theorem subset_sInter_iff {S : Set (Set α)} {t : Set α} : t ⊆ ⋂₀ S ↔ ∀ t' ∈ S, t ⊆ t' :=
+ @le_sInf_iff (Set α) _ _ _
+#align set.subset_sInter_iff Set.subset_sInter_iff
-/
-#print Set.unionₛ_subset_unionₛ /-
-theorem unionₛ_subset_unionₛ {S T : Set (Set α)} (h : S ⊆ T) : ⋃₀ S ⊆ ⋃₀ T :=
- unionₛ_subset fun s hs => subset_unionₛ_of_mem (h hs)
-#align set.sUnion_subset_sUnion Set.unionₛ_subset_unionₛ
+#print Set.sUnion_subset_sUnion /-
+theorem sUnion_subset_sUnion {S T : Set (Set α)} (h : S ⊆ T) : ⋃₀ S ⊆ ⋃₀ T :=
+ sUnion_subset fun s hs => subset_sUnion_of_mem (h hs)
+#align set.sUnion_subset_sUnion Set.sUnion_subset_sUnion
-/
-#print Set.interₛ_subset_interₛ /-
-theorem interₛ_subset_interₛ {S T : Set (Set α)} (h : S ⊆ T) : ⋂₀ T ⊆ ⋂₀ S :=
- subset_interₛ fun s hs => interₛ_subset_of_mem (h hs)
-#align set.sInter_subset_sInter Set.interₛ_subset_interₛ
+#print Set.sInter_subset_sInter /-
+theorem sInter_subset_sInter {S T : Set (Set α)} (h : S ⊆ T) : ⋂₀ T ⊆ ⋂₀ S :=
+ subset_sInter fun s hs => sInter_subset_of_mem (h hs)
+#align set.sInter_subset_sInter Set.sInter_subset_sInter
-/
-#print Set.unionₛ_empty /-
+#print Set.sUnion_empty /-
@[simp]
-theorem unionₛ_empty : ⋃₀ ∅ = (∅ : Set α) :=
- supₛ_empty
-#align set.sUnion_empty Set.unionₛ_empty
+theorem sUnion_empty : ⋃₀ ∅ = (∅ : Set α) :=
+ sSup_empty
+#align set.sUnion_empty Set.sUnion_empty
-/
-#print Set.interₛ_empty /-
+#print Set.sInter_empty /-
@[simp]
-theorem interₛ_empty : ⋂₀ ∅ = (univ : Set α) :=
- infₛ_empty
-#align set.sInter_empty Set.interₛ_empty
+theorem sInter_empty : ⋂₀ ∅ = (univ : Set α) :=
+ sInf_empty
+#align set.sInter_empty Set.sInter_empty
-/
-#print Set.unionₛ_singleton /-
+#print Set.sUnion_singleton /-
@[simp]
-theorem unionₛ_singleton (s : Set α) : ⋃₀ {s} = s :=
- supₛ_singleton
-#align set.sUnion_singleton Set.unionₛ_singleton
+theorem sUnion_singleton (s : Set α) : ⋃₀ {s} = s :=
+ sSup_singleton
+#align set.sUnion_singleton Set.sUnion_singleton
-/
-#print Set.interₛ_singleton /-
+#print Set.sInter_singleton /-
@[simp]
-theorem interₛ_singleton (s : Set α) : ⋂₀ {s} = s :=
- infₛ_singleton
-#align set.sInter_singleton Set.interₛ_singleton
+theorem sInter_singleton (s : Set α) : ⋂₀ {s} = s :=
+ sInf_singleton
+#align set.sInter_singleton Set.sInter_singleton
-/
-#print Set.unionₛ_eq_empty /-
+#print Set.sUnion_eq_empty /-
@[simp]
-theorem unionₛ_eq_empty {S : Set (Set α)} : ⋃₀ S = ∅ ↔ ∀ s ∈ S, s = ∅ :=
- supₛ_eq_bot
-#align set.sUnion_eq_empty Set.unionₛ_eq_empty
+theorem sUnion_eq_empty {S : Set (Set α)} : ⋃₀ S = ∅ ↔ ∀ s ∈ S, s = ∅ :=
+ sSup_eq_bot
+#align set.sUnion_eq_empty Set.sUnion_eq_empty
-/
-#print Set.interₛ_eq_univ /-
+#print Set.sInter_eq_univ /-
@[simp]
-theorem interₛ_eq_univ {S : Set (Set α)} : ⋂₀ S = univ ↔ ∀ s ∈ S, s = univ :=
- infₛ_eq_top
-#align set.sInter_eq_univ Set.interₛ_eq_univ
+theorem sInter_eq_univ {S : Set (Set α)} : ⋂₀ S = univ ↔ ∀ s ∈ S, s = univ :=
+ sInf_eq_top
+#align set.sInter_eq_univ Set.sInter_eq_univ
-/
-/- warning: set.nonempty_sUnion -> Set.nonempty_unionₛ is a dubious translation:
+/- warning: set.nonempty_sUnion -> Set.nonempty_sUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {S : Set.{u1} (Set.{u1} α)}, Iff (Set.Nonempty.{u1} α (Set.unionₛ.{u1} α S)) (Exists.{succ u1} (Set.{u1} α) (fun (s : Set.{u1} α) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s S) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s S) => Set.Nonempty.{u1} α s)))
+ forall {α : Type.{u1}} {S : Set.{u1} (Set.{u1} α)}, Iff (Set.Nonempty.{u1} α (Set.sUnion.{u1} α S)) (Exists.{succ u1} (Set.{u1} α) (fun (s : Set.{u1} α) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s S) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s S) => Set.Nonempty.{u1} α s)))
but is expected to have type
- forall {α : Type.{u1}} {S : Set.{u1} (Set.{u1} α)}, Iff (Set.Nonempty.{u1} α (Set.unionₛ.{u1} α S)) (Exists.{succ u1} (Set.{u1} α) (fun (s : Set.{u1} α) => And (Membership.mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instMembershipSet.{u1} (Set.{u1} α)) s S) (Set.Nonempty.{u1} α s)))
-Case conversion may be inaccurate. Consider using '#align set.nonempty_sUnion Set.nonempty_unionₛₓ'. -/
+ forall {α : Type.{u1}} {S : Set.{u1} (Set.{u1} α)}, Iff (Set.Nonempty.{u1} α (Set.sUnion.{u1} α S)) (Exists.{succ u1} (Set.{u1} α) (fun (s : Set.{u1} α) => And (Membership.mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instMembershipSet.{u1} (Set.{u1} α)) s S) (Set.Nonempty.{u1} α s)))
+Case conversion may be inaccurate. Consider using '#align set.nonempty_sUnion Set.nonempty_sUnionₓ'. -/
@[simp]
-theorem nonempty_unionₛ {S : Set (Set α)} : (⋃₀ S).Nonempty ↔ ∃ s ∈ S, Set.Nonempty s := by
+theorem nonempty_sUnion {S : Set (Set α)} : (⋃₀ S).Nonempty ↔ ∃ s ∈ S, Set.Nonempty s := by
simp [nonempty_iff_ne_empty]
-#align set.nonempty_sUnion Set.nonempty_unionₛ
+#align set.nonempty_sUnion Set.nonempty_sUnion
-#print Set.Nonempty.of_unionₛ /-
-theorem Nonempty.of_unionₛ {s : Set (Set α)} (h : (⋃₀ s).Nonempty) : s.Nonempty :=
- let ⟨s, hs, _⟩ := nonempty_unionₛ.1 h
+#print Set.Nonempty.of_sUnion /-
+theorem Nonempty.of_sUnion {s : Set (Set α)} (h : (⋃₀ s).Nonempty) : s.Nonempty :=
+ let ⟨s, hs, _⟩ := nonempty_sUnion.1 h
⟨s, hs⟩
-#align set.nonempty.of_sUnion Set.Nonempty.of_unionₛ
+#align set.nonempty.of_sUnion Set.Nonempty.of_sUnion
-/
-#print Set.Nonempty.of_unionₛ_eq_univ /-
-theorem Nonempty.of_unionₛ_eq_univ [Nonempty α] {s : Set (Set α)} (h : ⋃₀ s = univ) : s.Nonempty :=
- Nonempty.of_unionₛ <| h.symm ▸ univ_nonempty
-#align set.nonempty.of_sUnion_eq_univ Set.Nonempty.of_unionₛ_eq_univ
+#print Set.Nonempty.of_sUnion_eq_univ /-
+theorem Nonempty.of_sUnion_eq_univ [Nonempty α] {s : Set (Set α)} (h : ⋃₀ s = univ) : s.Nonempty :=
+ Nonempty.of_sUnion <| h.symm ▸ univ_nonempty
+#align set.nonempty.of_sUnion_eq_univ Set.Nonempty.of_sUnion_eq_univ
-/
-/- warning: set.sUnion_union -> Set.unionₛ_union is a dubious translation:
+/- warning: set.sUnion_union -> Set.sUnion_union is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)) (T : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.unionₛ.{u1} α (Union.union.{u1} (Set.{u1} (Set.{u1} α)) (Set.hasUnion.{u1} (Set.{u1} α)) S T)) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Set.unionₛ.{u1} α S) (Set.unionₛ.{u1} α T))
+ forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)) (T : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α (Union.union.{u1} (Set.{u1} (Set.{u1} α)) (Set.hasUnion.{u1} (Set.{u1} α)) S T)) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Set.sUnion.{u1} α S) (Set.sUnion.{u1} α T))
but is expected to have type
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)) (T : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.unionₛ.{u1} α (Union.union.{u1} (Set.{u1} (Set.{u1} α)) (Set.instUnionSet.{u1} (Set.{u1} α)) S T)) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (Set.unionₛ.{u1} α S) (Set.unionₛ.{u1} α T))
-Case conversion may be inaccurate. Consider using '#align set.sUnion_union Set.unionₛ_unionₓ'. -/
-theorem unionₛ_union (S T : Set (Set α)) : ⋃₀ (S ∪ T) = ⋃₀ S ∪ ⋃₀ T :=
- supₛ_union
-#align set.sUnion_union Set.unionₛ_union
+ forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)) (T : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α (Union.union.{u1} (Set.{u1} (Set.{u1} α)) (Set.instUnionSet.{u1} (Set.{u1} α)) S T)) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (Set.sUnion.{u1} α S) (Set.sUnion.{u1} α T))
+Case conversion may be inaccurate. Consider using '#align set.sUnion_union Set.sUnion_unionₓ'. -/
+theorem sUnion_union (S T : Set (Set α)) : ⋃₀ (S ∪ T) = ⋃₀ S ∪ ⋃₀ T :=
+ sSup_union
+#align set.sUnion_union Set.sUnion_union
-/- warning: set.sInter_union -> Set.interₛ_union is a dubious translation:
+/- warning: set.sInter_union -> Set.sInter_union is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)) (T : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.interₛ.{u1} α (Union.union.{u1} (Set.{u1} (Set.{u1} α)) (Set.hasUnion.{u1} (Set.{u1} α)) S T)) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (Set.interₛ.{u1} α S) (Set.interₛ.{u1} α T))
+ forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)) (T : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α (Union.union.{u1} (Set.{u1} (Set.{u1} α)) (Set.hasUnion.{u1} (Set.{u1} α)) S T)) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (Set.sInter.{u1} α S) (Set.sInter.{u1} α T))
but is expected to have type
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)) (T : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.interₛ.{u1} α (Union.union.{u1} (Set.{u1} (Set.{u1} α)) (Set.instUnionSet.{u1} (Set.{u1} α)) S T)) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.interₛ.{u1} α S) (Set.interₛ.{u1} α T))
-Case conversion may be inaccurate. Consider using '#align set.sInter_union Set.interₛ_unionₓ'. -/
-theorem interₛ_union (S T : Set (Set α)) : ⋂₀ (S ∪ T) = ⋂₀ S ∩ ⋂₀ T :=
- infₛ_union
-#align set.sInter_union Set.interₛ_union
+ forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)) (T : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α (Union.union.{u1} (Set.{u1} (Set.{u1} α)) (Set.instUnionSet.{u1} (Set.{u1} α)) S T)) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.sInter.{u1} α S) (Set.sInter.{u1} α T))
+Case conversion may be inaccurate. Consider using '#align set.sInter_union Set.sInter_unionₓ'. -/
+theorem sInter_union (S T : Set (Set α)) : ⋂₀ (S ∪ T) = ⋂₀ S ∩ ⋂₀ T :=
+ sInf_union
+#align set.sInter_union Set.sInter_union
-/- warning: set.sUnion_insert -> Set.unionₛ_insert is a dubious translation:
+/- warning: set.sUnion_insert -> Set.sUnion_insert is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} (s : Set.{u1} α) (T : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.unionₛ.{u1} α (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasInsert.{u1} (Set.{u1} α)) s T)) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s (Set.unionₛ.{u1} α T))
+ forall {α : Type.{u1}} (s : Set.{u1} α) (T : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasInsert.{u1} (Set.{u1} α)) s T)) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s (Set.sUnion.{u1} α T))
but is expected to have type
- forall {α : Type.{u1}} (s : Set.{u1} α) (T : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.unionₛ.{u1} α (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instInsertSet.{u1} (Set.{u1} α)) s T)) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) s (Set.unionₛ.{u1} α T))
-Case conversion may be inaccurate. Consider using '#align set.sUnion_insert Set.unionₛ_insertₓ'. -/
+ forall {α : Type.{u1}} (s : Set.{u1} α) (T : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instInsertSet.{u1} (Set.{u1} α)) s T)) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) s (Set.sUnion.{u1} α T))
+Case conversion may be inaccurate. Consider using '#align set.sUnion_insert Set.sUnion_insertₓ'. -/
@[simp]
-theorem unionₛ_insert (s : Set α) (T : Set (Set α)) : ⋃₀ insert s T = s ∪ ⋃₀ T :=
- supₛ_insert
-#align set.sUnion_insert Set.unionₛ_insert
+theorem sUnion_insert (s : Set α) (T : Set (Set α)) : ⋃₀ insert s T = s ∪ ⋃₀ T :=
+ sSup_insert
+#align set.sUnion_insert Set.sUnion_insert
-/- warning: set.sInter_insert -> Set.interₛ_insert is a dubious translation:
+/- warning: set.sInter_insert -> Set.sInter_insert is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} (s : Set.{u1} α) (T : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.interₛ.{u1} α (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasInsert.{u1} (Set.{u1} α)) s T)) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s (Set.interₛ.{u1} α T))
+ forall {α : Type.{u1}} (s : Set.{u1} α) (T : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasInsert.{u1} (Set.{u1} α)) s T)) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s (Set.sInter.{u1} α T))
but is expected to have type
- forall {α : Type.{u1}} (s : Set.{u1} α) (T : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.interₛ.{u1} α (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instInsertSet.{u1} (Set.{u1} α)) s T)) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s (Set.interₛ.{u1} α T))
-Case conversion may be inaccurate. Consider using '#align set.sInter_insert Set.interₛ_insertₓ'. -/
+ forall {α : Type.{u1}} (s : Set.{u1} α) (T : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instInsertSet.{u1} (Set.{u1} α)) s T)) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s (Set.sInter.{u1} α T))
+Case conversion may be inaccurate. Consider using '#align set.sInter_insert Set.sInter_insertₓ'. -/
@[simp]
-theorem interₛ_insert (s : Set α) (T : Set (Set α)) : ⋂₀ insert s T = s ∩ ⋂₀ T :=
- infₛ_insert
-#align set.sInter_insert Set.interₛ_insert
+theorem sInter_insert (s : Set α) (T : Set (Set α)) : ⋂₀ insert s T = s ∩ ⋂₀ T :=
+ sInf_insert
+#align set.sInter_insert Set.sInter_insert
-/- warning: set.sUnion_diff_singleton_empty -> Set.unionₛ_diff_singleton_empty is a dubious translation:
+/- warning: set.sUnion_diff_singleton_empty -> Set.sUnion_diff_singleton_empty is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} (s : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.unionₛ.{u1} α (SDiff.sdiff.{u1} (Set.{u1} (Set.{u1} α)) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} (Set.{u1} α)) (Set.booleanAlgebra.{u1} (Set.{u1} α))) s (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasSingleton.{u1} (Set.{u1} α)) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))))) (Set.unionₛ.{u1} α s)
+ forall {α : Type.{u1}} (s : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α (SDiff.sdiff.{u1} (Set.{u1} (Set.{u1} α)) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} (Set.{u1} α)) (Set.booleanAlgebra.{u1} (Set.{u1} α))) s (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasSingleton.{u1} (Set.{u1} α)) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))))) (Set.sUnion.{u1} α s)
but is expected to have type
- forall {α : Type.{u1}} (s : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.unionₛ.{u1} α (SDiff.sdiff.{u1} (Set.{u1} (Set.{u1} α)) (Set.instSDiffSet.{u1} (Set.{u1} α)) s (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instSingletonSet.{u1} (Set.{u1} α)) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.instEmptyCollectionSet.{u1} α))))) (Set.unionₛ.{u1} α s)
-Case conversion may be inaccurate. Consider using '#align set.sUnion_diff_singleton_empty Set.unionₛ_diff_singleton_emptyₓ'. -/
+ forall {α : Type.{u1}} (s : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α (SDiff.sdiff.{u1} (Set.{u1} (Set.{u1} α)) (Set.instSDiffSet.{u1} (Set.{u1} α)) s (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instSingletonSet.{u1} (Set.{u1} α)) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.instEmptyCollectionSet.{u1} α))))) (Set.sUnion.{u1} α s)
+Case conversion may be inaccurate. Consider using '#align set.sUnion_diff_singleton_empty Set.sUnion_diff_singleton_emptyₓ'. -/
@[simp]
-theorem unionₛ_diff_singleton_empty (s : Set (Set α)) : ⋃₀ (s \ {∅}) = ⋃₀ s :=
- supₛ_diff_singleton_bot s
-#align set.sUnion_diff_singleton_empty Set.unionₛ_diff_singleton_empty
+theorem sUnion_diff_singleton_empty (s : Set (Set α)) : ⋃₀ (s \ {∅}) = ⋃₀ s :=
+ sSup_diff_singleton_bot s
+#align set.sUnion_diff_singleton_empty Set.sUnion_diff_singleton_empty
-/- warning: set.sInter_diff_singleton_univ -> Set.interₛ_diff_singleton_univ is a dubious translation:
+/- warning: set.sInter_diff_singleton_univ -> Set.sInter_diff_singleton_univ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} (s : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.interₛ.{u1} α (SDiff.sdiff.{u1} (Set.{u1} (Set.{u1} α)) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} (Set.{u1} α)) (Set.booleanAlgebra.{u1} (Set.{u1} α))) s (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasSingleton.{u1} (Set.{u1} α)) (Set.univ.{u1} α)))) (Set.interₛ.{u1} α s)
+ forall {α : Type.{u1}} (s : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α (SDiff.sdiff.{u1} (Set.{u1} (Set.{u1} α)) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} (Set.{u1} α)) (Set.booleanAlgebra.{u1} (Set.{u1} α))) s (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasSingleton.{u1} (Set.{u1} α)) (Set.univ.{u1} α)))) (Set.sInter.{u1} α s)
but is expected to have type
- forall {α : Type.{u1}} (s : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.interₛ.{u1} α (SDiff.sdiff.{u1} (Set.{u1} (Set.{u1} α)) (Set.instSDiffSet.{u1} (Set.{u1} α)) s (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instSingletonSet.{u1} (Set.{u1} α)) (Set.univ.{u1} α)))) (Set.interₛ.{u1} α s)
-Case conversion may be inaccurate. Consider using '#align set.sInter_diff_singleton_univ Set.interₛ_diff_singleton_univₓ'. -/
+ forall {α : Type.{u1}} (s : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α (SDiff.sdiff.{u1} (Set.{u1} (Set.{u1} α)) (Set.instSDiffSet.{u1} (Set.{u1} α)) s (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instSingletonSet.{u1} (Set.{u1} α)) (Set.univ.{u1} α)))) (Set.sInter.{u1} α s)
+Case conversion may be inaccurate. Consider using '#align set.sInter_diff_singleton_univ Set.sInter_diff_singleton_univₓ'. -/
@[simp]
-theorem interₛ_diff_singleton_univ (s : Set (Set α)) : ⋂₀ (s \ {univ}) = ⋂₀ s :=
- infₛ_diff_singleton_top s
-#align set.sInter_diff_singleton_univ Set.interₛ_diff_singleton_univ
+theorem sInter_diff_singleton_univ (s : Set (Set α)) : ⋂₀ (s \ {univ}) = ⋂₀ s :=
+ sInf_diff_singleton_top s
+#align set.sInter_diff_singleton_univ Set.sInter_diff_singleton_univ
-/- warning: set.sUnion_pair -> Set.unionₛ_pair is a dubious translation:
+/- warning: set.sUnion_pair -> Set.sUnion_pair is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} (s : Set.{u1} α) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.unionₛ.{u1} α (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasInsert.{u1} (Set.{u1} α)) s (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasSingleton.{u1} (Set.{u1} α)) t))) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s t)
+ forall {α : Type.{u1}} (s : Set.{u1} α) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasInsert.{u1} (Set.{u1} α)) s (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasSingleton.{u1} (Set.{u1} α)) t))) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s t)
but is expected to have type
- forall {α : Type.{u1}} (s : Set.{u1} α) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.unionₛ.{u1} α (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instInsertSet.{u1} (Set.{u1} α)) s (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instSingletonSet.{u1} (Set.{u1} α)) t))) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) s t)
-Case conversion may be inaccurate. Consider using '#align set.sUnion_pair Set.unionₛ_pairₓ'. -/
-theorem unionₛ_pair (s t : Set α) : ⋃₀ {s, t} = s ∪ t :=
- supₛ_pair
-#align set.sUnion_pair Set.unionₛ_pair
+ forall {α : Type.{u1}} (s : Set.{u1} α) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instInsertSet.{u1} (Set.{u1} α)) s (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instSingletonSet.{u1} (Set.{u1} α)) t))) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) s t)
+Case conversion may be inaccurate. Consider using '#align set.sUnion_pair Set.sUnion_pairₓ'. -/
+theorem sUnion_pair (s t : Set α) : ⋃₀ {s, t} = s ∪ t :=
+ sSup_pair
+#align set.sUnion_pair Set.sUnion_pair
-/- warning: set.sInter_pair -> Set.interₛ_pair is a dubious translation:
+/- warning: set.sInter_pair -> Set.sInter_pair is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} (s : Set.{u1} α) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.interₛ.{u1} α (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasInsert.{u1} (Set.{u1} α)) s (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasSingleton.{u1} (Set.{u1} α)) t))) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s t)
+ forall {α : Type.{u1}} (s : Set.{u1} α) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasInsert.{u1} (Set.{u1} α)) s (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasSingleton.{u1} (Set.{u1} α)) t))) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s t)
but is expected to have type
- forall {α : Type.{u1}} (s : Set.{u1} α) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.interₛ.{u1} α (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instInsertSet.{u1} (Set.{u1} α)) s (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instSingletonSet.{u1} (Set.{u1} α)) t))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s t)
-Case conversion may be inaccurate. Consider using '#align set.sInter_pair Set.interₛ_pairₓ'. -/
-theorem interₛ_pair (s t : Set α) : ⋂₀ {s, t} = s ∩ t :=
- infₛ_pair
-#align set.sInter_pair Set.interₛ_pair
+ forall {α : Type.{u1}} (s : Set.{u1} α) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instInsertSet.{u1} (Set.{u1} α)) s (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instSingletonSet.{u1} (Set.{u1} α)) t))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s t)
+Case conversion may be inaccurate. Consider using '#align set.sInter_pair Set.sInter_pairₓ'. -/
+theorem sInter_pair (s t : Set α) : ⋂₀ {s, t} = s ∩ t :=
+ sInf_pair
+#align set.sInter_pair Set.sInter_pair
-#print Set.unionₛ_image /-
+#print Set.sUnion_image /-
@[simp]
-theorem unionₛ_image (f : α → Set β) (s : Set α) : ⋃₀ (f '' s) = ⋃ x ∈ s, f x :=
- supₛ_image
-#align set.sUnion_image Set.unionₛ_image
+theorem sUnion_image (f : α → Set β) (s : Set α) : ⋃₀ (f '' s) = ⋃ x ∈ s, f x :=
+ sSup_image
+#align set.sUnion_image Set.sUnion_image
-/
-#print Set.interₛ_image /-
+#print Set.sInter_image /-
@[simp]
-theorem interₛ_image (f : α → Set β) (s : Set α) : ⋂₀ (f '' s) = ⋂ x ∈ s, f x :=
- infₛ_image
-#align set.sInter_image Set.interₛ_image
+theorem sInter_image (f : α → Set β) (s : Set α) : ⋂₀ (f '' s) = ⋂ x ∈ s, f x :=
+ sInf_image
+#align set.sInter_image Set.sInter_image
-/
-/- warning: set.sUnion_range -> Set.unionₛ_range is a dubious translation:
+/- warning: set.sUnion_range -> Set.sUnion_range is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (f : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.unionₛ.{u1} β (Set.range.{u1, u2} (Set.{u1} β) ι f)) (Set.unionᵢ.{u1, u2} β ι (fun (x : ι) => f x))
+ forall {β : Type.{u1}} {ι : Sort.{u2}} (f : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.sUnion.{u1} β (Set.range.{u1, u2} (Set.{u1} β) ι f)) (Set.iUnion.{u1, u2} β ι (fun (x : ι) => f x))
but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (f : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.unionₛ.{u2} β (Set.range.{u2, u1} (Set.{u2} β) ι f)) (Set.unionᵢ.{u2, u1} β ι (fun (x : ι) => f x))
-Case conversion may be inaccurate. Consider using '#align set.sUnion_range Set.unionₛ_rangeₓ'. -/
+ forall {β : Type.{u2}} {ι : Sort.{u1}} (f : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.sUnion.{u2} β (Set.range.{u2, u1} (Set.{u2} β) ι f)) (Set.iUnion.{u2, u1} β ι (fun (x : ι) => f x))
+Case conversion may be inaccurate. Consider using '#align set.sUnion_range Set.sUnion_rangeₓ'. -/
@[simp]
-theorem unionₛ_range (f : ι → Set β) : ⋃₀ range f = ⋃ x, f x :=
+theorem sUnion_range (f : ι → Set β) : ⋃₀ range f = ⋃ x, f x :=
rfl
-#align set.sUnion_range Set.unionₛ_range
+#align set.sUnion_range Set.sUnion_range
-/- warning: set.sInter_range -> Set.interₛ_range is a dubious translation:
+/- warning: set.sInter_range -> Set.sInter_range is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (f : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.interₛ.{u1} β (Set.range.{u1, u2} (Set.{u1} β) ι f)) (Set.interᵢ.{u1, u2} β ι (fun (x : ι) => f x))
+ forall {β : Type.{u1}} {ι : Sort.{u2}} (f : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.sInter.{u1} β (Set.range.{u1, u2} (Set.{u1} β) ι f)) (Set.iInter.{u1, u2} β ι (fun (x : ι) => f x))
but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (f : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.interₛ.{u2} β (Set.range.{u2, u1} (Set.{u2} β) ι f)) (Set.interᵢ.{u2, u1} β ι (fun (x : ι) => f x))
-Case conversion may be inaccurate. Consider using '#align set.sInter_range Set.interₛ_rangeₓ'. -/
+ forall {β : Type.{u2}} {ι : Sort.{u1}} (f : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.sInter.{u2} β (Set.range.{u2, u1} (Set.{u2} β) ι f)) (Set.iInter.{u2, u1} β ι (fun (x : ι) => f x))
+Case conversion may be inaccurate. Consider using '#align set.sInter_range Set.sInter_rangeₓ'. -/
@[simp]
-theorem interₛ_range (f : ι → Set β) : ⋂₀ range f = ⋂ x, f x :=
+theorem sInter_range (f : ι → Set β) : ⋂₀ range f = ⋂ x, f x :=
rfl
-#align set.sInter_range Set.interₛ_range
+#align set.sInter_range Set.sInter_range
-/- warning: set.Union_eq_univ_iff -> Set.unionᵢ_eq_univ_iff is a dubious translation:
+/- warning: set.Union_eq_univ_iff -> Set.iUnion_eq_univ_iff is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {f : ι -> (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => f i)) (Set.univ.{u1} α)) (forall (x : α), Exists.{u2} ι (fun (i : ι) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (f i)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {f : ι -> (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => f i)) (Set.univ.{u1} α)) (forall (x : α), Exists.{u2} ι (fun (i : ι) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (f i)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {f : ι -> (Set.{u2} α)}, Iff (Eq.{succ u2} (Set.{u2} α) (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => f i)) (Set.univ.{u2} α)) (forall (x : α), Exists.{u1} ι (fun (i : ι) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (f i)))
-Case conversion may be inaccurate. Consider using '#align set.Union_eq_univ_iff Set.unionᵢ_eq_univ_iffₓ'. -/
-theorem unionᵢ_eq_univ_iff {f : ι → Set α} : (⋃ i, f i) = univ ↔ ∀ x, ∃ i, x ∈ f i := by
+ forall {α : Type.{u2}} {ι : Sort.{u1}} {f : ι -> (Set.{u2} α)}, Iff (Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => f i)) (Set.univ.{u2} α)) (forall (x : α), Exists.{u1} ι (fun (i : ι) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (f i)))
+Case conversion may be inaccurate. Consider using '#align set.Union_eq_univ_iff Set.iUnion_eq_univ_iffₓ'. -/
+theorem iUnion_eq_univ_iff {f : ι → Set α} : (⋃ i, f i) = univ ↔ ∀ x, ∃ i, x ∈ f i := by
simp only [eq_univ_iff_forall, mem_Union]
-#align set.Union_eq_univ_iff Set.unionᵢ_eq_univ_iff
+#align set.Union_eq_univ_iff Set.iUnion_eq_univ_iff
-/- warning: set.Union₂_eq_univ_iff -> Set.unionᵢ₂_eq_univ_iff is a dubious translation:
+/- warning: set.Union₂_eq_univ_iff -> Set.iUnion₂_eq_univ_iff is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) (Set.univ.{u1} α)) (forall (a : α), Exists.{u2} ι (fun (i : ι) => Exists.{u3} (κ i) (fun (j : κ i) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i j))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) (Set.univ.{u1} α)) (forall (a : α), Exists.{u2} ι (fun (i : ι) => Exists.{u3} (κ i) (fun (j : κ i) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i j))))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)}, Iff (Eq.{succ u3} (Set.{u3} α) (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => Set.unionᵢ.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.univ.{u3} α)) (forall (a : α), Exists.{u2} ι (fun (i : ι) => Exists.{u1} (κ i) (fun (j : κ i) => Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i j))))
-Case conversion may be inaccurate. Consider using '#align set.Union₂_eq_univ_iff Set.unionᵢ₂_eq_univ_iffₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)}, Iff (Eq.{succ u3} (Set.{u3} α) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.univ.{u3} α)) (forall (a : α), Exists.{u2} ι (fun (i : ι) => Exists.{u1} (κ i) (fun (j : κ i) => Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i j))))
+Case conversion may be inaccurate. Consider using '#align set.Union₂_eq_univ_iff Set.iUnion₂_eq_univ_iffₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem unionᵢ₂_eq_univ_iff {s : ∀ i, κ i → Set α} :
+theorem iUnion₂_eq_univ_iff {s : ∀ i, κ i → Set α} :
(⋃ (i) (j), s i j) = univ ↔ ∀ a, ∃ i j, a ∈ s i j := by simp only [Union_eq_univ_iff, mem_Union]
-#align set.Union₂_eq_univ_iff Set.unionᵢ₂_eq_univ_iff
+#align set.Union₂_eq_univ_iff Set.iUnion₂_eq_univ_iff
-/- warning: set.sUnion_eq_univ_iff -> Set.unionₛ_eq_univ_iff is a dubious translation:
+/- warning: set.sUnion_eq_univ_iff -> Set.sUnion_eq_univ_iff is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {c : Set.{u1} (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.unionₛ.{u1} α c) (Set.univ.{u1} α)) (forall (a : α), Exists.{succ u1} (Set.{u1} α) (fun (b : Set.{u1} α) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) b c) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) b c) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a b)))
+ forall {α : Type.{u1}} {c : Set.{u1} (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α c) (Set.univ.{u1} α)) (forall (a : α), Exists.{succ u1} (Set.{u1} α) (fun (b : Set.{u1} α) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) b c) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) b c) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a b)))
but is expected to have type
- forall {α : Type.{u1}} {c : Set.{u1} (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.unionₛ.{u1} α c) (Set.univ.{u1} α)) (forall (a : α), Exists.{succ u1} (Set.{u1} α) (fun (b : Set.{u1} α) => And (Membership.mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instMembershipSet.{u1} (Set.{u1} α)) b c) (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) a b)))
-Case conversion may be inaccurate. Consider using '#align set.sUnion_eq_univ_iff Set.unionₛ_eq_univ_iffₓ'. -/
-theorem unionₛ_eq_univ_iff {c : Set (Set α)} : ⋃₀ c = univ ↔ ∀ a, ∃ b ∈ c, a ∈ b := by
+ forall {α : Type.{u1}} {c : Set.{u1} (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α c) (Set.univ.{u1} α)) (forall (a : α), Exists.{succ u1} (Set.{u1} α) (fun (b : Set.{u1} α) => And (Membership.mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instMembershipSet.{u1} (Set.{u1} α)) b c) (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) a b)))
+Case conversion may be inaccurate. Consider using '#align set.sUnion_eq_univ_iff Set.sUnion_eq_univ_iffₓ'. -/
+theorem sUnion_eq_univ_iff {c : Set (Set α)} : ⋃₀ c = univ ↔ ∀ a, ∃ b ∈ c, a ∈ b := by
simp only [eq_univ_iff_forall, mem_sUnion]
-#align set.sUnion_eq_univ_iff Set.unionₛ_eq_univ_iff
+#align set.sUnion_eq_univ_iff Set.sUnion_eq_univ_iff
-/- warning: set.Inter_eq_empty_iff -> Set.interᵢ_eq_empty_iff is a dubious translation:
+/- warning: set.Inter_eq_empty_iff -> Set.iInter_eq_empty_iff is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {f : ι -> (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => f i)) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))) (forall (x : α), Exists.{u2} ι (fun (i : ι) => Not (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (f i))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {f : ι -> (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => f i)) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))) (forall (x : α), Exists.{u2} ι (fun (i : ι) => Not (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (f i))))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {f : ι -> (Set.{u2} α)}, Iff (Eq.{succ u2} (Set.{u2} α) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => f i)) (EmptyCollection.emptyCollection.{u2} (Set.{u2} α) (Set.instEmptyCollectionSet.{u2} α))) (forall (x : α), Exists.{u1} ι (fun (i : ι) => Not (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (f i))))
-Case conversion may be inaccurate. Consider using '#align set.Inter_eq_empty_iff Set.interᵢ_eq_empty_iffₓ'. -/
+ forall {α : Type.{u2}} {ι : Sort.{u1}} {f : ι -> (Set.{u2} α)}, Iff (Eq.{succ u2} (Set.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => f i)) (EmptyCollection.emptyCollection.{u2} (Set.{u2} α) (Set.instEmptyCollectionSet.{u2} α))) (forall (x : α), Exists.{u1} ι (fun (i : ι) => Not (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (f i))))
+Case conversion may be inaccurate. Consider using '#align set.Inter_eq_empty_iff Set.iInter_eq_empty_iffₓ'. -/
-- classical
-theorem interᵢ_eq_empty_iff {f : ι → Set α} : (⋂ i, f i) = ∅ ↔ ∀ x, ∃ i, x ∉ f i := by
+theorem iInter_eq_empty_iff {f : ι → Set α} : (⋂ i, f i) = ∅ ↔ ∀ x, ∃ i, x ∉ f i := by
simp [Set.eq_empty_iff_forall_not_mem]
-#align set.Inter_eq_empty_iff Set.interᵢ_eq_empty_iff
+#align set.Inter_eq_empty_iff Set.iInter_eq_empty_iff
-/- warning: set.Inter₂_eq_empty_iff -> Set.interᵢ₂_eq_empty_iff is a dubious translation:
+/- warning: set.Inter₂_eq_empty_iff -> Set.iInter₂_eq_empty_iff is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))) (forall (a : α), Exists.{u2} ι (fun (i : ι) => Exists.{u3} (κ i) (fun (j : κ i) => Not (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i j)))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))) (forall (a : α), Exists.{u2} ι (fun (i : ι) => Exists.{u3} (κ i) (fun (j : κ i) => Not (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i j)))))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)}, Iff (Eq.{succ u3} (Set.{u3} α) (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) (EmptyCollection.emptyCollection.{u3} (Set.{u3} α) (Set.instEmptyCollectionSet.{u3} α))) (forall (a : α), Exists.{u2} ι (fun (i : ι) => Exists.{u1} (κ i) (fun (j : κ i) => Not (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i j)))))
-Case conversion may be inaccurate. Consider using '#align set.Inter₂_eq_empty_iff Set.interᵢ₂_eq_empty_iffₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)}, Iff (Eq.{succ u3} (Set.{u3} α) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) (EmptyCollection.emptyCollection.{u3} (Set.{u3} α) (Set.instEmptyCollectionSet.{u3} α))) (forall (a : α), Exists.{u2} ι (fun (i : ι) => Exists.{u1} (κ i) (fun (j : κ i) => Not (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i j)))))
+Case conversion may be inaccurate. Consider using '#align set.Inter₂_eq_empty_iff Set.iInter₂_eq_empty_iffₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-- classical
-theorem interᵢ₂_eq_empty_iff {s : ∀ i, κ i → Set α} :
+theorem iInter₂_eq_empty_iff {s : ∀ i, κ i → Set α} :
(⋂ (i) (j), s i j) = ∅ ↔ ∀ a, ∃ i j, a ∉ s i j := by
simp only [eq_empty_iff_forall_not_mem, mem_Inter, not_forall]
-#align set.Inter₂_eq_empty_iff Set.interᵢ₂_eq_empty_iff
+#align set.Inter₂_eq_empty_iff Set.iInter₂_eq_empty_iff
-/- warning: set.sInter_eq_empty_iff -> Set.interₛ_eq_empty_iff is a dubious translation:
+/- warning: set.sInter_eq_empty_iff -> Set.sInter_eq_empty_iff is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {c : Set.{u1} (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.interₛ.{u1} α c) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))) (forall (a : α), Exists.{succ u1} (Set.{u1} α) (fun (b : Set.{u1} α) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) b c) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) b c) => Not (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a b))))
+ forall {α : Type.{u1}} {c : Set.{u1} (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α c) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))) (forall (a : α), Exists.{succ u1} (Set.{u1} α) (fun (b : Set.{u1} α) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) b c) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) b c) => Not (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a b))))
but is expected to have type
- forall {α : Type.{u1}} {c : Set.{u1} (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.interₛ.{u1} α c) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.instEmptyCollectionSet.{u1} α))) (forall (a : α), Exists.{succ u1} (Set.{u1} α) (fun (b : Set.{u1} α) => And (Membership.mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instMembershipSet.{u1} (Set.{u1} α)) b c) (Not (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) a b))))
-Case conversion may be inaccurate. Consider using '#align set.sInter_eq_empty_iff Set.interₛ_eq_empty_iffₓ'. -/
+ forall {α : Type.{u1}} {c : Set.{u1} (Set.{u1} α)}, Iff (Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α c) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.instEmptyCollectionSet.{u1} α))) (forall (a : α), Exists.{succ u1} (Set.{u1} α) (fun (b : Set.{u1} α) => And (Membership.mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instMembershipSet.{u1} (Set.{u1} α)) b c) (Not (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) a b))))
+Case conversion may be inaccurate. Consider using '#align set.sInter_eq_empty_iff Set.sInter_eq_empty_iffₓ'. -/
-- classical
-theorem interₛ_eq_empty_iff {c : Set (Set α)} : ⋂₀ c = ∅ ↔ ∀ a, ∃ b ∈ c, a ∉ b := by
+theorem sInter_eq_empty_iff {c : Set (Set α)} : ⋂₀ c = ∅ ↔ ∀ a, ∃ b ∈ c, a ∉ b := by
simp [Set.eq_empty_iff_forall_not_mem]
-#align set.sInter_eq_empty_iff Set.interₛ_eq_empty_iff
+#align set.sInter_eq_empty_iff Set.sInter_eq_empty_iff
-/- warning: set.nonempty_Inter -> Set.nonempty_interᵢ is a dubious translation:
+/- warning: set.nonempty_Inter -> Set.nonempty_iInter is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {f : ι -> (Set.{u1} α)}, Iff (Set.Nonempty.{u1} α (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => f i))) (Exists.{succ u1} α (fun (x : α) => forall (i : ι), Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (f i)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {f : ι -> (Set.{u1} α)}, Iff (Set.Nonempty.{u1} α (Set.iInter.{u1, u2} α ι (fun (i : ι) => f i))) (Exists.{succ u1} α (fun (x : α) => forall (i : ι), Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (f i)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {f : ι -> (Set.{u2} α)}, Iff (Set.Nonempty.{u2} α (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => f i))) (Exists.{succ u2} α (fun (x : α) => forall (i : ι), Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (f i)))
-Case conversion may be inaccurate. Consider using '#align set.nonempty_Inter Set.nonempty_interᵢₓ'. -/
+ forall {α : Type.{u2}} {ι : Sort.{u1}} {f : ι -> (Set.{u2} α)}, Iff (Set.Nonempty.{u2} α (Set.iInter.{u2, u1} α ι (fun (i : ι) => f i))) (Exists.{succ u2} α (fun (x : α) => forall (i : ι), Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (f i)))
+Case conversion may be inaccurate. Consider using '#align set.nonempty_Inter Set.nonempty_iInterₓ'. -/
-- classical
@[simp]
-theorem nonempty_interᵢ {f : ι → Set α} : (⋂ i, f i).Nonempty ↔ ∃ x, ∀ i, x ∈ f i := by
+theorem nonempty_iInter {f : ι → Set α} : (⋂ i, f i).Nonempty ↔ ∃ x, ∀ i, x ∈ f i := by
simp [nonempty_iff_ne_empty, Inter_eq_empty_iff]
-#align set.nonempty_Inter Set.nonempty_interᵢ
+#align set.nonempty_Inter Set.nonempty_iInter
-/- warning: set.nonempty_Inter₂ -> Set.nonempty_interᵢ₂ is a dubious translation:
+/- warning: set.nonempty_Inter₂ -> Set.nonempty_iInter₂ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)}, Iff (Set.Nonempty.{u1} α (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u3} α (κ i) (fun (j : κ i) => s i j)))) (Exists.{succ u1} α (fun (a : α) => forall (i : ι) (j : κ i), Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i j)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)}, Iff (Set.Nonempty.{u1} α (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => s i j)))) (Exists.{succ u1} α (fun (a : α) => forall (i : ι) (j : κ i), Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i j)))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)}, Iff (Set.Nonempty.{u3} α (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, u1} α (κ i) (fun (j : κ i) => s i j)))) (Exists.{succ u3} α (fun (a : α) => forall (i : ι) (j : κ i), Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i j)))
-Case conversion may be inaccurate. Consider using '#align set.nonempty_Inter₂ Set.nonempty_interᵢ₂ₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)}, Iff (Set.Nonempty.{u3} α (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => s i j)))) (Exists.{succ u3} α (fun (a : α) => forall (i : ι) (j : κ i), Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i j)))
+Case conversion may be inaccurate. Consider using '#align set.nonempty_Inter₂ Set.nonempty_iInter₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-- classical
@[simp]
-theorem nonempty_interᵢ₂ {s : ∀ i, κ i → Set α} :
+theorem nonempty_iInter₂ {s : ∀ i, κ i → Set α} :
(⋂ (i) (j), s i j).Nonempty ↔ ∃ a, ∀ i j, a ∈ s i j := by
simp [nonempty_iff_ne_empty, Inter_eq_empty_iff]
-#align set.nonempty_Inter₂ Set.nonempty_interᵢ₂
+#align set.nonempty_Inter₂ Set.nonempty_iInter₂
-#print Set.nonempty_interₛ /-
+#print Set.nonempty_sInter /-
-- classical
@[simp]
-theorem nonempty_interₛ {c : Set (Set α)} : (⋂₀ c).Nonempty ↔ ∃ a, ∀ b ∈ c, a ∈ b := by
+theorem nonempty_sInter {c : Set (Set α)} : (⋂₀ c).Nonempty ↔ ∃ a, ∀ b ∈ c, a ∈ b := by
simp [nonempty_iff_ne_empty, sInter_eq_empty_iff]
-#align set.nonempty_sInter Set.nonempty_interₛ
+#align set.nonempty_sInter Set.nonempty_sInter
-/
-/- warning: set.compl_sUnion -> Set.compl_unionₛ is a dubious translation:
+/- warning: set.compl_sUnion -> Set.compl_sUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (Set.unionₛ.{u1} α S)) (Set.interₛ.{u1} α (Set.image.{u1, u1} (Set.{u1} α) (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) S))
+ forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (Set.sUnion.{u1} α S)) (Set.sInter.{u1} α (Set.image.{u1, u1} (Set.{u1} α) (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) S))
but is expected to have type
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) (Set.unionₛ.{u1} α S)) (Set.interₛ.{u1} α (Set.image.{u1, u1} (Set.{u1} α) (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α))) S))
-Case conversion may be inaccurate. Consider using '#align set.compl_sUnion Set.compl_unionₛₓ'. -/
+ forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) (Set.sUnion.{u1} α S)) (Set.sInter.{u1} α (Set.image.{u1, u1} (Set.{u1} α) (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α))) S))
+Case conversion may be inaccurate. Consider using '#align set.compl_sUnion Set.compl_sUnionₓ'. -/
-- classical
-theorem compl_unionₛ (S : Set (Set α)) : (⋃₀ S)ᶜ = ⋂₀ (compl '' S) :=
+theorem compl_sUnion (S : Set (Set α)) : (⋃₀ S)ᶜ = ⋂₀ (compl '' S) :=
ext fun x => by simp
-#align set.compl_sUnion Set.compl_unionₛ
+#align set.compl_sUnion Set.compl_sUnion
-/- warning: set.sUnion_eq_compl_sInter_compl -> Set.unionₛ_eq_compl_interₛ_compl is a dubious translation:
+/- warning: set.sUnion_eq_compl_sInter_compl -> Set.sUnion_eq_compl_sInter_compl is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.unionₛ.{u1} α S) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (Set.interₛ.{u1} α (Set.image.{u1, u1} (Set.{u1} α) (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) S)))
+ forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α S) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (Set.sInter.{u1} α (Set.image.{u1, u1} (Set.{u1} α) (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) S)))
but is expected to have type
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.unionₛ.{u1} α S) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) (Set.interₛ.{u1} α (Set.image.{u1, u1} (Set.{u1} α) (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α))) S)))
-Case conversion may be inaccurate. Consider using '#align set.sUnion_eq_compl_sInter_compl Set.unionₛ_eq_compl_interₛ_complₓ'. -/
+ forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α S) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) (Set.sInter.{u1} α (Set.image.{u1, u1} (Set.{u1} α) (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α))) S)))
+Case conversion may be inaccurate. Consider using '#align set.sUnion_eq_compl_sInter_compl Set.sUnion_eq_compl_sInter_complₓ'. -/
-- classical
-theorem unionₛ_eq_compl_interₛ_compl (S : Set (Set α)) : ⋃₀ S = (⋂₀ (compl '' S))ᶜ := by
+theorem sUnion_eq_compl_sInter_compl (S : Set (Set α)) : ⋃₀ S = (⋂₀ (compl '' S))ᶜ := by
rw [← compl_compl (⋃₀ S), compl_sUnion]
-#align set.sUnion_eq_compl_sInter_compl Set.unionₛ_eq_compl_interₛ_compl
+#align set.sUnion_eq_compl_sInter_compl Set.sUnion_eq_compl_sInter_compl
-/- warning: set.compl_sInter -> Set.compl_interₛ is a dubious translation:
+/- warning: set.compl_sInter -> Set.compl_sInter is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (Set.interₛ.{u1} α S)) (Set.unionₛ.{u1} α (Set.image.{u1, u1} (Set.{u1} α) (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) S))
+ forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (Set.sInter.{u1} α S)) (Set.sUnion.{u1} α (Set.image.{u1, u1} (Set.{u1} α) (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) S))
but is expected to have type
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) (Set.interₛ.{u1} α S)) (Set.unionₛ.{u1} α (Set.image.{u1, u1} (Set.{u1} α) (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α))) S))
-Case conversion may be inaccurate. Consider using '#align set.compl_sInter Set.compl_interₛₓ'. -/
+ forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) (Set.sInter.{u1} α S)) (Set.sUnion.{u1} α (Set.image.{u1, u1} (Set.{u1} α) (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α))) S))
+Case conversion may be inaccurate. Consider using '#align set.compl_sInter Set.compl_sInterₓ'. -/
-- classical
-theorem compl_interₛ (S : Set (Set α)) : (⋂₀ S)ᶜ = ⋃₀ (compl '' S) := by
+theorem compl_sInter (S : Set (Set α)) : (⋂₀ S)ᶜ = ⋃₀ (compl '' S) := by
rw [sUnion_eq_compl_sInter_compl, compl_compl_image]
-#align set.compl_sInter Set.compl_interₛ
+#align set.compl_sInter Set.compl_sInter
-/- warning: set.sInter_eq_compl_sUnion_compl -> Set.interₛ_eq_compl_unionₛ_compl is a dubious translation:
+/- warning: set.sInter_eq_compl_sUnion_compl -> Set.sInter_eq_compl_sUnion_compl is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.interₛ.{u1} α S) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (Set.unionₛ.{u1} α (Set.image.{u1, u1} (Set.{u1} α) (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) S)))
+ forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α S) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (Set.sUnion.{u1} α (Set.image.{u1, u1} (Set.{u1} α) (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) S)))
but is expected to have type
- forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.interₛ.{u1} α S) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) (Set.unionₛ.{u1} α (Set.image.{u1, u1} (Set.{u1} α) (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α))) S)))
-Case conversion may be inaccurate. Consider using '#align set.sInter_eq_compl_sUnion_compl Set.interₛ_eq_compl_unionₛ_complₓ'. -/
+ forall {α : Type.{u1}} (S : Set.{u1} (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α S) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) (Set.sUnion.{u1} α (Set.image.{u1, u1} (Set.{u1} α) (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α))) S)))
+Case conversion may be inaccurate. Consider using '#align set.sInter_eq_compl_sUnion_compl Set.sInter_eq_compl_sUnion_complₓ'. -/
-- classical
-theorem interₛ_eq_compl_unionₛ_compl (S : Set (Set α)) : ⋂₀ S = (⋃₀ (compl '' S))ᶜ := by
+theorem sInter_eq_compl_sUnion_compl (S : Set (Set α)) : ⋂₀ S = (⋃₀ (compl '' S))ᶜ := by
rw [← compl_compl (⋂₀ S), compl_sInter]
-#align set.sInter_eq_compl_sUnion_compl Set.interₛ_eq_compl_unionₛ_compl
+#align set.sInter_eq_compl_sUnion_compl Set.sInter_eq_compl_sUnion_compl
-/- warning: set.inter_empty_of_inter_sUnion_empty -> Set.inter_empty_of_inter_unionₛ_empty is a dubious translation:
+/- warning: set.inter_empty_of_inter_sUnion_empty -> Set.inter_empty_of_inter_sUnion_empty is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {s : Set.{u1} α} {t : Set.{u1} α} {S : Set.{u1} (Set.{u1} α)}, (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) t S) -> (Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s (Set.unionₛ.{u1} α S)) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))) -> (Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s t) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α)))
+ forall {α : Type.{u1}} {s : Set.{u1} α} {t : Set.{u1} α} {S : Set.{u1} (Set.{u1} α)}, (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) t S) -> (Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s (Set.sUnion.{u1} α S)) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))) -> (Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s t) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α)))
but is expected to have type
- forall {α : Type.{u1}} {s : Set.{u1} α} {t : Set.{u1} α} {S : Set.{u1} (Set.{u1} α)}, (Membership.mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instMembershipSet.{u1} (Set.{u1} α)) t S) -> (Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s (Set.unionₛ.{u1} α S)) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.instEmptyCollectionSet.{u1} α))) -> (Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s t) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.instEmptyCollectionSet.{u1} α)))
-Case conversion may be inaccurate. Consider using '#align set.inter_empty_of_inter_sUnion_empty Set.inter_empty_of_inter_unionₛ_emptyₓ'. -/
-theorem inter_empty_of_inter_unionₛ_empty {s t : Set α} {S : Set (Set α)} (hs : t ∈ S)
+ forall {α : Type.{u1}} {s : Set.{u1} α} {t : Set.{u1} α} {S : Set.{u1} (Set.{u1} α)}, (Membership.mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instMembershipSet.{u1} (Set.{u1} α)) t S) -> (Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s (Set.sUnion.{u1} α S)) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.instEmptyCollectionSet.{u1} α))) -> (Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s t) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.instEmptyCollectionSet.{u1} α)))
+Case conversion may be inaccurate. Consider using '#align set.inter_empty_of_inter_sUnion_empty Set.inter_empty_of_inter_sUnion_emptyₓ'. -/
+theorem inter_empty_of_inter_sUnion_empty {s t : Set α} {S : Set (Set α)} (hs : t ∈ S)
(h : s ∩ ⋃₀ S = ∅) : s ∩ t = ∅ :=
eq_empty_of_subset_empty <| by
rw [← h] <;> exact inter_subset_inter_right _ (subset_sUnion_of_mem hs)
-#align set.inter_empty_of_inter_sUnion_empty Set.inter_empty_of_inter_unionₛ_empty
+#align set.inter_empty_of_inter_sUnion_empty Set.inter_empty_of_inter_sUnion_empty
-/- warning: set.range_sigma_eq_Union_range -> Set.range_sigma_eq_unionᵢ_range is a dubious translation:
+/- warning: set.range_sigma_eq_Union_range -> Set.range_sigma_eq_iUnion_range is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : α -> Type.{u3}} (f : (Sigma.{u1, u3} α γ) -> β), Eq.{succ u2} (Set.{u2} β) (Set.range.{u2, max (succ u1) (succ u3)} β (Sigma.{u1, u3} α γ) f) (Set.unionᵢ.{u2, succ u1} β α (fun (a : α) => Set.range.{u2, succ u3} β (γ a) (fun (b : γ a) => f (Sigma.mk.{u1, u3} α γ a b))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {γ : α -> Type.{u3}} (f : (Sigma.{u1, u3} α γ) -> β), Eq.{succ u2} (Set.{u2} β) (Set.range.{u2, max (succ u1) (succ u3)} β (Sigma.{u1, u3} α γ) f) (Set.iUnion.{u2, succ u1} β α (fun (a : α) => Set.range.{u2, succ u3} β (γ a) (fun (b : γ a) => f (Sigma.mk.{u1, u3} α γ a b))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {γ : α -> Type.{u3}} (f : (Sigma.{u2, u3} α γ) -> β), Eq.{succ u1} (Set.{u1} β) (Set.range.{u1, max (succ u2) (succ u3)} β (Sigma.{u2, u3} α γ) f) (Set.unionᵢ.{u1, succ u2} β α (fun (a : α) => Set.range.{u1, succ u3} β (γ a) (fun (b : γ a) => f (Sigma.mk.{u2, u3} α γ a b))))
-Case conversion may be inaccurate. Consider using '#align set.range_sigma_eq_Union_range Set.range_sigma_eq_unionᵢ_rangeₓ'. -/
-theorem range_sigma_eq_unionᵢ_range {γ : α → Type _} (f : Sigma γ → β) :
+ forall {α : Type.{u2}} {β : Type.{u1}} {γ : α -> Type.{u3}} (f : (Sigma.{u2, u3} α γ) -> β), Eq.{succ u1} (Set.{u1} β) (Set.range.{u1, max (succ u2) (succ u3)} β (Sigma.{u2, u3} α γ) f) (Set.iUnion.{u1, succ u2} β α (fun (a : α) => Set.range.{u1, succ u3} β (γ a) (fun (b : γ a) => f (Sigma.mk.{u2, u3} α γ a b))))
+Case conversion may be inaccurate. Consider using '#align set.range_sigma_eq_Union_range Set.range_sigma_eq_iUnion_rangeₓ'. -/
+theorem range_sigma_eq_iUnion_range {γ : α → Type _} (f : Sigma γ → β) :
range f = ⋃ a, range fun b => f ⟨a, b⟩ :=
Set.ext <| by simp
-#align set.range_sigma_eq_Union_range Set.range_sigma_eq_unionᵢ_range
+#align set.range_sigma_eq_Union_range Set.range_sigma_eq_iUnion_range
-#print Set.unionᵢ_eq_range_sigma /-
-theorem unionᵢ_eq_range_sigma (s : α → Set β) : (⋃ i, s i) = range fun a : Σi, s i => a.2 := by
+#print Set.iUnion_eq_range_sigma /-
+theorem iUnion_eq_range_sigma (s : α → Set β) : (⋃ i, s i) = range fun a : Σi, s i => a.2 := by
simp [Set.ext_iff]
-#align set.Union_eq_range_sigma Set.unionᵢ_eq_range_sigma
+#align set.Union_eq_range_sigma Set.iUnion_eq_range_sigma
-/
-/- warning: set.Union_eq_range_psigma -> Set.unionᵢ_eq_range_psigma is a dubious translation:
+/- warning: set.Union_eq_range_psigma -> Set.iUnion_eq_range_psigma is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => s i)) (Set.range.{u1, max 1 u2 (succ u1)} β (PSigma.{u2, succ u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s i))) (fun (a : PSigma.{u2, succ u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s i))) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s (PSigma.fst.{u2, succ u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s i)) a))) β (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s (PSigma.fst.{u2, succ u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s i)) a))) β (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s (PSigma.fst.{u2, succ u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s i)) a))) β (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s (PSigma.fst.{u2, succ u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s i)) a))) β (coeSubtype.{succ u1} β (fun (x : β) => Membership.Mem.{u1, u1} β (Set.{u1} β) (Set.hasMem.{u1} β) x (s (PSigma.fst.{u2, succ u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s i)) a))))))) (PSigma.snd.{u2, succ u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s i)) a)))
+ forall {β : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} β)), Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => s i)) (Set.range.{u1, max 1 u2 (succ u1)} β (PSigma.{u2, succ u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s i))) (fun (a : PSigma.{u2, succ u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s i))) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s (PSigma.fst.{u2, succ u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s i)) a))) β (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s (PSigma.fst.{u2, succ u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s i)) a))) β (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s (PSigma.fst.{u2, succ u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s i)) a))) β (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s (PSigma.fst.{u2, succ u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s i)) a))) β (coeSubtype.{succ u1} β (fun (x : β) => Membership.Mem.{u1, u1} β (Set.{u1} β) (Set.hasMem.{u1} β) x (s (PSigma.fst.{u2, succ u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s i)) a))))))) (PSigma.snd.{u2, succ u1} ι (fun (i : ι) => coeSort.{succ u1, succ (succ u1)} (Set.{u1} β) Type.{u1} (Set.hasCoeToSort.{u1} β) (s i)) a)))
but is expected to have type
- forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.unionᵢ.{u2, u1} β ι (fun (i : ι) => s i)) (Set.range.{u2, max (succ u2) u1} β (PSigma.{u1, succ u2} ι (fun (i : ι) => Set.Elem.{u2} β (s i))) (fun (a : PSigma.{u1, succ u2} ι (fun (i : ι) => Set.Elem.{u2} β (s i))) => Subtype.val.{succ u2} β (fun (x : β) => Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) x (s (PSigma.fst.{u1, succ u2} ι (fun (i : ι) => Set.Elem.{u2} β (s i)) a))) (PSigma.snd.{u1, succ u2} ι (fun (i : ι) => Set.Elem.{u2} β (s i)) a)))
-Case conversion may be inaccurate. Consider using '#align set.Union_eq_range_psigma Set.unionᵢ_eq_range_psigmaₓ'. -/
-theorem unionᵢ_eq_range_psigma (s : ι → Set β) : (⋃ i, s i) = range fun a : Σ'i, s i => a.2 := by
+ forall {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => s i)) (Set.range.{u2, max (succ u2) u1} β (PSigma.{u1, succ u2} ι (fun (i : ι) => Set.Elem.{u2} β (s i))) (fun (a : PSigma.{u1, succ u2} ι (fun (i : ι) => Set.Elem.{u2} β (s i))) => Subtype.val.{succ u2} β (fun (x : β) => Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) x (s (PSigma.fst.{u1, succ u2} ι (fun (i : ι) => Set.Elem.{u2} β (s i)) a))) (PSigma.snd.{u1, succ u2} ι (fun (i : ι) => Set.Elem.{u2} β (s i)) a)))
+Case conversion may be inaccurate. Consider using '#align set.Union_eq_range_psigma Set.iUnion_eq_range_psigmaₓ'. -/
+theorem iUnion_eq_range_psigma (s : ι → Set β) : (⋃ i, s i) = range fun a : Σ'i, s i => a.2 := by
simp [Set.ext_iff]
-#align set.Union_eq_range_psigma Set.unionᵢ_eq_range_psigma
+#align set.Union_eq_range_psigma Set.iUnion_eq_range_psigma
-/- warning: set.Union_image_preimage_sigma_mk_eq_self -> Set.unionᵢ_image_preimage_sigma_mk_eq_self is a dubious translation:
+/- warning: set.Union_image_preimage_sigma_mk_eq_self -> Set.iUnion_image_preimage_sigma_mk_eq_self is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {σ : ι -> Type.{u2}} (s : Set.{max u1 u2} (Sigma.{u1, u2} ι σ)), Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Sigma.{u1, u2} ι σ)) (Set.unionᵢ.{max u1 u2, succ u1} (Sigma.{u1, u2} ι σ) ι (fun (i : ι) => Set.image.{u2, max u1 u2} (σ i) (Sigma.{u1, u2} ι σ) (Sigma.mk.{u1, u2} ι σ i) (Set.preimage.{u2, max u1 u2} (σ i) (Sigma.{u1, u2} ι σ) (Sigma.mk.{u1, u2} ι σ i) s))) s
+ forall {ι : Type.{u1}} {σ : ι -> Type.{u2}} (s : Set.{max u1 u2} (Sigma.{u1, u2} ι σ)), Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Sigma.{u1, u2} ι σ)) (Set.iUnion.{max u1 u2, succ u1} (Sigma.{u1, u2} ι σ) ι (fun (i : ι) => Set.image.{u2, max u1 u2} (σ i) (Sigma.{u1, u2} ι σ) (Sigma.mk.{u1, u2} ι σ i) (Set.preimage.{u2, max u1 u2} (σ i) (Sigma.{u1, u2} ι σ) (Sigma.mk.{u1, u2} ι σ i) s))) s
but is expected to have type
- forall {ι : Type.{u2}} {σ : ι -> Type.{u1}} (s : Set.{max u1 u2} (Sigma.{u2, u1} ι σ)), Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Sigma.{u2, u1} ι (fun (i : ι) => σ i))) (Set.unionᵢ.{max u1 u2, succ u2} (Sigma.{u2, u1} ι (fun (i : ι) => σ i)) ι (fun (i : ι) => Set.image.{u1, max u1 u2} (σ i) (Sigma.{u2, u1} ι (fun (i : ι) => σ i)) (Sigma.mk.{u2, u1} ι (fun (i : ι) => σ i) i) (Set.preimage.{u1, max u2 u1} (σ i) (Sigma.{u2, u1} ι σ) (Sigma.mk.{u2, u1} ι σ i) s))) s
-Case conversion may be inaccurate. Consider using '#align set.Union_image_preimage_sigma_mk_eq_self Set.unionᵢ_image_preimage_sigma_mk_eq_selfₓ'. -/
-theorem unionᵢ_image_preimage_sigma_mk_eq_self {ι : Type _} {σ : ι → Type _} (s : Set (Sigma σ)) :
+ forall {ι : Type.{u2}} {σ : ι -> Type.{u1}} (s : Set.{max u1 u2} (Sigma.{u2, u1} ι σ)), Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Sigma.{u2, u1} ι (fun (i : ι) => σ i))) (Set.iUnion.{max u1 u2, succ u2} (Sigma.{u2, u1} ι (fun (i : ι) => σ i)) ι (fun (i : ι) => Set.image.{u1, max u1 u2} (σ i) (Sigma.{u2, u1} ι (fun (i : ι) => σ i)) (Sigma.mk.{u2, u1} ι (fun (i : ι) => σ i) i) (Set.preimage.{u1, max u2 u1} (σ i) (Sigma.{u2, u1} ι σ) (Sigma.mk.{u2, u1} ι σ i) s))) s
+Case conversion may be inaccurate. Consider using '#align set.Union_image_preimage_sigma_mk_eq_self Set.iUnion_image_preimage_sigma_mk_eq_selfₓ'. -/
+theorem iUnion_image_preimage_sigma_mk_eq_self {ι : Type _} {σ : ι → Type _} (s : Set (Sigma σ)) :
(⋃ i, Sigma.mk i '' (Sigma.mk i ⁻¹' s)) = s :=
by
ext x
@@ -2389,7 +2389,7 @@ theorem unionᵢ_image_preimage_sigma_mk_eq_self {ι : Type _} {σ : ι → Type
· intro h
cases' x with i a
exact ⟨i, a, h, rfl⟩
-#align set.Union_image_preimage_sigma_mk_eq_self Set.unionᵢ_image_preimage_sigma_mk_eq_self
+#align set.Union_image_preimage_sigma_mk_eq_self Set.iUnion_image_preimage_sigma_mk_eq_self
#print Set.Sigma.univ /-
theorem Sigma.univ (X : α → Type _) : (Set.univ : Set (Σa, X a)) = ⋃ a, range (Sigma.mk a) :=
@@ -2398,174 +2398,174 @@ theorem Sigma.univ (X : α → Type _) : (Set.univ : Set (Σa, X a)) = ⋃ a, ra
#align set.sigma.univ Set.Sigma.univ
-/
-#print Set.unionₛ_mono /-
-theorem unionₛ_mono {s t : Set (Set α)} (h : s ⊆ t) : ⋃₀ s ⊆ ⋃₀ t :=
- unionₛ_subset fun t' ht' => subset_unionₛ_of_mem <| h ht'
-#align set.sUnion_mono Set.unionₛ_mono
+#print Set.sUnion_mono /-
+theorem sUnion_mono {s t : Set (Set α)} (h : s ⊆ t) : ⋃₀ s ⊆ ⋃₀ t :=
+ sUnion_subset fun t' ht' => subset_sUnion_of_mem <| h ht'
+#align set.sUnion_mono Set.sUnion_mono
-/
-/- warning: set.Union_subset_Union_const -> Set.unionᵢ_subset_unionᵢ_const is a dubious translation:
+/- warning: set.Union_subset_Union_const -> Set.iUnion_subset_iUnion_const is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι₂ : Sort.{u3}} {s : Set.{u1} α}, (ι -> ι₂) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => s)) (Set.unionᵢ.{u1, u3} α ι₂ (fun (j : ι₂) => s)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {ι₂ : Sort.{u3}} {s : Set.{u1} α}, (ι -> ι₂) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s)) (Set.iUnion.{u1, u3} α ι₂ (fun (j : ι₂) => s)))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {ι₂ : Sort.{u1}} {s : Set.{u3} α}, (ι -> ι₂) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => s)) (Set.unionᵢ.{u3, u1} α ι₂ (fun (j : ι₂) => s)))
-Case conversion may be inaccurate. Consider using '#align set.Union_subset_Union_const Set.unionᵢ_subset_unionᵢ_constₓ'. -/
-theorem unionᵢ_subset_unionᵢ_const {s : Set α} (h : ι → ι₂) : (⋃ i : ι, s) ⊆ ⋃ j : ι₂, s :=
- @supᵢ_const_mono (Set α) ι ι₂ _ s h
-#align set.Union_subset_Union_const Set.unionᵢ_subset_unionᵢ_const
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {ι₂ : Sort.{u1}} {s : Set.{u3} α}, (ι -> ι₂) -> (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => s)) (Set.iUnion.{u3, u1} α ι₂ (fun (j : ι₂) => s)))
+Case conversion may be inaccurate. Consider using '#align set.Union_subset_Union_const Set.iUnion_subset_iUnion_constₓ'. -/
+theorem iUnion_subset_iUnion_const {s : Set α} (h : ι → ι₂) : (⋃ i : ι, s) ⊆ ⋃ j : ι₂, s :=
+ @iSup_const_mono (Set α) ι ι₂ _ s h
+#align set.Union_subset_Union_const Set.iUnion_subset_iUnion_const
-/- warning: set.Union_singleton_eq_range -> Set.unionᵢ_singleton_eq_range is a dubious translation:
+/- warning: set.Union_singleton_eq_range -> Set.iUnion_singleton_eq_range is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β), Eq.{succ u2} (Set.{u2} β) (Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => Singleton.singleton.{u2, u2} β (Set.{u2} β) (Set.hasSingleton.{u2} β) (f x))) (Set.range.{u2, succ u1} β α f)
+ forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Singleton.singleton.{u2, u2} β (Set.{u2} β) (Set.hasSingleton.{u2} β) (f x))) (Set.range.{u2, succ u1} β α f)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β), Eq.{succ u1} (Set.{u1} β) (Set.unionᵢ.{u1, succ u2} β α (fun (x : α) => Singleton.singleton.{u1, u1} β (Set.{u1} β) (Set.instSingletonSet.{u1} β) (f x))) (Set.range.{u1, succ u2} β α f)
-Case conversion may be inaccurate. Consider using '#align set.Union_singleton_eq_range Set.unionᵢ_singleton_eq_rangeₓ'. -/
+ forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β), Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Singleton.singleton.{u1, u1} β (Set.{u1} β) (Set.instSingletonSet.{u1} β) (f x))) (Set.range.{u1, succ u2} β α f)
+Case conversion may be inaccurate. Consider using '#align set.Union_singleton_eq_range Set.iUnion_singleton_eq_rangeₓ'. -/
@[simp]
-theorem unionᵢ_singleton_eq_range {α β : Type _} (f : α → β) : (⋃ x : α, {f x}) = range f :=
+theorem iUnion_singleton_eq_range {α β : Type _} (f : α → β) : (⋃ x : α, {f x}) = range f :=
by
ext x
simp [@eq_comm _ x]
-#align set.Union_singleton_eq_range Set.unionᵢ_singleton_eq_range
+#align set.Union_singleton_eq_range Set.iUnion_singleton_eq_range
-#print Set.unionᵢ_of_singleton /-
-theorem unionᵢ_of_singleton (α : Type _) : (⋃ x, {x} : Set α) = univ := by simp
-#align set.Union_of_singleton Set.unionᵢ_of_singleton
+#print Set.iUnion_of_singleton /-
+theorem iUnion_of_singleton (α : Type _) : (⋃ x, {x} : Set α) = univ := by simp
+#align set.Union_of_singleton Set.iUnion_of_singleton
-/
-#print Set.unionᵢ_of_singleton_coe /-
-theorem unionᵢ_of_singleton_coe (s : Set α) : (⋃ i : s, {i} : Set α) = s := by simp
-#align set.Union_of_singleton_coe Set.unionᵢ_of_singleton_coe
+#print Set.iUnion_of_singleton_coe /-
+theorem iUnion_of_singleton_coe (s : Set α) : (⋃ i : s, {i} : Set α) = s := by simp
+#align set.Union_of_singleton_coe Set.iUnion_of_singleton_coe
-/
-#print Set.unionₛ_eq_bunionᵢ /-
-theorem unionₛ_eq_bunionᵢ {s : Set (Set α)} : ⋃₀ s = ⋃ (i : Set α) (h : i ∈ s), i := by
+#print Set.sUnion_eq_biUnion /-
+theorem sUnion_eq_biUnion {s : Set (Set α)} : ⋃₀ s = ⋃ (i : Set α) (h : i ∈ s), i := by
rw [← sUnion_image, image_id']
-#align set.sUnion_eq_bUnion Set.unionₛ_eq_bunionᵢ
+#align set.sUnion_eq_bUnion Set.sUnion_eq_biUnion
-/
-#print Set.interₛ_eq_binterᵢ /-
-theorem interₛ_eq_binterᵢ {s : Set (Set α)} : ⋂₀ s = ⋂ (i : Set α) (h : i ∈ s), i := by
+#print Set.sInter_eq_biInter /-
+theorem sInter_eq_biInter {s : Set (Set α)} : ⋂₀ s = ⋂ (i : Set α) (h : i ∈ s), i := by
rw [← sInter_image, image_id']
-#align set.sInter_eq_bInter Set.interₛ_eq_binterᵢ
+#align set.sInter_eq_bInter Set.sInter_eq_biInter
-/
-#print Set.unionₛ_eq_unionᵢ /-
-theorem unionₛ_eq_unionᵢ {s : Set (Set α)} : ⋃₀ s = ⋃ i : s, i := by
+#print Set.sUnion_eq_iUnion /-
+theorem sUnion_eq_iUnion {s : Set (Set α)} : ⋃₀ s = ⋃ i : s, i := by
simp only [← sUnion_range, Subtype.range_coe]
-#align set.sUnion_eq_Union Set.unionₛ_eq_unionᵢ
+#align set.sUnion_eq_Union Set.sUnion_eq_iUnion
-/
-#print Set.interₛ_eq_interᵢ /-
-theorem interₛ_eq_interᵢ {s : Set (Set α)} : ⋂₀ s = ⋂ i : s, i := by
+#print Set.sInter_eq_iInter /-
+theorem sInter_eq_iInter {s : Set (Set α)} : ⋂₀ s = ⋂ i : s, i := by
simp only [← sInter_range, Subtype.range_coe]
-#align set.sInter_eq_Inter Set.interₛ_eq_interᵢ
+#align set.sInter_eq_Inter Set.sInter_eq_iInter
-/
-#print Set.unionᵢ_of_empty /-
+#print Set.iUnion_of_empty /-
@[simp]
-theorem unionᵢ_of_empty [IsEmpty ι] (s : ι → Set α) : (⋃ i, s i) = ∅ :=
- supᵢ_of_empty _
-#align set.Union_of_empty Set.unionᵢ_of_empty
+theorem iUnion_of_empty [IsEmpty ι] (s : ι → Set α) : (⋃ i, s i) = ∅ :=
+ iSup_of_empty _
+#align set.Union_of_empty Set.iUnion_of_empty
-/
-#print Set.interᵢ_of_empty /-
+#print Set.iInter_of_empty /-
@[simp]
-theorem interᵢ_of_empty [IsEmpty ι] (s : ι → Set α) : (⋂ i, s i) = univ :=
- infᵢ_of_empty _
-#align set.Inter_of_empty Set.interᵢ_of_empty
+theorem iInter_of_empty [IsEmpty ι] (s : ι → Set α) : (⋂ i, s i) = univ :=
+ iInf_of_empty _
+#align set.Inter_of_empty Set.iInter_of_empty
-/
-/- warning: set.union_eq_Union -> Set.union_eq_unionᵢ is a dubious translation:
+/- warning: set.union_eq_Union -> Set.union_eq_iUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {s₁ : Set.{u1} α} {s₂ : Set.{u1} α}, Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s₁ s₂) (Set.unionᵢ.{u1, 1} α Bool (fun (b : Bool) => cond.{u1} (Set.{u1} α) b s₁ s₂))
+ forall {α : Type.{u1}} {s₁ : Set.{u1} α} {s₂ : Set.{u1} α}, Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s₁ s₂) (Set.iUnion.{u1, 1} α Bool (fun (b : Bool) => cond.{u1} (Set.{u1} α) b s₁ s₂))
but is expected to have type
- forall {α : Type.{u1}} {s₁ : Set.{u1} α} {s₂ : Set.{u1} α}, Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) s₁ s₂) (Set.unionᵢ.{u1, 1} α Bool (fun (b : Bool) => cond.{u1} (Set.{u1} α) b s₁ s₂))
-Case conversion may be inaccurate. Consider using '#align set.union_eq_Union Set.union_eq_unionᵢₓ'. -/
-theorem union_eq_unionᵢ {s₁ s₂ : Set α} : s₁ ∪ s₂ = ⋃ b : Bool, cond b s₁ s₂ :=
- sup_eq_supᵢ s₁ s₂
-#align set.union_eq_Union Set.union_eq_unionᵢ
+ forall {α : Type.{u1}} {s₁ : Set.{u1} α} {s₂ : Set.{u1} α}, Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) s₁ s₂) (Set.iUnion.{u1, 1} α Bool (fun (b : Bool) => cond.{u1} (Set.{u1} α) b s₁ s₂))
+Case conversion may be inaccurate. Consider using '#align set.union_eq_Union Set.union_eq_iUnionₓ'. -/
+theorem union_eq_iUnion {s₁ s₂ : Set α} : s₁ ∪ s₂ = ⋃ b : Bool, cond b s₁ s₂ :=
+ sup_eq_iSup s₁ s₂
+#align set.union_eq_Union Set.union_eq_iUnion
-/- warning: set.inter_eq_Inter -> Set.inter_eq_interᵢ is a dubious translation:
+/- warning: set.inter_eq_Inter -> Set.inter_eq_iInter is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {s₁ : Set.{u1} α} {s₂ : Set.{u1} α}, Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s₁ s₂) (Set.interᵢ.{u1, 1} α Bool (fun (b : Bool) => cond.{u1} (Set.{u1} α) b s₁ s₂))
+ forall {α : Type.{u1}} {s₁ : Set.{u1} α} {s₂ : Set.{u1} α}, Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s₁ s₂) (Set.iInter.{u1, 1} α Bool (fun (b : Bool) => cond.{u1} (Set.{u1} α) b s₁ s₂))
but is expected to have type
- forall {α : Type.{u1}} {s₁ : Set.{u1} α} {s₂ : Set.{u1} α}, Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s₁ s₂) (Set.interᵢ.{u1, 1} α Bool (fun (b : Bool) => cond.{u1} (Set.{u1} α) b s₁ s₂))
-Case conversion may be inaccurate. Consider using '#align set.inter_eq_Inter Set.inter_eq_interᵢₓ'. -/
-theorem inter_eq_interᵢ {s₁ s₂ : Set α} : s₁ ∩ s₂ = ⋂ b : Bool, cond b s₁ s₂ :=
- inf_eq_infᵢ s₁ s₂
-#align set.inter_eq_Inter Set.inter_eq_interᵢ
+ forall {α : Type.{u1}} {s₁ : Set.{u1} α} {s₂ : Set.{u1} α}, Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s₁ s₂) (Set.iInter.{u1, 1} α Bool (fun (b : Bool) => cond.{u1} (Set.{u1} α) b s₁ s₂))
+Case conversion may be inaccurate. Consider using '#align set.inter_eq_Inter Set.inter_eq_iInterₓ'. -/
+theorem inter_eq_iInter {s₁ s₂ : Set α} : s₁ ∩ s₂ = ⋂ b : Bool, cond b s₁ s₂ :=
+ inf_eq_iInf s₁ s₂
+#align set.inter_eq_Inter Set.inter_eq_iInter
-/- warning: set.sInter_union_sInter -> Set.interₛ_union_interₛ is a dubious translation:
+/- warning: set.sInter_union_sInter -> Set.sInter_union_sInter is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {S : Set.{u1} (Set.{u1} α)} {T : Set.{u1} (Set.{u1} α)}, Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Set.interₛ.{u1} α S) (Set.interₛ.{u1} α T)) (Set.interᵢ.{u1, succ u1} α (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (fun (p : Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) => Set.interᵢ.{u1, 0} α (Membership.Mem.{u1, u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (Set.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) (Set.hasMem.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) p (Set.prod.{u1, u1} (Set.{u1} α) (Set.{u1} α) S T)) (fun (H : Membership.Mem.{u1, u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (Set.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) (Set.hasMem.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) p (Set.prod.{u1, u1} (Set.{u1} α) (Set.{u1} α) S T)) => Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Prod.fst.{u1, u1} (Set.{u1} α) (Set.{u1} α) p) (Prod.snd.{u1, u1} (Set.{u1} α) (Set.{u1} α) p))))
+ forall {α : Type.{u1}} {S : Set.{u1} (Set.{u1} α)} {T : Set.{u1} (Set.{u1} α)}, Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Set.sInter.{u1} α S) (Set.sInter.{u1} α T)) (Set.iInter.{u1, succ u1} α (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (fun (p : Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) => Set.iInter.{u1, 0} α (Membership.Mem.{u1, u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (Set.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) (Set.hasMem.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) p (Set.prod.{u1, u1} (Set.{u1} α) (Set.{u1} α) S T)) (fun (H : Membership.Mem.{u1, u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (Set.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) (Set.hasMem.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) p (Set.prod.{u1, u1} (Set.{u1} α) (Set.{u1} α) S T)) => Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Prod.fst.{u1, u1} (Set.{u1} α) (Set.{u1} α) p) (Prod.snd.{u1, u1} (Set.{u1} α) (Set.{u1} α) p))))
but is expected to have type
- forall {α : Type.{u1}} {S : Set.{u1} (Set.{u1} α)} {T : Set.{u1} (Set.{u1} α)}, Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (Set.interₛ.{u1} α S) (Set.interₛ.{u1} α T)) (Set.interᵢ.{u1, succ u1} α (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (fun (p : Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) => Set.interᵢ.{u1, 0} α (Membership.mem.{u1, u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (Set.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) (Set.instMembershipSet.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) p (Set.prod.{u1, u1} (Set.{u1} α) (Set.{u1} α) S T)) (fun (H : Membership.mem.{u1, u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (Set.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) (Set.instMembershipSet.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) p (Set.prod.{u1, u1} (Set.{u1} α) (Set.{u1} α) S T)) => Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (Prod.fst.{u1, u1} (Set.{u1} α) (Set.{u1} α) p) (Prod.snd.{u1, u1} (Set.{u1} α) (Set.{u1} α) p))))
-Case conversion may be inaccurate. Consider using '#align set.sInter_union_sInter Set.interₛ_union_interₛₓ'. -/
+ forall {α : Type.{u1}} {S : Set.{u1} (Set.{u1} α)} {T : Set.{u1} (Set.{u1} α)}, Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (Set.sInter.{u1} α S) (Set.sInter.{u1} α T)) (Set.iInter.{u1, succ u1} α (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (fun (p : Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) => Set.iInter.{u1, 0} α (Membership.mem.{u1, u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (Set.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) (Set.instMembershipSet.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) p (Set.prod.{u1, u1} (Set.{u1} α) (Set.{u1} α) S T)) (fun (H : Membership.mem.{u1, u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (Set.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) (Set.instMembershipSet.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) p (Set.prod.{u1, u1} (Set.{u1} α) (Set.{u1} α) S T)) => Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (Prod.fst.{u1, u1} (Set.{u1} α) (Set.{u1} α) p) (Prod.snd.{u1, u1} (Set.{u1} α) (Set.{u1} α) p))))
+Case conversion may be inaccurate. Consider using '#align set.sInter_union_sInter Set.sInter_union_sInterₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem interₛ_union_interₛ {S T : Set (Set α)} :
+theorem sInter_union_sInter {S T : Set (Set α)} :
⋂₀ S ∪ ⋂₀ T = ⋂ p ∈ S ×ˢ T, (p : Set α × Set α).1 ∪ p.2 :=
- infₛ_sup_infₛ
-#align set.sInter_union_sInter Set.interₛ_union_interₛ
+ sInf_sup_sInf
+#align set.sInter_union_sInter Set.sInter_union_sInter
-/- warning: set.sUnion_inter_sUnion -> Set.unionₛ_inter_unionₛ is a dubious translation:
+/- warning: set.sUnion_inter_sUnion -> Set.sUnion_inter_sUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {s : Set.{u1} (Set.{u1} α)} {t : Set.{u1} (Set.{u1} α)}, Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (Set.unionₛ.{u1} α s) (Set.unionₛ.{u1} α t)) (Set.unionᵢ.{u1, succ u1} α (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (fun (p : Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) => Set.unionᵢ.{u1, 0} α (Membership.Mem.{u1, u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (Set.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) (Set.hasMem.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) p (Set.prod.{u1, u1} (Set.{u1} α) (Set.{u1} α) s t)) (fun (H : Membership.Mem.{u1, u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (Set.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) (Set.hasMem.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) p (Set.prod.{u1, u1} (Set.{u1} α) (Set.{u1} α) s t)) => Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (Prod.fst.{u1, u1} (Set.{u1} α) (Set.{u1} α) p) (Prod.snd.{u1, u1} (Set.{u1} α) (Set.{u1} α) p))))
+ forall {α : Type.{u1}} {s : Set.{u1} (Set.{u1} α)} {t : Set.{u1} (Set.{u1} α)}, Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (Set.sUnion.{u1} α s) (Set.sUnion.{u1} α t)) (Set.iUnion.{u1, succ u1} α (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (fun (p : Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) => Set.iUnion.{u1, 0} α (Membership.Mem.{u1, u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (Set.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) (Set.hasMem.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) p (Set.prod.{u1, u1} (Set.{u1} α) (Set.{u1} α) s t)) (fun (H : Membership.Mem.{u1, u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (Set.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) (Set.hasMem.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) p (Set.prod.{u1, u1} (Set.{u1} α) (Set.{u1} α) s t)) => Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (Prod.fst.{u1, u1} (Set.{u1} α) (Set.{u1} α) p) (Prod.snd.{u1, u1} (Set.{u1} α) (Set.{u1} α) p))))
but is expected to have type
- forall {α : Type.{u1}} {s : Set.{u1} (Set.{u1} α)} {t : Set.{u1} (Set.{u1} α)}, Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.unionₛ.{u1} α s) (Set.unionₛ.{u1} α t)) (Set.unionᵢ.{u1, succ u1} α (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (fun (p : Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) => Set.unionᵢ.{u1, 0} α (Membership.mem.{u1, u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (Set.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) (Set.instMembershipSet.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) p (Set.prod.{u1, u1} (Set.{u1} α) (Set.{u1} α) s t)) (fun (H : Membership.mem.{u1, u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (Set.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) (Set.instMembershipSet.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) p (Set.prod.{u1, u1} (Set.{u1} α) (Set.{u1} α) s t)) => Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Prod.fst.{u1, u1} (Set.{u1} α) (Set.{u1} α) p) (Prod.snd.{u1, u1} (Set.{u1} α) (Set.{u1} α) p))))
-Case conversion may be inaccurate. Consider using '#align set.sUnion_inter_sUnion Set.unionₛ_inter_unionₛₓ'. -/
+ forall {α : Type.{u1}} {s : Set.{u1} (Set.{u1} α)} {t : Set.{u1} (Set.{u1} α)}, Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.sUnion.{u1} α s) (Set.sUnion.{u1} α t)) (Set.iUnion.{u1, succ u1} α (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (fun (p : Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) => Set.iUnion.{u1, 0} α (Membership.mem.{u1, u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (Set.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) (Set.instMembershipSet.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) p (Set.prod.{u1, u1} (Set.{u1} α) (Set.{u1} α) s t)) (fun (H : Membership.mem.{u1, u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α)) (Set.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) (Set.instMembershipSet.{u1} (Prod.{u1, u1} (Set.{u1} α) (Set.{u1} α))) p (Set.prod.{u1, u1} (Set.{u1} α) (Set.{u1} α) s t)) => Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Prod.fst.{u1, u1} (Set.{u1} α) (Set.{u1} α) p) (Prod.snd.{u1, u1} (Set.{u1} α) (Set.{u1} α) p))))
+Case conversion may be inaccurate. Consider using '#align set.sUnion_inter_sUnion Set.sUnion_inter_sUnionₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem unionₛ_inter_unionₛ {s t : Set (Set α)} :
+theorem sUnion_inter_sUnion {s t : Set (Set α)} :
⋃₀ s ∩ ⋃₀ t = ⋃ p ∈ s ×ˢ t, (p : Set α × Set α).1 ∩ p.2 :=
- supₛ_inf_supₛ
-#align set.sUnion_inter_sUnion Set.unionₛ_inter_unionₛ
+ sSup_inf_sSup
+#align set.sUnion_inter_sUnion Set.sUnion_inter_sUnion
-/- warning: set.bUnion_Union -> Set.bunionᵢ_unionᵢ is a dubious translation:
+/- warning: set.bUnion_Union -> Set.biUnion_iUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} (s : ι -> (Set.{u1} α)) (t : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => s i))) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => s i))) => t x))) (Set.unionᵢ.{u2, u3} β ι (fun (i : ι) => Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (s i)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (s i)) => t x))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} (s : ι -> (Set.{u1} α)) (t : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) => t x))) (Set.iUnion.{u2, u3} β ι (fun (i : ι) => Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (s i)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (s i)) => t x))))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u3} α)) (t : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.unionᵢ.{u2, succ u3} β α (fun (x : α) => Set.unionᵢ.{u2, 0} β (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x (Set.unionᵢ.{u3, u1} α ι (fun (i : ι) => s i))) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x (Set.unionᵢ.{u3, u1} α ι (fun (i : ι) => s i))) => t x))) (Set.unionᵢ.{u2, u1} β ι (fun (i : ι) => Set.unionᵢ.{u2, succ u3} β α (fun (x : α) => Set.unionᵢ.{u2, 0} β (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x (s i)) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x (s i)) => t x))))
-Case conversion may be inaccurate. Consider using '#align set.bUnion_Union Set.bunionᵢ_unionᵢₓ'. -/
-theorem bunionᵢ_unionᵢ (s : ι → Set α) (t : α → Set β) :
+ forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u3} α)) (t : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u3} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i))) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i))) => t x))) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => Set.iUnion.{u2, succ u3} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x (s i)) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x (s i)) => t x))))
+Case conversion may be inaccurate. Consider using '#align set.bUnion_Union Set.biUnion_iUnionₓ'. -/
+theorem biUnion_iUnion (s : ι → Set α) (t : α → Set β) :
(⋃ x ∈ ⋃ i, s i, t x) = ⋃ (i) (x ∈ s i), t x := by simp [@Union_comm _ ι]
-#align set.bUnion_Union Set.bunionᵢ_unionᵢ
+#align set.bUnion_Union Set.biUnion_iUnion
-/- warning: set.bInter_Union -> Set.binterᵢ_unionᵢ is a dubious translation:
+/- warning: set.bInter_Union -> Set.biInter_iUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} (s : ι -> (Set.{u1} α)) (t : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.interᵢ.{u2, succ u1} β α (fun (x : α) => Set.interᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => s i))) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => s i))) => t x))) (Set.interᵢ.{u2, u3} β ι (fun (i : ι) => Set.interᵢ.{u2, succ u1} β α (fun (x : α) => Set.interᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (s i)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (s i)) => t x))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} (s : ι -> (Set.{u1} α)) (t : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) => t x))) (Set.iInter.{u2, u3} β ι (fun (i : ι) => Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (s i)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (s i)) => t x))))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u3} α)) (t : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.interᵢ.{u2, succ u3} β α (fun (x : α) => Set.interᵢ.{u2, 0} β (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x (Set.unionᵢ.{u3, u1} α ι (fun (i : ι) => s i))) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x (Set.unionᵢ.{u3, u1} α ι (fun (i : ι) => s i))) => t x))) (Set.interᵢ.{u2, u1} β ι (fun (i : ι) => Set.interᵢ.{u2, succ u3} β α (fun (x : α) => Set.interᵢ.{u2, 0} β (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x (s i)) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x (s i)) => t x))))
-Case conversion may be inaccurate. Consider using '#align set.bInter_Union Set.binterᵢ_unionᵢₓ'. -/
-theorem binterᵢ_unionᵢ (s : ι → Set α) (t : α → Set β) :
+ forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u3} α)) (t : α -> (Set.{u2} β)), Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, succ u3} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i))) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i))) => t x))) (Set.iInter.{u2, u1} β ι (fun (i : ι) => Set.iInter.{u2, succ u3} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x (s i)) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x (s i)) => t x))))
+Case conversion may be inaccurate. Consider using '#align set.bInter_Union Set.biInter_iUnionₓ'. -/
+theorem biInter_iUnion (s : ι → Set α) (t : α → Set β) :
(⋂ x ∈ ⋃ i, s i, t x) = ⋂ (i) (x ∈ s i), t x := by simp [@Inter_comm _ ι]
-#align set.bInter_Union Set.binterᵢ_unionᵢ
+#align set.bInter_Union Set.biInter_iUnion
-/- warning: set.sUnion_Union -> Set.unionₛ_unionᵢ is a dubious translation:
+/- warning: set.sUnion_Union -> Set.sUnion_iUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} (Set.{u1} α))), Eq.{succ u1} (Set.{u1} α) (Set.unionₛ.{u1} α (Set.unionᵢ.{u1, u2} (Set.{u1} α) ι (fun (i : ι) => s i))) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionₛ.{u1} α (s i)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} (Set.{u1} α))), Eq.{succ u1} (Set.{u1} α) (Set.sUnion.{u1} α (Set.iUnion.{u1, u2} (Set.{u1} α) ι (fun (i : ι) => s i))) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.sUnion.{u1} α (s i)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} (Set.{u2} α))), Eq.{succ u2} (Set.{u2} α) (Set.unionₛ.{u2} α (Set.unionᵢ.{u2, u1} (Set.{u2} α) ι (fun (i : ι) => s i))) (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => Set.unionₛ.{u2} α (s i)))
-Case conversion may be inaccurate. Consider using '#align set.sUnion_Union Set.unionₛ_unionᵢₓ'. -/
-theorem unionₛ_unionᵢ (s : ι → Set (Set α)) : (⋃₀ ⋃ i, s i) = ⋃ i, ⋃₀ s i := by
+ forall {α : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} (Set.{u2} α))), Eq.{succ u2} (Set.{u2} α) (Set.sUnion.{u2} α (Set.iUnion.{u2, u1} (Set.{u2} α) ι (fun (i : ι) => s i))) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => Set.sUnion.{u2} α (s i)))
+Case conversion may be inaccurate. Consider using '#align set.sUnion_Union Set.sUnion_iUnionₓ'. -/
+theorem sUnion_iUnion (s : ι → Set (Set α)) : (⋃₀ ⋃ i, s i) = ⋃ i, ⋃₀ s i := by
simp only [sUnion_eq_bUnion, bUnion_Union]
-#align set.sUnion_Union Set.unionₛ_unionᵢ
+#align set.sUnion_Union Set.sUnion_iUnion
-/- warning: set.sInter_Union -> Set.interₛ_unionᵢ is a dubious translation:
+/- warning: set.sInter_Union -> Set.sInter_iUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} (Set.{u1} α))), Eq.{succ u1} (Set.{u1} α) (Set.interₛ.{u1} α (Set.unionᵢ.{u1, u2} (Set.{u1} α) ι (fun (i : ι) => s i))) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interₛ.{u1} α (s i)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} (Set.{u1} α))), Eq.{succ u1} (Set.{u1} α) (Set.sInter.{u1} α (Set.iUnion.{u1, u2} (Set.{u1} α) ι (fun (i : ι) => s i))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.sInter.{u1} α (s i)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} (Set.{u2} α))), Eq.{succ u2} (Set.{u2} α) (Set.interₛ.{u2} α (Set.unionᵢ.{u2, u1} (Set.{u2} α) ι (fun (i : ι) => s i))) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => Set.interₛ.{u2} α (s i)))
-Case conversion may be inaccurate. Consider using '#align set.sInter_Union Set.interₛ_unionᵢₓ'. -/
-theorem interₛ_unionᵢ (s : ι → Set (Set α)) : (⋂₀ ⋃ i, s i) = ⋂ i, ⋂₀ s i := by
+ forall {α : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} (Set.{u2} α))), Eq.{succ u2} (Set.{u2} α) (Set.sInter.{u2} α (Set.iUnion.{u2, u1} (Set.{u2} α) ι (fun (i : ι) => s i))) (Set.iInter.{u2, u1} α ι (fun (i : ι) => Set.sInter.{u2} α (s i)))
+Case conversion may be inaccurate. Consider using '#align set.sInter_Union Set.sInter_iUnionₓ'. -/
+theorem sInter_iUnion (s : ι → Set (Set α)) : (⋂₀ ⋃ i, s i) = ⋂ i, ⋂₀ s i := by
simp only [sInter_eq_bInter, bInter_Union]
-#align set.sInter_Union Set.interₛ_unionᵢ
+#align set.sInter_Union Set.sInter_iUnion
-/- warning: set.Union_range_eq_sUnion -> Set.unionᵢ_range_eq_unionₛ is a dubious translation:
+/- warning: set.Union_range_eq_sUnion -> Set.iUnion_range_eq_sUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (C : Set.{u1} (Set.{u1} α)) {f : forall (s : coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C), β -> (coeSort.{succ u1, succ (succ u1)} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) Type.{u1} (coeSortTrans.{succ (succ u1), succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) (coeBaseAux.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) (Set.{u1} α) (coeSubtype.{succ u1} (Set.{u1} α) (fun (x : Set.{u1} α) => Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) x C)))) s)}, (forall (s : coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C), Function.Surjective.{succ u2, succ u1} β (coeSort.{succ u1, succ (succ u1)} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) Type.{u1} (coeSortTrans.{succ (succ u1), succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) (coeBaseAux.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) (Set.{u1} α) (coeSubtype.{succ u1} (Set.{u1} α) (fun (x : Set.{u1} α) => Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) x C)))) s) (f s)) -> (Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, succ u2} α β (fun (y : β) => Set.range.{u1, succ u1} α (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) (fun (s : coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) => Subtype.val.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (HasCoeTAux.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) (Set.{u1} α) (coeBaseAux.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) (Set.{u1} α) (coeSubtype.{succ u1} (Set.{u1} α) (fun (x : Set.{u1} α) => Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) x C))) s)) (f s y)))) (Set.unionₛ.{u1} α C))
+ forall {α : Type.{u1}} {β : Type.{u2}} (C : Set.{u1} (Set.{u1} α)) {f : forall (s : coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C), β -> (coeSort.{succ u1, succ (succ u1)} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) Type.{u1} (coeSortTrans.{succ (succ u1), succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) (coeBaseAux.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) (Set.{u1} α) (coeSubtype.{succ u1} (Set.{u1} α) (fun (x : Set.{u1} α) => Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) x C)))) s)}, (forall (s : coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C), Function.Surjective.{succ u2, succ u1} β (coeSort.{succ u1, succ (succ u1)} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) Type.{u1} (coeSortTrans.{succ (succ u1), succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) (coeBaseAux.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) (Set.{u1} α) (coeSubtype.{succ u1} (Set.{u1} α) (fun (x : Set.{u1} α) => Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) x C)))) s) (f s)) -> (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α β (fun (y : β) => Set.range.{u1, succ u1} α (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) (fun (s : coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) => Subtype.val.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (HasCoeTAux.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) (Set.{u1} α) (coeBaseAux.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} α)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} α)) C) (Set.{u1} α) (coeSubtype.{succ u1} (Set.{u1} α) (fun (x : Set.{u1} α) => Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) x C))) s)) (f s y)))) (Set.sUnion.{u1} α C))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (C : Set.{u2} (Set.{u2} α)) {f : forall (s : Set.Elem.{u2} (Set.{u2} α) C), β -> (Set.Elem.{u2} α (Subtype.val.{succ u2} (Set.{u2} α) (fun (x : Set.{u2} α) => Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) x C) s))}, (forall (s : Set.Elem.{u2} (Set.{u2} α) C), Function.Surjective.{succ u1, succ u2} β (Set.Elem.{u2} α (Subtype.val.{succ u2} (Set.{u2} α) (fun (x : Set.{u2} α) => Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) x C) s)) (f s)) -> (Eq.{succ u2} (Set.{u2} α) (Set.unionᵢ.{u2, succ u1} α β (fun (y : β) => Set.range.{u2, succ u2} α (Set.Elem.{u2} (Set.{u2} α) C) (fun (s : Set.Elem.{u2} (Set.{u2} α) C) => Subtype.val.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Subtype.val.{succ u2} (Set.{u2} α) (fun (x : Set.{u2} α) => Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) x C) s)) (f s y)))) (Set.unionₛ.{u2} α C))
-Case conversion may be inaccurate. Consider using '#align set.Union_range_eq_sUnion Set.unionᵢ_range_eq_unionₛₓ'. -/
-theorem unionᵢ_range_eq_unionₛ {α β : Type _} (C : Set (Set α)) {f : ∀ s : C, β → s}
+ forall {α : Type.{u2}} {β : Type.{u1}} (C : Set.{u2} (Set.{u2} α)) {f : forall (s : Set.Elem.{u2} (Set.{u2} α) C), β -> (Set.Elem.{u2} α (Subtype.val.{succ u2} (Set.{u2} α) (fun (x : Set.{u2} α) => Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) x C) s))}, (forall (s : Set.Elem.{u2} (Set.{u2} α) C), Function.Surjective.{succ u1, succ u2} β (Set.Elem.{u2} α (Subtype.val.{succ u2} (Set.{u2} α) (fun (x : Set.{u2} α) => Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) x C) s)) (f s)) -> (Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, succ u1} α β (fun (y : β) => Set.range.{u2, succ u2} α (Set.Elem.{u2} (Set.{u2} α) C) (fun (s : Set.Elem.{u2} (Set.{u2} α) C) => Subtype.val.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Subtype.val.{succ u2} (Set.{u2} α) (fun (x : Set.{u2} α) => Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) x C) s)) (f s y)))) (Set.sUnion.{u2} α C))
+Case conversion may be inaccurate. Consider using '#align set.Union_range_eq_sUnion Set.iUnion_range_eq_sUnionₓ'. -/
+theorem iUnion_range_eq_sUnion {α β : Type _} (C : Set (Set α)) {f : ∀ s : C, β → s}
(hf : ∀ s : C, Surjective (f s)) : (⋃ y : β, range fun s : C => (f s y).val) = ⋃₀ C :=
by
ext x; constructor
@@ -2576,15 +2576,15 @@ theorem unionᵢ_range_eq_unionₛ {α β : Type _} (C : Set (Set α)) {f : ∀
cases' hf ⟨s, hs⟩ ⟨x, hx⟩ with y hy
refine' ⟨_, ⟨y, rfl⟩, ⟨s, hs⟩, _⟩
exact congr_arg Subtype.val hy
-#align set.Union_range_eq_sUnion Set.unionᵢ_range_eq_unionₛ
+#align set.Union_range_eq_sUnion Set.iUnion_range_eq_sUnion
-/- warning: set.Union_range_eq_Union -> Set.unionᵢ_range_eq_unionᵢ is a dubious translation:
+/- warning: set.Union_range_eq_Union -> Set.iUnion_range_eq_iUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} (C : ι -> (Set.{u1} α)) {f : forall (x : ι), β -> (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) (C x))}, (forall (x : ι), Function.Surjective.{succ u2, succ u1} β (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) (C x)) (f x)) -> (Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, succ u2} α β (fun (y : β) => Set.range.{u1, u3} α ι (fun (x : ι) => Subtype.val.{succ u1} α (fun (x_1 : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x_1 (C x)) (f x y)))) (Set.unionᵢ.{u1, u3} α ι (fun (x : ι) => C x)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} (C : ι -> (Set.{u1} α)) {f : forall (x : ι), β -> (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) (C x))}, (forall (x : ι), Function.Surjective.{succ u2, succ u1} β (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) (C x)) (f x)) -> (Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α β (fun (y : β) => Set.range.{u1, u3} α ι (fun (x : ι) => Subtype.val.{succ u1} α (fun (x_1 : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x_1 (C x)) (f x y)))) (Set.iUnion.{u1, u3} α ι (fun (x : ι) => C x)))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} (C : ι -> (Set.{u3} α)) {f : forall (x : ι), β -> (Set.Elem.{u3} α (C x))}, (forall (x : ι), Function.Surjective.{succ u2, succ u3} β (Set.Elem.{u3} α (C x)) (f x)) -> (Eq.{succ u3} (Set.{u3} α) (Set.unionᵢ.{u3, succ u2} α β (fun (y : β) => Set.range.{u3, u1} α ι (fun (x : ι) => Subtype.val.{succ u3} α (fun (x_1 : α) => Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x_1 (C x)) (f x y)))) (Set.unionᵢ.{u3, u1} α ι (fun (x : ι) => C x)))
-Case conversion may be inaccurate. Consider using '#align set.Union_range_eq_Union Set.unionᵢ_range_eq_unionᵢₓ'. -/
-theorem unionᵢ_range_eq_unionᵢ (C : ι → Set α) {f : ∀ x : ι, β → C x}
+ forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} (C : ι -> (Set.{u3} α)) {f : forall (x : ι), β -> (Set.Elem.{u3} α (C x))}, (forall (x : ι), Function.Surjective.{succ u2, succ u3} β (Set.Elem.{u3} α (C x)) (f x)) -> (Eq.{succ u3} (Set.{u3} α) (Set.iUnion.{u3, succ u2} α β (fun (y : β) => Set.range.{u3, u1} α ι (fun (x : ι) => Subtype.val.{succ u3} α (fun (x_1 : α) => Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) x_1 (C x)) (f x y)))) (Set.iUnion.{u3, u1} α ι (fun (x : ι) => C x)))
+Case conversion may be inaccurate. Consider using '#align set.Union_range_eq_Union Set.iUnion_range_eq_iUnionₓ'. -/
+theorem iUnion_range_eq_iUnion (C : ι → Set α) {f : ∀ x : ι, β → C x}
(hf : ∀ x : ι, Surjective (f x)) : (⋃ y : β, range fun x : ι => (f x y).val) = ⋃ x, C x :=
by
ext x; rw [mem_Union, mem_Union]; constructor
@@ -2593,204 +2593,204 @@ theorem unionᵢ_range_eq_unionᵢ (C : ι → Set α) {f : ∀ x : ι, β → C
· rintro ⟨i, hx⟩
cases' hf i ⟨x, hx⟩ with y hy
exact ⟨y, i, congr_arg Subtype.val hy⟩
-#align set.Union_range_eq_Union Set.unionᵢ_range_eq_unionᵢ
+#align set.Union_range_eq_Union Set.iUnion_range_eq_iUnion
-/- warning: set.union_distrib_Inter_left -> Set.union_distrib_interᵢ_left is a dubious translation:
+/- warning: set.union_distrib_Inter_left -> Set.union_distrib_iInter_left is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} α)) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) t (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => s i))) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) t (s i)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} α)) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) t (Set.iInter.{u1, u2} α ι (fun (i : ι) => s i))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) t (s i)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} α)) (t : Set.{u2} α), Eq.{succ u2} (Set.{u2} α) (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) t (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => s i))) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) t (s i)))
-Case conversion may be inaccurate. Consider using '#align set.union_distrib_Inter_left Set.union_distrib_interᵢ_leftₓ'. -/
-theorem union_distrib_interᵢ_left (s : ι → Set α) (t : Set α) : (t ∪ ⋂ i, s i) = ⋂ i, t ∪ s i :=
- sup_infᵢ_eq _ _
-#align set.union_distrib_Inter_left Set.union_distrib_interᵢ_left
+ forall {α : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} α)) (t : Set.{u2} α), Eq.{succ u2} (Set.{u2} α) (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) t (Set.iInter.{u2, u1} α ι (fun (i : ι) => s i))) (Set.iInter.{u2, u1} α ι (fun (i : ι) => Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) t (s i)))
+Case conversion may be inaccurate. Consider using '#align set.union_distrib_Inter_left Set.union_distrib_iInter_leftₓ'. -/
+theorem union_distrib_iInter_left (s : ι → Set α) (t : Set α) : (t ∪ ⋂ i, s i) = ⋂ i, t ∪ s i :=
+ sup_iInf_eq _ _
+#align set.union_distrib_Inter_left Set.union_distrib_iInter_left
-/- warning: set.union_distrib_Inter₂_left -> Set.union_distrib_interᵢ₂_left is a dubious translation:
+/- warning: set.union_distrib_Inter₂_left -> Set.union_distrib_iInter₂_left is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} (s : Set.{u1} α) (t : forall (i : ι), (κ i) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u3} α (κ i) (fun (j : κ i) => t i j)))) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u3} α (κ i) (fun (j : κ i) => Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s (t i j))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} (s : Set.{u1} α) (t : forall (i : ι), (κ i) -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => t i j)))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s (t i j))))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : Set.{u3} α) (t : forall (i : ι), (κ i) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Union.union.{u3} (Set.{u3} α) (Set.instUnionSet.{u3} α) s (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, u1} α (κ i) (fun (j : κ i) => t i j)))) (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, u1} α (κ i) (fun (j : κ i) => Union.union.{u3} (Set.{u3} α) (Set.instUnionSet.{u3} α) s (t i j))))
-Case conversion may be inaccurate. Consider using '#align set.union_distrib_Inter₂_left Set.union_distrib_interᵢ₂_leftₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : Set.{u3} α) (t : forall (i : ι), (κ i) -> (Set.{u3} α)), Eq.{succ u3} (Set.{u3} α) (Union.union.{u3} (Set.{u3} α) (Set.instUnionSet.{u3} α) s (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => t i j)))) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => Union.union.{u3} (Set.{u3} α) (Set.instUnionSet.{u3} α) s (t i j))))
+Case conversion may be inaccurate. Consider using '#align set.union_distrib_Inter₂_left Set.union_distrib_iInter₂_leftₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem union_distrib_interᵢ₂_left (s : Set α) (t : ∀ i, κ i → Set α) :
+theorem union_distrib_iInter₂_left (s : Set α) (t : ∀ i, κ i → Set α) :
(s ∪ ⋂ (i) (j), t i j) = ⋂ (i) (j), s ∪ t i j := by simp_rw [union_distrib_Inter_left]
-#align set.union_distrib_Inter₂_left Set.union_distrib_interᵢ₂_left
+#align set.union_distrib_Inter₂_left Set.union_distrib_iInter₂_left
-/- warning: set.union_distrib_Inter_right -> Set.union_distrib_interᵢ_right is a dubious translation:
+/- warning: set.union_distrib_Inter_right -> Set.union_distrib_iInter_right is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} α)) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => s i)) t) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (s i) t))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} (s : ι -> (Set.{u1} α)) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => s i)) t) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (s i) t))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} α)) (t : Set.{u2} α), Eq.{succ u2} (Set.{u2} α) (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => s i)) t) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) (s i) t))
-Case conversion may be inaccurate. Consider using '#align set.union_distrib_Inter_right Set.union_distrib_interᵢ_rightₓ'. -/
-theorem union_distrib_interᵢ_right (s : ι → Set α) (t : Set α) : (⋂ i, s i) ∪ t = ⋂ i, s i ∪ t :=
- infᵢ_sup_eq _ _
-#align set.union_distrib_Inter_right Set.union_distrib_interᵢ_right
+ forall {α : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u2} α)) (t : Set.{u2} α), Eq.{succ u2} (Set.{u2} α) (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) (Set.iInter.{u2, u1} α ι (fun (i : ι) => s i)) t) (Set.iInter.{u2, u1} α ι (fun (i : ι) => Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) (s i) t))
+Case conversion may be inaccurate. Consider using '#align set.union_distrib_Inter_right Set.union_distrib_iInter_rightₓ'. -/
+theorem union_distrib_iInter_right (s : ι → Set α) (t : Set α) : (⋂ i, s i) ∪ t = ⋂ i, s i ∪ t :=
+ iInf_sup_eq _ _
+#align set.union_distrib_Inter_right Set.union_distrib_iInter_right
-/- warning: set.union_distrib_Inter₂_right -> Set.union_distrib_interᵢ₂_right is a dubious translation:
+/- warning: set.union_distrib_Inter₂_right -> Set.union_distrib_iInter₂_right is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} (s : forall (i : ι), (κ i) -> (Set.{u1} α)) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) t) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u3} α (κ i) (fun (j : κ i) => Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (s i j) t)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} (s : forall (i : ι), (κ i) -> (Set.{u1} α)) (t : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) t) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (s i j) t)))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : forall (i : ι), (κ i) -> (Set.{u3} α)) (t : Set.{u3} α), Eq.{succ u3} (Set.{u3} α) (Union.union.{u3} (Set.{u3} α) (Set.instUnionSet.{u3} α) (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) t) (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, u1} α (κ i) (fun (j : κ i) => Union.union.{u3} (Set.{u3} α) (Set.instUnionSet.{u3} α) (s i j) t)))
-Case conversion may be inaccurate. Consider using '#align set.union_distrib_Inter₂_right Set.union_distrib_interᵢ₂_rightₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : forall (i : ι), (κ i) -> (Set.{u3} α)) (t : Set.{u3} α), Eq.{succ u3} (Set.{u3} α) (Union.union.{u3} (Set.{u3} α) (Set.instUnionSet.{u3} α) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) t) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => Union.union.{u3} (Set.{u3} α) (Set.instUnionSet.{u3} α) (s i j) t)))
+Case conversion may be inaccurate. Consider using '#align set.union_distrib_Inter₂_right Set.union_distrib_iInter₂_rightₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem union_distrib_interᵢ₂_right (s : ∀ i, κ i → Set α) (t : Set α) :
+theorem union_distrib_iInter₂_right (s : ∀ i, κ i → Set α) (t : Set α) :
(⋂ (i) (j), s i j) ∪ t = ⋂ (i) (j), s i j ∪ t := by simp_rw [union_distrib_Inter_right]
-#align set.union_distrib_Inter₂_right Set.union_distrib_interᵢ₂_right
+#align set.union_distrib_Inter₂_right Set.union_distrib_iInter₂_right
section Function
/-! ### `maps_to` -/
-/- warning: set.maps_to_sUnion -> Set.mapsTo_unionₛ is a dubious translation:
+/- warning: set.maps_to_sUnion -> Set.mapsTo_sUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {S : Set.{u1} (Set.{u1} α)} {t : Set.{u2} β} {f : α -> β}, (forall (s : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s S) -> (Set.MapsTo.{u1, u2} α β f s t)) -> (Set.MapsTo.{u1, u2} α β f (Set.unionₛ.{u1} α S) t)
+ forall {α : Type.{u1}} {β : Type.{u2}} {S : Set.{u1} (Set.{u1} α)} {t : Set.{u2} β} {f : α -> β}, (forall (s : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s S) -> (Set.MapsTo.{u1, u2} α β f s t)) -> (Set.MapsTo.{u1, u2} α β f (Set.sUnion.{u1} α S) t)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {S : Set.{u2} (Set.{u2} α)} {t : Set.{u1} β} {f : α -> β}, (forall (s : Set.{u2} α), (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) s S) -> (Set.MapsTo.{u2, u1} α β f s t)) -> (Set.MapsTo.{u2, u1} α β f (Set.unionₛ.{u2} α S) t)
-Case conversion may be inaccurate. Consider using '#align set.maps_to_sUnion Set.mapsTo_unionₛₓ'. -/
-theorem mapsTo_unionₛ {S : Set (Set α)} {t : Set β} {f : α → β} (H : ∀ s ∈ S, MapsTo f s t) :
+ forall {α : Type.{u2}} {β : Type.{u1}} {S : Set.{u2} (Set.{u2} α)} {t : Set.{u1} β} {f : α -> β}, (forall (s : Set.{u2} α), (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) s S) -> (Set.MapsTo.{u2, u1} α β f s t)) -> (Set.MapsTo.{u2, u1} α β f (Set.sUnion.{u2} α S) t)
+Case conversion may be inaccurate. Consider using '#align set.maps_to_sUnion Set.mapsTo_sUnionₓ'. -/
+theorem mapsTo_sUnion {S : Set (Set α)} {t : Set β} {f : α → β} (H : ∀ s ∈ S, MapsTo f s t) :
MapsTo f (⋃₀ S) t := fun x ⟨s, hs, hx⟩ => H s hs hx
-#align set.maps_to_sUnion Set.mapsTo_unionₛ
+#align set.maps_to_sUnion Set.mapsTo_sUnion
-/- warning: set.maps_to_Union -> Set.mapsTo_unionᵢ is a dubious translation:
+/- warning: set.maps_to_Union -> Set.mapsTo_iUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)} {t : Set.{u2} β} {f : α -> β}, (forall (i : ι), Set.MapsTo.{u1, u2} α β f (s i) t) -> (Set.MapsTo.{u1, u2} α β f (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => s i)) t)
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)} {t : Set.{u2} β} {f : α -> β}, (forall (i : ι), Set.MapsTo.{u1, u2} α β f (s i) t) -> (Set.MapsTo.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i)) t)
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u3} α)} {t : Set.{u2} β} {f : α -> β}, (forall (i : ι), Set.MapsTo.{u3, u2} α β f (s i) t) -> (Set.MapsTo.{u3, u2} α β f (Set.unionᵢ.{u3, u1} α ι (fun (i : ι) => s i)) t)
-Case conversion may be inaccurate. Consider using '#align set.maps_to_Union Set.mapsTo_unionᵢₓ'. -/
-theorem mapsTo_unionᵢ {s : ι → Set α} {t : Set β} {f : α → β} (H : ∀ i, MapsTo f (s i) t) :
+ forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u3} α)} {t : Set.{u2} β} {f : α -> β}, (forall (i : ι), Set.MapsTo.{u3, u2} α β f (s i) t) -> (Set.MapsTo.{u3, u2} α β f (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i)) t)
+Case conversion may be inaccurate. Consider using '#align set.maps_to_Union Set.mapsTo_iUnionₓ'. -/
+theorem mapsTo_iUnion {s : ι → Set α} {t : Set β} {f : α → β} (H : ∀ i, MapsTo f (s i) t) :
MapsTo f (⋃ i, s i) t :=
- mapsTo_unionₛ <| forall_range_iff.2 H
-#align set.maps_to_Union Set.mapsTo_unionᵢ
+ mapsTo_sUnion <| forall_range_iff.2 H
+#align set.maps_to_Union Set.mapsTo_iUnion
-/- warning: set.maps_to_Union₂ -> Set.mapsTo_unionᵢ₂ is a dubious translation:
+/- warning: set.maps_to_Union₂ -> Set.mapsTo_iUnion₂ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : Set.{u2} β} {f : α -> β}, (forall (i : ι) (j : κ i), Set.MapsTo.{u1, u2} α β f (s i j) t) -> (Set.MapsTo.{u1, u2} α β f (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => Set.unionᵢ.{u1, u4} α (κ i) (fun (j : κ i) => s i j))) t)
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : Set.{u2} β} {f : α -> β}, (forall (i : ι) (j : κ i), Set.MapsTo.{u1, u2} α β f (s i j) t) -> (Set.MapsTo.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => Set.iUnion.{u1, u4} α (κ i) (fun (j : κ i) => s i j))) t)
but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u4} α)} {t : Set.{u3} β} {f : α -> β}, (forall (i : ι) (j : κ i), Set.MapsTo.{u4, u3} α β f (s i j) t) -> (Set.MapsTo.{u4, u3} α β f (Set.unionᵢ.{u4, u2} α ι (fun (i : ι) => Set.unionᵢ.{u4, u1} α (κ i) (fun (j : κ i) => s i j))) t)
-Case conversion may be inaccurate. Consider using '#align set.maps_to_Union₂ Set.mapsTo_unionᵢ₂ₓ'. -/
+ forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u4} α)} {t : Set.{u3} β} {f : α -> β}, (forall (i : ι) (j : κ i), Set.MapsTo.{u4, u3} α β f (s i j) t) -> (Set.MapsTo.{u4, u3} α β f (Set.iUnion.{u4, u2} α ι (fun (i : ι) => Set.iUnion.{u4, u1} α (κ i) (fun (j : κ i) => s i j))) t)
+Case conversion may be inaccurate. Consider using '#align set.maps_to_Union₂ Set.mapsTo_iUnion₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem mapsTo_unionᵢ₂ {s : ∀ i, κ i → Set α} {t : Set β} {f : α → β}
+theorem mapsTo_iUnion₂ {s : ∀ i, κ i → Set α} {t : Set β} {f : α → β}
(H : ∀ i j, MapsTo f (s i j) t) : MapsTo f (⋃ (i) (j), s i j) t :=
- mapsTo_unionᵢ fun i => mapsTo_unionᵢ (H i)
-#align set.maps_to_Union₂ Set.mapsTo_unionᵢ₂
+ mapsTo_iUnion fun i => mapsTo_iUnion (H i)
+#align set.maps_to_Union₂ Set.mapsTo_iUnion₂
-/- warning: set.maps_to_Union_Union -> Set.mapsTo_unionᵢ_unionᵢ is a dubious translation:
+/- warning: set.maps_to_Union_Union -> Set.mapsTo_iUnion_iUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.MapsTo.{u1, u2} α β f (s i) (t i)) -> (Set.MapsTo.{u1, u2} α β f (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u2, u3} β ι (fun (i : ι) => t i)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.MapsTo.{u1, u2} α β f (s i) (t i)) -> (Set.MapsTo.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, u3} β ι (fun (i : ι) => t i)))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u3} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.MapsTo.{u3, u2} α β f (s i) (t i)) -> (Set.MapsTo.{u3, u2} α β f (Set.unionᵢ.{u3, u1} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u2, u1} β ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.maps_to_Union_Union Set.mapsTo_unionᵢ_unionᵢₓ'. -/
-theorem mapsTo_unionᵢ_unionᵢ {s : ι → Set α} {t : ι → Set β} {f : α → β}
+ forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u3} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.MapsTo.{u3, u2} α β f (s i) (t i)) -> (Set.MapsTo.{u3, u2} α β f (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => t i)))
+Case conversion may be inaccurate. Consider using '#align set.maps_to_Union_Union Set.mapsTo_iUnion_iUnionₓ'. -/
+theorem mapsTo_iUnion_iUnion {s : ι → Set α} {t : ι → Set β} {f : α → β}
(H : ∀ i, MapsTo f (s i) (t i)) : MapsTo f (⋃ i, s i) (⋃ i, t i) :=
- mapsTo_unionᵢ fun i => (H i).mono (Subset.refl _) (subset_unionᵢ t i)
-#align set.maps_to_Union_Union Set.mapsTo_unionᵢ_unionᵢ
+ mapsTo_iUnion fun i => (H i).mono (Subset.refl _) (subset_iUnion t i)
+#align set.maps_to_Union_Union Set.mapsTo_iUnion_iUnion
-/- warning: set.maps_to_Union₂_Union₂ -> Set.mapsTo_unionᵢ₂_unionᵢ₂ is a dubious translation:
+/- warning: set.maps_to_Union₂_Union₂ -> Set.mapsTo_iUnion₂_iUnion₂ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i : ι), (κ i) -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.MapsTo.{u1, u2} α β f (s i j) (t i j)) -> (Set.MapsTo.{u1, u2} α β f (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => Set.unionᵢ.{u1, u4} α (κ i) (fun (j : κ i) => s i j))) (Set.unionᵢ.{u2, u3} β ι (fun (i : ι) => Set.unionᵢ.{u2, u4} β (κ i) (fun (j : κ i) => t i j))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i : ι), (κ i) -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.MapsTo.{u1, u2} α β f (s i j) (t i j)) -> (Set.MapsTo.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => Set.iUnion.{u1, u4} α (κ i) (fun (j : κ i) => s i j))) (Set.iUnion.{u2, u3} β ι (fun (i : ι) => Set.iUnion.{u2, u4} β (κ i) (fun (j : κ i) => t i j))))
but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u4} α)} {t : forall (i : ι), (κ i) -> (Set.{u3} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.MapsTo.{u4, u3} α β f (s i j) (t i j)) -> (Set.MapsTo.{u4, u3} α β f (Set.unionᵢ.{u4, u2} α ι (fun (i : ι) => Set.unionᵢ.{u4, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.unionᵢ.{u3, u2} β ι (fun (i : ι) => Set.unionᵢ.{u3, u1} β (κ i) (fun (j : κ i) => t i j))))
-Case conversion may be inaccurate. Consider using '#align set.maps_to_Union₂_Union₂ Set.mapsTo_unionᵢ₂_unionᵢ₂ₓ'. -/
+ forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u4} α)} {t : forall (i : ι), (κ i) -> (Set.{u3} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.MapsTo.{u4, u3} α β f (s i j) (t i j)) -> (Set.MapsTo.{u4, u3} α β f (Set.iUnion.{u4, u2} α ι (fun (i : ι) => Set.iUnion.{u4, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.iUnion.{u3, u2} β ι (fun (i : ι) => Set.iUnion.{u3, u1} β (κ i) (fun (j : κ i) => t i j))))
+Case conversion may be inaccurate. Consider using '#align set.maps_to_Union₂_Union₂ Set.mapsTo_iUnion₂_iUnion₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem mapsTo_unionᵢ₂_unionᵢ₂ {s : ∀ i, κ i → Set α} {t : ∀ i, κ i → Set β} {f : α → β}
+theorem mapsTo_iUnion₂_iUnion₂ {s : ∀ i, κ i → Set α} {t : ∀ i, κ i → Set β} {f : α → β}
(H : ∀ i j, MapsTo f (s i j) (t i j)) : MapsTo f (⋃ (i) (j), s i j) (⋃ (i) (j), t i j) :=
- mapsTo_unionᵢ_unionᵢ fun i => mapsTo_unionᵢ_unionᵢ (H i)
-#align set.maps_to_Union₂_Union₂ Set.mapsTo_unionᵢ₂_unionᵢ₂
+ mapsTo_iUnion_iUnion fun i => mapsTo_iUnion_iUnion (H i)
+#align set.maps_to_Union₂_Union₂ Set.mapsTo_iUnion₂_iUnion₂
-/- warning: set.maps_to_sInter -> Set.mapsTo_interₛ is a dubious translation:
+/- warning: set.maps_to_sInter -> Set.mapsTo_sInter is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {T : Set.{u2} (Set.{u2} β)} {f : α -> β}, (forall (t : Set.{u2} β), (Membership.Mem.{u2, u2} (Set.{u2} β) (Set.{u2} (Set.{u2} β)) (Set.hasMem.{u2} (Set.{u2} β)) t T) -> (Set.MapsTo.{u1, u2} α β f s t)) -> (Set.MapsTo.{u1, u2} α β f s (Set.interₛ.{u2} β T))
+ forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {T : Set.{u2} (Set.{u2} β)} {f : α -> β}, (forall (t : Set.{u2} β), (Membership.Mem.{u2, u2} (Set.{u2} β) (Set.{u2} (Set.{u2} β)) (Set.hasMem.{u2} (Set.{u2} β)) t T) -> (Set.MapsTo.{u1, u2} α β f s t)) -> (Set.MapsTo.{u1, u2} α β f s (Set.sInter.{u2} β T))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {T : Set.{u1} (Set.{u1} β)} {f : α -> β}, (forall (t : Set.{u1} β), (Membership.mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.instMembershipSet.{u1} (Set.{u1} β)) t T) -> (Set.MapsTo.{u2, u1} α β f s t)) -> (Set.MapsTo.{u2, u1} α β f s (Set.interₛ.{u1} β T))
-Case conversion may be inaccurate. Consider using '#align set.maps_to_sInter Set.mapsTo_interₛₓ'. -/
-theorem mapsTo_interₛ {s : Set α} {T : Set (Set β)} {f : α → β} (H : ∀ t ∈ T, MapsTo f s t) :
+ forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {T : Set.{u1} (Set.{u1} β)} {f : α -> β}, (forall (t : Set.{u1} β), (Membership.mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.instMembershipSet.{u1} (Set.{u1} β)) t T) -> (Set.MapsTo.{u2, u1} α β f s t)) -> (Set.MapsTo.{u2, u1} α β f s (Set.sInter.{u1} β T))
+Case conversion may be inaccurate. Consider using '#align set.maps_to_sInter Set.mapsTo_sInterₓ'. -/
+theorem mapsTo_sInter {s : Set α} {T : Set (Set β)} {f : α → β} (H : ∀ t ∈ T, MapsTo f s t) :
MapsTo f s (⋂₀ T) := fun x hx t ht => H t ht hx
-#align set.maps_to_sInter Set.mapsTo_interₛ
+#align set.maps_to_sInter Set.mapsTo_sInter
-/- warning: set.maps_to_Inter -> Set.mapsTo_interᵢ is a dubious translation:
+/- warning: set.maps_to_Inter -> Set.mapsTo_iInter is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : Set.{u1} α} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.MapsTo.{u1, u2} α β f s (t i)) -> (Set.MapsTo.{u1, u2} α β f s (Set.interᵢ.{u2, u3} β ι (fun (i : ι) => t i)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : Set.{u1} α} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.MapsTo.{u1, u2} α β f s (t i)) -> (Set.MapsTo.{u1, u2} α β f s (Set.iInter.{u2, u3} β ι (fun (i : ι) => t i)))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : Set.{u3} α} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.MapsTo.{u3, u2} α β f s (t i)) -> (Set.MapsTo.{u3, u2} α β f s (Set.interᵢ.{u2, u1} β ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.maps_to_Inter Set.mapsTo_interᵢₓ'. -/
-theorem mapsTo_interᵢ {s : Set α} {t : ι → Set β} {f : α → β} (H : ∀ i, MapsTo f s (t i)) :
- MapsTo f s (⋂ i, t i) := fun x hx => mem_interᵢ.2 fun i => H i hx
-#align set.maps_to_Inter Set.mapsTo_interᵢ
+ forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : Set.{u3} α} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.MapsTo.{u3, u2} α β f s (t i)) -> (Set.MapsTo.{u3, u2} α β f s (Set.iInter.{u2, u1} β ι (fun (i : ι) => t i)))
+Case conversion may be inaccurate. Consider using '#align set.maps_to_Inter Set.mapsTo_iInterₓ'. -/
+theorem mapsTo_iInter {s : Set α} {t : ι → Set β} {f : α → β} (H : ∀ i, MapsTo f s (t i)) :
+ MapsTo f s (⋂ i, t i) := fun x hx => mem_iInter.2 fun i => H i hx
+#align set.maps_to_Inter Set.mapsTo_iInter
-/- warning: set.maps_to_Inter₂ -> Set.mapsTo_interᵢ₂ is a dubious translation:
+/- warning: set.maps_to_Inter₂ -> Set.mapsTo_iInter₂ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {s : Set.{u1} α} {t : forall (i : ι), (κ i) -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.MapsTo.{u1, u2} α β f s (t i j)) -> (Set.MapsTo.{u1, u2} α β f s (Set.interᵢ.{u2, u3} β ι (fun (i : ι) => Set.interᵢ.{u2, u4} β (κ i) (fun (j : κ i) => t i j))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {s : Set.{u1} α} {t : forall (i : ι), (κ i) -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.MapsTo.{u1, u2} α β f s (t i j)) -> (Set.MapsTo.{u1, u2} α β f s (Set.iInter.{u2, u3} β ι (fun (i : ι) => Set.iInter.{u2, u4} β (κ i) (fun (j : κ i) => t i j))))
but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : Set.{u4} α} {t : forall (i : ι), (κ i) -> (Set.{u3} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.MapsTo.{u4, u3} α β f s (t i j)) -> (Set.MapsTo.{u4, u3} α β f s (Set.interᵢ.{u3, u2} β ι (fun (i : ι) => Set.interᵢ.{u3, u1} β (κ i) (fun (j : κ i) => t i j))))
-Case conversion may be inaccurate. Consider using '#align set.maps_to_Inter₂ Set.mapsTo_interᵢ₂ₓ'. -/
+ forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : Set.{u4} α} {t : forall (i : ι), (κ i) -> (Set.{u3} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.MapsTo.{u4, u3} α β f s (t i j)) -> (Set.MapsTo.{u4, u3} α β f s (Set.iInter.{u3, u2} β ι (fun (i : ι) => Set.iInter.{u3, u1} β (κ i) (fun (j : κ i) => t i j))))
+Case conversion may be inaccurate. Consider using '#align set.maps_to_Inter₂ Set.mapsTo_iInter₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem mapsTo_interᵢ₂ {s : Set α} {t : ∀ i, κ i → Set β} {f : α → β}
+theorem mapsTo_iInter₂ {s : Set α} {t : ∀ i, κ i → Set β} {f : α → β}
(H : ∀ i j, MapsTo f s (t i j)) : MapsTo f s (⋂ (i) (j), t i j) :=
- mapsTo_interᵢ fun i => mapsTo_interᵢ (H i)
-#align set.maps_to_Inter₂ Set.mapsTo_interᵢ₂
+ mapsTo_iInter fun i => mapsTo_iInter (H i)
+#align set.maps_to_Inter₂ Set.mapsTo_iInter₂
-/- warning: set.maps_to_Inter_Inter -> Set.mapsTo_interᵢ_interᵢ is a dubious translation:
+/- warning: set.maps_to_Inter_Inter -> Set.mapsTo_iInter_iInter is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.MapsTo.{u1, u2} α β f (s i) (t i)) -> (Set.MapsTo.{u1, u2} α β f (Set.interᵢ.{u1, u3} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u2, u3} β ι (fun (i : ι) => t i)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.MapsTo.{u1, u2} α β f (s i) (t i)) -> (Set.MapsTo.{u1, u2} α β f (Set.iInter.{u1, u3} α ι (fun (i : ι) => s i)) (Set.iInter.{u2, u3} β ι (fun (i : ι) => t i)))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u3} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.MapsTo.{u3, u2} α β f (s i) (t i)) -> (Set.MapsTo.{u3, u2} α β f (Set.interᵢ.{u3, u1} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u2, u1} β ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.maps_to_Inter_Inter Set.mapsTo_interᵢ_interᵢₓ'. -/
-theorem mapsTo_interᵢ_interᵢ {s : ι → Set α} {t : ι → Set β} {f : α → β}
+ forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u3} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.MapsTo.{u3, u2} α β f (s i) (t i)) -> (Set.MapsTo.{u3, u2} α β f (Set.iInter.{u3, u1} α ι (fun (i : ι) => s i)) (Set.iInter.{u2, u1} β ι (fun (i : ι) => t i)))
+Case conversion may be inaccurate. Consider using '#align set.maps_to_Inter_Inter Set.mapsTo_iInter_iInterₓ'. -/
+theorem mapsTo_iInter_iInter {s : ι → Set α} {t : ι → Set β} {f : α → β}
(H : ∀ i, MapsTo f (s i) (t i)) : MapsTo f (⋂ i, s i) (⋂ i, t i) :=
- mapsTo_interᵢ fun i => (H i).mono (interᵢ_subset s i) (Subset.refl _)
-#align set.maps_to_Inter_Inter Set.mapsTo_interᵢ_interᵢ
+ mapsTo_iInter fun i => (H i).mono (iInter_subset s i) (Subset.refl _)
+#align set.maps_to_Inter_Inter Set.mapsTo_iInter_iInter
-/- warning: set.maps_to_Inter₂_Inter₂ -> Set.mapsTo_interᵢ₂_interᵢ₂ is a dubious translation:
+/- warning: set.maps_to_Inter₂_Inter₂ -> Set.mapsTo_iInter₂_iInter₂ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i : ι), (κ i) -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.MapsTo.{u1, u2} α β f (s i j) (t i j)) -> (Set.MapsTo.{u1, u2} α β f (Set.interᵢ.{u1, u3} α ι (fun (i : ι) => Set.interᵢ.{u1, u4} α (κ i) (fun (j : κ i) => s i j))) (Set.interᵢ.{u2, u3} β ι (fun (i : ι) => Set.interᵢ.{u2, u4} β (κ i) (fun (j : κ i) => t i j))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i : ι), (κ i) -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.MapsTo.{u1, u2} α β f (s i j) (t i j)) -> (Set.MapsTo.{u1, u2} α β f (Set.iInter.{u1, u3} α ι (fun (i : ι) => Set.iInter.{u1, u4} α (κ i) (fun (j : κ i) => s i j))) (Set.iInter.{u2, u3} β ι (fun (i : ι) => Set.iInter.{u2, u4} β (κ i) (fun (j : κ i) => t i j))))
but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u4} α)} {t : forall (i : ι), (κ i) -> (Set.{u3} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.MapsTo.{u4, u3} α β f (s i j) (t i j)) -> (Set.MapsTo.{u4, u3} α β f (Set.interᵢ.{u4, u2} α ι (fun (i : ι) => Set.interᵢ.{u4, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.interᵢ.{u3, u2} β ι (fun (i : ι) => Set.interᵢ.{u3, u1} β (κ i) (fun (j : κ i) => t i j))))
-Case conversion may be inaccurate. Consider using '#align set.maps_to_Inter₂_Inter₂ Set.mapsTo_interᵢ₂_interᵢ₂ₓ'. -/
+ forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u4} α)} {t : forall (i : ι), (κ i) -> (Set.{u3} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.MapsTo.{u4, u3} α β f (s i j) (t i j)) -> (Set.MapsTo.{u4, u3} α β f (Set.iInter.{u4, u2} α ι (fun (i : ι) => Set.iInter.{u4, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.iInter.{u3, u2} β ι (fun (i : ι) => Set.iInter.{u3, u1} β (κ i) (fun (j : κ i) => t i j))))
+Case conversion may be inaccurate. Consider using '#align set.maps_to_Inter₂_Inter₂ Set.mapsTo_iInter₂_iInter₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem mapsTo_interᵢ₂_interᵢ₂ {s : ∀ i, κ i → Set α} {t : ∀ i, κ i → Set β} {f : α → β}
+theorem mapsTo_iInter₂_iInter₂ {s : ∀ i, κ i → Set α} {t : ∀ i, κ i → Set β} {f : α → β}
(H : ∀ i j, MapsTo f (s i j) (t i j)) : MapsTo f (⋂ (i) (j), s i j) (⋂ (i) (j), t i j) :=
- mapsTo_interᵢ_interᵢ fun i => mapsTo_interᵢ_interᵢ (H i)
-#align set.maps_to_Inter₂_Inter₂ Set.mapsTo_interᵢ₂_interᵢ₂
+ mapsTo_iInter_iInter fun i => mapsTo_iInter_iInter (H i)
+#align set.maps_to_Inter₂_Inter₂ Set.mapsTo_iInter₂_iInter₂
-/- warning: set.image_Inter_subset -> Set.image_interᵢ_subset is a dubious translation:
+/- warning: set.image_Inter_subset -> Set.image_iInter_subset is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} (s : ι -> (Set.{u1} α)) (f : α -> β), HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.image.{u1, u2} α β f (Set.interᵢ.{u1, u3} α ι (fun (i : ι) => s i))) (Set.interᵢ.{u2, u3} β ι (fun (i : ι) => Set.image.{u1, u2} α β f (s i)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} (s : ι -> (Set.{u1} α)) (f : α -> β), HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.image.{u1, u2} α β f (Set.iInter.{u1, u3} α ι (fun (i : ι) => s i))) (Set.iInter.{u2, u3} β ι (fun (i : ι) => Set.image.{u1, u2} α β f (s i)))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u3} α)) (f : α -> β), HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (Set.image.{u3, u2} α β f (Set.interᵢ.{u3, u1} α ι (fun (i : ι) => s i))) (Set.interᵢ.{u2, u1} β ι (fun (i : ι) => Set.image.{u3, u2} α β f (s i)))
-Case conversion may be inaccurate. Consider using '#align set.image_Inter_subset Set.image_interᵢ_subsetₓ'. -/
-theorem image_interᵢ_subset (s : ι → Set α) (f : α → β) : (f '' ⋂ i, s i) ⊆ ⋂ i, f '' s i :=
- (mapsTo_interᵢ_interᵢ fun i => mapsTo_image f (s i)).image_subset
-#align set.image_Inter_subset Set.image_interᵢ_subset
+ forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} (s : ι -> (Set.{u3} α)) (f : α -> β), HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (Set.image.{u3, u2} α β f (Set.iInter.{u3, u1} α ι (fun (i : ι) => s i))) (Set.iInter.{u2, u1} β ι (fun (i : ι) => Set.image.{u3, u2} α β f (s i)))
+Case conversion may be inaccurate. Consider using '#align set.image_Inter_subset Set.image_iInter_subsetₓ'. -/
+theorem image_iInter_subset (s : ι → Set α) (f : α → β) : (f '' ⋂ i, s i) ⊆ ⋂ i, f '' s i :=
+ (mapsTo_iInter_iInter fun i => mapsTo_image f (s i)).image_subset
+#align set.image_Inter_subset Set.image_iInter_subset
-/- warning: set.image_Inter₂_subset -> Set.image_interᵢ₂_subset is a dubious translation:
+/- warning: set.image_Inter₂_subset -> Set.image_iInter₂_subset is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} (s : forall (i : ι), (κ i) -> (Set.{u1} α)) (f : α -> β), HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.image.{u1, u2} α β f (Set.interᵢ.{u1, u3} α ι (fun (i : ι) => Set.interᵢ.{u1, u4} α (κ i) (fun (j : κ i) => s i j)))) (Set.interᵢ.{u2, u3} β ι (fun (i : ι) => Set.interᵢ.{u2, u4} β (κ i) (fun (j : κ i) => Set.image.{u1, u2} α β f (s i j))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} (s : forall (i : ι), (κ i) -> (Set.{u1} α)) (f : α -> β), HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.image.{u1, u2} α β f (Set.iInter.{u1, u3} α ι (fun (i : ι) => Set.iInter.{u1, u4} α (κ i) (fun (j : κ i) => s i j)))) (Set.iInter.{u2, u3} β ι (fun (i : ι) => Set.iInter.{u2, u4} β (κ i) (fun (j : κ i) => Set.image.{u1, u2} α β f (s i j))))
but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : forall (i : ι), (κ i) -> (Set.{u4} α)) (f : α -> β), HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (Set.image.{u4, u3} α β f (Set.interᵢ.{u4, u2} α ι (fun (i : ι) => Set.interᵢ.{u4, u1} α (κ i) (fun (j : κ i) => s i j)))) (Set.interᵢ.{u3, u2} β ι (fun (i : ι) => Set.interᵢ.{u3, u1} β (κ i) (fun (j : κ i) => Set.image.{u4, u3} α β f (s i j))))
-Case conversion may be inaccurate. Consider using '#align set.image_Inter₂_subset Set.image_interᵢ₂_subsetₓ'. -/
+ forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (s : forall (i : ι), (κ i) -> (Set.{u4} α)) (f : α -> β), HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (Set.image.{u4, u3} α β f (Set.iInter.{u4, u2} α ι (fun (i : ι) => Set.iInter.{u4, u1} α (κ i) (fun (j : κ i) => s i j)))) (Set.iInter.{u3, u2} β ι (fun (i : ι) => Set.iInter.{u3, u1} β (κ i) (fun (j : κ i) => Set.image.{u4, u3} α β f (s i j))))
+Case conversion may be inaccurate. Consider using '#align set.image_Inter₂_subset Set.image_iInter₂_subsetₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem image_interᵢ₂_subset (s : ∀ i, κ i → Set α) (f : α → β) :
+theorem image_iInter₂_subset (s : ∀ i, κ i → Set α) (f : α → β) :
(f '' ⋂ (i) (j), s i j) ⊆ ⋂ (i) (j), f '' s i j :=
- (mapsTo_interᵢ₂_interᵢ₂ fun i hi => mapsTo_image f (s i hi)).image_subset
-#align set.image_Inter₂_subset Set.image_interᵢ₂_subset
+ (mapsTo_iInter₂_iInter₂ fun i hi => mapsTo_image f (s i hi)).image_subset
+#align set.image_Inter₂_subset Set.image_iInter₂_subset
-/- warning: set.image_sInter_subset -> Set.image_interₛ_subset is a dubious translation:
+/- warning: set.image_sInter_subset -> Set.image_sInter_subset is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (S : Set.{u1} (Set.{u1} α)) (f : α -> β), HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.image.{u1, u2} α β f (Set.interₛ.{u1} α S)) (Set.interᵢ.{u2, succ u1} β (Set.{u1} α) (fun (s : Set.{u1} α) => Set.interᵢ.{u2, 0} β (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s S) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s S) => Set.image.{u1, u2} α β f s)))
+ forall {α : Type.{u1}} {β : Type.{u2}} (S : Set.{u1} (Set.{u1} α)) (f : α -> β), HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (Set.image.{u1, u2} α β f (Set.sInter.{u1} α S)) (Set.iInter.{u2, succ u1} β (Set.{u1} α) (fun (s : Set.{u1} α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s S) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s S) => Set.image.{u1, u2} α β f s)))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (S : Set.{u2} (Set.{u2} α)) (f : α -> β), HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (Set.image.{u2, u1} α β f (Set.interₛ.{u2} α S)) (Set.interᵢ.{u1, succ u2} β (Set.{u2} α) (fun (s : Set.{u2} α) => Set.interᵢ.{u1, 0} β (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) s S) (fun (H : Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) s S) => Set.image.{u2, u1} α β f s)))
-Case conversion may be inaccurate. Consider using '#align set.image_sInter_subset Set.image_interₛ_subsetₓ'. -/
-theorem image_interₛ_subset (S : Set (Set α)) (f : α → β) : f '' ⋂₀ S ⊆ ⋂ s ∈ S, f '' s :=
+ forall {α : Type.{u2}} {β : Type.{u1}} (S : Set.{u2} (Set.{u2} α)) (f : α -> β), HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (Set.image.{u2, u1} α β f (Set.sInter.{u2} α S)) (Set.iInter.{u1, succ u2} β (Set.{u2} α) (fun (s : Set.{u2} α) => Set.iInter.{u1, 0} β (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) s S) (fun (H : Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) s S) => Set.image.{u2, u1} α β f s)))
+Case conversion may be inaccurate. Consider using '#align set.image_sInter_subset Set.image_sInter_subsetₓ'. -/
+theorem image_sInter_subset (S : Set (Set α)) (f : α → β) : f '' ⋂₀ S ⊆ ⋂ s ∈ S, f '' s :=
by
rw [sInter_eq_bInter]
apply image_Inter₂_subset
-#align set.image_sInter_subset Set.image_interₛ_subset
+#align set.image_sInter_subset Set.image_sInter_subset
/-! ### `restrict_preimage` -/
@@ -2799,70 +2799,70 @@ section
open Function
-variable (s : Set β) {f : α → β} {U : ι → Set β} (hU : unionᵢ U = univ)
+variable (s : Set β) {f : α → β} {U : ι → Set β} (hU : iUnion U = univ)
include hU
-/- warning: set.injective_iff_injective_of_Union_eq_univ -> Set.injective_iff_injective_of_unionᵢ_eq_univ is a dubious translation:
+/- warning: set.injective_iff_injective_of_Union_eq_univ -> Set.injective_iff_injective_of_iUnion_eq_univ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : α -> β} {U : ι -> (Set.{u2} β)}, (Eq.{succ u2} (Set.{u2} β) (Set.unionᵢ.{u2, u3} β ι U) (Set.univ.{u2} β)) -> (Iff (Function.Injective.{succ u1, succ u2} α β f) (forall (i : ι), Function.Injective.{succ u1, succ u2} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) (Set.preimage.{u1, u2} α β f (U i))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (U i)) (Set.restrictPreimage.{u1, u2} α β (U i) f)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : α -> β} {U : ι -> (Set.{u2} β)}, (Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, u3} β ι U) (Set.univ.{u2} β)) -> (Iff (Function.Injective.{succ u1, succ u2} α β f) (forall (i : ι), Function.Injective.{succ u1, succ u2} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) (Set.preimage.{u1, u2} α β f (U i))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (U i)) (Set.restrictPreimage.{u1, u2} α β (U i) f)))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} {f : α -> β} {U : ι -> (Set.{u1} β)}, (Eq.{succ u1} (Set.{u1} β) (Set.unionᵢ.{u1, u3} β ι U) (Set.univ.{u1} β)) -> (Iff (Function.Injective.{succ u2, succ u1} α β f) (forall (i : ι), Function.Injective.{succ u2, succ u1} (Set.Elem.{u2} α (Set.preimage.{u2, u1} α β f (U i))) (Set.Elem.{u1} β (U i)) (Set.restrictPreimage.{u2, u1} α β (U i) f)))
-Case conversion may be inaccurate. Consider using '#align set.injective_iff_injective_of_Union_eq_univ Set.injective_iff_injective_of_unionᵢ_eq_univₓ'. -/
-theorem injective_iff_injective_of_unionᵢ_eq_univ :
+ forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} {f : α -> β} {U : ι -> (Set.{u1} β)}, (Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, u3} β ι U) (Set.univ.{u1} β)) -> (Iff (Function.Injective.{succ u2, succ u1} α β f) (forall (i : ι), Function.Injective.{succ u2, succ u1} (Set.Elem.{u2} α (Set.preimage.{u2, u1} α β f (U i))) (Set.Elem.{u1} β (U i)) (Set.restrictPreimage.{u2, u1} α β (U i) f)))
+Case conversion may be inaccurate. Consider using '#align set.injective_iff_injective_of_Union_eq_univ Set.injective_iff_injective_of_iUnion_eq_univₓ'. -/
+theorem injective_iff_injective_of_iUnion_eq_univ :
Injective f ↔ ∀ i, Injective ((U i).restrictPreimage f) :=
by
refine' ⟨fun H i => (U i).restrictPreimage_injective H, fun H x y e => _⟩
obtain ⟨i, hi⟩ :=
set.mem_Union.mp
- (show f x ∈ Set.unionᵢ U by
+ (show f x ∈ Set.iUnion U by
rw [hU]
triv)
injection @H i ⟨x, hi⟩ ⟨y, show f y ∈ U i from e ▸ hi⟩ (Subtype.ext e)
-#align set.injective_iff_injective_of_Union_eq_univ Set.injective_iff_injective_of_unionᵢ_eq_univ
+#align set.injective_iff_injective_of_Union_eq_univ Set.injective_iff_injective_of_iUnion_eq_univ
-/- warning: set.surjective_iff_surjective_of_Union_eq_univ -> Set.surjective_iff_surjective_of_unionᵢ_eq_univ is a dubious translation:
+/- warning: set.surjective_iff_surjective_of_Union_eq_univ -> Set.surjective_iff_surjective_of_iUnion_eq_univ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : α -> β} {U : ι -> (Set.{u2} β)}, (Eq.{succ u2} (Set.{u2} β) (Set.unionᵢ.{u2, u3} β ι U) (Set.univ.{u2} β)) -> (Iff (Function.Surjective.{succ u1, succ u2} α β f) (forall (i : ι), Function.Surjective.{succ u1, succ u2} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) (Set.preimage.{u1, u2} α β f (U i))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (U i)) (Set.restrictPreimage.{u1, u2} α β (U i) f)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : α -> β} {U : ι -> (Set.{u2} β)}, (Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, u3} β ι U) (Set.univ.{u2} β)) -> (Iff (Function.Surjective.{succ u1, succ u2} α β f) (forall (i : ι), Function.Surjective.{succ u1, succ u2} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) (Set.preimage.{u1, u2} α β f (U i))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (U i)) (Set.restrictPreimage.{u1, u2} α β (U i) f)))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} {f : α -> β} {U : ι -> (Set.{u1} β)}, (Eq.{succ u1} (Set.{u1} β) (Set.unionᵢ.{u1, u3} β ι U) (Set.univ.{u1} β)) -> (Iff (Function.Surjective.{succ u2, succ u1} α β f) (forall (i : ι), Function.Surjective.{succ u2, succ u1} (Set.Elem.{u2} α (Set.preimage.{u2, u1} α β f (U i))) (Set.Elem.{u1} β (U i)) (Set.restrictPreimage.{u2, u1} α β (U i) f)))
-Case conversion may be inaccurate. Consider using '#align set.surjective_iff_surjective_of_Union_eq_univ Set.surjective_iff_surjective_of_unionᵢ_eq_univₓ'. -/
-theorem surjective_iff_surjective_of_unionᵢ_eq_univ :
+ forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} {f : α -> β} {U : ι -> (Set.{u1} β)}, (Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, u3} β ι U) (Set.univ.{u1} β)) -> (Iff (Function.Surjective.{succ u2, succ u1} α β f) (forall (i : ι), Function.Surjective.{succ u2, succ u1} (Set.Elem.{u2} α (Set.preimage.{u2, u1} α β f (U i))) (Set.Elem.{u1} β (U i)) (Set.restrictPreimage.{u2, u1} α β (U i) f)))
+Case conversion may be inaccurate. Consider using '#align set.surjective_iff_surjective_of_Union_eq_univ Set.surjective_iff_surjective_of_iUnion_eq_univₓ'. -/
+theorem surjective_iff_surjective_of_iUnion_eq_univ :
Surjective f ↔ ∀ i, Surjective ((U i).restrictPreimage f) :=
by
refine' ⟨fun H i => (U i).restrictPreimage_surjective H, fun H x => _⟩
obtain ⟨i, hi⟩ :=
set.mem_Union.mp
- (show x ∈ Set.unionᵢ U by
+ (show x ∈ Set.iUnion U by
rw [hU]
triv)
exact ⟨_, congr_arg Subtype.val (H i ⟨x, hi⟩).choose_spec⟩
-#align set.surjective_iff_surjective_of_Union_eq_univ Set.surjective_iff_surjective_of_unionᵢ_eq_univ
+#align set.surjective_iff_surjective_of_Union_eq_univ Set.surjective_iff_surjective_of_iUnion_eq_univ
-/- warning: set.bijective_iff_bijective_of_Union_eq_univ -> Set.bijective_iff_bijective_of_unionᵢ_eq_univ is a dubious translation:
+/- warning: set.bijective_iff_bijective_of_Union_eq_univ -> Set.bijective_iff_bijective_of_iUnion_eq_univ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : α -> β} {U : ι -> (Set.{u2} β)}, (Eq.{succ u2} (Set.{u2} β) (Set.unionᵢ.{u2, u3} β ι U) (Set.univ.{u2} β)) -> (Iff (Function.Bijective.{succ u1, succ u2} α β f) (forall (i : ι), Function.Bijective.{succ u1, succ u2} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) (Set.preimage.{u1, u2} α β f (U i))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (U i)) (Set.restrictPreimage.{u1, u2} α β (U i) f)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : α -> β} {U : ι -> (Set.{u2} β)}, (Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, u3} β ι U) (Set.univ.{u2} β)) -> (Iff (Function.Bijective.{succ u1, succ u2} α β f) (forall (i : ι), Function.Bijective.{succ u1, succ u2} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) (Set.preimage.{u1, u2} α β f (U i))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (U i)) (Set.restrictPreimage.{u1, u2} α β (U i) f)))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} {f : α -> β} {U : ι -> (Set.{u1} β)}, (Eq.{succ u1} (Set.{u1} β) (Set.unionᵢ.{u1, u3} β ι U) (Set.univ.{u1} β)) -> (Iff (Function.Bijective.{succ u2, succ u1} α β f) (forall (i : ι), Function.Bijective.{succ u2, succ u1} (Set.Elem.{u2} α (Set.preimage.{u2, u1} α β f (U i))) (Set.Elem.{u1} β (U i)) (Set.restrictPreimage.{u2, u1} α β (U i) f)))
-Case conversion may be inaccurate. Consider using '#align set.bijective_iff_bijective_of_Union_eq_univ Set.bijective_iff_bijective_of_unionᵢ_eq_univₓ'. -/
-theorem bijective_iff_bijective_of_unionᵢ_eq_univ :
+ forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} {f : α -> β} {U : ι -> (Set.{u1} β)}, (Eq.{succ u1} (Set.{u1} β) (Set.iUnion.{u1, u3} β ι U) (Set.univ.{u1} β)) -> (Iff (Function.Bijective.{succ u2, succ u1} α β f) (forall (i : ι), Function.Bijective.{succ u2, succ u1} (Set.Elem.{u2} α (Set.preimage.{u2, u1} α β f (U i))) (Set.Elem.{u1} β (U i)) (Set.restrictPreimage.{u2, u1} α β (U i) f)))
+Case conversion may be inaccurate. Consider using '#align set.bijective_iff_bijective_of_Union_eq_univ Set.bijective_iff_bijective_of_iUnion_eq_univₓ'. -/
+theorem bijective_iff_bijective_of_iUnion_eq_univ :
Bijective f ↔ ∀ i, Bijective ((U i).restrictPreimage f) := by
simp_rw [bijective, forall_and, injective_iff_injective_of_Union_eq_univ hU,
surjective_iff_surjective_of_Union_eq_univ hU]
-#align set.bijective_iff_bijective_of_Union_eq_univ Set.bijective_iff_bijective_of_unionᵢ_eq_univ
+#align set.bijective_iff_bijective_of_Union_eq_univ Set.bijective_iff_bijective_of_iUnion_eq_univ
end
/-! ### `inj_on` -/
-/- warning: set.inj_on.image_Inter_eq -> Set.InjOn.image_interᵢ_eq is a dubious translation:
+/- warning: set.inj_on.image_Inter_eq -> Set.InjOn.image_iInter_eq is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} [_inst_1 : Nonempty.{u3} ι] {s : ι -> (Set.{u1} α)} {f : α -> β}, (Set.InjOn.{u1, u2} α β f (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => s i))) -> (Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β f (Set.interᵢ.{u1, u3} α ι (fun (i : ι) => s i))) (Set.interᵢ.{u2, u3} β ι (fun (i : ι) => Set.image.{u1, u2} α β f (s i))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} [_inst_1 : Nonempty.{u3} ι] {s : ι -> (Set.{u1} α)} {f : α -> β}, (Set.InjOn.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) -> (Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β f (Set.iInter.{u1, u3} α ι (fun (i : ι) => s i))) (Set.iInter.{u2, u3} β ι (fun (i : ι) => Set.image.{u1, u2} α β f (s i))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} [_inst_1 : Nonempty.{u3} ι] {s : ι -> (Set.{u2} α)} {f : α -> β}, (Set.InjOn.{u2, u1} α β f (Set.unionᵢ.{u2, u3} α ι (fun (i : ι) => s i))) -> (Eq.{succ u1} (Set.{u1} β) (Set.image.{u2, u1} α β f (Set.interᵢ.{u2, u3} α ι (fun (i : ι) => s i))) (Set.interᵢ.{u1, u3} β ι (fun (i : ι) => Set.image.{u2, u1} α β f (s i))))
-Case conversion may be inaccurate. Consider using '#align set.inj_on.image_Inter_eq Set.InjOn.image_interᵢ_eqₓ'. -/
-theorem InjOn.image_interᵢ_eq [Nonempty ι] {s : ι → Set α} {f : α → β} (h : InjOn f (⋃ i, s i)) :
+ forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} [_inst_1 : Nonempty.{u3} ι] {s : ι -> (Set.{u2} α)} {f : α -> β}, (Set.InjOn.{u2, u1} α β f (Set.iUnion.{u2, u3} α ι (fun (i : ι) => s i))) -> (Eq.{succ u1} (Set.{u1} β) (Set.image.{u2, u1} α β f (Set.iInter.{u2, u3} α ι (fun (i : ι) => s i))) (Set.iInter.{u1, u3} β ι (fun (i : ι) => Set.image.{u2, u1} α β f (s i))))
+Case conversion may be inaccurate. Consider using '#align set.inj_on.image_Inter_eq Set.InjOn.image_iInter_eqₓ'. -/
+theorem InjOn.image_iInter_eq [Nonempty ι] {s : ι → Set α} {f : α → β} (h : InjOn f (⋃ i, s i)) :
(f '' ⋂ i, s i) = ⋂ i, f '' s i := by
inhabit ι
refine' subset.antisymm (image_Inter_subset s f) fun y hy => _
@@ -2875,60 +2875,60 @@ theorem InjOn.image_interᵢ_eq [Nonempty ι] {s : ι → Set α} {f : α → β
replace hx : ∀ i, x i ∈ ⋃ j, s j := fun i => (subset_Union _ _) (hx i)
apply h (hx _) (hx _)
simp only [hy]
-#align set.inj_on.image_Inter_eq Set.InjOn.image_interᵢ_eq
+#align set.inj_on.image_Inter_eq Set.InjOn.image_iInter_eq
-/- warning: set.inj_on.image_bInter_eq -> Set.InjOn.image_binterᵢ_eq is a dubious translation:
+/- warning: set.inj_on.image_bInter_eq -> Set.InjOn.image_biInter_eq is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {p : ι -> Prop} {s : forall (i : ι), (p i) -> (Set.{u1} α)}, (Exists.{u3} ι (fun (i : ι) => p i)) -> (forall {f : α -> β}, (Set.InjOn.{u1, u2} α β f (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => Set.unionᵢ.{u1, 0} α (p i) (fun (hi : p i) => s i hi)))) -> (Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β f (Set.interᵢ.{u1, u3} α ι (fun (i : ι) => Set.interᵢ.{u1, 0} α (p i) (fun (hi : p i) => s i hi)))) (Set.interᵢ.{u2, u3} β ι (fun (i : ι) => Set.interᵢ.{u2, 0} β (p i) (fun (hi : p i) => Set.image.{u1, u2} α β f (s i hi))))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {p : ι -> Prop} {s : forall (i : ι), (p i) -> (Set.{u1} α)}, (Exists.{u3} ι (fun (i : ι) => p i)) -> (forall {f : α -> β}, (Set.InjOn.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => Set.iUnion.{u1, 0} α (p i) (fun (hi : p i) => s i hi)))) -> (Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β f (Set.iInter.{u1, u3} α ι (fun (i : ι) => Set.iInter.{u1, 0} α (p i) (fun (hi : p i) => s i hi)))) (Set.iInter.{u2, u3} β ι (fun (i : ι) => Set.iInter.{u2, 0} β (p i) (fun (hi : p i) => Set.image.{u1, u2} α β f (s i hi))))))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u1}} {ι : Sort.{u2}} {p : ι -> Prop} {s : forall (i : ι), (p i) -> (Set.{u3} α)}, (Exists.{u2} ι (fun (i : ι) => p i)) -> (forall {f : α -> β}, (Set.InjOn.{u3, u1} α β f (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => Set.unionᵢ.{u3, 0} α (p i) (fun (hi : p i) => s i hi)))) -> (Eq.{succ u1} (Set.{u1} β) (Set.image.{u3, u1} α β f (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, 0} α (p i) (fun (hi : p i) => s i hi)))) (Set.interᵢ.{u1, u2} β ι (fun (i : ι) => Set.interᵢ.{u1, 0} β (p i) (fun (hi : p i) => Set.image.{u3, u1} α β f (s i hi))))))
-Case conversion may be inaccurate. Consider using '#align set.inj_on.image_bInter_eq Set.InjOn.image_binterᵢ_eqₓ'. -/
+ forall {α : Type.{u3}} {β : Type.{u1}} {ι : Sort.{u2}} {p : ι -> Prop} {s : forall (i : ι), (p i) -> (Set.{u3} α)}, (Exists.{u2} ι (fun (i : ι) => p i)) -> (forall {f : α -> β}, (Set.InjOn.{u3, u1} α β f (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, 0} α (p i) (fun (hi : p i) => s i hi)))) -> (Eq.{succ u1} (Set.{u1} β) (Set.image.{u3, u1} α β f (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, 0} α (p i) (fun (hi : p i) => s i hi)))) (Set.iInter.{u1, u2} β ι (fun (i : ι) => Set.iInter.{u1, 0} β (p i) (fun (hi : p i) => Set.image.{u3, u1} α β f (s i hi))))))
+Case conversion may be inaccurate. Consider using '#align set.inj_on.image_bInter_eq Set.InjOn.image_biInter_eqₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i hi) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i hi) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i hi) -/
-theorem InjOn.image_binterᵢ_eq {p : ι → Prop} {s : ∀ (i) (hi : p i), Set α} (hp : ∃ i, p i)
+theorem InjOn.image_biInter_eq {p : ι → Prop} {s : ∀ (i) (hi : p i), Set α} (hp : ∃ i, p i)
{f : α → β} (h : InjOn f (⋃ (i) (hi), s i hi)) :
(f '' ⋂ (i) (hi), s i hi) = ⋂ (i) (hi), f '' s i hi :=
by
- simp only [Inter, infᵢ_subtype']
+ simp only [Inter, iInf_subtype']
haveI : Nonempty { i // p i } := nonempty_subtype.2 hp
apply inj_on.image_Inter_eq
- simpa only [Union, supᵢ_subtype'] using h
-#align set.inj_on.image_bInter_eq Set.InjOn.image_binterᵢ_eq
+ simpa only [Union, iSup_subtype'] using h
+#align set.inj_on.image_bInter_eq Set.InjOn.image_biInter_eq
-/- warning: set.image_Inter -> Set.image_interᵢ is a dubious translation:
+/- warning: set.image_Inter -> Set.image_iInter is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : α -> β}, (Function.Bijective.{succ u1, succ u2} α β f) -> (forall (s : ι -> (Set.{u1} α)), Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β f (Set.interᵢ.{u1, u3} α ι (fun (i : ι) => s i))) (Set.interᵢ.{u2, u3} β ι (fun (i : ι) => Set.image.{u1, u2} α β f (s i))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : α -> β}, (Function.Bijective.{succ u1, succ u2} α β f) -> (forall (s : ι -> (Set.{u1} α)), Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β f (Set.iInter.{u1, u3} α ι (fun (i : ι) => s i))) (Set.iInter.{u2, u3} β ι (fun (i : ι) => Set.image.{u1, u2} α β f (s i))))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {f : α -> β}, (Function.Bijective.{succ u3, succ u2} α β f) -> (forall (s : ι -> (Set.{u3} α)), Eq.{succ u2} (Set.{u2} β) (Set.image.{u3, u2} α β f (Set.interᵢ.{u3, u1} α ι (fun (i : ι) => s i))) (Set.interᵢ.{u2, u1} β ι (fun (i : ι) => Set.image.{u3, u2} α β f (s i))))
-Case conversion may be inaccurate. Consider using '#align set.image_Inter Set.image_interᵢₓ'. -/
-theorem image_interᵢ {f : α → β} (hf : Bijective f) (s : ι → Set α) :
+ forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {f : α -> β}, (Function.Bijective.{succ u3, succ u2} α β f) -> (forall (s : ι -> (Set.{u3} α)), Eq.{succ u2} (Set.{u2} β) (Set.image.{u3, u2} α β f (Set.iInter.{u3, u1} α ι (fun (i : ι) => s i))) (Set.iInter.{u2, u1} β ι (fun (i : ι) => Set.image.{u3, u2} α β f (s i))))
+Case conversion may be inaccurate. Consider using '#align set.image_Inter Set.image_iInterₓ'. -/
+theorem image_iInter {f : α → β} (hf : Bijective f) (s : ι → Set α) :
(f '' ⋂ i, s i) = ⋂ i, f '' s i :=
by
cases isEmpty_or_nonempty ι
· simp_rw [Inter_of_empty, image_univ_of_surjective hf.surjective]
- · exact (hf.injective.inj_on _).image_interᵢ_eq
-#align set.image_Inter Set.image_interᵢ
+ · exact (hf.injective.inj_on _).image_iInter_eq
+#align set.image_Inter Set.image_iInter
-/- warning: set.image_Inter₂ -> Set.image_interᵢ₂ is a dubious translation:
+/- warning: set.image_Inter₂ -> Set.image_iInter₂ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {f : α -> β}, (Function.Bijective.{succ u1, succ u2} α β f) -> (forall (s : forall (i : ι), (κ i) -> (Set.{u1} α)), Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β f (Set.interᵢ.{u1, u3} α ι (fun (i : ι) => Set.interᵢ.{u1, u4} α (κ i) (fun (j : κ i) => s i j)))) (Set.interᵢ.{u2, u3} β ι (fun (i : ι) => Set.interᵢ.{u2, u4} β (κ i) (fun (j : κ i) => Set.image.{u1, u2} α β f (s i j)))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {f : α -> β}, (Function.Bijective.{succ u1, succ u2} α β f) -> (forall (s : forall (i : ι), (κ i) -> (Set.{u1} α)), Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β f (Set.iInter.{u1, u3} α ι (fun (i : ι) => Set.iInter.{u1, u4} α (κ i) (fun (j : κ i) => s i j)))) (Set.iInter.{u2, u3} β ι (fun (i : ι) => Set.iInter.{u2, u4} β (κ i) (fun (j : κ i) => Set.image.{u1, u2} α β f (s i j)))))
but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {f : α -> β}, (Function.Bijective.{succ u4, succ u3} α β f) -> (forall (s : forall (i : ι), (κ i) -> (Set.{u4} α)), Eq.{succ u3} (Set.{u3} β) (Set.image.{u4, u3} α β f (Set.interᵢ.{u4, u2} α ι (fun (i : ι) => Set.interᵢ.{u4, u1} α (κ i) (fun (j : κ i) => s i j)))) (Set.interᵢ.{u3, u2} β ι (fun (i : ι) => Set.interᵢ.{u3, u1} β (κ i) (fun (j : κ i) => Set.image.{u4, u3} α β f (s i j)))))
-Case conversion may be inaccurate. Consider using '#align set.image_Inter₂ Set.image_interᵢ₂ₓ'. -/
+ forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {f : α -> β}, (Function.Bijective.{succ u4, succ u3} α β f) -> (forall (s : forall (i : ι), (κ i) -> (Set.{u4} α)), Eq.{succ u3} (Set.{u3} β) (Set.image.{u4, u3} α β f (Set.iInter.{u4, u2} α ι (fun (i : ι) => Set.iInter.{u4, u1} α (κ i) (fun (j : κ i) => s i j)))) (Set.iInter.{u3, u2} β ι (fun (i : ι) => Set.iInter.{u3, u1} β (κ i) (fun (j : κ i) => Set.image.{u4, u3} α β f (s i j)))))
+Case conversion may be inaccurate. Consider using '#align set.image_Inter₂ Set.image_iInter₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem image_interᵢ₂ {f : α → β} (hf : Bijective f) (s : ∀ i, κ i → Set α) :
+theorem image_iInter₂ {f : α → β} (hf : Bijective f) (s : ∀ i, κ i → Set α) :
(f '' ⋂ (i) (j), s i j) = ⋂ (i) (j), f '' s i j := by simp_rw [image_Inter hf]
-#align set.image_Inter₂ Set.image_interᵢ₂
+#align set.image_Inter₂ Set.image_iInter₂
-/- warning: set.inj_on_Union_of_directed -> Set.inj_on_unionᵢ_of_directed is a dubious translation:
+/- warning: set.inj_on_Union_of_directed -> Set.inj_on_iUnion_of_directed is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)}, (Directed.{u1, u3} (Set.{u1} α) ι (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α)) s) -> (forall {f : α -> β}, (forall (i : ι), Set.InjOn.{u1, u2} α β f (s i)) -> (Set.InjOn.{u1, u2} α β f (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => s i))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)}, (Directed.{u1, u3} (Set.{u1} α) ι (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α)) s) -> (forall {f : α -> β}, (forall (i : ι), Set.InjOn.{u1, u2} α β f (s i)) -> (Set.InjOn.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u3} α)}, (Directed.{u3, u2} (Set.{u3} α) ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.23851 : Set.{u3} α) (x._@.Mathlib.Data.Set.Lattice._hyg.23853 : Set.{u3} α) => HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) x._@.Mathlib.Data.Set.Lattice._hyg.23851 x._@.Mathlib.Data.Set.Lattice._hyg.23853) s) -> (forall {f : α -> β}, (forall (i : ι), Set.InjOn.{u3, u1} α β f (s i)) -> (Set.InjOn.{u3, u1} α β f (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => s i))))
-Case conversion may be inaccurate. Consider using '#align set.inj_on_Union_of_directed Set.inj_on_unionᵢ_of_directedₓ'. -/
-theorem inj_on_unionᵢ_of_directed {s : ι → Set α} (hs : Directed (· ⊆ ·) s) {f : α → β}
+ forall {α : Type.{u3}} {β : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u3} α)}, (Directed.{u3, u2} (Set.{u3} α) ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.23851 : Set.{u3} α) (x._@.Mathlib.Data.Set.Lattice._hyg.23853 : Set.{u3} α) => HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) x._@.Mathlib.Data.Set.Lattice._hyg.23851 x._@.Mathlib.Data.Set.Lattice._hyg.23853) s) -> (forall {f : α -> β}, (forall (i : ι), Set.InjOn.{u3, u1} α β f (s i)) -> (Set.InjOn.{u3, u1} α β f (Set.iUnion.{u3, u2} α ι (fun (i : ι) => s i))))
+Case conversion may be inaccurate. Consider using '#align set.inj_on_Union_of_directed Set.inj_on_iUnion_of_directedₓ'. -/
+theorem inj_on_iUnion_of_directed {s : ι → Set α} (hs : Directed (· ⊆ ·) s) {f : α → β}
(hf : ∀ i, InjOn f (s i)) : InjOn f (⋃ i, s i) :=
by
intro x hx y hy hxy
@@ -2936,141 +2936,141 @@ theorem inj_on_unionᵢ_of_directed {s : ι → Set α} (hs : Directed (· ⊆
rcases mem_Union.1 hy with ⟨j, hy⟩
rcases hs i j with ⟨k, hi, hj⟩
exact hf k (hi hx) (hj hy) hxy
-#align set.inj_on_Union_of_directed Set.inj_on_unionᵢ_of_directed
+#align set.inj_on_Union_of_directed Set.inj_on_iUnion_of_directed
/-! ### `surj_on` -/
-/- warning: set.surj_on_sUnion -> Set.surjOn_unionₛ is a dubious translation:
+/- warning: set.surj_on_sUnion -> Set.surjOn_sUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {T : Set.{u2} (Set.{u2} β)} {f : α -> β}, (forall (t : Set.{u2} β), (Membership.Mem.{u2, u2} (Set.{u2} β) (Set.{u2} (Set.{u2} β)) (Set.hasMem.{u2} (Set.{u2} β)) t T) -> (Set.SurjOn.{u1, u2} α β f s t)) -> (Set.SurjOn.{u1, u2} α β f s (Set.unionₛ.{u2} β T))
+ forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {T : Set.{u2} (Set.{u2} β)} {f : α -> β}, (forall (t : Set.{u2} β), (Membership.Mem.{u2, u2} (Set.{u2} β) (Set.{u2} (Set.{u2} β)) (Set.hasMem.{u2} (Set.{u2} β)) t T) -> (Set.SurjOn.{u1, u2} α β f s t)) -> (Set.SurjOn.{u1, u2} α β f s (Set.sUnion.{u2} β T))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {T : Set.{u1} (Set.{u1} β)} {f : α -> β}, (forall (t : Set.{u1} β), (Membership.mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.instMembershipSet.{u1} (Set.{u1} β)) t T) -> (Set.SurjOn.{u2, u1} α β f s t)) -> (Set.SurjOn.{u2, u1} α β f s (Set.unionₛ.{u1} β T))
-Case conversion may be inaccurate. Consider using '#align set.surj_on_sUnion Set.surjOn_unionₛₓ'. -/
-theorem surjOn_unionₛ {s : Set α} {T : Set (Set β)} {f : α → β} (H : ∀ t ∈ T, SurjOn f s t) :
+ forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {T : Set.{u1} (Set.{u1} β)} {f : α -> β}, (forall (t : Set.{u1} β), (Membership.mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.instMembershipSet.{u1} (Set.{u1} β)) t T) -> (Set.SurjOn.{u2, u1} α β f s t)) -> (Set.SurjOn.{u2, u1} α β f s (Set.sUnion.{u1} β T))
+Case conversion may be inaccurate. Consider using '#align set.surj_on_sUnion Set.surjOn_sUnionₓ'. -/
+theorem surjOn_sUnion {s : Set α} {T : Set (Set β)} {f : α → β} (H : ∀ t ∈ T, SurjOn f s t) :
SurjOn f s (⋃₀ T) := fun x ⟨t, ht, hx⟩ => H t ht hx
-#align set.surj_on_sUnion Set.surjOn_unionₛ
+#align set.surj_on_sUnion Set.surjOn_sUnion
-/- warning: set.surj_on_Union -> Set.surjOn_unionᵢ is a dubious translation:
+/- warning: set.surj_on_Union -> Set.surjOn_iUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : Set.{u1} α} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.SurjOn.{u1, u2} α β f s (t i)) -> (Set.SurjOn.{u1, u2} α β f s (Set.unionᵢ.{u2, u3} β ι (fun (i : ι) => t i)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : Set.{u1} α} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.SurjOn.{u1, u2} α β f s (t i)) -> (Set.SurjOn.{u1, u2} α β f s (Set.iUnion.{u2, u3} β ι (fun (i : ι) => t i)))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : Set.{u3} α} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.SurjOn.{u3, u2} α β f s (t i)) -> (Set.SurjOn.{u3, u2} α β f s (Set.unionᵢ.{u2, u1} β ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.surj_on_Union Set.surjOn_unionᵢₓ'. -/
-theorem surjOn_unionᵢ {s : Set α} {t : ι → Set β} {f : α → β} (H : ∀ i, SurjOn f s (t i)) :
+ forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : Set.{u3} α} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.SurjOn.{u3, u2} α β f s (t i)) -> (Set.SurjOn.{u3, u2} α β f s (Set.iUnion.{u2, u1} β ι (fun (i : ι) => t i)))
+Case conversion may be inaccurate. Consider using '#align set.surj_on_Union Set.surjOn_iUnionₓ'. -/
+theorem surjOn_iUnion {s : Set α} {t : ι → Set β} {f : α → β} (H : ∀ i, SurjOn f s (t i)) :
SurjOn f s (⋃ i, t i) :=
- surjOn_unionₛ <| forall_range_iff.2 H
-#align set.surj_on_Union Set.surjOn_unionᵢ
+ surjOn_sUnion <| forall_range_iff.2 H
+#align set.surj_on_Union Set.surjOn_iUnion
-/- warning: set.surj_on_Union_Union -> Set.surjOn_unionᵢ_unionᵢ is a dubious translation:
+/- warning: set.surj_on_Union_Union -> Set.surjOn_iUnion_iUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.SurjOn.{u1, u2} α β f (s i) (t i)) -> (Set.SurjOn.{u1, u2} α β f (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u2, u3} β ι (fun (i : ι) => t i)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.SurjOn.{u1, u2} α β f (s i) (t i)) -> (Set.SurjOn.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, u3} β ι (fun (i : ι) => t i)))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u3} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.SurjOn.{u3, u2} α β f (s i) (t i)) -> (Set.SurjOn.{u3, u2} α β f (Set.unionᵢ.{u3, u1} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u2, u1} β ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.surj_on_Union_Union Set.surjOn_unionᵢ_unionᵢₓ'. -/
-theorem surjOn_unionᵢ_unionᵢ {s : ι → Set α} {t : ι → Set β} {f : α → β}
+ forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u3} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.SurjOn.{u3, u2} α β f (s i) (t i)) -> (Set.SurjOn.{u3, u2} α β f (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => t i)))
+Case conversion may be inaccurate. Consider using '#align set.surj_on_Union_Union Set.surjOn_iUnion_iUnionₓ'. -/
+theorem surjOn_iUnion_iUnion {s : ι → Set α} {t : ι → Set β} {f : α → β}
(H : ∀ i, SurjOn f (s i) (t i)) : SurjOn f (⋃ i, s i) (⋃ i, t i) :=
- surjOn_unionᵢ fun i => (H i).mono (subset_unionᵢ _ _) (Subset.refl _)
-#align set.surj_on_Union_Union Set.surjOn_unionᵢ_unionᵢ
+ surjOn_iUnion fun i => (H i).mono (subset_iUnion _ _) (Subset.refl _)
+#align set.surj_on_Union_Union Set.surjOn_iUnion_iUnion
-/- warning: set.surj_on_Union₂ -> Set.surjOn_unionᵢ₂ is a dubious translation:
+/- warning: set.surj_on_Union₂ -> Set.surjOn_iUnion₂ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {s : Set.{u1} α} {t : forall (i : ι), (κ i) -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.SurjOn.{u1, u2} α β f s (t i j)) -> (Set.SurjOn.{u1, u2} α β f s (Set.unionᵢ.{u2, u3} β ι (fun (i : ι) => Set.unionᵢ.{u2, u4} β (κ i) (fun (j : κ i) => t i j))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {s : Set.{u1} α} {t : forall (i : ι), (κ i) -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.SurjOn.{u1, u2} α β f s (t i j)) -> (Set.SurjOn.{u1, u2} α β f s (Set.iUnion.{u2, u3} β ι (fun (i : ι) => Set.iUnion.{u2, u4} β (κ i) (fun (j : κ i) => t i j))))
but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : Set.{u4} α} {t : forall (i : ι), (κ i) -> (Set.{u3} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.SurjOn.{u4, u3} α β f s (t i j)) -> (Set.SurjOn.{u4, u3} α β f s (Set.unionᵢ.{u3, u2} β ι (fun (i : ι) => Set.unionᵢ.{u3, u1} β (κ i) (fun (j : κ i) => t i j))))
-Case conversion may be inaccurate. Consider using '#align set.surj_on_Union₂ Set.surjOn_unionᵢ₂ₓ'. -/
+ forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : Set.{u4} α} {t : forall (i : ι), (κ i) -> (Set.{u3} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.SurjOn.{u4, u3} α β f s (t i j)) -> (Set.SurjOn.{u4, u3} α β f s (Set.iUnion.{u3, u2} β ι (fun (i : ι) => Set.iUnion.{u3, u1} β (κ i) (fun (j : κ i) => t i j))))
+Case conversion may be inaccurate. Consider using '#align set.surj_on_Union₂ Set.surjOn_iUnion₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem surjOn_unionᵢ₂ {s : Set α} {t : ∀ i, κ i → Set β} {f : α → β}
+theorem surjOn_iUnion₂ {s : Set α} {t : ∀ i, κ i → Set β} {f : α → β}
(H : ∀ i j, SurjOn f s (t i j)) : SurjOn f s (⋃ (i) (j), t i j) :=
- surjOn_unionᵢ fun i => surjOn_unionᵢ (H i)
-#align set.surj_on_Union₂ Set.surjOn_unionᵢ₂
+ surjOn_iUnion fun i => surjOn_iUnion (H i)
+#align set.surj_on_Union₂ Set.surjOn_iUnion₂
-/- warning: set.surj_on_Union₂_Union₂ -> Set.surjOn_unionᵢ₂_unionᵢ₂ is a dubious translation:
+/- warning: set.surj_on_Union₂_Union₂ -> Set.surjOn_iUnion₂_iUnion₂ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i : ι), (κ i) -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.SurjOn.{u1, u2} α β f (s i j) (t i j)) -> (Set.SurjOn.{u1, u2} α β f (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => Set.unionᵢ.{u1, u4} α (κ i) (fun (j : κ i) => s i j))) (Set.unionᵢ.{u2, u3} β ι (fun (i : ι) => Set.unionᵢ.{u2, u4} β (κ i) (fun (j : κ i) => t i j))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : forall (i : ι), (κ i) -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.SurjOn.{u1, u2} α β f (s i j) (t i j)) -> (Set.SurjOn.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => Set.iUnion.{u1, u4} α (κ i) (fun (j : κ i) => s i j))) (Set.iUnion.{u2, u3} β ι (fun (i : ι) => Set.iUnion.{u2, u4} β (κ i) (fun (j : κ i) => t i j))))
but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u4} α)} {t : forall (i : ι), (κ i) -> (Set.{u3} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.SurjOn.{u4, u3} α β f (s i j) (t i j)) -> (Set.SurjOn.{u4, u3} α β f (Set.unionᵢ.{u4, u2} α ι (fun (i : ι) => Set.unionᵢ.{u4, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.unionᵢ.{u3, u2} β ι (fun (i : ι) => Set.unionᵢ.{u3, u1} β (κ i) (fun (j : κ i) => t i j))))
-Case conversion may be inaccurate. Consider using '#align set.surj_on_Union₂_Union₂ Set.surjOn_unionᵢ₂_unionᵢ₂ₓ'. -/
+ forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u4} α)} {t : forall (i : ι), (κ i) -> (Set.{u3} β)} {f : α -> β}, (forall (i : ι) (j : κ i), Set.SurjOn.{u4, u3} α β f (s i j) (t i j)) -> (Set.SurjOn.{u4, u3} α β f (Set.iUnion.{u4, u2} α ι (fun (i : ι) => Set.iUnion.{u4, u1} α (κ i) (fun (j : κ i) => s i j))) (Set.iUnion.{u3, u2} β ι (fun (i : ι) => Set.iUnion.{u3, u1} β (κ i) (fun (j : κ i) => t i j))))
+Case conversion may be inaccurate. Consider using '#align set.surj_on_Union₂_Union₂ Set.surjOn_iUnion₂_iUnion₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem surjOn_unionᵢ₂_unionᵢ₂ {s : ∀ i, κ i → Set α} {t : ∀ i, κ i → Set β} {f : α → β}
+theorem surjOn_iUnion₂_iUnion₂ {s : ∀ i, κ i → Set α} {t : ∀ i, κ i → Set β} {f : α → β}
(H : ∀ i j, SurjOn f (s i j) (t i j)) : SurjOn f (⋃ (i) (j), s i j) (⋃ (i) (j), t i j) :=
- surjOn_unionᵢ_unionᵢ fun i => surjOn_unionᵢ_unionᵢ (H i)
-#align set.surj_on_Union₂_Union₂ Set.surjOn_unionᵢ₂_unionᵢ₂
+ surjOn_iUnion_iUnion fun i => surjOn_iUnion_iUnion (H i)
+#align set.surj_on_Union₂_Union₂ Set.surjOn_iUnion₂_iUnion₂
-/- warning: set.surj_on_Inter -> Set.surjOn_interᵢ is a dubious translation:
+/- warning: set.surj_on_Inter -> Set.surjOn_iInter is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} [hi : Nonempty.{u3} ι] {s : ι -> (Set.{u1} α)} {t : Set.{u2} β} {f : α -> β}, (forall (i : ι), Set.SurjOn.{u1, u2} α β f (s i) t) -> (Set.InjOn.{u1, u2} α β f (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => s i))) -> (Set.SurjOn.{u1, u2} α β f (Set.interᵢ.{u1, u3} α ι (fun (i : ι) => s i)) t)
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} [hi : Nonempty.{u3} ι] {s : ι -> (Set.{u1} α)} {t : Set.{u2} β} {f : α -> β}, (forall (i : ι), Set.SurjOn.{u1, u2} α β f (s i) t) -> (Set.InjOn.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) -> (Set.SurjOn.{u1, u2} α β f (Set.iInter.{u1, u3} α ι (fun (i : ι) => s i)) t)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} [hi : Nonempty.{u3} ι] {s : ι -> (Set.{u2} α)} {t : Set.{u1} β} {f : α -> β}, (forall (i : ι), Set.SurjOn.{u2, u1} α β f (s i) t) -> (Set.InjOn.{u2, u1} α β f (Set.unionᵢ.{u2, u3} α ι (fun (i : ι) => s i))) -> (Set.SurjOn.{u2, u1} α β f (Set.interᵢ.{u2, u3} α ι (fun (i : ι) => s i)) t)
-Case conversion may be inaccurate. Consider using '#align set.surj_on_Inter Set.surjOn_interᵢₓ'. -/
-theorem surjOn_interᵢ [hi : Nonempty ι] {s : ι → Set α} {t : Set β} {f : α → β}
+ forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} [hi : Nonempty.{u3} ι] {s : ι -> (Set.{u2} α)} {t : Set.{u1} β} {f : α -> β}, (forall (i : ι), Set.SurjOn.{u2, u1} α β f (s i) t) -> (Set.InjOn.{u2, u1} α β f (Set.iUnion.{u2, u3} α ι (fun (i : ι) => s i))) -> (Set.SurjOn.{u2, u1} α β f (Set.iInter.{u2, u3} α ι (fun (i : ι) => s i)) t)
+Case conversion may be inaccurate. Consider using '#align set.surj_on_Inter Set.surjOn_iInterₓ'. -/
+theorem surjOn_iInter [hi : Nonempty ι] {s : ι → Set α} {t : Set β} {f : α → β}
(H : ∀ i, SurjOn f (s i) t) (Hinj : InjOn f (⋃ i, s i)) : SurjOn f (⋂ i, s i) t :=
by
intro y hy
rw [Hinj.image_Inter_eq, mem_Inter]
exact fun i => H i hy
-#align set.surj_on_Inter Set.surjOn_interᵢ
+#align set.surj_on_Inter Set.surjOn_iInter
-/- warning: set.surj_on_Inter_Inter -> Set.surjOn_interᵢ_interᵢ is a dubious translation:
+/- warning: set.surj_on_Inter_Inter -> Set.surjOn_iInter_iInter is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} [hi : Nonempty.{u3} ι] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.SurjOn.{u1, u2} α β f (s i) (t i)) -> (Set.InjOn.{u1, u2} α β f (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => s i))) -> (Set.SurjOn.{u1, u2} α β f (Set.interᵢ.{u1, u3} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u2, u3} β ι (fun (i : ι) => t i)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} [hi : Nonempty.{u3} ι] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.SurjOn.{u1, u2} α β f (s i) (t i)) -> (Set.InjOn.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) -> (Set.SurjOn.{u1, u2} α β f (Set.iInter.{u1, u3} α ι (fun (i : ι) => s i)) (Set.iInter.{u2, u3} β ι (fun (i : ι) => t i)))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} [hi : Nonempty.{u3} ι] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u1} β)} {f : α -> β}, (forall (i : ι), Set.SurjOn.{u2, u1} α β f (s i) (t i)) -> (Set.InjOn.{u2, u1} α β f (Set.unionᵢ.{u2, u3} α ι (fun (i : ι) => s i))) -> (Set.SurjOn.{u2, u1} α β f (Set.interᵢ.{u2, u3} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u1, u3} β ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.surj_on_Inter_Inter Set.surjOn_interᵢ_interᵢₓ'. -/
-theorem surjOn_interᵢ_interᵢ [hi : Nonempty ι] {s : ι → Set α} {t : ι → Set β} {f : α → β}
+ forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} [hi : Nonempty.{u3} ι] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u1} β)} {f : α -> β}, (forall (i : ι), Set.SurjOn.{u2, u1} α β f (s i) (t i)) -> (Set.InjOn.{u2, u1} α β f (Set.iUnion.{u2, u3} α ι (fun (i : ι) => s i))) -> (Set.SurjOn.{u2, u1} α β f (Set.iInter.{u2, u3} α ι (fun (i : ι) => s i)) (Set.iInter.{u1, u3} β ι (fun (i : ι) => t i)))
+Case conversion may be inaccurate. Consider using '#align set.surj_on_Inter_Inter Set.surjOn_iInter_iInterₓ'. -/
+theorem surjOn_iInter_iInter [hi : Nonempty ι] {s : ι → Set α} {t : ι → Set β} {f : α → β}
(H : ∀ i, SurjOn f (s i) (t i)) (Hinj : InjOn f (⋃ i, s i)) : SurjOn f (⋂ i, s i) (⋂ i, t i) :=
- surjOn_interᵢ (fun i => (H i).mono (Subset.refl _) (interᵢ_subset _ _)) Hinj
-#align set.surj_on_Inter_Inter Set.surjOn_interᵢ_interᵢ
+ surjOn_iInter (fun i => (H i).mono (Subset.refl _) (iInter_subset _ _)) Hinj
+#align set.surj_on_Inter_Inter Set.surjOn_iInter_iInter
/-! ### `bij_on` -/
-/- warning: set.bij_on_Union -> Set.bijOn_unionᵢ is a dubious translation:
+/- warning: set.bij_on_Union -> Set.bijOn_iUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u1, u2} α β f (s i) (t i)) -> (Set.InjOn.{u1, u2} α β f (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => s i))) -> (Set.BijOn.{u1, u2} α β f (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u2, u3} β ι (fun (i : ι) => t i)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u1, u2} α β f (s i) (t i)) -> (Set.InjOn.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) -> (Set.BijOn.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, u3} β ι (fun (i : ι) => t i)))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u3} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u3, u2} α β f (s i) (t i)) -> (Set.InjOn.{u3, u2} α β f (Set.unionᵢ.{u3, u1} α ι (fun (i : ι) => s i))) -> (Set.BijOn.{u3, u2} α β f (Set.unionᵢ.{u3, u1} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u2, u1} β ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.bij_on_Union Set.bijOn_unionᵢₓ'. -/
-theorem bijOn_unionᵢ {s : ι → Set α} {t : ι → Set β} {f : α → β} (H : ∀ i, BijOn f (s i) (t i))
+ forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u3} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u3, u2} α β f (s i) (t i)) -> (Set.InjOn.{u3, u2} α β f (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i))) -> (Set.BijOn.{u3, u2} α β f (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => t i)))
+Case conversion may be inaccurate. Consider using '#align set.bij_on_Union Set.bijOn_iUnionₓ'. -/
+theorem bijOn_iUnion {s : ι → Set α} {t : ι → Set β} {f : α → β} (H : ∀ i, BijOn f (s i) (t i))
(Hinj : InjOn f (⋃ i, s i)) : BijOn f (⋃ i, s i) (⋃ i, t i) :=
- ⟨mapsTo_unionᵢ_unionᵢ fun i => (H i).MapsTo, Hinj, surjOn_unionᵢ_unionᵢ fun i => (H i).SurjOn⟩
-#align set.bij_on_Union Set.bijOn_unionᵢ
+ ⟨mapsTo_iUnion_iUnion fun i => (H i).MapsTo, Hinj, surjOn_iUnion_iUnion fun i => (H i).SurjOn⟩
+#align set.bij_on_Union Set.bijOn_iUnion
-/- warning: set.bij_on_Inter -> Set.bijOn_interᵢ is a dubious translation:
+/- warning: set.bij_on_Inter -> Set.bijOn_iInter is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} [hi : Nonempty.{u3} ι] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u1, u2} α β f (s i) (t i)) -> (Set.InjOn.{u1, u2} α β f (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => s i))) -> (Set.BijOn.{u1, u2} α β f (Set.interᵢ.{u1, u3} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u2, u3} β ι (fun (i : ι) => t i)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} [hi : Nonempty.{u3} ι] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u1, u2} α β f (s i) (t i)) -> (Set.InjOn.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) -> (Set.BijOn.{u1, u2} α β f (Set.iInter.{u1, u3} α ι (fun (i : ι) => s i)) (Set.iInter.{u2, u3} β ι (fun (i : ι) => t i)))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} [hi : Nonempty.{u3} ι] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u1} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u2, u1} α β f (s i) (t i)) -> (Set.InjOn.{u2, u1} α β f (Set.unionᵢ.{u2, u3} α ι (fun (i : ι) => s i))) -> (Set.BijOn.{u2, u1} α β f (Set.interᵢ.{u2, u3} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u1, u3} β ι (fun (i : ι) => t i)))
-Case conversion may be inaccurate. Consider using '#align set.bij_on_Inter Set.bijOn_interᵢₓ'. -/
-theorem bijOn_interᵢ [hi : Nonempty ι] {s : ι → Set α} {t : ι → Set β} {f : α → β}
+ forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} [hi : Nonempty.{u3} ι] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u1} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u2, u1} α β f (s i) (t i)) -> (Set.InjOn.{u2, u1} α β f (Set.iUnion.{u2, u3} α ι (fun (i : ι) => s i))) -> (Set.BijOn.{u2, u1} α β f (Set.iInter.{u2, u3} α ι (fun (i : ι) => s i)) (Set.iInter.{u1, u3} β ι (fun (i : ι) => t i)))
+Case conversion may be inaccurate. Consider using '#align set.bij_on_Inter Set.bijOn_iInterₓ'. -/
+theorem bijOn_iInter [hi : Nonempty ι] {s : ι → Set α} {t : ι → Set β} {f : α → β}
(H : ∀ i, BijOn f (s i) (t i)) (Hinj : InjOn f (⋃ i, s i)) : BijOn f (⋂ i, s i) (⋂ i, t i) :=
- ⟨mapsTo_interᵢ_interᵢ fun i => (H i).MapsTo,
- hi.elim fun i => (H i).InjOn.mono (interᵢ_subset _ _),
- surjOn_interᵢ_interᵢ (fun i => (H i).SurjOn) Hinj⟩
-#align set.bij_on_Inter Set.bijOn_interᵢ
+ ⟨mapsTo_iInter_iInter fun i => (H i).MapsTo,
+ hi.elim fun i => (H i).InjOn.mono (iInter_subset _ _),
+ surjOn_iInter_iInter (fun i => (H i).SurjOn) Hinj⟩
+#align set.bij_on_Inter Set.bijOn_iInter
-/- warning: set.bij_on_Union_of_directed -> Set.bijOn_unionᵢ_of_directed is a dubious translation:
+/- warning: set.bij_on_Union_of_directed -> Set.bijOn_iUnion_of_directed is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)}, (Directed.{u1, u3} (Set.{u1} α) ι (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α)) s) -> (forall {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u1, u2} α β f (s i) (t i)) -> (Set.BijOn.{u1, u2} α β f (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u2, u3} β ι (fun (i : ι) => t i))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)}, (Directed.{u1, u3} (Set.{u1} α) ι (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α)) s) -> (forall {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u1, u2} α β f (s i) (t i)) -> (Set.BijOn.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i)) (Set.iUnion.{u2, u3} β ι (fun (i : ι) => t i))))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u3} α)}, (Directed.{u3, u2} (Set.{u3} α) ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.24973 : Set.{u3} α) (x._@.Mathlib.Data.Set.Lattice._hyg.24975 : Set.{u3} α) => HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) x._@.Mathlib.Data.Set.Lattice._hyg.24973 x._@.Mathlib.Data.Set.Lattice._hyg.24975) s) -> (forall {t : ι -> (Set.{u1} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u3, u1} α β f (s i) (t i)) -> (Set.BijOn.{u3, u1} α β f (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => t i))))
-Case conversion may be inaccurate. Consider using '#align set.bij_on_Union_of_directed Set.bijOn_unionᵢ_of_directedₓ'. -/
-theorem bijOn_unionᵢ_of_directed {s : ι → Set α} (hs : Directed (· ⊆ ·) s) {t : ι → Set β}
+ forall {α : Type.{u3}} {β : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u3} α)}, (Directed.{u3, u2} (Set.{u3} α) ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.24973 : Set.{u3} α) (x._@.Mathlib.Data.Set.Lattice._hyg.24975 : Set.{u3} α) => HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) x._@.Mathlib.Data.Set.Lattice._hyg.24973 x._@.Mathlib.Data.Set.Lattice._hyg.24975) s) -> (forall {t : ι -> (Set.{u1} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u3, u1} α β f (s i) (t i)) -> (Set.BijOn.{u3, u1} α β f (Set.iUnion.{u3, u2} α ι (fun (i : ι) => s i)) (Set.iUnion.{u1, u2} β ι (fun (i : ι) => t i))))
+Case conversion may be inaccurate. Consider using '#align set.bij_on_Union_of_directed Set.bijOn_iUnion_of_directedₓ'. -/
+theorem bijOn_iUnion_of_directed {s : ι → Set α} (hs : Directed (· ⊆ ·) s) {t : ι → Set β}
{f : α → β} (H : ∀ i, BijOn f (s i) (t i)) : BijOn f (⋃ i, s i) (⋃ i, t i) :=
- bijOn_unionᵢ H <| inj_on_unionᵢ_of_directed hs fun i => (H i).InjOn
-#align set.bij_on_Union_of_directed Set.bijOn_unionᵢ_of_directed
+ bijOn_iUnion H <| inj_on_iUnion_of_directed hs fun i => (H i).InjOn
+#align set.bij_on_Union_of_directed Set.bijOn_iUnion_of_directed
-/- warning: set.bij_on_Inter_of_directed -> Set.bijOn_interᵢ_of_directed is a dubious translation:
+/- warning: set.bij_on_Inter_of_directed -> Set.bijOn_iInter_of_directed is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} [_inst_1 : Nonempty.{u3} ι] {s : ι -> (Set.{u1} α)}, (Directed.{u1, u3} (Set.{u1} α) ι (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α)) s) -> (forall {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u1, u2} α β f (s i) (t i)) -> (Set.BijOn.{u1, u2} α β f (Set.interᵢ.{u1, u3} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u2, u3} β ι (fun (i : ι) => t i))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} [_inst_1 : Nonempty.{u3} ι] {s : ι -> (Set.{u1} α)}, (Directed.{u1, u3} (Set.{u1} α) ι (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α)) s) -> (forall {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u1, u2} α β f (s i) (t i)) -> (Set.BijOn.{u1, u2} α β f (Set.iInter.{u1, u3} α ι (fun (i : ι) => s i)) (Set.iInter.{u2, u3} β ι (fun (i : ι) => t i))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} [_inst_1 : Nonempty.{u3} ι] {s : ι -> (Set.{u2} α)}, (Directed.{u2, u3} (Set.{u2} α) ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.25093 : Set.{u2} α) (x._@.Mathlib.Data.Set.Lattice._hyg.25095 : Set.{u2} α) => HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) x._@.Mathlib.Data.Set.Lattice._hyg.25093 x._@.Mathlib.Data.Set.Lattice._hyg.25095) s) -> (forall {t : ι -> (Set.{u1} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u2, u1} α β f (s i) (t i)) -> (Set.BijOn.{u2, u1} α β f (Set.interᵢ.{u2, u3} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u1, u3} β ι (fun (i : ι) => t i))))
-Case conversion may be inaccurate. Consider using '#align set.bij_on_Inter_of_directed Set.bijOn_interᵢ_of_directedₓ'. -/
-theorem bijOn_interᵢ_of_directed [Nonempty ι] {s : ι → Set α} (hs : Directed (· ⊆ ·) s)
+ forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} [_inst_1 : Nonempty.{u3} ι] {s : ι -> (Set.{u2} α)}, (Directed.{u2, u3} (Set.{u2} α) ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.25093 : Set.{u2} α) (x._@.Mathlib.Data.Set.Lattice._hyg.25095 : Set.{u2} α) => HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) x._@.Mathlib.Data.Set.Lattice._hyg.25093 x._@.Mathlib.Data.Set.Lattice._hyg.25095) s) -> (forall {t : ι -> (Set.{u1} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u2, u1} α β f (s i) (t i)) -> (Set.BijOn.{u2, u1} α β f (Set.iInter.{u2, u3} α ι (fun (i : ι) => s i)) (Set.iInter.{u1, u3} β ι (fun (i : ι) => t i))))
+Case conversion may be inaccurate. Consider using '#align set.bij_on_Inter_of_directed Set.bijOn_iInter_of_directedₓ'. -/
+theorem bijOn_iInter_of_directed [Nonempty ι] {s : ι → Set α} (hs : Directed (· ⊆ ·) s)
{t : ι → Set β} {f : α → β} (H : ∀ i, BijOn f (s i) (t i)) : BijOn f (⋂ i, s i) (⋂ i, t i) :=
- bijOn_interᵢ H <| inj_on_unionᵢ_of_directed hs fun i => (H i).InjOn
-#align set.bij_on_Inter_of_directed Set.bijOn_interᵢ_of_directed
+ bijOn_iInter H <| inj_on_iUnion_of_directed hs fun i => (H i).InjOn
+#align set.bij_on_Inter_of_directed Set.bijOn_iInter_of_directed
end Function
@@ -3079,29 +3079,29 @@ end Function
section Image
-/- warning: set.image_Union -> Set.image_unionᵢ is a dubious translation:
+/- warning: set.image_Union -> Set.image_iUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : α -> β} {s : ι -> (Set.{u1} α)}, Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β f (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => s i))) (Set.unionᵢ.{u2, u3} β ι (fun (i : ι) => Set.image.{u1, u2} α β f (s i)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : α -> β} {s : ι -> (Set.{u1} α)}, Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) (Set.iUnion.{u2, u3} β ι (fun (i : ι) => Set.image.{u1, u2} α β f (s i)))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {f : α -> β} {s : ι -> (Set.{u3} α)}, Eq.{succ u2} (Set.{u2} β) (Set.image.{u3, u2} α β f (Set.unionᵢ.{u3, u1} α ι (fun (i : ι) => s i))) (Set.unionᵢ.{u2, u1} β ι (fun (i : ι) => Set.image.{u3, u2} α β f (s i)))
-Case conversion may be inaccurate. Consider using '#align set.image_Union Set.image_unionᵢₓ'. -/
-theorem image_unionᵢ {f : α → β} {s : ι → Set α} : (f '' ⋃ i, s i) = ⋃ i, f '' s i :=
+ forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {f : α -> β} {s : ι -> (Set.{u3} α)}, Eq.{succ u2} (Set.{u2} β) (Set.image.{u3, u2} α β f (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i))) (Set.iUnion.{u2, u1} β ι (fun (i : ι) => Set.image.{u3, u2} α β f (s i)))
+Case conversion may be inaccurate. Consider using '#align set.image_Union Set.image_iUnionₓ'. -/
+theorem image_iUnion {f : α → β} {s : ι → Set α} : (f '' ⋃ i, s i) = ⋃ i, f '' s i :=
by
ext1 x
simp [image, ← exists_and_right, @exists_swap α]
-#align set.image_Union Set.image_unionᵢ
+#align set.image_Union Set.image_iUnion
-/- warning: set.image_Union₂ -> Set.image_unionᵢ₂ is a dubious translation:
+/- warning: set.image_Union₂ -> Set.image_iUnion₂ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} (f : α -> β) (s : forall (i : ι), (κ i) -> (Set.{u1} α)), Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β f (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => Set.unionᵢ.{u1, u4} α (κ i) (fun (j : κ i) => s i j)))) (Set.unionᵢ.{u2, u3} β ι (fun (i : ι) => Set.unionᵢ.{u2, u4} β (κ i) (fun (j : κ i) => Set.image.{u1, u2} α β f (s i j))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} (f : α -> β) (s : forall (i : ι), (κ i) -> (Set.{u1} α)), Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β f (Set.iUnion.{u1, u3} α ι (fun (i : ι) => Set.iUnion.{u1, u4} α (κ i) (fun (j : κ i) => s i j)))) (Set.iUnion.{u2, u3} β ι (fun (i : ι) => Set.iUnion.{u2, u4} β (κ i) (fun (j : κ i) => Set.image.{u1, u2} α β f (s i j))))
but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (f : α -> β) (s : forall (i : ι), (κ i) -> (Set.{u4} α)), Eq.{succ u3} (Set.{u3} β) (Set.image.{u4, u3} α β f (Set.unionᵢ.{u4, u2} α ι (fun (i : ι) => Set.unionᵢ.{u4, u1} α (κ i) (fun (j : κ i) => s i j)))) (Set.unionᵢ.{u3, u2} β ι (fun (i : ι) => Set.unionᵢ.{u3, u1} β (κ i) (fun (j : κ i) => Set.image.{u4, u3} α β f (s i j))))
-Case conversion may be inaccurate. Consider using '#align set.image_Union₂ Set.image_unionᵢ₂ₓ'. -/
+ forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (f : α -> β) (s : forall (i : ι), (κ i) -> (Set.{u4} α)), Eq.{succ u3} (Set.{u3} β) (Set.image.{u4, u3} α β f (Set.iUnion.{u4, u2} α ι (fun (i : ι) => Set.iUnion.{u4, u1} α (κ i) (fun (j : κ i) => s i j)))) (Set.iUnion.{u3, u2} β ι (fun (i : ι) => Set.iUnion.{u3, u1} β (κ i) (fun (j : κ i) => Set.image.{u4, u3} α β f (s i j))))
+Case conversion may be inaccurate. Consider using '#align set.image_Union₂ Set.image_iUnion₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem image_unionᵢ₂ (f : α → β) (s : ∀ i, κ i → Set α) :
+theorem image_iUnion₂ (f : α → β) (s : ∀ i, κ i → Set α) :
(f '' ⋃ (i) (j), s i j) = ⋃ (i) (j), f '' s i j := by simp_rw [image_Union]
-#align set.image_Union₂ Set.image_unionᵢ₂
+#align set.image_Union₂ Set.image_iUnion₂
#print Set.univ_subtype /-
theorem univ_subtype {p : α → Prop} : (univ : Set (Subtype p)) = ⋃ (x) (h : p x), {⟨x, h⟩} :=
@@ -3109,87 +3109,87 @@ theorem univ_subtype {p : α → Prop} : (univ : Set (Subtype p)) = ⋃ (x) (h :
#align set.univ_subtype Set.univ_subtype
-/
-#print Set.range_eq_unionᵢ /-
-theorem range_eq_unionᵢ {ι} (f : ι → α) : range f = ⋃ i, {f i} :=
+#print Set.range_eq_iUnion /-
+theorem range_eq_iUnion {ι} (f : ι → α) : range f = ⋃ i, {f i} :=
Set.ext fun a => by simp [@eq_comm α a]
-#align set.range_eq_Union Set.range_eq_unionᵢ
+#align set.range_eq_Union Set.range_eq_iUnion
-/
-/- warning: set.image_eq_Union -> Set.image_eq_unionᵢ is a dubious translation:
+/- warning: set.image_eq_Union -> Set.image_eq_iUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (s : Set.{u1} α), Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β f s) (Set.unionᵢ.{u2, succ u1} β α (fun (i : α) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i s) => Singleton.singleton.{u2, u2} β (Set.{u2} β) (Set.hasSingleton.{u2} β) (f i))))
+ forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (s : Set.{u1} α), Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β f s) (Set.iUnion.{u2, succ u1} β α (fun (i : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i s) => Singleton.singleton.{u2, u2} β (Set.{u2} β) (Set.hasSingleton.{u2} β) (f i))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β) (s : Set.{u2} α), Eq.{succ u1} (Set.{u1} β) (Set.image.{u2, u1} α β f s) (Set.unionᵢ.{u1, succ u2} β α (fun (i : α) => Set.unionᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i s) => Singleton.singleton.{u1, u1} β (Set.{u1} β) (Set.instSingletonSet.{u1} β) (f i))))
-Case conversion may be inaccurate. Consider using '#align set.image_eq_Union Set.image_eq_unionᵢₓ'. -/
-theorem image_eq_unionᵢ (f : α → β) (s : Set α) : f '' s = ⋃ i ∈ s, {f i} :=
+ forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β) (s : Set.{u2} α), Eq.{succ u1} (Set.{u1} β) (Set.image.{u2, u1} α β f s) (Set.iUnion.{u1, succ u2} β α (fun (i : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) i s) => Singleton.singleton.{u1, u1} β (Set.{u1} β) (Set.instSingletonSet.{u1} β) (f i))))
+Case conversion may be inaccurate. Consider using '#align set.image_eq_Union Set.image_eq_iUnionₓ'. -/
+theorem image_eq_iUnion (f : α → β) (s : Set α) : f '' s = ⋃ i ∈ s, {f i} :=
Set.ext fun b => by simp [@eq_comm β b]
-#align set.image_eq_Union Set.image_eq_unionᵢ
+#align set.image_eq_Union Set.image_eq_iUnion
-/- warning: set.bUnion_range -> Set.bunionᵢ_range is a dubious translation:
+/- warning: set.bUnion_range -> Set.biUnion_range is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : ι -> α} {g : α -> (Set.{u2} β)}, Eq.{succ u2} (Set.{u2} β) (Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.range.{u1, u3} α ι f)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.range.{u1, u3} α ι f)) => g x))) (Set.unionᵢ.{u2, u3} β ι (fun (y : ι) => g (f y)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : ι -> α} {g : α -> (Set.{u2} β)}, Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.range.{u1, u3} α ι f)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.range.{u1, u3} α ι f)) => g x))) (Set.iUnion.{u2, u3} β ι (fun (y : ι) => g (f y)))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} {ι : Sort.{u1}} {f : ι -> α} {g : α -> (Set.{u3} β)}, Eq.{succ u3} (Set.{u3} β) (Set.unionᵢ.{u3, succ u2} β α (fun (x : α) => Set.unionᵢ.{u3, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.range.{u2, u1} α ι f)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.range.{u2, u1} α ι f)) => g x))) (Set.unionᵢ.{u3, u1} β ι (fun (y : ι) => g (f y)))
-Case conversion may be inaccurate. Consider using '#align set.bUnion_range Set.bunionᵢ_rangeₓ'. -/
-theorem bunionᵢ_range {f : ι → α} {g : α → Set β} : (⋃ x ∈ range f, g x) = ⋃ y, g (f y) :=
- supᵢ_range
-#align set.bUnion_range Set.bunionᵢ_range
+ forall {α : Type.{u2}} {β : Type.{u3}} {ι : Sort.{u1}} {f : ι -> α} {g : α -> (Set.{u3} β)}, Eq.{succ u3} (Set.{u3} β) (Set.iUnion.{u3, succ u2} β α (fun (x : α) => Set.iUnion.{u3, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.range.{u2, u1} α ι f)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.range.{u2, u1} α ι f)) => g x))) (Set.iUnion.{u3, u1} β ι (fun (y : ι) => g (f y)))
+Case conversion may be inaccurate. Consider using '#align set.bUnion_range Set.biUnion_rangeₓ'. -/
+theorem biUnion_range {f : ι → α} {g : α → Set β} : (⋃ x ∈ range f, g x) = ⋃ y, g (f y) :=
+ iSup_range
+#align set.bUnion_range Set.biUnion_range
-/- warning: set.Union_Union_eq' -> Set.unionᵢ_unionᵢ_eq' is a dubious translation:
+/- warning: set.Union_Union_eq' -> Set.iUnion_iUnion_eq' is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : ι -> α} {g : α -> (Set.{u2} β)}, Eq.{succ u2} (Set.{u2} β) (Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => Set.unionᵢ.{u2, u3} β ι (fun (y : ι) => Set.unionᵢ.{u2, 0} β (Eq.{succ u1} α (f y) x) (fun (h : Eq.{succ u1} α (f y) x) => g x)))) (Set.unionᵢ.{u2, u3} β ι (fun (y : ι) => g (f y)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : ι -> α} {g : α -> (Set.{u2} β)}, Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, u3} β ι (fun (y : ι) => Set.iUnion.{u2, 0} β (Eq.{succ u1} α (f y) x) (fun (h : Eq.{succ u1} α (f y) x) => g x)))) (Set.iUnion.{u2, u3} β ι (fun (y : ι) => g (f y)))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} {ι : Sort.{u1}} {f : ι -> α} {g : α -> (Set.{u3} β)}, Eq.{succ u3} (Set.{u3} β) (Set.unionᵢ.{u3, succ u2} β α (fun (x : α) => Set.unionᵢ.{u3, u1} β ι (fun (y : ι) => Set.unionᵢ.{u3, 0} β (Eq.{succ u2} α (f y) x) (fun (h : Eq.{succ u2} α (f y) x) => g x)))) (Set.unionᵢ.{u3, u1} β ι (fun (y : ι) => g (f y)))
-Case conversion may be inaccurate. Consider using '#align set.Union_Union_eq' Set.unionᵢ_unionᵢ_eq'ₓ'. -/
+ forall {α : Type.{u2}} {β : Type.{u3}} {ι : Sort.{u1}} {f : ι -> α} {g : α -> (Set.{u3} β)}, Eq.{succ u3} (Set.{u3} β) (Set.iUnion.{u3, succ u2} β α (fun (x : α) => Set.iUnion.{u3, u1} β ι (fun (y : ι) => Set.iUnion.{u3, 0} β (Eq.{succ u2} α (f y) x) (fun (h : Eq.{succ u2} α (f y) x) => g x)))) (Set.iUnion.{u3, u1} β ι (fun (y : ι) => g (f y)))
+Case conversion may be inaccurate. Consider using '#align set.Union_Union_eq' Set.iUnion_iUnion_eq'ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (x y) -/
@[simp]
-theorem unionᵢ_unionᵢ_eq' {f : ι → α} {g : α → Set β} :
+theorem iUnion_iUnion_eq' {f : ι → α} {g : α → Set β} :
(⋃ (x) (y) (h : f y = x), g x) = ⋃ y, g (f y) := by simpa using bUnion_range
-#align set.Union_Union_eq' Set.unionᵢ_unionᵢ_eq'
+#align set.Union_Union_eq' Set.iUnion_iUnion_eq'
-/- warning: set.bInter_range -> Set.binterᵢ_range is a dubious translation:
+/- warning: set.bInter_range -> Set.biInter_range is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : ι -> α} {g : α -> (Set.{u2} β)}, Eq.{succ u2} (Set.{u2} β) (Set.interᵢ.{u2, succ u1} β α (fun (x : α) => Set.interᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.range.{u1, u3} α ι f)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.range.{u1, u3} α ι f)) => g x))) (Set.interᵢ.{u2, u3} β ι (fun (y : ι) => g (f y)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : ι -> α} {g : α -> (Set.{u2} β)}, Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.range.{u1, u3} α ι f)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.range.{u1, u3} α ι f)) => g x))) (Set.iInter.{u2, u3} β ι (fun (y : ι) => g (f y)))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} {ι : Sort.{u1}} {f : ι -> α} {g : α -> (Set.{u3} β)}, Eq.{succ u3} (Set.{u3} β) (Set.interᵢ.{u3, succ u2} β α (fun (x : α) => Set.interᵢ.{u3, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.range.{u2, u1} α ι f)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.range.{u2, u1} α ι f)) => g x))) (Set.interᵢ.{u3, u1} β ι (fun (y : ι) => g (f y)))
-Case conversion may be inaccurate. Consider using '#align set.bInter_range Set.binterᵢ_rangeₓ'. -/
-theorem binterᵢ_range {f : ι → α} {g : α → Set β} : (⋂ x ∈ range f, g x) = ⋂ y, g (f y) :=
- infᵢ_range
-#align set.bInter_range Set.binterᵢ_range
+ forall {α : Type.{u2}} {β : Type.{u3}} {ι : Sort.{u1}} {f : ι -> α} {g : α -> (Set.{u3} β)}, Eq.{succ u3} (Set.{u3} β) (Set.iInter.{u3, succ u2} β α (fun (x : α) => Set.iInter.{u3, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.range.{u2, u1} α ι f)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.range.{u2, u1} α ι f)) => g x))) (Set.iInter.{u3, u1} β ι (fun (y : ι) => g (f y)))
+Case conversion may be inaccurate. Consider using '#align set.bInter_range Set.biInter_rangeₓ'. -/
+theorem biInter_range {f : ι → α} {g : α → Set β} : (⋂ x ∈ range f, g x) = ⋂ y, g (f y) :=
+ iInf_range
+#align set.bInter_range Set.biInter_range
-/- warning: set.Inter_Inter_eq' -> Set.interᵢ_interᵢ_eq' is a dubious translation:
+/- warning: set.Inter_Inter_eq' -> Set.iInter_iInter_eq' is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : ι -> α} {g : α -> (Set.{u2} β)}, Eq.{succ u2} (Set.{u2} β) (Set.interᵢ.{u2, succ u1} β α (fun (x : α) => Set.interᵢ.{u2, u3} β ι (fun (y : ι) => Set.interᵢ.{u2, 0} β (Eq.{succ u1} α (f y) x) (fun (h : Eq.{succ u1} α (f y) x) => g x)))) (Set.interᵢ.{u2, u3} β ι (fun (y : ι) => g (f y)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : ι -> α} {g : α -> (Set.{u2} β)}, Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, u3} β ι (fun (y : ι) => Set.iInter.{u2, 0} β (Eq.{succ u1} α (f y) x) (fun (h : Eq.{succ u1} α (f y) x) => g x)))) (Set.iInter.{u2, u3} β ι (fun (y : ι) => g (f y)))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} {ι : Sort.{u1}} {f : ι -> α} {g : α -> (Set.{u3} β)}, Eq.{succ u3} (Set.{u3} β) (Set.interᵢ.{u3, succ u2} β α (fun (x : α) => Set.interᵢ.{u3, u1} β ι (fun (y : ι) => Set.interᵢ.{u3, 0} β (Eq.{succ u2} α (f y) x) (fun (h : Eq.{succ u2} α (f y) x) => g x)))) (Set.interᵢ.{u3, u1} β ι (fun (y : ι) => g (f y)))
-Case conversion may be inaccurate. Consider using '#align set.Inter_Inter_eq' Set.interᵢ_interᵢ_eq'ₓ'. -/
+ forall {α : Type.{u2}} {β : Type.{u3}} {ι : Sort.{u1}} {f : ι -> α} {g : α -> (Set.{u3} β)}, Eq.{succ u3} (Set.{u3} β) (Set.iInter.{u3, succ u2} β α (fun (x : α) => Set.iInter.{u3, u1} β ι (fun (y : ι) => Set.iInter.{u3, 0} β (Eq.{succ u2} α (f y) x) (fun (h : Eq.{succ u2} α (f y) x) => g x)))) (Set.iInter.{u3, u1} β ι (fun (y : ι) => g (f y)))
+Case conversion may be inaccurate. Consider using '#align set.Inter_Inter_eq' Set.iInter_iInter_eq'ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (x y) -/
@[simp]
-theorem interᵢ_interᵢ_eq' {f : ι → α} {g : α → Set β} :
+theorem iInter_iInter_eq' {f : ι → α} {g : α → Set β} :
(⋂ (x) (y) (h : f y = x), g x) = ⋂ y, g (f y) := by simpa using bInter_range
-#align set.Inter_Inter_eq' Set.interᵢ_interᵢ_eq'
+#align set.Inter_Inter_eq' Set.iInter_iInter_eq'
variable {s : Set γ} {f : γ → α} {g : α → Set β}
-/- warning: set.bUnion_image -> Set.bunionᵢ_image is a dubious translation:
+/- warning: set.bUnion_image -> Set.biUnion_image is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {s : Set.{u3} γ} {f : γ -> α} {g : α -> (Set.{u2} β)}, Eq.{succ u2} (Set.{u2} β) (Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.image.{u3, u1} γ α f s)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.image.{u3, u1} γ α f s)) => g x))) (Set.unionᵢ.{u2, succ u3} β γ (fun (y : γ) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{u3, u3} γ (Set.{u3} γ) (Set.hasMem.{u3} γ) y s) (fun (H : Membership.Mem.{u3, u3} γ (Set.{u3} γ) (Set.hasMem.{u3} γ) y s) => g (f y))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {s : Set.{u3} γ} {f : γ -> α} {g : α -> (Set.{u2} β)}, Eq.{succ u2} (Set.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.image.{u3, u1} γ α f s)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.image.{u3, u1} γ α f s)) => g x))) (Set.iUnion.{u2, succ u3} β γ (fun (y : γ) => Set.iUnion.{u2, 0} β (Membership.Mem.{u3, u3} γ (Set.{u3} γ) (Set.hasMem.{u3} γ) y s) (fun (H : Membership.Mem.{u3, u3} γ (Set.{u3} γ) (Set.hasMem.{u3} γ) y s) => g (f y))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} {γ : Type.{u1}} {s : Set.{u1} γ} {f : γ -> α} {g : α -> (Set.{u3} β)}, Eq.{succ u3} (Set.{u3} β) (Set.unionᵢ.{u3, succ u2} β α (fun (x : α) => Set.unionᵢ.{u3, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.image.{u1, u2} γ α f s)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.image.{u1, u2} γ α f s)) => g x))) (Set.unionᵢ.{u3, succ u1} β γ (fun (y : γ) => Set.unionᵢ.{u3, 0} β (Membership.mem.{u1, u1} γ (Set.{u1} γ) (Set.instMembershipSet.{u1} γ) y s) (fun (H : Membership.mem.{u1, u1} γ (Set.{u1} γ) (Set.instMembershipSet.{u1} γ) y s) => g (f y))))
-Case conversion may be inaccurate. Consider using '#align set.bUnion_image Set.bunionᵢ_imageₓ'. -/
-theorem bunionᵢ_image : (⋃ x ∈ f '' s, g x) = ⋃ y ∈ s, g (f y) :=
- supᵢ_image
-#align set.bUnion_image Set.bunionᵢ_image
+ forall {α : Type.{u2}} {β : Type.{u3}} {γ : Type.{u1}} {s : Set.{u1} γ} {f : γ -> α} {g : α -> (Set.{u3} β)}, Eq.{succ u3} (Set.{u3} β) (Set.iUnion.{u3, succ u2} β α (fun (x : α) => Set.iUnion.{u3, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.image.{u1, u2} γ α f s)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.image.{u1, u2} γ α f s)) => g x))) (Set.iUnion.{u3, succ u1} β γ (fun (y : γ) => Set.iUnion.{u3, 0} β (Membership.mem.{u1, u1} γ (Set.{u1} γ) (Set.instMembershipSet.{u1} γ) y s) (fun (H : Membership.mem.{u1, u1} γ (Set.{u1} γ) (Set.instMembershipSet.{u1} γ) y s) => g (f y))))
+Case conversion may be inaccurate. Consider using '#align set.bUnion_image Set.biUnion_imageₓ'. -/
+theorem biUnion_image : (⋃ x ∈ f '' s, g x) = ⋃ y ∈ s, g (f y) :=
+ iSup_image
+#align set.bUnion_image Set.biUnion_image
-/- warning: set.bInter_image -> Set.binterᵢ_image is a dubious translation:
+/- warning: set.bInter_image -> Set.biInter_image is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {s : Set.{u3} γ} {f : γ -> α} {g : α -> (Set.{u2} β)}, Eq.{succ u2} (Set.{u2} β) (Set.interᵢ.{u2, succ u1} β α (fun (x : α) => Set.interᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.image.{u3, u1} γ α f s)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.image.{u3, u1} γ α f s)) => g x))) (Set.interᵢ.{u2, succ u3} β γ (fun (y : γ) => Set.interᵢ.{u2, 0} β (Membership.Mem.{u3, u3} γ (Set.{u3} γ) (Set.hasMem.{u3} γ) y s) (fun (H : Membership.Mem.{u3, u3} γ (Set.{u3} γ) (Set.hasMem.{u3} γ) y s) => g (f y))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {s : Set.{u3} γ} {f : γ -> α} {g : α -> (Set.{u2} β)}, Eq.{succ u2} (Set.{u2} β) (Set.iInter.{u2, succ u1} β α (fun (x : α) => Set.iInter.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.image.{u3, u1} γ α f s)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (Set.image.{u3, u1} γ α f s)) => g x))) (Set.iInter.{u2, succ u3} β γ (fun (y : γ) => Set.iInter.{u2, 0} β (Membership.Mem.{u3, u3} γ (Set.{u3} γ) (Set.hasMem.{u3} γ) y s) (fun (H : Membership.Mem.{u3, u3} γ (Set.{u3} γ) (Set.hasMem.{u3} γ) y s) => g (f y))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} {γ : Type.{u1}} {s : Set.{u1} γ} {f : γ -> α} {g : α -> (Set.{u3} β)}, Eq.{succ u3} (Set.{u3} β) (Set.interᵢ.{u3, succ u2} β α (fun (x : α) => Set.interᵢ.{u3, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.image.{u1, u2} γ α f s)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.image.{u1, u2} γ α f s)) => g x))) (Set.interᵢ.{u3, succ u1} β γ (fun (y : γ) => Set.interᵢ.{u3, 0} β (Membership.mem.{u1, u1} γ (Set.{u1} γ) (Set.instMembershipSet.{u1} γ) y s) (fun (H : Membership.mem.{u1, u1} γ (Set.{u1} γ) (Set.instMembershipSet.{u1} γ) y s) => g (f y))))
-Case conversion may be inaccurate. Consider using '#align set.bInter_image Set.binterᵢ_imageₓ'. -/
-theorem binterᵢ_image : (⋂ x ∈ f '' s, g x) = ⋂ y ∈ s, g (f y) :=
- infᵢ_image
-#align set.bInter_image Set.binterᵢ_image
+ forall {α : Type.{u2}} {β : Type.{u3}} {γ : Type.{u1}} {s : Set.{u1} γ} {f : γ -> α} {g : α -> (Set.{u3} β)}, Eq.{succ u3} (Set.{u3} β) (Set.iInter.{u3, succ u2} β α (fun (x : α) => Set.iInter.{u3, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.image.{u1, u2} γ α f s)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (Set.image.{u1, u2} γ α f s)) => g x))) (Set.iInter.{u3, succ u1} β γ (fun (y : γ) => Set.iInter.{u3, 0} β (Membership.mem.{u1, u1} γ (Set.{u1} γ) (Set.instMembershipSet.{u1} γ) y s) (fun (H : Membership.mem.{u1, u1} γ (Set.{u1} γ) (Set.instMembershipSet.{u1} γ) y s) => g (f y))))
+Case conversion may be inaccurate. Consider using '#align set.bInter_image Set.biInter_imageₓ'. -/
+theorem biInter_image : (⋂ x ∈ f '' s, g x) = ⋂ y ∈ s, g (f y) :=
+ iInf_image
+#align set.bInter_image Set.biInter_image
end Image
@@ -3204,191 +3204,191 @@ Case conversion may be inaccurate. Consider using '#align set.monotone_preimage
theorem monotone_preimage {f : α → β} : Monotone (preimage f) := fun a b h => preimage_mono h
#align set.monotone_preimage Set.monotone_preimage
-/- warning: set.preimage_Union -> Set.preimage_unionᵢ is a dubious translation:
+/- warning: set.preimage_Union -> Set.preimage_iUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : α -> β} {s : ι -> (Set.{u2} β)}, Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α β f (Set.unionᵢ.{u2, u3} β ι (fun (i : ι) => s i))) (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => Set.preimage.{u1, u2} α β f (s i)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : α -> β} {s : ι -> (Set.{u2} β)}, Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α β f (Set.iUnion.{u2, u3} β ι (fun (i : ι) => s i))) (Set.iUnion.{u1, u3} α ι (fun (i : ι) => Set.preimage.{u1, u2} α β f (s i)))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} {ι : Sort.{u1}} {f : α -> β} {s : ι -> (Set.{u3} β)}, Eq.{succ u2} (Set.{u2} α) (Set.preimage.{u2, u3} α β f (Set.unionᵢ.{u3, u1} β ι (fun (i : ι) => s i))) (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => Set.preimage.{u2, u3} α β f (s i)))
-Case conversion may be inaccurate. Consider using '#align set.preimage_Union Set.preimage_unionᵢₓ'. -/
+ forall {α : Type.{u2}} {β : Type.{u3}} {ι : Sort.{u1}} {f : α -> β} {s : ι -> (Set.{u3} β)}, Eq.{succ u2} (Set.{u2} α) (Set.preimage.{u2, u3} α β f (Set.iUnion.{u3, u1} β ι (fun (i : ι) => s i))) (Set.iUnion.{u2, u1} α ι (fun (i : ι) => Set.preimage.{u2, u3} α β f (s i)))
+Case conversion may be inaccurate. Consider using '#align set.preimage_Union Set.preimage_iUnionₓ'. -/
@[simp]
-theorem preimage_unionᵢ {f : α → β} {s : ι → Set β} : (f ⁻¹' ⋃ i, s i) = ⋃ i, f ⁻¹' s i :=
+theorem preimage_iUnion {f : α → β} {s : ι → Set β} : (f ⁻¹' ⋃ i, s i) = ⋃ i, f ⁻¹' s i :=
Set.ext <| by simp [preimage]
-#align set.preimage_Union Set.preimage_unionᵢ
+#align set.preimage_Union Set.preimage_iUnion
-/- warning: set.preimage_Union₂ -> Set.preimage_unionᵢ₂ is a dubious translation:
+/- warning: set.preimage_Union₂ -> Set.preimage_iUnion₂ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {f : α -> β} {s : forall (i : ι), (κ i) -> (Set.{u2} β)}, Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α β f (Set.unionᵢ.{u2, u3} β ι (fun (i : ι) => Set.unionᵢ.{u2, u4} β (κ i) (fun (j : κ i) => s i j)))) (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => Set.unionᵢ.{u1, u4} α (κ i) (fun (j : κ i) => Set.preimage.{u1, u2} α β f (s i j))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {f : α -> β} {s : forall (i : ι), (κ i) -> (Set.{u2} β)}, Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α β f (Set.iUnion.{u2, u3} β ι (fun (i : ι) => Set.iUnion.{u2, u4} β (κ i) (fun (j : κ i) => s i j)))) (Set.iUnion.{u1, u3} α ι (fun (i : ι) => Set.iUnion.{u1, u4} α (κ i) (fun (j : κ i) => Set.preimage.{u1, u2} α β f (s i j))))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u4}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {f : α -> β} {s : forall (i : ι), (κ i) -> (Set.{u4} β)}, Eq.{succ u3} (Set.{u3} α) (Set.preimage.{u3, u4} α β f (Set.unionᵢ.{u4, u2} β ι (fun (i : ι) => Set.unionᵢ.{u4, u1} β (κ i) (fun (j : κ i) => s i j)))) (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => Set.unionᵢ.{u3, u1} α (κ i) (fun (j : κ i) => Set.preimage.{u3, u4} α β f (s i j))))
-Case conversion may be inaccurate. Consider using '#align set.preimage_Union₂ Set.preimage_unionᵢ₂ₓ'. -/
+ forall {α : Type.{u3}} {β : Type.{u4}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {f : α -> β} {s : forall (i : ι), (κ i) -> (Set.{u4} β)}, Eq.{succ u3} (Set.{u3} α) (Set.preimage.{u3, u4} α β f (Set.iUnion.{u4, u2} β ι (fun (i : ι) => Set.iUnion.{u4, u1} β (κ i) (fun (j : κ i) => s i j)))) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => Set.preimage.{u3, u4} α β f (s i j))))
+Case conversion may be inaccurate. Consider using '#align set.preimage_Union₂ Set.preimage_iUnion₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem preimage_unionᵢ₂ {f : α → β} {s : ∀ i, κ i → Set β} :
+theorem preimage_iUnion₂ {f : α → β} {s : ∀ i, κ i → Set β} :
(f ⁻¹' ⋃ (i) (j), s i j) = ⋃ (i) (j), f ⁻¹' s i j := by simp_rw [preimage_Union]
-#align set.preimage_Union₂ Set.preimage_unionᵢ₂
+#align set.preimage_Union₂ Set.preimage_iUnion₂
-#print Set.preimage_unionₛ /-
+#print Set.preimage_sUnion /-
@[simp]
-theorem preimage_unionₛ {f : α → β} {s : Set (Set β)} : f ⁻¹' ⋃₀ s = ⋃ t ∈ s, f ⁻¹' t := by
+theorem preimage_sUnion {f : α → β} {s : Set (Set β)} : f ⁻¹' ⋃₀ s = ⋃ t ∈ s, f ⁻¹' t := by
rw [sUnion_eq_bUnion, preimage_Union₂]
-#align set.preimage_sUnion Set.preimage_unionₛ
+#align set.preimage_sUnion Set.preimage_sUnion
-/
-/- warning: set.preimage_Inter -> Set.preimage_interᵢ is a dubious translation:
+/- warning: set.preimage_Inter -> Set.preimage_iInter is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : α -> β} {s : ι -> (Set.{u2} β)}, Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α β f (Set.interᵢ.{u2, u3} β ι (fun (i : ι) => s i))) (Set.interᵢ.{u1, u3} α ι (fun (i : ι) => Set.preimage.{u1, u2} α β f (s i)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {f : α -> β} {s : ι -> (Set.{u2} β)}, Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α β f (Set.iInter.{u2, u3} β ι (fun (i : ι) => s i))) (Set.iInter.{u1, u3} α ι (fun (i : ι) => Set.preimage.{u1, u2} α β f (s i)))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} {ι : Sort.{u1}} {f : α -> β} {s : ι -> (Set.{u3} β)}, Eq.{succ u2} (Set.{u2} α) (Set.preimage.{u2, u3} α β f (Set.interᵢ.{u3, u1} β ι (fun (i : ι) => s i))) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => Set.preimage.{u2, u3} α β f (s i)))
-Case conversion may be inaccurate. Consider using '#align set.preimage_Inter Set.preimage_interᵢₓ'. -/
-theorem preimage_interᵢ {f : α → β} {s : ι → Set β} : (f ⁻¹' ⋂ i, s i) = ⋂ i, f ⁻¹' s i := by
+ forall {α : Type.{u2}} {β : Type.{u3}} {ι : Sort.{u1}} {f : α -> β} {s : ι -> (Set.{u3} β)}, Eq.{succ u2} (Set.{u2} α) (Set.preimage.{u2, u3} α β f (Set.iInter.{u3, u1} β ι (fun (i : ι) => s i))) (Set.iInter.{u2, u1} α ι (fun (i : ι) => Set.preimage.{u2, u3} α β f (s i)))
+Case conversion may be inaccurate. Consider using '#align set.preimage_Inter Set.preimage_iInterₓ'. -/
+theorem preimage_iInter {f : α → β} {s : ι → Set β} : (f ⁻¹' ⋂ i, s i) = ⋂ i, f ⁻¹' s i := by
ext <;> simp
-#align set.preimage_Inter Set.preimage_interᵢ
+#align set.preimage_Inter Set.preimage_iInter
-/- warning: set.preimage_Inter₂ -> Set.preimage_interᵢ₂ is a dubious translation:
+/- warning: set.preimage_Inter₂ -> Set.preimage_iInter₂ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {f : α -> β} {s : forall (i : ι), (κ i) -> (Set.{u2} β)}, Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α β f (Set.interᵢ.{u2, u3} β ι (fun (i : ι) => Set.interᵢ.{u2, u4} β (κ i) (fun (j : κ i) => s i j)))) (Set.interᵢ.{u1, u3} α ι (fun (i : ι) => Set.interᵢ.{u1, u4} α (κ i) (fun (j : κ i) => Set.preimage.{u1, u2} α β f (s i j))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {f : α -> β} {s : forall (i : ι), (κ i) -> (Set.{u2} β)}, Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α β f (Set.iInter.{u2, u3} β ι (fun (i : ι) => Set.iInter.{u2, u4} β (κ i) (fun (j : κ i) => s i j)))) (Set.iInter.{u1, u3} α ι (fun (i : ι) => Set.iInter.{u1, u4} α (κ i) (fun (j : κ i) => Set.preimage.{u1, u2} α β f (s i j))))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u4}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {f : α -> β} {s : forall (i : ι), (κ i) -> (Set.{u4} β)}, Eq.{succ u3} (Set.{u3} α) (Set.preimage.{u3, u4} α β f (Set.interᵢ.{u4, u2} β ι (fun (i : ι) => Set.interᵢ.{u4, u1} β (κ i) (fun (j : κ i) => s i j)))) (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, u1} α (κ i) (fun (j : κ i) => Set.preimage.{u3, u4} α β f (s i j))))
-Case conversion may be inaccurate. Consider using '#align set.preimage_Inter₂ Set.preimage_interᵢ₂ₓ'. -/
+ forall {α : Type.{u3}} {β : Type.{u4}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {f : α -> β} {s : forall (i : ι), (κ i) -> (Set.{u4} β)}, Eq.{succ u3} (Set.{u3} α) (Set.preimage.{u3, u4} α β f (Set.iInter.{u4, u2} β ι (fun (i : ι) => Set.iInter.{u4, u1} β (κ i) (fun (j : κ i) => s i j)))) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => Set.preimage.{u3, u4} α β f (s i j))))
+Case conversion may be inaccurate. Consider using '#align set.preimage_Inter₂ Set.preimage_iInter₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem preimage_interᵢ₂ {f : α → β} {s : ∀ i, κ i → Set β} :
+theorem preimage_iInter₂ {f : α → β} {s : ∀ i, κ i → Set β} :
(f ⁻¹' ⋂ (i) (j), s i j) = ⋂ (i) (j), f ⁻¹' s i j := by simp_rw [preimage_Inter]
-#align set.preimage_Inter₂ Set.preimage_interᵢ₂
+#align set.preimage_Inter₂ Set.preimage_iInter₂
-#print Set.preimage_interₛ /-
+#print Set.preimage_sInter /-
@[simp]
-theorem preimage_interₛ {f : α → β} {s : Set (Set β)} : f ⁻¹' ⋂₀ s = ⋂ t ∈ s, f ⁻¹' t := by
+theorem preimage_sInter {f : α → β} {s : Set (Set β)} : f ⁻¹' ⋂₀ s = ⋂ t ∈ s, f ⁻¹' t := by
rw [sInter_eq_bInter, preimage_Inter₂]
-#align set.preimage_sInter Set.preimage_interₛ
+#align set.preimage_sInter Set.preimage_sInter
-/
-#print Set.bunionᵢ_preimage_singleton /-
+#print Set.biUnion_preimage_singleton /-
@[simp]
-theorem bunionᵢ_preimage_singleton (f : α → β) (s : Set β) : (⋃ y ∈ s, f ⁻¹' {y}) = f ⁻¹' s := by
+theorem biUnion_preimage_singleton (f : α → β) (s : Set β) : (⋃ y ∈ s, f ⁻¹' {y}) = f ⁻¹' s := by
rw [← preimage_Union₂, bUnion_of_singleton]
-#align set.bUnion_preimage_singleton Set.bunionᵢ_preimage_singleton
+#align set.bUnion_preimage_singleton Set.biUnion_preimage_singleton
-/
-/- warning: set.bUnion_range_preimage_singleton -> Set.bunionᵢ_range_preimage_singleton is a dubious translation:
+/- warning: set.bUnion_range_preimage_singleton -> Set.biUnion_range_preimage_singleton is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β), Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, succ u2} α β (fun (y : β) => Set.unionᵢ.{u1, 0} α (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) y (Set.range.{u2, succ u1} β α f)) (fun (H : Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) y (Set.range.{u2, succ u1} β α f)) => Set.preimage.{u1, u2} α β f (Singleton.singleton.{u2, u2} β (Set.{u2} β) (Set.hasSingleton.{u2} β) y)))) (Set.univ.{u1} α)
+ forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, succ u2} α β (fun (y : β) => Set.iUnion.{u1, 0} α (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) y (Set.range.{u2, succ u1} β α f)) (fun (H : Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) y (Set.range.{u2, succ u1} β α f)) => Set.preimage.{u1, u2} α β f (Singleton.singleton.{u2, u2} β (Set.{u2} β) (Set.hasSingleton.{u2} β) y)))) (Set.univ.{u1} α)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β), Eq.{succ u2} (Set.{u2} α) (Set.unionᵢ.{u2, succ u1} α β (fun (y : β) => Set.unionᵢ.{u2, 0} α (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) y (Set.range.{u1, succ u2} β α f)) (fun (H : Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) y (Set.range.{u1, succ u2} β α f)) => Set.preimage.{u2, u1} α β f (Singleton.singleton.{u1, u1} β (Set.{u1} β) (Set.instSingletonSet.{u1} β) y)))) (Set.univ.{u2} α)
-Case conversion may be inaccurate. Consider using '#align set.bUnion_range_preimage_singleton Set.bunionᵢ_range_preimage_singletonₓ'. -/
-theorem bunionᵢ_range_preimage_singleton (f : α → β) : (⋃ y ∈ range f, f ⁻¹' {y}) = univ := by
+ forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β), Eq.{succ u2} (Set.{u2} α) (Set.iUnion.{u2, succ u1} α β (fun (y : β) => Set.iUnion.{u2, 0} α (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) y (Set.range.{u1, succ u2} β α f)) (fun (H : Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) y (Set.range.{u1, succ u2} β α f)) => Set.preimage.{u2, u1} α β f (Singleton.singleton.{u1, u1} β (Set.{u1} β) (Set.instSingletonSet.{u1} β) y)))) (Set.univ.{u2} α)
+Case conversion may be inaccurate. Consider using '#align set.bUnion_range_preimage_singleton Set.biUnion_range_preimage_singletonₓ'. -/
+theorem biUnion_range_preimage_singleton (f : α → β) : (⋃ y ∈ range f, f ⁻¹' {y}) = univ := by
rw [bUnion_preimage_singleton, preimage_range]
-#align set.bUnion_range_preimage_singleton Set.bunionᵢ_range_preimage_singleton
+#align set.bUnion_range_preimage_singleton Set.biUnion_range_preimage_singleton
end Preimage
section Prod
-/- warning: set.prod_Union -> Set.prod_unionᵢ is a dubious translation:
+/- warning: set.prod_Union -> Set.prod_iUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : Set.{u1} α} {t : ι -> (Set.{u2} β)}, Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β s (Set.unionᵢ.{u2, u3} β ι (fun (i : ι) => t i))) (Set.unionᵢ.{max u1 u2, u3} (Prod.{u1, u2} α β) ι (fun (i : ι) => Set.prod.{u1, u2} α β s (t i)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : Set.{u1} α} {t : ι -> (Set.{u2} β)}, Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β s (Set.iUnion.{u2, u3} β ι (fun (i : ι) => t i))) (Set.iUnion.{max u1 u2, u3} (Prod.{u1, u2} α β) ι (fun (i : ι) => Set.prod.{u1, u2} α β s (t i)))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : Set.{u3} α} {t : ι -> (Set.{u2} β)}, Eq.{max (succ u3) (succ u2)} (Set.{max u2 u3} (Prod.{u3, u2} α β)) (Set.prod.{u3, u2} α β s (Set.unionᵢ.{u2, u1} β ι (fun (i : ι) => t i))) (Set.unionᵢ.{max u2 u3, u1} (Prod.{u3, u2} α β) ι (fun (i : ι) => Set.prod.{u3, u2} α β s (t i)))
-Case conversion may be inaccurate. Consider using '#align set.prod_Union Set.prod_unionᵢₓ'. -/
+ forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : Set.{u3} α} {t : ι -> (Set.{u2} β)}, Eq.{max (succ u3) (succ u2)} (Set.{max u2 u3} (Prod.{u3, u2} α β)) (Set.prod.{u3, u2} α β s (Set.iUnion.{u2, u1} β ι (fun (i : ι) => t i))) (Set.iUnion.{max u2 u3, u1} (Prod.{u3, u2} α β) ι (fun (i : ι) => Set.prod.{u3, u2} α β s (t i)))
+Case conversion may be inaccurate. Consider using '#align set.prod_Union Set.prod_iUnionₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem prod_unionᵢ {s : Set α} {t : ι → Set β} : (s ×ˢ ⋃ i, t i) = ⋃ i, s ×ˢ t i :=
+theorem prod_iUnion {s : Set α} {t : ι → Set β} : (s ×ˢ ⋃ i, t i) = ⋃ i, s ×ˢ t i :=
by
ext
simp
-#align set.prod_Union Set.prod_unionᵢ
+#align set.prod_Union Set.prod_iUnion
-/- warning: set.prod_Union₂ -> Set.prod_unionᵢ₂ is a dubious translation:
+/- warning: set.prod_Union₂ -> Set.prod_iUnion₂ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {s : Set.{u1} α} {t : forall (i : ι), (κ i) -> (Set.{u2} β)}, Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β s (Set.unionᵢ.{u2, u3} β ι (fun (i : ι) => Set.unionᵢ.{u2, u4} β (κ i) (fun (j : κ i) => t i j)))) (Set.unionᵢ.{max u1 u2, u3} (Prod.{u1, u2} α β) ι (fun (i : ι) => Set.unionᵢ.{max u1 u2, u4} (Prod.{u1, u2} α β) (κ i) (fun (j : κ i) => Set.prod.{u1, u2} α β s (t i j))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {s : Set.{u1} α} {t : forall (i : ι), (κ i) -> (Set.{u2} β)}, Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β s (Set.iUnion.{u2, u3} β ι (fun (i : ι) => Set.iUnion.{u2, u4} β (κ i) (fun (j : κ i) => t i j)))) (Set.iUnion.{max u1 u2, u3} (Prod.{u1, u2} α β) ι (fun (i : ι) => Set.iUnion.{max u1 u2, u4} (Prod.{u1, u2} α β) (κ i) (fun (j : κ i) => Set.prod.{u1, u2} α β s (t i j))))
but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : Set.{u4} α} {t : forall (i : ι), (κ i) -> (Set.{u3} β)}, Eq.{max (succ u4) (succ u3)} (Set.{max u3 u4} (Prod.{u4, u3} α β)) (Set.prod.{u4, u3} α β s (Set.unionᵢ.{u3, u2} β ι (fun (i : ι) => Set.unionᵢ.{u3, u1} β (κ i) (fun (j : κ i) => t i j)))) (Set.unionᵢ.{max u3 u4, u2} (Prod.{u4, u3} α β) ι (fun (i : ι) => Set.unionᵢ.{max u3 u4, u1} (Prod.{u4, u3} α β) (κ i) (fun (j : κ i) => Set.prod.{u4, u3} α β s (t i j))))
-Case conversion may be inaccurate. Consider using '#align set.prod_Union₂ Set.prod_unionᵢ₂ₓ'. -/
+ forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : Set.{u4} α} {t : forall (i : ι), (κ i) -> (Set.{u3} β)}, Eq.{max (succ u4) (succ u3)} (Set.{max u3 u4} (Prod.{u4, u3} α β)) (Set.prod.{u4, u3} α β s (Set.iUnion.{u3, u2} β ι (fun (i : ι) => Set.iUnion.{u3, u1} β (κ i) (fun (j : κ i) => t i j)))) (Set.iUnion.{max u3 u4, u2} (Prod.{u4, u3} α β) ι (fun (i : ι) => Set.iUnion.{max u3 u4, u1} (Prod.{u4, u3} α β) (κ i) (fun (j : κ i) => Set.prod.{u4, u3} α β s (t i j))))
+Case conversion may be inaccurate. Consider using '#align set.prod_Union₂ Set.prod_iUnion₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem prod_unionᵢ₂ {s : Set α} {t : ∀ i, κ i → Set β} :
+theorem prod_iUnion₂ {s : Set α} {t : ∀ i, κ i → Set β} :
(s ×ˢ ⋃ (i) (j), t i j) = ⋃ (i) (j), s ×ˢ t i j := by simp_rw [prod_Union]
-#align set.prod_Union₂ Set.prod_unionᵢ₂
+#align set.prod_Union₂ Set.prod_iUnion₂
-/- warning: set.prod_sUnion -> Set.prod_unionₛ is a dubious translation:
+/- warning: set.prod_sUnion -> Set.prod_sUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {C : Set.{u2} (Set.{u2} β)}, Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β s (Set.unionₛ.{u2} β C)) (Set.unionₛ.{max u1 u2} (Prod.{u1, u2} α β) (Set.image.{u2, max u1 u2} (Set.{u2} β) (Set.{max u1 u2} (Prod.{u1, u2} α β)) (fun (t : Set.{u2} β) => Set.prod.{u1, u2} α β s t) C))
+ forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {C : Set.{u2} (Set.{u2} β)}, Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β s (Set.sUnion.{u2} β C)) (Set.sUnion.{max u1 u2} (Prod.{u1, u2} α β) (Set.image.{u2, max u1 u2} (Set.{u2} β) (Set.{max u1 u2} (Prod.{u1, u2} α β)) (fun (t : Set.{u2} β) => Set.prod.{u1, u2} α β s t) C))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {C : Set.{u1} (Set.{u1} β)}, Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Prod.{u2, u1} α β)) (Set.prod.{u2, u1} α β s (Set.unionₛ.{u1} β C)) (Set.unionₛ.{max u1 u2} (Prod.{u2, u1} α β) (Set.image.{u1, max u1 u2} (Set.{u1} β) (Set.{max u1 u2} (Prod.{u2, u1} α β)) (fun (t : Set.{u1} β) => Set.prod.{u2, u1} α β s t) C))
-Case conversion may be inaccurate. Consider using '#align set.prod_sUnion Set.prod_unionₛₓ'. -/
+ forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {C : Set.{u1} (Set.{u1} β)}, Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Prod.{u2, u1} α β)) (Set.prod.{u2, u1} α β s (Set.sUnion.{u1} β C)) (Set.sUnion.{max u1 u2} (Prod.{u2, u1} α β) (Set.image.{u1, max u1 u2} (Set.{u1} β) (Set.{max u1 u2} (Prod.{u2, u1} α β)) (fun (t : Set.{u1} β) => Set.prod.{u2, u1} α β s t) C))
+Case conversion may be inaccurate. Consider using '#align set.prod_sUnion Set.prod_sUnionₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem prod_unionₛ {s : Set α} {C : Set (Set β)} : s ×ˢ ⋃₀ C = ⋃₀ ((fun t => s ×ˢ t) '' C) := by
+theorem prod_sUnion {s : Set α} {C : Set (Set β)} : s ×ˢ ⋃₀ C = ⋃₀ ((fun t => s ×ˢ t) '' C) := by
simp_rw [sUnion_eq_bUnion, bUnion_image, prod_Union₂]
-#align set.prod_sUnion Set.prod_unionₛ
+#align set.prod_sUnion Set.prod_sUnion
-/- warning: set.Union_prod_const -> Set.unionᵢ_prod_const is a dubious translation:
+/- warning: set.Union_prod_const -> Set.iUnion_prod_const is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)} {t : Set.{u2} β}, Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => s i)) t) (Set.unionᵢ.{max u1 u2, u3} (Prod.{u1, u2} α β) ι (fun (i : ι) => Set.prod.{u1, u2} α β (s i) t))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)} {t : Set.{u2} β}, Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i)) t) (Set.iUnion.{max u1 u2, u3} (Prod.{u1, u2} α β) ι (fun (i : ι) => Set.prod.{u1, u2} α β (s i) t))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u3} α)} {t : Set.{u2} β}, Eq.{max (succ u3) (succ u2)} (Set.{max u2 u3} (Prod.{u3, u2} α β)) (Set.prod.{u3, u2} α β (Set.unionᵢ.{u3, u1} α ι (fun (i : ι) => s i)) t) (Set.unionᵢ.{max u2 u3, u1} (Prod.{u3, u2} α β) ι (fun (i : ι) => Set.prod.{u3, u2} α β (s i) t))
-Case conversion may be inaccurate. Consider using '#align set.Union_prod_const Set.unionᵢ_prod_constₓ'. -/
+ forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} {s : ι -> (Set.{u3} α)} {t : Set.{u2} β}, Eq.{max (succ u3) (succ u2)} (Set.{max u2 u3} (Prod.{u3, u2} α β)) (Set.prod.{u3, u2} α β (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i)) t) (Set.iUnion.{max u2 u3, u1} (Prod.{u3, u2} α β) ι (fun (i : ι) => Set.prod.{u3, u2} α β (s i) t))
+Case conversion may be inaccurate. Consider using '#align set.Union_prod_const Set.iUnion_prod_constₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem unionᵢ_prod_const {s : ι → Set α} {t : Set β} : (⋃ i, s i) ×ˢ t = ⋃ i, s i ×ˢ t :=
+theorem iUnion_prod_const {s : ι → Set α} {t : Set β} : (⋃ i, s i) ×ˢ t = ⋃ i, s i ×ˢ t :=
by
ext
simp
-#align set.Union_prod_const Set.unionᵢ_prod_const
+#align set.Union_prod_const Set.iUnion_prod_const
-/- warning: set.Union₂_prod_const -> Set.unionᵢ₂_prod_const is a dubious translation:
+/- warning: set.Union₂_prod_const -> Set.iUnion₂_prod_const is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : Set.{u2} β}, Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => Set.unionᵢ.{u1, u4} α (κ i) (fun (j : κ i) => s i j))) t) (Set.unionᵢ.{max u1 u2, u3} (Prod.{u1, u2} α β) ι (fun (i : ι) => Set.unionᵢ.{max u1 u2, u4} (Prod.{u1, u2} α β) (κ i) (fun (j : κ i) => Set.prod.{u1, u2} α β (s i j) t)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {κ : ι -> Sort.{u4}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : Set.{u2} β}, Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β (Set.iUnion.{u1, u3} α ι (fun (i : ι) => Set.iUnion.{u1, u4} α (κ i) (fun (j : κ i) => s i j))) t) (Set.iUnion.{max u1 u2, u3} (Prod.{u1, u2} α β) ι (fun (i : ι) => Set.iUnion.{max u1 u2, u4} (Prod.{u1, u2} α β) (κ i) (fun (j : κ i) => Set.prod.{u1, u2} α β (s i j) t)))
but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u4} α)} {t : Set.{u3} β}, Eq.{max (succ u4) (succ u3)} (Set.{max u3 u4} (Prod.{u4, u3} α β)) (Set.prod.{u4, u3} α β (Set.unionᵢ.{u4, u2} α ι (fun (i : ι) => Set.unionᵢ.{u4, u1} α (κ i) (fun (j : κ i) => s i j))) t) (Set.unionᵢ.{max u3 u4, u2} (Prod.{u4, u3} α β) ι (fun (i : ι) => Set.unionᵢ.{max u3 u4, u1} (Prod.{u4, u3} α β) (κ i) (fun (j : κ i) => Set.prod.{u4, u3} α β (s i j) t)))
-Case conversion may be inaccurate. Consider using '#align set.Union₂_prod_const Set.unionᵢ₂_prod_constₓ'. -/
+ forall {α : Type.{u4}} {β : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u4} α)} {t : Set.{u3} β}, Eq.{max (succ u4) (succ u3)} (Set.{max u3 u4} (Prod.{u4, u3} α β)) (Set.prod.{u4, u3} α β (Set.iUnion.{u4, u2} α ι (fun (i : ι) => Set.iUnion.{u4, u1} α (κ i) (fun (j : κ i) => s i j))) t) (Set.iUnion.{max u3 u4, u2} (Prod.{u4, u3} α β) ι (fun (i : ι) => Set.iUnion.{max u3 u4, u1} (Prod.{u4, u3} α β) (κ i) (fun (j : κ i) => Set.prod.{u4, u3} α β (s i j) t)))
+Case conversion may be inaccurate. Consider using '#align set.Union₂_prod_const Set.iUnion₂_prod_constₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem unionᵢ₂_prod_const {s : ∀ i, κ i → Set α} {t : Set β} :
+theorem iUnion₂_prod_const {s : ∀ i, κ i → Set α} {t : Set β} :
(⋃ (i) (j), s i j) ×ˢ t = ⋃ (i) (j), s i j ×ˢ t := by simp_rw [Union_prod_const]
-#align set.Union₂_prod_const Set.unionᵢ₂_prod_const
+#align set.Union₂_prod_const Set.iUnion₂_prod_const
-/- warning: set.sUnion_prod_const -> Set.unionₛ_prod_const is a dubious translation:
+/- warning: set.sUnion_prod_const -> Set.sUnion_prod_const is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {C : Set.{u1} (Set.{u1} α)} {t : Set.{u2} β}, Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β (Set.unionₛ.{u1} α C) t) (Set.unionₛ.{max u1 u2} (Prod.{u1, u2} α β) (Set.image.{u1, max u1 u2} (Set.{u1} α) (Set.{max u1 u2} (Prod.{u1, u2} α β)) (fun (s : Set.{u1} α) => Set.prod.{u1, u2} α β s t) C))
+ forall {α : Type.{u1}} {β : Type.{u2}} {C : Set.{u1} (Set.{u1} α)} {t : Set.{u2} β}, Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β (Set.sUnion.{u1} α C) t) (Set.sUnion.{max u1 u2} (Prod.{u1, u2} α β) (Set.image.{u1, max u1 u2} (Set.{u1} α) (Set.{max u1 u2} (Prod.{u1, u2} α β)) (fun (s : Set.{u1} α) => Set.prod.{u1, u2} α β s t) C))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {C : Set.{u2} (Set.{u2} α)} {t : Set.{u1} β}, Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Prod.{u2, u1} α β)) (Set.prod.{u2, u1} α β (Set.unionₛ.{u2} α C) t) (Set.unionₛ.{max u1 u2} (Prod.{u2, u1} α β) (Set.image.{u2, max u1 u2} (Set.{u2} α) (Set.{max u1 u2} (Prod.{u2, u1} α β)) (fun (s : Set.{u2} α) => Set.prod.{u2, u1} α β s t) C))
-Case conversion may be inaccurate. Consider using '#align set.sUnion_prod_const Set.unionₛ_prod_constₓ'. -/
+ forall {α : Type.{u2}} {β : Type.{u1}} {C : Set.{u2} (Set.{u2} α)} {t : Set.{u1} β}, Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Prod.{u2, u1} α β)) (Set.prod.{u2, u1} α β (Set.sUnion.{u2} α C) t) (Set.sUnion.{max u1 u2} (Prod.{u2, u1} α β) (Set.image.{u2, max u1 u2} (Set.{u2} α) (Set.{max u1 u2} (Prod.{u2, u1} α β)) (fun (s : Set.{u2} α) => Set.prod.{u2, u1} α β s t) C))
+Case conversion may be inaccurate. Consider using '#align set.sUnion_prod_const Set.sUnion_prod_constₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem unionₛ_prod_const {C : Set (Set α)} {t : Set β} :
+theorem sUnion_prod_const {C : Set (Set α)} {t : Set β} :
⋃₀ C ×ˢ t = ⋃₀ ((fun s : Set α => s ×ˢ t) '' C) := by
simp only [sUnion_eq_bUnion, Union₂_prod_const, bUnion_image]
-#align set.sUnion_prod_const Set.unionₛ_prod_const
+#align set.sUnion_prod_const Set.sUnion_prod_const
-/- warning: set.Union_prod -> Set.unionᵢ_prod is a dubious translation:
+/- warning: set.Union_prod -> Set.iUnion_prod is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {ι' : Type.{u2}} {α : Type.{u3}} {β : Type.{u4}} (s : ι -> (Set.{u3} α)) (t : ι' -> (Set.{u4} β)), Eq.{succ (max u3 u4)} (Set.{max u3 u4} (Prod.{u3, u4} α β)) (Set.unionᵢ.{max u3 u4, max (succ u1) (succ u2)} (Prod.{u3, u4} α β) (Prod.{u1, u2} ι ι') (fun (x : Prod.{u1, u2} ι ι') => Set.prod.{u3, u4} α β (s (Prod.fst.{u1, u2} ι ι' x)) (t (Prod.snd.{u1, u2} ι ι' x)))) (Set.prod.{u3, u4} α β (Set.unionᵢ.{u3, succ u1} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u4, succ u2} β ι' (fun (i : ι') => t i)))
+ forall {ι : Type.{u1}} {ι' : Type.{u2}} {α : Type.{u3}} {β : Type.{u4}} (s : ι -> (Set.{u3} α)) (t : ι' -> (Set.{u4} β)), Eq.{succ (max u3 u4)} (Set.{max u3 u4} (Prod.{u3, u4} α β)) (Set.iUnion.{max u3 u4, max (succ u1) (succ u2)} (Prod.{u3, u4} α β) (Prod.{u1, u2} ι ι') (fun (x : Prod.{u1, u2} ι ι') => Set.prod.{u3, u4} α β (s (Prod.fst.{u1, u2} ι ι' x)) (t (Prod.snd.{u1, u2} ι ι' x)))) (Set.prod.{u3, u4} α β (Set.iUnion.{u3, succ u1} α ι (fun (i : ι) => s i)) (Set.iUnion.{u4, succ u2} β ι' (fun (i : ι') => t i)))
but is expected to have type
- forall {ι : Type.{u4}} {ι' : Type.{u3}} {α : Type.{u2}} {β : Type.{u1}} (s : ι -> (Set.{u2} α)) (t : ι' -> (Set.{u1} β)), Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Prod.{u2, u1} α β)) (Set.unionᵢ.{max u1 u2, max (succ u3) (succ u4)} (Prod.{u2, u1} α β) (Prod.{u4, u3} ι ι') (fun (x : Prod.{u4, u3} ι ι') => Set.prod.{u2, u1} α β (s (Prod.fst.{u4, u3} ι ι' x)) (t (Prod.snd.{u4, u3} ι ι' x)))) (Set.prod.{u2, u1} α β (Set.unionᵢ.{u2, succ u4} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u1, succ u3} β ι' (fun (i : ι') => t i)))
-Case conversion may be inaccurate. Consider using '#align set.Union_prod Set.unionᵢ_prodₓ'. -/
+ forall {ι : Type.{u4}} {ι' : Type.{u3}} {α : Type.{u2}} {β : Type.{u1}} (s : ι -> (Set.{u2} α)) (t : ι' -> (Set.{u1} β)), Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Prod.{u2, u1} α β)) (Set.iUnion.{max u1 u2, max (succ u3) (succ u4)} (Prod.{u2, u1} α β) (Prod.{u4, u3} ι ι') (fun (x : Prod.{u4, u3} ι ι') => Set.prod.{u2, u1} α β (s (Prod.fst.{u4, u3} ι ι' x)) (t (Prod.snd.{u4, u3} ι ι' x)))) (Set.prod.{u2, u1} α β (Set.iUnion.{u2, succ u4} α ι (fun (i : ι) => s i)) (Set.iUnion.{u1, succ u3} β ι' (fun (i : ι') => t i)))
+Case conversion may be inaccurate. Consider using '#align set.Union_prod Set.iUnion_prodₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem unionᵢ_prod {ι ι' α β} (s : ι → Set α) (t : ι' → Set β) :
+theorem iUnion_prod {ι ι' α β} (s : ι → Set α) (t : ι' → Set β) :
(⋃ x : ι × ι', s x.1 ×ˢ t x.2) = (⋃ i : ι, s i) ×ˢ ⋃ i : ι', t i :=
by
ext
simp
-#align set.Union_prod Set.unionᵢ_prod
+#align set.Union_prod Set.iUnion_prod
-/- warning: set.Union_prod_of_monotone -> Set.unionᵢ_prod_of_monotone is a dubious translation:
+/- warning: set.Union_prod_of_monotone -> Set.iUnion_prod_of_monotone is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : SemilatticeSup.{u1} α] {s : α -> (Set.{u2} β)} {t : α -> (Set.{u3} γ)}, (Monotone.{u1, u2} α (Set.{u2} β) (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.completeBooleanAlgebra.{u2} β))))))) s) -> (Monotone.{u1, u3} α (Set.{u3} γ) (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} (Set.{u3} γ) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} γ) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} γ) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} γ) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} γ) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} γ) (Set.completeBooleanAlgebra.{u3} γ))))))) t) -> (Eq.{succ (max u2 u3)} (Set.{max u2 u3} (Prod.{u2, u3} β γ)) (Set.unionᵢ.{max u2 u3, succ u1} (Prod.{u2, u3} β γ) α (fun (x : α) => Set.prod.{u2, u3} β γ (s x) (t x))) (Set.prod.{u2, u3} β γ (Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => s x)) (Set.unionᵢ.{u3, succ u1} γ α (fun (x : α) => t x))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : SemilatticeSup.{u1} α] {s : α -> (Set.{u2} β)} {t : α -> (Set.{u3} γ)}, (Monotone.{u1, u2} α (Set.{u2} β) (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.completeBooleanAlgebra.{u2} β))))))) s) -> (Monotone.{u1, u3} α (Set.{u3} γ) (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} (Set.{u3} γ) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} γ) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} γ) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} γ) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} γ) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} γ) (Set.completeBooleanAlgebra.{u3} γ))))))) t) -> (Eq.{succ (max u2 u3)} (Set.{max u2 u3} (Prod.{u2, u3} β γ)) (Set.iUnion.{max u2 u3, succ u1} (Prod.{u2, u3} β γ) α (fun (x : α) => Set.prod.{u2, u3} β γ (s x) (t x))) (Set.prod.{u2, u3} β γ (Set.iUnion.{u2, succ u1} β α (fun (x : α) => s x)) (Set.iUnion.{u3, succ u1} γ α (fun (x : α) => t x))))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : SemilatticeSup.{u3} α] {s : α -> (Set.{u2} β)} {t : α -> (Set.{u1} γ)}, (Monotone.{u3, u2} α (Set.{u2} β) (PartialOrder.toPreorder.{u3} α (SemilatticeSup.toPartialOrder.{u3} α _inst_1)) (PartialOrder.toPreorder.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.instCompleteBooleanAlgebraSet.{u2} β))))))) s) -> (Monotone.{u3, u1} α (Set.{u1} γ) (PartialOrder.toPreorder.{u3} α (SemilatticeSup.toPartialOrder.{u3} α _inst_1)) (PartialOrder.toPreorder.{u1} (Set.{u1} γ) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} γ) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} γ) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} γ) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} γ) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} γ) (Set.instCompleteBooleanAlgebraSet.{u1} γ))))))) t) -> (Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Prod.{u2, u1} β γ)) (Set.unionᵢ.{max u1 u2, succ u3} (Prod.{u2, u1} β γ) α (fun (x : α) => Set.prod.{u2, u1} β γ (s x) (t x))) (Set.prod.{u2, u1} β γ (Set.unionᵢ.{u2, succ u3} β α (fun (x : α) => s x)) (Set.unionᵢ.{u1, succ u3} γ α (fun (x : α) => t x))))
-Case conversion may be inaccurate. Consider using '#align set.Union_prod_of_monotone Set.unionᵢ_prod_of_monotoneₓ'. -/
+ forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : SemilatticeSup.{u3} α] {s : α -> (Set.{u2} β)} {t : α -> (Set.{u1} γ)}, (Monotone.{u3, u2} α (Set.{u2} β) (PartialOrder.toPreorder.{u3} α (SemilatticeSup.toPartialOrder.{u3} α _inst_1)) (PartialOrder.toPreorder.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.instCompleteBooleanAlgebraSet.{u2} β))))))) s) -> (Monotone.{u3, u1} α (Set.{u1} γ) (PartialOrder.toPreorder.{u3} α (SemilatticeSup.toPartialOrder.{u3} α _inst_1)) (PartialOrder.toPreorder.{u1} (Set.{u1} γ) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} γ) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} γ) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} γ) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} γ) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} γ) (Set.instCompleteBooleanAlgebraSet.{u1} γ))))))) t) -> (Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Prod.{u2, u1} β γ)) (Set.iUnion.{max u1 u2, succ u3} (Prod.{u2, u1} β γ) α (fun (x : α) => Set.prod.{u2, u1} β γ (s x) (t x))) (Set.prod.{u2, u1} β γ (Set.iUnion.{u2, succ u3} β α (fun (x : α) => s x)) (Set.iUnion.{u1, succ u3} γ α (fun (x : α) => t x))))
+Case conversion may be inaccurate. Consider using '#align set.Union_prod_of_monotone Set.iUnion_prod_of_monotoneₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem unionᵢ_prod_of_monotone [SemilatticeSup α] {s : α → Set β} {t : α → Set γ} (hs : Monotone s)
+theorem iUnion_prod_of_monotone [SemilatticeSup α] {s : α → Set β} {t : α → Set γ} (hs : Monotone s)
(ht : Monotone t) : (⋃ x, s x ×ˢ t x) = (⋃ x, s x) ×ˢ ⋃ x, t x :=
by
ext ⟨z, w⟩; simp only [mem_prod, mem_Union, exists_imp, and_imp, iff_def]; constructor
@@ -3396,32 +3396,32 @@ theorem unionᵢ_prod_of_monotone [SemilatticeSup α] {s : α → Set β} {t :
exact ⟨⟨x, hz⟩, x, hw⟩
· intro x hz x' hw
exact ⟨x ⊔ x', hs le_sup_left hz, ht le_sup_right hw⟩
-#align set.Union_prod_of_monotone Set.unionᵢ_prod_of_monotone
+#align set.Union_prod_of_monotone Set.iUnion_prod_of_monotone
-/- warning: set.sInter_prod_sInter_subset -> Set.interₛ_prod_interₛ_subset is a dubious translation:
+/- warning: set.sInter_prod_sInter_subset -> Set.sInter_prod_sInter_subset is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (S : Set.{u1} (Set.{u1} α)) (T : Set.{u2} (Set.{u2} β)), HasSubset.Subset.{max u1 u2} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.hasSubset.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β (Set.interₛ.{u1} α S) (Set.interₛ.{u2} β T)) (Set.interᵢ.{max u1 u2, succ (max u1 u2)} (Prod.{u1, u2} α β) (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β)) (fun (r : Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β)) => Set.interᵢ.{max u1 u2, 0} (Prod.{u1, u2} α β) (Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β)) (Set.{max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β))) (Set.hasMem.{max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β))) r (Set.prod.{u1, u2} (Set.{u1} α) (Set.{u2} β) S T)) (fun (H : Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β)) (Set.{max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β))) (Set.hasMem.{max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β))) r (Set.prod.{u1, u2} (Set.{u1} α) (Set.{u2} β) S T)) => Set.prod.{u1, u2} α β (Prod.fst.{u1, u2} (Set.{u1} α) (Set.{u2} β) r) (Prod.snd.{u1, u2} (Set.{u1} α) (Set.{u2} β) r))))
+ forall {α : Type.{u1}} {β : Type.{u2}} (S : Set.{u1} (Set.{u1} α)) (T : Set.{u2} (Set.{u2} β)), HasSubset.Subset.{max u1 u2} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.hasSubset.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β (Set.sInter.{u1} α S) (Set.sInter.{u2} β T)) (Set.iInter.{max u1 u2, succ (max u1 u2)} (Prod.{u1, u2} α β) (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β)) (fun (r : Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β)) => Set.iInter.{max u1 u2, 0} (Prod.{u1, u2} α β) (Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β)) (Set.{max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β))) (Set.hasMem.{max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β))) r (Set.prod.{u1, u2} (Set.{u1} α) (Set.{u2} β) S T)) (fun (H : Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β)) (Set.{max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β))) (Set.hasMem.{max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β))) r (Set.prod.{u1, u2} (Set.{u1} α) (Set.{u2} β) S T)) => Set.prod.{u1, u2} α β (Prod.fst.{u1, u2} (Set.{u1} α) (Set.{u2} β) r) (Prod.snd.{u1, u2} (Set.{u1} α) (Set.{u2} β) r))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (S : Set.{u2} (Set.{u2} α)) (T : Set.{u1} (Set.{u1} β)), HasSubset.Subset.{max u1 u2} (Set.{max u1 u2} (Prod.{u2, u1} α β)) (Set.instHasSubsetSet.{max u2 u1} (Prod.{u2, u1} α β)) (Set.prod.{u2, u1} α β (Set.interₛ.{u2} α S) (Set.interₛ.{u1} β T)) (Set.interᵢ.{max u2 u1, succ (max u2 u1)} (Prod.{u2, u1} α β) (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β)) (fun (r : Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β)) => Set.interᵢ.{max u2 u1, 0} (Prod.{u2, u1} α β) (Membership.mem.{max u2 u1, max u1 u2} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β)) (Set.{max u1 u2} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β))) (Set.instMembershipSet.{max u2 u1} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β))) r (Set.prod.{u2, u1} (Set.{u2} α) (Set.{u1} β) S T)) (fun (H : Membership.mem.{max u2 u1, max u1 u2} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β)) (Set.{max u1 u2} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β))) (Set.instMembershipSet.{max u2 u1} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β))) r (Set.prod.{u2, u1} (Set.{u2} α) (Set.{u1} β) S T)) => Set.prod.{u2, u1} α β (Prod.fst.{u2, u1} (Set.{u2} α) (Set.{u1} β) r) (Prod.snd.{u2, u1} (Set.{u2} α) (Set.{u1} β) r))))
-Case conversion may be inaccurate. Consider using '#align set.sInter_prod_sInter_subset Set.interₛ_prod_interₛ_subsetₓ'. -/
+ forall {α : Type.{u2}} {β : Type.{u1}} (S : Set.{u2} (Set.{u2} α)) (T : Set.{u1} (Set.{u1} β)), HasSubset.Subset.{max u1 u2} (Set.{max u1 u2} (Prod.{u2, u1} α β)) (Set.instHasSubsetSet.{max u2 u1} (Prod.{u2, u1} α β)) (Set.prod.{u2, u1} α β (Set.sInter.{u2} α S) (Set.sInter.{u1} β T)) (Set.iInter.{max u2 u1, succ (max u2 u1)} (Prod.{u2, u1} α β) (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β)) (fun (r : Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β)) => Set.iInter.{max u2 u1, 0} (Prod.{u2, u1} α β) (Membership.mem.{max u2 u1, max u1 u2} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β)) (Set.{max u1 u2} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β))) (Set.instMembershipSet.{max u2 u1} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β))) r (Set.prod.{u2, u1} (Set.{u2} α) (Set.{u1} β) S T)) (fun (H : Membership.mem.{max u2 u1, max u1 u2} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β)) (Set.{max u1 u2} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β))) (Set.instMembershipSet.{max u2 u1} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β))) r (Set.prod.{u2, u1} (Set.{u2} α) (Set.{u1} β) S T)) => Set.prod.{u2, u1} α β (Prod.fst.{u2, u1} (Set.{u2} α) (Set.{u1} β) r) (Prod.snd.{u2, u1} (Set.{u2} α) (Set.{u1} β) r))))
+Case conversion may be inaccurate. Consider using '#align set.sInter_prod_sInter_subset Set.sInter_prod_sInter_subsetₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem interₛ_prod_interₛ_subset (S : Set (Set α)) (T : Set (Set β)) :
+theorem sInter_prod_sInter_subset (S : Set (Set α)) (T : Set (Set β)) :
⋂₀ S ×ˢ ⋂₀ T ⊆ ⋂ r ∈ S ×ˢ T, r.1 ×ˢ r.2 :=
- subset_interᵢ₂ fun x hx y hy => ⟨hy.1 x.1 hx.1, hy.2 x.2 hx.2⟩
-#align set.sInter_prod_sInter_subset Set.interₛ_prod_interₛ_subset
+ subset_iInter₂ fun x hx y hy => ⟨hy.1 x.1 hx.1, hy.2 x.2 hx.2⟩
+#align set.sInter_prod_sInter_subset Set.sInter_prod_sInter_subset
-/- warning: set.sInter_prod_sInter -> Set.interₛ_prod_interₛ is a dubious translation:
+/- warning: set.sInter_prod_sInter -> Set.sInter_prod_sInter is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {S : Set.{u1} (Set.{u1} α)} {T : Set.{u2} (Set.{u2} β)}, (Set.Nonempty.{u1} (Set.{u1} α) S) -> (Set.Nonempty.{u2} (Set.{u2} β) T) -> (Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β (Set.interₛ.{u1} α S) (Set.interₛ.{u2} β T)) (Set.interᵢ.{max u1 u2, succ (max u1 u2)} (Prod.{u1, u2} α β) (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β)) (fun (r : Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β)) => Set.interᵢ.{max u1 u2, 0} (Prod.{u1, u2} α β) (Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β)) (Set.{max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β))) (Set.hasMem.{max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β))) r (Set.prod.{u1, u2} (Set.{u1} α) (Set.{u2} β) S T)) (fun (H : Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β)) (Set.{max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β))) (Set.hasMem.{max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β))) r (Set.prod.{u1, u2} (Set.{u1} α) (Set.{u2} β) S T)) => Set.prod.{u1, u2} α β (Prod.fst.{u1, u2} (Set.{u1} α) (Set.{u2} β) r) (Prod.snd.{u1, u2} (Set.{u1} α) (Set.{u2} β) r)))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {S : Set.{u1} (Set.{u1} α)} {T : Set.{u2} (Set.{u2} β)}, (Set.Nonempty.{u1} (Set.{u1} α) S) -> (Set.Nonempty.{u2} (Set.{u2} β) T) -> (Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β (Set.sInter.{u1} α S) (Set.sInter.{u2} β T)) (Set.iInter.{max u1 u2, succ (max u1 u2)} (Prod.{u1, u2} α β) (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β)) (fun (r : Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β)) => Set.iInter.{max u1 u2, 0} (Prod.{u1, u2} α β) (Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β)) (Set.{max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β))) (Set.hasMem.{max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β))) r (Set.prod.{u1, u2} (Set.{u1} α) (Set.{u2} β) S T)) (fun (H : Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β)) (Set.{max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β))) (Set.hasMem.{max u1 u2} (Prod.{u1, u2} (Set.{u1} α) (Set.{u2} β))) r (Set.prod.{u1, u2} (Set.{u1} α) (Set.{u2} β) S T)) => Set.prod.{u1, u2} α β (Prod.fst.{u1, u2} (Set.{u1} α) (Set.{u2} β) r) (Prod.snd.{u1, u2} (Set.{u1} α) (Set.{u2} β) r)))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {S : Set.{u2} (Set.{u2} α)} {T : Set.{u1} (Set.{u1} β)}, (Set.Nonempty.{u2} (Set.{u2} α) S) -> (Set.Nonempty.{u1} (Set.{u1} β) T) -> (Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Prod.{u2, u1} α β)) (Set.prod.{u2, u1} α β (Set.interₛ.{u2} α S) (Set.interₛ.{u1} β T)) (Set.interᵢ.{max u1 u2, succ (max u2 u1)} (Prod.{u2, u1} α β) (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β)) (fun (r : Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β)) => Set.interᵢ.{max u1 u2, 0} (Prod.{u2, u1} α β) (Membership.mem.{max u2 u1, max u1 u2} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β)) (Set.{max u1 u2} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β))) (Set.instMembershipSet.{max u2 u1} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β))) r (Set.prod.{u2, u1} (Set.{u2} α) (Set.{u1} β) S T)) (fun (H : Membership.mem.{max u2 u1, max u1 u2} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β)) (Set.{max u1 u2} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β))) (Set.instMembershipSet.{max u2 u1} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β))) r (Set.prod.{u2, u1} (Set.{u2} α) (Set.{u1} β) S T)) => Set.prod.{u2, u1} α β (Prod.fst.{u2, u1} (Set.{u2} α) (Set.{u1} β) r) (Prod.snd.{u2, u1} (Set.{u2} α) (Set.{u1} β) r)))))
-Case conversion may be inaccurate. Consider using '#align set.sInter_prod_sInter Set.interₛ_prod_interₛₓ'. -/
+ forall {α : Type.{u2}} {β : Type.{u1}} {S : Set.{u2} (Set.{u2} α)} {T : Set.{u1} (Set.{u1} β)}, (Set.Nonempty.{u2} (Set.{u2} α) S) -> (Set.Nonempty.{u1} (Set.{u1} β) T) -> (Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Prod.{u2, u1} α β)) (Set.prod.{u2, u1} α β (Set.sInter.{u2} α S) (Set.sInter.{u1} β T)) (Set.iInter.{max u1 u2, succ (max u2 u1)} (Prod.{u2, u1} α β) (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β)) (fun (r : Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β)) => Set.iInter.{max u1 u2, 0} (Prod.{u2, u1} α β) (Membership.mem.{max u2 u1, max u1 u2} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β)) (Set.{max u1 u2} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β))) (Set.instMembershipSet.{max u2 u1} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β))) r (Set.prod.{u2, u1} (Set.{u2} α) (Set.{u1} β) S T)) (fun (H : Membership.mem.{max u2 u1, max u1 u2} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β)) (Set.{max u1 u2} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β))) (Set.instMembershipSet.{max u2 u1} (Prod.{u2, u1} (Set.{u2} α) (Set.{u1} β))) r (Set.prod.{u2, u1} (Set.{u2} α) (Set.{u1} β) S T)) => Set.prod.{u2, u1} α β (Prod.fst.{u2, u1} (Set.{u2} α) (Set.{u1} β) r) (Prod.snd.{u2, u1} (Set.{u2} α) (Set.{u1} β) r)))))
+Case conversion may be inaccurate. Consider using '#align set.sInter_prod_sInter Set.sInter_prod_sInterₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem interₛ_prod_interₛ {S : Set (Set α)} {T : Set (Set β)} (hS : S.Nonempty) (hT : T.Nonempty) :
+theorem sInter_prod_sInter {S : Set (Set α)} {T : Set (Set β)} (hS : S.Nonempty) (hT : T.Nonempty) :
⋂₀ S ×ˢ ⋂₀ T = ⋂ r ∈ S ×ˢ T, r.1 ×ˢ r.2 :=
by
obtain ⟨s₁, h₁⟩ := hS
@@ -3429,30 +3429,30 @@ theorem interₛ_prod_interₛ {S : Set (Set α)} {T : Set (Set β)} (hS : S.Non
refine' Set.Subset.antisymm (sInter_prod_sInter_subset S T) fun x hx => _
rw [mem_Inter₂] at hx
exact ⟨fun s₀ h₀ => (hx (s₀, s₂) ⟨h₀, h₂⟩).1, fun s₀ h₀ => (hx (s₁, s₀) ⟨h₁, h₀⟩).2⟩
-#align set.sInter_prod_sInter Set.interₛ_prod_interₛ
+#align set.sInter_prod_sInter Set.sInter_prod_sInter
-/- warning: set.sInter_prod -> Set.interₛ_prod is a dubious translation:
+/- warning: set.sInter_prod -> Set.sInter_prod is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {S : Set.{u1} (Set.{u1} α)}, (Set.Nonempty.{u1} (Set.{u1} α) S) -> (forall (t : Set.{u2} β), Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β (Set.interₛ.{u1} α S) t) (Set.interᵢ.{max u1 u2, succ u1} (Prod.{u1, u2} α β) (Set.{u1} α) (fun (s : Set.{u1} α) => Set.interᵢ.{max u1 u2, 0} (Prod.{u1, u2} α β) (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s S) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s S) => Set.prod.{u1, u2} α β s t))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {S : Set.{u1} (Set.{u1} α)}, (Set.Nonempty.{u1} (Set.{u1} α) S) -> (forall (t : Set.{u2} β), Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β (Set.sInter.{u1} α S) t) (Set.iInter.{max u1 u2, succ u1} (Prod.{u1, u2} α β) (Set.{u1} α) (fun (s : Set.{u1} α) => Set.iInter.{max u1 u2, 0} (Prod.{u1, u2} α β) (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s S) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s S) => Set.prod.{u1, u2} α β s t))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {S : Set.{u2} (Set.{u2} α)}, (Set.Nonempty.{u2} (Set.{u2} α) S) -> (forall (t : Set.{u1} β), Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Prod.{u2, u1} α β)) (Set.prod.{u2, u1} α β (Set.interₛ.{u2} α S) t) (Set.interᵢ.{max u1 u2, succ u2} (Prod.{u2, u1} α β) (Set.{u2} α) (fun (s : Set.{u2} α) => Set.interᵢ.{max u1 u2, 0} (Prod.{u2, u1} α β) (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) s S) (fun (H : Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) s S) => Set.prod.{u2, u1} α β s t))))
-Case conversion may be inaccurate. Consider using '#align set.sInter_prod Set.interₛ_prodₓ'. -/
+ forall {α : Type.{u2}} {β : Type.{u1}} {S : Set.{u2} (Set.{u2} α)}, (Set.Nonempty.{u2} (Set.{u2} α) S) -> (forall (t : Set.{u1} β), Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Prod.{u2, u1} α β)) (Set.prod.{u2, u1} α β (Set.sInter.{u2} α S) t) (Set.iInter.{max u1 u2, succ u2} (Prod.{u2, u1} α β) (Set.{u2} α) (fun (s : Set.{u2} α) => Set.iInter.{max u1 u2, 0} (Prod.{u2, u1} α β) (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) s S) (fun (H : Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) s S) => Set.prod.{u2, u1} α β s t))))
+Case conversion may be inaccurate. Consider using '#align set.sInter_prod Set.sInter_prodₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem interₛ_prod {S : Set (Set α)} (hS : S.Nonempty) (t : Set β) : ⋂₀ S ×ˢ t = ⋂ s ∈ S, s ×ˢ t :=
+theorem sInter_prod {S : Set (Set α)} (hS : S.Nonempty) (t : Set β) : ⋂₀ S ×ˢ t = ⋂ s ∈ S, s ×ˢ t :=
by
rw [← sInter_singleton t, sInter_prod_sInter hS (singleton_nonempty t), sInter_singleton]
simp_rw [prod_singleton, mem_image, Inter_exists, bInter_and', Inter_Inter_eq_right]
-#align set.sInter_prod Set.interₛ_prod
+#align set.sInter_prod Set.sInter_prod
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-#print Set.prod_interₛ /-
-theorem prod_interₛ {T : Set (Set β)} (hT : T.Nonempty) (s : Set α) : s ×ˢ ⋂₀ T = ⋂ t ∈ T, s ×ˢ t :=
+#print Set.prod_sInter /-
+theorem prod_sInter {T : Set (Set β)} (hT : T.Nonempty) (s : Set α) : s ×ˢ ⋂₀ T = ⋂ t ∈ T, s ×ˢ t :=
by
rw [← sInter_singleton s, sInter_prod_sInter (singleton_nonempty s) hT, sInter_singleton]
simp_rw [singleton_prod, mem_image, Inter_exists, bInter_and', Inter_Inter_eq_right]
-#align set.prod_sInter Set.prod_interₛ
+#align set.prod_sInter Set.prod_sInter
-/
end Prod
@@ -3461,162 +3461,162 @@ section Image2
variable (f : α → β → γ) {s : Set α} {t : Set β}
-/- warning: set.Union_image_left -> Set.unionᵢ_image_left is a dubious translation:
+/- warning: set.Union_image_left -> Set.iUnion_image_left is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} (f : α -> β -> γ) {s : Set.{u1} α} {t : Set.{u2} β}, Eq.{succ u3} (Set.{u3} γ) (Set.unionᵢ.{u3, succ u1} γ α (fun (a : α) => Set.unionᵢ.{u3, 0} γ (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) => Set.image.{u2, u3} β γ (f a) t))) (Set.image2.{u1, u2, u3} α β γ f s t)
+ forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} (f : α -> β -> γ) {s : Set.{u1} α} {t : Set.{u2} β}, Eq.{succ u3} (Set.{u3} γ) (Set.iUnion.{u3, succ u1} γ α (fun (a : α) => Set.iUnion.{u3, 0} γ (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) => Set.image.{u2, u3} β γ (f a) t))) (Set.image2.{u1, u2, u3} α β γ f s t)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {γ : Type.{u3}} (f : α -> β -> γ) {s : Set.{u2} α} {t : Set.{u1} β}, Eq.{succ u3} (Set.{u3} γ) (Set.unionᵢ.{u3, succ u2} γ α (fun (a : α) => Set.unionᵢ.{u3, 0} γ (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) => Set.image.{u1, u3} β γ (f a) t))) (Set.image2.{u2, u1, u3} α β γ f s t)
-Case conversion may be inaccurate. Consider using '#align set.Union_image_left Set.unionᵢ_image_leftₓ'. -/
-theorem unionᵢ_image_left : (⋃ a ∈ s, f a '' t) = image2 f s t :=
+ forall {α : Type.{u2}} {β : Type.{u1}} {γ : Type.{u3}} (f : α -> β -> γ) {s : Set.{u2} α} {t : Set.{u1} β}, Eq.{succ u3} (Set.{u3} γ) (Set.iUnion.{u3, succ u2} γ α (fun (a : α) => Set.iUnion.{u3, 0} γ (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) => Set.image.{u1, u3} β γ (f a) t))) (Set.image2.{u2, u1, u3} α β γ f s t)
+Case conversion may be inaccurate. Consider using '#align set.Union_image_left Set.iUnion_image_leftₓ'. -/
+theorem iUnion_image_left : (⋃ a ∈ s, f a '' t) = image2 f s t :=
by
ext y
constructor <;> simp only [mem_Union] <;> rintro ⟨a, ha, x, hx, ax⟩ <;> exact ⟨a, x, ha, hx, ax⟩
-#align set.Union_image_left Set.unionᵢ_image_left
+#align set.Union_image_left Set.iUnion_image_left
-#print Set.unionᵢ_image_right /-
-theorem unionᵢ_image_right : (⋃ b ∈ t, (fun a => f a b) '' s) = image2 f s t :=
+#print Set.iUnion_image_right /-
+theorem iUnion_image_right : (⋃ b ∈ t, (fun a => f a b) '' s) = image2 f s t :=
by
ext y
constructor <;> simp only [mem_Union] <;> rintro ⟨a, b, c, d, e⟩
exact ⟨c, a, d, b, e⟩
exact ⟨b, d, a, c, e⟩
-#align set.Union_image_right Set.unionᵢ_image_right
+#align set.Union_image_right Set.iUnion_image_right
-/
-/- warning: set.image2_Union_left -> Set.image2_unionᵢ_left is a dubious translation:
+/- warning: set.image2_Union_left -> Set.image2_iUnion_left is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {ι : Sort.{u4}} (f : α -> β -> γ) (s : ι -> (Set.{u1} α)) (t : Set.{u2} β), Eq.{succ u3} (Set.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f (Set.unionᵢ.{u1, u4} α ι (fun (i : ι) => s i)) t) (Set.unionᵢ.{u3, u4} γ ι (fun (i : ι) => Set.image2.{u1, u2, u3} α β γ f (s i) t))
+ forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {ι : Sort.{u4}} (f : α -> β -> γ) (s : ι -> (Set.{u1} α)) (t : Set.{u2} β), Eq.{succ u3} (Set.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f (Set.iUnion.{u1, u4} α ι (fun (i : ι) => s i)) t) (Set.iUnion.{u3, u4} γ ι (fun (i : ι) => Set.image2.{u1, u2, u3} α β γ f (s i) t))
but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {γ : Type.{u2}} {ι : Sort.{u1}} (f : α -> β -> γ) (s : ι -> (Set.{u4} α)) (t : Set.{u3} β), Eq.{succ u2} (Set.{u2} γ) (Set.image2.{u4, u3, u2} α β γ f (Set.unionᵢ.{u4, u1} α ι (fun (i : ι) => s i)) t) (Set.unionᵢ.{u2, u1} γ ι (fun (i : ι) => Set.image2.{u4, u3, u2} α β γ f (s i) t))
-Case conversion may be inaccurate. Consider using '#align set.image2_Union_left Set.image2_unionᵢ_leftₓ'. -/
-theorem image2_unionᵢ_left (s : ι → Set α) (t : Set β) :
+ forall {α : Type.{u4}} {β : Type.{u3}} {γ : Type.{u2}} {ι : Sort.{u1}} (f : α -> β -> γ) (s : ι -> (Set.{u4} α)) (t : Set.{u3} β), Eq.{succ u2} (Set.{u2} γ) (Set.image2.{u4, u3, u2} α β γ f (Set.iUnion.{u4, u1} α ι (fun (i : ι) => s i)) t) (Set.iUnion.{u2, u1} γ ι (fun (i : ι) => Set.image2.{u4, u3, u2} α β γ f (s i) t))
+Case conversion may be inaccurate. Consider using '#align set.image2_Union_left Set.image2_iUnion_leftₓ'. -/
+theorem image2_iUnion_left (s : ι → Set α) (t : Set β) :
image2 f (⋃ i, s i) t = ⋃ i, image2 f (s i) t := by
simp only [← image_prod, Union_prod_const, image_Union]
-#align set.image2_Union_left Set.image2_unionᵢ_left
+#align set.image2_Union_left Set.image2_iUnion_left
-/- warning: set.image2_Union_right -> Set.image2_unionᵢ_right is a dubious translation:
+/- warning: set.image2_Union_right -> Set.image2_iUnion_right is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {ι : Sort.{u4}} (f : α -> β -> γ) (s : Set.{u1} α) (t : ι -> (Set.{u2} β)), Eq.{succ u3} (Set.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f s (Set.unionᵢ.{u2, u4} β ι (fun (i : ι) => t i))) (Set.unionᵢ.{u3, u4} γ ι (fun (i : ι) => Set.image2.{u1, u2, u3} α β γ f s (t i)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {ι : Sort.{u4}} (f : α -> β -> γ) (s : Set.{u1} α) (t : ι -> (Set.{u2} β)), Eq.{succ u3} (Set.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f s (Set.iUnion.{u2, u4} β ι (fun (i : ι) => t i))) (Set.iUnion.{u3, u4} γ ι (fun (i : ι) => Set.image2.{u1, u2, u3} α β γ f s (t i)))
but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {γ : Type.{u2}} {ι : Sort.{u1}} (f : α -> β -> γ) (s : Set.{u4} α) (t : ι -> (Set.{u3} β)), Eq.{succ u2} (Set.{u2} γ) (Set.image2.{u4, u3, u2} α β γ f s (Set.unionᵢ.{u3, u1} β ι (fun (i : ι) => t i))) (Set.unionᵢ.{u2, u1} γ ι (fun (i : ι) => Set.image2.{u4, u3, u2} α β γ f s (t i)))
-Case conversion may be inaccurate. Consider using '#align set.image2_Union_right Set.image2_unionᵢ_rightₓ'. -/
-theorem image2_unionᵢ_right (s : Set α) (t : ι → Set β) :
+ forall {α : Type.{u4}} {β : Type.{u3}} {γ : Type.{u2}} {ι : Sort.{u1}} (f : α -> β -> γ) (s : Set.{u4} α) (t : ι -> (Set.{u3} β)), Eq.{succ u2} (Set.{u2} γ) (Set.image2.{u4, u3, u2} α β γ f s (Set.iUnion.{u3, u1} β ι (fun (i : ι) => t i))) (Set.iUnion.{u2, u1} γ ι (fun (i : ι) => Set.image2.{u4, u3, u2} α β γ f s (t i)))
+Case conversion may be inaccurate. Consider using '#align set.image2_Union_right Set.image2_iUnion_rightₓ'. -/
+theorem image2_iUnion_right (s : Set α) (t : ι → Set β) :
image2 f s (⋃ i, t i) = ⋃ i, image2 f s (t i) := by
simp only [← image_prod, prod_Union, image_Union]
-#align set.image2_Union_right Set.image2_unionᵢ_right
+#align set.image2_Union_right Set.image2_iUnion_right
-/- warning: set.image2_Union₂_left -> Set.image2_unionᵢ₂_left is a dubious translation:
+/- warning: set.image2_Union₂_left -> Set.image2_iUnion₂_left is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {ι : Sort.{u4}} {κ : ι -> Sort.{u5}} (f : α -> β -> γ) (s : forall (i : ι), (κ i) -> (Set.{u1} α)) (t : Set.{u2} β), Eq.{succ u3} (Set.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f (Set.unionᵢ.{u1, u4} α ι (fun (i : ι) => Set.unionᵢ.{u1, u5} α (κ i) (fun (j : κ i) => s i j))) t) (Set.unionᵢ.{u3, u4} γ ι (fun (i : ι) => Set.unionᵢ.{u3, u5} γ (κ i) (fun (j : κ i) => Set.image2.{u1, u2, u3} α β γ f (s i j) t)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {ι : Sort.{u4}} {κ : ι -> Sort.{u5}} (f : α -> β -> γ) (s : forall (i : ι), (κ i) -> (Set.{u1} α)) (t : Set.{u2} β), Eq.{succ u3} (Set.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f (Set.iUnion.{u1, u4} α ι (fun (i : ι) => Set.iUnion.{u1, u5} α (κ i) (fun (j : κ i) => s i j))) t) (Set.iUnion.{u3, u4} γ ι (fun (i : ι) => Set.iUnion.{u3, u5} γ (κ i) (fun (j : κ i) => Set.image2.{u1, u2, u3} α β γ f (s i j) t)))
but is expected to have type
- forall {α : Type.{u5}} {β : Type.{u4}} {γ : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (f : α -> β -> γ) (s : forall (i : ι), (κ i) -> (Set.{u5} α)) (t : Set.{u4} β), Eq.{succ u3} (Set.{u3} γ) (Set.image2.{u5, u4, u3} α β γ f (Set.unionᵢ.{u5, u2} α ι (fun (i : ι) => Set.unionᵢ.{u5, u1} α (κ i) (fun (j : κ i) => s i j))) t) (Set.unionᵢ.{u3, u2} γ ι (fun (i : ι) => Set.unionᵢ.{u3, u1} γ (κ i) (fun (j : κ i) => Set.image2.{u5, u4, u3} α β γ f (s i j) t)))
-Case conversion may be inaccurate. Consider using '#align set.image2_Union₂_left Set.image2_unionᵢ₂_leftₓ'. -/
+ forall {α : Type.{u5}} {β : Type.{u4}} {γ : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (f : α -> β -> γ) (s : forall (i : ι), (κ i) -> (Set.{u5} α)) (t : Set.{u4} β), Eq.{succ u3} (Set.{u3} γ) (Set.image2.{u5, u4, u3} α β γ f (Set.iUnion.{u5, u2} α ι (fun (i : ι) => Set.iUnion.{u5, u1} α (κ i) (fun (j : κ i) => s i j))) t) (Set.iUnion.{u3, u2} γ ι (fun (i : ι) => Set.iUnion.{u3, u1} γ (κ i) (fun (j : κ i) => Set.image2.{u5, u4, u3} α β γ f (s i j) t)))
+Case conversion may be inaccurate. Consider using '#align set.image2_Union₂_left Set.image2_iUnion₂_leftₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem image2_unionᵢ₂_left (s : ∀ i, κ i → Set α) (t : Set β) :
+theorem image2_iUnion₂_left (s : ∀ i, κ i → Set α) (t : Set β) :
image2 f (⋃ (i) (j), s i j) t = ⋃ (i) (j), image2 f (s i j) t := by simp_rw [image2_Union_left]
-#align set.image2_Union₂_left Set.image2_unionᵢ₂_left
+#align set.image2_Union₂_left Set.image2_iUnion₂_left
-/- warning: set.image2_Union₂_right -> Set.image2_unionᵢ₂_right is a dubious translation:
+/- warning: set.image2_Union₂_right -> Set.image2_iUnion₂_right is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {ι : Sort.{u4}} {κ : ι -> Sort.{u5}} (f : α -> β -> γ) (s : Set.{u1} α) (t : forall (i : ι), (κ i) -> (Set.{u2} β)), Eq.{succ u3} (Set.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f s (Set.unionᵢ.{u2, u4} β ι (fun (i : ι) => Set.unionᵢ.{u2, u5} β (κ i) (fun (j : κ i) => t i j)))) (Set.unionᵢ.{u3, u4} γ ι (fun (i : ι) => Set.unionᵢ.{u3, u5} γ (κ i) (fun (j : κ i) => Set.image2.{u1, u2, u3} α β γ f s (t i j))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {ι : Sort.{u4}} {κ : ι -> Sort.{u5}} (f : α -> β -> γ) (s : Set.{u1} α) (t : forall (i : ι), (κ i) -> (Set.{u2} β)), Eq.{succ u3} (Set.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f s (Set.iUnion.{u2, u4} β ι (fun (i : ι) => Set.iUnion.{u2, u5} β (κ i) (fun (j : κ i) => t i j)))) (Set.iUnion.{u3, u4} γ ι (fun (i : ι) => Set.iUnion.{u3, u5} γ (κ i) (fun (j : κ i) => Set.image2.{u1, u2, u3} α β γ f s (t i j))))
but is expected to have type
- forall {α : Type.{u5}} {β : Type.{u4}} {γ : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (f : α -> β -> γ) (s : Set.{u5} α) (t : forall (i : ι), (κ i) -> (Set.{u4} β)), Eq.{succ u3} (Set.{u3} γ) (Set.image2.{u5, u4, u3} α β γ f s (Set.unionᵢ.{u4, u2} β ι (fun (i : ι) => Set.unionᵢ.{u4, u1} β (κ i) (fun (j : κ i) => t i j)))) (Set.unionᵢ.{u3, u2} γ ι (fun (i : ι) => Set.unionᵢ.{u3, u1} γ (κ i) (fun (j : κ i) => Set.image2.{u5, u4, u3} α β γ f s (t i j))))
-Case conversion may be inaccurate. Consider using '#align set.image2_Union₂_right Set.image2_unionᵢ₂_rightₓ'. -/
+ forall {α : Type.{u5}} {β : Type.{u4}} {γ : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (f : α -> β -> γ) (s : Set.{u5} α) (t : forall (i : ι), (κ i) -> (Set.{u4} β)), Eq.{succ u3} (Set.{u3} γ) (Set.image2.{u5, u4, u3} α β γ f s (Set.iUnion.{u4, u2} β ι (fun (i : ι) => Set.iUnion.{u4, u1} β (κ i) (fun (j : κ i) => t i j)))) (Set.iUnion.{u3, u2} γ ι (fun (i : ι) => Set.iUnion.{u3, u1} γ (κ i) (fun (j : κ i) => Set.image2.{u5, u4, u3} α β γ f s (t i j))))
+Case conversion may be inaccurate. Consider using '#align set.image2_Union₂_right Set.image2_iUnion₂_rightₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem image2_unionᵢ₂_right (s : Set α) (t : ∀ i, κ i → Set β) :
+theorem image2_iUnion₂_right (s : Set α) (t : ∀ i, κ i → Set β) :
image2 f s (⋃ (i) (j), t i j) = ⋃ (i) (j), image2 f s (t i j) := by simp_rw [image2_Union_right]
-#align set.image2_Union₂_right Set.image2_unionᵢ₂_right
+#align set.image2_Union₂_right Set.image2_iUnion₂_right
-/- warning: set.image2_Inter_subset_left -> Set.image2_interᵢ_subset_left is a dubious translation:
+/- warning: set.image2_Inter_subset_left -> Set.image2_iInter_subset_left is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {ι : Sort.{u4}} (f : α -> β -> γ) (s : ι -> (Set.{u1} α)) (t : Set.{u2} β), HasSubset.Subset.{u3} (Set.{u3} γ) (Set.hasSubset.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f (Set.interᵢ.{u1, u4} α ι (fun (i : ι) => s i)) t) (Set.interᵢ.{u3, u4} γ ι (fun (i : ι) => Set.image2.{u1, u2, u3} α β γ f (s i) t))
+ forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {ι : Sort.{u4}} (f : α -> β -> γ) (s : ι -> (Set.{u1} α)) (t : Set.{u2} β), HasSubset.Subset.{u3} (Set.{u3} γ) (Set.hasSubset.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f (Set.iInter.{u1, u4} α ι (fun (i : ι) => s i)) t) (Set.iInter.{u3, u4} γ ι (fun (i : ι) => Set.image2.{u1, u2, u3} α β γ f (s i) t))
but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {γ : Type.{u2}} {ι : Sort.{u1}} (f : α -> β -> γ) (s : ι -> (Set.{u4} α)) (t : Set.{u3} β), HasSubset.Subset.{u2} (Set.{u2} γ) (Set.instHasSubsetSet.{u2} γ) (Set.image2.{u4, u3, u2} α β γ f (Set.interᵢ.{u4, u1} α ι (fun (i : ι) => s i)) t) (Set.interᵢ.{u2, u1} γ ι (fun (i : ι) => Set.image2.{u4, u3, u2} α β γ f (s i) t))
-Case conversion may be inaccurate. Consider using '#align set.image2_Inter_subset_left Set.image2_interᵢ_subset_leftₓ'. -/
-theorem image2_interᵢ_subset_left (s : ι → Set α) (t : Set β) :
+ forall {α : Type.{u4}} {β : Type.{u3}} {γ : Type.{u2}} {ι : Sort.{u1}} (f : α -> β -> γ) (s : ι -> (Set.{u4} α)) (t : Set.{u3} β), HasSubset.Subset.{u2} (Set.{u2} γ) (Set.instHasSubsetSet.{u2} γ) (Set.image2.{u4, u3, u2} α β γ f (Set.iInter.{u4, u1} α ι (fun (i : ι) => s i)) t) (Set.iInter.{u2, u1} γ ι (fun (i : ι) => Set.image2.{u4, u3, u2} α β γ f (s i) t))
+Case conversion may be inaccurate. Consider using '#align set.image2_Inter_subset_left Set.image2_iInter_subset_leftₓ'. -/
+theorem image2_iInter_subset_left (s : ι → Set α) (t : Set β) :
image2 f (⋂ i, s i) t ⊆ ⋂ i, image2 f (s i) t :=
by
simp_rw [image2_subset_iff, mem_Inter]
exact fun x hx y hy i => mem_image2_of_mem (hx _) hy
-#align set.image2_Inter_subset_left Set.image2_interᵢ_subset_left
+#align set.image2_Inter_subset_left Set.image2_iInter_subset_left
-/- warning: set.image2_Inter_subset_right -> Set.image2_interᵢ_subset_right is a dubious translation:
+/- warning: set.image2_Inter_subset_right -> Set.image2_iInter_subset_right is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {ι : Sort.{u4}} (f : α -> β -> γ) (s : Set.{u1} α) (t : ι -> (Set.{u2} β)), HasSubset.Subset.{u3} (Set.{u3} γ) (Set.hasSubset.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f s (Set.interᵢ.{u2, u4} β ι (fun (i : ι) => t i))) (Set.interᵢ.{u3, u4} γ ι (fun (i : ι) => Set.image2.{u1, u2, u3} α β γ f s (t i)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {ι : Sort.{u4}} (f : α -> β -> γ) (s : Set.{u1} α) (t : ι -> (Set.{u2} β)), HasSubset.Subset.{u3} (Set.{u3} γ) (Set.hasSubset.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f s (Set.iInter.{u2, u4} β ι (fun (i : ι) => t i))) (Set.iInter.{u3, u4} γ ι (fun (i : ι) => Set.image2.{u1, u2, u3} α β γ f s (t i)))
but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {γ : Type.{u2}} {ι : Sort.{u1}} (f : α -> β -> γ) (s : Set.{u4} α) (t : ι -> (Set.{u3} β)), HasSubset.Subset.{u2} (Set.{u2} γ) (Set.instHasSubsetSet.{u2} γ) (Set.image2.{u4, u3, u2} α β γ f s (Set.interᵢ.{u3, u1} β ι (fun (i : ι) => t i))) (Set.interᵢ.{u2, u1} γ ι (fun (i : ι) => Set.image2.{u4, u3, u2} α β γ f s (t i)))
-Case conversion may be inaccurate. Consider using '#align set.image2_Inter_subset_right Set.image2_interᵢ_subset_rightₓ'. -/
-theorem image2_interᵢ_subset_right (s : Set α) (t : ι → Set β) :
+ forall {α : Type.{u4}} {β : Type.{u3}} {γ : Type.{u2}} {ι : Sort.{u1}} (f : α -> β -> γ) (s : Set.{u4} α) (t : ι -> (Set.{u3} β)), HasSubset.Subset.{u2} (Set.{u2} γ) (Set.instHasSubsetSet.{u2} γ) (Set.image2.{u4, u3, u2} α β γ f s (Set.iInter.{u3, u1} β ι (fun (i : ι) => t i))) (Set.iInter.{u2, u1} γ ι (fun (i : ι) => Set.image2.{u4, u3, u2} α β γ f s (t i)))
+Case conversion may be inaccurate. Consider using '#align set.image2_Inter_subset_right Set.image2_iInter_subset_rightₓ'. -/
+theorem image2_iInter_subset_right (s : Set α) (t : ι → Set β) :
image2 f s (⋂ i, t i) ⊆ ⋂ i, image2 f s (t i) :=
by
simp_rw [image2_subset_iff, mem_Inter]
exact fun x hx y hy i => mem_image2_of_mem hx (hy _)
-#align set.image2_Inter_subset_right Set.image2_interᵢ_subset_right
+#align set.image2_Inter_subset_right Set.image2_iInter_subset_right
-/- warning: set.image2_Inter₂_subset_left -> Set.image2_interᵢ₂_subset_left is a dubious translation:
+/- warning: set.image2_Inter₂_subset_left -> Set.image2_iInter₂_subset_left is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {ι : Sort.{u4}} {κ : ι -> Sort.{u5}} (f : α -> β -> γ) (s : forall (i : ι), (κ i) -> (Set.{u1} α)) (t : Set.{u2} β), HasSubset.Subset.{u3} (Set.{u3} γ) (Set.hasSubset.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f (Set.interᵢ.{u1, u4} α ι (fun (i : ι) => Set.interᵢ.{u1, u5} α (κ i) (fun (j : κ i) => s i j))) t) (Set.interᵢ.{u3, u4} γ ι (fun (i : ι) => Set.interᵢ.{u3, u5} γ (κ i) (fun (j : κ i) => Set.image2.{u1, u2, u3} α β γ f (s i j) t)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {ι : Sort.{u4}} {κ : ι -> Sort.{u5}} (f : α -> β -> γ) (s : forall (i : ι), (κ i) -> (Set.{u1} α)) (t : Set.{u2} β), HasSubset.Subset.{u3} (Set.{u3} γ) (Set.hasSubset.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f (Set.iInter.{u1, u4} α ι (fun (i : ι) => Set.iInter.{u1, u5} α (κ i) (fun (j : κ i) => s i j))) t) (Set.iInter.{u3, u4} γ ι (fun (i : ι) => Set.iInter.{u3, u5} γ (κ i) (fun (j : κ i) => Set.image2.{u1, u2, u3} α β γ f (s i j) t)))
but is expected to have type
- forall {α : Type.{u5}} {β : Type.{u4}} {γ : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (f : α -> β -> γ) (s : forall (i : ι), (κ i) -> (Set.{u5} α)) (t : Set.{u4} β), HasSubset.Subset.{u3} (Set.{u3} γ) (Set.instHasSubsetSet.{u3} γ) (Set.image2.{u5, u4, u3} α β γ f (Set.interᵢ.{u5, u2} α ι (fun (i : ι) => Set.interᵢ.{u5, u1} α (κ i) (fun (j : κ i) => s i j))) t) (Set.interᵢ.{u3, u2} γ ι (fun (i : ι) => Set.interᵢ.{u3, u1} γ (κ i) (fun (j : κ i) => Set.image2.{u5, u4, u3} α β γ f (s i j) t)))
-Case conversion may be inaccurate. Consider using '#align set.image2_Inter₂_subset_left Set.image2_interᵢ₂_subset_leftₓ'. -/
+ forall {α : Type.{u5}} {β : Type.{u4}} {γ : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (f : α -> β -> γ) (s : forall (i : ι), (κ i) -> (Set.{u5} α)) (t : Set.{u4} β), HasSubset.Subset.{u3} (Set.{u3} γ) (Set.instHasSubsetSet.{u3} γ) (Set.image2.{u5, u4, u3} α β γ f (Set.iInter.{u5, u2} α ι (fun (i : ι) => Set.iInter.{u5, u1} α (κ i) (fun (j : κ i) => s i j))) t) (Set.iInter.{u3, u2} γ ι (fun (i : ι) => Set.iInter.{u3, u1} γ (κ i) (fun (j : κ i) => Set.image2.{u5, u4, u3} α β γ f (s i j) t)))
+Case conversion may be inaccurate. Consider using '#align set.image2_Inter₂_subset_left Set.image2_iInter₂_subset_leftₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem image2_interᵢ₂_subset_left (s : ∀ i, κ i → Set α) (t : Set β) :
+theorem image2_iInter₂_subset_left (s : ∀ i, κ i → Set α) (t : Set β) :
image2 f (⋂ (i) (j), s i j) t ⊆ ⋂ (i) (j), image2 f (s i j) t :=
by
simp_rw [image2_subset_iff, mem_Inter]
exact fun x hx y hy i j => mem_image2_of_mem (hx _ _) hy
-#align set.image2_Inter₂_subset_left Set.image2_interᵢ₂_subset_left
+#align set.image2_Inter₂_subset_left Set.image2_iInter₂_subset_left
-/- warning: set.image2_Inter₂_subset_right -> Set.image2_interᵢ₂_subset_right is a dubious translation:
+/- warning: set.image2_Inter₂_subset_right -> Set.image2_iInter₂_subset_right is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {ι : Sort.{u4}} {κ : ι -> Sort.{u5}} (f : α -> β -> γ) (s : Set.{u1} α) (t : forall (i : ι), (κ i) -> (Set.{u2} β)), HasSubset.Subset.{u3} (Set.{u3} γ) (Set.hasSubset.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f s (Set.interᵢ.{u2, u4} β ι (fun (i : ι) => Set.interᵢ.{u2, u5} β (κ i) (fun (j : κ i) => t i j)))) (Set.interᵢ.{u3, u4} γ ι (fun (i : ι) => Set.interᵢ.{u3, u5} γ (κ i) (fun (j : κ i) => Set.image2.{u1, u2, u3} α β γ f s (t i j))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {ι : Sort.{u4}} {κ : ι -> Sort.{u5}} (f : α -> β -> γ) (s : Set.{u1} α) (t : forall (i : ι), (κ i) -> (Set.{u2} β)), HasSubset.Subset.{u3} (Set.{u3} γ) (Set.hasSubset.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f s (Set.iInter.{u2, u4} β ι (fun (i : ι) => Set.iInter.{u2, u5} β (κ i) (fun (j : κ i) => t i j)))) (Set.iInter.{u3, u4} γ ι (fun (i : ι) => Set.iInter.{u3, u5} γ (κ i) (fun (j : κ i) => Set.image2.{u1, u2, u3} α β γ f s (t i j))))
but is expected to have type
- forall {α : Type.{u5}} {β : Type.{u4}} {γ : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (f : α -> β -> γ) (s : Set.{u5} α) (t : forall (i : ι), (κ i) -> (Set.{u4} β)), HasSubset.Subset.{u3} (Set.{u3} γ) (Set.instHasSubsetSet.{u3} γ) (Set.image2.{u5, u4, u3} α β γ f s (Set.interᵢ.{u4, u2} β ι (fun (i : ι) => Set.interᵢ.{u4, u1} β (κ i) (fun (j : κ i) => t i j)))) (Set.interᵢ.{u3, u2} γ ι (fun (i : ι) => Set.interᵢ.{u3, u1} γ (κ i) (fun (j : κ i) => Set.image2.{u5, u4, u3} α β γ f s (t i j))))
-Case conversion may be inaccurate. Consider using '#align set.image2_Inter₂_subset_right Set.image2_interᵢ₂_subset_rightₓ'. -/
+ forall {α : Type.{u5}} {β : Type.{u4}} {γ : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} (f : α -> β -> γ) (s : Set.{u5} α) (t : forall (i : ι), (κ i) -> (Set.{u4} β)), HasSubset.Subset.{u3} (Set.{u3} γ) (Set.instHasSubsetSet.{u3} γ) (Set.image2.{u5, u4, u3} α β γ f s (Set.iInter.{u4, u2} β ι (fun (i : ι) => Set.iInter.{u4, u1} β (κ i) (fun (j : κ i) => t i j)))) (Set.iInter.{u3, u2} γ ι (fun (i : ι) => Set.iInter.{u3, u1} γ (κ i) (fun (j : κ i) => Set.image2.{u5, u4, u3} α β γ f s (t i j))))
+Case conversion may be inaccurate. Consider using '#align set.image2_Inter₂_subset_right Set.image2_iInter₂_subset_rightₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem image2_interᵢ₂_subset_right (s : Set α) (t : ∀ i, κ i → Set β) :
+theorem image2_iInter₂_subset_right (s : Set α) (t : ∀ i, κ i → Set β) :
image2 f s (⋂ (i) (j), t i j) ⊆ ⋂ (i) (j), image2 f s (t i j) :=
by
simp_rw [image2_subset_iff, mem_Inter]
exact fun x hx y hy i j => mem_image2_of_mem hx (hy _ _)
-#align set.image2_Inter₂_subset_right Set.image2_interᵢ₂_subset_right
+#align set.image2_Inter₂_subset_right Set.image2_iInter₂_subset_right
-/- warning: set.image2_eq_Union -> Set.image2_eq_unionᵢ is a dubious translation:
+/- warning: set.image2_eq_Union -> Set.image2_eq_iUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} (f : α -> β -> γ) (s : Set.{u1} α) (t : Set.{u2} β), Eq.{succ u3} (Set.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f s t) (Set.unionᵢ.{u3, succ u1} γ α (fun (i : α) => Set.unionᵢ.{u3, 0} γ (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i s) => Set.unionᵢ.{u3, succ u2} γ β (fun (j : β) => Set.unionᵢ.{u3, 0} γ (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) j t) (fun (H : Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) j t) => Singleton.singleton.{u3, u3} γ (Set.{u3} γ) (Set.hasSingleton.{u3} γ) (f i j))))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} (f : α -> β -> γ) (s : Set.{u1} α) (t : Set.{u2} β), Eq.{succ u3} (Set.{u3} γ) (Set.image2.{u1, u2, u3} α β γ f s t) (Set.iUnion.{u3, succ u1} γ α (fun (i : α) => Set.iUnion.{u3, 0} γ (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) i s) => Set.iUnion.{u3, succ u2} γ β (fun (j : β) => Set.iUnion.{u3, 0} γ (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) j t) (fun (H : Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) j t) => Singleton.singleton.{u3, u3} γ (Set.{u3} γ) (Set.hasSingleton.{u3} γ) (f i j))))))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} (f : α -> β -> γ) (s : Set.{u3} α) (t : Set.{u2} β), Eq.{succ u1} (Set.{u1} γ) (Set.image2.{u3, u2, u1} α β γ f s t) (Set.unionᵢ.{u1, succ u3} γ α (fun (i : α) => Set.unionᵢ.{u1, 0} γ (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) i s) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) i s) => Set.unionᵢ.{u1, succ u2} γ β (fun (j : β) => Set.unionᵢ.{u1, 0} γ (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) j t) (fun (H : Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) j t) => Singleton.singleton.{u1, u1} γ (Set.{u1} γ) (Set.instSingletonSet.{u1} γ) (f i j))))))
-Case conversion may be inaccurate. Consider using '#align set.image2_eq_Union Set.image2_eq_unionᵢₓ'. -/
+ forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} (f : α -> β -> γ) (s : Set.{u3} α) (t : Set.{u2} β), Eq.{succ u1} (Set.{u1} γ) (Set.image2.{u3, u2, u1} α β γ f s t) (Set.iUnion.{u1, succ u3} γ α (fun (i : α) => Set.iUnion.{u1, 0} γ (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) i s) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) i s) => Set.iUnion.{u1, succ u2} γ β (fun (j : β) => Set.iUnion.{u1, 0} γ (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) j t) (fun (H : Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) j t) => Singleton.singleton.{u1, u1} γ (Set.{u1} γ) (Set.instSingletonSet.{u1} γ) (f i j))))))
+Case conversion may be inaccurate. Consider using '#align set.image2_eq_Union Set.image2_eq_iUnionₓ'. -/
/-- The `set.image2` version of `set.image_eq_Union` -/
-theorem image2_eq_unionᵢ (s : Set α) (t : Set β) : image2 f s t = ⋃ (i ∈ s) (j ∈ t), {f i j} := by
+theorem image2_eq_iUnion (s : Set α) (t : Set β) : image2 f s t = ⋃ (i ∈ s) (j ∈ t), {f i j} := by
simp_rw [← image_eq_Union, Union_image_left]
-#align set.image2_eq_Union Set.image2_eq_unionᵢ
+#align set.image2_eq_Union Set.image2_eq_iUnion
-/- warning: set.prod_eq_bUnion_left -> Set.prod_eq_bunionᵢ_left is a dubious translation:
+/- warning: set.prod_eq_bUnion_left -> Set.prod_eq_biUnion_left is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {t : Set.{u2} β}, Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β s t) (Set.unionᵢ.{max u1 u2, succ u1} (Prod.{u1, u2} α β) α (fun (a : α) => Set.unionᵢ.{max u1 u2, 0} (Prod.{u1, u2} α β) (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) => Set.image.{u2, max u1 u2} β (Prod.{u1, u2} α β) (fun (b : β) => Prod.mk.{u1, u2} α β a b) t)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {t : Set.{u2} β}, Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β s t) (Set.iUnion.{max u1 u2, succ u1} (Prod.{u1, u2} α β) α (fun (a : α) => Set.iUnion.{max u1 u2, 0} (Prod.{u1, u2} α β) (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) => Set.image.{u2, max u1 u2} β (Prod.{u1, u2} α β) (fun (b : β) => Prod.mk.{u1, u2} α β a b) t)))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {t : Set.{u1} β}, Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Prod.{u2, u1} α β)) (Set.prod.{u2, u1} α β s t) (Set.unionᵢ.{max u1 u2, succ u2} (Prod.{u2, u1} α β) α (fun (a : α) => Set.unionᵢ.{max u1 u2, 0} (Prod.{u2, u1} α β) (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) => Set.image.{u1, max u1 u2} β (Prod.{u2, u1} α β) (fun (b : β) => Prod.mk.{u2, u1} α β a b) t)))
-Case conversion may be inaccurate. Consider using '#align set.prod_eq_bUnion_left Set.prod_eq_bunionᵢ_leftₓ'. -/
+ forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {t : Set.{u1} β}, Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Prod.{u2, u1} α β)) (Set.prod.{u2, u1} α β s t) (Set.iUnion.{max u1 u2, succ u2} (Prod.{u2, u1} α β) α (fun (a : α) => Set.iUnion.{max u1 u2, 0} (Prod.{u2, u1} α β) (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) => Set.image.{u1, max u1 u2} β (Prod.{u2, u1} α β) (fun (b : β) => Prod.mk.{u2, u1} α β a b) t)))
+Case conversion may be inaccurate. Consider using '#align set.prod_eq_bUnion_left Set.prod_eq_biUnion_leftₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem prod_eq_bunionᵢ_left : s ×ˢ t = ⋃ a ∈ s, (fun b => (a, b)) '' t := by
+theorem prod_eq_biUnion_left : s ×ˢ t = ⋃ a ∈ s, (fun b => (a, b)) '' t := by
rw [Union_image_left, image2_mk_eq_prod]
-#align set.prod_eq_bUnion_left Set.prod_eq_bunionᵢ_left
+#align set.prod_eq_bUnion_left Set.prod_eq_biUnion_left
-/- warning: set.prod_eq_bUnion_right -> Set.prod_eq_bunionᵢ_right is a dubious translation:
+/- warning: set.prod_eq_bUnion_right -> Set.prod_eq_biUnion_right is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {t : Set.{u2} β}, Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β s t) (Set.unionᵢ.{max u1 u2, succ u2} (Prod.{u1, u2} α β) β (fun (b : β) => Set.unionᵢ.{max u1 u2, 0} (Prod.{u1, u2} α β) (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) b t) (fun (H : Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) b t) => Set.image.{u1, max u1 u2} α (Prod.{u1, u2} α β) (fun (a : α) => Prod.mk.{u1, u2} α β a b) s)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{u1} α} {t : Set.{u2} β}, Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β s t) (Set.iUnion.{max u1 u2, succ u2} (Prod.{u1, u2} α β) β (fun (b : β) => Set.iUnion.{max u1 u2, 0} (Prod.{u1, u2} α β) (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) b t) (fun (H : Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) b t) => Set.image.{u1, max u1 u2} α (Prod.{u1, u2} α β) (fun (a : α) => Prod.mk.{u1, u2} α β a b) s)))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {t : Set.{u1} β}, Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Prod.{u2, u1} α β)) (Set.prod.{u2, u1} α β s t) (Set.unionᵢ.{max u1 u2, succ u1} (Prod.{u2, u1} α β) β (fun (b : β) => Set.unionᵢ.{max u1 u2, 0} (Prod.{u2, u1} α β) (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) b t) (fun (H : Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) b t) => Set.image.{u2, max u1 u2} α (Prod.{u2, u1} α β) (fun (a : α) => Prod.mk.{u2, u1} α β a b) s)))
-Case conversion may be inaccurate. Consider using '#align set.prod_eq_bUnion_right Set.prod_eq_bunionᵢ_rightₓ'. -/
+ forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{u2} α} {t : Set.{u1} β}, Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Prod.{u2, u1} α β)) (Set.prod.{u2, u1} α β s t) (Set.iUnion.{max u1 u2, succ u1} (Prod.{u2, u1} α β) β (fun (b : β) => Set.iUnion.{max u1 u2, 0} (Prod.{u2, u1} α β) (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) b t) (fun (H : Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) b t) => Set.image.{u2, max u1 u2} α (Prod.{u2, u1} α β) (fun (a : α) => Prod.mk.{u2, u1} α β a b) s)))
+Case conversion may be inaccurate. Consider using '#align set.prod_eq_bUnion_right Set.prod_eq_biUnion_rightₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem prod_eq_bunionᵢ_right : s ×ˢ t = ⋃ b ∈ t, (fun a => (a, b)) '' s := by
+theorem prod_eq_biUnion_right : s ×ˢ t = ⋃ b ∈ t, (fun a => (a, b)) '' s := by
rw [Union_image_right, image2_mk_eq_prod]
-#align set.prod_eq_bUnion_right Set.prod_eq_bunionᵢ_right
+#align set.prod_eq_bUnion_right Set.prod_eq_biUnion_right
end Image2
@@ -3632,9 +3632,9 @@ def seq (s : Set (α → β)) (t : Set α) : Set β :=
/- warning: set.seq_def -> Set.seq_def is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{max u1 u2} (α -> β)} {t : Set.{u1} α}, Eq.{succ u2} (Set.{u2} β) (Set.seq.{u1, u2} α β s t) (Set.unionᵢ.{u2, succ (max u1 u2)} β (α -> β) (fun (f : α -> β) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{max u1 u2, max u1 u2} (α -> β) (Set.{max u1 u2} (α -> β)) (Set.hasMem.{max u1 u2} (α -> β)) f s) (fun (H : Membership.Mem.{max u1 u2, max u1 u2} (α -> β) (Set.{max u1 u2} (α -> β)) (Set.hasMem.{max u1 u2} (α -> β)) f s) => Set.image.{u1, u2} α β f t)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {s : Set.{max u1 u2} (α -> β)} {t : Set.{u1} α}, Eq.{succ u2} (Set.{u2} β) (Set.seq.{u1, u2} α β s t) (Set.iUnion.{u2, succ (max u1 u2)} β (α -> β) (fun (f : α -> β) => Set.iUnion.{u2, 0} β (Membership.Mem.{max u1 u2, max u1 u2} (α -> β) (Set.{max u1 u2} (α -> β)) (Set.hasMem.{max u1 u2} (α -> β)) f s) (fun (H : Membership.Mem.{max u1 u2, max u1 u2} (α -> β) (Set.{max u1 u2} (α -> β)) (Set.hasMem.{max u1 u2} (α -> β)) f s) => Set.image.{u1, u2} α β f t)))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{max u2 u1} (α -> β)} {t : Set.{u2} α}, Eq.{succ u1} (Set.{u1} β) (Set.seq.{u2, u1} α β s t) (Set.unionᵢ.{u1, succ (max u2 u1)} β (α -> β) (fun (f : α -> β) => Set.unionᵢ.{u1, 0} β (Membership.mem.{max u2 u1, max u2 u1} (α -> β) (Set.{max u2 u1} (α -> β)) (Set.instMembershipSet.{max u2 u1} (α -> β)) f s) (fun (H : Membership.mem.{max u2 u1, max u2 u1} (α -> β) (Set.{max u2 u1} (α -> β)) (Set.instMembershipSet.{max u2 u1} (α -> β)) f s) => Set.image.{u2, u1} α β f t)))
+ forall {α : Type.{u2}} {β : Type.{u1}} {s : Set.{max u2 u1} (α -> β)} {t : Set.{u2} α}, Eq.{succ u1} (Set.{u1} β) (Set.seq.{u2, u1} α β s t) (Set.iUnion.{u1, succ (max u2 u1)} β (α -> β) (fun (f : α -> β) => Set.iUnion.{u1, 0} β (Membership.mem.{max u2 u1, max u2 u1} (α -> β) (Set.{max u2 u1} (α -> β)) (Set.instMembershipSet.{max u2 u1} (α -> β)) f s) (fun (H : Membership.mem.{max u2 u1, max u2 u1} (α -> β) (Set.{max u2 u1} (α -> β)) (Set.instMembershipSet.{max u2 u1} (α -> β)) f s) => Set.image.{u2, u1} α β f t)))
Case conversion may be inaccurate. Consider using '#align set.seq_def Set.seq_defₓ'. -/
theorem seq_def {s : Set (α → β)} {t : Set α} : seq s t = ⋃ f ∈ s, f '' t :=
Set.ext <| by simp [seq]
@@ -3770,9 +3770,9 @@ variable {π : α → Type _}
/- warning: set.pi_def -> Set.pi_def is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {π : α -> Type.{u2}} (i : Set.{u1} α) (s : forall (a : α), Set.{u2} (π a)), Eq.{succ (max u1 u2)} (Set.{max u1 u2} (forall (i : α), π i)) (Set.pi.{u1, u2} α (fun (a : α) => π a) i s) (Set.interᵢ.{max u1 u2, succ u1} (forall (i : α), π i) α (fun (a : α) => Set.interᵢ.{max u1 u2, 0} (forall (i : α), π i) (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a i) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a i) => Set.preimage.{max u1 u2, u2} (forall (i : α), π i) (π a) (Function.eval.{succ u1, succ u2} α (fun (i : α) => π i) a) (s a))))
+ forall {α : Type.{u1}} {π : α -> Type.{u2}} (i : Set.{u1} α) (s : forall (a : α), Set.{u2} (π a)), Eq.{succ (max u1 u2)} (Set.{max u1 u2} (forall (i : α), π i)) (Set.pi.{u1, u2} α (fun (a : α) => π a) i s) (Set.iInter.{max u1 u2, succ u1} (forall (i : α), π i) α (fun (a : α) => Set.iInter.{max u1 u2, 0} (forall (i : α), π i) (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a i) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a i) => Set.preimage.{max u1 u2, u2} (forall (i : α), π i) (π a) (Function.eval.{succ u1, succ u2} α (fun (i : α) => π i) a) (s a))))
but is expected to have type
- forall {α : Type.{u2}} {π : α -> Type.{u1}} (i : Set.{u2} α) (s : forall (a : α), Set.{u1} (π a)), Eq.{max (succ u2) (succ u1)} (Set.{max u2 u1} (forall (i : α), π i)) (Set.pi.{u2, u1} α (fun (a : α) => π a) i s) (Set.interᵢ.{max u2 u1, succ u2} (forall (i : α), π i) α (fun (a : α) => Set.interᵢ.{max u2 u1, 0} (forall (i : α), π i) (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a i) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a i) => Set.preimage.{max u2 u1, u1} (forall (i : α), π i) (π a) (Function.eval.{succ u2, succ u1} α (fun (i : α) => π i) a) (s a))))
+ forall {α : Type.{u2}} {π : α -> Type.{u1}} (i : Set.{u2} α) (s : forall (a : α), Set.{u1} (π a)), Eq.{max (succ u2) (succ u1)} (Set.{max u2 u1} (forall (i : α), π i)) (Set.pi.{u2, u1} α (fun (a : α) => π a) i s) (Set.iInter.{max u2 u1, succ u2} (forall (i : α), π i) α (fun (a : α) => Set.iInter.{max u2 u1, 0} (forall (i : α), π i) (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a i) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a i) => Set.preimage.{max u2 u1, u1} (forall (i : α), π i) (π a) (Function.eval.{succ u2, succ u1} α (fun (i : α) => π i) a) (s a))))
Case conversion may be inaccurate. Consider using '#align set.pi_def Set.pi_defₓ'. -/
theorem pi_def (i : Set α) (s : ∀ a, Set (π a)) : pi i s = ⋂ a ∈ i, eval a ⁻¹' s a :=
by
@@ -3780,17 +3780,17 @@ theorem pi_def (i : Set α) (s : ∀ a, Set (π a)) : pi i s = ⋂ a ∈ i, eval
simp
#align set.pi_def Set.pi_def
-#print Set.univ_pi_eq_interᵢ /-
-theorem univ_pi_eq_interᵢ (t : ∀ i, Set (π i)) : pi univ t = ⋂ i, eval i ⁻¹' t i := by
+#print Set.univ_pi_eq_iInter /-
+theorem univ_pi_eq_iInter (t : ∀ i, Set (π i)) : pi univ t = ⋂ i, eval i ⁻¹' t i := by
simp only [pi_def, Inter_true, mem_univ]
-#align set.univ_pi_eq_Inter Set.univ_pi_eq_interᵢ
+#align set.univ_pi_eq_Inter Set.univ_pi_eq_iInter
-/
/- warning: set.pi_diff_pi_subset -> Set.pi_diff_pi_subset is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {π : α -> Type.{u2}} (i : Set.{u1} α) (s : forall (a : α), Set.{u2} (π a)) (t : forall (a : α), Set.{u2} (π a)), HasSubset.Subset.{max u1 u2} (Set.{max u1 u2} (forall (i : α), π i)) (Set.hasSubset.{max u1 u2} (forall (i : α), π i)) (SDiff.sdiff.{max u1 u2} (Set.{max u1 u2} (forall (i : α), π i)) (BooleanAlgebra.toHasSdiff.{max u1 u2} (Set.{max u1 u2} (forall (i : α), π i)) (Set.booleanAlgebra.{max u1 u2} (forall (i : α), π i))) (Set.pi.{u1, u2} α (fun (a : α) => π a) i s) (Set.pi.{u1, u2} α (fun (i : α) => π i) i t)) (Set.unionᵢ.{max u1 u2, succ u1} (forall (i : α), π i) α (fun (a : α) => Set.unionᵢ.{max u1 u2, 0} (forall (i : α), π i) (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a i) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a i) => Set.preimage.{max u1 u2, u2} (forall (i : α), π i) (π a) (Function.eval.{succ u1, succ u2} α (fun (i : α) => π i) a) (SDiff.sdiff.{u2} (Set.{u2} (π a)) (BooleanAlgebra.toHasSdiff.{u2} (Set.{u2} (π a)) (Set.booleanAlgebra.{u2} (π a))) (s a) (t a)))))
+ forall {α : Type.{u1}} {π : α -> Type.{u2}} (i : Set.{u1} α) (s : forall (a : α), Set.{u2} (π a)) (t : forall (a : α), Set.{u2} (π a)), HasSubset.Subset.{max u1 u2} (Set.{max u1 u2} (forall (i : α), π i)) (Set.hasSubset.{max u1 u2} (forall (i : α), π i)) (SDiff.sdiff.{max u1 u2} (Set.{max u1 u2} (forall (i : α), π i)) (BooleanAlgebra.toHasSdiff.{max u1 u2} (Set.{max u1 u2} (forall (i : α), π i)) (Set.booleanAlgebra.{max u1 u2} (forall (i : α), π i))) (Set.pi.{u1, u2} α (fun (a : α) => π a) i s) (Set.pi.{u1, u2} α (fun (i : α) => π i) i t)) (Set.iUnion.{max u1 u2, succ u1} (forall (i : α), π i) α (fun (a : α) => Set.iUnion.{max u1 u2, 0} (forall (i : α), π i) (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a i) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a i) => Set.preimage.{max u1 u2, u2} (forall (i : α), π i) (π a) (Function.eval.{succ u1, succ u2} α (fun (i : α) => π i) a) (SDiff.sdiff.{u2} (Set.{u2} (π a)) (BooleanAlgebra.toHasSdiff.{u2} (Set.{u2} (π a)) (Set.booleanAlgebra.{u2} (π a))) (s a) (t a)))))
but is expected to have type
- forall {α : Type.{u2}} {π : α -> Type.{u1}} (i : Set.{u2} α) (s : forall (a : α), Set.{u1} (π a)) (t : forall (a : α), Set.{u1} (π a)), HasSubset.Subset.{max u1 u2} (Set.{max u2 u1} (forall (i : α), π i)) (Set.instHasSubsetSet.{max u2 u1} (forall (i : α), π i)) (SDiff.sdiff.{max u1 u2} (Set.{max u2 u1} (forall (i : α), π i)) (Set.instSDiffSet.{max u2 u1} (forall (i : α), π i)) (Set.pi.{u2, u1} α (fun (a : α) => π a) i s) (Set.pi.{u2, u1} α (fun (i : α) => π i) i t)) (Set.unionᵢ.{max u2 u1, succ u2} (forall (i : α), π i) α (fun (a : α) => Set.unionᵢ.{max u2 u1, 0} (forall (i : α), π i) (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a i) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a i) => Set.preimage.{max u2 u1, u1} (forall (i : α), π i) (π a) (Function.eval.{succ u2, succ u1} α (fun (i : α) => π i) a) (SDiff.sdiff.{u1} (Set.{u1} (π a)) (Set.instSDiffSet.{u1} (π a)) (s a) (t a)))))
+ forall {α : Type.{u2}} {π : α -> Type.{u1}} (i : Set.{u2} α) (s : forall (a : α), Set.{u1} (π a)) (t : forall (a : α), Set.{u1} (π a)), HasSubset.Subset.{max u1 u2} (Set.{max u2 u1} (forall (i : α), π i)) (Set.instHasSubsetSet.{max u2 u1} (forall (i : α), π i)) (SDiff.sdiff.{max u1 u2} (Set.{max u2 u1} (forall (i : α), π i)) (Set.instSDiffSet.{max u2 u1} (forall (i : α), π i)) (Set.pi.{u2, u1} α (fun (a : α) => π a) i s) (Set.pi.{u2, u1} α (fun (i : α) => π i) i t)) (Set.iUnion.{max u2 u1, succ u2} (forall (i : α), π i) α (fun (a : α) => Set.iUnion.{max u2 u1, 0} (forall (i : α), π i) (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a i) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a i) => Set.preimage.{max u2 u1, u1} (forall (i : α), π i) (π a) (Function.eval.{succ u2, succ u1} α (fun (i : α) => π i) a) (SDiff.sdiff.{u1} (Set.{u1} (π a)) (Set.instSDiffSet.{u1} (π a)) (s a) (t a)))))
Case conversion may be inaccurate. Consider using '#align set.pi_diff_pi_subset Set.pi_diff_pi_subsetₓ'. -/
theorem pi_diff_pi_subset (i : Set α) (s t : ∀ a, Set (π a)) :
pi i s \ pi i t ⊆ ⋃ a ∈ i, eval a ⁻¹' (s a \ t a) :=
@@ -3801,18 +3801,18 @@ theorem pi_diff_pi_subset (i : Set α) (s t : ∀ a, Set (π a)) :
exact hx.2 _ ha (hx.1 _ ha)
#align set.pi_diff_pi_subset Set.pi_diff_pi_subset
-/- warning: set.Union_univ_pi -> Set.unionᵢ_univ_pi is a dubious translation:
+/- warning: set.Union_univ_pi -> Set.iUnion_univ_pi is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {π : α -> Type.{u3}} (t : forall (i : α), ι -> (Set.{u3} (π i))), Eq.{succ (max u1 u3)} (Set.{max u1 u3} (forall (i : α), π i)) (Set.unionᵢ.{max u1 u3, imax (succ u1) u2} (forall (i : α), π i) (α -> ι) (fun (x : α -> ι) => Set.pi.{u1, u3} α (fun (i : α) => π i) (Set.univ.{u1} α) (fun (i : α) => t i (x i)))) (Set.pi.{u1, u3} α (fun (i : α) => π i) (Set.univ.{u1} α) (fun (i : α) => Set.unionᵢ.{u3, u2} (π i) ι (fun (j : ι) => t i j)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {π : α -> Type.{u3}} (t : forall (i : α), ι -> (Set.{u3} (π i))), Eq.{succ (max u1 u3)} (Set.{max u1 u3} (forall (i : α), π i)) (Set.iUnion.{max u1 u3, imax (succ u1) u2} (forall (i : α), π i) (α -> ι) (fun (x : α -> ι) => Set.pi.{u1, u3} α (fun (i : α) => π i) (Set.univ.{u1} α) (fun (i : α) => t i (x i)))) (Set.pi.{u1, u3} α (fun (i : α) => π i) (Set.univ.{u1} α) (fun (i : α) => Set.iUnion.{u3, u2} (π i) ι (fun (j : ι) => t i j)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {π : α -> Type.{u3}} (t : forall (i : α), ι -> (Set.{u3} (π i))), Eq.{max (succ u2) (succ u3)} (Set.{max u3 u2} (forall (i : α), π i)) (Set.unionᵢ.{max u3 u2, imax (succ u2) u1} (forall (i : α), π i) (α -> ι) (fun (x : α -> ι) => Set.pi.{u2, u3} α (fun (i : α) => π i) (Set.univ.{u2} α) (fun (i : α) => t i (x i)))) (Set.pi.{u2, u3} α (fun (i : α) => π i) (Set.univ.{u2} α) (fun (i : α) => Set.unionᵢ.{u3, u1} (π i) ι (fun (j : ι) => t i j)))
-Case conversion may be inaccurate. Consider using '#align set.Union_univ_pi Set.unionᵢ_univ_piₓ'. -/
-theorem unionᵢ_univ_pi (t : ∀ i, ι → Set (π i)) :
+ forall {α : Type.{u2}} {ι : Sort.{u1}} {π : α -> Type.{u3}} (t : forall (i : α), ι -> (Set.{u3} (π i))), Eq.{max (succ u2) (succ u3)} (Set.{max u3 u2} (forall (i : α), π i)) (Set.iUnion.{max u3 u2, imax (succ u2) u1} (forall (i : α), π i) (α -> ι) (fun (x : α -> ι) => Set.pi.{u2, u3} α (fun (i : α) => π i) (Set.univ.{u2} α) (fun (i : α) => t i (x i)))) (Set.pi.{u2, u3} α (fun (i : α) => π i) (Set.univ.{u2} α) (fun (i : α) => Set.iUnion.{u3, u1} (π i) ι (fun (j : ι) => t i j)))
+Case conversion may be inaccurate. Consider using '#align set.Union_univ_pi Set.iUnion_univ_piₓ'. -/
+theorem iUnion_univ_pi (t : ∀ i, ι → Set (π i)) :
(⋃ x : α → ι, pi univ fun i => t i (x i)) = pi univ fun i => ⋃ j : ι, t i j :=
by
ext
simp [Classical.skolem]
-#align set.Union_univ_pi Set.unionᵢ_univ_pi
+#align set.Union_univ_pi Set.iUnion_univ_pi
end Pi
@@ -3822,25 +3822,25 @@ namespace Function
namespace Surjective
-/- warning: function.surjective.Union_comp -> Function.Surjective.unionᵢ_comp is a dubious translation:
+/- warning: function.surjective.Union_comp -> Function.Surjective.iUnion_comp is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι₂ : Sort.{u3}} {f : ι -> ι₂}, (Function.Surjective.{u2, u3} ι ι₂ f) -> (forall (g : ι₂ -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, u2} α ι (fun (x : ι) => g (f x))) (Set.unionᵢ.{u1, u3} α ι₂ (fun (y : ι₂) => g y)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {ι₂ : Sort.{u3}} {f : ι -> ι₂}, (Function.Surjective.{u2, u3} ι ι₂ f) -> (forall (g : ι₂ -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u2} α ι (fun (x : ι) => g (f x))) (Set.iUnion.{u1, u3} α ι₂ (fun (y : ι₂) => g y)))
but is expected to have type
- forall {α : Type.{u1}} {ι : Sort.{u3}} {ι₂ : Sort.{u2}} {f : ι -> ι₂}, (Function.Surjective.{u3, u2} ι ι₂ f) -> (forall (g : ι₂ -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, u3} α ι (fun (x : ι) => g (f x))) (Set.unionᵢ.{u1, u2} α ι₂ (fun (y : ι₂) => g y)))
-Case conversion may be inaccurate. Consider using '#align function.surjective.Union_comp Function.Surjective.unionᵢ_compₓ'. -/
-theorem unionᵢ_comp {f : ι → ι₂} (hf : Surjective f) (g : ι₂ → Set α) : (⋃ x, g (f x)) = ⋃ y, g y :=
- hf.supᵢ_comp g
-#align function.surjective.Union_comp Function.Surjective.unionᵢ_comp
+ forall {α : Type.{u1}} {ι : Sort.{u3}} {ι₂ : Sort.{u2}} {f : ι -> ι₂}, (Function.Surjective.{u3, u2} ι ι₂ f) -> (forall (g : ι₂ -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, u3} α ι (fun (x : ι) => g (f x))) (Set.iUnion.{u1, u2} α ι₂ (fun (y : ι₂) => g y)))
+Case conversion may be inaccurate. Consider using '#align function.surjective.Union_comp Function.Surjective.iUnion_compₓ'. -/
+theorem iUnion_comp {f : ι → ι₂} (hf : Surjective f) (g : ι₂ → Set α) : (⋃ x, g (f x)) = ⋃ y, g y :=
+ hf.iSup_comp g
+#align function.surjective.Union_comp Function.Surjective.iUnion_comp
-/- warning: function.surjective.Inter_comp -> Function.Surjective.interᵢ_comp is a dubious translation:
+/- warning: function.surjective.Inter_comp -> Function.Surjective.iInter_comp is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι₂ : Sort.{u3}} {f : ι -> ι₂}, (Function.Surjective.{u2, u3} ι ι₂ f) -> (forall (g : ι₂ -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, u2} α ι (fun (x : ι) => g (f x))) (Set.interᵢ.{u1, u3} α ι₂ (fun (y : ι₂) => g y)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {ι₂ : Sort.{u3}} {f : ι -> ι₂}, (Function.Surjective.{u2, u3} ι ι₂ f) -> (forall (g : ι₂ -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u2} α ι (fun (x : ι) => g (f x))) (Set.iInter.{u1, u3} α ι₂ (fun (y : ι₂) => g y)))
but is expected to have type
- forall {α : Type.{u1}} {ι : Sort.{u3}} {ι₂ : Sort.{u2}} {f : ι -> ι₂}, (Function.Surjective.{u3, u2} ι ι₂ f) -> (forall (g : ι₂ -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, u3} α ι (fun (x : ι) => g (f x))) (Set.interᵢ.{u1, u2} α ι₂ (fun (y : ι₂) => g y)))
-Case conversion may be inaccurate. Consider using '#align function.surjective.Inter_comp Function.Surjective.interᵢ_compₓ'. -/
-theorem interᵢ_comp {f : ι → ι₂} (hf : Surjective f) (g : ι₂ → Set α) : (⋂ x, g (f x)) = ⋂ y, g y :=
- hf.infᵢ_comp g
-#align function.surjective.Inter_comp Function.Surjective.interᵢ_comp
+ forall {α : Type.{u1}} {ι : Sort.{u3}} {ι₂ : Sort.{u2}} {f : ι -> ι₂}, (Function.Surjective.{u3, u2} ι ι₂ f) -> (forall (g : ι₂ -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, u3} α ι (fun (x : ι) => g (f x))) (Set.iInter.{u1, u2} α ι₂ (fun (y : ι₂) => g y)))
+Case conversion may be inaccurate. Consider using '#align function.surjective.Inter_comp Function.Surjective.iInter_compₓ'. -/
+theorem iInter_comp {f : ι → ι₂} (hf : Surjective f) (g : ι₂ → Set α) : (⋂ x, g (f x)) = ⋂ y, g y :=
+ hf.iInf_comp g
+#align function.surjective.Inter_comp Function.Surjective.iInter_comp
end Surjective
@@ -3859,79 +3859,79 @@ variable {s t u : Set α} {f : α → β}
namespace Set
-/- warning: set.disjoint_Union_left -> Set.disjoint_unionᵢ_left is a dubious translation:
+/- warning: set.disjoint_Union_left -> Set.disjoint_iUnion_left is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {t : Set.{u1} α} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => s i)) t) (forall (i : ι), Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (s i) t)
+ forall {α : Type.{u1}} {t : Set.{u1} α} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i)) t) (forall (i : ι), Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (s i) t)
but is expected to have type
- forall {α : Type.{u1}} {t : Set.{u1} α} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => s i)) t) (forall (i : ι), Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (s i) t)
-Case conversion may be inaccurate. Consider using '#align set.disjoint_Union_left Set.disjoint_unionᵢ_leftₓ'. -/
+ forall {α : Type.{u1}} {t : Set.{u1} α} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i)) t) (forall (i : ι), Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (s i) t)
+Case conversion may be inaccurate. Consider using '#align set.disjoint_Union_left Set.disjoint_iUnion_leftₓ'. -/
@[simp]
-theorem disjoint_unionᵢ_left {ι : Sort _} {s : ι → Set α} :
+theorem disjoint_iUnion_left {ι : Sort _} {s : ι → Set α} :
Disjoint (⋃ i, s i) t ↔ ∀ i, Disjoint (s i) t :=
- supᵢ_disjoint_iff
-#align set.disjoint_Union_left Set.disjoint_unionᵢ_left
+ iSup_disjoint_iff
+#align set.disjoint_Union_left Set.disjoint_iUnion_left
-/- warning: set.disjoint_Union_right -> Set.disjoint_unionᵢ_right is a dubious translation:
+/- warning: set.disjoint_Union_right -> Set.disjoint_iUnion_right is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {t : Set.{u1} α} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) t (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => s i))) (forall (i : ι), Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) t (s i))
+ forall {α : Type.{u1}} {t : Set.{u1} α} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) t (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i))) (forall (i : ι), Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) t (s i))
but is expected to have type
- forall {α : Type.{u1}} {t : Set.{u1} α} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) t (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => s i))) (forall (i : ι), Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) t (s i))
-Case conversion may be inaccurate. Consider using '#align set.disjoint_Union_right Set.disjoint_unionᵢ_rightₓ'. -/
+ forall {α : Type.{u1}} {t : Set.{u1} α} {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) t (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i))) (forall (i : ι), Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) t (s i))
+Case conversion may be inaccurate. Consider using '#align set.disjoint_Union_right Set.disjoint_iUnion_rightₓ'. -/
@[simp]
-theorem disjoint_unionᵢ_right {ι : Sort _} {s : ι → Set α} :
+theorem disjoint_iUnion_right {ι : Sort _} {s : ι → Set α} :
Disjoint t (⋃ i, s i) ↔ ∀ i, Disjoint t (s i) :=
- disjoint_supᵢ_iff
-#align set.disjoint_Union_right Set.disjoint_unionᵢ_right
+ disjoint_iSup_iff
+#align set.disjoint_Union_right Set.disjoint_iUnion_right
-/- warning: set.disjoint_Union₂_left -> Set.disjoint_unionᵢ₂_left is a dubious translation:
+/- warning: set.disjoint_Union₂_left -> Set.disjoint_iUnion₂_left is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : Set.{u1} α}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) t) (forall (i : ι) (j : κ i), Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (s i j) t)
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : forall (i : ι), (κ i) -> (Set.{u1} α)} {t : Set.{u1} α}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => s i j))) t) (forall (i : ι) (j : κ i), Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (s i j) t)
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {t : Set.{u3} α}, Iff (Disjoint.{u3} (Set.{u3} α) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} α) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))) (BoundedOrder.toOrderBot.{u3} (Set.{u3} α) (Preorder.toLE.{u3} (Set.{u3} α) (PartialOrder.toPreorder.{u3} (Set.{u3} α) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} α) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))))) (CompleteLattice.toBoundedOrder.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))) (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => Set.unionᵢ.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) t) (forall (i : ι) (j : κ i), Disjoint.{u3} (Set.{u3} α) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} α) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))) (BoundedOrder.toOrderBot.{u3} (Set.{u3} α) (Preorder.toLE.{u3} (Set.{u3} α) (PartialOrder.toPreorder.{u3} (Set.{u3} α) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} α) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))))) (CompleteLattice.toBoundedOrder.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))) (s i j) t)
-Case conversion may be inaccurate. Consider using '#align set.disjoint_Union₂_left Set.disjoint_unionᵢ₂_leftₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : forall (i : ι), (κ i) -> (Set.{u3} α)} {t : Set.{u3} α}, Iff (Disjoint.{u3} (Set.{u3} α) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} α) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))) (BoundedOrder.toOrderBot.{u3} (Set.{u3} α) (Preorder.toLE.{u3} (Set.{u3} α) (PartialOrder.toPreorder.{u3} (Set.{u3} α) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} α) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))))) (CompleteLattice.toBoundedOrder.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))) (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => s i j))) t) (forall (i : ι) (j : κ i), Disjoint.{u3} (Set.{u3} α) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} α) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))) (BoundedOrder.toOrderBot.{u3} (Set.{u3} α) (Preorder.toLE.{u3} (Set.{u3} α) (PartialOrder.toPreorder.{u3} (Set.{u3} α) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} α) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))))) (CompleteLattice.toBoundedOrder.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))) (s i j) t)
+Case conversion may be inaccurate. Consider using '#align set.disjoint_Union₂_left Set.disjoint_iUnion₂_leftₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
@[simp]
-theorem disjoint_unionᵢ₂_left {s : ∀ i, κ i → Set α} {t : Set α} :
+theorem disjoint_iUnion₂_left {s : ∀ i, κ i → Set α} {t : Set α} :
Disjoint (⋃ (i) (j), s i j) t ↔ ∀ i j, Disjoint (s i j) t :=
- supᵢ₂_disjoint_iff
-#align set.disjoint_Union₂_left Set.disjoint_unionᵢ₂_left
+ iSup₂_disjoint_iff
+#align set.disjoint_Union₂_left Set.disjoint_iUnion₂_left
-/- warning: set.disjoint_Union₂_right -> Set.disjoint_unionᵢ₂_right is a dubious translation:
+/- warning: set.disjoint_Union₂_right -> Set.disjoint_iUnion₂_right is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : Set.{u1} α} {t : forall (i : ι), (κ i) -> (Set.{u1} α)}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) s (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => Set.unionᵢ.{u1, u3} α (κ i) (fun (j : κ i) => t i j)))) (forall (i : ι) (j : κ i), Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) s (t i j))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} {s : Set.{u1} α} {t : forall (i : ι), (κ i) -> (Set.{u1} α)}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) s (Set.iUnion.{u1, u2} α ι (fun (i : ι) => Set.iUnion.{u1, u3} α (κ i) (fun (j : κ i) => t i j)))) (forall (i : ι) (j : κ i), Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) s (t i j))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : Set.{u3} α} {t : forall (i : ι), (κ i) -> (Set.{u3} α)}, Iff (Disjoint.{u3} (Set.{u3} α) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} α) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))) (BoundedOrder.toOrderBot.{u3} (Set.{u3} α) (Preorder.toLE.{u3} (Set.{u3} α) (PartialOrder.toPreorder.{u3} (Set.{u3} α) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} α) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))))) (CompleteLattice.toBoundedOrder.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))) s (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => Set.unionᵢ.{u3, u1} α (κ i) (fun (j : κ i) => t i j)))) (forall (i : ι) (j : κ i), Disjoint.{u3} (Set.{u3} α) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} α) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))) (BoundedOrder.toOrderBot.{u3} (Set.{u3} α) (Preorder.toLE.{u3} (Set.{u3} α) (PartialOrder.toPreorder.{u3} (Set.{u3} α) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} α) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))))) (CompleteLattice.toBoundedOrder.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))) s (t i j))
-Case conversion may be inaccurate. Consider using '#align set.disjoint_Union₂_right Set.disjoint_unionᵢ₂_rightₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} {s : Set.{u3} α} {t : forall (i : ι), (κ i) -> (Set.{u3} α)}, Iff (Disjoint.{u3} (Set.{u3} α) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} α) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))) (BoundedOrder.toOrderBot.{u3} (Set.{u3} α) (Preorder.toLE.{u3} (Set.{u3} α) (PartialOrder.toPreorder.{u3} (Set.{u3} α) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} α) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))))) (CompleteLattice.toBoundedOrder.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))) s (Set.iUnion.{u3, u2} α ι (fun (i : ι) => Set.iUnion.{u3, u1} α (κ i) (fun (j : κ i) => t i j)))) (forall (i : ι) (j : κ i), Disjoint.{u3} (Set.{u3} α) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} α) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))) (BoundedOrder.toOrderBot.{u3} (Set.{u3} α) (Preorder.toLE.{u3} (Set.{u3} α) (PartialOrder.toPreorder.{u3} (Set.{u3} α) (CompleteSemilatticeInf.toPartialOrder.{u3} (Set.{u3} α) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))))) (CompleteLattice.toBoundedOrder.{u3} (Set.{u3} α) (Order.Coframe.toCompleteLattice.{u3} (Set.{u3} α) (CompleteDistribLattice.toCoframe.{u3} (Set.{u3} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u3} (Set.{u3} α) (Set.instCompleteBooleanAlgebraSet.{u3} α)))))) s (t i j))
+Case conversion may be inaccurate. Consider using '#align set.disjoint_Union₂_right Set.disjoint_iUnion₂_rightₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
@[simp]
-theorem disjoint_unionᵢ₂_right {s : Set α} {t : ∀ i, κ i → Set α} :
+theorem disjoint_iUnion₂_right {s : Set α} {t : ∀ i, κ i → Set α} :
Disjoint s (⋃ (i) (j), t i j) ↔ ∀ i j, Disjoint s (t i j) :=
- disjoint_supᵢ₂_iff
-#align set.disjoint_Union₂_right Set.disjoint_unionᵢ₂_right
+ disjoint_iSup₂_iff
+#align set.disjoint_Union₂_right Set.disjoint_iUnion₂_right
-/- warning: set.disjoint_sUnion_left -> Set.disjoint_unionₛ_left is a dubious translation:
+/- warning: set.disjoint_sUnion_left -> Set.disjoint_sUnion_left is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {S : Set.{u1} (Set.{u1} α)} {t : Set.{u1} α}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (Set.unionₛ.{u1} α S) t) (forall (s : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s S) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) s t))
+ forall {α : Type.{u1}} {S : Set.{u1} (Set.{u1} α)} {t : Set.{u1} α}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (Set.sUnion.{u1} α S) t) (forall (s : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s S) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) s t))
but is expected to have type
- forall {α : Type.{u1}} {S : Set.{u1} (Set.{u1} α)} {t : Set.{u1} α}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (Set.unionₛ.{u1} α S) t) (forall (s : Set.{u1} α), (Membership.mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instMembershipSet.{u1} (Set.{u1} α)) s S) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) s t))
-Case conversion may be inaccurate. Consider using '#align set.disjoint_sUnion_left Set.disjoint_unionₛ_leftₓ'. -/
+ forall {α : Type.{u1}} {S : Set.{u1} (Set.{u1} α)} {t : Set.{u1} α}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (Set.sUnion.{u1} α S) t) (forall (s : Set.{u1} α), (Membership.mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instMembershipSet.{u1} (Set.{u1} α)) s S) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) s t))
+Case conversion may be inaccurate. Consider using '#align set.disjoint_sUnion_left Set.disjoint_sUnion_leftₓ'. -/
@[simp]
-theorem disjoint_unionₛ_left {S : Set (Set α)} {t : Set α} :
+theorem disjoint_sUnion_left {S : Set (Set α)} {t : Set α} :
Disjoint (⋃₀ S) t ↔ ∀ s ∈ S, Disjoint s t :=
- supₛ_disjoint_iff
-#align set.disjoint_sUnion_left Set.disjoint_unionₛ_left
+ sSup_disjoint_iff
+#align set.disjoint_sUnion_left Set.disjoint_sUnion_left
-/- warning: set.disjoint_sUnion_right -> Set.disjoint_unionₛ_right is a dubious translation:
+/- warning: set.disjoint_sUnion_right -> Set.disjoint_sUnion_right is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {s : Set.{u1} α} {S : Set.{u1} (Set.{u1} α)}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) s (Set.unionₛ.{u1} α S)) (forall (t : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) t S) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) s t))
+ forall {α : Type.{u1}} {s : Set.{u1} α} {S : Set.{u1} (Set.{u1} α)}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) s (Set.sUnion.{u1} α S)) (forall (t : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) t S) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) s t))
but is expected to have type
- forall {α : Type.{u1}} {s : Set.{u1} α} {S : Set.{u1} (Set.{u1} α)}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) s (Set.unionₛ.{u1} α S)) (forall (t : Set.{u1} α), (Membership.mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instMembershipSet.{u1} (Set.{u1} α)) t S) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) s t))
-Case conversion may be inaccurate. Consider using '#align set.disjoint_sUnion_right Set.disjoint_unionₛ_rightₓ'. -/
+ forall {α : Type.{u1}} {s : Set.{u1} α} {S : Set.{u1} (Set.{u1} α)}, Iff (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) s (Set.sUnion.{u1} α S)) (forall (t : Set.{u1} α), (Membership.mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instMembershipSet.{u1} (Set.{u1} α)) t S) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) s t))
+Case conversion may be inaccurate. Consider using '#align set.disjoint_sUnion_right Set.disjoint_sUnion_rightₓ'. -/
@[simp]
-theorem disjoint_unionₛ_right {s : Set α} {S : Set (Set α)} :
+theorem disjoint_sUnion_right {s : Set α} {S : Set (Set α)} :
Disjoint s (⋃₀ S) ↔ ∀ t ∈ S, Disjoint s t :=
- disjoint_supₛ_iff
-#align set.disjoint_sUnion_right Set.disjoint_unionₛ_right
+ disjoint_sSup_iff
+#align set.disjoint_sUnion_right Set.disjoint_sUnion_right
end Set
@@ -3944,67 +3944,67 @@ namespace Set
variable [CompleteLattice α]
-/- warning: set.Ici_supr -> Set.Ici_supᵢ is a dubious translation:
+/- warning: set.Ici_supr -> Set.Ici_iSup is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : CompleteLattice.{u1} α] (f : ι -> α), Eq.{succ u1} (Set.{u1} α) (Set.Ici.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (supᵢ.{u1, u2} α (CompleteSemilatticeSup.toHasSup.{u1} α (CompleteLattice.toCompleteSemilatticeSup.{u1} α _inst_1)) ι (fun (i : ι) => f i))) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.Ici.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (f i)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : CompleteLattice.{u1} α] (f : ι -> α), Eq.{succ u1} (Set.{u1} α) (Set.Ici.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (iSup.{u1, u2} α (CompleteSemilatticeSup.toHasSup.{u1} α (CompleteLattice.toCompleteSemilatticeSup.{u1} α _inst_1)) ι (fun (i : ι) => f i))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.Ici.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (f i)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : CompleteLattice.{u2} α] (f : ι -> α), Eq.{succ u2} (Set.{u2} α) (Set.Ici.{u2} α (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α _inst_1))) (supᵢ.{u2, u1} α (CompleteLattice.toSupSet.{u2} α _inst_1) ι (fun (i : ι) => f i))) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => Set.Ici.{u2} α (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α _inst_1))) (f i)))
-Case conversion may be inaccurate. Consider using '#align set.Ici_supr Set.Ici_supᵢₓ'. -/
-theorem Ici_supᵢ (f : ι → α) : Ici (⨆ i, f i) = ⋂ i, Ici (f i) :=
- ext fun _ => by simp only [mem_Ici, supᵢ_le_iff, mem_Inter]
-#align set.Ici_supr Set.Ici_supᵢ
+ forall {α : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : CompleteLattice.{u2} α] (f : ι -> α), Eq.{succ u2} (Set.{u2} α) (Set.Ici.{u2} α (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α _inst_1))) (iSup.{u2, u1} α (CompleteLattice.toSupSet.{u2} α _inst_1) ι (fun (i : ι) => f i))) (Set.iInter.{u2, u1} α ι (fun (i : ι) => Set.Ici.{u2} α (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α _inst_1))) (f i)))
+Case conversion may be inaccurate. Consider using '#align set.Ici_supr Set.Ici_iSupₓ'. -/
+theorem Ici_iSup (f : ι → α) : Ici (⨆ i, f i) = ⋂ i, Ici (f i) :=
+ ext fun _ => by simp only [mem_Ici, iSup_le_iff, mem_Inter]
+#align set.Ici_supr Set.Ici_iSup
-/- warning: set.Iic_infi -> Set.Iic_infᵢ is a dubious translation:
+/- warning: set.Iic_infi -> Set.Iic_iInf is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : CompleteLattice.{u1} α] (f : ι -> α), Eq.{succ u1} (Set.{u1} α) (Set.Iic.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (infᵢ.{u1, u2} α (CompleteSemilatticeInf.toHasInf.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1)) ι (fun (i : ι) => f i))) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.Iic.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (f i)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : CompleteLattice.{u1} α] (f : ι -> α), Eq.{succ u1} (Set.{u1} α) (Set.Iic.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (iInf.{u1, u2} α (CompleteSemilatticeInf.toHasInf.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1)) ι (fun (i : ι) => f i))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.Iic.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (f i)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : CompleteLattice.{u2} α] (f : ι -> α), Eq.{succ u2} (Set.{u2} α) (Set.Iic.{u2} α (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α _inst_1))) (infᵢ.{u2, u1} α (CompleteLattice.toInfSet.{u2} α _inst_1) ι (fun (i : ι) => f i))) (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => Set.Iic.{u2} α (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α _inst_1))) (f i)))
-Case conversion may be inaccurate. Consider using '#align set.Iic_infi Set.Iic_infᵢₓ'. -/
-theorem Iic_infᵢ (f : ι → α) : Iic (⨅ i, f i) = ⋂ i, Iic (f i) :=
- ext fun _ => by simp only [mem_Iic, le_infᵢ_iff, mem_Inter]
-#align set.Iic_infi Set.Iic_infᵢ
+ forall {α : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : CompleteLattice.{u2} α] (f : ι -> α), Eq.{succ u2} (Set.{u2} α) (Set.Iic.{u2} α (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α _inst_1))) (iInf.{u2, u1} α (CompleteLattice.toInfSet.{u2} α _inst_1) ι (fun (i : ι) => f i))) (Set.iInter.{u2, u1} α ι (fun (i : ι) => Set.Iic.{u2} α (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α _inst_1))) (f i)))
+Case conversion may be inaccurate. Consider using '#align set.Iic_infi Set.Iic_iInfₓ'. -/
+theorem Iic_iInf (f : ι → α) : Iic (⨅ i, f i) = ⋂ i, Iic (f i) :=
+ ext fun _ => by simp only [mem_Iic, le_iInf_iff, mem_Inter]
+#align set.Iic_infi Set.Iic_iInf
-/- warning: set.Ici_supr₂ -> Set.Ici_supᵢ₂ is a dubious translation:
+/- warning: set.Ici_supr₂ -> Set.Ici_iSup₂ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} [_inst_1 : CompleteLattice.{u1} α] (f : forall (i : ι), (κ i) -> α), Eq.{succ u1} (Set.{u1} α) (Set.Ici.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (supᵢ.{u1, u2} α (CompleteSemilatticeSup.toHasSup.{u1} α (CompleteLattice.toCompleteSemilatticeSup.{u1} α _inst_1)) ι (fun (i : ι) => supᵢ.{u1, u3} α (CompleteSemilatticeSup.toHasSup.{u1} α (CompleteLattice.toCompleteSemilatticeSup.{u1} α _inst_1)) (κ i) (fun (j : κ i) => f i j)))) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u3} α (κ i) (fun (j : κ i) => Set.Ici.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (f i j))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} [_inst_1 : CompleteLattice.{u1} α] (f : forall (i : ι), (κ i) -> α), Eq.{succ u1} (Set.{u1} α) (Set.Ici.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (iSup.{u1, u2} α (CompleteSemilatticeSup.toHasSup.{u1} α (CompleteLattice.toCompleteSemilatticeSup.{u1} α _inst_1)) ι (fun (i : ι) => iSup.{u1, u3} α (CompleteSemilatticeSup.toHasSup.{u1} α (CompleteLattice.toCompleteSemilatticeSup.{u1} α _inst_1)) (κ i) (fun (j : κ i) => f i j)))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => Set.Ici.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (f i j))))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} [_inst_1 : CompleteLattice.{u3} α] (f : forall (i : ι), (κ i) -> α), Eq.{succ u3} (Set.{u3} α) (Set.Ici.{u3} α (PartialOrder.toPreorder.{u3} α (CompleteSemilatticeInf.toPartialOrder.{u3} α (CompleteLattice.toCompleteSemilatticeInf.{u3} α _inst_1))) (supᵢ.{u3, u2} α (CompleteLattice.toSupSet.{u3} α _inst_1) ι (fun (i : ι) => supᵢ.{u3, u1} α (CompleteLattice.toSupSet.{u3} α _inst_1) (κ i) (fun (j : κ i) => f i j)))) (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, u1} α (κ i) (fun (j : κ i) => Set.Ici.{u3} α (PartialOrder.toPreorder.{u3} α (CompleteSemilatticeInf.toPartialOrder.{u3} α (CompleteLattice.toCompleteSemilatticeInf.{u3} α _inst_1))) (f i j))))
-Case conversion may be inaccurate. Consider using '#align set.Ici_supr₂ Set.Ici_supᵢ₂ₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} [_inst_1 : CompleteLattice.{u3} α] (f : forall (i : ι), (κ i) -> α), Eq.{succ u3} (Set.{u3} α) (Set.Ici.{u3} α (PartialOrder.toPreorder.{u3} α (CompleteSemilatticeInf.toPartialOrder.{u3} α (CompleteLattice.toCompleteSemilatticeInf.{u3} α _inst_1))) (iSup.{u3, u2} α (CompleteLattice.toSupSet.{u3} α _inst_1) ι (fun (i : ι) => iSup.{u3, u1} α (CompleteLattice.toSupSet.{u3} α _inst_1) (κ i) (fun (j : κ i) => f i j)))) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => Set.Ici.{u3} α (PartialOrder.toPreorder.{u3} α (CompleteSemilatticeInf.toPartialOrder.{u3} α (CompleteLattice.toCompleteSemilatticeInf.{u3} α _inst_1))) (f i j))))
+Case conversion may be inaccurate. Consider using '#align set.Ici_supr₂ Set.Ici_iSup₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem Ici_supᵢ₂ (f : ∀ i, κ i → α) : Ici (⨆ (i) (j), f i j) = ⋂ (i) (j), Ici (f i j) := by
+theorem Ici_iSup₂ (f : ∀ i, κ i → α) : Ici (⨆ (i) (j), f i j) = ⋂ (i) (j), Ici (f i j) := by
simp_rw [Ici_supr]
-#align set.Ici_supr₂ Set.Ici_supᵢ₂
+#align set.Ici_supr₂ Set.Ici_iSup₂
-/- warning: set.Iic_infi₂ -> Set.Iic_infᵢ₂ is a dubious translation:
+/- warning: set.Iic_infi₂ -> Set.Iic_iInf₂ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} [_inst_1 : CompleteLattice.{u1} α] (f : forall (i : ι), (κ i) -> α), Eq.{succ u1} (Set.{u1} α) (Set.Iic.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (infᵢ.{u1, u2} α (CompleteSemilatticeInf.toHasInf.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1)) ι (fun (i : ι) => infᵢ.{u1, u3} α (CompleteSemilatticeInf.toHasInf.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1)) (κ i) (fun (j : κ i) => f i j)))) (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => Set.interᵢ.{u1, u3} α (κ i) (fun (j : κ i) => Set.Iic.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (f i j))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {κ : ι -> Sort.{u3}} [_inst_1 : CompleteLattice.{u1} α] (f : forall (i : ι), (κ i) -> α), Eq.{succ u1} (Set.{u1} α) (Set.Iic.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (iInf.{u1, u2} α (CompleteSemilatticeInf.toHasInf.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1)) ι (fun (i : ι) => iInf.{u1, u3} α (CompleteSemilatticeInf.toHasInf.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1)) (κ i) (fun (j : κ i) => f i j)))) (Set.iInter.{u1, u2} α ι (fun (i : ι) => Set.iInter.{u1, u3} α (κ i) (fun (j : κ i) => Set.Iic.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (f i j))))
but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} [_inst_1 : CompleteLattice.{u3} α] (f : forall (i : ι), (κ i) -> α), Eq.{succ u3} (Set.{u3} α) (Set.Iic.{u3} α (PartialOrder.toPreorder.{u3} α (CompleteSemilatticeInf.toPartialOrder.{u3} α (CompleteLattice.toCompleteSemilatticeInf.{u3} α _inst_1))) (infᵢ.{u3, u2} α (CompleteLattice.toInfSet.{u3} α _inst_1) ι (fun (i : ι) => infᵢ.{u3, u1} α (CompleteLattice.toInfSet.{u3} α _inst_1) (κ i) (fun (j : κ i) => f i j)))) (Set.interᵢ.{u3, u2} α ι (fun (i : ι) => Set.interᵢ.{u3, u1} α (κ i) (fun (j : κ i) => Set.Iic.{u3} α (PartialOrder.toPreorder.{u3} α (CompleteSemilatticeInf.toPartialOrder.{u3} α (CompleteLattice.toCompleteSemilatticeInf.{u3} α _inst_1))) (f i j))))
-Case conversion may be inaccurate. Consider using '#align set.Iic_infi₂ Set.Iic_infᵢ₂ₓ'. -/
+ forall {α : Type.{u3}} {ι : Sort.{u2}} {κ : ι -> Sort.{u1}} [_inst_1 : CompleteLattice.{u3} α] (f : forall (i : ι), (κ i) -> α), Eq.{succ u3} (Set.{u3} α) (Set.Iic.{u3} α (PartialOrder.toPreorder.{u3} α (CompleteSemilatticeInf.toPartialOrder.{u3} α (CompleteLattice.toCompleteSemilatticeInf.{u3} α _inst_1))) (iInf.{u3, u2} α (CompleteLattice.toInfSet.{u3} α _inst_1) ι (fun (i : ι) => iInf.{u3, u1} α (CompleteLattice.toInfSet.{u3} α _inst_1) (κ i) (fun (j : κ i) => f i j)))) (Set.iInter.{u3, u2} α ι (fun (i : ι) => Set.iInter.{u3, u1} α (κ i) (fun (j : κ i) => Set.Iic.{u3} α (PartialOrder.toPreorder.{u3} α (CompleteSemilatticeInf.toPartialOrder.{u3} α (CompleteLattice.toCompleteSemilatticeInf.{u3} α _inst_1))) (f i j))))
+Case conversion may be inaccurate. Consider using '#align set.Iic_infi₂ Set.Iic_iInf₂ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem Iic_infᵢ₂ (f : ∀ i, κ i → α) : Iic (⨅ (i) (j), f i j) = ⋂ (i) (j), Iic (f i j) := by
+theorem Iic_iInf₂ (f : ∀ i, κ i → α) : Iic (⨅ (i) (j), f i j) = ⋂ (i) (j), Iic (f i j) := by
simp_rw [Iic_infi]
-#align set.Iic_infi₂ Set.Iic_infᵢ₂
+#align set.Iic_infi₂ Set.Iic_iInf₂
-/- warning: set.Ici_Sup -> Set.Ici_supₛ is a dubious translation:
+/- warning: set.Ici_Sup -> Set.Ici_sSup is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : CompleteLattice.{u1} α] (s : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.Ici.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (SupSet.supₛ.{u1} α (CompleteSemilatticeSup.toHasSup.{u1} α (CompleteLattice.toCompleteSemilatticeSup.{u1} α _inst_1)) s)) (Set.interᵢ.{u1, succ u1} α α (fun (a : α) => Set.interᵢ.{u1, 0} α (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) => Set.Ici.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) a)))
+ forall {α : Type.{u1}} [_inst_1 : CompleteLattice.{u1} α] (s : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.Ici.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (SupSet.sSup.{u1} α (CompleteSemilatticeSup.toHasSup.{u1} α (CompleteLattice.toCompleteSemilatticeSup.{u1} α _inst_1)) s)) (Set.iInter.{u1, succ u1} α α (fun (a : α) => Set.iInter.{u1, 0} α (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) => Set.Ici.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) a)))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : CompleteLattice.{u1} α] (s : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.Ici.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (SupSet.supₛ.{u1} α (CompleteLattice.toSupSet.{u1} α _inst_1) s)) (Set.interᵢ.{u1, succ u1} α α (fun (a : α) => Set.interᵢ.{u1, 0} α (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) a s) (fun (H : Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) a s) => Set.Ici.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) a)))
-Case conversion may be inaccurate. Consider using '#align set.Ici_Sup Set.Ici_supₛₓ'. -/
-theorem Ici_supₛ (s : Set α) : Ici (supₛ s) = ⋂ a ∈ s, Ici a := by rw [supₛ_eq_supᵢ, Ici_supr₂]
-#align set.Ici_Sup Set.Ici_supₛ
+ forall {α : Type.{u1}} [_inst_1 : CompleteLattice.{u1} α] (s : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.Ici.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (SupSet.sSup.{u1} α (CompleteLattice.toSupSet.{u1} α _inst_1) s)) (Set.iInter.{u1, succ u1} α α (fun (a : α) => Set.iInter.{u1, 0} α (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) a s) (fun (H : Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) a s) => Set.Ici.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) a)))
+Case conversion may be inaccurate. Consider using '#align set.Ici_Sup Set.Ici_sSupₓ'. -/
+theorem Ici_sSup (s : Set α) : Ici (sSup s) = ⋂ a ∈ s, Ici a := by rw [sSup_eq_iSup, Ici_supr₂]
+#align set.Ici_Sup Set.Ici_sSup
-/- warning: set.Iic_Inf -> Set.Iic_infₛ is a dubious translation:
+/- warning: set.Iic_Inf -> Set.Iic_sInf is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : CompleteLattice.{u1} α] (s : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.Iic.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (InfSet.infₛ.{u1} α (CompleteSemilatticeInf.toHasInf.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1)) s)) (Set.interᵢ.{u1, succ u1} α α (fun (a : α) => Set.interᵢ.{u1, 0} α (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) => Set.Iic.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) a)))
+ forall {α : Type.{u1}} [_inst_1 : CompleteLattice.{u1} α] (s : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.Iic.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (InfSet.sInf.{u1} α (CompleteSemilatticeInf.toHasInf.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1)) s)) (Set.iInter.{u1, succ u1} α α (fun (a : α) => Set.iInter.{u1, 0} α (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) => Set.Iic.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) a)))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : CompleteLattice.{u1} α] (s : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.Iic.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (InfSet.infₛ.{u1} α (CompleteLattice.toInfSet.{u1} α _inst_1) s)) (Set.interᵢ.{u1, succ u1} α α (fun (a : α) => Set.interᵢ.{u1, 0} α (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) a s) (fun (H : Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) a s) => Set.Iic.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) a)))
-Case conversion may be inaccurate. Consider using '#align set.Iic_Inf Set.Iic_infₛₓ'. -/
-theorem Iic_infₛ (s : Set α) : Iic (infₛ s) = ⋂ a ∈ s, Iic a := by rw [infₛ_eq_infᵢ, Iic_infi₂]
-#align set.Iic_Inf Set.Iic_infₛ
+ forall {α : Type.{u1}} [_inst_1 : CompleteLattice.{u1} α] (s : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.Iic.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) (InfSet.sInf.{u1} α (CompleteLattice.toInfSet.{u1} α _inst_1) s)) (Set.iInter.{u1, succ u1} α α (fun (a : α) => Set.iInter.{u1, 0} α (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) a s) (fun (H : Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) a s) => Set.Iic.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1))) a)))
+Case conversion may be inaccurate. Consider using '#align set.Iic_Inf Set.Iic_sInfₓ'. -/
+theorem Iic_sInf (s : Set α) : Iic (sInf s) = ⋂ a ∈ s, Iic a := by rw [sInf_eq_iInf, Iic_infi₂]
+#align set.Iic_Inf Set.Iic_sInf
end Set
@@ -4012,50 +4012,50 @@ namespace Set
variable (t : α → Set β)
-/- warning: set.bUnion_diff_bUnion_subset -> Set.bunionᵢ_diff_bunionᵢ_subset is a dubious translation:
+/- warning: set.bUnion_diff_bUnion_subset -> Set.biUnion_diff_biUnion_subset is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (t : α -> (Set.{u2} β)) (s₁ : Set.{u1} α) (s₂ : Set.{u1} α), HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (SDiff.sdiff.{u2} (Set.{u2} β) (BooleanAlgebra.toHasSdiff.{u2} (Set.{u2} β) (Set.booleanAlgebra.{u2} β)) (Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s₁) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s₁) => t x))) (Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s₂) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s₂) => t x)))) (Set.unionᵢ.{u2, succ u1} β α (fun (x : α) => Set.unionᵢ.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (SDiff.sdiff.{u1} (Set.{u1} α) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) s₁ s₂)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (SDiff.sdiff.{u1} (Set.{u1} α) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) s₁ s₂)) => t x)))
+ forall {α : Type.{u1}} {β : Type.{u2}} (t : α -> (Set.{u2} β)) (s₁ : Set.{u1} α) (s₂ : Set.{u1} α), HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) (SDiff.sdiff.{u2} (Set.{u2} β) (BooleanAlgebra.toHasSdiff.{u2} (Set.{u2} β) (Set.booleanAlgebra.{u2} β)) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s₁) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s₁) => t x))) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s₂) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s₂) => t x)))) (Set.iUnion.{u2, succ u1} β α (fun (x : α) => Set.iUnion.{u2, 0} β (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (SDiff.sdiff.{u1} (Set.{u1} α) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) s₁ s₂)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x (SDiff.sdiff.{u1} (Set.{u1} α) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) s₁ s₂)) => t x)))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (t : α -> (Set.{u1} β)) (s₁ : Set.{u2} α) (s₂ : Set.{u2} α), HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (SDiff.sdiff.{u1} (Set.{u1} β) (Set.instSDiffSet.{u1} β) (Set.unionᵢ.{u1, succ u2} β α (fun (x : α) => Set.unionᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s₁) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s₁) => t x))) (Set.unionᵢ.{u1, succ u2} β α (fun (x : α) => Set.unionᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s₂) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s₂) => t x)))) (Set.unionᵢ.{u1, succ u2} β α (fun (x : α) => Set.unionᵢ.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (SDiff.sdiff.{u2} (Set.{u2} α) (Set.instSDiffSet.{u2} α) s₁ s₂)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (SDiff.sdiff.{u2} (Set.{u2} α) (Set.instSDiffSet.{u2} α) s₁ s₂)) => t x)))
-Case conversion may be inaccurate. Consider using '#align set.bUnion_diff_bUnion_subset Set.bunionᵢ_diff_bunionᵢ_subsetₓ'. -/
-theorem bunionᵢ_diff_bunionᵢ_subset (s₁ s₂ : Set α) :
+ forall {α : Type.{u2}} {β : Type.{u1}} (t : α -> (Set.{u1} β)) (s₁ : Set.{u2} α) (s₂ : Set.{u2} α), HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (SDiff.sdiff.{u1} (Set.{u1} β) (Set.instSDiffSet.{u1} β) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s₁) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s₁) => t x))) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s₂) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s₂) => t x)))) (Set.iUnion.{u1, succ u2} β α (fun (x : α) => Set.iUnion.{u1, 0} β (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (SDiff.sdiff.{u2} (Set.{u2} α) (Set.instSDiffSet.{u2} α) s₁ s₂)) (fun (H : Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x (SDiff.sdiff.{u2} (Set.{u2} α) (Set.instSDiffSet.{u2} α) s₁ s₂)) => t x)))
+Case conversion may be inaccurate. Consider using '#align set.bUnion_diff_bUnion_subset Set.biUnion_diff_biUnion_subsetₓ'. -/
+theorem biUnion_diff_biUnion_subset (s₁ s₂ : Set α) :
((⋃ x ∈ s₁, t x) \ ⋃ x ∈ s₂, t x) ⊆ ⋃ x ∈ s₁ \ s₂, t x :=
by
simp only [diff_subset_iff, ← bUnion_union]
apply bUnion_subset_bUnion_left
rw [union_diff_self]
apply subset_union_right
-#align set.bUnion_diff_bUnion_subset Set.bunionᵢ_diff_bunionᵢ_subset
+#align set.bUnion_diff_bUnion_subset Set.biUnion_diff_biUnion_subset
-#print Set.sigmaToUnionᵢ /-
+#print Set.sigmaToiUnion /-
/-- If `t` is an indexed family of sets, then there is a natural map from `Σ i, t i` to `⋃ i, t i`
sending `⟨i, x⟩` to `x`. -/
-def sigmaToUnionᵢ (x : Σi, t i) : ⋃ i, t i :=
- ⟨x.2, mem_unionᵢ.2 ⟨x.1, x.2.2⟩⟩
-#align set.sigma_to_Union Set.sigmaToUnionᵢ
+def sigmaToiUnion (x : Σi, t i) : ⋃ i, t i :=
+ ⟨x.2, mem_iUnion.2 ⟨x.1, x.2.2⟩⟩
+#align set.sigma_to_Union Set.sigmaToiUnion
-/
-/- warning: set.sigma_to_Union_surjective -> Set.sigmaToUnionᵢ_surjective is a dubious translation:
+/- warning: set.sigma_to_Union_surjective -> Set.sigmaToiUnion_surjective is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (t : α -> (Set.{u2} β)), Function.Surjective.{max (succ u1) (succ u2), succ u2} (Sigma.{u1, u2} α (fun (i : α) => coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (t i))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (Set.unionᵢ.{u2, succ u1} β α (fun (i : α) => t i))) (Set.sigmaToUnionᵢ.{u1, u2} α β t)
+ forall {α : Type.{u1}} {β : Type.{u2}} (t : α -> (Set.{u2} β)), Function.Surjective.{max (succ u1) (succ u2), succ u2} (Sigma.{u1, u2} α (fun (i : α) => coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (t i))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (i : α) => t i))) (Set.sigmaToiUnion.{u1, u2} α β t)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (t : α -> (Set.{u1} β)), Function.Surjective.{max (succ u2) (succ u1), succ u1} (Sigma.{u2, u1} α (fun (i : α) => Set.Elem.{u1} β (t i))) (Set.Elem.{u1} β (Set.unionᵢ.{u1, succ u2} β α (fun (i : α) => t i))) (Set.sigmaToUnionᵢ.{u2, u1} α β t)
-Case conversion may be inaccurate. Consider using '#align set.sigma_to_Union_surjective Set.sigmaToUnionᵢ_surjectiveₓ'. -/
-theorem sigmaToUnionᵢ_surjective : Surjective (sigmaToUnionᵢ t)
+ forall {α : Type.{u2}} {β : Type.{u1}} (t : α -> (Set.{u1} β)), Function.Surjective.{max (succ u2) (succ u1), succ u1} (Sigma.{u2, u1} α (fun (i : α) => Set.Elem.{u1} β (t i))) (Set.Elem.{u1} β (Set.iUnion.{u1, succ u2} β α (fun (i : α) => t i))) (Set.sigmaToiUnion.{u2, u1} α β t)
+Case conversion may be inaccurate. Consider using '#align set.sigma_to_Union_surjective Set.sigmaToiUnion_surjectiveₓ'. -/
+theorem sigmaToiUnion_surjective : Surjective (sigmaToiUnion t)
| ⟨b, hb⟩ =>
have : ∃ a, b ∈ t a := by simpa using hb
let ⟨a, hb⟩ := this
⟨⟨a, b, hb⟩, rfl⟩
-#align set.sigma_to_Union_surjective Set.sigmaToUnionᵢ_surjective
+#align set.sigma_to_Union_surjective Set.sigmaToiUnion_surjective
-/- warning: set.sigma_to_Union_injective -> Set.sigmaToUnionᵢ_injective is a dubious translation:
+/- warning: set.sigma_to_Union_injective -> Set.sigmaToiUnion_injective is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (t : α -> (Set.{u2} β)), (forall (i : α) (j : α), (Ne.{succ u1} α i j) -> (Disjoint.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.completeBooleanAlgebra.{u2} β)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u2} (Set.{u2} β) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u2} (Set.{u2} β) (Set.booleanAlgebra.{u2} β))) (t i) (t j))) -> (Function.Injective.{max (succ u1) (succ u2), succ u2} (Sigma.{u1, u2} α (fun (i : α) => coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (t i))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (Set.unionᵢ.{u2, succ u1} β α (fun (i : α) => t i))) (Set.sigmaToUnionᵢ.{u1, u2} α β t))
+ forall {α : Type.{u1}} {β : Type.{u2}} (t : α -> (Set.{u2} β)), (forall (i : α) (j : α), (Ne.{succ u1} α i j) -> (Disjoint.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.completeBooleanAlgebra.{u2} β)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u2} (Set.{u2} β) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u2} (Set.{u2} β) (Set.booleanAlgebra.{u2} β))) (t i) (t j))) -> (Function.Injective.{max (succ u1) (succ u2), succ u2} (Sigma.{u1, u2} α (fun (i : α) => coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (t i))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (i : α) => t i))) (Set.sigmaToiUnion.{u1, u2} α β t))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (t : α -> (Set.{u1} β)), (forall (i : α) (j : α), (Ne.{succ u2} α i j) -> (Disjoint.{u1} (Set.{u1} β) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} β) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} β) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} β) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} β) (Set.instCompleteBooleanAlgebraSet.{u1} β)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} β) (Preorder.toLE.{u1} (Set.{u1} β) (PartialOrder.toPreorder.{u1} (Set.{u1} β) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} β) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} β) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} β) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} β) (Set.instCompleteBooleanAlgebraSet.{u1} β)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} β) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} β) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} β) (Set.instCompleteBooleanAlgebraSet.{u1} β)))))) (t i) (t j))) -> (Function.Injective.{max (succ u2) (succ u1), succ u1} (Sigma.{u2, u1} α (fun (i : α) => Set.Elem.{u1} β (t i))) (Set.Elem.{u1} β (Set.unionᵢ.{u1, succ u2} β α (fun (i : α) => t i))) (Set.sigmaToUnionᵢ.{u2, u1} α β t))
-Case conversion may be inaccurate. Consider using '#align set.sigma_to_Union_injective Set.sigmaToUnionᵢ_injectiveₓ'. -/
-theorem sigmaToUnionᵢ_injective (h : ∀ i j, i ≠ j → Disjoint (t i) (t j)) :
- Injective (sigmaToUnionᵢ t)
+ forall {α : Type.{u2}} {β : Type.{u1}} (t : α -> (Set.{u1} β)), (forall (i : α) (j : α), (Ne.{succ u2} α i j) -> (Disjoint.{u1} (Set.{u1} β) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} β) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} β) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} β) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} β) (Set.instCompleteBooleanAlgebraSet.{u1} β)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} β) (Preorder.toLE.{u1} (Set.{u1} β) (PartialOrder.toPreorder.{u1} (Set.{u1} β) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} β) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} β) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} β) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} β) (Set.instCompleteBooleanAlgebraSet.{u1} β)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} β) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} β) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} β) (Set.instCompleteBooleanAlgebraSet.{u1} β)))))) (t i) (t j))) -> (Function.Injective.{max (succ u2) (succ u1), succ u1} (Sigma.{u2, u1} α (fun (i : α) => Set.Elem.{u1} β (t i))) (Set.Elem.{u1} β (Set.iUnion.{u1, succ u2} β α (fun (i : α) => t i))) (Set.sigmaToiUnion.{u2, u1} α β t))
+Case conversion may be inaccurate. Consider using '#align set.sigma_to_Union_injective Set.sigmaToiUnion_injectiveₓ'. -/
+theorem sigmaToiUnion_injective (h : ∀ i j, i ≠ j → Disjoint (t i) (t j)) :
+ Injective (sigmaToiUnion t)
| ⟨a₁, b₁, h₁⟩, ⟨a₂, b₂, h₂⟩, Eq =>
have b_eq : b₁ = b₂ := congr_arg Subtype.val Eq
have a_eq : a₁ = a₂ :=
@@ -4063,92 +4063,92 @@ theorem sigmaToUnionᵢ_injective (h : ∀ i j, i ≠ j → Disjoint (t i) (t j)
have : b₁ ∈ t a₁ ∩ t a₂ := ⟨h₁, b_eq.symm ▸ h₂⟩
(h _ _ Ne).le_bot this
Sigma.eq a_eq <| Subtype.eq <| by subst b_eq <;> subst a_eq
-#align set.sigma_to_Union_injective Set.sigmaToUnionᵢ_injective
+#align set.sigma_to_Union_injective Set.sigmaToiUnion_injective
-/- warning: set.sigma_to_Union_bijective -> Set.sigmaToUnionᵢ_bijective is a dubious translation:
+/- warning: set.sigma_to_Union_bijective -> Set.sigmaToiUnion_bijective is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (t : α -> (Set.{u2} β)), (forall (i : α) (j : α), (Ne.{succ u1} α i j) -> (Disjoint.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.completeBooleanAlgebra.{u2} β)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u2} (Set.{u2} β) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u2} (Set.{u2} β) (Set.booleanAlgebra.{u2} β))) (t i) (t j))) -> (Function.Bijective.{max (succ u1) (succ u2), succ u2} (Sigma.{u1, u2} α (fun (i : α) => coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (t i))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (Set.unionᵢ.{u2, succ u1} β α (fun (i : α) => t i))) (Set.sigmaToUnionᵢ.{u1, u2} α β t))
+ forall {α : Type.{u1}} {β : Type.{u2}} (t : α -> (Set.{u2} β)), (forall (i : α) (j : α), (Ne.{succ u1} α i j) -> (Disjoint.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.completeBooleanAlgebra.{u2} β)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u2} (Set.{u2} β) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u2} (Set.{u2} β) (Set.booleanAlgebra.{u2} β))) (t i) (t j))) -> (Function.Bijective.{max (succ u1) (succ u2), succ u2} (Sigma.{u1, u2} α (fun (i : α) => coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (t i))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (i : α) => t i))) (Set.sigmaToiUnion.{u1, u2} α β t))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (t : α -> (Set.{u1} β)), (forall (i : α) (j : α), (Ne.{succ u2} α i j) -> (Disjoint.{u1} (Set.{u1} β) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} β) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} β) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} β) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} β) (Set.instCompleteBooleanAlgebraSet.{u1} β)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} β) (Preorder.toLE.{u1} (Set.{u1} β) (PartialOrder.toPreorder.{u1} (Set.{u1} β) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} β) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} β) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} β) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} β) (Set.instCompleteBooleanAlgebraSet.{u1} β)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} β) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} β) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} β) (Set.instCompleteBooleanAlgebraSet.{u1} β)))))) (t i) (t j))) -> (Function.Bijective.{max (succ u2) (succ u1), succ u1} (Sigma.{u2, u1} α (fun (i : α) => Set.Elem.{u1} β (t i))) (Set.Elem.{u1} β (Set.unionᵢ.{u1, succ u2} β α (fun (i : α) => t i))) (Set.sigmaToUnionᵢ.{u2, u1} α β t))
-Case conversion may be inaccurate. Consider using '#align set.sigma_to_Union_bijective Set.sigmaToUnionᵢ_bijectiveₓ'. -/
-theorem sigmaToUnionᵢ_bijective (h : ∀ i j, i ≠ j → Disjoint (t i) (t j)) :
- Bijective (sigmaToUnionᵢ t) :=
- ⟨sigmaToUnionᵢ_injective t h, sigmaToUnionᵢ_surjective t⟩
-#align set.sigma_to_Union_bijective Set.sigmaToUnionᵢ_bijective
+ forall {α : Type.{u2}} {β : Type.{u1}} (t : α -> (Set.{u1} β)), (forall (i : α) (j : α), (Ne.{succ u2} α i j) -> (Disjoint.{u1} (Set.{u1} β) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} β) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} β) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} β) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} β) (Set.instCompleteBooleanAlgebraSet.{u1} β)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} β) (Preorder.toLE.{u1} (Set.{u1} β) (PartialOrder.toPreorder.{u1} (Set.{u1} β) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} β) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} β) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} β) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} β) (Set.instCompleteBooleanAlgebraSet.{u1} β)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} β) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} β) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} β) (Set.instCompleteBooleanAlgebraSet.{u1} β)))))) (t i) (t j))) -> (Function.Bijective.{max (succ u2) (succ u1), succ u1} (Sigma.{u2, u1} α (fun (i : α) => Set.Elem.{u1} β (t i))) (Set.Elem.{u1} β (Set.iUnion.{u1, succ u2} β α (fun (i : α) => t i))) (Set.sigmaToiUnion.{u2, u1} α β t))
+Case conversion may be inaccurate. Consider using '#align set.sigma_to_Union_bijective Set.sigmaToiUnion_bijectiveₓ'. -/
+theorem sigmaToiUnion_bijective (h : ∀ i j, i ≠ j → Disjoint (t i) (t j)) :
+ Bijective (sigmaToiUnion t) :=
+ ⟨sigmaToiUnion_injective t h, sigmaToiUnion_surjective t⟩
+#align set.sigma_to_Union_bijective Set.sigmaToiUnion_bijective
/- warning: set.Union_eq_sigma_of_disjoint -> Set.unionEqSigmaOfDisjoint is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {t : α -> (Set.{u2} β)}, (forall (i : α) (j : α), (Ne.{succ u1} α i j) -> (Disjoint.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.completeBooleanAlgebra.{u2} β)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u2} (Set.{u2} β) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u2} (Set.{u2} β) (Set.booleanAlgebra.{u2} β))) (t i) (t j))) -> (Equiv.{succ u2, max (succ u1) (succ u2)} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (Set.unionᵢ.{u2, succ u1} β α (fun (i : α) => t i))) (Sigma.{u1, u2} α (fun (i : α) => coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (t i))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {t : α -> (Set.{u2} β)}, (forall (i : α) (j : α), (Ne.{succ u1} α i j) -> (Disjoint.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.completeBooleanAlgebra.{u2} β)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u2} (Set.{u2} β) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u2} (Set.{u2} β) (Set.booleanAlgebra.{u2} β))) (t i) (t j))) -> (Equiv.{succ u2, max (succ u1) (succ u2)} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (Set.iUnion.{u2, succ u1} β α (fun (i : α) => t i))) (Sigma.{u1, u2} α (fun (i : α) => coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (t i))))
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {t : α -> (Set.{u2} β)}, (forall (i : α) (j : α), (Ne.{succ u1} α i j) -> (Disjoint.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.instCompleteBooleanAlgebraSet.{u2} β)))))) (BoundedOrder.toOrderBot.{u2} (Set.{u2} β) (Preorder.toLE.{u2} (Set.{u2} β) (PartialOrder.toPreorder.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.instCompleteBooleanAlgebraSet.{u2} β)))))))) (CompleteLattice.toBoundedOrder.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.instCompleteBooleanAlgebraSet.{u2} β)))))) (t i) (t j))) -> (Equiv.{succ u2, max (succ u2) (succ u1)} (Set.Elem.{u2} β (Set.unionᵢ.{u2, succ u1} β α (fun (i : α) => t i))) (Sigma.{u1, u2} α (fun (i : α) => Set.Elem.{u2} β (t i))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {t : α -> (Set.{u2} β)}, (forall (i : α) (j : α), (Ne.{succ u1} α i j) -> (Disjoint.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.instCompleteBooleanAlgebraSet.{u2} β)))))) (BoundedOrder.toOrderBot.{u2} (Set.{u2} β) (Preorder.toLE.{u2} (Set.{u2} β) (PartialOrder.toPreorder.{u2} (Set.{u2} β) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} β) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.instCompleteBooleanAlgebraSet.{u2} β)))))))) (CompleteLattice.toBoundedOrder.{u2} (Set.{u2} β) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} β) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} β) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} β) (Set.instCompleteBooleanAlgebraSet.{u2} β)))))) (t i) (t j))) -> (Equiv.{succ u2, max (succ u2) (succ u1)} (Set.Elem.{u2} β (Set.iUnion.{u2, succ u1} β α (fun (i : α) => t i))) (Sigma.{u1, u2} α (fun (i : α) => Set.Elem.{u2} β (t i))))
Case conversion may be inaccurate. Consider using '#align set.Union_eq_sigma_of_disjoint Set.unionEqSigmaOfDisjointₓ'. -/
/-- Equivalence between a disjoint union and a dependent sum. -/
noncomputable def unionEqSigmaOfDisjoint {t : α → Set β} (h : ∀ i j, i ≠ j → Disjoint (t i) (t j)) :
(⋃ i, t i) ≃ Σi, t i :=
- (Equiv.ofBijective _ <| sigmaToUnionᵢ_bijective t h).symm
+ (Equiv.ofBijective _ <| sigmaToiUnion_bijective t h).symm
#align set.Union_eq_sigma_of_disjoint Set.unionEqSigmaOfDisjoint
-#print Set.unionᵢ_ge_eq_unionᵢ_nat_add /-
-theorem unionᵢ_ge_eq_unionᵢ_nat_add (u : ℕ → Set α) (n : ℕ) : (⋃ i ≥ n, u i) = ⋃ i, u (i + n) :=
- supᵢ_ge_eq_supᵢ_nat_add u n
-#align set.Union_ge_eq_Union_nat_add Set.unionᵢ_ge_eq_unionᵢ_nat_add
+#print Set.iUnion_ge_eq_iUnion_nat_add /-
+theorem iUnion_ge_eq_iUnion_nat_add (u : ℕ → Set α) (n : ℕ) : (⋃ i ≥ n, u i) = ⋃ i, u (i + n) :=
+ iSup_ge_eq_iSup_nat_add u n
+#align set.Union_ge_eq_Union_nat_add Set.iUnion_ge_eq_iUnion_nat_add
-/
-#print Set.interᵢ_ge_eq_interᵢ_nat_add /-
-theorem interᵢ_ge_eq_interᵢ_nat_add (u : ℕ → Set α) (n : ℕ) : (⋂ i ≥ n, u i) = ⋂ i, u (i + n) :=
- infᵢ_ge_eq_infᵢ_nat_add u n
-#align set.Inter_ge_eq_Inter_nat_add Set.interᵢ_ge_eq_interᵢ_nat_add
+#print Set.iInter_ge_eq_iInter_nat_add /-
+theorem iInter_ge_eq_iInter_nat_add (u : ℕ → Set α) (n : ℕ) : (⋂ i ≥ n, u i) = ⋂ i, u (i + n) :=
+ iInf_ge_eq_iInf_nat_add u n
+#align set.Inter_ge_eq_Inter_nat_add Set.iInter_ge_eq_iInter_nat_add
-/
-/- warning: monotone.Union_nat_add -> Monotone.unionᵢ_nat_add is a dubious translation:
+/- warning: monotone.Union_nat_add -> Monotone.iUnion_nat_add is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {f : Nat -> (Set.{u1} α)}, (Monotone.{0, u1} Nat (Set.{u1} α) (PartialOrder.toPreorder.{0} Nat (SemilatticeInf.toPartialOrder.{0} Nat (Lattice.toSemilatticeInf.{0} Nat (LinearOrder.toLattice.{0} Nat Nat.linearOrder)))) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α))))))) f) -> (forall (k : Nat), Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, 1} α Nat (fun (n : Nat) => f (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n k))) (Set.unionᵢ.{u1, 1} α Nat (fun (n : Nat) => f n)))
+ forall {α : Type.{u1}} {f : Nat -> (Set.{u1} α)}, (Monotone.{0, u1} Nat (Set.{u1} α) (PartialOrder.toPreorder.{0} Nat (SemilatticeInf.toPartialOrder.{0} Nat (Lattice.toSemilatticeInf.{0} Nat (LinearOrder.toLattice.{0} Nat Nat.linearOrder)))) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α))))))) f) -> (forall (k : Nat), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, 1} α Nat (fun (n : Nat) => f (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n k))) (Set.iUnion.{u1, 1} α Nat (fun (n : Nat) => f n)))
but is expected to have type
- forall {α : Type.{u1}} {f : Nat -> (Set.{u1} α)}, (Monotone.{0, u1} Nat (Set.{u1} α) (PartialOrder.toPreorder.{0} Nat (SemilatticeInf.toPartialOrder.{0} Nat (Lattice.toSemilatticeInf.{0} Nat (DistribLattice.toLattice.{0} Nat instDistribLatticeNat)))) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) f) -> (forall (k : Nat), Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, 1} α Nat (fun (n : Nat) => f (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n k))) (Set.unionᵢ.{u1, 1} α Nat (fun (n : Nat) => f n)))
-Case conversion may be inaccurate. Consider using '#align monotone.Union_nat_add Monotone.unionᵢ_nat_addₓ'. -/
-theorem Monotone.unionᵢ_nat_add {f : ℕ → Set α} (hf : Monotone f) (k : ℕ) :
+ forall {α : Type.{u1}} {f : Nat -> (Set.{u1} α)}, (Monotone.{0, u1} Nat (Set.{u1} α) (PartialOrder.toPreorder.{0} Nat (SemilatticeInf.toPartialOrder.{0} Nat (Lattice.toSemilatticeInf.{0} Nat (DistribLattice.toLattice.{0} Nat instDistribLatticeNat)))) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) f) -> (forall (k : Nat), Eq.{succ u1} (Set.{u1} α) (Set.iUnion.{u1, 1} α Nat (fun (n : Nat) => f (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n k))) (Set.iUnion.{u1, 1} α Nat (fun (n : Nat) => f n)))
+Case conversion may be inaccurate. Consider using '#align monotone.Union_nat_add Monotone.iUnion_nat_addₓ'. -/
+theorem Monotone.iUnion_nat_add {f : ℕ → Set α} (hf : Monotone f) (k : ℕ) :
(⋃ n, f (n + k)) = ⋃ n, f n :=
- hf.supᵢ_nat_add k
-#align monotone.Union_nat_add Monotone.unionᵢ_nat_add
+ hf.iSup_nat_add k
+#align monotone.Union_nat_add Monotone.iUnion_nat_add
-/- warning: antitone.Inter_nat_add -> Antitone.interᵢ_nat_add is a dubious translation:
+/- warning: antitone.Inter_nat_add -> Antitone.iInter_nat_add is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {f : Nat -> (Set.{u1} α)}, (Antitone.{0, u1} Nat (Set.{u1} α) (PartialOrder.toPreorder.{0} Nat (SemilatticeInf.toPartialOrder.{0} Nat (Lattice.toSemilatticeInf.{0} Nat (LinearOrder.toLattice.{0} Nat Nat.linearOrder)))) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α))))))) f) -> (forall (k : Nat), Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, 1} α Nat (fun (n : Nat) => f (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n k))) (Set.interᵢ.{u1, 1} α Nat (fun (n : Nat) => f n)))
+ forall {α : Type.{u1}} {f : Nat -> (Set.{u1} α)}, (Antitone.{0, u1} Nat (Set.{u1} α) (PartialOrder.toPreorder.{0} Nat (SemilatticeInf.toPartialOrder.{0} Nat (Lattice.toSemilatticeInf.{0} Nat (LinearOrder.toLattice.{0} Nat Nat.linearOrder)))) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α))))))) f) -> (forall (k : Nat), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, 1} α Nat (fun (n : Nat) => f (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n k))) (Set.iInter.{u1, 1} α Nat (fun (n : Nat) => f n)))
but is expected to have type
- forall {α : Type.{u1}} {f : Nat -> (Set.{u1} α)}, (Antitone.{0, u1} Nat (Set.{u1} α) (PartialOrder.toPreorder.{0} Nat (SemilatticeInf.toPartialOrder.{0} Nat (Lattice.toSemilatticeInf.{0} Nat (DistribLattice.toLattice.{0} Nat instDistribLatticeNat)))) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) f) -> (forall (k : Nat), Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, 1} α Nat (fun (n : Nat) => f (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n k))) (Set.interᵢ.{u1, 1} α Nat (fun (n : Nat) => f n)))
-Case conversion may be inaccurate. Consider using '#align antitone.Inter_nat_add Antitone.interᵢ_nat_addₓ'. -/
-theorem Antitone.interᵢ_nat_add {f : ℕ → Set α} (hf : Antitone f) (k : ℕ) :
+ forall {α : Type.{u1}} {f : Nat -> (Set.{u1} α)}, (Antitone.{0, u1} Nat (Set.{u1} α) (PartialOrder.toPreorder.{0} Nat (SemilatticeInf.toPartialOrder.{0} Nat (Lattice.toSemilatticeInf.{0} Nat (DistribLattice.toLattice.{0} Nat instDistribLatticeNat)))) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) f) -> (forall (k : Nat), Eq.{succ u1} (Set.{u1} α) (Set.iInter.{u1, 1} α Nat (fun (n : Nat) => f (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n k))) (Set.iInter.{u1, 1} α Nat (fun (n : Nat) => f n)))
+Case conversion may be inaccurate. Consider using '#align antitone.Inter_nat_add Antitone.iInter_nat_addₓ'. -/
+theorem Antitone.iInter_nat_add {f : ℕ → Set α} (hf : Antitone f) (k : ℕ) :
(⋂ n, f (n + k)) = ⋂ n, f n :=
- hf.infᵢ_nat_add k
-#align antitone.Inter_nat_add Antitone.interᵢ_nat_add
+ hf.iInf_nat_add k
+#align antitone.Inter_nat_add Antitone.iInter_nat_add
-#print Set.unionᵢ_interᵢ_ge_nat_add /-
+#print Set.iUnion_iInter_ge_nat_add /-
@[simp]
-theorem unionᵢ_interᵢ_ge_nat_add (f : ℕ → Set α) (k : ℕ) :
+theorem iUnion_iInter_ge_nat_add (f : ℕ → Set α) (k : ℕ) :
(⋃ n, ⋂ i ≥ n, f (i + k)) = ⋃ n, ⋂ i ≥ n, f i :=
- supᵢ_infᵢ_ge_nat_add f k
-#align set.Union_Inter_ge_nat_add Set.unionᵢ_interᵢ_ge_nat_add
+ iSup_iInf_ge_nat_add f k
+#align set.Union_Inter_ge_nat_add Set.iUnion_iInter_ge_nat_add
-/
-/- warning: set.union_Union_nat_succ -> Set.union_unionᵢ_nat_succ is a dubious translation:
+/- warning: set.union_Union_nat_succ -> Set.union_iUnion_nat_succ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} (u : Nat -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (u (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) (Set.unionᵢ.{u1, 1} α Nat (fun (i : Nat) => u (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) i (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))) (Set.unionᵢ.{u1, 1} α Nat (fun (i : Nat) => u i))
+ forall {α : Type.{u1}} (u : Nat -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (u (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) (Set.iUnion.{u1, 1} α Nat (fun (i : Nat) => u (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) i (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))) (Set.iUnion.{u1, 1} α Nat (fun (i : Nat) => u i))
but is expected to have type
- forall {α : Type.{u1}} (u : Nat -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (u (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))) (Set.unionᵢ.{u1, 1} α Nat (fun (i : Nat) => u (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) i (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))) (Set.unionᵢ.{u1, 1} α Nat (fun (i : Nat) => u i))
-Case conversion may be inaccurate. Consider using '#align set.union_Union_nat_succ Set.union_unionᵢ_nat_succₓ'. -/
-theorem union_unionᵢ_nat_succ (u : ℕ → Set α) : (u 0 ∪ ⋃ i, u (i + 1)) = ⋃ i, u i :=
- sup_supᵢ_nat_succ u
-#align set.union_Union_nat_succ Set.union_unionᵢ_nat_succ
+ forall {α : Type.{u1}} (u : Nat -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (u (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))) (Set.iUnion.{u1, 1} α Nat (fun (i : Nat) => u (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) i (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))) (Set.iUnion.{u1, 1} α Nat (fun (i : Nat) => u i))
+Case conversion may be inaccurate. Consider using '#align set.union_Union_nat_succ Set.union_iUnion_nat_succₓ'. -/
+theorem union_iUnion_nat_succ (u : ℕ → Set α) : (u 0 ∪ ⋃ i, u (i + 1)) = ⋃ i, u i :=
+ sup_iSup_nat_succ u
+#align set.union_Union_nat_succ Set.union_iUnion_nat_succ
-/- warning: set.inter_Inter_nat_succ -> Set.inter_interᵢ_nat_succ is a dubious translation:
+/- warning: set.inter_Inter_nat_succ -> Set.inter_iInter_nat_succ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} (u : Nat -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (u (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) (Set.interᵢ.{u1, 1} α Nat (fun (i : Nat) => u (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) i (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))) (Set.interᵢ.{u1, 1} α Nat (fun (i : Nat) => u i))
+ forall {α : Type.{u1}} (u : Nat -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (u (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) (Set.iInter.{u1, 1} α Nat (fun (i : Nat) => u (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) i (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))) (Set.iInter.{u1, 1} α Nat (fun (i : Nat) => u i))
but is expected to have type
- forall {α : Type.{u1}} (u : Nat -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (u (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))) (Set.interᵢ.{u1, 1} α Nat (fun (i : Nat) => u (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) i (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))) (Set.interᵢ.{u1, 1} α Nat (fun (i : Nat) => u i))
-Case conversion may be inaccurate. Consider using '#align set.inter_Inter_nat_succ Set.inter_interᵢ_nat_succₓ'. -/
-theorem inter_interᵢ_nat_succ (u : ℕ → Set α) : (u 0 ∩ ⋂ i, u (i + 1)) = ⋂ i, u i :=
- inf_infᵢ_nat_succ u
-#align set.inter_Inter_nat_succ Set.inter_interᵢ_nat_succ
+ forall {α : Type.{u1}} (u : Nat -> (Set.{u1} α)), Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (u (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))) (Set.iInter.{u1, 1} α Nat (fun (i : Nat) => u (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) i (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))) (Set.iInter.{u1, 1} α Nat (fun (i : Nat) => u i))
+Case conversion may be inaccurate. Consider using '#align set.inter_Inter_nat_succ Set.inter_iInter_nat_succₓ'. -/
+theorem inter_iInter_nat_succ (u : ℕ → Set α) : (u 0 ∩ ⋂ i, u (i + 1)) = ⋂ i, u i :=
+ inf_iInf_nat_succ u
+#align set.inter_Inter_nat_succ Set.inter_iInter_nat_succ
end Set
@@ -4156,45 +4156,45 @@ open Set
variable [CompleteLattice β]
-/- warning: supr_Union -> supᵢ_unionᵢ is a dubious translation:
+/- warning: supr_Union -> iSup_iUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} [_inst_1 : CompleteLattice.{u2} β] (s : ι -> (Set.{u1} α)) (f : α -> β), Eq.{succ u2} β (supᵢ.{u2, succ u1} β (CompleteSemilatticeSup.toHasSup.{u2} β (CompleteLattice.toCompleteSemilatticeSup.{u2} β _inst_1)) α (fun (a : α) => supᵢ.{u2, 0} β (CompleteSemilatticeSup.toHasSup.{u2} β (CompleteLattice.toCompleteSemilatticeSup.{u2} β _inst_1)) (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => s i))) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => s i))) => f a))) (supᵢ.{u2, u3} β (CompleteSemilatticeSup.toHasSup.{u2} β (CompleteLattice.toCompleteSemilatticeSup.{u2} β _inst_1)) ι (fun (i : ι) => supᵢ.{u2, succ u1} β (CompleteSemilatticeSup.toHasSup.{u2} β (CompleteLattice.toCompleteSemilatticeSup.{u2} β _inst_1)) α (fun (a : α) => supᵢ.{u2, 0} β (CompleteSemilatticeSup.toHasSup.{u2} β (CompleteLattice.toCompleteSemilatticeSup.{u2} β _inst_1)) (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i)) => f a))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} [_inst_1 : CompleteLattice.{u2} β] (s : ι -> (Set.{u1} α)) (f : α -> β), Eq.{succ u2} β (iSup.{u2, succ u1} β (CompleteSemilatticeSup.toHasSup.{u2} β (CompleteLattice.toCompleteSemilatticeSup.{u2} β _inst_1)) α (fun (a : α) => iSup.{u2, 0} β (CompleteSemilatticeSup.toHasSup.{u2} β (CompleteLattice.toCompleteSemilatticeSup.{u2} β _inst_1)) (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) => f a))) (iSup.{u2, u3} β (CompleteSemilatticeSup.toHasSup.{u2} β (CompleteLattice.toCompleteSemilatticeSup.{u2} β _inst_1)) ι (fun (i : ι) => iSup.{u2, succ u1} β (CompleteSemilatticeSup.toHasSup.{u2} β (CompleteLattice.toCompleteSemilatticeSup.{u2} β _inst_1)) α (fun (a : α) => iSup.{u2, 0} β (CompleteSemilatticeSup.toHasSup.{u2} β (CompleteLattice.toCompleteSemilatticeSup.{u2} β _inst_1)) (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i)) => f a))))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : CompleteLattice.{u2} β] (s : ι -> (Set.{u3} α)) (f : α -> β), Eq.{succ u2} β (supᵢ.{u2, succ u3} β (CompleteLattice.toSupSet.{u2} β _inst_1) α (fun (a : α) => supᵢ.{u2, 0} β (CompleteLattice.toSupSet.{u2} β _inst_1) (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (Set.unionᵢ.{u3, u1} α ι (fun (i : ι) => s i))) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (Set.unionᵢ.{u3, u1} α ι (fun (i : ι) => s i))) => f a))) (supᵢ.{u2, u1} β (CompleteLattice.toSupSet.{u2} β _inst_1) ι (fun (i : ι) => supᵢ.{u2, succ u3} β (CompleteLattice.toSupSet.{u2} β _inst_1) α (fun (a : α) => supᵢ.{u2, 0} β (CompleteLattice.toSupSet.{u2} β _inst_1) (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i)) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i)) => f a))))
-Case conversion may be inaccurate. Consider using '#align supr_Union supᵢ_unionᵢₓ'. -/
-theorem supᵢ_unionᵢ (s : ι → Set α) (f : α → β) : (⨆ a ∈ ⋃ i, s i, f a) = ⨆ (i) (a ∈ s i), f a :=
+ forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : CompleteLattice.{u2} β] (s : ι -> (Set.{u3} α)) (f : α -> β), Eq.{succ u2} β (iSup.{u2, succ u3} β (CompleteLattice.toSupSet.{u2} β _inst_1) α (fun (a : α) => iSup.{u2, 0} β (CompleteLattice.toSupSet.{u2} β _inst_1) (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i))) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i))) => f a))) (iSup.{u2, u1} β (CompleteLattice.toSupSet.{u2} β _inst_1) ι (fun (i : ι) => iSup.{u2, succ u3} β (CompleteLattice.toSupSet.{u2} β _inst_1) α (fun (a : α) => iSup.{u2, 0} β (CompleteLattice.toSupSet.{u2} β _inst_1) (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i)) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i)) => f a))))
+Case conversion may be inaccurate. Consider using '#align supr_Union iSup_iUnionₓ'. -/
+theorem iSup_iUnion (s : ι → Set α) (f : α → β) : (⨆ a ∈ ⋃ i, s i, f a) = ⨆ (i) (a ∈ s i), f a :=
by
- rw [supᵢ_comm]
- simp_rw [mem_Union, supᵢ_exists]
-#align supr_Union supᵢ_unionᵢ
+ rw [iSup_comm]
+ simp_rw [mem_Union, iSup_exists]
+#align supr_Union iSup_iUnion
-/- warning: infi_Union -> infᵢ_unionᵢ is a dubious translation:
+/- warning: infi_Union -> iInf_iUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} [_inst_1 : CompleteLattice.{u2} β] (s : ι -> (Set.{u1} α)) (f : α -> β), Eq.{succ u2} β (infᵢ.{u2, succ u1} β (CompleteSemilatticeInf.toHasInf.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_1)) α (fun (a : α) => infᵢ.{u2, 0} β (CompleteSemilatticeInf.toHasInf.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_1)) (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => s i))) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => s i))) => f a))) (infᵢ.{u2, u3} β (CompleteSemilatticeInf.toHasInf.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_1)) ι (fun (i : ι) => infᵢ.{u2, succ u1} β (CompleteSemilatticeInf.toHasInf.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_1)) α (fun (a : α) => infᵢ.{u2, 0} β (CompleteSemilatticeInf.toHasInf.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_1)) (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i)) => f a))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} [_inst_1 : CompleteLattice.{u2} β] (s : ι -> (Set.{u1} α)) (f : α -> β), Eq.{succ u2} β (iInf.{u2, succ u1} β (CompleteSemilatticeInf.toHasInf.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_1)) α (fun (a : α) => iInf.{u2, 0} β (CompleteSemilatticeInf.toHasInf.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_1)) (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i))) => f a))) (iInf.{u2, u3} β (CompleteSemilatticeInf.toHasInf.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_1)) ι (fun (i : ι) => iInf.{u2, succ u1} β (CompleteSemilatticeInf.toHasInf.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_1)) α (fun (a : α) => iInf.{u2, 0} β (CompleteSemilatticeInf.toHasInf.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_1)) (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i)) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (s i)) => f a))))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : CompleteLattice.{u2} β] (s : ι -> (Set.{u3} α)) (f : α -> β), Eq.{succ u2} β (infᵢ.{u2, succ u3} β (CompleteLattice.toInfSet.{u2} β _inst_1) α (fun (a : α) => infᵢ.{u2, 0} β (CompleteLattice.toInfSet.{u2} β _inst_1) (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (Set.unionᵢ.{u3, u1} α ι (fun (i : ι) => s i))) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (Set.unionᵢ.{u3, u1} α ι (fun (i : ι) => s i))) => f a))) (infᵢ.{u2, u1} β (CompleteLattice.toInfSet.{u2} β _inst_1) ι (fun (i : ι) => infᵢ.{u2, succ u3} β (CompleteLattice.toInfSet.{u2} β _inst_1) α (fun (a : α) => infᵢ.{u2, 0} β (CompleteLattice.toInfSet.{u2} β _inst_1) (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i)) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i)) => f a))))
-Case conversion may be inaccurate. Consider using '#align infi_Union infᵢ_unionᵢₓ'. -/
-theorem infᵢ_unionᵢ (s : ι → Set α) (f : α → β) : (⨅ a ∈ ⋃ i, s i, f a) = ⨅ (i) (a ∈ s i), f a :=
- @supᵢ_unionᵢ α βᵒᵈ _ _ s f
-#align infi_Union infᵢ_unionᵢ
+ forall {α : Type.{u3}} {β : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : CompleteLattice.{u2} β] (s : ι -> (Set.{u3} α)) (f : α -> β), Eq.{succ u2} β (iInf.{u2, succ u3} β (CompleteLattice.toInfSet.{u2} β _inst_1) α (fun (a : α) => iInf.{u2, 0} β (CompleteLattice.toInfSet.{u2} β _inst_1) (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i))) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (Set.iUnion.{u3, u1} α ι (fun (i : ι) => s i))) => f a))) (iInf.{u2, u1} β (CompleteLattice.toInfSet.{u2} β _inst_1) ι (fun (i : ι) => iInf.{u2, succ u3} β (CompleteLattice.toInfSet.{u2} β _inst_1) α (fun (a : α) => iInf.{u2, 0} β (CompleteLattice.toInfSet.{u2} β _inst_1) (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i)) (fun (H : Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a (s i)) => f a))))
+Case conversion may be inaccurate. Consider using '#align infi_Union iInf_iUnionₓ'. -/
+theorem iInf_iUnion (s : ι → Set α) (f : α → β) : (⨅ a ∈ ⋃ i, s i, f a) = ⨅ (i) (a ∈ s i), f a :=
+ @iSup_iUnion α βᵒᵈ _ _ s f
+#align infi_Union iInf_iUnion
-/- warning: Sup_sUnion -> supₛ_unionₛ is a dubious translation:
+/- warning: Sup_sUnion -> sSup_sUnion is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} [_inst_1 : CompleteLattice.{u1} β] (s : Set.{u1} (Set.{u1} β)), Eq.{succ u1} β (SupSet.supₛ.{u1} β (CompleteSemilatticeSup.toHasSup.{u1} β (CompleteLattice.toCompleteSemilatticeSup.{u1} β _inst_1)) (Set.unionₛ.{u1} β s)) (supᵢ.{u1, succ u1} β (CompleteSemilatticeSup.toHasSup.{u1} β (CompleteLattice.toCompleteSemilatticeSup.{u1} β _inst_1)) (Set.{u1} β) (fun (t : Set.{u1} β) => supᵢ.{u1, 0} β (CompleteSemilatticeSup.toHasSup.{u1} β (CompleteLattice.toCompleteSemilatticeSup.{u1} β _inst_1)) (Membership.Mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.hasMem.{u1} (Set.{u1} β)) t s) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.hasMem.{u1} (Set.{u1} β)) t s) => SupSet.supₛ.{u1} β (CompleteSemilatticeSup.toHasSup.{u1} β (CompleteLattice.toCompleteSemilatticeSup.{u1} β _inst_1)) t)))
+ forall {β : Type.{u1}} [_inst_1 : CompleteLattice.{u1} β] (s : Set.{u1} (Set.{u1} β)), Eq.{succ u1} β (SupSet.sSup.{u1} β (CompleteSemilatticeSup.toHasSup.{u1} β (CompleteLattice.toCompleteSemilatticeSup.{u1} β _inst_1)) (Set.sUnion.{u1} β s)) (iSup.{u1, succ u1} β (CompleteSemilatticeSup.toHasSup.{u1} β (CompleteLattice.toCompleteSemilatticeSup.{u1} β _inst_1)) (Set.{u1} β) (fun (t : Set.{u1} β) => iSup.{u1, 0} β (CompleteSemilatticeSup.toHasSup.{u1} β (CompleteLattice.toCompleteSemilatticeSup.{u1} β _inst_1)) (Membership.Mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.hasMem.{u1} (Set.{u1} β)) t s) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.hasMem.{u1} (Set.{u1} β)) t s) => SupSet.sSup.{u1} β (CompleteSemilatticeSup.toHasSup.{u1} β (CompleteLattice.toCompleteSemilatticeSup.{u1} β _inst_1)) t)))
but is expected to have type
- forall {β : Type.{u1}} [_inst_1 : CompleteLattice.{u1} β] (s : Set.{u1} (Set.{u1} β)), Eq.{succ u1} β (SupSet.supₛ.{u1} β (CompleteLattice.toSupSet.{u1} β _inst_1) (Set.unionₛ.{u1} β s)) (supᵢ.{u1, succ u1} β (CompleteLattice.toSupSet.{u1} β _inst_1) (Set.{u1} β) (fun (t : Set.{u1} β) => supᵢ.{u1, 0} β (CompleteLattice.toSupSet.{u1} β _inst_1) (Membership.mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.instMembershipSet.{u1} (Set.{u1} β)) t s) (fun (H : Membership.mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.instMembershipSet.{u1} (Set.{u1} β)) t s) => SupSet.supₛ.{u1} β (CompleteLattice.toSupSet.{u1} β _inst_1) t)))
-Case conversion may be inaccurate. Consider using '#align Sup_sUnion supₛ_unionₛₓ'. -/
-theorem supₛ_unionₛ (s : Set (Set β)) : supₛ (⋃₀ s) = ⨆ t ∈ s, supₛ t := by
- simp only [sUnion_eq_bUnion, supₛ_eq_supᵢ, supᵢ_unionᵢ]
-#align Sup_sUnion supₛ_unionₛ
+ forall {β : Type.{u1}} [_inst_1 : CompleteLattice.{u1} β] (s : Set.{u1} (Set.{u1} β)), Eq.{succ u1} β (SupSet.sSup.{u1} β (CompleteLattice.toSupSet.{u1} β _inst_1) (Set.sUnion.{u1} β s)) (iSup.{u1, succ u1} β (CompleteLattice.toSupSet.{u1} β _inst_1) (Set.{u1} β) (fun (t : Set.{u1} β) => iSup.{u1, 0} β (CompleteLattice.toSupSet.{u1} β _inst_1) (Membership.mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.instMembershipSet.{u1} (Set.{u1} β)) t s) (fun (H : Membership.mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.instMembershipSet.{u1} (Set.{u1} β)) t s) => SupSet.sSup.{u1} β (CompleteLattice.toSupSet.{u1} β _inst_1) t)))
+Case conversion may be inaccurate. Consider using '#align Sup_sUnion sSup_sUnionₓ'. -/
+theorem sSup_sUnion (s : Set (Set β)) : sSup (⋃₀ s) = ⨆ t ∈ s, sSup t := by
+ simp only [sUnion_eq_bUnion, sSup_eq_iSup, iSup_iUnion]
+#align Sup_sUnion sSup_sUnion
-/- warning: Inf_sUnion -> infₛ_unionₛ is a dubious translation:
+/- warning: Inf_sUnion -> sInf_sUnion is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} [_inst_1 : CompleteLattice.{u1} β] (s : Set.{u1} (Set.{u1} β)), Eq.{succ u1} β (InfSet.infₛ.{u1} β (CompleteSemilatticeInf.toHasInf.{u1} β (CompleteLattice.toCompleteSemilatticeInf.{u1} β _inst_1)) (Set.unionₛ.{u1} β s)) (infᵢ.{u1, succ u1} β (CompleteSemilatticeInf.toHasInf.{u1} β (CompleteLattice.toCompleteSemilatticeInf.{u1} β _inst_1)) (Set.{u1} β) (fun (t : Set.{u1} β) => infᵢ.{u1, 0} β (CompleteSemilatticeInf.toHasInf.{u1} β (CompleteLattice.toCompleteSemilatticeInf.{u1} β _inst_1)) (Membership.Mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.hasMem.{u1} (Set.{u1} β)) t s) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.hasMem.{u1} (Set.{u1} β)) t s) => InfSet.infₛ.{u1} β (CompleteSemilatticeInf.toHasInf.{u1} β (CompleteLattice.toCompleteSemilatticeInf.{u1} β _inst_1)) t)))
+ forall {β : Type.{u1}} [_inst_1 : CompleteLattice.{u1} β] (s : Set.{u1} (Set.{u1} β)), Eq.{succ u1} β (InfSet.sInf.{u1} β (CompleteSemilatticeInf.toHasInf.{u1} β (CompleteLattice.toCompleteSemilatticeInf.{u1} β _inst_1)) (Set.sUnion.{u1} β s)) (iInf.{u1, succ u1} β (CompleteSemilatticeInf.toHasInf.{u1} β (CompleteLattice.toCompleteSemilatticeInf.{u1} β _inst_1)) (Set.{u1} β) (fun (t : Set.{u1} β) => iInf.{u1, 0} β (CompleteSemilatticeInf.toHasInf.{u1} β (CompleteLattice.toCompleteSemilatticeInf.{u1} β _inst_1)) (Membership.Mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.hasMem.{u1} (Set.{u1} β)) t s) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.hasMem.{u1} (Set.{u1} β)) t s) => InfSet.sInf.{u1} β (CompleteSemilatticeInf.toHasInf.{u1} β (CompleteLattice.toCompleteSemilatticeInf.{u1} β _inst_1)) t)))
but is expected to have type
- forall {β : Type.{u1}} [_inst_1 : CompleteLattice.{u1} β] (s : Set.{u1} (Set.{u1} β)), Eq.{succ u1} β (InfSet.infₛ.{u1} β (CompleteLattice.toInfSet.{u1} β _inst_1) (Set.unionₛ.{u1} β s)) (infᵢ.{u1, succ u1} β (CompleteLattice.toInfSet.{u1} β _inst_1) (Set.{u1} β) (fun (t : Set.{u1} β) => infᵢ.{u1, 0} β (CompleteLattice.toInfSet.{u1} β _inst_1) (Membership.mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.instMembershipSet.{u1} (Set.{u1} β)) t s) (fun (H : Membership.mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.instMembershipSet.{u1} (Set.{u1} β)) t s) => InfSet.infₛ.{u1} β (CompleteLattice.toInfSet.{u1} β _inst_1) t)))
-Case conversion may be inaccurate. Consider using '#align Inf_sUnion infₛ_unionₛₓ'. -/
-theorem infₛ_unionₛ (s : Set (Set β)) : infₛ (⋃₀ s) = ⨅ t ∈ s, infₛ t :=
- @supₛ_unionₛ βᵒᵈ _ _
-#align Inf_sUnion infₛ_unionₛ
+ forall {β : Type.{u1}} [_inst_1 : CompleteLattice.{u1} β] (s : Set.{u1} (Set.{u1} β)), Eq.{succ u1} β (InfSet.sInf.{u1} β (CompleteLattice.toInfSet.{u1} β _inst_1) (Set.sUnion.{u1} β s)) (iInf.{u1, succ u1} β (CompleteLattice.toInfSet.{u1} β _inst_1) (Set.{u1} β) (fun (t : Set.{u1} β) => iInf.{u1, 0} β (CompleteLattice.toInfSet.{u1} β _inst_1) (Membership.mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.instMembershipSet.{u1} (Set.{u1} β)) t s) (fun (H : Membership.mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.instMembershipSet.{u1} (Set.{u1} β)) t s) => InfSet.sInf.{u1} β (CompleteLattice.toInfSet.{u1} β _inst_1) t)))
+Case conversion may be inaccurate. Consider using '#align Inf_sUnion sInf_sUnionₓ'. -/
+theorem sInf_sUnion (s : Set (Set β)) : sInf (⋃₀ s) = ⨅ t ∈ s, sInf t :=
+ @sSup_sUnion βᵒᵈ _ _
+#align Inf_sUnion sInf_sUnion
mathlib commit https://github.com/leanprover-community/mathlib/commit/36b8aa61ea7c05727161f96a0532897bd72aedab
@@ -1083,7 +1083,7 @@ theorem diff_interᵢ (s : Set β) (t : ι → Set β) : (s \ ⋂ i, t i) = ⋃
lean 3 declaration is
forall {α : Type.{u1}} {ι : Sort.{u2}} {r : α -> α -> Prop} {f : ι -> (Set.{u1} α)}, (Directed.{u1, u2} (Set.{u1} α) ι (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α)) f) -> (forall (x : ι), DirectedOn.{u1} α r (f x)) -> (DirectedOn.{u1} α r (Set.unionᵢ.{u1, u2} α ι (fun (x : ι) => f x)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} {r : α -> α -> Prop} {f : ι -> (Set.{u2} α)}, (Directed.{u2, u1} (Set.{u2} α) ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.8954 : Set.{u2} α) (x._@.Mathlib.Data.Set.Lattice._hyg.8956 : Set.{u2} α) => HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) x._@.Mathlib.Data.Set.Lattice._hyg.8954 x._@.Mathlib.Data.Set.Lattice._hyg.8956) f) -> (forall (x : ι), DirectedOn.{u2} α r (f x)) -> (DirectedOn.{u2} α r (Set.unionᵢ.{u2, u1} α ι (fun (x : ι) => f x)))
+ forall {α : Type.{u2}} {ι : Sort.{u1}} {r : α -> α -> Prop} {f : ι -> (Set.{u2} α)}, (Directed.{u2, u1} (Set.{u2} α) ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.8942 : Set.{u2} α) (x._@.Mathlib.Data.Set.Lattice._hyg.8944 : Set.{u2} α) => HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) x._@.Mathlib.Data.Set.Lattice._hyg.8942 x._@.Mathlib.Data.Set.Lattice._hyg.8944) f) -> (forall (x : ι), DirectedOn.{u2} α r (f x)) -> (DirectedOn.{u2} α r (Set.unionᵢ.{u2, u1} α ι (fun (x : ι) => f x)))
Case conversion may be inaccurate. Consider using '#align set.directed_on_Union Set.directed_on_unionᵢₓ'. -/
theorem directed_on_unionᵢ {r} {f : ι → Set α} (hd : Directed (· ⊆ ·) f)
(h : ∀ x, DirectedOn r (f x)) : DirectedOn r (⋃ x, f x) := by
@@ -1108,7 +1108,7 @@ theorem unionᵢ_inter_subset {ι α} {s t : ι → Set α} : (⋃ i, s i ∩ t
lean 3 declaration is
forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : Preorder.{u1} ι] [_inst_2 : IsDirected.{u1} ι (LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_1))] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (Monotone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) s) -> (Monotone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) t) -> (Eq.{succ u2} (Set.{u2} α) (Set.unionᵢ.{u2, succ u1} α ι (fun (i : ι) => Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (s i) (t i))) (Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (Set.unionᵢ.{u2, succ u1} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u2, succ u1} α ι (fun (i : ι) => t i))))
but is expected to have type
- forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : IsDirected.{u2} ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.9228 : ι) (x._@.Mathlib.Data.Set.Lattice._hyg.9230 : ι) => LE.le.{u2} ι (Preorder.toLE.{u2} ι _inst_1) x._@.Mathlib.Data.Set.Lattice._hyg.9228 x._@.Mathlib.Data.Set.Lattice._hyg.9230)] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (Monotone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) s) -> (Monotone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) t) -> (Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, succ u2} α ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s i) (t i))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.unionᵢ.{u1, succ u2} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u1, succ u2} α ι (fun (i : ι) => t i))))
+ forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : IsDirected.{u2} ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.9216 : ι) (x._@.Mathlib.Data.Set.Lattice._hyg.9218 : ι) => LE.le.{u2} ι (Preorder.toLE.{u2} ι _inst_1) x._@.Mathlib.Data.Set.Lattice._hyg.9216 x._@.Mathlib.Data.Set.Lattice._hyg.9218)] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (Monotone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) s) -> (Monotone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) t) -> (Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, succ u2} α ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s i) (t i))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.unionᵢ.{u1, succ u2} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u1, succ u2} α ι (fun (i : ι) => t i))))
Case conversion may be inaccurate. Consider using '#align set.Union_inter_of_monotone Set.unionᵢ_inter_of_monotoneₓ'. -/
theorem unionᵢ_inter_of_monotone {ι α} [Preorder ι] [IsDirected ι (· ≤ ·)] {s t : ι → Set α}
(hs : Monotone s) (ht : Monotone t) : (⋃ i, s i ∩ t i) = (⋃ i, s i) ∩ ⋃ i, t i :=
@@ -1119,7 +1119,7 @@ theorem unionᵢ_inter_of_monotone {ι α} [Preorder ι] [IsDirected ι (· ≤
lean 3 declaration is
forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : Preorder.{u1} ι] [_inst_2 : IsDirected.{u1} ι (Function.swap.{succ u1, succ u1, 1} ι ι (fun (ᾰ : ι) (ᾰ : ι) => Prop) (LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_1)))] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (Antitone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) s) -> (Antitone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) t) -> (Eq.{succ u2} (Set.{u2} α) (Set.unionᵢ.{u2, succ u1} α ι (fun (i : ι) => Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (s i) (t i))) (Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) (Set.unionᵢ.{u2, succ u1} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u2, succ u1} α ι (fun (i : ι) => t i))))
but is expected to have type
- forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : IsDirected.{u2} ι (Function.swap.{succ u2, succ u2, 1} ι ι (fun (ᾰ : ι) (ᾰ : ι) => Prop) (fun (x._@.Mathlib.Data.Set.Lattice._hyg.9352 : ι) (x._@.Mathlib.Data.Set.Lattice._hyg.9354 : ι) => LE.le.{u2} ι (Preorder.toLE.{u2} ι _inst_1) x._@.Mathlib.Data.Set.Lattice._hyg.9352 x._@.Mathlib.Data.Set.Lattice._hyg.9354))] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (Antitone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) s) -> (Antitone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) t) -> (Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, succ u2} α ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s i) (t i))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.unionᵢ.{u1, succ u2} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u1, succ u2} α ι (fun (i : ι) => t i))))
+ forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : IsDirected.{u2} ι (Function.swap.{succ u2, succ u2, 1} ι ι (fun (ᾰ : ι) (ᾰ : ι) => Prop) (fun (x._@.Mathlib.Data.Set.Lattice._hyg.9340 : ι) (x._@.Mathlib.Data.Set.Lattice._hyg.9342 : ι) => LE.le.{u2} ι (Preorder.toLE.{u2} ι _inst_1) x._@.Mathlib.Data.Set.Lattice._hyg.9340 x._@.Mathlib.Data.Set.Lattice._hyg.9342))] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (Antitone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) s) -> (Antitone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) t) -> (Eq.{succ u1} (Set.{u1} α) (Set.unionᵢ.{u1, succ u2} α ι (fun (i : ι) => Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s i) (t i))) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Set.unionᵢ.{u1, succ u2} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u1, succ u2} α ι (fun (i : ι) => t i))))
Case conversion may be inaccurate. Consider using '#align set.Union_inter_of_antitone Set.unionᵢ_inter_of_antitoneₓ'. -/
theorem unionᵢ_inter_of_antitone {ι α} [Preorder ι] [IsDirected ι (swap (· ≤ ·))] {s t : ι → Set α}
(hs : Antitone s) (ht : Antitone t) : (⋃ i, s i ∩ t i) = (⋃ i, s i) ∩ ⋃ i, t i :=
@@ -1130,7 +1130,7 @@ theorem unionᵢ_inter_of_antitone {ι α} [Preorder ι] [IsDirected ι (swap (
lean 3 declaration is
forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : Preorder.{u1} ι] [_inst_2 : IsDirected.{u1} ι (Function.swap.{succ u1, succ u1, 1} ι ι (fun (ᾰ : ι) (ᾰ : ι) => Prop) (LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_1)))] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (Monotone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) s) -> (Monotone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) t) -> (Eq.{succ u2} (Set.{u2} α) (Set.interᵢ.{u2, succ u1} α ι (fun (i : ι) => Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) (s i) (t i))) (Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) (Set.interᵢ.{u2, succ u1} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u2, succ u1} α ι (fun (i : ι) => t i))))
but is expected to have type
- forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : IsDirected.{u2} ι (Function.swap.{succ u2, succ u2, 1} ι ι (fun (ᾰ : ι) (ᾰ : ι) => Prop) (fun (x._@.Mathlib.Data.Set.Lattice._hyg.9476 : ι) (x._@.Mathlib.Data.Set.Lattice._hyg.9478 : ι) => LE.le.{u2} ι (Preorder.toLE.{u2} ι _inst_1) x._@.Mathlib.Data.Set.Lattice._hyg.9476 x._@.Mathlib.Data.Set.Lattice._hyg.9478))] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (Monotone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) s) -> (Monotone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) t) -> (Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, succ u2} α ι (fun (i : ι) => Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (s i) (t i))) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (Set.interᵢ.{u1, succ u2} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u1, succ u2} α ι (fun (i : ι) => t i))))
+ forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : IsDirected.{u2} ι (Function.swap.{succ u2, succ u2, 1} ι ι (fun (ᾰ : ι) (ᾰ : ι) => Prop) (fun (x._@.Mathlib.Data.Set.Lattice._hyg.9464 : ι) (x._@.Mathlib.Data.Set.Lattice._hyg.9466 : ι) => LE.le.{u2} ι (Preorder.toLE.{u2} ι _inst_1) x._@.Mathlib.Data.Set.Lattice._hyg.9464 x._@.Mathlib.Data.Set.Lattice._hyg.9466))] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (Monotone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) s) -> (Monotone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) t) -> (Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, succ u2} α ι (fun (i : ι) => Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (s i) (t i))) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (Set.interᵢ.{u1, succ u2} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u1, succ u2} α ι (fun (i : ι) => t i))))
Case conversion may be inaccurate. Consider using '#align set.Inter_union_of_monotone Set.interᵢ_union_of_monotoneₓ'. -/
theorem interᵢ_union_of_monotone {ι α} [Preorder ι] [IsDirected ι (swap (· ≤ ·))] {s t : ι → Set α}
(hs : Monotone s) (ht : Monotone t) : (⋂ i, s i ∪ t i) = (⋂ i, s i) ∪ ⋂ i, t i :=
@@ -1141,7 +1141,7 @@ theorem interᵢ_union_of_monotone {ι α} [Preorder ι] [IsDirected ι (swap (
lean 3 declaration is
forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : Preorder.{u1} ι] [_inst_2 : IsDirected.{u1} ι (LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_1))] {s : ι -> (Set.{u2} α)} {t : ι -> (Set.{u2} α)}, (Antitone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) s) -> (Antitone.{u1, u2} ι (Set.{u2} α) _inst_1 (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.completeBooleanAlgebra.{u2} α))))))) t) -> (Eq.{succ u2} (Set.{u2} α) (Set.interᵢ.{u2, succ u1} α ι (fun (i : ι) => Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) (s i) (t i))) (Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) (Set.interᵢ.{u2, succ u1} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u2, succ u1} α ι (fun (i : ι) => t i))))
but is expected to have type
- forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : IsDirected.{u2} ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.9597 : ι) (x._@.Mathlib.Data.Set.Lattice._hyg.9599 : ι) => LE.le.{u2} ι (Preorder.toLE.{u2} ι _inst_1) x._@.Mathlib.Data.Set.Lattice._hyg.9597 x._@.Mathlib.Data.Set.Lattice._hyg.9599)] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (Antitone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) s) -> (Antitone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) t) -> (Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, succ u2} α ι (fun (i : ι) => Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (s i) (t i))) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (Set.interᵢ.{u1, succ u2} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u1, succ u2} α ι (fun (i : ι) => t i))))
+ forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : IsDirected.{u2} ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.9585 : ι) (x._@.Mathlib.Data.Set.Lattice._hyg.9587 : ι) => LE.le.{u2} ι (Preorder.toLE.{u2} ι _inst_1) x._@.Mathlib.Data.Set.Lattice._hyg.9585 x._@.Mathlib.Data.Set.Lattice._hyg.9587)] {s : ι -> (Set.{u1} α)} {t : ι -> (Set.{u1} α)}, (Antitone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) s) -> (Antitone.{u2, u1} ι (Set.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) t) -> (Eq.{succ u1} (Set.{u1} α) (Set.interᵢ.{u1, succ u2} α ι (fun (i : ι) => Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (s i) (t i))) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) (Set.interᵢ.{u1, succ u2} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u1, succ u2} α ι (fun (i : ι) => t i))))
Case conversion may be inaccurate. Consider using '#align set.Inter_union_of_antitone Set.interᵢ_union_of_antitoneₓ'. -/
theorem interᵢ_union_of_antitone {ι α} [Preorder ι] [IsDirected ι (· ≤ ·)] {s t : ι → Set α}
(hs : Antitone s) (ht : Antitone t) : (⋂ i, s i ∪ t i) = (⋂ i, s i) ∪ ⋂ i, t i :=
@@ -2926,7 +2926,7 @@ theorem image_interᵢ₂ {f : α → β} (hf : Bijective f) (s : ∀ i, κ i
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)}, (Directed.{u1, u3} (Set.{u1} α) ι (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α)) s) -> (forall {f : α -> β}, (forall (i : ι), Set.InjOn.{u1, u2} α β f (s i)) -> (Set.InjOn.{u1, u2} α β f (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => s i))))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u3} α)}, (Directed.{u3, u2} (Set.{u3} α) ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.23877 : Set.{u3} α) (x._@.Mathlib.Data.Set.Lattice._hyg.23879 : Set.{u3} α) => HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) x._@.Mathlib.Data.Set.Lattice._hyg.23877 x._@.Mathlib.Data.Set.Lattice._hyg.23879) s) -> (forall {f : α -> β}, (forall (i : ι), Set.InjOn.{u3, u1} α β f (s i)) -> (Set.InjOn.{u3, u1} α β f (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => s i))))
+ forall {α : Type.{u3}} {β : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u3} α)}, (Directed.{u3, u2} (Set.{u3} α) ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.23851 : Set.{u3} α) (x._@.Mathlib.Data.Set.Lattice._hyg.23853 : Set.{u3} α) => HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) x._@.Mathlib.Data.Set.Lattice._hyg.23851 x._@.Mathlib.Data.Set.Lattice._hyg.23853) s) -> (forall {f : α -> β}, (forall (i : ι), Set.InjOn.{u3, u1} α β f (s i)) -> (Set.InjOn.{u3, u1} α β f (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => s i))))
Case conversion may be inaccurate. Consider using '#align set.inj_on_Union_of_directed Set.inj_on_unionᵢ_of_directedₓ'. -/
theorem inj_on_unionᵢ_of_directed {s : ι → Set α} (hs : Directed (· ⊆ ·) s) {f : α → β}
(hf : ∀ i, InjOn f (s i)) : InjOn f (⋃ i, s i) :=
@@ -3054,7 +3054,7 @@ theorem bijOn_interᵢ [hi : Nonempty ι] {s : ι → Set α} {t : ι → Set β
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} {s : ι -> (Set.{u1} α)}, (Directed.{u1, u3} (Set.{u1} α) ι (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α)) s) -> (forall {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u1, u2} α β f (s i) (t i)) -> (Set.BijOn.{u1, u2} α β f (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u2, u3} β ι (fun (i : ι) => t i))))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u3} α)}, (Directed.{u3, u2} (Set.{u3} α) ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.24999 : Set.{u3} α) (x._@.Mathlib.Data.Set.Lattice._hyg.25001 : Set.{u3} α) => HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) x._@.Mathlib.Data.Set.Lattice._hyg.24999 x._@.Mathlib.Data.Set.Lattice._hyg.25001) s) -> (forall {t : ι -> (Set.{u1} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u3, u1} α β f (s i) (t i)) -> (Set.BijOn.{u3, u1} α β f (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => t i))))
+ forall {α : Type.{u3}} {β : Type.{u1}} {ι : Sort.{u2}} {s : ι -> (Set.{u3} α)}, (Directed.{u3, u2} (Set.{u3} α) ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.24973 : Set.{u3} α) (x._@.Mathlib.Data.Set.Lattice._hyg.24975 : Set.{u3} α) => HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) x._@.Mathlib.Data.Set.Lattice._hyg.24973 x._@.Mathlib.Data.Set.Lattice._hyg.24975) s) -> (forall {t : ι -> (Set.{u1} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u3, u1} α β f (s i) (t i)) -> (Set.BijOn.{u3, u1} α β f (Set.unionᵢ.{u3, u2} α ι (fun (i : ι) => s i)) (Set.unionᵢ.{u1, u2} β ι (fun (i : ι) => t i))))
Case conversion may be inaccurate. Consider using '#align set.bij_on_Union_of_directed Set.bijOn_unionᵢ_of_directedₓ'. -/
theorem bijOn_unionᵢ_of_directed {s : ι → Set α} (hs : Directed (· ⊆ ·) s) {t : ι → Set β}
{f : α → β} (H : ∀ i, BijOn f (s i) (t i)) : BijOn f (⋃ i, s i) (⋃ i, t i) :=
@@ -3065,7 +3065,7 @@ theorem bijOn_unionᵢ_of_directed {s : ι → Set α} (hs : Directed (· ⊆ ·
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} {ι : Sort.{u3}} [_inst_1 : Nonempty.{u3} ι] {s : ι -> (Set.{u1} α)}, (Directed.{u1, u3} (Set.{u1} α) ι (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α)) s) -> (forall {t : ι -> (Set.{u2} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u1, u2} α β f (s i) (t i)) -> (Set.BijOn.{u1, u2} α β f (Set.interᵢ.{u1, u3} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u2, u3} β ι (fun (i : ι) => t i))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} [_inst_1 : Nonempty.{u3} ι] {s : ι -> (Set.{u2} α)}, (Directed.{u2, u3} (Set.{u2} α) ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.25119 : Set.{u2} α) (x._@.Mathlib.Data.Set.Lattice._hyg.25121 : Set.{u2} α) => HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) x._@.Mathlib.Data.Set.Lattice._hyg.25119 x._@.Mathlib.Data.Set.Lattice._hyg.25121) s) -> (forall {t : ι -> (Set.{u1} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u2, u1} α β f (s i) (t i)) -> (Set.BijOn.{u2, u1} α β f (Set.interᵢ.{u2, u3} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u1, u3} β ι (fun (i : ι) => t i))))
+ forall {α : Type.{u2}} {β : Type.{u1}} {ι : Sort.{u3}} [_inst_1 : Nonempty.{u3} ι] {s : ι -> (Set.{u2} α)}, (Directed.{u2, u3} (Set.{u2} α) ι (fun (x._@.Mathlib.Data.Set.Lattice._hyg.25093 : Set.{u2} α) (x._@.Mathlib.Data.Set.Lattice._hyg.25095 : Set.{u2} α) => HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) x._@.Mathlib.Data.Set.Lattice._hyg.25093 x._@.Mathlib.Data.Set.Lattice._hyg.25095) s) -> (forall {t : ι -> (Set.{u1} β)} {f : α -> β}, (forall (i : ι), Set.BijOn.{u2, u1} α β f (s i) (t i)) -> (Set.BijOn.{u2, u1} α β f (Set.interᵢ.{u2, u3} α ι (fun (i : ι) => s i)) (Set.interᵢ.{u1, u3} β ι (fun (i : ι) => t i))))
Case conversion may be inaccurate. Consider using '#align set.bij_on_Inter_of_directed Set.bijOn_interᵢ_of_directedₓ'. -/
theorem bijOn_interᵢ_of_directed [Nonempty ι] {s : ι → Set α} (hs : Directed (· ⊆ ·) s)
{t : ι → Set β} {f : α → β} (H : ∀ i, BijOn f (s i) (t i)) : BijOn f (⋂ i, s i) (⋂ i, t i) :=
@@ -3698,7 +3698,7 @@ theorem seq_singleton {s : Set (α → β)} {a : α} : Set.seq s {a} = (fun f :
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {s : Set.{max u2 u3} (β -> γ)} {t : Set.{max u1 u2} (α -> β)} {u : Set.{u1} α}, Eq.{succ u3} (Set.{u3} γ) (Set.seq.{u2, u3} β γ s (Set.seq.{u1, u2} α β t u)) (Set.seq.{u1, u3} α γ (Set.seq.{max u1 u2, max u1 u3} (α -> β) (α -> γ) (Set.image.{max u2 u3, max (max u1 u2) u1 u3} (β -> γ) ((α -> β) -> α -> γ) (Function.comp.{succ u1, succ u2, succ u3} α β γ) s) t) u)
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u3}} {γ : Type.{u2}} {s : Set.{max u3 u2} (β -> γ)} {t : Set.{max u1 u3} (α -> β)} {u : Set.{u1} α}, Eq.{succ u2} (Set.{u2} γ) (Set.seq.{u3, u2} β γ s (Set.seq.{u1, u3} α β t u)) (Set.seq.{u1, u2} α γ (Set.seq.{max u3 u1, max u2 u1} (α -> β) (α -> γ) (Set.image.{max u3 u2, max (max u2 u1) u3 u1} (β -> γ) ((α -> β) -> α -> γ) (fun (x._@.Mathlib.Data.Set.Lattice._hyg.30355 : β -> γ) (x._@.Mathlib.Data.Set.Lattice._hyg.30357 : α -> β) => Function.comp.{succ u1, succ u3, succ u2} α β γ x._@.Mathlib.Data.Set.Lattice._hyg.30355 x._@.Mathlib.Data.Set.Lattice._hyg.30357) s) t) u)
+ forall {α : Type.{u1}} {β : Type.{u3}} {γ : Type.{u2}} {s : Set.{max u3 u2} (β -> γ)} {t : Set.{max u1 u3} (α -> β)} {u : Set.{u1} α}, Eq.{succ u2} (Set.{u2} γ) (Set.seq.{u3, u2} β γ s (Set.seq.{u1, u3} α β t u)) (Set.seq.{u1, u2} α γ (Set.seq.{max u3 u1, max u2 u1} (α -> β) (α -> γ) (Set.image.{max u3 u2, max (max u2 u1) u3 u1} (β -> γ) ((α -> β) -> α -> γ) (fun (x._@.Mathlib.Data.Set.Lattice._hyg.30299 : β -> γ) (x._@.Mathlib.Data.Set.Lattice._hyg.30301 : α -> β) => Function.comp.{succ u1, succ u3, succ u2} α β γ x._@.Mathlib.Data.Set.Lattice._hyg.30299 x._@.Mathlib.Data.Set.Lattice._hyg.30301) s) t) u)
Case conversion may be inaccurate. Consider using '#align set.seq_seq Set.seq_seqₓ'. -/
theorem seq_seq {s : Set (β → γ)} {t : Set (α → β)} {u : Set α} :
seq s (seq t u) = seq (seq ((· ∘ ·) '' s) t) u :=
@@ -3714,7 +3714,7 @@ theorem seq_seq {s : Set (β → γ)} {t : Set (α → β)} {u : Set α} :
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {f : β -> γ} {s : Set.{max u1 u2} (α -> β)} {t : Set.{u1} α}, Eq.{succ u3} (Set.{u3} γ) (Set.image.{u2, u3} β γ f (Set.seq.{u1, u2} α β s t)) (Set.seq.{u1, u3} α γ (Set.image.{max u1 u2, max u1 u3} (α -> β) (α -> γ) (Function.comp.{succ u1, succ u2, succ u3} α β γ f) s) t)
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} {f : β -> γ} {s : Set.{max u3 u2} (α -> β)} {t : Set.{u3} α}, Eq.{succ u1} (Set.{u1} γ) (Set.image.{u2, u1} β γ f (Set.seq.{u3, u2} α β s t)) (Set.seq.{u3, u1} α γ (Set.image.{max u2 u3, max u1 u3} (α -> β) (α -> γ) ((fun (x._@.Mathlib.Data.Set.Lattice._hyg.30535 : β -> γ) (x._@.Mathlib.Data.Set.Lattice._hyg.30537 : α -> β) => Function.comp.{succ u3, succ u2, succ u1} α β γ x._@.Mathlib.Data.Set.Lattice._hyg.30535 x._@.Mathlib.Data.Set.Lattice._hyg.30537) f) s) t)
+ forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} {f : β -> γ} {s : Set.{max u3 u2} (α -> β)} {t : Set.{u3} α}, Eq.{succ u1} (Set.{u1} γ) (Set.image.{u2, u1} β γ f (Set.seq.{u3, u2} α β s t)) (Set.seq.{u3, u1} α γ (Set.image.{max u2 u3, max u1 u3} (α -> β) (α -> γ) ((fun (x._@.Mathlib.Data.Set.Lattice._hyg.30479 : β -> γ) (x._@.Mathlib.Data.Set.Lattice._hyg.30481 : α -> β) => Function.comp.{succ u3, succ u2, succ u1} α β γ x._@.Mathlib.Data.Set.Lattice._hyg.30479 x._@.Mathlib.Data.Set.Lattice._hyg.30481) f) s) t)
Case conversion may be inaccurate. Consider using '#align set.image_seq Set.image_seqₓ'. -/
theorem image_seq {f : β → γ} {s : Set (α → β)} {t : Set α} :
f '' seq s t = seq ((· ∘ ·) f '' s) t := by
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -54,9 +54,6 @@ In lemma names,
* `⋂₀`: `Set.sInter`
-/
-set_option autoImplicit true
-
-
open Function Set
universe u
@@ -2275,10 +2272,10 @@ lemma iInf_sUnion (S : Set (Set α)) (f : α → β) :
(⨅ x ∈ ⋃₀ S, f x) = ⨅ (s ∈ S) (x ∈ s), f x := by
rw [sUnion_eq_iUnion, iInf_iUnion, ← iInf_subtype'']
-lemma forall_sUnion {p : α → Prop} :
+lemma forall_sUnion {S : Set (Set α)} {p : α → Prop} :
(∀ x ∈ ⋃₀ S, p x) ↔ ∀ s ∈ S, ∀ x ∈ s, p x := by
simp_rw [← iInf_Prop_eq, iInf_sUnion]
-lemma exists_sUnion {p : α → Prop} :
+lemma exists_sUnion {S : Set (Set α)} {p : α → Prop} :
(∃ x ∈ ⋃₀ S, p x) ↔ ∃ s ∈ S, ∃ x ∈ s, p x := by
simp_rw [← exists_prop, ← iSup_Prop_eq, iSup_sUnion]
bex
and ball
from lemma names (#11615)
Follow-up to #10816.
Remaining places containing such lemmas are
Option.bex_ne_none
and Option.ball_ne_none
: defined in Lean coreNat.decidableBallLT
and Nat.decidableBallLE
: defined in Lean corebef_def
is still used in a number of places and could be renamedBAll.imp_{left,right}
, BEx.imp_{left,right}
, BEx.intro
and BEx.elim
I only audited the first ~150 lemmas mentioning "ball"; too many lemmas named after Metric.ball/openBall/closedBall.
Co-authored-by: Yaël Dillies <yael.dillies@gmail.com>
@@ -1542,7 +1542,7 @@ theorem InjOn.image_iInter_eq [Nonempty ι] {s : ι → Set α} {f : α → β}
(f '' ⋂ i, s i) = ⋂ i, f '' s i := by
inhabit ι
refine' Subset.antisymm (image_iInter_subset s f) fun y hy => _
- simp only [mem_iInter, mem_image_iff_bex] at hy
+ simp only [mem_iInter, mem_image] at hy
choose x hx hy using hy
refine' ⟨x default, mem_iInter.2 fun i => _, hy _⟩
suffices x default = x i by
Also do the same for "/-A". This is a purely aesthetic change (and exhaustive).
@@ -2225,7 +2225,7 @@ theorem _root_.Antitone.iInter_nat_add {f : ℕ → Set α} (hf : Antitone f) (k
hf.iInf_nat_add k
#align antitone.Inter_nat_add Antitone.iInter_nat_add
-/-Porting note: removing `simp`. LHS does not simplify. Possible linter bug. Zulip discussion:
+/- Porting note: removing `simp`. LHS does not simplify. Possible linter bug. Zulip discussion:
https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/complete_lattice.20and.20has_sup/near/316497982
-/
theorem iUnion_iInter_ge_nat_add (f : ℕ → Set α) (k : ℕ) :
@@ -31,7 +31,7 @@ for `Set α`, and some more set constructions.
`f ⁻¹ y ⊆ s`.
* `Set.seq`: Union of the image of a set under a **seq**uence of functions. `seq s t` is the union
of `f '' t` over all `f ∈ s`, where `t : Set α` and `s : Set (α → β)`.
-* `Set.iUnion_eq_sigma_of_disjoint`: Equivalence between `⋃ i, t i` and `Σ i, t i`, where `t` is an
+* `Set.unionEqSigmaOfDisjoint`: Equivalence between `⋃ i, t i` and `Σ i, t i`, where `t` is an
indexed family of disjoint sets.
## Naming convention
This adds conjugation of order homomorphisms & closure operators by order isos, as well as two new extensionality lemmas for closure operators, a proof that the inf of a closed family is closed, and that the closure of an element is the GLB of all closed elements larger than it. There is also includes some minor refactoring, moving Set.image_sSup
from Mathlib/Order/Hom/CompleteLattice
to Mathlib/Data/Set/Lattice
and adding some common lemmas for EquivLike
-things to OrderIso
.
@@ -1734,6 +1734,15 @@ theorem preimage_iUnion₂ {f : α → β} {s : ∀ i, κ i → Set β} :
(f ⁻¹' ⋃ (i) (j), s i j) = ⋃ (i) (j), f ⁻¹' s i j := by simp_rw [preimage_iUnion]
#align set.preimage_Union₂ Set.preimage_iUnion₂
+theorem image_sUnion {f : α → β} {s : Set (Set α)} : (f '' ⋃₀ s) = ⋃₀ (image f '' s) := by
+ ext b
+ simp only [mem_image, mem_sUnion, exists_prop, sUnion_image, mem_iUnion]
+ constructor
+ · rintro ⟨a, ⟨t, ht₁, ht₂⟩, rfl⟩
+ exact ⟨t, ht₁, a, ht₂, rfl⟩
+ · rintro ⟨t, ht₁, a, ht₂, rfl⟩
+ exact ⟨a, ⟨t, ht₁, ht₂⟩, rfl⟩
+
@[simp]
theorem preimage_sUnion {f : α → β} {s : Set (Set β)} : f ⁻¹' ⋃₀s = ⋃ t ∈ s, f ⁻¹' t := by
rw [sUnion_eq_biUnion, preimage_iUnion₂]
Std defines triv
, a slight variation on trivial
. It appears that Mathlib doesn't care about the distinction (any more?) and so we can consolidate on a single tactic.
https://github.com/leanprover/std4/pull/712 separately replaces triv
in Std with an error explaining to use trivial
.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
@@ -1513,7 +1513,7 @@ theorem injective_iff_injective_of_iUnion_eq_univ :
Injective f ↔ ∀ i, Injective ((U i).restrictPreimage f) := by
refine' ⟨fun H i => (U i).restrictPreimage_injective H, fun H x y e => _⟩
obtain ⟨i, hi⟩ := Set.mem_iUnion.mp
- (show f x ∈ Set.iUnion U by rw [hU]; triv)
+ (show f x ∈ Set.iUnion U by rw [hU]; trivial)
injection @H i ⟨x, hi⟩ ⟨y, show f y ∈ U i from e ▸ hi⟩ (Subtype.ext e)
#align set.injective_iff_injective_of_Union_eq_univ Set.injective_iff_injective_of_iUnion_eq_univ
@@ -1522,7 +1522,7 @@ theorem surjective_iff_surjective_of_iUnion_eq_univ :
refine' ⟨fun H i => (U i).restrictPreimage_surjective H, fun H x => _⟩
obtain ⟨i, hi⟩ :=
Set.mem_iUnion.mp
- (show x ∈ Set.iUnion U by rw [hU]; triv)
+ (show x ∈ Set.iUnion U by rw [hU]; trivial)
exact ⟨_, congr_arg Subtype.val (H i ⟨x, hi⟩).choose_spec⟩
#align set.surjective_iff_surjective_of_Union_eq_univ Set.surjective_iff_surjective_of_iUnion_eq_univ
@@ -273,7 +273,7 @@ theorem subset_iInter_iff {s : Set α} {t : ι → Set α} : (s ⊆ ⋂ i, t i)
#align set.subset_Inter_iff Set.subset_iInter_iff
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
--- Porting note: removing `simp`. `simp` can prove it
+-- Porting note (#10618): removing `simp`. `simp` can prove it
theorem subset_iInter₂_iff {s : Set α} {t : ∀ i, κ i → Set α} :
(s ⊆ ⋂ (i) (j), t i j) ↔ ∀ i j, s ⊆ t i j := by simp_rw [subset_iInter_iff]
#align set.subset_Inter₂_iff Set.subset_iInter₂_iff
@@ -685,7 +685,7 @@ theorem nonempty_iUnion : (⋃ i, s i).Nonempty ↔ ∃ i, (s i).Nonempty := by
simp [nonempty_iff_ne_empty]
#align set.nonempty_Union Set.nonempty_iUnion
--- Porting note: removing `simp`. `simp` can prove it
+-- Porting note (#10618): removing `simp`. `simp` can prove it
theorem nonempty_biUnion {t : Set α} {s : α → Set β} :
(⋃ i ∈ t, s i).Nonempty ↔ ∃ i ∈ t, (s i).Nonempty := by simp
#align set.nonempty_bUnion Set.nonempty_biUnion
@@ -1226,7 +1226,7 @@ theorem nonempty_iInter {f : ι → Set α} : (⋂ i, f i).Nonempty ↔ ∃ x,
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-- classical
--- Porting note: removing `simp`. `simp` can prove it
+-- Porting note (#10618): removing `simp`. `simp` can prove it
theorem nonempty_iInter₂ {s : ∀ i, κ i → Set α} :
(⋂ (i) (j), s i j).Nonempty ↔ ∃ a, ∀ i j, a ∈ s i j := by
simp
@@ -2077,14 +2077,14 @@ theorem disjoint_iUnion_right {ι : Sort*} {s : ι → Set α} :
#align set.disjoint_Union_right Set.disjoint_iUnion_right
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
--- Porting note: removing `simp`. `simp` can prove it
+-- Porting note (#10618): removing `simp`. `simp` can prove it
theorem disjoint_iUnion₂_left {s : ∀ i, κ i → Set α} {t : Set α} :
Disjoint (⋃ (i) (j), s i j) t ↔ ∀ i j, Disjoint (s i j) t :=
iSup₂_disjoint_iff
#align set.disjoint_Union₂_left Set.disjoint_iUnion₂_left
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
--- Porting note: removing `simp`. `simp` can prove it
+-- Porting note (#10618): removing `simp`. `simp` can prove it
theorem disjoint_iUnion₂_right {s : Set α} {t : ∀ i, κ i → Set α} :
Disjoint s (⋃ (i) (j), t i j) ↔ ∀ i j, Disjoint s (t i j) :=
disjoint_iSup₂_iff
ball
and bex
from lemma names (#10816)
ball
for "bounded forall" and bex
for "bounded exists" are from experience very confusing abbreviations. This PR renames them to forall_mem
and exists_mem
in the few Set
lemma names that mention them.
Also deprecate ball_image_of_ball
, mem_image_elim
, mem_image_elim_on
since those lemmas are duplicates of the renamed lemmas (apart from argument order and implicitness, which I am also fixing by making the binder in the RHS of forall_mem_image
semi-implicit), have obscure names and are completely unused.
@@ -1463,7 +1463,7 @@ theorem mapsTo_sInter {s : Set α} {T : Set (Set β)} {f : α → β} :
@[simp]
theorem mapsTo_iInter {s : Set α} {t : ι → Set β} {f : α → β} :
MapsTo f s (⋂ i, t i) ↔ ∀ i, MapsTo f s (t i) :=
- mapsTo_sInter.trans forall_range_iff
+ mapsTo_sInter.trans forall_mem_range
#align set.maps_to_Inter Set.mapsTo_iInter
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
@@ -1596,7 +1596,7 @@ theorem surjOn_sUnion {s : Set α} {T : Set (Set β)} {f : α → β} (H : ∀ t
theorem surjOn_iUnion {s : Set α} {t : ι → Set β} {f : α → β} (H : ∀ i, SurjOn f s (t i)) :
SurjOn f s (⋃ i, t i) :=
- surjOn_sUnion <| forall_range_iff.2 H
+ surjOn_sUnion <| forall_mem_range.2 H
#align set.surj_on_Union Set.surjOn_iUnion
theorem surjOn_iUnion_iUnion {s : ι → Set α} {t : ι → Set β} {f : α → β}
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -273,7 +273,7 @@ theorem subset_iInter_iff {s : Set α} {t : ι → Set α} : (s ⊆ ⋂ i, t i)
#align set.subset_Inter_iff Set.subset_iInter_iff
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
---Porting note: removing `simp`. `simp` can prove it
+-- Porting note: removing `simp`. `simp` can prove it
theorem subset_iInter₂_iff {s : Set α} {t : ∀ i, κ i → Set α} :
(s ⊆ ⋂ (i) (j), t i j) ↔ ∀ i j, s ⊆ t i j := by simp_rw [subset_iInter_iff]
#align set.subset_Inter₂_iff Set.subset_iInter₂_iff
@@ -685,7 +685,7 @@ theorem nonempty_iUnion : (⋃ i, s i).Nonempty ↔ ∃ i, (s i).Nonempty := by
simp [nonempty_iff_ne_empty]
#align set.nonempty_Union Set.nonempty_iUnion
---Porting note: removing `simp`. `simp` can prove it
+-- Porting note: removing `simp`. `simp` can prove it
theorem nonempty_biUnion {t : Set α} {s : α → Set β} :
(⋃ i ∈ t, s i).Nonempty ↔ ∃ i ∈ t, (s i).Nonempty := by simp
#align set.nonempty_bUnion Set.nonempty_biUnion
@@ -841,7 +841,7 @@ theorem mem_biInter {s : Set α} {t : α → Set β} {y : β} (h : ∀ x ∈ s,
/-- A specialization of `subset_iUnion₂`. -/
theorem subset_biUnion_of_mem {s : Set α} {u : α → Set β} {x : α} (xs : x ∈ s) :
u x ⊆ ⋃ x ∈ s, u x :=
---Porting note: Why is this not just `subset_iUnion₂ x xs`?
+-- Porting note: Why is this not just `subset_iUnion₂ x xs`?
@subset_iUnion₂ β α (· ∈ s) (fun i _ => u i) x xs
#align set.subset_bUnion_of_mem Set.subset_biUnion_of_mem
@@ -1226,7 +1226,7 @@ theorem nonempty_iInter {f : ι → Set α} : (⋂ i, f i).Nonempty ↔ ∃ x,
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-- classical
---Porting note: removing `simp`. `simp` can prove it
+-- Porting note: removing `simp`. `simp` can prove it
theorem nonempty_iInter₂ {s : ∀ i, κ i → Set α} :
(⋂ (i) (j), s i j).Nonempty ↔ ∃ a, ∀ i j, a ∈ s i j := by
simp
@@ -1664,7 +1664,7 @@ section Image
theorem image_iUnion {f : α → β} {s : ι → Set α} : (f '' ⋃ i, s i) = ⋃ i, f '' s i := by
ext1 x
simp only [mem_image, mem_iUnion, ← exists_and_right, ← exists_and_left]
- --Porting note: `exists_swap` causes a `simp` loop in Lean4 so we use `rw` instead.
+ -- Porting note: `exists_swap` causes a `simp` loop in Lean4 so we use `rw` instead.
rw [exists_swap]
#align set.image_Union Set.image_iUnion
@@ -2077,14 +2077,14 @@ theorem disjoint_iUnion_right {ι : Sort*} {s : ι → Set α} :
#align set.disjoint_Union_right Set.disjoint_iUnion_right
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
---Porting note: removing `simp`. `simp` can prove it
+-- Porting note: removing `simp`. `simp` can prove it
theorem disjoint_iUnion₂_left {s : ∀ i, κ i → Set α} {t : Set α} :
Disjoint (⋃ (i) (j), s i j) t ↔ ∀ i j, Disjoint (s i j) t :=
iSup₂_disjoint_iff
#align set.disjoint_Union₂_left Set.disjoint_iUnion₂_left
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
---Porting note: removing `simp`. `simp` can prove it
+-- Porting note: removing `simp`. `simp` can prove it
theorem disjoint_iUnion₂_right {s : Set α} {t : ∀ i, κ i → Set α} :
Disjoint s (⋃ (i) (j), t i j) ↔ ∀ i j, Disjoint s (t i j) :=
disjoint_iSup₂_iff
@@ -753,6 +753,20 @@ theorem iInter_comm (s : ι → ι' → Set α) : ⋂ (i) (i'), s i i' = ⋂ (i'
iInf_comm
#align set.Inter_comm Set.iInter_comm
+theorem iUnion_sigma {γ : α → Type*} (s : Sigma γ → Set β) : ⋃ ia, s ia = ⋃ i, ⋃ a, s ⟨i, a⟩ :=
+ iSup_sigma
+
+theorem iUnion_sigma' {γ : α → Type*} (s : ∀ i, γ i → Set β) :
+ ⋃ i, ⋃ a, s i a = ⋃ ia : Sigma γ, s ia.1 ia.2 :=
+ iSup_sigma' _
+
+theorem iInter_sigma {γ : α → Type*} (s : Sigma γ → Set β) : ⋂ ia, s ia = ⋂ i, ⋂ a, s ⟨i, a⟩ :=
+ iInf_sigma
+
+theorem iInter_sigma' {γ : α → Type*} (s : ∀ i, γ i → Set β) :
+ ⋂ i, ⋂ a, s i a = ⋂ ia : Sigma γ, s ia.1 ia.2 :=
+ iInf_sigma' _
+
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i₁ j₁ i₂ j₂) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i₂ j₂ i₁ j₁) -/
theorem iUnion₂_comm (s : ∀ i₁, κ₁ i₁ → ∀ i₂, κ₂ i₂ → Set α) :
@@ -67,149 +67,6 @@ namespace Set
/-! ### Complete lattice and complete Boolean algebra instances -/
-
-instance : InfSet (Set α) :=
- ⟨fun s => { a | ∀ t ∈ s, a ∈ t }⟩
-
-instance : SupSet (Set α) :=
- ⟨fun s => { a | ∃ t ∈ s, a ∈ t }⟩
-
-/-- Intersection of a set of sets. -/
-def sInter (S : Set (Set α)) : Set α :=
- sInf S
-#align set.sInter Set.sInter
-
-/-- Notation for `Set.sInter` Intersection of a set of sets. -/
-prefix:110 "⋂₀ " => sInter
-
-/-- Union of a set of sets. -/
-def sUnion (S : Set (Set α)) : Set α :=
- sSup S
-#align set.sUnion Set.sUnion
-
-/-- Notation for `Set.sUnion`. Union of a set of sets. -/
-prefix:110 "⋃₀ " => sUnion
-
-@[simp]
-theorem mem_sInter {x : α} {S : Set (Set α)} : x ∈ ⋂₀ S ↔ ∀ t ∈ S, x ∈ t :=
- Iff.rfl
-#align set.mem_sInter Set.mem_sInter
-
-@[simp]
-theorem mem_sUnion {x : α} {S : Set (Set α)} : x ∈ ⋃₀ S ↔ ∃ t ∈ S, x ∈ t :=
- Iff.rfl
-#align set.mem_sUnion Set.mem_sUnion
-
-/-- Indexed union of a family of sets -/
-def iUnion (s : ι → Set β) : Set β :=
- iSup s
-#align set.Union Set.iUnion
-
-/-- Indexed intersection of a family of sets -/
-def iInter (s : ι → Set β) : Set β :=
- iInf s
-#align set.Inter Set.iInter
-
-/-- Notation for `Set.iUnion`. Indexed union of a family of sets -/
-notation3 "⋃ "(...)", "r:60:(scoped f => iUnion f) => r
-
-/-- Notation for `Set.iInter`. Indexed intersection of a family of sets -/
-notation3 "⋂ "(...)", "r:60:(scoped f => iInter f) => r
-
-section delaborators
-
-open Lean Lean.PrettyPrinter.Delaborator
-
-/-- Delaborator for indexed unions. -/
-@[delab app.Set.iUnion]
-def iUnion_delab : Delab := whenPPOption Lean.getPPNotation do
- let #[_, ι, f] := (← SubExpr.getExpr).getAppArgs | failure
- unless f.isLambda do failure
- let prop ← Meta.isProp ι
- let dep := f.bindingBody!.hasLooseBVar 0
- let ppTypes ← getPPOption getPPFunBinderTypes
- let stx ← SubExpr.withAppArg do
- let dom ← SubExpr.withBindingDomain delab
- withBindingBodyUnusedName fun x => do
- let x : TSyntax `ident := .mk x
- let body ← delab
- if prop && !dep then
- `(⋃ (_ : $dom), $body)
- else if prop || ppTypes then
- `(⋃ ($x:ident : $dom), $body)
- else
- `(⋃ $x:ident, $body)
- -- Cute binders
- let stx : Term ←
- match stx with
- | `(⋃ $x:ident, ⋃ (_ : $y:ident ∈ $s), $body)
- | `(⋃ ($x:ident : $_), ⋃ (_ : $y:ident ∈ $s), $body) =>
- if x == y then `(⋃ $x:ident ∈ $s, $body) else pure stx
- | _ => pure stx
- return stx
-
-/-- Delaborator for indexed intersections. -/
-@[delab app.Set.iInter]
-def sInter_delab : Delab := whenPPOption Lean.getPPNotation do
- let #[_, ι, f] := (← SubExpr.getExpr).getAppArgs | failure
- unless f.isLambda do failure
- let prop ← Meta.isProp ι
- let dep := f.bindingBody!.hasLooseBVar 0
- let ppTypes ← getPPOption getPPFunBinderTypes
- let stx ← SubExpr.withAppArg do
- let dom ← SubExpr.withBindingDomain delab
- withBindingBodyUnusedName fun x => do
- let x : TSyntax `ident := .mk x
- let body ← delab
- if prop && !dep then
- `(⋂ (_ : $dom), $body)
- else if prop || ppTypes then
- `(⋂ ($x:ident : $dom), $body)
- else
- `(⋂ $x:ident, $body)
- -- Cute binders
- let stx : Term ←
- match stx with
- | `(⋂ $x:ident, ⋂ (_ : $y:ident ∈ $s), $body)
- | `(⋂ ($x:ident : $_), ⋂ (_ : $y:ident ∈ $s), $body) =>
- if x == y then `(⋂ $x:ident ∈ $s, $body) else pure stx
- | _ => pure stx
- return stx
-
-end delaborators
-
-@[simp]
-theorem sSup_eq_sUnion (S : Set (Set α)) : sSup S = ⋃₀S :=
- rfl
-#align set.Sup_eq_sUnion Set.sSup_eq_sUnion
-
-@[simp]
-theorem sInf_eq_sInter (S : Set (Set α)) : sInf S = ⋂₀ S :=
- rfl
-#align set.Inf_eq_sInter Set.sInf_eq_sInter
-
-@[simp]
-theorem iSup_eq_iUnion (s : ι → Set α) : iSup s = iUnion s :=
- rfl
-#align set.supr_eq_Union Set.iSup_eq_iUnion
-
-@[simp]
-theorem iInf_eq_iInter (s : ι → Set α) : iInf s = iInter s :=
- rfl
-#align set.infi_eq_Inter Set.iInf_eq_iInter
-
-@[simp]
-theorem mem_iUnion {x : α} {s : ι → Set α} : (x ∈ ⋃ i, s i) ↔ ∃ i, x ∈ s i :=
- ⟨fun ⟨_, ⟨⟨a, (t_eq : s a = _)⟩, (h : x ∈ _)⟩⟩ => ⟨a, t_eq.symm ▸ h⟩, fun ⟨a, h⟩ =>
- ⟨s a, ⟨⟨a, rfl⟩, h⟩⟩⟩
-#align set.mem_Union Set.mem_iUnion
-
-@[simp]
-theorem mem_iInter {x : α} {s : ι → Set α} : (x ∈ ⋂ i, s i) ↔ ∀ i, x ∈ s i :=
- ⟨fun (h : ∀ a ∈ { a : Set α | ∃ i, s i = a }, x ∈ a) a => h (s a) ⟨a, rfl⟩,
- fun h _ ⟨a, (eq : s a = _)⟩ => eq ▸ h a⟩
-#align set.mem_Inter Set.mem_iInter
-
theorem mem_iUnion₂ {x : γ} {s : ∀ i, κ i → Set γ} : (x ∈ ⋃ (i) (j), s i j) ↔ ∃ i j, x ∈ s i j := by
simp_rw [mem_iUnion]
#align set.mem_Union₂ Set.mem_iUnion₂
Dedup Set.Set.completeBooleanAlgebra to Set.completeBooleanAlgebra
@@ -239,7 +239,7 @@ theorem mem_iInter₂_of_mem {s : ∀ i, κ i → Set α} {a : α} (h : ∀ i j,
mem_iInter₂.2 h
#align set.mem_Inter₂_of_mem Set.mem_iInter₂_of_mem
-instance Set.completeAtomicBooleanAlgebra : CompleteAtomicBooleanAlgebra (Set α) :=
+instance completeAtomicBooleanAlgebra : CompleteAtomicBooleanAlgebra (Set α) :=
{ instBooleanAlgebraSet with
le_sSup := fun s t t_in a a_in => ⟨t, t_in, a_in⟩
sSup_le := fun s t h a ⟨t', ⟨t'_in, a_in⟩⟩ => h t' t'_in a_in
@@ -1548,27 +1548,32 @@ theorem union_distrib_iInter₂_right (s : ∀ i, κ i → Set α) (t : Set α)
section Function
-/-! ### `mapsTo` -/
+/-! ### Lemmas about `Set.MapsTo`
+Porting note: some lemmas in this section were upgraded from implications to `iff`s.
+-/
-theorem mapsTo_sUnion {S : Set (Set α)} {t : Set β} {f : α → β} (H : ∀ s ∈ S, MapsTo f s t) :
- MapsTo f (⋃₀S) t := fun _ ⟨s, hs, hx⟩ => H s hs hx
+@[simp]
+theorem mapsTo_sUnion {S : Set (Set α)} {t : Set β} {f : α → β} :
+ MapsTo f (⋃₀ S) t ↔ ∀ s ∈ S, MapsTo f s t :=
+ sUnion_subset_iff
#align set.maps_to_sUnion Set.mapsTo_sUnion
-theorem mapsTo_iUnion {s : ι → Set α} {t : Set β} {f : α → β} (H : ∀ i, MapsTo f (s i) t) :
- MapsTo f (⋃ i, s i) t :=
- mapsTo_sUnion <| forall_range_iff.2 H
+@[simp]
+theorem mapsTo_iUnion {s : ι → Set α} {t : Set β} {f : α → β} :
+ MapsTo f (⋃ i, s i) t ↔ ∀ i, MapsTo f (s i) t :=
+ iUnion_subset_iff
#align set.maps_to_Union Set.mapsTo_iUnion
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem mapsTo_iUnion₂ {s : ∀ i, κ i → Set α} {t : Set β} {f : α → β}
- (H : ∀ i j, MapsTo f (s i j) t) : MapsTo f (⋃ (i) (j), s i j) t :=
- mapsTo_iUnion fun i => mapsTo_iUnion (H i)
+theorem mapsTo_iUnion₂ {s : ∀ i, κ i → Set α} {t : Set β} {f : α → β} :
+ MapsTo f (⋃ (i) (j), s i j) t ↔ ∀ i j, MapsTo f (s i j) t :=
+ iUnion₂_subset_iff
#align set.maps_to_Union₂ Set.mapsTo_iUnion₂
theorem mapsTo_iUnion_iUnion {s : ι → Set α} {t : ι → Set β} {f : α → β}
(H : ∀ i, MapsTo f (s i) (t i)) : MapsTo f (⋃ i, s i) (⋃ i, t i) :=
- mapsTo_iUnion fun i => (H i).mono (Subset.refl _) (subset_iUnion t i)
+ mapsTo_iUnion.2 fun i ↦ (H i).mono_right (subset_iUnion t i)
#align set.maps_to_Union_Union Set.mapsTo_iUnion_iUnion
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
@@ -1578,23 +1583,27 @@ theorem mapsTo_iUnion₂_iUnion₂ {s : ∀ i, κ i → Set α} {t : ∀ i, κ i
mapsTo_iUnion_iUnion fun i => mapsTo_iUnion_iUnion (H i)
#align set.maps_to_Union₂_Union₂ Set.mapsTo_iUnion₂_iUnion₂
-theorem mapsTo_sInter {s : Set α} {T : Set (Set β)} {f : α → β} (H : ∀ t ∈ T, MapsTo f s t) :
- MapsTo f s (⋂₀ T) := fun _ hx t ht => H t ht hx
+@[simp]
+theorem mapsTo_sInter {s : Set α} {T : Set (Set β)} {f : α → β} :
+ MapsTo f s (⋂₀ T) ↔ ∀ t ∈ T, MapsTo f s t :=
+ forall₂_swap
#align set.maps_to_sInter Set.mapsTo_sInter
-theorem mapsTo_iInter {s : Set α} {t : ι → Set β} {f : α → β} (H : ∀ i, MapsTo f s (t i)) :
- MapsTo f s (⋂ i, t i) := fun _ hx => mem_iInter.2 fun i => H i hx
+@[simp]
+theorem mapsTo_iInter {s : Set α} {t : ι → Set β} {f : α → β} :
+ MapsTo f s (⋂ i, t i) ↔ ∀ i, MapsTo f s (t i) :=
+ mapsTo_sInter.trans forall_range_iff
#align set.maps_to_Inter Set.mapsTo_iInter
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem mapsTo_iInter₂ {s : Set α} {t : ∀ i, κ i → Set β} {f : α → β}
- (H : ∀ i j, MapsTo f s (t i j)) : MapsTo f s (⋂ (i) (j), t i j) :=
- mapsTo_iInter fun i => mapsTo_iInter (H i)
+theorem mapsTo_iInter₂ {s : Set α} {t : ∀ i, κ i → Set β} {f : α → β} :
+ MapsTo f s (⋂ (i) (j), t i j) ↔ ∀ i j, MapsTo f s (t i j) := by
+ simp only [mapsTo_iInter]
#align set.maps_to_Inter₂ Set.mapsTo_iInter₂
theorem mapsTo_iInter_iInter {s : ι → Set α} {t : ι → Set β} {f : α → β}
(H : ∀ i, MapsTo f (s i) (t i)) : MapsTo f (⋂ i, s i) (⋂ i, t i) :=
- mapsTo_iInter fun i => (H i).mono (iInter_subset s i) (Subset.refl _)
+ mapsTo_iInter.2 fun i => (H i).mono_left (iInter_subset s i)
#align set.maps_to_Inter_Inter Set.mapsTo_iInter_iInter
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
@@ -1989,6 +1989,13 @@ theorem prod_sInter {T : Set (Set β)} (hT : T.Nonempty) (s : Set α) :
simp_rw [singleton_prod, mem_image, iInter_exists, biInter_and', iInter_iInter_eq_right]
#align set.prod_sInter Set.prod_sInter
+theorem prod_iInter {s : Set α} {t : ι → Set β} [hι : Nonempty ι] :
+ (s ×ˢ ⋂ i, t i) = ⋂ i, s ×ˢ t i := by
+ ext x
+ simp only [mem_prod, mem_iInter]
+ exact ⟨fun h i => ⟨h.1, h.2 i⟩, fun h => ⟨(h hι.some).1, fun i => (h i).2⟩⟩
+#align prod_Inter Set.prod_iInter
+
end Prod
section Image2
This and other similar PRs will help us reduce import
dependencies
and improve parallel compilation in the future.
@@ -247,14 +247,6 @@ instance Set.completeAtomicBooleanAlgebra : CompleteAtomicBooleanAlgebra (Set α
sInf_le := fun s t t_in a h => h _ t_in
iInf_iSup_eq := by intros; ext; simp [Classical.skolem] }
-/-- `kernImage f s` is the set of `y` such that `f ⁻¹ y ⊆ s`. -/
-def kernImage (f : α → β) (s : Set α) : Set β :=
- { y | ∀ ⦃x⦄, f x = y → x ∈ s }
-#align set.kern_image Set.kernImage
-
-lemma subset_kernImage_iff {f : α → β} : s ⊆ kernImage f t ↔ f ⁻¹' s ⊆ t :=
- ⟨fun h _ hx ↦ h hx rfl,
- fun h _ hx y hy ↦ h (show f y ∈ s from hy.symm ▸ hx)⟩
section GaloisConnection
variable {f : α → β}
@@ -2079,19 +2071,6 @@ end Image2
section Seq
-/-- Given a set `s` of functions `α → β` and `t : Set α`, `seq s t` is the union of `f '' t` over
-all `f ∈ s`. -/
-def seq (s : Set (α → β)) (t : Set α) : Set β := image2 (fun f ↦ f) s t
-#align set.seq Set.seq
-
-@[simp]
-theorem mem_seq_iff {s : Set (α → β)} {t : Set α} {b : β} :
- b ∈ seq s t ↔ ∃ f ∈ s, ∃ a ∈ t, (f : α → β) a = b :=
- Iff.rfl
-#align set.mem_seq_iff Set.mem_seq_iff
-
-lemma seq_eq_image2 (s : Set (α → β)) (t : Set α) : seq s t = image2 (fun f a ↦ f a) s t := rfl
-
theorem seq_def {s : Set (α → β)} {t : Set α} : seq s t = ⋃ f ∈ s, f '' t := by
rw [seq_eq_image2, iUnion_image_left]
#align set.seq_def Set.seq_def
@@ -2381,6 +2381,9 @@ theorem iInf_iUnion (s : ι → Set α) (f : α → β) : ⨅ a ∈ ⋃ i, s i,
iSup_iUnion (β := βᵒᵈ) s f
#align infi_Union iInf_iUnion
+theorem sSup_iUnion (t : ι → Set β) : sSup (⋃ i, t i) = ⨆ i, sSup (t i) := by
+ simp_rw [sSup_eq_iSup, iSup_iUnion]
+
theorem sSup_sUnion (s : Set (Set β)) : sSup (⋃₀ s) = ⨆ t ∈ s, sSup t := by
simp only [sUnion_eq_biUnion, sSup_eq_iSup, iSup_iUnion]
#align Sup_sUnion sSup_sUnion
It's nicer to read than writing [@foo](https://github.com/foo) _ _ _
.
@@ -1435,7 +1435,7 @@ alias sUnion_mono := sUnion_subset_sUnion
#align set.sUnion_mono Set.sUnion_mono
theorem iUnion_subset_iUnion_const {s : Set α} (h : ι → ι₂) : ⋃ _ : ι, s ⊆ ⋃ _ : ι₂, s :=
- @iSup_const_mono (Set α) ι ι₂ _ s h
+ iSup_const_mono (α := Set α) h
#align set.Union_subset_Union_const Set.iUnion_subset_iUnion_const
@[simp]
@@ -2378,7 +2378,7 @@ theorem iSup_iUnion (s : ι → Set α) (f : α → β) : ⨆ a ∈ ⋃ i, s i,
#align supr_Union iSup_iUnion
theorem iInf_iUnion (s : ι → Set α) (f : α → β) : ⨅ a ∈ ⋃ i, s i, f a = ⨅ (i) (a ∈ s i), f a :=
- @iSup_iUnion α βᵒᵈ _ _ s f
+ iSup_iUnion (β := βᵒᵈ) s f
#align infi_Union iInf_iUnion
theorem sSup_sUnion (s : Set (Set β)) : sSup (⋃₀ s) = ⨆ t ∈ s, sSup t := by
@@ -2386,7 +2386,7 @@ theorem sSup_sUnion (s : Set (Set β)) : sSup (⋃₀ s) = ⨆ t ∈ s, sSup t :
#align Sup_sUnion sSup_sUnion
theorem sInf_sUnion (s : Set (Set β)) : sInf (⋃₀ s) = ⨅ t ∈ s, sInf t :=
- @sSup_sUnion βᵒᵈ _ _
+ sSup_sUnion (β := βᵒᵈ) s
#align Inf_sUnion sInf_sUnion
lemma iSup_sUnion (S : Set (Set α)) (f : α → β) :
$
with <|
(#9319)
See Zulip thread for the discussion.
@@ -374,7 +374,7 @@ theorem nonempty_of_union_eq_top_of_nonempty {ι : Type*} (t : Set ι) (s : ι
theorem nonempty_of_nonempty_iUnion
{s : ι → Set α} (h_Union : (⋃ i, s i).Nonempty) : Nonempty ι := by
obtain ⟨x, hx⟩ := h_Union
- exact ⟨Classical.choose $ mem_iUnion.mp hx⟩
+ exact ⟨Classical.choose <| mem_iUnion.mp hx⟩
theorem nonempty_of_nonempty_iUnion_eq_univ
{s : ι → Set α} [Nonempty α] (h_Union : ⋃ i, s i = univ) : Nonempty ι :=
@@ -592,11 +592,11 @@ lemma iInter_const (s : Set β) : ⋂ _ : ι, s = s := iInf_const
#align set.Inter_const Set.iInter_const
lemma iUnion_eq_const (hf : ∀ i, f i = s) : ⋃ i, f i = s :=
- (iUnion_congr hf).trans $ iUnion_const _
+ (iUnion_congr hf).trans <| iUnion_const _
#align set.Union_eq_const Set.iUnion_eq_const
lemma iInter_eq_const (hf : ∀ i, f i = s) : ⋂ i, f i = s :=
- (iInter_congr hf).trans $ iInter_const _
+ (iInter_congr hf).trans <| iInter_const _
#align set.Inter_eq_const Set.iInter_eq_const
end Nonempty
@@ -130,7 +130,7 @@ def iUnion_delab : Delab := whenPPOption Lean.getPPNotation do
let ppTypes ← getPPOption getPPFunBinderTypes
let stx ← SubExpr.withAppArg do
let dom ← SubExpr.withBindingDomain delab
- withBindingBodyUnusedName $ fun x => do
+ withBindingBodyUnusedName fun x => do
let x : TSyntax `ident := .mk x
let body ← delab
if prop && !dep then
@@ -158,7 +158,7 @@ def sInter_delab : Delab := whenPPOption Lean.getPPNotation do
let ppTypes ← getPPOption getPPFunBinderTypes
let stx ← SubExpr.withAppArg do
let dom ← SubExpr.withBindingDomain delab
- withBindingBodyUnusedName $ fun x => do
+ withBindingBodyUnusedName fun x => do
let x : TSyntax `ident := .mk x
let body ← delab
if prop && !dep then
Set.image2
etc (#9275)
Set.image2
to use ∃ a ∈ s, ∃ b ∈ t, f a b = c
instead of ∃ a b, a ∈ s ∧ b ∈ t ∧ f a b = c
.Set.seq
as Set.image2
. The new definition is equal to the old one but rw [Set.seq]
gives a different result.Filter.map₂
to use ∃ u ∈ f, ∃ v ∈ g, image2 m u v ⊆ s
instead of ∃ u v, u ∈ f ∧ v ∈ g ∧ ...
Set.mem_image2
, Finset.mem_image₂
, Set.mem_mul
, Finset.mem_div
etcThe two reasons to make the change are:
∃ a ∈ s, ∃ b ∈ t, _
is a simp
-normal form, and@@ -2081,8 +2081,7 @@ section Seq
/-- Given a set `s` of functions `α → β` and `t : Set α`, `seq s t` is the union of `f '' t` over
all `f ∈ s`. -/
-def seq (s : Set (α → β)) (t : Set α) : Set β :=
- { b | ∃ f ∈ s, ∃ a ∈ t, (f : α → β) a = b }
+def seq (s : Set (α → β)) (t : Set α) : Set β := image2 (fun f ↦ f) s t
#align set.seq Set.seq
@[simp]
@@ -2091,29 +2090,28 @@ theorem mem_seq_iff {s : Set (α → β)} {t : Set α} {b : β} :
Iff.rfl
#align set.mem_seq_iff Set.mem_seq_iff
-lemma seq_eq_image2 (s : Set (α → β)) (t : Set α) : seq s t = image2 (fun f a ↦ f a) s t := by
- ext; simp
+lemma seq_eq_image2 (s : Set (α → β)) (t : Set α) : seq s t = image2 (fun f a ↦ f a) s t := rfl
theorem seq_def {s : Set (α → β)} {t : Set α} : seq s t = ⋃ f ∈ s, f '' t := by
rw [seq_eq_image2, iUnion_image_left]
#align set.seq_def Set.seq_def
theorem seq_subset {s : Set (α → β)} {t : Set α} {u : Set β} :
- seq s t ⊆ u ↔ ∀ f ∈ s, ∀ a ∈ t, (f : α → β) a ∈ u := by
- rw [seq_eq_image2, image2_subset_iff]
+ seq s t ⊆ u ↔ ∀ f ∈ s, ∀ a ∈ t, (f : α → β) a ∈ u :=
+ image2_subset_iff
#align set.seq_subset Set.seq_subset
@[gcongr]
theorem seq_mono {s₀ s₁ : Set (α → β)} {t₀ t₁ : Set α} (hs : s₀ ⊆ s₁) (ht : t₀ ⊆ t₁) :
- seq s₀ t₀ ⊆ seq s₁ t₁ := fun _ ⟨f, hf, a, ha, eq⟩ => ⟨f, hs hf, a, ht ha, eq⟩
+ seq s₀ t₀ ⊆ seq s₁ t₁ := image2_subset hs ht
#align set.seq_mono Set.seq_mono
-theorem singleton_seq {f : α → β} {t : Set α} : Set.seq ({f} : Set (α → β)) t = f '' t := by
- rw [seq_eq_image2, image2_singleton_left]
+theorem singleton_seq {f : α → β} {t : Set α} : Set.seq ({f} : Set (α → β)) t = f '' t :=
+ image2_singleton_left
#align set.singleton_seq Set.singleton_seq
-theorem seq_singleton {s : Set (α → β)} {a : α} : Set.seq s {a} = (fun f : α → β => f a) '' s := by
- rw [seq_eq_image2, image2_singleton_right]
+theorem seq_singleton {s : Set (α → β)} {a : α} : Set.seq s {a} = (fun f : α → β => f a) '' s :=
+ image2_singleton_right
#align set.seq_singleton Set.seq_singleton
theorem seq_seq {s : Set (β → γ)} {t : Set (α → β)} {u : Set α} :
@@ -2124,7 +2122,7 @@ theorem seq_seq {s : Set (β → γ)} {t : Set (α → β)} {u : Set α} :
theorem image_seq {f : β → γ} {s : Set (α → β)} {t : Set α} :
f '' seq s t = seq ((f ∘ ·) '' s) t := by
- rw [← singleton_seq, ← singleton_seq, seq_seq, image_singleton]
+ simp only [seq, image_image2, image2_image_left, comp_apply]
#align set.image_seq Set.image_seq
theorem prod_eq_seq {s : Set α} {t : Set β} : s ×ˢ t = (Prod.mk '' s).seq t := by
Pairwise
wherever possible (#9236)
Performed with a regex search for ∀ (.) (.), \1 ≠ \2 →
, and a few variants to catch implicit binders and explicit types.
I have deliberately avoided trying to make the analogous Set.Pairwise
transformation (or any Pairwise (foo on bar)
transformations) in this PR, to keep the diff small.
Co-authored-by: Yaël Dillies <yael.dillies@gmail.com>
@@ -3,6 +3,7 @@ Copyright (c) 2014 Jeremy Avigad. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jeremy Avigad, Leonardo de Moura, Johannes Hölzl, Mario Carneiro
-/
+import Mathlib.Logic.Pairwise
import Mathlib.Order.CompleteBooleanAlgebra
import Mathlib.Order.Directed
import Mathlib.Order.GaloisConnection
@@ -2310,24 +2311,25 @@ theorem sigmaToiUnion_surjective : Surjective (sigmaToiUnion t)
⟨⟨a, b, hb⟩, rfl⟩
#align set.sigma_to_Union_surjective Set.sigmaToiUnion_surjective
-theorem sigmaToiUnion_injective (h : ∀ i j, i ≠ j → Disjoint (t i) (t j)) :
+theorem sigmaToiUnion_injective (h : Pairwise fun i j => Disjoint (t i) (t j)) :
Injective (sigmaToiUnion t)
| ⟨a₁, b₁, h₁⟩, ⟨a₂, b₂, h₂⟩, eq =>
have b_eq : b₁ = b₂ := congr_arg Subtype.val eq
have a_eq : a₁ = a₂ :=
by_contradiction fun ne =>
have : b₁ ∈ t a₁ ∩ t a₂ := ⟨h₁, b_eq.symm ▸ h₂⟩
- (h _ _ ne).le_bot this
+ (h ne).le_bot this
Sigma.eq a_eq <| Subtype.eq <| by subst b_eq; subst a_eq; rfl
#align set.sigma_to_Union_injective Set.sigmaToiUnion_injective
-theorem sigmaToiUnion_bijective (h : ∀ i j, i ≠ j → Disjoint (t i) (t j)) :
+theorem sigmaToiUnion_bijective (h : Pairwise fun i j => Disjoint (t i) (t j)) :
Bijective (sigmaToiUnion t) :=
⟨sigmaToiUnion_injective t h, sigmaToiUnion_surjective t⟩
#align set.sigma_to_Union_bijective Set.sigmaToiUnion_bijective
/-- Equivalence between a disjoint union and a dependent sum. -/
-noncomputable def unionEqSigmaOfDisjoint {t : α → Set β} (h : ∀ i j, i ≠ j → Disjoint (t i) (t j)) :
+noncomputable def unionEqSigmaOfDisjoint {t : α → Set β}
+ (h : Pairwise fun i j => Disjoint (t i) (t j)) :
(⋃ i, t i) ≃ Σi, t i :=
(Equiv.ofBijective _ <| sigmaToiUnion_bijective t h).symm
#align set.Union_eq_sigma_of_disjoint Set.unionEqSigmaOfDisjoint
Set.image3
(#9221)
Set.image3
was only used to prove associativity of Set.image2
. It had basically no API and had exactly one (easily replaced) use outside Data.Set.NAry
). There is no specific function as a replacement, but it can be obtained by combining Set.image2
twice.
@@ -2117,7 +2117,8 @@ theorem seq_singleton {s : Set (α → β)} {a : α} : Set.seq s {a} = (fun f :
theorem seq_seq {s : Set (β → γ)} {t : Set (α → β)} {u : Set α} :
seq s (seq t u) = seq (seq ((· ∘ ·) '' s) t) u := by
- simp only [seq_eq_image2, image2_image_left, image2_image2_left, image2_image2_right, comp_apply]
+ simp only [seq_eq_image2, image2_image_left]
+ exact .symm <| image2_assoc fun _ _ _ ↦ rfl
#align set.seq_seq Set.seq_seq
theorem image_seq {f : β → γ} {s : Set (α → β)} {t : Set α} :
∃ x ∈ s, _
instead of ∃ (x) (_ : x ∈ s), _
(#9184)
Search for [∀∃].*(_
and manually replace some occurrences with more readable versions.
In case of ∀
, the new expressions are defeq to the old ones.
In case of ∃
, they differ by exists_prop
.
In some rare cases, golf proofs that needed fixing.
@@ -1683,7 +1683,7 @@ theorem InjOn.image_iInter_eq [Nonempty ι] {s : ι → Set α} {f : α → β}
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i hi) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i hi) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i hi) -/
-theorem InjOn.image_biInter_eq {p : ι → Prop} {s : ∀ (i) (_ : p i), Set α} (hp : ∃ i, p i)
+theorem InjOn.image_biInter_eq {p : ι → Prop} {s : ∀ i, p i → Set α} (hp : ∃ i, p i)
{f : α → β} (h : InjOn f (⋃ (i) (hi), s i hi)) :
(f '' ⋂ (i) (hi), s i hi) = ⋂ (i) (hi), f '' s i hi := by
simp only [iInter, iInf_subtype']
@@ -2002,16 +2002,17 @@ section Image2
variable (f : α → β → γ) {s : Set α} {t : Set β}
+/-- The `Set.image2` version of `Set.image_eq_iUnion` -/
+theorem image2_eq_iUnion (s : Set α) (t : Set β) : image2 f s t = ⋃ (i ∈ s) (j ∈ t), {f i j} := by
+ ext; simp [eq_comm]
+#align set.image2_eq_Union Set.image2_eq_iUnion
+
theorem iUnion_image_left : ⋃ a ∈ s, f a '' t = image2 f s t := by
- ext y
- constructor <;> simp only [mem_iUnion] <;> rintro ⟨a, ha, x, hx, ax⟩ <;> exact ⟨a, x, ha, hx, ax⟩
+ simp only [image2_eq_iUnion, image_eq_iUnion]
#align set.Union_image_left Set.iUnion_image_left
-theorem iUnion_image_right : ⋃ b ∈ t, (fun a => f a b) '' s = image2 f s t := by
- ext y
- constructor <;> simp only [mem_iUnion] <;> rintro ⟨a, b, c, d, e⟩
- exact ⟨c, a, d, b, e⟩
- exact ⟨b, d, a, c, e⟩
+theorem iUnion_image_right : ⋃ b ∈ t, (f · b) '' s = image2 f s t := by
+ rw [image2_swap, iUnion_image_left]
#align set.Union_image_right Set.iUnion_image_right
theorem image2_iUnion_left (s : ι → Set α) (t : Set β) :
@@ -2065,17 +2066,10 @@ theorem image2_iInter₂_subset_right (s : Set α) (t : ∀ i, κ i → Set β)
exact fun x hx y hy i j => mem_image2_of_mem hx (hy _ _)
#align set.image2_Inter₂_subset_right Set.image2_iInter₂_subset_right
-/-- The `Set.image2` version of `Set.image_eq_iUnion` -/
-theorem image2_eq_iUnion (s : Set α) (t : Set β) : image2 f s t = ⋃ (i ∈ s) (j ∈ t), {f i j} := by
- simp_rw [← image_eq_iUnion, iUnion_image_left]
-#align set.image2_eq_Union Set.image2_eq_iUnion
-
-/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem prod_eq_biUnion_left : s ×ˢ t = ⋃ a ∈ s, (fun b => (a, b)) '' t := by
rw [iUnion_image_left, image2_mk_eq_prod]
#align set.prod_eq_bUnion_left Set.prod_eq_biUnion_left
-/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem prod_eq_biUnion_right : s ×ˢ t = ⋃ b ∈ t, (fun a => (a, b)) '' s := by
rw [iUnion_image_right, image2_mk_eq_prod]
#align set.prod_eq_bUnion_right Set.prod_eq_biUnion_right
@@ -2090,20 +2084,22 @@ def seq (s : Set (α → β)) (t : Set α) : Set β :=
{ b | ∃ f ∈ s, ∃ a ∈ t, (f : α → β) a = b }
#align set.seq Set.seq
-theorem seq_def {s : Set (α → β)} {t : Set α} : seq s t = ⋃ f ∈ s, f '' t :=
- Set.ext <| by simp [seq]
-#align set.seq_def Set.seq_def
-
@[simp]
theorem mem_seq_iff {s : Set (α → β)} {t : Set α} {b : β} :
b ∈ seq s t ↔ ∃ f ∈ s, ∃ a ∈ t, (f : α → β) a = b :=
Iff.rfl
#align set.mem_seq_iff Set.mem_seq_iff
+lemma seq_eq_image2 (s : Set (α → β)) (t : Set α) : seq s t = image2 (fun f a ↦ f a) s t := by
+ ext; simp
+
+theorem seq_def {s : Set (α → β)} {t : Set α} : seq s t = ⋃ f ∈ s, f '' t := by
+ rw [seq_eq_image2, iUnion_image_left]
+#align set.seq_def Set.seq_def
+
theorem seq_subset {s : Set (α → β)} {t : Set α} {u : Set β} :
- seq s t ⊆ u ↔ ∀ f ∈ s, ∀ a ∈ t, (f : α → β) a ∈ u :=
- Iff.intro (fun h f hf a ha => h ⟨f, hf, a, ha, rfl⟩) fun h _ ⟨f, hf, a, ha, eq⟩ =>
- eq ▸ h f hf a ha
+ seq s t ⊆ u ↔ ∀ f ∈ s, ∀ a ∈ t, (f : α → β) a ∈ u := by
+ rw [seq_eq_image2, image2_subset_iff]
#align set.seq_subset Set.seq_subset
@[gcongr]
@@ -2111,21 +2107,17 @@ theorem seq_mono {s₀ s₁ : Set (α → β)} {t₀ t₁ : Set α} (hs : s₀
seq s₀ t₀ ⊆ seq s₁ t₁ := fun _ ⟨f, hf, a, ha, eq⟩ => ⟨f, hs hf, a, ht ha, eq⟩
#align set.seq_mono Set.seq_mono
-theorem singleton_seq {f : α → β} {t : Set α} : Set.seq ({f} : Set (α → β)) t = f '' t :=
- Set.ext <| by simp
+theorem singleton_seq {f : α → β} {t : Set α} : Set.seq ({f} : Set (α → β)) t = f '' t := by
+ rw [seq_eq_image2, image2_singleton_left]
#align set.singleton_seq Set.singleton_seq
-theorem seq_singleton {s : Set (α → β)} {a : α} : Set.seq s {a} = (fun f : α → β => f a) '' s :=
- Set.ext <| by simp
+theorem seq_singleton {s : Set (α → β)} {a : α} : Set.seq s {a} = (fun f : α → β => f a) '' s := by
+ rw [seq_eq_image2, image2_singleton_right]
#align set.seq_singleton Set.seq_singleton
theorem seq_seq {s : Set (β → γ)} {t : Set (α → β)} {u : Set α} :
seq s (seq t u) = seq (seq ((· ∘ ·) '' s) t) u := by
- refine' Set.ext fun c => Iff.intro _ _
- · rintro ⟨f, hfs, b, ⟨g, hg, a, hau, rfl⟩, rfl⟩
- exact ⟨f ∘ g, ⟨(· ∘ ·) f, mem_image_of_mem _ hfs, g, hg, rfl⟩, a, hau, rfl⟩
- · rintro ⟨fg, ⟨fc, ⟨f, hfs, rfl⟩, g, hgt, rfl⟩, a, ha, rfl⟩
- exact ⟨f, hfs, g a, ⟨g, hgt, a, ha, rfl⟩, rfl⟩
+ simp only [seq_eq_image2, image2_image_left, image2_image2_left, image2_image2_right, comp_apply]
#align set.seq_seq Set.seq_seq
theorem image_seq {f : β → γ} {s : Set (α → β)} {t : Set α} :
@@ -2133,15 +2125,8 @@ theorem image_seq {f : β → γ} {s : Set (α → β)} {t : Set α} :
rw [← singleton_seq, ← singleton_seq, seq_seq, image_singleton]
#align set.image_seq Set.image_seq
-/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem prod_eq_seq {s : Set α} {t : Set β} : s ×ˢ t = (Prod.mk '' s).seq t := by
- ext ⟨a, b⟩
- constructor
- · rintro ⟨ha, hb⟩
- exact ⟨Prod.mk a, ⟨a, ha, rfl⟩, b, hb, rfl⟩
- · rintro ⟨f, ⟨x, hx, rfl⟩, y, hy, eq⟩
- rw [← eq]
- exact ⟨hx, hy⟩
+ rw [seq_eq_image2, image2_image_left, image2_mk_eq_prod]
#align set.prod_eq_seq Set.prod_eq_seq
theorem prod_image_seq_comm (s : Set α) (t : Set β) :
@@ -2150,8 +2135,7 @@ theorem prod_image_seq_comm (s : Set α) (t : Set β) :
#align set.prod_image_seq_comm Set.prod_image_seq_comm
theorem image2_eq_seq (f : α → β → γ) (s : Set α) (t : Set β) : image2 f s t = seq (f '' s) t := by
- ext
- simp
+ rw [seq_eq_image2, image2_image_left]
#align set.image2_eq_seq Set.image2_eq_seq
end Seq
(· op ·) a
by (a op ·)
(#8843)
I used the regex \(\(· (.) ·\) (.)\)
, replacing with ($2 $1 ·)
.
@@ -2129,7 +2129,7 @@ theorem seq_seq {s : Set (β → γ)} {t : Set (α → β)} {u : Set α} :
#align set.seq_seq Set.seq_seq
theorem image_seq {f : β → γ} {s : Set (α → β)} {t : Set α} :
- f '' seq s t = seq ((· ∘ ·) f '' s) t := by
+ f '' seq s t = seq ((f ∘ ·) '' s) t := by
rw [← singleton_seq, ← singleton_seq, seq_seq, image_singleton]
#align set.image_seq Set.image_seq
Set.iUnion_univ_pi
(#8647)
Allow ι : Type*
to depend on a : α
.
@@ -2177,8 +2177,8 @@ theorem pi_diff_pi_subset (i : Set α) (s t : ∀ a, Set (π a)) :
exact hx.2 _ ha (hx.1 _ ha)
#align set.pi_diff_pi_subset Set.pi_diff_pi_subset
-theorem iUnion_univ_pi (t : ∀ i, ι → Set (π i)) :
- ⋃ x : α → ι, pi univ (fun i => t i (x i)) = pi univ fun i => ⋃ j : ι, t i j := by
+theorem iUnion_univ_pi {ι : α → Type*} (t : (a : α) → ι a → Set (π a)) :
+ ⋃ x : (a : α) → ι a, pi univ (fun a => t a (x a)) = pi univ fun a => ⋃ j : ι a, t a j := by
ext
simp [Classical.skolem]
#align set.Union_univ_pi Set.iUnion_univ_pi
@@ -56,7 +56,7 @@ In lemma names,
set_option autoImplicit true
-open Function Tactic Set
+open Function Set
universe u
@@ -115,6 +115,68 @@ notation3 "⋃ "(...)", "r:60:(scoped f => iUnion f) => r
/-- Notation for `Set.iInter`. Indexed intersection of a family of sets -/
notation3 "⋂ "(...)", "r:60:(scoped f => iInter f) => r
+section delaborators
+
+open Lean Lean.PrettyPrinter.Delaborator
+
+/-- Delaborator for indexed unions. -/
+@[delab app.Set.iUnion]
+def iUnion_delab : Delab := whenPPOption Lean.getPPNotation do
+ let #[_, ι, f] := (← SubExpr.getExpr).getAppArgs | failure
+ unless f.isLambda do failure
+ let prop ← Meta.isProp ι
+ let dep := f.bindingBody!.hasLooseBVar 0
+ let ppTypes ← getPPOption getPPFunBinderTypes
+ let stx ← SubExpr.withAppArg do
+ let dom ← SubExpr.withBindingDomain delab
+ withBindingBodyUnusedName $ fun x => do
+ let x : TSyntax `ident := .mk x
+ let body ← delab
+ if prop && !dep then
+ `(⋃ (_ : $dom), $body)
+ else if prop || ppTypes then
+ `(⋃ ($x:ident : $dom), $body)
+ else
+ `(⋃ $x:ident, $body)
+ -- Cute binders
+ let stx : Term ←
+ match stx with
+ | `(⋃ $x:ident, ⋃ (_ : $y:ident ∈ $s), $body)
+ | `(⋃ ($x:ident : $_), ⋃ (_ : $y:ident ∈ $s), $body) =>
+ if x == y then `(⋃ $x:ident ∈ $s, $body) else pure stx
+ | _ => pure stx
+ return stx
+
+/-- Delaborator for indexed intersections. -/
+@[delab app.Set.iInter]
+def sInter_delab : Delab := whenPPOption Lean.getPPNotation do
+ let #[_, ι, f] := (← SubExpr.getExpr).getAppArgs | failure
+ unless f.isLambda do failure
+ let prop ← Meta.isProp ι
+ let dep := f.bindingBody!.hasLooseBVar 0
+ let ppTypes ← getPPOption getPPFunBinderTypes
+ let stx ← SubExpr.withAppArg do
+ let dom ← SubExpr.withBindingDomain delab
+ withBindingBodyUnusedName $ fun x => do
+ let x : TSyntax `ident := .mk x
+ let body ← delab
+ if prop && !dep then
+ `(⋂ (_ : $dom), $body)
+ else if prop || ppTypes then
+ `(⋂ ($x:ident : $dom), $body)
+ else
+ `(⋂ $x:ident, $body)
+ -- Cute binders
+ let stx : Term ←
+ match stx with
+ | `(⋂ $x:ident, ⋂ (_ : $y:ident ∈ $s), $body)
+ | `(⋂ ($x:ident : $_), ⋂ (_ : $y:ident ∈ $s), $body) =>
+ if x == y then `(⋂ $x:ident ∈ $s, $body) else pure stx
+ | _ => pure stx
+ return stx
+
+end delaborators
+
@[simp]
theorem sSup_eq_sUnion (S : Set (Set α)) : sSup S = ⋃₀S :=
rfl
Define nowhere dense and meagre sets and show their basic properties. Meagre sets are defined as the complement of comeagre(=residual) sets (and shown to be equivalent to the standard definition); we deduce their API from the API for comeagre sets.
Co-authored-by: grunweg <grunweg@posteo.de>
@@ -1110,6 +1110,17 @@ theorem sUnion_subset_iff {s : Set (Set α)} {t : Set α} : ⋃₀s ⊆ t ↔
sSup_le_iff
#align set.sUnion_subset_iff Set.sUnion_subset_iff
+/-- `sUnion` is monotone under taking a subset of each set. -/
+lemma sUnion_mono_subsets {s : Set (Set α)} {f : Set α → Set α} (hf : ∀ t : Set α, t ⊆ f t) :
+ ⋃₀ s ⊆ ⋃₀ (f '' s) :=
+ fun _ ⟨t, htx, hxt⟩ ↦ ⟨f t, mem_image_of_mem f htx, hf t hxt⟩
+
+/-- `sUnion` is monotone under taking a superset of each set. -/
+lemma sUnion_mono_supsets {s : Set (Set α)} {f : Set α → Set α} (hf : ∀ t : Set α, f t ⊆ t) :
+ ⋃₀ (f '' s) ⊆ ⋃₀ s :=
+ -- If t ∈ f '' s is arbitrary; t = f u for some u : Set α.
+ fun _ ⟨_, ⟨u, hus, hut⟩, hxt⟩ ↦ ⟨u, hus, (hut ▸ hf u) hxt⟩
+
theorem subset_sInter {S : Set (Set α)} {t : Set α} (h : ∀ t' ∈ S, t ⊆ t') : t ⊆ ⋂₀ S :=
le_sInf h
#align set.subset_sInter Set.subset_sInter
@@ -1872,6 +1872,10 @@ theorem iUnion_prod {ι ι' α β} (s : ι → Set α) (t : ι' → Set β) :
simp
#align set.Union_prod Set.iUnion_prod
+/-- Analogue of `iSup_prod` for sets. -/
+lemma iUnion_prod' (f : β × γ → Set α) : ⋃ x : β × γ, f x = ⋃ (i : β) (j : γ), f (i, j) :=
+ iSup_prod
+
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem iUnion_prod_of_monotone [SemilatticeSup α] {s : α → Set β} {t : α → Set γ} (hs : Monotone s)
@@ -1159,6 +1159,19 @@ theorem sInter_eq_univ {S : Set (Set α)} : ⋂₀ S = univ ↔ ∀ s ∈ S, s =
sInf_eq_top
#align set.sInter_eq_univ Set.sInter_eq_univ
+theorem subset_powerset_iff {s : Set (Set α)} {t : Set α} : s ⊆ 𝒫 t ↔ ⋃₀ s ⊆ t :=
+ sUnion_subset_iff.symm
+
+/-- `⋃₀` and `𝒫` form a Galois connection. -/
+theorem sUnion_powerset_gc :
+ GaloisConnection (⋃₀ · : Set (Set α) → Set α) (𝒫 · : Set α → Set (Set α)) :=
+ gc_sSup_Iic
+
+/-- `⋃₀` and `𝒫` form a Galois insertion. -/
+def sUnion_powerset_gi :
+ GaloisInsertion (⋃₀ · : Set (Set α) → Set α) (𝒫 · : Set α → Set (Set α)) :=
+ gi_sSup_Iic
+
/-- If all sets in a collection are either `∅` or `Set.univ`, then so is their union. -/
theorem sUnion_mem_empty_univ {S : Set (Set α)} (h : S ⊆ {∅, univ}) :
⋃₀ S ∈ ({∅, univ} : Set (Set α)) := by
Currently, we only have that sups and limsups are measurable in complete linear orders, which excludes the main case of the real line. With more complicated proofs, these measurability results can be extended to all conditionally complete linear orders, without any further assumption in the statements.
@@ -2168,9 +2168,18 @@ end Disjoint
/-! ### Intervals -/
-
namespace Set
+lemma nonempty_iInter_Iic_iff [Preorder α] {f : ι → α} :
+ (⋂ i, Iic (f i)).Nonempty ↔ BddBelow (range f) := by
+ have : (⋂ (i : ι), Iic (f i)) = lowerBounds (range f) := by
+ ext c; simp [lowerBounds]
+ simp [this, BddBelow]
+
+lemma nonempty_iInter_Ici_iff [Preorder α] {f : ι → α} :
+ (⋂ i, Ici (f i)).Nonempty ↔ BddAbove (range f) :=
+ nonempty_iInter_Iic_iff (α := αᵒᵈ)
+
variable [CompleteLattice α]
theorem Ici_iSup (f : ι → α) : Ici (⨆ i, f i) = ⋂ i, Ici (f i) :=
@@ -1344,7 +1344,7 @@ theorem Sigma.univ (X : α → Type*) : (Set.univ : Set (Σa, X a)) = ⋃ a, ran
iff_of_true trivial ⟨range (Sigma.mk x.1), Set.mem_range_self _, x.2, Sigma.eta x⟩
#align set.sigma.univ Set.Sigma.univ
-alias sUnion_subset_sUnion ← sUnion_mono
+alias sUnion_mono := sUnion_subset_sUnion
#align set.sUnion_mono Set.sUnion_mono
theorem iUnion_subset_iUnion_const {s : Set α} (h : ι → ι₂) : ⋃ _ : ι, s ⊆ ⋃ _ : ι₂, s :=
@@ -2304,3 +2304,19 @@ theorem sSup_sUnion (s : Set (Set β)) : sSup (⋃₀ s) = ⨆ t ∈ s, sSup t :
theorem sInf_sUnion (s : Set (Set β)) : sInf (⋃₀ s) = ⨅ t ∈ s, sInf t :=
@sSup_sUnion βᵒᵈ _ _
#align Inf_sUnion sInf_sUnion
+
+lemma iSup_sUnion (S : Set (Set α)) (f : α → β) :
+ (⨆ x ∈ ⋃₀ S, f x) = ⨆ (s ∈ S) (x ∈ s), f x := by
+ rw [sUnion_eq_iUnion, iSup_iUnion, ← iSup_subtype'']
+
+lemma iInf_sUnion (S : Set (Set α)) (f : α → β) :
+ (⨅ x ∈ ⋃₀ S, f x) = ⨅ (s ∈ S) (x ∈ s), f x := by
+ rw [sUnion_eq_iUnion, iInf_iUnion, ← iInf_subtype'']
+
+lemma forall_sUnion {p : α → Prop} :
+ (∀ x ∈ ⋃₀ S, p x) ↔ ∀ s ∈ S, ∀ x ∈ s, p x := by
+ simp_rw [← iInf_Prop_eq, iInf_sUnion]
+
+lemma exists_sUnion {p : α → Prop} :
+ (∃ x ∈ ⋃₀ S, p x) ↔ ∃ s ∈ S, ∃ x ∈ s, p x := by
+ simp_rw [← exists_prop, ← iSup_Prop_eq, iSup_sUnion]
Autoimplicits are highly controversial and also defeat the performance-improving work in #6474.
The intent of this PR is to make autoImplicit
opt-in on a per-file basis, by disabling it in the lakefile and enabling it again with set_option autoImplicit true
in the few files that rely on it.
That also keeps this PR small, as opposed to attempting to "fix" files to not need it any more.
I claim that many of the uses of autoImplicit
in these files are accidental; situations such as:
variables
are in scope, but pasting the lemma in the wrong sectionHaving set_option autoImplicit false
as the default prevents these types of mistake being made in the 90% of files where autoImplicit
s are not used at all, and causes them to be caught by CI during review.
I think there were various points during the port where we encouraged porters to delete the universes u v
lines; I think having autoparams for universe variables only would cover a lot of the cases we actually use them, while avoiding any real shortcomings.
A Zulip poll (after combining overlapping votes accordingly) was in favor of this change with 5:5:18
as the no:dontcare:yes
vote ratio.
While this PR was being reviewed, a handful of files gained some more likely-accidental autoImplicits. In these places, set_option autoImplicit true
has been placed locally within a section, rather than at the top of the file.
@@ -53,6 +53,8 @@ In lemma names,
* `⋂₀`: `Set.sInter`
-/
+set_option autoImplicit true
+
open Function Tactic Set
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -58,7 +58,7 @@ open Function Tactic Set
universe u
-variable {α β γ : Type _} {ι ι' ι₂ : Sort _} {κ κ₁ κ₂ : ι → Sort _} {κ' : ι' → Sort _}
+variable {α β γ : Type*} {ι ι' ι₂ : Sort*} {κ κ₁ κ₂ : ι → Sort*} {κ' : ι' → Sort*}
namespace Set
@@ -293,14 +293,14 @@ theorem iInf_eq_dif {p : Prop} [Decidable p] (s : p → Set α) :
_root_.iInf_eq_dif _
#align set.Infi_eq_dif Set.iInf_eq_dif
-theorem exists_set_mem_of_union_eq_top {ι : Type _} (t : Set ι) (s : ι → Set β)
+theorem exists_set_mem_of_union_eq_top {ι : Type*} (t : Set ι) (s : ι → Set β)
(w : ⋃ i ∈ t, s i = ⊤) (x : β) : ∃ i ∈ t, x ∈ s i := by
have p : x ∈ ⊤ := Set.mem_univ x
rw [← w, Set.mem_iUnion] at p
simpa using p
#align set.exists_set_mem_of_union_eq_top Set.exists_set_mem_of_union_eq_top
-theorem nonempty_of_union_eq_top_of_nonempty {ι : Type _} (t : Set ι) (s : ι → Set α)
+theorem nonempty_of_union_eq_top_of_nonempty {ι : Type*} (t : Set ι) (s : ι → Set α)
(H : Nonempty α) (w : ⋃ i ∈ t, s i = ⊤) : t.Nonempty := by
obtain ⟨x, m, -⟩ := exists_set_mem_of_union_eq_top t s w H.some
exact ⟨x, m⟩
@@ -469,12 +469,12 @@ theorem iInter₂_mono' {s : ∀ i, κ i → Set α} {t : ∀ i', κ' i' → Set
(iInter₂_subset _ _).trans hst
#align set.Inter₂_mono' Set.iInter₂_mono'
-theorem iUnion₂_subset_iUnion (κ : ι → Sort _) (s : ι → Set α) :
+theorem iUnion₂_subset_iUnion (κ : ι → Sort*) (s : ι → Set α) :
⋃ (i) (_ : κ i), s i ⊆ ⋃ i, s i :=
iUnion_mono fun _ => iUnion_subset fun _ => Subset.rfl
#align set.Union₂_subset_Union Set.iUnion₂_subset_iUnion
-theorem iInter_subset_iInter₂ (κ : ι → Sort _) (s : ι → Set α) :
+theorem iInter_subset_iInter₂ (κ : ι → Sort*) (s : ι → Set α) :
⋂ i, s i ⊆ ⋂ (i) (_ : κ i), s i :=
iInter_mono fun _ => subset_iInter fun _ => Subset.rfl
#align set.Inter_subset_Inter₂ Set.iInter_subset_iInter₂
@@ -695,7 +695,7 @@ theorem iInter_ite (f g : ι → Set α) :
end
-theorem image_projection_prod {ι : Type _} {α : ι → Type _} {v : ∀ i : ι, Set (α i)}
+theorem image_projection_prod {ι : Type*} {α : ι → Type*} {v : ∀ i : ι, Set (α i)}
(hv : (pi univ v).Nonempty) (i : ι) :
((fun x : ∀ i : ι, α i => x i) '' ⋂ k, (fun x : ∀ j : ι, α j => x k) ⁻¹' v k) = v i := by
classical
@@ -998,13 +998,13 @@ theorem biInter_pair (a b : α) (s : α → Set β) : ⋂ x ∈ ({a, b} : Set α
rw [biInter_insert, biInter_singleton]
#align set.bInter_pair Set.biInter_pair
-theorem biInter_inter {ι α : Type _} {s : Set ι} (hs : s.Nonempty) (f : ι → Set α) (t : Set α) :
+theorem biInter_inter {ι α : Type*} {s : Set ι} (hs : s.Nonempty) (f : ι → Set α) (t : Set α) :
⋂ i ∈ s, f i ∩ t = (⋂ i ∈ s, f i) ∩ t := by
haveI : Nonempty s := hs.to_subtype
simp [biInter_eq_iInter, ← iInter_inter]
#align set.bInter_inter Set.biInter_inter
-theorem inter_biInter {ι α : Type _} {s : Set ι} (hs : s.Nonempty) (f : ι → Set α) (t : Set α) :
+theorem inter_biInter {ι α : Type*} {s : Set ι} (hs : s.Nonempty) (f : ι → Set α) (t : Set α) :
⋂ i ∈ s, t ∩ f i = t ∩ ⋂ i ∈ s, f i := by
rw [inter_comm, ← biInter_inter hs]
simp [inter_comm]
@@ -1033,13 +1033,13 @@ theorem biUnion_union (s t : Set α) (u : α → Set β) :
#align set.bUnion_union Set.biUnion_union
@[simp]
-theorem iUnion_coe_set {α β : Type _} (s : Set α) (f : s → Set β) :
+theorem iUnion_coe_set {α β : Type*} (s : Set α) (f : s → Set β) :
⋃ i, f i = ⋃ i ∈ s, f ⟨i, ‹i ∈ s›⟩ :=
iUnion_subtype _ _
#align set.Union_coe_set Set.iUnion_coe_set
@[simp]
-theorem iInter_coe_set {α β : Type _} (s : Set α) (f : s → Set β) :
+theorem iInter_coe_set {α β : Type*} (s : Set α) (f : s → Set β) :
⋂ i, f i = ⋂ i ∈ s, f ⟨i, ‹i ∈ s›⟩ :=
iInter_subtype _ _
#align set.Inter_coe_set Set.iInter_coe_set
@@ -1312,7 +1312,7 @@ theorem inter_empty_of_inter_sUnion_empty {s t : Set α} {S : Set (Set α)} (hs
rw [← h]; exact inter_subset_inter_right _ (subset_sUnion_of_mem hs)
#align set.inter_empty_of_inter_sUnion_empty Set.inter_empty_of_inter_sUnion_empty
-theorem range_sigma_eq_iUnion_range {γ : α → Type _} (f : Sigma γ → β) :
+theorem range_sigma_eq_iUnion_range {γ : α → Type*} (f : Sigma γ → β) :
range f = ⋃ a, range fun b => f ⟨a, b⟩ :=
Set.ext <| by simp
#align set.range_sigma_eq_Union_range Set.range_sigma_eq_iUnion_range
@@ -1325,7 +1325,7 @@ theorem iUnion_eq_range_psigma (s : ι → Set β) : ⋃ i, s i = range fun a :
simp [Set.ext_iff]
#align set.Union_eq_range_psigma Set.iUnion_eq_range_psigma
-theorem iUnion_image_preimage_sigma_mk_eq_self {ι : Type _} {σ : ι → Type _} (s : Set (Sigma σ)) :
+theorem iUnion_image_preimage_sigma_mk_eq_self {ι : Type*} {σ : ι → Type*} (s : Set (Sigma σ)) :
⋃ i, Sigma.mk i '' (Sigma.mk i ⁻¹' s) = s := by
ext x
simp only [mem_iUnion, mem_image, mem_preimage]
@@ -1337,7 +1337,7 @@ theorem iUnion_image_preimage_sigma_mk_eq_self {ι : Type _} {σ : ι → Type _
exact ⟨i, a, h, rfl⟩
#align set.Union_image_preimage_sigma_mk_eq_self Set.iUnion_image_preimage_sigma_mk_eq_self
-theorem Sigma.univ (X : α → Type _) : (Set.univ : Set (Σa, X a)) = ⋃ a, range (Sigma.mk a) :=
+theorem Sigma.univ (X : α → Type*) : (Set.univ : Set (Σa, X a)) = ⋃ a, range (Sigma.mk a) :=
Set.ext fun x =>
iff_of_true trivial ⟨range (Sigma.mk x.1), Set.mem_range_self _, x.2, Sigma.eta x⟩
#align set.sigma.univ Set.Sigma.univ
@@ -1350,12 +1350,12 @@ theorem iUnion_subset_iUnion_const {s : Set α} (h : ι → ι₂) : ⋃ _ : ι,
#align set.Union_subset_Union_const Set.iUnion_subset_iUnion_const
@[simp]
-theorem iUnion_singleton_eq_range {α β : Type _} (f : α → β) : ⋃ x : α, {f x} = range f := by
+theorem iUnion_singleton_eq_range {α β : Type*} (f : α → β) : ⋃ x : α, {f x} = range f := by
ext x
simp [@eq_comm _ x]
#align set.Union_singleton_eq_range Set.iUnion_singleton_eq_range
-theorem iUnion_of_singleton (α : Type _) : (⋃ x, {x} : Set α) = univ := by simp [Set.ext_iff]
+theorem iUnion_of_singleton (α : Type*) : (⋃ x, {x} : Set α) = univ := by simp [Set.ext_iff]
#align set.Union_of_singleton Set.iUnion_of_singleton
theorem iUnion_of_singleton_coe (s : Set α) : ⋃ i : s, ({(i : α)} : Set α) = s := by simp
@@ -1423,7 +1423,7 @@ theorem sInter_iUnion (s : ι → Set (Set α)) : ⋂₀ ⋃ i, s i = ⋂ i, ⋂
simp only [sInter_eq_biInter, biInter_iUnion]
#align set.sInter_Union Set.sInter_iUnion
-theorem iUnion_range_eq_sUnion {α β : Type _} (C : Set (Set α)) {f : ∀ s : C, β → (s : Type _)}
+theorem iUnion_range_eq_sUnion {α β : Type*} (C : Set (Set α)) {f : ∀ s : C, β → (s : Type _)}
(hf : ∀ s : C, Surjective (f s)) : ⋃ y : β, range (fun s : C => (f s y).val) = ⋃₀C := by
ext x; constructor
· rintro ⟨s, ⟨y, rfl⟩, ⟨s, hs⟩, rfl⟩
@@ -2066,7 +2066,7 @@ end Seq
section Pi
-variable {π : α → Type _}
+variable {π : α → Type*}
theorem pi_def (i : Set α) (s : ∀ a, Set (π a)) : pi i s = ⋂ a ∈ i, eval a ⁻¹' s a := by
ext
@@ -2123,13 +2123,13 @@ variable {s t u : Set α} {f : α → β}
namespace Set
@[simp]
-theorem disjoint_iUnion_left {ι : Sort _} {s : ι → Set α} :
+theorem disjoint_iUnion_left {ι : Sort*} {s : ι → Set α} :
Disjoint (⋃ i, s i) t ↔ ∀ i, Disjoint (s i) t :=
iSup_disjoint_iff
#align set.disjoint_Union_left Set.disjoint_iUnion_left
@[simp]
-theorem disjoint_iUnion_right {ι : Sort _} {s : ι → Set α} :
+theorem disjoint_iUnion_right {ι : Sort*} {s : ι → Set α} :
Disjoint t (⋃ i, s i) ↔ ∀ i, Disjoint t (s i) :=
disjoint_iSup_iff
#align set.disjoint_Union_right Set.disjoint_iUnion_right
@@ -1159,7 +1159,7 @@ theorem sInter_eq_univ {S : Set (Set α)} : ⋂₀ S = univ ↔ ∀ s ∈ S, s =
/-- If all sets in a collection are either `∅` or `Set.univ`, then so is their union. -/
theorem sUnion_mem_empty_univ {S : Set (Set α)} (h : S ⊆ {∅, univ}) :
- ⋃₀ S ∈ ({∅, univ} :Set (Set α)) := by
+ ⋃₀ S ∈ ({∅, univ} : Set (Set α)) := by
simp only [mem_insert_iff, mem_singleton_iff, or_iff_not_imp_left, sUnion_eq_empty, not_forall]
rintro ⟨s, hs, hne⟩
obtain rfl : s = univ := (h hs).resolve_left hne
kernImage
and filter analog (#5744)
Co-authored-by: Junyan Xu <junyanxumath@gmail.com> @alreadydone
This was originally discussed on Zulip, and Junyan made most of the work in this message. I just changed some proofs to use a bit more Galois connections.
This is a bit of a gadget but it does simplify the proof of comap_iSup
, and it will also be convenient to define the space of functions with support a compact subset of a fixed set. See this message for more details.
@@ -26,7 +26,7 @@ for `Set α`, and some more set constructions.
* `Set.completeAtomicBooleanAlgebra`: `Set α` is a `CompleteAtomicBooleanAlgebra` with `≤ = ⊆`,
`< = ⊂`, `⊓ = ∩`, `⊔ = ∪`, `⨅ = ⋂`, `⨆ = ⋃` and `\` as the set difference.
See `Set.BooleanAlgebra`.
-* `Set.kern_image`: For a function `f : α → β`, `s.kern_image f` is the set of `y` such that
+* `Set.kernImage`: For a function `f : α → β`, `s.kernImage f` is the set of `y` such that
`f ⁻¹ y ⊆ s`.
* `Set.seq`: Union of the image of a set under a **seq**uence of functions. `seq s t` is the union
of `f '' t` over all `f ∈ s`, where `t : Set α` and `s : Set (α → β)`.
@@ -182,6 +182,14 @@ instance Set.completeAtomicBooleanAlgebra : CompleteAtomicBooleanAlgebra (Set α
sInf_le := fun s t t_in a h => h _ t_in
iInf_iSup_eq := by intros; ext; simp [Classical.skolem] }
+/-- `kernImage f s` is the set of `y` such that `f ⁻¹ y ⊆ s`. -/
+def kernImage (f : α → β) (s : Set α) : Set β :=
+ { y | ∀ ⦃x⦄, f x = y → x ∈ s }
+#align set.kern_image Set.kernImage
+
+lemma subset_kernImage_iff {f : α → β} : s ⊆ kernImage f t ↔ f ⁻¹' s ⊆ t :=
+ ⟨fun h _ hx ↦ h hx rfl,
+ fun h _ hx y hy ↦ h (show f y ∈ s from hy.symm ▸ hx)⟩
section GaloisConnection
variable {f : α → β}
@@ -190,20 +198,48 @@ protected theorem image_preimage : GaloisConnection (image f) (preimage f) := fu
image_subset_iff
#align set.image_preimage Set.image_preimage
-/-- `kernImage f s` is the set of `y` such that `f ⁻¹ y ⊆ s`. -/
-def kernImage (f : α → β) (s : Set α) : Set β :=
- { y | ∀ ⦃x⦄, f x = y → x ∈ s }
-#align set.kern_image Set.kernImage
-
-protected theorem preimage_kernImage : GaloisConnection (preimage f) (kernImage f) := fun a _ =>
- ⟨fun h _ hx y hy =>
- have : f y ∈ a := hy.symm ▸ hx
- h this,
- fun h x (hx : f x ∈ a) => h hx rfl⟩
+protected theorem preimage_kernImage : GaloisConnection (preimage f) (kernImage f) := fun _ _ =>
+ subset_kernImage_iff.symm
#align set.preimage_kern_image Set.preimage_kernImage
end GaloisConnection
+section kernImage
+
+variable {f : α → β}
+
+lemma kernImage_mono : Monotone (kernImage f) :=
+ Set.preimage_kernImage.monotone_u
+
+lemma kernImage_eq_compl {s : Set α} : kernImage f s = (f '' sᶜ)ᶜ :=
+ Set.preimage_kernImage.u_unique (Set.image_preimage.compl)
+ (fun t ↦ compl_compl (f ⁻¹' t) ▸ Set.preimage_compl)
+
+lemma kernImage_compl {s : Set α} : kernImage f (sᶜ) = (f '' s)ᶜ := by
+ rw [kernImage_eq_compl, compl_compl]
+
+lemma kernImage_empty : kernImage f ∅ = (range f)ᶜ := by
+ rw [kernImage_eq_compl, compl_empty, image_univ]
+
+lemma kernImage_preimage_eq_iff {s : Set β} : kernImage f (f ⁻¹' s) = s ↔ (range f)ᶜ ⊆ s := by
+ rw [kernImage_eq_compl, ← preimage_compl, compl_eq_comm, eq_comm, image_preimage_eq_iff,
+ compl_subset_comm]
+
+lemma compl_range_subset_kernImage {s : Set α} : (range f)ᶜ ⊆ kernImage f s := by
+ rw [← kernImage_empty]
+ exact kernImage_mono (empty_subset _)
+
+lemma kernImage_union_preimage {s : Set α} {t : Set β} :
+ kernImage f (s ∪ f ⁻¹' t) = kernImage f s ∪ t := by
+ rw [kernImage_eq_compl, kernImage_eq_compl, compl_union, ← preimage_compl, image_inter_preimage,
+ compl_inter, compl_compl]
+
+lemma kernImage_preimage_union {s : Set α} {t : Set β} :
+ kernImage f (f ⁻¹' t ∪ s) = t ∪ kernImage f s := by
+ rw [union_comm, kernImage_union_preimage, union_comm]
+
+end kernImage
+
/-! ### Union and intersection over an indexed family of sets -/
@@ -878,7 +878,7 @@ theorem mem_biInter {s : Set α} {t : α → Set β} {y : β} (h : ∀ x ∈ s,
theorem subset_biUnion_of_mem {s : Set α} {u : α → Set β} {x : α} (xs : x ∈ s) :
u x ⊆ ⋃ x ∈ s, u x :=
--Porting note: Why is this not just `subset_iUnion₂ x xs`?
- @subset_iUnion₂ β α (. ∈ s) (fun i _ => u i) x xs
+ @subset_iUnion₂ β α (· ∈ s) (fun i _ => u i) x xs
#align set.subset_bUnion_of_mem Set.subset_biUnion_of_mem
/-- A specialization of `iInter₂_subset`. -/
gcongr
attributes for sup/inf, min/max, union/intersection/complement, image/preimage (#6016)
@@ -379,6 +379,10 @@ theorem iUnion_mono {s t : ι → Set α} (h : ∀ i, s i ⊆ t i) : ⋃ i, s i
iSup_mono h
#align set.Union_mono Set.iUnion_mono
+@[gcongr]
+theorem iUnion_mono'' {s t : ι → Set α} (h : ∀ i, s i ⊆ t i) : iUnion s ⊆ iUnion t :=
+ iSup_mono h
+
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem iUnion₂_mono {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j ⊆ t i j) :
@@ -390,6 +394,10 @@ theorem iInter_mono {s t : ι → Set α} (h : ∀ i, s i ⊆ t i) : ⋂ i, s i
iInf_mono h
#align set.Inter_mono Set.iInter_mono
+@[gcongr]
+theorem iInter_mono'' {s t : ι → Set α} (h : ∀ i, s i ⊆ t i) : iInter s ⊆ iInter t :=
+ iInf_mono h
+
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem iInter₂_mono {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j ⊆ t i j) :
@@ -1073,10 +1081,12 @@ theorem subset_sInter_iff {S : Set (Set α)} {t : Set α} : t ⊆ ⋂₀ S ↔
le_sInf_iff
#align set.subset_sInter_iff Set.subset_sInter_iff
+@[gcongr]
theorem sUnion_subset_sUnion {S T : Set (Set α)} (h : S ⊆ T) : ⋃₀S ⊆ ⋃₀T :=
sUnion_subset fun _ hs => subset_sUnion_of_mem (h hs)
#align set.sUnion_subset_sUnion Set.sUnion_subset_sUnion
+@[gcongr]
theorem sInter_subset_sInter {S T : Set (Set α)} (h : S ⊆ T) : ⋂₀ T ⊆ ⋂₀ S :=
subset_sInter fun _ hs => sInter_subset_of_mem (h hs)
#align set.sInter_subset_sInter Set.sInter_subset_sInter
@@ -1296,8 +1306,7 @@ theorem Sigma.univ (X : α → Type _) : (Set.univ : Set (Σa, X a)) = ⋃ a, ra
iff_of_true trivial ⟨range (Sigma.mk x.1), Set.mem_range_self _, x.2, Sigma.eta x⟩
#align set.sigma.univ Set.Sigma.univ
-theorem sUnion_mono {s t : Set (Set α)} (h : s ⊆ t) : ⋃₀s ⊆ ⋃₀t :=
- sUnion_subset fun _' ht' => subset_sUnion_of_mem <| h ht'
+alias sUnion_subset_sUnion ← sUnion_mono
#align set.sUnion_mono Set.sUnion_mono
theorem iUnion_subset_iUnion_const {s : Set α} (h : ι → ι₂) : ⋃ _ : ι, s ⊆ ⋃ _ : ι₂, s :=
@@ -1969,6 +1978,7 @@ theorem seq_subset {s : Set (α → β)} {t : Set α} {u : Set β} :
eq ▸ h f hf a ha
#align set.seq_subset Set.seq_subset
+@[gcongr]
theorem seq_mono {s₀ s₁ : Set (α → β)} {t₀ t₁ : Set α} (hs : s₀ ⊆ s₁) (ht : t₀ ⊆ t₁) :
seq s₀ t₀ ⊆ seq s₁ t₁ := fun _ ⟨f, hf, a, ha, eq⟩ => ⟨f, hs hf, a, ht ha, eq⟩
#align set.seq_mono Set.seq_mono
@@ -2,16 +2,13 @@
Copyright (c) 2014 Jeremy Avigad. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jeremy Avigad, Leonardo de Moura, Johannes Hölzl, Mario Carneiro
-
-! This file was ported from Lean 3 source module data.set.lattice
-! leanprover-community/mathlib commit b86832321b586c6ac23ef8cdef6a7a27e42b13bd
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Order.CompleteBooleanAlgebra
import Mathlib.Order.Directed
import Mathlib.Order.GaloisConnection
+#align_import data.set.lattice from "leanprover-community/mathlib"@"b86832321b586c6ac23ef8cdef6a7a27e42b13bd"
+
/-!
# The set lattice
@@ -1973,7 +1973,7 @@ theorem seq_subset {s : Set (α → β)} {t : Set α} {u : Set β} :
#align set.seq_subset Set.seq_subset
theorem seq_mono {s₀ s₁ : Set (α → β)} {t₀ t₁ : Set α} (hs : s₀ ⊆ s₁) (ht : t₀ ⊆ t₁) :
- seq s₀ t₀ ⊆ seq s₁ t₁ := fun _ ⟨f, hf, a, ha, eq⟩ => ⟨f, hs hf, a, ht ha, eq⟩
+ seq s₀ t₀ ⊆ seq s₁ t₁ := fun _ ⟨f, hf, a, ha, eq⟩ => ⟨f, hs hf, a, ht ha, eq⟩
#align set.seq_mono Set.seq_mono
theorem singleton_seq {f : α → β} {t : Set α} : Set.seq ({f} : Set (α → β)) t = f '' t :=
Adds new CompletelyDistribLattice
/CompleteAtomicBooleanAlgebra
classes for complete lattices / complete atomic Boolean algebras that are also completely distributive, and removes the misleading claim that CompleteDistribLattice
/CompleteBooleanAlgebra
are completely distributive.
CompleteDistribLattice
instances are upgraded to CompletelyDistribLattice
.CompleteBooleanAlgebra
instances are upgraded to CompleteAtomicBooleanAlgebra
.@@ -26,8 +26,9 @@ for `Set α`, and some more set constructions.
* `Set.sUnion`: **s**et **union**. Union of sets belonging to a set of sets.
* `Set.sInter_eq_biInter`, `Set.sUnion_eq_biInter`: Shows that `⋂₀ s = ⋂ x ∈ s, x` and
`⋃₀ s = ⋃ x ∈ s, x`.
-* `Set.completeBooleanAlgebra`: `Set α` is a `CompleteBooleanAlgebra` with `≤ = ⊆`, `< = ⊂`,
- `⊓ = ∩`, `⊔ = ∪`, `⨅ = ⋂`, `⨆ = ⋃` and `\` as the set difference. See `Set.BooleanAlgebra`.
+* `Set.completeAtomicBooleanAlgebra`: `Set α` is a `CompleteAtomicBooleanAlgebra` with `≤ = ⊆`,
+ `< = ⊂`, `⊓ = ∩`, `⊔ = ∪`, `⨅ = ⋂`, `⨆ = ⋃` and `\` as the set difference.
+ See `Set.BooleanAlgebra`.
* `Set.kern_image`: For a function `f : α → β`, `s.kern_image f` is the set of `y` such that
`f ⁻¹ y ⊆ s`.
* `Set.seq`: Union of the image of a set under a **seq**uence of functions. `seq s t` is the union
@@ -176,14 +177,13 @@ theorem mem_iInter₂_of_mem {s : ∀ i, κ i → Set α} {a : α} (h : ∀ i j,
mem_iInter₂.2 h
#align set.mem_Inter₂_of_mem Set.mem_iInter₂_of_mem
-instance : CompleteBooleanAlgebra (Set α) :=
+instance Set.completeAtomicBooleanAlgebra : CompleteAtomicBooleanAlgebra (Set α) :=
{ instBooleanAlgebraSet with
le_sSup := fun s t t_in a a_in => ⟨t, t_in, a_in⟩
sSup_le := fun s t h a ⟨t', ⟨t'_in, a_in⟩⟩ => h t' t'_in a_in
le_sInf := fun s t h a a_in t' t'_in => h t' t'_in a_in
sInf_le := fun s t t_in a h => h _ t_in
- iInf_sup_le_sup_sInf := fun s S x => Iff.mp <| by simp [forall_or_left]
- inf_sSup_le_iSup_inf := fun s S x => Iff.mp <| by simp [exists_and_left] }
+ iInf_iSup_eq := by intros; ext; simp [Classical.skolem] }
section GaloisConnection
@@ -273,6 +273,15 @@ theorem nonempty_of_union_eq_top_of_nonempty {ι : Type _} (t : Set ι) (s : ι
exact ⟨x, m⟩
#align set.nonempty_of_union_eq_top_of_nonempty Set.nonempty_of_union_eq_top_of_nonempty
+theorem nonempty_of_nonempty_iUnion
+ {s : ι → Set α} (h_Union : (⋃ i, s i).Nonempty) : Nonempty ι := by
+ obtain ⟨x, hx⟩ := h_Union
+ exact ⟨Classical.choose $ mem_iUnion.mp hx⟩
+
+theorem nonempty_of_nonempty_iUnion_eq_univ
+ {s : ι → Set α} [Nonempty α] (h_Union : ⋃ i, s i = univ) : Nonempty ι :=
+ nonempty_of_nonempty_iUnion (s := s) (by simpa only [h_Union] using univ_nonempty)
+
theorem setOf_exists (p : ι → β → Prop) : { x | ∃ i, p i x } = ⋃ i, { x | p i x } :=
ext fun _ => mem_iUnion.symm
#align set.set_of_exists Set.setOf_exists
@@ -40,7 +40,7 @@ for `Set α`, and some more set constructions.
In lemma names,
* `⋃ i, s i` is called `iUnion`
* `⋂ i, s i` is called `iInter`
-* `⋃ i j, s i j` is called `iUnion₂`. This is a `iUnion` inside a `iUnion`.
+* `⋃ i j, s i j` is called `iUnion₂`. This is an `iUnion` inside an `iUnion`.
* `⋂ i j, s i j` is called `iInter₂`. This is an `iInter` inside an `iInter`.
* `⋃ i ∈ s, t i` is called `biUnion` for "bounded `iUnion`". This is the special case of `iUnion₂`
where `j : i ∈ s`.
@@ -95,7 +95,7 @@ theorem mem_sInter {x : α} {S : Set (Set α)} : x ∈ ⋂₀ S ↔ ∀ t ∈ S,
#align set.mem_sInter Set.mem_sInter
@[simp]
-theorem mem_sUnion {x : α} {S : Set (Set α)} : x ∈ ⋃₀S ↔ ∃ t ∈ S, x ∈ t :=
+theorem mem_sUnion {x : α} {S : Set (Set α)} : x ∈ ⋃₀ S ↔ ∃ t ∈ S, x ∈ t :=
Iff.rfl
#align set.mem_sUnion Set.mem_sUnion
@@ -110,10 +110,10 @@ def iInter (s : ι → Set β) : Set β :=
#align set.Inter Set.iInter
/-- Notation for `Set.iUnion`. Indexed union of a family of sets -/
-notation3 "⋃ "(...)", "r:(scoped f => iUnion f) => r
+notation3 "⋃ "(...)", "r:60:(scoped f => iUnion f) => r
/-- Notation for `Set.iInter`. Indexed intersection of a family of sets -/
-notation3 "⋂ "(...)", "r:(scoped f => iInter f) => r
+notation3 "⋂ "(...)", "r:60:(scoped f => iInter f) => r
@[simp]
theorem sSup_eq_sUnion (S : Set (Set α)) : sSup S = ⋃₀S :=
@@ -226,49 +226,49 @@ theorem iInter_congr_Prop {p q : Prop} {f₁ : p → Set α} {f₂ : q → Set
iInf_congr_Prop pq f
#align set.Inter_congr_Prop Set.iInter_congr_Prop
-theorem iUnion_plift_up (f : PLift ι → Set α) : (⋃ i, f (PLift.up i)) = ⋃ i, f i :=
+theorem iUnion_plift_up (f : PLift ι → Set α) : ⋃ i, f (PLift.up i) = ⋃ i, f i :=
iSup_plift_up _
#align set.Union_plift_up Set.iUnion_plift_up
-theorem iUnion_plift_down (f : ι → Set α) : (⋃ i, f (PLift.down i)) = ⋃ i, f i :=
+theorem iUnion_plift_down (f : ι → Set α) : ⋃ i, f (PLift.down i) = ⋃ i, f i :=
iSup_plift_down _
#align set.Union_plift_down Set.iUnion_plift_down
-theorem iInter_plift_up (f : PLift ι → Set α) : (⋂ i, f (PLift.up i)) = ⋂ i, f i :=
+theorem iInter_plift_up (f : PLift ι → Set α) : ⋂ i, f (PLift.up i) = ⋂ i, f i :=
iInf_plift_up _
#align set.Inter_plift_up Set.iInter_plift_up
-theorem iInter_plift_down (f : ι → Set α) : (⋂ i, f (PLift.down i)) = ⋂ i, f i :=
+theorem iInter_plift_down (f : ι → Set α) : ⋂ i, f (PLift.down i) = ⋂ i, f i :=
iInf_plift_down _
#align set.Inter_plift_down Set.iInter_plift_down
-theorem iUnion_eq_if {p : Prop} [Decidable p] (s : Set α) : (⋃ _ : p, s) = if p then s else ∅ :=
+theorem iUnion_eq_if {p : Prop} [Decidable p] (s : Set α) : ⋃ _ : p, s = if p then s else ∅ :=
iSup_eq_if _
#align set.Union_eq_if Set.iUnion_eq_if
theorem iUnion_eq_dif {p : Prop} [Decidable p] (s : p → Set α) :
- (⋃ h : p, s h) = if h : p then s h else ∅ :=
+ ⋃ h : p, s h = if h : p then s h else ∅ :=
iSup_eq_dif _
#align set.Union_eq_dif Set.iUnion_eq_dif
-theorem iInter_eq_if {p : Prop} [Decidable p] (s : Set α) : (⋂ _ : p, s) = if p then s else univ :=
+theorem iInter_eq_if {p : Prop} [Decidable p] (s : Set α) : ⋂ _ : p, s = if p then s else univ :=
iInf_eq_if _
#align set.Inter_eq_if Set.iInter_eq_if
theorem iInf_eq_dif {p : Prop} [Decidable p] (s : p → Set α) :
- (⋂ h : p, s h) = if h : p then s h else univ :=
+ ⋂ h : p, s h = if h : p then s h else univ :=
_root_.iInf_eq_dif _
#align set.Infi_eq_dif Set.iInf_eq_dif
theorem exists_set_mem_of_union_eq_top {ι : Type _} (t : Set ι) (s : ι → Set β)
- (w : (⋃ i ∈ t, s i) = ⊤) (x : β) : ∃ i ∈ t, x ∈ s i := by
+ (w : ⋃ i ∈ t, s i = ⊤) (x : β) : ∃ i ∈ t, x ∈ s i := by
have p : x ∈ ⊤ := Set.mem_univ x
rw [← w, Set.mem_iUnion] at p
simpa using p
#align set.exists_set_mem_of_union_eq_top Set.exists_set_mem_of_union_eq_top
theorem nonempty_of_union_eq_top_of_nonempty {ι : Type _} (t : Set ι) (s : ι → Set α)
- (H : Nonempty α) (w : (⋃ i ∈ t, s i) = ⊤) : t.Nonempty := by
+ (H : Nonempty α) (w : ⋃ i ∈ t, s i = ⊤) : t.Nonempty := by
obtain ⟨x, m, -⟩ := exists_set_mem_of_union_eq_top t s w H.some
exact ⟨x, m⟩
#align set.nonempty_of_union_eq_top_of_nonempty Set.nonempty_of_union_eq_top_of_nonempty
@@ -281,13 +281,13 @@ theorem setOf_forall (p : ι → β → Prop) : { x | ∀ i, p i x } = ⋂ i, {
ext fun _ => mem_iInter.symm
#align set.set_of_forall Set.setOf_forall
-theorem iUnion_subset {s : ι → Set α} {t : Set α} (h : ∀ i, s i ⊆ t) : (⋃ i, s i) ⊆ t :=
+theorem iUnion_subset {s : ι → Set α} {t : Set α} (h : ∀ i, s i ⊆ t) : ⋃ i, s i ⊆ t :=
iSup_le h
#align set.Union_subset Set.iUnion_subset
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem iUnion₂_subset {s : ∀ i, κ i → Set α} {t : Set α} (h : ∀ i j, s i j ⊆ t) :
- (⋃ (i) (j), s i j) ⊆ t :=
+ ⋃ (i) (j), s i j ⊆ t :=
iUnion_subset fun x => iUnion_subset (h x)
#align set.Union₂_subset Set.iUnion₂_subset
@@ -302,13 +302,13 @@ theorem subset_iInter₂ {s : Set α} {t : ∀ i, κ i → Set α} (h : ∀ i j,
#align set.subset_Inter₂ Set.subset_iInter₂
@[simp]
-theorem iUnion_subset_iff {s : ι → Set α} {t : Set α} : (⋃ i, s i) ⊆ t ↔ ∀ i, s i ⊆ t :=
+theorem iUnion_subset_iff {s : ι → Set α} {t : Set α} : ⋃ i, s i ⊆ t ↔ ∀ i, s i ⊆ t :=
⟨fun h _ => Subset.trans (le_iSup s _) h, iUnion_subset⟩
#align set.Union_subset_iff Set.iUnion_subset_iff
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem iUnion₂_subset_iff {s : ∀ i, κ i → Set α} {t : Set α} :
- (⋃ (i) (j), s i j) ⊆ t ↔ ∀ i j, s i j ⊆ t := by simp_rw [iUnion_subset_iff]
+ ⋃ (i) (j), s i j ⊆ t ↔ ∀ i j, s i j ⊆ t := by simp_rw [iUnion_subset_iff]
#align set.Union₂_subset_iff Set.iUnion₂_subset_iff
@[simp]
@@ -326,7 +326,7 @@ theorem subset_iUnion : ∀ (s : ι → Set β) (i : ι), s i ⊆ ⋃ i, s i :=
le_iSup
#align set.subset_Union Set.subset_iUnion
-theorem iInter_subset : ∀ (s : ι → Set β) (i : ι), (⋂ i, s i) ⊆ s i :=
+theorem iInter_subset : ∀ (s : ι → Set β) (i : ι), ⋂ i, s i ⊆ s i :=
iInf_le
#align set.Inter_subset Set.iInter_subset
@@ -336,7 +336,7 @@ theorem subset_iUnion₂ {s : ∀ i, κ i → Set α} (i : ι) (j : κ i) : s i
#align set.subset_Union₂ Set.subset_iUnion₂
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem iInter₂_subset {s : ∀ i, κ i → Set α} (i : ι) (j : κ i) : (⋂ (i) (j), s i j) ⊆ s i j :=
+theorem iInter₂_subset {s : ∀ i, κ i → Set α} (i : ι) (j : κ i) : ⋂ (i) (j), s i j ⊆ s i j :=
iInf₂_le i j
#align set.Inter₂_subset Set.iInter₂_subset
@@ -349,7 +349,7 @@ theorem subset_iUnion_of_subset {s : Set α} {t : ι → Set α} (i : ι) (h : s
/-- This rather trivial consequence of `iInter_subset`is convenient with `apply`, and has `i`
explicit for this purpose. -/
theorem iInter_subset_of_subset {s : ι → Set α} {t : Set α} (i : ι) (h : s i ⊆ t) :
- (⋂ i, s i) ⊆ t :=
+ ⋂ i, s i ⊆ t :=
iInf_le_of_le i h
#align set.Inter_subset_of_subset Set.iInter_subset_of_subset
@@ -365,46 +365,46 @@ theorem subset_iUnion₂_of_subset {s : Set α} {t : ∀ i, κ i → Set α} (i
/-- This rather trivial consequence of `iInter₂_subset` is convenient with `apply`, and has `i` and
`j` explicit for this purpose. -/
theorem iInter₂_subset_of_subset {s : ∀ i, κ i → Set α} {t : Set α} (i : ι) (j : κ i)
- (h : s i j ⊆ t) : (⋂ (i) (j), s i j) ⊆ t :=
+ (h : s i j ⊆ t) : ⋂ (i) (j), s i j ⊆ t :=
iInf₂_le_of_le i j h
#align set.Inter₂_subset_of_subset Set.iInter₂_subset_of_subset
-theorem iUnion_mono {s t : ι → Set α} (h : ∀ i, s i ⊆ t i) : (⋃ i, s i) ⊆ ⋃ i, t i :=
+theorem iUnion_mono {s t : ι → Set α} (h : ∀ i, s i ⊆ t i) : ⋃ i, s i ⊆ ⋃ i, t i :=
iSup_mono h
#align set.Union_mono Set.iUnion_mono
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem iUnion₂_mono {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j ⊆ t i j) :
- (⋃ (i) (j), s i j) ⊆ ⋃ (i) (j), t i j :=
+ ⋃ (i) (j), s i j ⊆ ⋃ (i) (j), t i j :=
iSup₂_mono h
#align set.Union₂_mono Set.iUnion₂_mono
-theorem iInter_mono {s t : ι → Set α} (h : ∀ i, s i ⊆ t i) : (⋂ i, s i) ⊆ ⋂ i, t i :=
+theorem iInter_mono {s t : ι → Set α} (h : ∀ i, s i ⊆ t i) : ⋂ i, s i ⊆ ⋂ i, t i :=
iInf_mono h
#align set.Inter_mono Set.iInter_mono
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem iInter₂_mono {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j ⊆ t i j) :
- (⋂ (i) (j), s i j) ⊆ ⋂ (i) (j), t i j :=
+ ⋂ (i) (j), s i j ⊆ ⋂ (i) (j), t i j :=
iInf₂_mono h
#align set.Inter₂_mono Set.iInter₂_mono
theorem iUnion_mono' {s : ι → Set α} {t : ι₂ → Set α} (h : ∀ i, ∃ j, s i ⊆ t j) :
- (⋃ i, s i) ⊆ ⋃ i, t i :=
+ ⋃ i, s i ⊆ ⋃ i, t i :=
iSup_mono' h
#align set.Union_mono' Set.iUnion_mono'
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i' j') -/
theorem iUnion₂_mono' {s : ∀ i, κ i → Set α} {t : ∀ i', κ' i' → Set α}
- (h : ∀ i j, ∃ i' j', s i j ⊆ t i' j') : (⋃ (i) (j), s i j) ⊆ ⋃ (i') (j'), t i' j' :=
+ (h : ∀ i j, ∃ i' j', s i j ⊆ t i' j') : ⋃ (i) (j), s i j ⊆ ⋃ (i') (j'), t i' j' :=
iSup₂_mono' h
#align set.Union₂_mono' Set.iUnion₂_mono'
theorem iInter_mono' {s : ι → Set α} {t : ι' → Set α} (h : ∀ j, ∃ i, s i ⊆ t j) :
- (⋂ i, s i) ⊆ ⋂ j, t j :=
+ ⋂ i, s i ⊆ ⋂ j, t j :=
Set.subset_iInter fun j =>
let ⟨i, hi⟩ := h j
iInter_subset_of_subset i hi
@@ -413,74 +413,74 @@ theorem iInter_mono' {s : ι → Set α} {t : ι' → Set α} (h : ∀ j, ∃ i,
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i' j') -/
theorem iInter₂_mono' {s : ∀ i, κ i → Set α} {t : ∀ i', κ' i' → Set α}
- (h : ∀ i' j', ∃ i j, s i j ⊆ t i' j') : (⋂ (i) (j), s i j) ⊆ ⋂ (i') (j'), t i' j' :=
+ (h : ∀ i' j', ∃ i j, s i j ⊆ t i' j') : ⋂ (i) (j), s i j ⊆ ⋂ (i') (j'), t i' j' :=
subset_iInter₂_iff.2 fun i' j' =>
let ⟨_, _, hst⟩ := h i' j'
(iInter₂_subset _ _).trans hst
#align set.Inter₂_mono' Set.iInter₂_mono'
theorem iUnion₂_subset_iUnion (κ : ι → Sort _) (s : ι → Set α) :
- (⋃ (i) (_ : κ i), s i) ⊆ ⋃ i, s i :=
+ ⋃ (i) (_ : κ i), s i ⊆ ⋃ i, s i :=
iUnion_mono fun _ => iUnion_subset fun _ => Subset.rfl
#align set.Union₂_subset_Union Set.iUnion₂_subset_iUnion
theorem iInter_subset_iInter₂ (κ : ι → Sort _) (s : ι → Set α) :
- (⋂ i, s i) ⊆ ⋂ (i) (_ : κ i), s i :=
+ ⋂ i, s i ⊆ ⋂ (i) (_ : κ i), s i :=
iInter_mono fun _ => subset_iInter fun _ => Subset.rfl
#align set.Inter_subset_Inter₂ Set.iInter_subset_iInter₂
-theorem iUnion_setOf (P : ι → α → Prop) : (⋃ i, { x : α | P i x }) = { x : α | ∃ i, P i x } := by
+theorem iUnion_setOf (P : ι → α → Prop) : ⋃ i, { x : α | P i x } = { x : α | ∃ i, P i x } := by
ext
exact mem_iUnion
#align set.Union_set_of Set.iUnion_setOf
-theorem iInter_setOf (P : ι → α → Prop) : (⋂ i, { x : α | P i x }) = { x : α | ∀ i, P i x } := by
+theorem iInter_setOf (P : ι → α → Prop) : ⋂ i, { x : α | P i x } = { x : α | ∀ i, P i x } := by
ext
exact mem_iInter
#align set.Inter_set_of Set.iInter_setOf
theorem iUnion_congr_of_surjective {f : ι → Set α} {g : ι₂ → Set α} (h : ι → ι₂) (h1 : Surjective h)
- (h2 : ∀ x, g (h x) = f x) : (⋃ x, f x) = ⋃ y, g y :=
+ (h2 : ∀ x, g (h x) = f x) : ⋃ x, f x = ⋃ y, g y :=
h1.iSup_congr h h2
#align set.Union_congr_of_surjective Set.iUnion_congr_of_surjective
theorem iInter_congr_of_surjective {f : ι → Set α} {g : ι₂ → Set α} (h : ι → ι₂) (h1 : Surjective h)
- (h2 : ∀ x, g (h x) = f x) : (⋂ x, f x) = ⋂ y, g y :=
+ (h2 : ∀ x, g (h x) = f x) : ⋂ x, f x = ⋂ y, g y :=
h1.iInf_congr h h2
#align set.Inter_congr_of_surjective Set.iInter_congr_of_surjective
-lemma iUnion_congr {s t : ι → Set α} (h : ∀ i, s i = t i) : (⋃ i, s i) = ⋃ i, t i := iSup_congr h
+lemma iUnion_congr {s t : ι → Set α} (h : ∀ i, s i = t i) : ⋃ i, s i = ⋃ i, t i := iSup_congr h
#align set.Union_congr Set.iUnion_congr
-lemma iInter_congr {s t : ι → Set α} (h : ∀ i, s i = t i) : (⋂ i, s i) = ⋂ i, t i := iInf_congr h
+lemma iInter_congr {s t : ι → Set α} (h : ∀ i, s i = t i) : ⋂ i, s i = ⋂ i, t i := iInf_congr h
#align set.Inter_congr Set.iInter_congr
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
lemma iUnion₂_congr {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j = t i j) :
- (⋃ (i) (j), s i j) = ⋃ (i) (j), t i j :=
+ ⋃ (i) (j), s i j = ⋃ (i) (j), t i j :=
iUnion_congr fun i => iUnion_congr <| h i
#align set.Union₂_congr Set.iUnion₂_congr
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
lemma iInter₂_congr {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j = t i j) :
- (⋂ (i) (j), s i j) = ⋂ (i) (j), t i j :=
+ ⋂ (i) (j), s i j = ⋂ (i) (j), t i j :=
iInter_congr fun i => iInter_congr <| h i
#align set.Inter₂_congr Set.iInter₂_congr
section Nonempty
variable [Nonempty ι] {f : ι → Set α} {s : Set α}
-lemma iUnion_const (s : Set β) : (⋃ _ : ι, s) = s := iSup_const
+lemma iUnion_const (s : Set β) : ⋃ _ : ι, s = s := iSup_const
#align set.Union_const Set.iUnion_const
-lemma iInter_const (s : Set β) : (⋂ _ : ι, s) = s := iInf_const
+lemma iInter_const (s : Set β) : ⋂ _ : ι, s = s := iInf_const
#align set.Inter_const Set.iInter_const
-lemma iUnion_eq_const (hf : ∀ i, f i = s) : (⋃ i, f i) = s :=
+lemma iUnion_eq_const (hf : ∀ i, f i = s) : ⋃ i, f i = s :=
(iUnion_congr hf).trans $ iUnion_const _
#align set.Union_eq_const Set.iUnion_eq_const
-lemma iInter_eq_const (hf : ∀ i, f i = s) : (⋂ i, f i) = s :=
+lemma iInter_eq_const (hf : ∀ i, f i = s) : ⋂ i, f i = s :=
(iInter_congr hf).trans $ iInter_const _
#align set.Inter_eq_const Set.iInter_eq_const
@@ -509,12 +509,12 @@ theorem compl_iInter₂ (s : ∀ i, κ i → Set α) : (⋂ (i) (j), s i j)ᶜ =
#align set.compl_Inter₂ Set.compl_iInter₂
-- classical -- complete_boolean_algebra
-theorem iUnion_eq_compl_iInter_compl (s : ι → Set β) : (⋃ i, s i) = (⋂ i, (s i)ᶜ)ᶜ := by
+theorem iUnion_eq_compl_iInter_compl (s : ι → Set β) : ⋃ i, s i = (⋂ i, (s i)ᶜ)ᶜ := by
simp only [compl_iInter, compl_compl]
#align set.Union_eq_compl_Inter_compl Set.iUnion_eq_compl_iInter_compl
-- classical -- complete_boolean_algebra
-theorem iInter_eq_compl_iUnion_compl (s : ι → Set β) : (⋂ i, s i) = (⋃ i, (s i)ᶜ)ᶜ := by
+theorem iInter_eq_compl_iUnion_compl (s : ι → Set β) : ⋂ i, s i = (⋃ i, (s i)ᶜ)ᶜ := by
simp only [compl_iUnion, compl_compl]
#align set.Inter_eq_compl_Union_compl Set.iInter_eq_compl_iUnion_compl
@@ -527,12 +527,12 @@ theorem iUnion_inter (s : Set β) (t : ι → Set β) : (⋃ i, t i) ∩ s = ⋃
#align set.Union_inter Set.iUnion_inter
theorem iUnion_union_distrib (s : ι → Set β) (t : ι → Set β) :
- (⋃ i, s i ∪ t i) = (⋃ i, s i) ∪ ⋃ i, t i :=
+ ⋃ i, s i ∪ t i = (⋃ i, s i) ∪ ⋃ i, t i :=
iSup_sup_eq
#align set.Union_union_distrib Set.iUnion_union_distrib
theorem iInter_inter_distrib (s : ι → Set β) (t : ι → Set β) :
- (⋂ i, s i ∩ t i) = (⋂ i, s i) ∩ ⋂ i, t i :=
+ ⋂ i, s i ∩ t i = (⋂ i, s i) ∩ ⋂ i, t i :=
iInf_inf_eq
#align set.Inter_inter_distrib Set.iInter_inter_distrib
@@ -582,27 +582,27 @@ theorem directed_on_iUnion {r} {f : ι → Set α} (hd : Directed (· ⊆ ·) f)
⟨x, ⟨z, xf⟩, xa₁, xa₂⟩
#align set.directed_on_Union Set.directed_on_iUnion
-theorem iUnion_inter_subset {ι α} {s t : ι → Set α} : (⋃ i, s i ∩ t i) ⊆ (⋃ i, s i) ∩ ⋃ i, t i :=
+theorem iUnion_inter_subset {ι α} {s t : ι → Set α} : ⋃ i, s i ∩ t i ⊆ (⋃ i, s i) ∩ ⋃ i, t i :=
le_iSup_inf_iSup s t
#align set.Union_inter_subset Set.iUnion_inter_subset
theorem iUnion_inter_of_monotone {ι α} [Preorder ι] [IsDirected ι (· ≤ ·)] {s t : ι → Set α}
- (hs : Monotone s) (ht : Monotone t) : (⋃ i, s i ∩ t i) = (⋃ i, s i) ∩ ⋃ i, t i :=
+ (hs : Monotone s) (ht : Monotone t) : ⋃ i, s i ∩ t i = (⋃ i, s i) ∩ ⋃ i, t i :=
iSup_inf_of_monotone hs ht
#align set.Union_inter_of_monotone Set.iUnion_inter_of_monotone
theorem iUnion_inter_of_antitone {ι α} [Preorder ι] [IsDirected ι (swap (· ≤ ·))] {s t : ι → Set α}
- (hs : Antitone s) (ht : Antitone t) : (⋃ i, s i ∩ t i) = (⋃ i, s i) ∩ ⋃ i, t i :=
+ (hs : Antitone s) (ht : Antitone t) : ⋃ i, s i ∩ t i = (⋃ i, s i) ∩ ⋃ i, t i :=
iSup_inf_of_antitone hs ht
#align set.Union_inter_of_antitone Set.iUnion_inter_of_antitone
theorem iInter_union_of_monotone {ι α} [Preorder ι] [IsDirected ι (swap (· ≤ ·))] {s t : ι → Set α}
- (hs : Monotone s) (ht : Monotone t) : (⋂ i, s i ∪ t i) = (⋂ i, s i) ∪ ⋂ i, t i :=
+ (hs : Monotone s) (ht : Monotone t) : ⋂ i, s i ∪ t i = (⋂ i, s i) ∪ ⋂ i, t i :=
iInf_sup_of_monotone hs ht
#align set.Inter_union_of_monotone Set.iInter_union_of_monotone
theorem iInter_union_of_antitone {ι α} [Preorder ι] [IsDirected ι (· ≤ ·)] {s t : ι → Set α}
- (hs : Antitone s) (ht : Antitone t) : (⋂ i, s i ∪ t i) = (⋂ i, s i) ∪ ⋂ i, t i :=
+ (hs : Antitone s) (ht : Antitone t) : ⋂ i, s i ∪ t i = (⋂ i, s i) ∪ ⋂ i, t i :=
iInf_sup_of_antitone hs ht
#align set.Inter_union_of_antitone Set.iInter_union_of_antitone
@@ -611,11 +611,11 @@ theorem iUnion_iInter_subset {s : ι → ι' → Set α} : (⋃ j, ⋂ i, s i j)
iSup_iInf_le_iInf_iSup (flip s)
#align set.Union_Inter_subset Set.iUnion_iInter_subset
-theorem iUnion_option {ι} (s : Option ι → Set α) : (⋃ o, s o) = s none ∪ ⋃ i, s (some i) :=
+theorem iUnion_option {ι} (s : Option ι → Set α) : ⋃ o, s o = s none ∪ ⋃ i, s (some i) :=
iSup_option s
#align set.Union_option Set.iUnion_option
-theorem iInter_option {ι} (s : Option ι → Set α) : (⋂ o, s o) = s none ∩ ⋂ i, s (some i) :=
+theorem iInter_option {ι} (s : Option ι → Set α) : ⋂ o, s o = s none ∩ ⋂ i, s (some i) :=
iInf_option s
#align set.Inter_option Set.iInter_option
@@ -624,22 +624,22 @@ section
variable (p : ι → Prop) [DecidablePred p]
theorem iUnion_dite (f : ∀ i, p i → Set α) (g : ∀ i, ¬p i → Set α) :
- (⋃ i, if h : p i then f i h else g i h) = (⋃ (i) (h : p i), f i h) ∪ ⋃ (i) (h : ¬p i), g i h :=
+ ⋃ i, (if h : p i then f i h else g i h) = (⋃ (i) (h : p i), f i h) ∪ ⋃ (i) (h : ¬p i), g i h :=
iSup_dite _ _ _
#align set.Union_dite Set.iUnion_dite
theorem iUnion_ite (f g : ι → Set α) :
- (⋃ i, if p i then f i else g i) = (⋃ (i) (_ : p i), f i) ∪ ⋃ (i) (_ : ¬p i), g i :=
+ ⋃ i, (if p i then f i else g i) = (⋃ (i) (_ : p i), f i) ∪ ⋃ (i) (_ : ¬p i), g i :=
iUnion_dite _ _ _
#align set.Union_ite Set.iUnion_ite
theorem iInter_dite (f : ∀ i, p i → Set α) (g : ∀ i, ¬p i → Set α) :
- (⋂ i, if h : p i then f i h else g i h) = (⋂ (i) (h : p i), f i h) ∩ ⋂ (i) (h : ¬p i), g i h :=
+ ⋂ i, (if h : p i then f i h else g i h) = (⋂ (i) (h : p i), f i h) ∩ ⋂ (i) (h : ¬p i), g i h :=
iInf_dite _ _ _
#align set.Inter_dite Set.iInter_dite
theorem iInter_ite (f g : ι → Set α) :
- (⋂ i, if p i then f i else g i) = (⋂ (i) (_ : p i), f i) ∩ ⋂ (i) (_ : ¬p i), g i :=
+ ⋂ i, (if p i then f i else g i) = (⋂ (i) (_ : p i), f i) ∩ ⋂ (i) (_ : ¬p i), g i :=
iInter_dite _ _ _
#align set.Inter_ite Set.iInter_ite
@@ -682,13 +682,13 @@ theorem iUnion_true {s : True → Set α} : iUnion s = s trivial :=
@[simp]
theorem iInter_exists {p : ι → Prop} {f : Exists p → Set α} :
- (⋂ x, f x) = ⋂ (i) (h : p i), f ⟨i, h⟩ :=
+ ⋂ x, f x = ⋂ (i) (h : p i), f ⟨i, h⟩ :=
iInf_exists
#align set.Inter_exists Set.iInter_exists
@[simp]
theorem iUnion_exists {p : ι → Prop} {f : Exists p → Set α} :
- (⋃ x, f x) = ⋃ (i) (h : p i), f ⟨i, h⟩ :=
+ ⋃ x, f x = ⋃ (i) (h : p i), f ⟨i, h⟩ :=
iSup_exists
#align set.Union_exists Set.iUnion_exists
@@ -707,12 +707,12 @@ section
variable {s : ι → Set α}
@[simp]
-theorem iUnion_eq_empty : (⋃ i, s i) = ∅ ↔ ∀ i, s i = ∅ :=
+theorem iUnion_eq_empty : ⋃ i, s i = ∅ ↔ ∀ i, s i = ∅ :=
iSup_eq_bot
#align set.Union_eq_empty Set.iUnion_eq_empty
@[simp]
-theorem iInter_eq_univ : (⋂ i, s i) = univ ↔ ∀ i, s i = univ :=
+theorem iInter_eq_univ : ⋂ i, s i = univ ↔ ∀ i, s i = univ :=
iInf_eq_top
#align set.Inter_eq_univ Set.iInter_eq_univ
@@ -727,7 +727,7 @@ theorem nonempty_biUnion {t : Set α} {s : α → Set β} :
#align set.nonempty_bUnion Set.nonempty_biUnion
theorem iUnion_nonempty_index (s : Set α) (t : s.Nonempty → Set β) :
- (⋃ h, t h) = ⋃ x ∈ s, t ⟨x, ‹_›⟩ :=
+ ⋃ h, t h = ⋃ x ∈ s, t ⟨x, ‹_›⟩ :=
iSup_exists
#align set.Union_nonempty_index Set.iUnion_nonempty_index
@@ -735,98 +735,98 @@ end
@[simp]
theorem iInter_iInter_eq_left {b : β} {s : ∀ x : β, x = b → Set α} :
- (⋂ (x) (h : x = b), s x h) = s b rfl :=
+ ⋂ (x) (h : x = b), s x h = s b rfl :=
iInf_iInf_eq_left
#align set.Inter_Inter_eq_left Set.iInter_iInter_eq_left
@[simp]
theorem iInter_iInter_eq_right {b : β} {s : ∀ x : β, b = x → Set α} :
- (⋂ (x) (h : b = x), s x h) = s b rfl :=
+ ⋂ (x) (h : b = x), s x h = s b rfl :=
iInf_iInf_eq_right
#align set.Inter_Inter_eq_right Set.iInter_iInter_eq_right
@[simp]
theorem iUnion_iUnion_eq_left {b : β} {s : ∀ x : β, x = b → Set α} :
- (⋃ (x) (h : x = b), s x h) = s b rfl :=
+ ⋃ (x) (h : x = b), s x h = s b rfl :=
iSup_iSup_eq_left
#align set.Union_Union_eq_left Set.iUnion_iUnion_eq_left
@[simp]
theorem iUnion_iUnion_eq_right {b : β} {s : ∀ x : β, b = x → Set α} :
- (⋃ (x) (h : b = x), s x h) = s b rfl :=
+ ⋃ (x) (h : b = x), s x h = s b rfl :=
iSup_iSup_eq_right
#align set.Union_Union_eq_right Set.iUnion_iUnion_eq_right
theorem iInter_or {p q : Prop} (s : p ∨ q → Set α) :
- (⋂ h, s h) = (⋂ h : p, s (Or.inl h)) ∩ ⋂ h : q, s (Or.inr h) :=
+ ⋂ h, s h = (⋂ h : p, s (Or.inl h)) ∩ ⋂ h : q, s (Or.inr h) :=
iInf_or
#align set.Inter_or Set.iInter_or
theorem iUnion_or {p q : Prop} (s : p ∨ q → Set α) :
- (⋃ h, s h) = (⋃ i, s (Or.inl i)) ∪ ⋃ j, s (Or.inr j) :=
+ ⋃ h, s h = (⋃ i, s (Or.inl i)) ∪ ⋃ j, s (Or.inr j) :=
iSup_or
#align set.Union_or Set.iUnion_or
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (hp hq) -/
-theorem iUnion_and {p q : Prop} (s : p ∧ q → Set α) : (⋃ h, s h) = ⋃ (hp) (hq), s ⟨hp, hq⟩ :=
+theorem iUnion_and {p q : Prop} (s : p ∧ q → Set α) : ⋃ h, s h = ⋃ (hp) (hq), s ⟨hp, hq⟩ :=
iSup_and
#align set.Union_and Set.iUnion_and
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (hp hq) -/
-theorem iInter_and {p q : Prop} (s : p ∧ q → Set α) : (⋂ h, s h) = ⋂ (hp) (hq), s ⟨hp, hq⟩ :=
+theorem iInter_and {p q : Prop} (s : p ∧ q → Set α) : ⋂ h, s h = ⋂ (hp) (hq), s ⟨hp, hq⟩ :=
iInf_and
#align set.Inter_and Set.iInter_and
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i i') -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i' i) -/
-theorem iUnion_comm (s : ι → ι' → Set α) : (⋃ (i) (i'), s i i') = ⋃ (i') (i), s i i' :=
+theorem iUnion_comm (s : ι → ι' → Set α) : ⋃ (i) (i'), s i i' = ⋃ (i') (i), s i i' :=
iSup_comm
#align set.Union_comm Set.iUnion_comm
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i i') -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i' i) -/
-theorem iInter_comm (s : ι → ι' → Set α) : (⋂ (i) (i'), s i i') = ⋂ (i') (i), s i i' :=
+theorem iInter_comm (s : ι → ι' → Set α) : ⋂ (i) (i'), s i i' = ⋂ (i') (i), s i i' :=
iInf_comm
#align set.Inter_comm Set.iInter_comm
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i₁ j₁ i₂ j₂) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i₂ j₂ i₁ j₁) -/
theorem iUnion₂_comm (s : ∀ i₁, κ₁ i₁ → ∀ i₂, κ₂ i₂ → Set α) :
- (⋃ (i₁) (j₁) (i₂) (j₂), s i₁ j₁ i₂ j₂) = ⋃ (i₂) (j₂) (i₁) (j₁), s i₁ j₁ i₂ j₂ :=
+ ⋃ (i₁) (j₁) (i₂) (j₂), s i₁ j₁ i₂ j₂ = ⋃ (i₂) (j₂) (i₁) (j₁), s i₁ j₁ i₂ j₂ :=
iSup₂_comm _
#align set.Union₂_comm Set.iUnion₂_comm
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i₁ j₁ i₂ j₂) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i₂ j₂ i₁ j₁) -/
theorem iInter₂_comm (s : ∀ i₁, κ₁ i₁ → ∀ i₂, κ₂ i₂ → Set α) :
- (⋂ (i₁) (j₁) (i₂) (j₂), s i₁ j₁ i₂ j₂) = ⋂ (i₂) (j₂) (i₁) (j₁), s i₁ j₁ i₂ j₂ :=
+ ⋂ (i₁) (j₁) (i₂) (j₂), s i₁ j₁ i₂ j₂ = ⋂ (i₂) (j₂) (i₁) (j₁), s i₁ j₁ i₂ j₂ :=
iInf₂_comm _
#align set.Inter₂_comm Set.iInter₂_comm
@[simp]
theorem biUnion_and (p : ι → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p x ∧ q x y → Set α) :
- (⋃ (x : ι) (y : ι') (h : p x ∧ q x y), s x y h) =
+ ⋃ (x : ι) (y : ι') (h : p x ∧ q x y), s x y h =
⋃ (x : ι) (hx : p x) (y : ι') (hy : q x y), s x y ⟨hx, hy⟩ :=
by simp only [iUnion_and, @iUnion_comm _ ι']
#align set.bUnion_and Set.biUnion_and
@[simp]
theorem biUnion_and' (p : ι' → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p y ∧ q x y → Set α) :
- (⋃ (x : ι) (y : ι') (h : p y ∧ q x y), s x y h) =
+ ⋃ (x : ι) (y : ι') (h : p y ∧ q x y), s x y h =
⋃ (y : ι') (hy : p y) (x : ι) (hx : q x y), s x y ⟨hy, hx⟩ :=
by simp only [iUnion_and, @iUnion_comm _ ι]
#align set.bUnion_and' Set.biUnion_and'
@[simp]
theorem biInter_and (p : ι → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p x ∧ q x y → Set α) :
- (⋂ (x : ι) (y : ι') (h : p x ∧ q x y), s x y h) =
+ ⋂ (x : ι) (y : ι') (h : p x ∧ q x y), s x y h =
⋂ (x : ι) (hx : p x) (y : ι') (hy : q x y), s x y ⟨hx, hy⟩ :=
by simp only [iInter_and, @iInter_comm _ ι']
#align set.bInter_and Set.biInter_and
@[simp]
theorem biInter_and' (p : ι' → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p y ∧ q x y → Set α) :
- (⋂ (x : ι) (y : ι') (h : p y ∧ q x y), s x y h) =
+ ⋂ (x : ι) (y : ι') (h : p y ∧ q x y), s x y h =
⋂ (y : ι') (hy : p y) (x : ι) (hx : q x y), s x y ⟨hy, hx⟩ :=
by simp only [iInter_and, @iInter_comm _ ι]
#align set.bInter_and' Set.biInter_and'
@@ -834,14 +834,14 @@ theorem biInter_and' (p : ι' → Prop) (q : ι → ι' → Prop) (s : ∀ x y,
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (x h) -/
@[simp]
theorem iUnion_iUnion_eq_or_left {b : β} {p : β → Prop} {s : ∀ x : β, x = b ∨ p x → Set α} :
- (⋃ (x) (h), s x h) = s b (Or.inl rfl) ∪ ⋃ (x) (h : p x), s x (Or.inr h) := by
+ ⋃ (x) (h), s x h = s b (Or.inl rfl) ∪ ⋃ (x) (h : p x), s x (Or.inr h) := by
simp only [iUnion_or, iUnion_union_distrib, iUnion_iUnion_eq_left]
#align set.Union_Union_eq_or_left Set.iUnion_iUnion_eq_or_left
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (x h) -/
@[simp]
theorem iInter_iInter_eq_or_left {b : β} {p : β → Prop} {s : ∀ x : β, x = b ∨ p x → Set α} :
- (⋂ (x) (h), s x h) = s b (Or.inl rfl) ∩ ⋂ (x) (h : p x), s x (Or.inr h) := by
+ ⋂ (x) (h), s x h = s b (Or.inl rfl) ∩ ⋂ (x) (h : p x), s x (Or.inr h) := by
simp only [iInter_or, iInter_inter_distrib, iInter_iInter_eq_left]
#align set.Inter_Inter_eq_or_left Set.iInter_iInter_eq_or_left
@@ -869,136 +869,136 @@ theorem subset_biUnion_of_mem {s : Set α} {u : α → Set β} {x : α} (xs : x
/-- A specialization of `iInter₂_subset`. -/
theorem biInter_subset_of_mem {s : Set α} {t : α → Set β} {x : α} (xs : x ∈ s) :
- (⋂ x ∈ s, t x) ⊆ t x :=
+ ⋂ x ∈ s, t x ⊆ t x :=
iInter₂_subset x xs
#align set.bInter_subset_of_mem Set.biInter_subset_of_mem
theorem biUnion_subset_biUnion_left {s s' : Set α} {t : α → Set β} (h : s ⊆ s') :
- (⋃ x ∈ s, t x) ⊆ ⋃ x ∈ s', t x :=
+ ⋃ x ∈ s, t x ⊆ ⋃ x ∈ s', t x :=
iUnion₂_subset fun _ hx => subset_biUnion_of_mem <| h hx
#align set.bUnion_subset_bUnion_left Set.biUnion_subset_biUnion_left
theorem biInter_subset_biInter_left {s s' : Set α} {t : α → Set β} (h : s' ⊆ s) :
- (⋂ x ∈ s, t x) ⊆ ⋂ x ∈ s', t x :=
+ ⋂ x ∈ s, t x ⊆ ⋂ x ∈ s', t x :=
subset_iInter₂ fun _ hx => biInter_subset_of_mem <| h hx
#align set.bInter_subset_bInter_left Set.biInter_subset_biInter_left
theorem biUnion_mono {s s' : Set α} {t t' : α → Set β} (hs : s' ⊆ s) (h : ∀ x ∈ s, t x ⊆ t' x) :
- (⋃ x ∈ s', t x) ⊆ ⋃ x ∈ s, t' x :=
+ ⋃ x ∈ s', t x ⊆ ⋃ x ∈ s, t' x :=
(biUnion_subset_biUnion_left hs).trans <| iUnion₂_mono h
#align set.bUnion_mono Set.biUnion_mono
theorem biInter_mono {s s' : Set α} {t t' : α → Set β} (hs : s ⊆ s') (h : ∀ x ∈ s, t x ⊆ t' x) :
- (⋂ x ∈ s', t x) ⊆ ⋂ x ∈ s, t' x :=
+ ⋂ x ∈ s', t x ⊆ ⋂ x ∈ s, t' x :=
(biInter_subset_biInter_left hs).trans <| iInter₂_mono h
#align set.bInter_mono Set.biInter_mono
theorem biUnion_eq_iUnion (s : Set α) (t : ∀ x ∈ s, Set β) :
- (⋃ x ∈ s, t x ‹_›) = ⋃ x : s, t x x.2 :=
+ ⋃ x ∈ s, t x ‹_› = ⋃ x : s, t x x.2 :=
iSup_subtype'
#align set.bUnion_eq_Union Set.biUnion_eq_iUnion
theorem biInter_eq_iInter (s : Set α) (t : ∀ x ∈ s, Set β) :
- (⋂ x ∈ s, t x ‹_›) = ⋂ x : s, t x x.2 :=
+ ⋂ x ∈ s, t x ‹_› = ⋂ x : s, t x x.2 :=
iInf_subtype'
#align set.bInter_eq_Inter Set.biInter_eq_iInter
theorem iUnion_subtype (p : α → Prop) (s : { x // p x } → Set β) :
- (⋃ x : { x // p x }, s x) = ⋃ (x) (hx : p x), s ⟨x, hx⟩ :=
+ ⋃ x : { x // p x }, s x = ⋃ (x) (hx : p x), s ⟨x, hx⟩ :=
iSup_subtype
#align set.Union_subtype Set.iUnion_subtype
theorem iInter_subtype (p : α → Prop) (s : { x // p x } → Set β) :
- (⋂ x : { x // p x }, s x) = ⋂ (x) (hx : p x), s ⟨x, hx⟩ :=
+ ⋂ x : { x // p x }, s x = ⋂ (x) (hx : p x), s ⟨x, hx⟩ :=
iInf_subtype
#align set.Inter_subtype Set.iInter_subtype
-theorem biInter_empty (u : α → Set β) : (⋂ x ∈ (∅ : Set α), u x) = univ :=
+theorem biInter_empty (u : α → Set β) : ⋂ x ∈ (∅ : Set α), u x = univ :=
iInf_emptyset
#align set.bInter_empty Set.biInter_empty
-theorem biInter_univ (u : α → Set β) : (⋂ x ∈ @univ α, u x) = ⋂ x, u x :=
+theorem biInter_univ (u : α → Set β) : ⋂ x ∈ @univ α, u x = ⋂ x, u x :=
iInf_univ
#align set.bInter_univ Set.biInter_univ
@[simp]
-theorem biUnion_self (s : Set α) : (⋃ x ∈ s, s) = s :=
+theorem biUnion_self (s : Set α) : ⋃ x ∈ s, s = s :=
Subset.antisymm (iUnion₂_subset fun _ _ => Subset.refl s) fun _ hx => mem_biUnion hx hx
#align set.bUnion_self Set.biUnion_self
@[simp]
-theorem iUnion_nonempty_self (s : Set α) : (⋃ _ : s.Nonempty, s) = s := by
+theorem iUnion_nonempty_self (s : Set α) : ⋃ _ : s.Nonempty, s = s := by
rw [iUnion_nonempty_index, biUnion_self]
#align set.Union_nonempty_self Set.iUnion_nonempty_self
-theorem biInter_singleton (a : α) (s : α → Set β) : (⋂ x ∈ ({a} : Set α), s x) = s a :=
+theorem biInter_singleton (a : α) (s : α → Set β) : ⋂ x ∈ ({a} : Set α), s x = s a :=
iInf_singleton
#align set.bInter_singleton Set.biInter_singleton
theorem biInter_union (s t : Set α) (u : α → Set β) :
- (⋂ x ∈ s ∪ t, u x) = (⋂ x ∈ s, u x) ∩ ⋂ x ∈ t, u x :=
+ ⋂ x ∈ s ∪ t, u x = (⋂ x ∈ s, u x) ∩ ⋂ x ∈ t, u x :=
iInf_union
#align set.bInter_union Set.biInter_union
theorem biInter_insert (a : α) (s : Set α) (t : α → Set β) :
- (⋂ x ∈ insert a s, t x) = t a ∩ ⋂ x ∈ s, t x := by simp
+ ⋂ x ∈ insert a s, t x = t a ∩ ⋂ x ∈ s, t x := by simp
#align set.bInter_insert Set.biInter_insert
-theorem biInter_pair (a b : α) (s : α → Set β) : (⋂ x ∈ ({a, b} : Set α), s x) = s a ∩ s b := by
+theorem biInter_pair (a b : α) (s : α → Set β) : ⋂ x ∈ ({a, b} : Set α), s x = s a ∩ s b := by
rw [biInter_insert, biInter_singleton]
#align set.bInter_pair Set.biInter_pair
theorem biInter_inter {ι α : Type _} {s : Set ι} (hs : s.Nonempty) (f : ι → Set α) (t : Set α) :
- (⋂ i ∈ s, f i ∩ t) = (⋂ i ∈ s, f i) ∩ t := by
+ ⋂ i ∈ s, f i ∩ t = (⋂ i ∈ s, f i) ∩ t := by
haveI : Nonempty s := hs.to_subtype
simp [biInter_eq_iInter, ← iInter_inter]
#align set.bInter_inter Set.biInter_inter
theorem inter_biInter {ι α : Type _} {s : Set ι} (hs : s.Nonempty) (f : ι → Set α) (t : Set α) :
- (⋂ i ∈ s, t ∩ f i) = t ∩ ⋂ i ∈ s, f i := by
+ ⋂ i ∈ s, t ∩ f i = t ∩ ⋂ i ∈ s, f i := by
rw [inter_comm, ← biInter_inter hs]
simp [inter_comm]
#align set.inter_bInter Set.inter_biInter
-theorem biUnion_empty (s : α → Set β) : (⋃ x ∈ (∅ : Set α), s x) = ∅ :=
+theorem biUnion_empty (s : α → Set β) : ⋃ x ∈ (∅ : Set α), s x = ∅ :=
iSup_emptyset
#align set.bUnion_empty Set.biUnion_empty
-theorem biUnion_univ (s : α → Set β) : (⋃ x ∈ @univ α, s x) = ⋃ x, s x :=
+theorem biUnion_univ (s : α → Set β) : ⋃ x ∈ @univ α, s x = ⋃ x, s x :=
iSup_univ
#align set.bUnion_univ Set.biUnion_univ
-theorem biUnion_singleton (a : α) (s : α → Set β) : (⋃ x ∈ ({a} : Set α), s x) = s a :=
+theorem biUnion_singleton (a : α) (s : α → Set β) : ⋃ x ∈ ({a} : Set α), s x = s a :=
iSup_singleton
#align set.bUnion_singleton Set.biUnion_singleton
@[simp]
-theorem biUnion_of_singleton (s : Set α) : (⋃ x ∈ s, {x}) = s :=
+theorem biUnion_of_singleton (s : Set α) : ⋃ x ∈ s, {x} = s :=
ext <| by simp
#align set.bUnion_of_singleton Set.biUnion_of_singleton
theorem biUnion_union (s t : Set α) (u : α → Set β) :
- (⋃ x ∈ s ∪ t, u x) = (⋃ x ∈ s, u x) ∪ ⋃ x ∈ t, u x :=
+ ⋃ x ∈ s ∪ t, u x = (⋃ x ∈ s, u x) ∪ ⋃ x ∈ t, u x :=
iSup_union
#align set.bUnion_union Set.biUnion_union
@[simp]
theorem iUnion_coe_set {α β : Type _} (s : Set α) (f : s → Set β) :
- (⋃ i, f i) = ⋃ i ∈ s, f ⟨i, ‹i ∈ s›⟩ :=
+ ⋃ i, f i = ⋃ i ∈ s, f ⟨i, ‹i ∈ s›⟩ :=
iUnion_subtype _ _
#align set.Union_coe_set Set.iUnion_coe_set
@[simp]
theorem iInter_coe_set {α β : Type _} (s : Set α) (f : s → Set β) :
- (⋂ i, f i) = ⋂ i ∈ s, f ⟨i, ‹i ∈ s›⟩ :=
+ ⋂ i, f i = ⋂ i ∈ s, f ⟨i, ‹i ∈ s›⟩ :=
iInter_subtype _ _
#align set.Inter_coe_set Set.iInter_coe_set
theorem biUnion_insert (a : α) (s : Set α) (t : α → Set β) :
- (⋃ x ∈ insert a s, t x) = t a ∪ ⋃ x ∈ s, t x := by simp
+ ⋃ x ∈ insert a s, t x = t a ∪ ⋃ x ∈ s, t x := by simp
#align set.bUnion_insert Set.biUnion_insert
-theorem biUnion_pair (a b : α) (s : α → Set β) : (⋃ x ∈ ({a, b} : Set α), s x) = s a ∪ s b :=
+theorem biUnion_pair (a b : α) (s : α → Set β) : ⋃ x ∈ ({a, b} : Set α), s x = s a ∪ s b :=
by simp
#align set.bUnion_pair Set.biUnion_pair
@@ -1183,13 +1183,13 @@ theorem sInter_range (f : ι → Set β) : ⋂₀ range f = ⋂ x, f x :=
rfl
#align set.sInter_range Set.sInter_range
-theorem iUnion_eq_univ_iff {f : ι → Set α} : (⋃ i, f i) = univ ↔ ∀ x, ∃ i, x ∈ f i := by
+theorem iUnion_eq_univ_iff {f : ι → Set α} : ⋃ i, f i = univ ↔ ∀ x, ∃ i, x ∈ f i := by
simp only [eq_univ_iff_forall, mem_iUnion]
#align set.Union_eq_univ_iff Set.iUnion_eq_univ_iff
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
theorem iUnion₂_eq_univ_iff {s : ∀ i, κ i → Set α} :
- (⋃ (i) (j), s i j) = univ ↔ ∀ a, ∃ i j, a ∈ s i j :=
+ ⋃ (i) (j), s i j = univ ↔ ∀ a, ∃ i j, a ∈ s i j :=
by simp only [iUnion_eq_univ_iff, mem_iUnion]
#align set.Union₂_eq_univ_iff Set.iUnion₂_eq_univ_iff
@@ -1198,14 +1198,14 @@ theorem sUnion_eq_univ_iff {c : Set (Set α)} : ⋃₀c = univ ↔ ∀ a, ∃ b
#align set.sUnion_eq_univ_iff Set.sUnion_eq_univ_iff
-- classical
-theorem iInter_eq_empty_iff {f : ι → Set α} : (⋂ i, f i) = ∅ ↔ ∀ x, ∃ i, x ∉ f i := by
+theorem iInter_eq_empty_iff {f : ι → Set α} : ⋂ i, f i = ∅ ↔ ∀ x, ∃ i, x ∉ f i := by
simp [Set.eq_empty_iff_forall_not_mem]
#align set.Inter_eq_empty_iff Set.iInter_eq_empty_iff
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-- classical
theorem iInter₂_eq_empty_iff {s : ∀ i, κ i → Set α} :
- (⋂ (i) (j), s i j) = ∅ ↔ ∀ a, ∃ i j, a ∉ s i j := by
+ ⋂ (i) (j), s i j = ∅ ↔ ∀ a, ∃ i j, a ∉ s i j := by
simp only [eq_empty_iff_forall_not_mem, mem_iInter, not_forall]
#align set.Inter₂_eq_empty_iff Set.iInter₂_eq_empty_iff
@@ -1265,16 +1265,16 @@ theorem range_sigma_eq_iUnion_range {γ : α → Type _} (f : Sigma γ → β) :
Set.ext <| by simp
#align set.range_sigma_eq_Union_range Set.range_sigma_eq_iUnion_range
-theorem iUnion_eq_range_sigma (s : α → Set β) : (⋃ i, s i) = range fun a : Σi, s i => a.2 := by
+theorem iUnion_eq_range_sigma (s : α → Set β) : ⋃ i, s i = range fun a : Σi, s i => a.2 := by
simp [Set.ext_iff]
#align set.Union_eq_range_sigma Set.iUnion_eq_range_sigma
-theorem iUnion_eq_range_psigma (s : ι → Set β) : (⋃ i, s i) = range fun a : Σ'i, s i => a.2 := by
+theorem iUnion_eq_range_psigma (s : ι → Set β) : ⋃ i, s i = range fun a : Σ'i, s i => a.2 := by
simp [Set.ext_iff]
#align set.Union_eq_range_psigma Set.iUnion_eq_range_psigma
theorem iUnion_image_preimage_sigma_mk_eq_self {ι : Type _} {σ : ι → Type _} (s : Set (Sigma σ)) :
- (⋃ i, Sigma.mk i '' (Sigma.mk i ⁻¹' s)) = s := by
+ ⋃ i, Sigma.mk i '' (Sigma.mk i ⁻¹' s) = s := by
ext x
simp only [mem_iUnion, mem_image, mem_preimage]
constructor
@@ -1294,12 +1294,12 @@ theorem sUnion_mono {s t : Set (Set α)} (h : s ⊆ t) : ⋃₀s ⊆ ⋃₀t :=
sUnion_subset fun _' ht' => subset_sUnion_of_mem <| h ht'
#align set.sUnion_mono Set.sUnion_mono
-theorem iUnion_subset_iUnion_const {s : Set α} (h : ι → ι₂) : (⋃ _ : ι, s) ⊆ ⋃ _ : ι₂, s :=
+theorem iUnion_subset_iUnion_const {s : Set α} (h : ι → ι₂) : ⋃ _ : ι, s ⊆ ⋃ _ : ι₂, s :=
@iSup_const_mono (Set α) ι ι₂ _ s h
#align set.Union_subset_Union_const Set.iUnion_subset_iUnion_const
@[simp]
-theorem iUnion_singleton_eq_range {α β : Type _} (f : α → β) : (⋃ x : α, {f x}) = range f := by
+theorem iUnion_singleton_eq_range {α β : Type _} (f : α → β) : ⋃ x : α, {f x} = range f := by
ext x
simp [@eq_comm _ x]
#align set.Union_singleton_eq_range Set.iUnion_singleton_eq_range
@@ -1307,7 +1307,7 @@ theorem iUnion_singleton_eq_range {α β : Type _} (f : α → β) : (⋃ x : α
theorem iUnion_of_singleton (α : Type _) : (⋃ x, {x} : Set α) = univ := by simp [Set.ext_iff]
#align set.Union_of_singleton Set.iUnion_of_singleton
-theorem iUnion_of_singleton_coe (s : Set α) : (⋃ i : s, ({(i : α)} : Set α)) = s := by simp
+theorem iUnion_of_singleton_coe (s : Set α) : ⋃ i : s, ({(i : α)} : Set α) = s := by simp
#align set.Union_of_singleton_coe Set.iUnion_of_singleton_coe
theorem sUnion_eq_biUnion {s : Set (Set α)} : ⋃₀s = ⋃ (i : Set α) (_ : i ∈ s), i := by
@@ -1327,12 +1327,12 @@ theorem sInter_eq_iInter {s : Set (Set α)} : ⋂₀ s = ⋂ i : s, i := by
#align set.sInter_eq_Inter Set.sInter_eq_iInter
@[simp]
-theorem iUnion_of_empty [IsEmpty ι] (s : ι → Set α) : (⋃ i, s i) = ∅ :=
+theorem iUnion_of_empty [IsEmpty ι] (s : ι → Set α) : ⋃ i, s i = ∅ :=
iSup_of_empty _
#align set.Union_of_empty Set.iUnion_of_empty
@[simp]
-theorem iInter_of_empty [IsEmpty ι] (s : ι → Set α) : (⋂ i, s i) = univ :=
+theorem iInter_of_empty [IsEmpty ι] (s : ι → Set α) : ⋂ i, s i = univ :=
iInf_of_empty _
#align set.Inter_of_empty Set.iInter_of_empty
@@ -1357,23 +1357,23 @@ theorem sUnion_inter_sUnion {s t : Set (Set α)} :
#align set.sUnion_inter_sUnion Set.sUnion_inter_sUnion
theorem biUnion_iUnion (s : ι → Set α) (t : α → Set β) :
- (⋃ x ∈ ⋃ i, s i, t x) = ⋃ (i) (x ∈ s i), t x := by simp [@iUnion_comm _ ι]
+ ⋃ x ∈ ⋃ i, s i, t x = ⋃ (i) (x ∈ s i), t x := by simp [@iUnion_comm _ ι]
#align set.bUnion_Union Set.biUnion_iUnion
theorem biInter_iUnion (s : ι → Set α) (t : α → Set β) :
- (⋂ x ∈ ⋃ i, s i, t x) = ⋂ (i) (x ∈ s i), t x := by simp [@iInter_comm _ ι]
+ ⋂ x ∈ ⋃ i, s i, t x = ⋂ (i) (x ∈ s i), t x := by simp [@iInter_comm _ ι]
#align set.bInter_Union Set.biInter_iUnion
-theorem sUnion_iUnion (s : ι → Set (Set α)) : (⋃₀⋃ i, s i) = ⋃ i, ⋃₀s i := by
+theorem sUnion_iUnion (s : ι → Set (Set α)) : ⋃₀⋃ i, s i = ⋃ i, ⋃₀s i := by
simp only [sUnion_eq_biUnion, biUnion_iUnion]
#align set.sUnion_Union Set.sUnion_iUnion
-theorem sInter_iUnion (s : ι → Set (Set α)) : (⋂₀ ⋃ i, s i) = ⋂ i, ⋂₀ s i := by
+theorem sInter_iUnion (s : ι → Set (Set α)) : ⋂₀ ⋃ i, s i = ⋂ i, ⋂₀ s i := by
simp only [sInter_eq_biInter, biInter_iUnion]
#align set.sInter_Union Set.sInter_iUnion
theorem iUnion_range_eq_sUnion {α β : Type _} (C : Set (Set α)) {f : ∀ s : C, β → (s : Type _)}
- (hf : ∀ s : C, Surjective (f s)) : (⋃ y : β, range fun s : C => (f s y).val) = ⋃₀C := by
+ (hf : ∀ s : C, Surjective (f s)) : ⋃ y : β, range (fun s : C => (f s y).val) = ⋃₀C := by
ext x; constructor
· rintro ⟨s, ⟨y, rfl⟩, ⟨s, hs⟩, rfl⟩
refine' ⟨_, hs, _⟩
@@ -1385,7 +1385,7 @@ theorem iUnion_range_eq_sUnion {α β : Type _} (C : Set (Set α)) {f : ∀ s :
#align set.Union_range_eq_sUnion Set.iUnion_range_eq_sUnion
theorem iUnion_range_eq_iUnion (C : ι → Set α) {f : ∀ x : ι, β → C x}
- (hf : ∀ x : ι, Surjective (f x)) : (⋃ y : β, range fun x : ι => (f x y).val) = ⋃ x, C x := by
+ (hf : ∀ x : ι, Surjective (f x)) : ⋃ y : β, range (fun x : ι => (f x y).val) = ⋃ x, C x := by
ext x; rw [mem_iUnion, mem_iUnion]; constructor
· rintro ⟨y, i, rfl⟩
exact ⟨i, (f i y).2⟩
@@ -1674,33 +1674,33 @@ theorem image_eq_iUnion (f : α → β) (s : Set α) : f '' s = ⋃ i ∈ s, {f
Set.ext fun b => by simp [@eq_comm β b]
#align set.image_eq_Union Set.image_eq_iUnion
-theorem biUnion_range {f : ι → α} {g : α → Set β} : (⋃ x ∈ range f, g x) = ⋃ y, g (f y) :=
+theorem biUnion_range {f : ι → α} {g : α → Set β} : ⋃ x ∈ range f, g x = ⋃ y, g (f y) :=
iSup_range
#align set.bUnion_range Set.biUnion_range
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (x y) -/
@[simp]
theorem iUnion_iUnion_eq' {f : ι → α} {g : α → Set β} :
- (⋃ (x) (y) (_ : f y = x), g x) = ⋃ y, g (f y) := by simpa using biUnion_range
+ ⋃ (x) (y) (_ : f y = x), g x = ⋃ y, g (f y) := by simpa using biUnion_range
#align set.Union_Union_eq' Set.iUnion_iUnion_eq'
-theorem biInter_range {f : ι → α} {g : α → Set β} : (⋂ x ∈ range f, g x) = ⋂ y, g (f y) :=
+theorem biInter_range {f : ι → α} {g : α → Set β} : ⋂ x ∈ range f, g x = ⋂ y, g (f y) :=
iInf_range
#align set.bInter_range Set.biInter_range
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (x y) -/
@[simp]
theorem iInter_iInter_eq' {f : ι → α} {g : α → Set β} :
- (⋂ (x) (y) (_ : f y = x), g x) = ⋂ y, g (f y) := by simpa using biInter_range
+ ⋂ (x) (y) (_ : f y = x), g x = ⋂ y, g (f y) := by simpa using biInter_range
#align set.Inter_Inter_eq' Set.iInter_iInter_eq'
variable {s : Set γ} {f : γ → α} {g : α → Set β}
-theorem biUnion_image : (⋃ x ∈ f '' s, g x) = ⋃ y ∈ s, g (f y) :=
+theorem biUnion_image : ⋃ x ∈ f '' s, g x = ⋃ y ∈ s, g (f y) :=
iSup_image
#align set.bUnion_image Set.biUnion_image
-theorem biInter_image : (⋂ x ∈ f '' s, g x) = ⋂ y ∈ s, g (f y) :=
+theorem biInter_image : ⋂ x ∈ f '' s, g x = ⋂ y ∈ s, g (f y) :=
iInf_image
#align set.bInter_image Set.biInter_image
@@ -1743,11 +1743,11 @@ theorem preimage_sInter {f : α → β} {s : Set (Set β)} : f ⁻¹' ⋂₀ s =
#align set.preimage_sInter Set.preimage_sInter
@[simp]
-theorem biUnion_preimage_singleton (f : α → β) (s : Set β) : (⋃ y ∈ s, f ⁻¹' {y}) = f ⁻¹' s := by
+theorem biUnion_preimage_singleton (f : α → β) (s : Set β) : ⋃ y ∈ s, f ⁻¹' {y} = f ⁻¹' s := by
rw [← preimage_iUnion₂, biUnion_of_singleton]
#align set.bUnion_preimage_singleton Set.biUnion_preimage_singleton
-theorem biUnion_range_preimage_singleton (f : α → β) : (⋃ y ∈ range f, f ⁻¹' {y}) = univ := by
+theorem biUnion_range_preimage_singleton (f : α → β) : ⋃ y ∈ range f, f ⁻¹' {y} = univ := by
rw [biUnion_preimage_singleton, preimage_range]
#align set.bUnion_range_preimage_singleton Set.biUnion_range_preimage_singleton
@@ -1801,7 +1801,7 @@ theorem sUnion_prod_const {C : Set (Set α)} {t : Set β} :
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem iUnion_prod {ι ι' α β} (s : ι → Set α) (t : ι' → Set β) :
- (⋃ x : ι × ι', s x.1 ×ˢ t x.2) = (⋃ i : ι, s i) ×ˢ ⋃ i : ι', t i := by
+ ⋃ x : ι × ι', s x.1 ×ˢ t x.2 = (⋃ i : ι, s i) ×ˢ ⋃ i : ι', t i := by
ext
simp
#align set.Union_prod Set.iUnion_prod
@@ -1809,7 +1809,7 @@ theorem iUnion_prod {ι ι' α β} (s : ι → Set α) (t : ι' → Set β) :
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem iUnion_prod_of_monotone [SemilatticeSup α] {s : α → Set β} {t : α → Set γ} (hs : Monotone s)
- (ht : Monotone t) : (⋃ x, s x ×ˢ t x) = (⋃ x, s x) ×ˢ ⋃ x, t x := by
+ (ht : Monotone t) : ⋃ x, s x ×ˢ t x = (⋃ x, s x) ×ˢ ⋃ x, t x := by
ext ⟨z, w⟩; simp only [mem_prod, mem_iUnion, exists_imp, and_imp, iff_def]; constructor
· intro x hz hw
exact ⟨⟨x, hz⟩, x, hw⟩
@@ -1859,12 +1859,12 @@ section Image2
variable (f : α → β → γ) {s : Set α} {t : Set β}
-theorem iUnion_image_left : (⋃ a ∈ s, f a '' t) = image2 f s t := by
+theorem iUnion_image_left : ⋃ a ∈ s, f a '' t = image2 f s t := by
ext y
constructor <;> simp only [mem_iUnion] <;> rintro ⟨a, ha, x, hx, ax⟩ <;> exact ⟨a, x, ha, hx, ax⟩
#align set.Union_image_left Set.iUnion_image_left
-theorem iUnion_image_right : (⋃ b ∈ t, (fun a => f a b) '' s) = image2 f s t := by
+theorem iUnion_image_right : ⋃ b ∈ t, (fun a => f a b) '' s = image2 f s t := by
ext y
constructor <;> simp only [mem_iUnion] <;> rintro ⟨a, b, c, d, e⟩
exact ⟨c, a, d, b, e⟩
@@ -2034,7 +2034,7 @@ theorem pi_diff_pi_subset (i : Set α) (s t : ∀ a, Set (π a)) :
#align set.pi_diff_pi_subset Set.pi_diff_pi_subset
theorem iUnion_univ_pi (t : ∀ i, ι → Set (π i)) :
- (⋃ x : α → ι, pi univ fun i => t i (x i)) = pi univ fun i => ⋃ j : ι, t i j := by
+ ⋃ x : α → ι, pi univ (fun i => t i (x i)) = pi univ fun i => ⋃ j : ι, t i j := by
ext
simp [Classical.skolem]
#align set.Union_univ_pi Set.iUnion_univ_pi
@@ -2047,11 +2047,11 @@ namespace Function
namespace Surjective
-theorem iUnion_comp {f : ι → ι₂} (hf : Surjective f) (g : ι₂ → Set α) : (⋃ x, g (f x)) = ⋃ y, g y :=
+theorem iUnion_comp {f : ι → ι₂} (hf : Surjective f) (g : ι₂ → Set α) : ⋃ x, g (f x) = ⋃ y, g y :=
hf.iSup_comp g
#align function.surjective.Union_comp Function.Surjective.iUnion_comp
-theorem iInter_comp {f : ι → ι₂} (hf : Surjective f) (g : ι₂ → Set α) : (⋂ x, g (f x)) = ⋂ y, g y :=
+theorem iInter_comp {f : ι → ι₂} (hf : Surjective f) (g : ι₂ → Set α) : ⋂ x, g (f x) = ⋂ y, g y :=
hf.iInf_comp g
#align function.surjective.Inter_comp Function.Surjective.iInter_comp
@@ -2194,21 +2194,21 @@ noncomputable def unionEqSigmaOfDisjoint {t : α → Set β} (h : ∀ i j, i ≠
(Equiv.ofBijective _ <| sigmaToiUnion_bijective t h).symm
#align set.Union_eq_sigma_of_disjoint Set.unionEqSigmaOfDisjoint
-theorem iUnion_ge_eq_iUnion_nat_add (u : ℕ → Set α) (n : ℕ) : (⋃ i ≥ n, u i) = ⋃ i, u (i + n) :=
+theorem iUnion_ge_eq_iUnion_nat_add (u : ℕ → Set α) (n : ℕ) : ⋃ i ≥ n, u i = ⋃ i, u (i + n) :=
iSup_ge_eq_iSup_nat_add u n
#align set.Union_ge_eq_Union_nat_add Set.iUnion_ge_eq_iUnion_nat_add
-theorem iInter_ge_eq_iInter_nat_add (u : ℕ → Set α) (n : ℕ) : (⋂ i ≥ n, u i) = ⋂ i, u (i + n) :=
+theorem iInter_ge_eq_iInter_nat_add (u : ℕ → Set α) (n : ℕ) : ⋂ i ≥ n, u i = ⋂ i, u (i + n) :=
iInf_ge_eq_iInf_nat_add u n
#align set.Inter_ge_eq_Inter_nat_add Set.iInter_ge_eq_iInter_nat_add
theorem _root_.Monotone.iUnion_nat_add {f : ℕ → Set α} (hf : Monotone f) (k : ℕ) :
- (⋃ n, f (n + k)) = ⋃ n, f n :=
+ ⋃ n, f (n + k) = ⋃ n, f n :=
hf.iSup_nat_add k
#align monotone.Union_nat_add Monotone.iUnion_nat_add
theorem _root_.Antitone.iInter_nat_add {f : ℕ → Set α} (hf : Antitone f) (k : ℕ) :
- (⋂ n, f (n + k)) = ⋂ n, f n :=
+ ⋂ n, f (n + k) = ⋂ n, f n :=
hf.iInf_nat_add k
#align antitone.Inter_nat_add Antitone.iInter_nat_add
@@ -2216,7 +2216,7 @@ theorem _root_.Antitone.iInter_nat_add {f : ℕ → Set α} (hf : Antitone f) (k
https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/complete_lattice.20and.20has_sup/near/316497982
-/
theorem iUnion_iInter_ge_nat_add (f : ℕ → Set α) (k : ℕ) :
- (⋃ n, ⋂ i ≥ n, f (i + k)) = ⋃ n, ⋂ i ≥ n, f i :=
+ ⋃ n, ⋂ i ≥ n, f (i + k) = ⋃ n, ⋂ i ≥ n, f i :=
iSup_iInf_ge_nat_add f k
#align set.Union_Inter_ge_nat_add Set.iUnion_iInter_ge_nat_add
@@ -2234,19 +2234,19 @@ open Set
variable [CompleteLattice β]
-theorem iSup_iUnion (s : ι → Set α) (f : α → β) : (⨆ a ∈ ⋃ i, s i, f a) = ⨆ (i) (a ∈ s i), f a := by
+theorem iSup_iUnion (s : ι → Set α) (f : α → β) : ⨆ a ∈ ⋃ i, s i, f a = ⨆ (i) (a ∈ s i), f a := by
rw [iSup_comm]
simp_rw [mem_iUnion, iSup_exists]
#align supr_Union iSup_iUnion
-theorem iInf_iUnion (s : ι → Set α) (f : α → β) : (⨅ a ∈ ⋃ i, s i, f a) = ⨅ (i) (a ∈ s i), f a :=
+theorem iInf_iUnion (s : ι → Set α) (f : α → β) : ⨅ a ∈ ⋃ i, s i, f a = ⨅ (i) (a ∈ s i), f a :=
@iSup_iUnion α βᵒᵈ _ _ s f
#align infi_Union iInf_iUnion
-theorem sSup_sUnion (s : Set (Set β)) : sSup (⋃₀s) = ⨆ t ∈ s, sSup t := by
+theorem sSup_sUnion (s : Set (Set β)) : sSup (⋃₀ s) = ⨆ t ∈ s, sSup t := by
simp only [sUnion_eq_biUnion, sSup_eq_iSup, iSup_iUnion]
#align Sup_sUnion sSup_sUnion
-theorem sInf_sUnion (s : Set (Set β)) : sInf (⋃₀s) = ⨅ t ∈ s, sInf t :=
+theorem sInf_sUnion (s : Set (Set β)) : sInf (⋃₀ s) = ⨅ t ∈ s, sInf t :=
@sSup_sUnion βᵒᵈ _ _
#align Inf_sUnion sInf_sUnion
@@ -487,34 +487,34 @@ lemma iInter_eq_const (hf : ∀ i, f i = s) : (⋂ i, f i) = s :=
end Nonempty
@[simp]
-theorem compl_iUnion (s : ι → Set β) : (⋃ i, s i)ᶜ = ⋂ i, s iᶜ :=
+theorem compl_iUnion (s : ι → Set β) : (⋃ i, s i)ᶜ = ⋂ i, (s i)ᶜ :=
compl_iSup
#align set.compl_Union Set.compl_iUnion
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem compl_iUnion₂ (s : ∀ i, κ i → Set α) : (⋃ (i) (j), s i j)ᶜ = ⋂ (i) (j), s i jᶜ := by
+theorem compl_iUnion₂ (s : ∀ i, κ i → Set α) : (⋃ (i) (j), s i j)ᶜ = ⋂ (i) (j), (s i j)ᶜ := by
simp_rw [compl_iUnion]
#align set.compl_Union₂ Set.compl_iUnion₂
@[simp]
-theorem compl_iInter (s : ι → Set β) : (⋂ i, s i)ᶜ = ⋃ i, s iᶜ :=
+theorem compl_iInter (s : ι → Set β) : (⋂ i, s i)ᶜ = ⋃ i, (s i)ᶜ :=
compl_iInf
#align set.compl_Inter Set.compl_iInter
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem compl_iInter₂ (s : ∀ i, κ i → Set α) : (⋂ (i) (j), s i j)ᶜ = ⋃ (i) (j), s i jᶜ := by
+theorem compl_iInter₂ (s : ∀ i, κ i → Set α) : (⋂ (i) (j), s i j)ᶜ = ⋃ (i) (j), (s i j)ᶜ := by
simp_rw [compl_iInter]
#align set.compl_Inter₂ Set.compl_iInter₂
-- classical -- complete_boolean_algebra
-theorem iUnion_eq_compl_iInter_compl (s : ι → Set β) : (⋃ i, s i) = (⋂ i, s iᶜ)ᶜ := by
+theorem iUnion_eq_compl_iInter_compl (s : ι → Set β) : (⋃ i, s i) = (⋂ i, (s i)ᶜ)ᶜ := by
simp only [compl_iInter, compl_compl]
#align set.Union_eq_compl_Inter_compl Set.iUnion_eq_compl_iInter_compl
-- classical -- complete_boolean_algebra
-theorem iInter_eq_compl_iUnion_compl (s : ι → Set β) : (⋂ i, s i) = (⋃ i, s iᶜ)ᶜ := by
+theorem iInter_eq_compl_iUnion_compl (s : ι → Set β) : (⋂ i, s i) = (⋃ i, (s i)ᶜ)ᶜ := by
simp only [compl_iUnion, compl_compl]
#align set.Inter_eq_compl_Union_compl Set.iInter_eq_compl_iUnion_compl
@@ -477,11 +477,11 @@ lemma iInter_const (s : Set β) : (⋂ _ : ι, s) = s := iInf_const
#align set.Inter_const Set.iInter_const
lemma iUnion_eq_const (hf : ∀ i, f i = s) : (⋃ i, f i) = s :=
-(iUnion_congr hf).trans $ iUnion_const _
+ (iUnion_congr hf).trans $ iUnion_const _
#align set.Union_eq_const Set.iUnion_eq_const
lemma iInter_eq_const (hf : ∀ i, f i = s) : (⋂ i, f i) = s :=
-(iInter_congr hf).trans $ iInter_const _
+ (iInter_congr hf).trans $ iInter_const _
#align set.Inter_eq_const Set.iInter_eq_const
end Nonempty
@@ -242,7 +242,7 @@ theorem iInter_plift_down (f : ι → Set α) : (⋂ i, f (PLift.down i)) = ⋂
iInf_plift_down _
#align set.Inter_plift_down Set.iInter_plift_down
-theorem iUnion_eq_if {p : Prop} [Decidable p] (s : Set α) : (⋃ _h : p, s) = if p then s else ∅ :=
+theorem iUnion_eq_if {p : Prop} [Decidable p] (s : Set α) : (⋃ _ : p, s) = if p then s else ∅ :=
iSup_eq_if _
#align set.Union_eq_if Set.iUnion_eq_if
@@ -251,7 +251,7 @@ theorem iUnion_eq_dif {p : Prop} [Decidable p] (s : p → Set α) :
iSup_eq_dif _
#align set.Union_eq_dif Set.iUnion_eq_dif
-theorem iInter_eq_if {p : Prop} [Decidable p] (s : Set α) : (⋂ _h : p, s) = if p then s else univ :=
+theorem iInter_eq_if {p : Prop} [Decidable p] (s : Set α) : (⋂ _ : p, s) = if p then s else univ :=
iInf_eq_if _
#align set.Inter_eq_if Set.iInter_eq_if
@@ -420,12 +420,12 @@ theorem iInter₂_mono' {s : ∀ i, κ i → Set α} {t : ∀ i', κ' i' → Set
#align set.Inter₂_mono' Set.iInter₂_mono'
theorem iUnion₂_subset_iUnion (κ : ι → Sort _) (s : ι → Set α) :
- (⋃ (i) (_j : κ i), s i) ⊆ ⋃ i, s i :=
+ (⋃ (i) (_ : κ i), s i) ⊆ ⋃ i, s i :=
iUnion_mono fun _ => iUnion_subset fun _ => Subset.rfl
#align set.Union₂_subset_Union Set.iUnion₂_subset_iUnion
theorem iInter_subset_iInter₂ (κ : ι → Sort _) (s : ι → Set α) :
- (⋂ i, s i) ⊆ ⋂ (i) (_j : κ i), s i :=
+ (⋂ i, s i) ⊆ ⋂ (i) (_ : κ i), s i :=
iInter_mono fun _ => subset_iInter fun _ => Subset.rfl
#align set.Inter_subset_Inter₂ Set.iInter_subset_iInter₂
@@ -471,9 +471,9 @@ lemma iInter₂_congr {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j = t i j
section Nonempty
variable [Nonempty ι] {f : ι → Set α} {s : Set α}
-lemma iUnion_const (s : Set β) : (⋃ _i : ι, s) = s := iSup_const
+lemma iUnion_const (s : Set β) : (⋃ _ : ι, s) = s := iSup_const
#align set.Union_const Set.iUnion_const
-lemma iInter_const (s : Set β) : (⋂ _i : ι, s) = s := iInf_const
+lemma iInter_const (s : Set β) : (⋂ _ : ι, s) = s := iInf_const
#align set.Inter_const Set.iInter_const
lemma iUnion_eq_const (hf : ∀ i, f i = s) : (⋃ i, f i) = s :=
@@ -629,7 +629,7 @@ theorem iUnion_dite (f : ∀ i, p i → Set α) (g : ∀ i, ¬p i → Set α) :
#align set.Union_dite Set.iUnion_dite
theorem iUnion_ite (f g : ι → Set α) :
- (⋃ i, if p i then f i else g i) = (⋃ (i) (_h : p i), f i) ∪ ⋃ (i) (_h : ¬p i), g i :=
+ (⋃ i, if p i then f i else g i) = (⋃ (i) (_ : p i), f i) ∪ ⋃ (i) (_ : ¬p i), g i :=
iUnion_dite _ _ _
#align set.Union_ite Set.iUnion_ite
@@ -639,7 +639,7 @@ theorem iInter_dite (f : ∀ i, p i → Set α) (g : ∀ i, ¬p i → Set α) :
#align set.Inter_dite Set.iInter_dite
theorem iInter_ite (f g : ι → Set α) :
- (⋂ i, if p i then f i else g i) = (⋂ (i) (_h : p i), f i) ∩ ⋂ (i) (_h : ¬p i), g i :=
+ (⋂ i, if p i then f i else g i) = (⋂ (i) (_ : p i), f i) ∩ ⋂ (i) (_ : ¬p i), g i :=
iInter_dite _ _ _
#align set.Inter_ite Set.iInter_ite
@@ -693,12 +693,12 @@ theorem iUnion_exists {p : ι → Prop} {f : Exists p → Set α} :
#align set.Union_exists Set.iUnion_exists
@[simp]
-theorem iUnion_empty : (⋃ _i : ι, ∅ : Set α) = ∅ :=
+theorem iUnion_empty : (⋃ _ : ι, ∅ : Set α) = ∅ :=
iSup_bot
#align set.Union_empty Set.iUnion_empty
@[simp]
-theorem iInter_univ : (⋂ _i : ι, univ : Set α) = univ :=
+theorem iInter_univ : (⋂ _ : ι, univ : Set α) = univ :=
iInf_top
#align set.Inter_univ Set.iInter_univ
@@ -927,7 +927,7 @@ theorem biUnion_self (s : Set α) : (⋃ x ∈ s, s) = s :=
#align set.bUnion_self Set.biUnion_self
@[simp]
-theorem iUnion_nonempty_self (s : Set α) : (⋃ _h : s.Nonempty, s) = s := by
+theorem iUnion_nonempty_self (s : Set α) : (⋃ _ : s.Nonempty, s) = s := by
rw [iUnion_nonempty_index, biUnion_self]
#align set.Union_nonempty_self Set.iUnion_nonempty_self
@@ -1294,7 +1294,7 @@ theorem sUnion_mono {s t : Set (Set α)} (h : s ⊆ t) : ⋃₀s ⊆ ⋃₀t :=
sUnion_subset fun _' ht' => subset_sUnion_of_mem <| h ht'
#align set.sUnion_mono Set.sUnion_mono
-theorem iUnion_subset_iUnion_const {s : Set α} (h : ι → ι₂) : (⋃ _i : ι, s) ⊆ ⋃ _j : ι₂, s :=
+theorem iUnion_subset_iUnion_const {s : Set α} (h : ι → ι₂) : (⋃ _ : ι, s) ⊆ ⋃ _ : ι₂, s :=
@iSup_const_mono (Set α) ι ι₂ _ s h
#align set.Union_subset_Union_const Set.iUnion_subset_iUnion_const
@@ -1310,11 +1310,11 @@ theorem iUnion_of_singleton (α : Type _) : (⋃ x, {x} : Set α) = univ := by s
theorem iUnion_of_singleton_coe (s : Set α) : (⋃ i : s, ({(i : α)} : Set α)) = s := by simp
#align set.Union_of_singleton_coe Set.iUnion_of_singleton_coe
-theorem sUnion_eq_biUnion {s : Set (Set α)} : ⋃₀s = ⋃ (i : Set α) (_h : i ∈ s), i := by
+theorem sUnion_eq_biUnion {s : Set (Set α)} : ⋃₀s = ⋃ (i : Set α) (_ : i ∈ s), i := by
rw [← sUnion_image, image_id']
#align set.sUnion_eq_bUnion Set.sUnion_eq_biUnion
-theorem sInter_eq_biInter {s : Set (Set α)} : ⋂₀ s = ⋂ (i : Set α) (_h : i ∈ s), i := by
+theorem sInter_eq_biInter {s : Set (Set α)} : ⋂₀ s = ⋂ (i : Set α) (_ : i ∈ s), i := by
rw [← sInter_image, image_id']
#align set.sInter_eq_bInter Set.sInter_eq_biInter
@@ -1681,7 +1681,7 @@ theorem biUnion_range {f : ι → α} {g : α → Set β} : (⋃ x ∈ range f,
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (x y) -/
@[simp]
theorem iUnion_iUnion_eq' {f : ι → α} {g : α → Set β} :
- (⋃ (x) (y) (_h : f y = x), g x) = ⋃ y, g (f y) := by simpa using biUnion_range
+ (⋃ (x) (y) (_ : f y = x), g x) = ⋃ y, g (f y) := by simpa using biUnion_range
#align set.Union_Union_eq' Set.iUnion_iUnion_eq'
theorem biInter_range {f : ι → α} {g : α → Set β} : (⋂ x ∈ range f, g x) = ⋂ y, g (f y) :=
@@ -1691,7 +1691,7 @@ theorem biInter_range {f : ι → α} {g : α → Set β} : (⋂ x ∈ range f,
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (x y) -/
@[simp]
theorem iInter_iInter_eq' {f : ι → α} {g : α → Set β} :
- (⋂ (x) (y) (_h : f y = x), g x) = ⋂ y, g (f y) := by simpa using biInter_range
+ (⋂ (x) (y) (_ : f y = x), g x) = ⋂ y, g (f y) := by simpa using biInter_range
#align set.Inter_Inter_eq' Set.iInter_iInter_eq'
variable {s : Set γ} {f : γ → α} {g : α → Set β}
This fixes a bunch of spacing bugs in tactics. Mathlib counterpart of:
@@ -110,10 +110,10 @@ def iInter (s : ι → Set β) : Set β :=
#align set.Inter Set.iInter
/-- Notation for `Set.iUnion`. Indexed union of a family of sets -/
-notation3"⋃ "(...)", "r:(scoped f => iUnion f) => r
+notation3 "⋃ "(...)", "r:(scoped f => iUnion f) => r
/-- Notation for `Set.iInter`. Indexed intersection of a family of sets -/
-notation3"⋂ "(...)", "r:(scoped f => iInter f) => r
+notation3 "⋂ "(...)", "r:(scoped f => iInter f) => r
@[simp]
theorem sSup_eq_sUnion (S : Set (Set α)) : sSup S = ⋃₀S :=
Fixes some doc comment typos added added in #1121.
Note that the sUnion
comment is correct is mathlib3:
https://github.com/leanprover-community/mathlib/blob/b76e9f654df09f8a832aeee712511fe5f3e57869/src/data/set/lattice.lean#L72-L74
@@ -81,12 +81,12 @@ def sInter (S : Set (Set α)) : Set α :=
/-- Notation for `Set.sInter` Intersection of a set of sets. -/
prefix:110 "⋂₀ " => sInter
-/-- Intersection of a set of sets. -/
+/-- Union of a set of sets. -/
def sUnion (S : Set (Set α)) : Set α :=
sSup S
#align set.sUnion Set.sUnion
-/-- Notation for Set.sUnion`. Union of a set of sets. -/
+/-- Notation for `Set.sUnion`. Union of a set of sets. -/
prefix:110 "⋃₀ " => sUnion
@[simp]
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>
@@ -20,11 +20,11 @@ for `Set α`, and some more set constructions.
## Main declarations
-* `Set.unionᵢ`: **i**ndexed **union**. Union of an indexed family of sets.
-* `Set.interᵢ`: **i**ndexed **inter**section. Intersection of an indexed family of sets.
-* `Set.interₛ`: **s**et **inter**section. Intersection of sets belonging to a set of sets.
-* `Set.unionₛ`: **s**et **union**. Union of sets belonging to a set of sets.
-* `Set.interₛ_eq_binterᵢ`, `Set.unionₛ_eq_binterᵢ`: Shows that `⋂₀ s = ⋂ x ∈ s, x` and
+* `Set.iUnion`: **i**ndexed **union**. Union of an indexed family of sets.
+* `Set.iInter`: **i**ndexed **inter**section. Intersection of an indexed family of sets.
+* `Set.sInter`: **s**et **inter**section. Intersection of sets belonging to a set of sets.
+* `Set.sUnion`: **s**et **union**. Union of sets belonging to a set of sets.
+* `Set.sInter_eq_biInter`, `Set.sUnion_eq_biInter`: Shows that `⋂₀ s = ⋂ x ∈ s, x` and
`⋃₀ s = ⋃ x ∈ s, x`.
* `Set.completeBooleanAlgebra`: `Set α` is a `CompleteBooleanAlgebra` with `≤ = ⊆`, `< = ⊂`,
`⊓ = ∩`, `⊔ = ∪`, `⨅ = ⋂`, `⨆ = ⋃` and `\` as the set difference. See `Set.BooleanAlgebra`.
@@ -32,27 +32,27 @@ for `Set α`, and some more set constructions.
`f ⁻¹ y ⊆ s`.
* `Set.seq`: Union of the image of a set under a **seq**uence of functions. `seq s t` is the union
of `f '' t` over all `f ∈ s`, where `t : Set α` and `s : Set (α → β)`.
-* `Set.unionᵢ_eq_sigma_of_disjoint`: Equivalence between `⋃ i, t i` and `Σ i, t i`, where `t` is an
+* `Set.iUnion_eq_sigma_of_disjoint`: Equivalence between `⋃ i, t i` and `Σ i, t i`, where `t` is an
indexed family of disjoint sets.
## Naming convention
In lemma names,
-* `⋃ i, s i` is called `unionᵢ`
-* `⋂ i, s i` is called `interᵢ`
-* `⋃ i j, s i j` is called `unionᵢ₂`. This is a `unionᵢ` inside a `unionᵢ`.
-* `⋂ i j, s i j` is called `interᵢ₂`. This is an `interᵢ` inside an `interᵢ`.
-* `⋃ i ∈ s, t i` is called `bunionᵢ` for "bounded `unionᵢ`". This is the special case of `unionᵢ₂`
+* `⋃ i, s i` is called `iUnion`
+* `⋂ i, s i` is called `iInter`
+* `⋃ i j, s i j` is called `iUnion₂`. This is a `iUnion` inside a `iUnion`.
+* `⋂ i j, s i j` is called `iInter₂`. This is an `iInter` inside an `iInter`.
+* `⋃ i ∈ s, t i` is called `biUnion` for "bounded `iUnion`". This is the special case of `iUnion₂`
where `j : i ∈ s`.
-* `⋂ i ∈ s, t i` is called `binterᵢ` for "bounded `interᵢ`". This is the special case of `interᵢ₂`
+* `⋂ i ∈ s, t i` is called `biInter` for "bounded `iInter`". This is the special case of `iInter₂`
where `j : i ∈ s`.
## Notation
-* `⋃`: `Set.unionᵢ`
-* `⋂`: `Set.interᵢ`
-* `⋃₀`: `Set.unionₛ`
-* `⋂₀`: `Set.interₛ`
+* `⋃`: `Set.iUnion`
+* `⋂`: `Set.iInter`
+* `⋃₀`: `Set.sUnion`
+* `⋂₀`: `Set.sInter`
-/
@@ -74,116 +74,116 @@ instance : SupSet (Set α) :=
⟨fun s => { a | ∃ t ∈ s, a ∈ t }⟩
/-- Intersection of a set of sets. -/
-def interₛ (S : Set (Set α)) : Set α :=
- infₛ S
-#align set.sInter Set.interₛ
+def sInter (S : Set (Set α)) : Set α :=
+ sInf S
+#align set.sInter Set.sInter
-/-- Notation for `Set.interₛ` Intersection of a set of sets. -/
-prefix:110 "⋂₀ " => interₛ
+/-- Notation for `Set.sInter` Intersection of a set of sets. -/
+prefix:110 "⋂₀ " => sInter
/-- Intersection of a set of sets. -/
-def unionₛ (S : Set (Set α)) : Set α :=
- supₛ S
-#align set.sUnion Set.unionₛ
+def sUnion (S : Set (Set α)) : Set α :=
+ sSup S
+#align set.sUnion Set.sUnion
-/-- Notation for Set.unionₛ`. Union of a set of sets. -/
-prefix:110 "⋃₀ " => unionₛ
+/-- Notation for Set.sUnion`. Union of a set of sets. -/
+prefix:110 "⋃₀ " => sUnion
@[simp]
-theorem mem_interₛ {x : α} {S : Set (Set α)} : x ∈ ⋂₀ S ↔ ∀ t ∈ S, x ∈ t :=
+theorem mem_sInter {x : α} {S : Set (Set α)} : x ∈ ⋂₀ S ↔ ∀ t ∈ S, x ∈ t :=
Iff.rfl
-#align set.mem_sInter Set.mem_interₛ
+#align set.mem_sInter Set.mem_sInter
@[simp]
-theorem mem_unionₛ {x : α} {S : Set (Set α)} : x ∈ ⋃₀S ↔ ∃ t ∈ S, x ∈ t :=
+theorem mem_sUnion {x : α} {S : Set (Set α)} : x ∈ ⋃₀S ↔ ∃ t ∈ S, x ∈ t :=
Iff.rfl
-#align set.mem_sUnion Set.mem_unionₛ
+#align set.mem_sUnion Set.mem_sUnion
/-- Indexed union of a family of sets -/
-def unionᵢ (s : ι → Set β) : Set β :=
- supᵢ s
-#align set.Union Set.unionᵢ
+def iUnion (s : ι → Set β) : Set β :=
+ iSup s
+#align set.Union Set.iUnion
/-- Indexed intersection of a family of sets -/
-def interᵢ (s : ι → Set β) : Set β :=
- infᵢ s
-#align set.Inter Set.interᵢ
+def iInter (s : ι → Set β) : Set β :=
+ iInf s
+#align set.Inter Set.iInter
-/-- Notation for `Set.unionᵢ`. Indexed union of a family of sets -/
-notation3"⋃ "(...)", "r:(scoped f => unionᵢ f) => r
+/-- Notation for `Set.iUnion`. Indexed union of a family of sets -/
+notation3"⋃ "(...)", "r:(scoped f => iUnion f) => r
-/-- Notation for `Set.interᵢ`. Indexed intersection of a family of sets -/
-notation3"⋂ "(...)", "r:(scoped f => interᵢ f) => r
+/-- Notation for `Set.iInter`. Indexed intersection of a family of sets -/
+notation3"⋂ "(...)", "r:(scoped f => iInter f) => r
@[simp]
-theorem supₛ_eq_unionₛ (S : Set (Set α)) : supₛ S = ⋃₀S :=
+theorem sSup_eq_sUnion (S : Set (Set α)) : sSup S = ⋃₀S :=
rfl
-#align set.Sup_eq_sUnion Set.supₛ_eq_unionₛ
+#align set.Sup_eq_sUnion Set.sSup_eq_sUnion
@[simp]
-theorem infₛ_eq_interₛ (S : Set (Set α)) : infₛ S = ⋂₀ S :=
+theorem sInf_eq_sInter (S : Set (Set α)) : sInf S = ⋂₀ S :=
rfl
-#align set.Inf_eq_sInter Set.infₛ_eq_interₛ
+#align set.Inf_eq_sInter Set.sInf_eq_sInter
@[simp]
-theorem supᵢ_eq_unionᵢ (s : ι → Set α) : supᵢ s = unionᵢ s :=
+theorem iSup_eq_iUnion (s : ι → Set α) : iSup s = iUnion s :=
rfl
-#align set.supr_eq_Union Set.supᵢ_eq_unionᵢ
+#align set.supr_eq_Union Set.iSup_eq_iUnion
@[simp]
-theorem infᵢ_eq_interᵢ (s : ι → Set α) : infᵢ s = interᵢ s :=
+theorem iInf_eq_iInter (s : ι → Set α) : iInf s = iInter s :=
rfl
-#align set.infi_eq_Inter Set.infᵢ_eq_interᵢ
+#align set.infi_eq_Inter Set.iInf_eq_iInter
@[simp]
-theorem mem_unionᵢ {x : α} {s : ι → Set α} : (x ∈ ⋃ i, s i) ↔ ∃ i, x ∈ s i :=
+theorem mem_iUnion {x : α} {s : ι → Set α} : (x ∈ ⋃ i, s i) ↔ ∃ i, x ∈ s i :=
⟨fun ⟨_, ⟨⟨a, (t_eq : s a = _)⟩, (h : x ∈ _)⟩⟩ => ⟨a, t_eq.symm ▸ h⟩, fun ⟨a, h⟩ =>
⟨s a, ⟨⟨a, rfl⟩, h⟩⟩⟩
-#align set.mem_Union Set.mem_unionᵢ
+#align set.mem_Union Set.mem_iUnion
@[simp]
-theorem mem_interᵢ {x : α} {s : ι → Set α} : (x ∈ ⋂ i, s i) ↔ ∀ i, x ∈ s i :=
+theorem mem_iInter {x : α} {s : ι → Set α} : (x ∈ ⋂ i, s i) ↔ ∀ i, x ∈ s i :=
⟨fun (h : ∀ a ∈ { a : Set α | ∃ i, s i = a }, x ∈ a) a => h (s a) ⟨a, rfl⟩,
fun h _ ⟨a, (eq : s a = _)⟩ => eq ▸ h a⟩
-#align set.mem_Inter Set.mem_interᵢ
+#align set.mem_Inter Set.mem_iInter
-theorem mem_unionᵢ₂ {x : γ} {s : ∀ i, κ i → Set γ} : (x ∈ ⋃ (i) (j), s i j) ↔ ∃ i j, x ∈ s i j := by
- simp_rw [mem_unionᵢ]
-#align set.mem_Union₂ Set.mem_unionᵢ₂
+theorem mem_iUnion₂ {x : γ} {s : ∀ i, κ i → Set γ} : (x ∈ ⋃ (i) (j), s i j) ↔ ∃ i j, x ∈ s i j := by
+ simp_rw [mem_iUnion]
+#align set.mem_Union₂ Set.mem_iUnion₂
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem mem_interᵢ₂ {x : γ} {s : ∀ i, κ i → Set γ} : (x ∈ ⋂ (i) (j), s i j) ↔ ∀ i j, x ∈ s i j := by
- simp_rw [mem_interᵢ]
-#align set.mem_Inter₂ Set.mem_interᵢ₂
+theorem mem_iInter₂ {x : γ} {s : ∀ i, κ i → Set γ} : (x ∈ ⋂ (i) (j), s i j) ↔ ∀ i j, x ∈ s i j := by
+ simp_rw [mem_iInter]
+#align set.mem_Inter₂ Set.mem_iInter₂
-theorem mem_unionᵢ_of_mem {s : ι → Set α} {a : α} (i : ι) (ha : a ∈ s i) : a ∈ ⋃ i, s i :=
- mem_unionᵢ.2 ⟨i, ha⟩
-#align set.mem_Union_of_mem Set.mem_unionᵢ_of_mem
+theorem mem_iUnion_of_mem {s : ι → Set α} {a : α} (i : ι) (ha : a ∈ s i) : a ∈ ⋃ i, s i :=
+ mem_iUnion.2 ⟨i, ha⟩
+#align set.mem_Union_of_mem Set.mem_iUnion_of_mem
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem mem_unionᵢ₂_of_mem {s : ∀ i, κ i → Set α} {a : α} {i : ι} (j : κ i) (ha : a ∈ s i j) :
+theorem mem_iUnion₂_of_mem {s : ∀ i, κ i → Set α} {a : α} {i : ι} (j : κ i) (ha : a ∈ s i j) :
a ∈ ⋃ (i) (j), s i j :=
- mem_unionᵢ₂.2 ⟨i, j, ha⟩
-#align set.mem_Union₂_of_mem Set.mem_unionᵢ₂_of_mem
+ mem_iUnion₂.2 ⟨i, j, ha⟩
+#align set.mem_Union₂_of_mem Set.mem_iUnion₂_of_mem
-theorem mem_interᵢ_of_mem {s : ι → Set α} {a : α} (h : ∀ i, a ∈ s i) : a ∈ ⋂ i, s i :=
- mem_interᵢ.2 h
-#align set.mem_Inter_of_mem Set.mem_interᵢ_of_mem
+theorem mem_iInter_of_mem {s : ι → Set α} {a : α} (h : ∀ i, a ∈ s i) : a ∈ ⋂ i, s i :=
+ mem_iInter.2 h
+#align set.mem_Inter_of_mem Set.mem_iInter_of_mem
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem mem_interᵢ₂_of_mem {s : ∀ i, κ i → Set α} {a : α} (h : ∀ i j, a ∈ s i j) :
+theorem mem_iInter₂_of_mem {s : ∀ i, κ i → Set α} {a : α} (h : ∀ i j, a ∈ s i j) :
a ∈ ⋂ (i) (j), s i j :=
- mem_interᵢ₂.2 h
-#align set.mem_Inter₂_of_mem Set.mem_interᵢ₂_of_mem
+ mem_iInter₂.2 h
+#align set.mem_Inter₂_of_mem Set.mem_iInter₂_of_mem
instance : CompleteBooleanAlgebra (Set α) :=
{ instBooleanAlgebraSet with
- le_supₛ := fun s t t_in a a_in => ⟨t, t_in, a_in⟩
- supₛ_le := fun s t h a ⟨t', ⟨t'_in, a_in⟩⟩ => h t' t'_in a_in
- le_infₛ := fun s t h a a_in t' t'_in => h t' t'_in a_in
- infₛ_le := fun s t t_in a h => h _ t_in
- infᵢ_sup_le_sup_infₛ := fun s S x => Iff.mp <| by simp [forall_or_left]
- inf_supₛ_le_supᵢ_inf := fun s S x => Iff.mp <| by simp [exists_and_left] }
+ le_sSup := fun s t t_in a a_in => ⟨t, t_in, a_in⟩
+ sSup_le := fun s t h a ⟨t', ⟨t'_in, a_in⟩⟩ => h t' t'_in a_in
+ le_sInf := fun s t h a a_in t' t'_in => h t' t'_in a_in
+ sInf_le := fun s t t_in a h => h _ t_in
+ iInf_sup_le_sup_sInf := fun s S x => Iff.mp <| by simp [forall_or_left]
+ inf_sSup_le_iSup_inf := fun s S x => Iff.mp <| by simp [exists_and_left] }
section GaloisConnection
@@ -215,55 +215,55 @@ instance : OrderTop (Set α) where
le_top := by simp
@[congr]
-theorem unionᵢ_congr_Prop {p q : Prop} {f₁ : p → Set α} {f₂ : q → Set α} (pq : p ↔ q)
- (f : ∀ x, f₁ (pq.mpr x) = f₂ x) : unionᵢ f₁ = unionᵢ f₂ :=
- supᵢ_congr_Prop pq f
-#align set.Union_congr_Prop Set.unionᵢ_congr_Prop
+theorem iUnion_congr_Prop {p q : Prop} {f₁ : p → Set α} {f₂ : q → Set α} (pq : p ↔ q)
+ (f : ∀ x, f₁ (pq.mpr x) = f₂ x) : iUnion f₁ = iUnion f₂ :=
+ iSup_congr_Prop pq f
+#align set.Union_congr_Prop Set.iUnion_congr_Prop
@[congr]
-theorem interᵢ_congr_Prop {p q : Prop} {f₁ : p → Set α} {f₂ : q → Set α} (pq : p ↔ q)
- (f : ∀ x, f₁ (pq.mpr x) = f₂ x) : interᵢ f₁ = interᵢ f₂ :=
- infᵢ_congr_Prop pq f
-#align set.Inter_congr_Prop Set.interᵢ_congr_Prop
+theorem iInter_congr_Prop {p q : Prop} {f₁ : p → Set α} {f₂ : q → Set α} (pq : p ↔ q)
+ (f : ∀ x, f₁ (pq.mpr x) = f₂ x) : iInter f₁ = iInter f₂ :=
+ iInf_congr_Prop pq f
+#align set.Inter_congr_Prop Set.iInter_congr_Prop
-theorem unionᵢ_plift_up (f : PLift ι → Set α) : (⋃ i, f (PLift.up i)) = ⋃ i, f i :=
- supᵢ_plift_up _
-#align set.Union_plift_up Set.unionᵢ_plift_up
+theorem iUnion_plift_up (f : PLift ι → Set α) : (⋃ i, f (PLift.up i)) = ⋃ i, f i :=
+ iSup_plift_up _
+#align set.Union_plift_up Set.iUnion_plift_up
-theorem unionᵢ_plift_down (f : ι → Set α) : (⋃ i, f (PLift.down i)) = ⋃ i, f i :=
- supᵢ_plift_down _
-#align set.Union_plift_down Set.unionᵢ_plift_down
+theorem iUnion_plift_down (f : ι → Set α) : (⋃ i, f (PLift.down i)) = ⋃ i, f i :=
+ iSup_plift_down _
+#align set.Union_plift_down Set.iUnion_plift_down
-theorem interᵢ_plift_up (f : PLift ι → Set α) : (⋂ i, f (PLift.up i)) = ⋂ i, f i :=
- infᵢ_plift_up _
-#align set.Inter_plift_up Set.interᵢ_plift_up
+theorem iInter_plift_up (f : PLift ι → Set α) : (⋂ i, f (PLift.up i)) = ⋂ i, f i :=
+ iInf_plift_up _
+#align set.Inter_plift_up Set.iInter_plift_up
-theorem interᵢ_plift_down (f : ι → Set α) : (⋂ i, f (PLift.down i)) = ⋂ i, f i :=
- infᵢ_plift_down _
-#align set.Inter_plift_down Set.interᵢ_plift_down
+theorem iInter_plift_down (f : ι → Set α) : (⋂ i, f (PLift.down i)) = ⋂ i, f i :=
+ iInf_plift_down _
+#align set.Inter_plift_down Set.iInter_plift_down
-theorem unionᵢ_eq_if {p : Prop} [Decidable p] (s : Set α) : (⋃ _h : p, s) = if p then s else ∅ :=
- supᵢ_eq_if _
-#align set.Union_eq_if Set.unionᵢ_eq_if
+theorem iUnion_eq_if {p : Prop} [Decidable p] (s : Set α) : (⋃ _h : p, s) = if p then s else ∅ :=
+ iSup_eq_if _
+#align set.Union_eq_if Set.iUnion_eq_if
-theorem unionᵢ_eq_dif {p : Prop} [Decidable p] (s : p → Set α) :
+theorem iUnion_eq_dif {p : Prop} [Decidable p] (s : p → Set α) :
(⋃ h : p, s h) = if h : p then s h else ∅ :=
- supᵢ_eq_dif _
-#align set.Union_eq_dif Set.unionᵢ_eq_dif
+ iSup_eq_dif _
+#align set.Union_eq_dif Set.iUnion_eq_dif
-theorem interᵢ_eq_if {p : Prop} [Decidable p] (s : Set α) : (⋂ _h : p, s) = if p then s else univ :=
- infᵢ_eq_if _
-#align set.Inter_eq_if Set.interᵢ_eq_if
+theorem iInter_eq_if {p : Prop} [Decidable p] (s : Set α) : (⋂ _h : p, s) = if p then s else univ :=
+ iInf_eq_if _
+#align set.Inter_eq_if Set.iInter_eq_if
-theorem infᵢ_eq_dif {p : Prop} [Decidable p] (s : p → Set α) :
+theorem iInf_eq_dif {p : Prop} [Decidable p] (s : p → Set α) :
(⋂ h : p, s h) = if h : p then s h else univ :=
- _root_.infᵢ_eq_dif _
-#align set.Infi_eq_dif Set.infᵢ_eq_dif
+ _root_.iInf_eq_dif _
+#align set.Infi_eq_dif Set.iInf_eq_dif
theorem exists_set_mem_of_union_eq_top {ι : Type _} (t : Set ι) (s : ι → Set β)
(w : (⋃ i ∈ t, s i) = ⊤) (x : β) : ∃ i ∈ t, x ∈ s i := by
have p : x ∈ ⊤ := Set.mem_univ x
- rw [← w, Set.mem_unionᵢ] at p
+ rw [← w, Set.mem_iUnion] at p
simpa using p
#align set.exists_set_mem_of_union_eq_top Set.exists_set_mem_of_union_eq_top
@@ -274,374 +274,374 @@ theorem nonempty_of_union_eq_top_of_nonempty {ι : Type _} (t : Set ι) (s : ι
#align set.nonempty_of_union_eq_top_of_nonempty Set.nonempty_of_union_eq_top_of_nonempty
theorem setOf_exists (p : ι → β → Prop) : { x | ∃ i, p i x } = ⋃ i, { x | p i x } :=
- ext fun _ => mem_unionᵢ.symm
+ ext fun _ => mem_iUnion.symm
#align set.set_of_exists Set.setOf_exists
theorem setOf_forall (p : ι → β → Prop) : { x | ∀ i, p i x } = ⋂ i, { x | p i x } :=
- ext fun _ => mem_interᵢ.symm
+ ext fun _ => mem_iInter.symm
#align set.set_of_forall Set.setOf_forall
-theorem unionᵢ_subset {s : ι → Set α} {t : Set α} (h : ∀ i, s i ⊆ t) : (⋃ i, s i) ⊆ t :=
- supᵢ_le h
-#align set.Union_subset Set.unionᵢ_subset
+theorem iUnion_subset {s : ι → Set α} {t : Set α} (h : ∀ i, s i ⊆ t) : (⋃ i, s i) ⊆ t :=
+ iSup_le h
+#align set.Union_subset Set.iUnion_subset
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem unionᵢ₂_subset {s : ∀ i, κ i → Set α} {t : Set α} (h : ∀ i j, s i j ⊆ t) :
+theorem iUnion₂_subset {s : ∀ i, κ i → Set α} {t : Set α} (h : ∀ i j, s i j ⊆ t) :
(⋃ (i) (j), s i j) ⊆ t :=
- unionᵢ_subset fun x => unionᵢ_subset (h x)
-#align set.Union₂_subset Set.unionᵢ₂_subset
+ iUnion_subset fun x => iUnion_subset (h x)
+#align set.Union₂_subset Set.iUnion₂_subset
-theorem subset_interᵢ {t : Set β} {s : ι → Set β} (h : ∀ i, t ⊆ s i) : t ⊆ ⋂ i, s i :=
- le_infᵢ h
-#align set.subset_Inter Set.subset_interᵢ
+theorem subset_iInter {t : Set β} {s : ι → Set β} (h : ∀ i, t ⊆ s i) : t ⊆ ⋂ i, s i :=
+ le_iInf h
+#align set.subset_Inter Set.subset_iInter
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem subset_interᵢ₂ {s : Set α} {t : ∀ i, κ i → Set α} (h : ∀ i j, s ⊆ t i j) :
+theorem subset_iInter₂ {s : Set α} {t : ∀ i, κ i → Set α} (h : ∀ i j, s ⊆ t i j) :
s ⊆ ⋂ (i) (j), t i j :=
- subset_interᵢ fun x => subset_interᵢ <| h x
-#align set.subset_Inter₂ Set.subset_interᵢ₂
+ subset_iInter fun x => subset_iInter <| h x
+#align set.subset_Inter₂ Set.subset_iInter₂
@[simp]
-theorem unionᵢ_subset_iff {s : ι → Set α} {t : Set α} : (⋃ i, s i) ⊆ t ↔ ∀ i, s i ⊆ t :=
- ⟨fun h _ => Subset.trans (le_supᵢ s _) h, unionᵢ_subset⟩
-#align set.Union_subset_iff Set.unionᵢ_subset_iff
+theorem iUnion_subset_iff {s : ι → Set α} {t : Set α} : (⋃ i, s i) ⊆ t ↔ ∀ i, s i ⊆ t :=
+ ⟨fun h _ => Subset.trans (le_iSup s _) h, iUnion_subset⟩
+#align set.Union_subset_iff Set.iUnion_subset_iff
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem unionᵢ₂_subset_iff {s : ∀ i, κ i → Set α} {t : Set α} :
- (⋃ (i) (j), s i j) ⊆ t ↔ ∀ i j, s i j ⊆ t := by simp_rw [unionᵢ_subset_iff]
-#align set.Union₂_subset_iff Set.unionᵢ₂_subset_iff
+theorem iUnion₂_subset_iff {s : ∀ i, κ i → Set α} {t : Set α} :
+ (⋃ (i) (j), s i j) ⊆ t ↔ ∀ i j, s i j ⊆ t := by simp_rw [iUnion_subset_iff]
+#align set.Union₂_subset_iff Set.iUnion₂_subset_iff
@[simp]
-theorem subset_interᵢ_iff {s : Set α} {t : ι → Set α} : (s ⊆ ⋂ i, t i) ↔ ∀ i, s ⊆ t i :=
- le_infᵢ_iff
-#align set.subset_Inter_iff Set.subset_interᵢ_iff
+theorem subset_iInter_iff {s : Set α} {t : ι → Set α} : (s ⊆ ⋂ i, t i) ↔ ∀ i, s ⊆ t i :=
+ le_iInf_iff
+#align set.subset_Inter_iff Set.subset_iInter_iff
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
--Porting note: removing `simp`. `simp` can prove it
-theorem subset_interᵢ₂_iff {s : Set α} {t : ∀ i, κ i → Set α} :
- (s ⊆ ⋂ (i) (j), t i j) ↔ ∀ i j, s ⊆ t i j := by simp_rw [subset_interᵢ_iff]
-#align set.subset_Inter₂_iff Set.subset_interᵢ₂_iff
+theorem subset_iInter₂_iff {s : Set α} {t : ∀ i, κ i → Set α} :
+ (s ⊆ ⋂ (i) (j), t i j) ↔ ∀ i j, s ⊆ t i j := by simp_rw [subset_iInter_iff]
+#align set.subset_Inter₂_iff Set.subset_iInter₂_iff
-theorem subset_unionᵢ : ∀ (s : ι → Set β) (i : ι), s i ⊆ ⋃ i, s i :=
- le_supᵢ
-#align set.subset_Union Set.subset_unionᵢ
+theorem subset_iUnion : ∀ (s : ι → Set β) (i : ι), s i ⊆ ⋃ i, s i :=
+ le_iSup
+#align set.subset_Union Set.subset_iUnion
-theorem interᵢ_subset : ∀ (s : ι → Set β) (i : ι), (⋂ i, s i) ⊆ s i :=
- infᵢ_le
-#align set.Inter_subset Set.interᵢ_subset
+theorem iInter_subset : ∀ (s : ι → Set β) (i : ι), (⋂ i, s i) ⊆ s i :=
+ iInf_le
+#align set.Inter_subset Set.iInter_subset
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem subset_unionᵢ₂ {s : ∀ i, κ i → Set α} (i : ι) (j : κ i) : s i j ⊆ ⋃ (i') (j'), s i' j' :=
- le_supᵢ₂ i j
-#align set.subset_Union₂ Set.subset_unionᵢ₂
+theorem subset_iUnion₂ {s : ∀ i, κ i → Set α} (i : ι) (j : κ i) : s i j ⊆ ⋃ (i') (j'), s i' j' :=
+ le_iSup₂ i j
+#align set.subset_Union₂ Set.subset_iUnion₂
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem interᵢ₂_subset {s : ∀ i, κ i → Set α} (i : ι) (j : κ i) : (⋂ (i) (j), s i j) ⊆ s i j :=
- infᵢ₂_le i j
-#align set.Inter₂_subset Set.interᵢ₂_subset
+theorem iInter₂_subset {s : ∀ i, κ i → Set α} (i : ι) (j : κ i) : (⋂ (i) (j), s i j) ⊆ s i j :=
+ iInf₂_le i j
+#align set.Inter₂_subset Set.iInter₂_subset
-/-- This rather trivial consequence of `subset_unionᵢ`is convenient with `apply`, and has `i`
+/-- This rather trivial consequence of `subset_iUnion`is convenient with `apply`, and has `i`
explicit for this purpose. -/
-theorem subset_unionᵢ_of_subset {s : Set α} {t : ι → Set α} (i : ι) (h : s ⊆ t i) : s ⊆ ⋃ i, t i :=
- le_supᵢ_of_le i h
-#align set.subset_Union_of_subset Set.subset_unionᵢ_of_subset
+theorem subset_iUnion_of_subset {s : Set α} {t : ι → Set α} (i : ι) (h : s ⊆ t i) : s ⊆ ⋃ i, t i :=
+ le_iSup_of_le i h
+#align set.subset_Union_of_subset Set.subset_iUnion_of_subset
-/-- This rather trivial consequence of `interᵢ_subset`is convenient with `apply`, and has `i`
+/-- This rather trivial consequence of `iInter_subset`is convenient with `apply`, and has `i`
explicit for this purpose. -/
-theorem interᵢ_subset_of_subset {s : ι → Set α} {t : Set α} (i : ι) (h : s i ⊆ t) :
+theorem iInter_subset_of_subset {s : ι → Set α} {t : Set α} (i : ι) (h : s i ⊆ t) :
(⋂ i, s i) ⊆ t :=
- infᵢ_le_of_le i h
-#align set.Inter_subset_of_subset Set.interᵢ_subset_of_subset
+ iInf_le_of_le i h
+#align set.Inter_subset_of_subset Set.iInter_subset_of_subset
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-/-- This rather trivial consequence of `subset_unionᵢ₂` is convenient with `apply`, and has `i` and
+/-- This rather trivial consequence of `subset_iUnion₂` is convenient with `apply`, and has `i` and
`j` explicit for this purpose. -/
-theorem subset_unionᵢ₂_of_subset {s : Set α} {t : ∀ i, κ i → Set α} (i : ι) (j : κ i)
+theorem subset_iUnion₂_of_subset {s : Set α} {t : ∀ i, κ i → Set α} (i : ι) (j : κ i)
(h : s ⊆ t i j) : s ⊆ ⋃ (i) (j), t i j :=
- le_supᵢ₂_of_le i j h
-#align set.subset_Union₂_of_subset Set.subset_unionᵢ₂_of_subset
+ le_iSup₂_of_le i j h
+#align set.subset_Union₂_of_subset Set.subset_iUnion₂_of_subset
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-/-- This rather trivial consequence of `interᵢ₂_subset` is convenient with `apply`, and has `i` and
+/-- This rather trivial consequence of `iInter₂_subset` is convenient with `apply`, and has `i` and
`j` explicit for this purpose. -/
-theorem interᵢ₂_subset_of_subset {s : ∀ i, κ i → Set α} {t : Set α} (i : ι) (j : κ i)
+theorem iInter₂_subset_of_subset {s : ∀ i, κ i → Set α} {t : Set α} (i : ι) (j : κ i)
(h : s i j ⊆ t) : (⋂ (i) (j), s i j) ⊆ t :=
- infᵢ₂_le_of_le i j h
-#align set.Inter₂_subset_of_subset Set.interᵢ₂_subset_of_subset
+ iInf₂_le_of_le i j h
+#align set.Inter₂_subset_of_subset Set.iInter₂_subset_of_subset
-theorem unionᵢ_mono {s t : ι → Set α} (h : ∀ i, s i ⊆ t i) : (⋃ i, s i) ⊆ ⋃ i, t i :=
- supᵢ_mono h
-#align set.Union_mono Set.unionᵢ_mono
+theorem iUnion_mono {s t : ι → Set α} (h : ∀ i, s i ⊆ t i) : (⋃ i, s i) ⊆ ⋃ i, t i :=
+ iSup_mono h
+#align set.Union_mono Set.iUnion_mono
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem unionᵢ₂_mono {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j ⊆ t i j) :
+theorem iUnion₂_mono {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j ⊆ t i j) :
(⋃ (i) (j), s i j) ⊆ ⋃ (i) (j), t i j :=
- supᵢ₂_mono h
-#align set.Union₂_mono Set.unionᵢ₂_mono
+ iSup₂_mono h
+#align set.Union₂_mono Set.iUnion₂_mono
-theorem interᵢ_mono {s t : ι → Set α} (h : ∀ i, s i ⊆ t i) : (⋂ i, s i) ⊆ ⋂ i, t i :=
- infᵢ_mono h
-#align set.Inter_mono Set.interᵢ_mono
+theorem iInter_mono {s t : ι → Set α} (h : ∀ i, s i ⊆ t i) : (⋂ i, s i) ⊆ ⋂ i, t i :=
+ iInf_mono h
+#align set.Inter_mono Set.iInter_mono
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem interᵢ₂_mono {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j ⊆ t i j) :
+theorem iInter₂_mono {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j ⊆ t i j) :
(⋂ (i) (j), s i j) ⊆ ⋂ (i) (j), t i j :=
- infᵢ₂_mono h
-#align set.Inter₂_mono Set.interᵢ₂_mono
+ iInf₂_mono h
+#align set.Inter₂_mono Set.iInter₂_mono
-theorem unionᵢ_mono' {s : ι → Set α} {t : ι₂ → Set α} (h : ∀ i, ∃ j, s i ⊆ t j) :
+theorem iUnion_mono' {s : ι → Set α} {t : ι₂ → Set α} (h : ∀ i, ∃ j, s i ⊆ t j) :
(⋃ i, s i) ⊆ ⋃ i, t i :=
- supᵢ_mono' h
-#align set.Union_mono' Set.unionᵢ_mono'
+ iSup_mono' h
+#align set.Union_mono' Set.iUnion_mono'
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i' j') -/
-theorem unionᵢ₂_mono' {s : ∀ i, κ i → Set α} {t : ∀ i', κ' i' → Set α}
+theorem iUnion₂_mono' {s : ∀ i, κ i → Set α} {t : ∀ i', κ' i' → Set α}
(h : ∀ i j, ∃ i' j', s i j ⊆ t i' j') : (⋃ (i) (j), s i j) ⊆ ⋃ (i') (j'), t i' j' :=
- supᵢ₂_mono' h
-#align set.Union₂_mono' Set.unionᵢ₂_mono'
+ iSup₂_mono' h
+#align set.Union₂_mono' Set.iUnion₂_mono'
-theorem interᵢ_mono' {s : ι → Set α} {t : ι' → Set α} (h : ∀ j, ∃ i, s i ⊆ t j) :
+theorem iInter_mono' {s : ι → Set α} {t : ι' → Set α} (h : ∀ j, ∃ i, s i ⊆ t j) :
(⋂ i, s i) ⊆ ⋂ j, t j :=
- Set.subset_interᵢ fun j =>
+ Set.subset_iInter fun j =>
let ⟨i, hi⟩ := h j
- interᵢ_subset_of_subset i hi
-#align set.Inter_mono' Set.interᵢ_mono'
+ iInter_subset_of_subset i hi
+#align set.Inter_mono' Set.iInter_mono'
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i' j') -/
-theorem interᵢ₂_mono' {s : ∀ i, κ i → Set α} {t : ∀ i', κ' i' → Set α}
+theorem iInter₂_mono' {s : ∀ i, κ i → Set α} {t : ∀ i', κ' i' → Set α}
(h : ∀ i' j', ∃ i j, s i j ⊆ t i' j') : (⋂ (i) (j), s i j) ⊆ ⋂ (i') (j'), t i' j' :=
- subset_interᵢ₂_iff.2 fun i' j' =>
+ subset_iInter₂_iff.2 fun i' j' =>
let ⟨_, _, hst⟩ := h i' j'
- (interᵢ₂_subset _ _).trans hst
-#align set.Inter₂_mono' Set.interᵢ₂_mono'
+ (iInter₂_subset _ _).trans hst
+#align set.Inter₂_mono' Set.iInter₂_mono'
-theorem unionᵢ₂_subset_unionᵢ (κ : ι → Sort _) (s : ι → Set α) :
+theorem iUnion₂_subset_iUnion (κ : ι → Sort _) (s : ι → Set α) :
(⋃ (i) (_j : κ i), s i) ⊆ ⋃ i, s i :=
- unionᵢ_mono fun _ => unionᵢ_subset fun _ => Subset.rfl
-#align set.Union₂_subset_Union Set.unionᵢ₂_subset_unionᵢ
+ iUnion_mono fun _ => iUnion_subset fun _ => Subset.rfl
+#align set.Union₂_subset_Union Set.iUnion₂_subset_iUnion
-theorem interᵢ_subset_interᵢ₂ (κ : ι → Sort _) (s : ι → Set α) :
+theorem iInter_subset_iInter₂ (κ : ι → Sort _) (s : ι → Set α) :
(⋂ i, s i) ⊆ ⋂ (i) (_j : κ i), s i :=
- interᵢ_mono fun _ => subset_interᵢ fun _ => Subset.rfl
-#align set.Inter_subset_Inter₂ Set.interᵢ_subset_interᵢ₂
+ iInter_mono fun _ => subset_iInter fun _ => Subset.rfl
+#align set.Inter_subset_Inter₂ Set.iInter_subset_iInter₂
-theorem unionᵢ_setOf (P : ι → α → Prop) : (⋃ i, { x : α | P i x }) = { x : α | ∃ i, P i x } := by
+theorem iUnion_setOf (P : ι → α → Prop) : (⋃ i, { x : α | P i x }) = { x : α | ∃ i, P i x } := by
ext
- exact mem_unionᵢ
-#align set.Union_set_of Set.unionᵢ_setOf
+ exact mem_iUnion
+#align set.Union_set_of Set.iUnion_setOf
-theorem interᵢ_setOf (P : ι → α → Prop) : (⋂ i, { x : α | P i x }) = { x : α | ∀ i, P i x } := by
+theorem iInter_setOf (P : ι → α → Prop) : (⋂ i, { x : α | P i x }) = { x : α | ∀ i, P i x } := by
ext
- exact mem_interᵢ
-#align set.Inter_set_of Set.interᵢ_setOf
+ exact mem_iInter
+#align set.Inter_set_of Set.iInter_setOf
-theorem unionᵢ_congr_of_surjective {f : ι → Set α} {g : ι₂ → Set α} (h : ι → ι₂) (h1 : Surjective h)
+theorem iUnion_congr_of_surjective {f : ι → Set α} {g : ι₂ → Set α} (h : ι → ι₂) (h1 : Surjective h)
(h2 : ∀ x, g (h x) = f x) : (⋃ x, f x) = ⋃ y, g y :=
- h1.supᵢ_congr h h2
-#align set.Union_congr_of_surjective Set.unionᵢ_congr_of_surjective
+ h1.iSup_congr h h2
+#align set.Union_congr_of_surjective Set.iUnion_congr_of_surjective
-theorem interᵢ_congr_of_surjective {f : ι → Set α} {g : ι₂ → Set α} (h : ι → ι₂) (h1 : Surjective h)
+theorem iInter_congr_of_surjective {f : ι → Set α} {g : ι₂ → Set α} (h : ι → ι₂) (h1 : Surjective h)
(h2 : ∀ x, g (h x) = f x) : (⋂ x, f x) = ⋂ y, g y :=
- h1.infᵢ_congr h h2
-#align set.Inter_congr_of_surjective Set.interᵢ_congr_of_surjective
+ h1.iInf_congr h h2
+#align set.Inter_congr_of_surjective Set.iInter_congr_of_surjective
-lemma unionᵢ_congr {s t : ι → Set α} (h : ∀ i, s i = t i) : (⋃ i, s i) = ⋃ i, t i := supᵢ_congr h
-#align set.Union_congr Set.unionᵢ_congr
-lemma interᵢ_congr {s t : ι → Set α} (h : ∀ i, s i = t i) : (⋂ i, s i) = ⋂ i, t i := infᵢ_congr h
-#align set.Inter_congr Set.interᵢ_congr
+lemma iUnion_congr {s t : ι → Set α} (h : ∀ i, s i = t i) : (⋃ i, s i) = ⋃ i, t i := iSup_congr h
+#align set.Union_congr Set.iUnion_congr
+lemma iInter_congr {s t : ι → Set α} (h : ∀ i, s i = t i) : (⋂ i, s i) = ⋂ i, t i := iInf_congr h
+#align set.Inter_congr Set.iInter_congr
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-lemma unionᵢ₂_congr {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j = t i j) :
+lemma iUnion₂_congr {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j = t i j) :
(⋃ (i) (j), s i j) = ⋃ (i) (j), t i j :=
- unionᵢ_congr fun i => unionᵢ_congr <| h i
-#align set.Union₂_congr Set.unionᵢ₂_congr
+ iUnion_congr fun i => iUnion_congr <| h i
+#align set.Union₂_congr Set.iUnion₂_congr
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-lemma interᵢ₂_congr {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j = t i j) :
+lemma iInter₂_congr {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j = t i j) :
(⋂ (i) (j), s i j) = ⋂ (i) (j), t i j :=
- interᵢ_congr fun i => interᵢ_congr <| h i
-#align set.Inter₂_congr Set.interᵢ₂_congr
+ iInter_congr fun i => iInter_congr <| h i
+#align set.Inter₂_congr Set.iInter₂_congr
section Nonempty
variable [Nonempty ι] {f : ι → Set α} {s : Set α}
-lemma unionᵢ_const (s : Set β) : (⋃ _i : ι, s) = s := supᵢ_const
-#align set.Union_const Set.unionᵢ_const
-lemma interᵢ_const (s : Set β) : (⋂ _i : ι, s) = s := infᵢ_const
-#align set.Inter_const Set.interᵢ_const
+lemma iUnion_const (s : Set β) : (⋃ _i : ι, s) = s := iSup_const
+#align set.Union_const Set.iUnion_const
+lemma iInter_const (s : Set β) : (⋂ _i : ι, s) = s := iInf_const
+#align set.Inter_const Set.iInter_const
-lemma unionᵢ_eq_const (hf : ∀ i, f i = s) : (⋃ i, f i) = s :=
-(unionᵢ_congr hf).trans $ unionᵢ_const _
-#align set.Union_eq_const Set.unionᵢ_eq_const
+lemma iUnion_eq_const (hf : ∀ i, f i = s) : (⋃ i, f i) = s :=
+(iUnion_congr hf).trans $ iUnion_const _
+#align set.Union_eq_const Set.iUnion_eq_const
-lemma interᵢ_eq_const (hf : ∀ i, f i = s) : (⋂ i, f i) = s :=
-(interᵢ_congr hf).trans $ interᵢ_const _
-#align set.Inter_eq_const Set.interᵢ_eq_const
+lemma iInter_eq_const (hf : ∀ i, f i = s) : (⋂ i, f i) = s :=
+(iInter_congr hf).trans $ iInter_const _
+#align set.Inter_eq_const Set.iInter_eq_const
end Nonempty
@[simp]
-theorem compl_unionᵢ (s : ι → Set β) : (⋃ i, s i)ᶜ = ⋂ i, s iᶜ :=
- compl_supᵢ
-#align set.compl_Union Set.compl_unionᵢ
+theorem compl_iUnion (s : ι → Set β) : (⋃ i, s i)ᶜ = ⋂ i, s iᶜ :=
+ compl_iSup
+#align set.compl_Union Set.compl_iUnion
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem compl_unionᵢ₂ (s : ∀ i, κ i → Set α) : (⋃ (i) (j), s i j)ᶜ = ⋂ (i) (j), s i jᶜ := by
- simp_rw [compl_unionᵢ]
-#align set.compl_Union₂ Set.compl_unionᵢ₂
+theorem compl_iUnion₂ (s : ∀ i, κ i → Set α) : (⋃ (i) (j), s i j)ᶜ = ⋂ (i) (j), s i jᶜ := by
+ simp_rw [compl_iUnion]
+#align set.compl_Union₂ Set.compl_iUnion₂
@[simp]
-theorem compl_interᵢ (s : ι → Set β) : (⋂ i, s i)ᶜ = ⋃ i, s iᶜ :=
- compl_infᵢ
-#align set.compl_Inter Set.compl_interᵢ
+theorem compl_iInter (s : ι → Set β) : (⋂ i, s i)ᶜ = ⋃ i, s iᶜ :=
+ compl_iInf
+#align set.compl_Inter Set.compl_iInter
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem compl_interᵢ₂ (s : ∀ i, κ i → Set α) : (⋂ (i) (j), s i j)ᶜ = ⋃ (i) (j), s i jᶜ := by
- simp_rw [compl_interᵢ]
-#align set.compl_Inter₂ Set.compl_interᵢ₂
+theorem compl_iInter₂ (s : ∀ i, κ i → Set α) : (⋂ (i) (j), s i j)ᶜ = ⋃ (i) (j), s i jᶜ := by
+ simp_rw [compl_iInter]
+#align set.compl_Inter₂ Set.compl_iInter₂
-- classical -- complete_boolean_algebra
-theorem unionᵢ_eq_compl_interᵢ_compl (s : ι → Set β) : (⋃ i, s i) = (⋂ i, s iᶜ)ᶜ := by
- simp only [compl_interᵢ, compl_compl]
-#align set.Union_eq_compl_Inter_compl Set.unionᵢ_eq_compl_interᵢ_compl
+theorem iUnion_eq_compl_iInter_compl (s : ι → Set β) : (⋃ i, s i) = (⋂ i, s iᶜ)ᶜ := by
+ simp only [compl_iInter, compl_compl]
+#align set.Union_eq_compl_Inter_compl Set.iUnion_eq_compl_iInter_compl
-- classical -- complete_boolean_algebra
-theorem interᵢ_eq_compl_unionᵢ_compl (s : ι → Set β) : (⋂ i, s i) = (⋃ i, s iᶜ)ᶜ := by
- simp only [compl_unionᵢ, compl_compl]
-#align set.Inter_eq_compl_Union_compl Set.interᵢ_eq_compl_unionᵢ_compl
+theorem iInter_eq_compl_iUnion_compl (s : ι → Set β) : (⋂ i, s i) = (⋃ i, s iᶜ)ᶜ := by
+ simp only [compl_iUnion, compl_compl]
+#align set.Inter_eq_compl_Union_compl Set.iInter_eq_compl_iUnion_compl
-theorem inter_unionᵢ (s : Set β) (t : ι → Set β) : (s ∩ ⋃ i, t i) = ⋃ i, s ∩ t i :=
- inf_supᵢ_eq _ _
-#align set.inter_Union Set.inter_unionᵢ
+theorem inter_iUnion (s : Set β) (t : ι → Set β) : (s ∩ ⋃ i, t i) = ⋃ i, s ∩ t i :=
+ inf_iSup_eq _ _
+#align set.inter_Union Set.inter_iUnion
-theorem unionᵢ_inter (s : Set β) (t : ι → Set β) : (⋃ i, t i) ∩ s = ⋃ i, t i ∩ s :=
- supᵢ_inf_eq _ _
-#align set.Union_inter Set.unionᵢ_inter
+theorem iUnion_inter (s : Set β) (t : ι → Set β) : (⋃ i, t i) ∩ s = ⋃ i, t i ∩ s :=
+ iSup_inf_eq _ _
+#align set.Union_inter Set.iUnion_inter
-theorem unionᵢ_union_distrib (s : ι → Set β) (t : ι → Set β) :
+theorem iUnion_union_distrib (s : ι → Set β) (t : ι → Set β) :
(⋃ i, s i ∪ t i) = (⋃ i, s i) ∪ ⋃ i, t i :=
- supᵢ_sup_eq
-#align set.Union_union_distrib Set.unionᵢ_union_distrib
+ iSup_sup_eq
+#align set.Union_union_distrib Set.iUnion_union_distrib
-theorem interᵢ_inter_distrib (s : ι → Set β) (t : ι → Set β) :
+theorem iInter_inter_distrib (s : ι → Set β) (t : ι → Set β) :
(⋂ i, s i ∩ t i) = (⋂ i, s i) ∩ ⋂ i, t i :=
- infᵢ_inf_eq
-#align set.Inter_inter_distrib Set.interᵢ_inter_distrib
+ iInf_inf_eq
+#align set.Inter_inter_distrib Set.iInter_inter_distrib
-theorem union_unionᵢ [Nonempty ι] (s : Set β) (t : ι → Set β) : (s ∪ ⋃ i, t i) = ⋃ i, s ∪ t i :=
- sup_supᵢ
-#align set.union_Union Set.union_unionᵢ
+theorem union_iUnion [Nonempty ι] (s : Set β) (t : ι → Set β) : (s ∪ ⋃ i, t i) = ⋃ i, s ∪ t i :=
+ sup_iSup
+#align set.union_Union Set.union_iUnion
-theorem unionᵢ_union [Nonempty ι] (s : Set β) (t : ι → Set β) : (⋃ i, t i) ∪ s = ⋃ i, t i ∪ s :=
- supᵢ_sup
-#align set.Union_union Set.unionᵢ_union
+theorem iUnion_union [Nonempty ι] (s : Set β) (t : ι → Set β) : (⋃ i, t i) ∪ s = ⋃ i, t i ∪ s :=
+ iSup_sup
+#align set.Union_union Set.iUnion_union
-theorem inter_interᵢ [Nonempty ι] (s : Set β) (t : ι → Set β) : (s ∩ ⋂ i, t i) = ⋂ i, s ∩ t i :=
- inf_infᵢ
-#align set.inter_Inter Set.inter_interᵢ
+theorem inter_iInter [Nonempty ι] (s : Set β) (t : ι → Set β) : (s ∩ ⋂ i, t i) = ⋂ i, s ∩ t i :=
+ inf_iInf
+#align set.inter_Inter Set.inter_iInter
-theorem interᵢ_inter [Nonempty ι] (s : Set β) (t : ι → Set β) : (⋂ i, t i) ∩ s = ⋂ i, t i ∩ s :=
- infᵢ_inf
-#align set.Inter_inter Set.interᵢ_inter
+theorem iInter_inter [Nonempty ι] (s : Set β) (t : ι → Set β) : (⋂ i, t i) ∩ s = ⋂ i, t i ∩ s :=
+ iInf_inf
+#align set.Inter_inter Set.iInter_inter
-- classical
-theorem union_interᵢ (s : Set β) (t : ι → Set β) : (s ∪ ⋂ i, t i) = ⋂ i, s ∪ t i :=
- sup_infᵢ_eq _ _
-#align set.union_Inter Set.union_interᵢ
+theorem union_iInter (s : Set β) (t : ι → Set β) : (s ∪ ⋂ i, t i) = ⋂ i, s ∪ t i :=
+ sup_iInf_eq _ _
+#align set.union_Inter Set.union_iInter
-theorem interᵢ_union (s : ι → Set β) (t : Set β) : (⋂ i, s i) ∪ t = ⋂ i, s i ∪ t :=
- infᵢ_sup_eq _ _
-#align set.Inter_union Set.interᵢ_union
+theorem iInter_union (s : ι → Set β) (t : Set β) : (⋂ i, s i) ∪ t = ⋂ i, s i ∪ t :=
+ iInf_sup_eq _ _
+#align set.Inter_union Set.iInter_union
-theorem unionᵢ_diff (s : Set β) (t : ι → Set β) : (⋃ i, t i) \ s = ⋃ i, t i \ s :=
- unionᵢ_inter _ _
-#align set.Union_diff Set.unionᵢ_diff
+theorem iUnion_diff (s : Set β) (t : ι → Set β) : (⋃ i, t i) \ s = ⋃ i, t i \ s :=
+ iUnion_inter _ _
+#align set.Union_diff Set.iUnion_diff
-theorem diff_unionᵢ [Nonempty ι] (s : Set β) (t : ι → Set β) : (s \ ⋃ i, t i) = ⋂ i, s \ t i := by
- rw [diff_eq, compl_unionᵢ, inter_interᵢ]; rfl
-#align set.diff_Union Set.diff_unionᵢ
+theorem diff_iUnion [Nonempty ι] (s : Set β) (t : ι → Set β) : (s \ ⋃ i, t i) = ⋂ i, s \ t i := by
+ rw [diff_eq, compl_iUnion, inter_iInter]; rfl
+#align set.diff_Union Set.diff_iUnion
-theorem diff_interᵢ (s : Set β) (t : ι → Set β) : (s \ ⋂ i, t i) = ⋃ i, s \ t i := by
- rw [diff_eq, compl_interᵢ, inter_unionᵢ]; rfl
-#align set.diff_Inter Set.diff_interᵢ
+theorem diff_iInter (s : Set β) (t : ι → Set β) : (s \ ⋂ i, t i) = ⋃ i, s \ t i := by
+ rw [diff_eq, compl_iInter, inter_iUnion]; rfl
+#align set.diff_Inter Set.diff_iInter
-theorem directed_on_unionᵢ {r} {f : ι → Set α} (hd : Directed (· ⊆ ·) f)
+theorem directed_on_iUnion {r} {f : ι → Set α} (hd : Directed (· ⊆ ·) f)
(h : ∀ x, DirectedOn r (f x)) : DirectedOn r (⋃ x, f x) := by
- simp only [DirectedOn, exists_prop, mem_unionᵢ, exists_imp]
+ simp only [DirectedOn, exists_prop, mem_iUnion, exists_imp]
exact fun a₁ b₁ fb₁ a₂ b₂ fb₂ =>
let ⟨z, zb₁, zb₂⟩ := hd b₁ b₂
let ⟨x, xf, xa₁, xa₂⟩ := h z a₁ (zb₁ fb₁) a₂ (zb₂ fb₂)
⟨x, ⟨z, xf⟩, xa₁, xa₂⟩
-#align set.directed_on_Union Set.directed_on_unionᵢ
+#align set.directed_on_Union Set.directed_on_iUnion
-theorem unionᵢ_inter_subset {ι α} {s t : ι → Set α} : (⋃ i, s i ∩ t i) ⊆ (⋃ i, s i) ∩ ⋃ i, t i :=
- le_supᵢ_inf_supᵢ s t
-#align set.Union_inter_subset Set.unionᵢ_inter_subset
+theorem iUnion_inter_subset {ι α} {s t : ι → Set α} : (⋃ i, s i ∩ t i) ⊆ (⋃ i, s i) ∩ ⋃ i, t i :=
+ le_iSup_inf_iSup s t
+#align set.Union_inter_subset Set.iUnion_inter_subset
-theorem unionᵢ_inter_of_monotone {ι α} [Preorder ι] [IsDirected ι (· ≤ ·)] {s t : ι → Set α}
+theorem iUnion_inter_of_monotone {ι α} [Preorder ι] [IsDirected ι (· ≤ ·)] {s t : ι → Set α}
(hs : Monotone s) (ht : Monotone t) : (⋃ i, s i ∩ t i) = (⋃ i, s i) ∩ ⋃ i, t i :=
- supᵢ_inf_of_monotone hs ht
-#align set.Union_inter_of_monotone Set.unionᵢ_inter_of_monotone
+ iSup_inf_of_monotone hs ht
+#align set.Union_inter_of_monotone Set.iUnion_inter_of_monotone
-theorem unionᵢ_inter_of_antitone {ι α} [Preorder ι] [IsDirected ι (swap (· ≤ ·))] {s t : ι → Set α}
+theorem iUnion_inter_of_antitone {ι α} [Preorder ι] [IsDirected ι (swap (· ≤ ·))] {s t : ι → Set α}
(hs : Antitone s) (ht : Antitone t) : (⋃ i, s i ∩ t i) = (⋃ i, s i) ∩ ⋃ i, t i :=
- supᵢ_inf_of_antitone hs ht
-#align set.Union_inter_of_antitone Set.unionᵢ_inter_of_antitone
+ iSup_inf_of_antitone hs ht
+#align set.Union_inter_of_antitone Set.iUnion_inter_of_antitone
-theorem interᵢ_union_of_monotone {ι α} [Preorder ι] [IsDirected ι (swap (· ≤ ·))] {s t : ι → Set α}
+theorem iInter_union_of_monotone {ι α} [Preorder ι] [IsDirected ι (swap (· ≤ ·))] {s t : ι → Set α}
(hs : Monotone s) (ht : Monotone t) : (⋂ i, s i ∪ t i) = (⋂ i, s i) ∪ ⋂ i, t i :=
- infᵢ_sup_of_monotone hs ht
-#align set.Inter_union_of_monotone Set.interᵢ_union_of_monotone
+ iInf_sup_of_monotone hs ht
+#align set.Inter_union_of_monotone Set.iInter_union_of_monotone
-theorem interᵢ_union_of_antitone {ι α} [Preorder ι] [IsDirected ι (· ≤ ·)] {s t : ι → Set α}
+theorem iInter_union_of_antitone {ι α} [Preorder ι] [IsDirected ι (· ≤ ·)] {s t : ι → Set α}
(hs : Antitone s) (ht : Antitone t) : (⋂ i, s i ∪ t i) = (⋂ i, s i) ∪ ⋂ i, t i :=
- infᵢ_sup_of_antitone hs ht
-#align set.Inter_union_of_antitone Set.interᵢ_union_of_antitone
+ iInf_sup_of_antitone hs ht
+#align set.Inter_union_of_antitone Set.iInter_union_of_antitone
-/-- An equality version of this lemma is `unionᵢ_interᵢ_of_monotone` in `Data.Set.Finite`. -/
-theorem unionᵢ_interᵢ_subset {s : ι → ι' → Set α} : (⋃ j, ⋂ i, s i j) ⊆ ⋂ i, ⋃ j, s i j :=
- supᵢ_infᵢ_le_infᵢ_supᵢ (flip s)
-#align set.Union_Inter_subset Set.unionᵢ_interᵢ_subset
+/-- An equality version of this lemma is `iUnion_iInter_of_monotone` in `Data.Set.Finite`. -/
+theorem iUnion_iInter_subset {s : ι → ι' → Set α} : (⋃ j, ⋂ i, s i j) ⊆ ⋂ i, ⋃ j, s i j :=
+ iSup_iInf_le_iInf_iSup (flip s)
+#align set.Union_Inter_subset Set.iUnion_iInter_subset
-theorem unionᵢ_option {ι} (s : Option ι → Set α) : (⋃ o, s o) = s none ∪ ⋃ i, s (some i) :=
- supᵢ_option s
-#align set.Union_option Set.unionᵢ_option
+theorem iUnion_option {ι} (s : Option ι → Set α) : (⋃ o, s o) = s none ∪ ⋃ i, s (some i) :=
+ iSup_option s
+#align set.Union_option Set.iUnion_option
-theorem interᵢ_option {ι} (s : Option ι → Set α) : (⋂ o, s o) = s none ∩ ⋂ i, s (some i) :=
- infᵢ_option s
-#align set.Inter_option Set.interᵢ_option
+theorem iInter_option {ι} (s : Option ι → Set α) : (⋂ o, s o) = s none ∩ ⋂ i, s (some i) :=
+ iInf_option s
+#align set.Inter_option Set.iInter_option
section
variable (p : ι → Prop) [DecidablePred p]
-theorem unionᵢ_dite (f : ∀ i, p i → Set α) (g : ∀ i, ¬p i → Set α) :
+theorem iUnion_dite (f : ∀ i, p i → Set α) (g : ∀ i, ¬p i → Set α) :
(⋃ i, if h : p i then f i h else g i h) = (⋃ (i) (h : p i), f i h) ∪ ⋃ (i) (h : ¬p i), g i h :=
- supᵢ_dite _ _ _
-#align set.Union_dite Set.unionᵢ_dite
+ iSup_dite _ _ _
+#align set.Union_dite Set.iUnion_dite
-theorem unionᵢ_ite (f g : ι → Set α) :
+theorem iUnion_ite (f g : ι → Set α) :
(⋃ i, if p i then f i else g i) = (⋃ (i) (_h : p i), f i) ∪ ⋃ (i) (_h : ¬p i), g i :=
- unionᵢ_dite _ _ _
-#align set.Union_ite Set.unionᵢ_ite
+ iUnion_dite _ _ _
+#align set.Union_ite Set.iUnion_ite
-theorem interᵢ_dite (f : ∀ i, p i → Set α) (g : ∀ i, ¬p i → Set α) :
+theorem iInter_dite (f : ∀ i, p i → Set α) (g : ∀ i, ¬p i → Set α) :
(⋂ i, if h : p i then f i h else g i h) = (⋂ (i) (h : p i), f i h) ∩ ⋂ (i) (h : ¬p i), g i h :=
- infᵢ_dite _ _ _
-#align set.Inter_dite Set.interᵢ_dite
+ iInf_dite _ _ _
+#align set.Inter_dite Set.iInter_dite
-theorem interᵢ_ite (f g : ι → Set α) :
+theorem iInter_ite (f g : ι → Set α) :
(⋂ i, if p i then f i else g i) = (⋂ (i) (_h : p i), f i) ∩ ⋂ (i) (_h : ¬p i), g i :=
- interᵢ_dite _ _ _
-#align set.Inter_ite Set.interᵢ_ite
+ iInter_dite _ _ _
+#align set.Inter_ite Set.iInter_ite
end
@@ -650,9 +650,9 @@ theorem image_projection_prod {ι : Type _} {α : ι → Type _} {v : ∀ i : ι
((fun x : ∀ i : ι, α i => x i) '' ⋂ k, (fun x : ∀ j : ι, α j => x k) ⁻¹' v k) = v i := by
classical
apply Subset.antisymm
- · simp [interᵢ_subset]
+ · simp [iInter_subset]
· intro y y_in
- simp only [mem_image, mem_interᵢ, mem_preimage]
+ simp only [mem_image, mem_iInter, mem_preimage]
rcases hv with ⟨z, hz⟩
refine' ⟨Function.update z i y, _, update_same i y z⟩
rw [@forall_update_iff ι α _ z i y fun i t => t ∈ v i]
@@ -662,717 +662,717 @@ theorem image_projection_prod {ι : Type _} {α : ι → Type _} {v : ∀ i : ι
/-! ### Unions and intersections indexed by `Prop` -/
-theorem interᵢ_false {s : False → Set α} : interᵢ s = univ :=
- infᵢ_false
-#align set.Inter_false Set.interᵢ_false
+theorem iInter_false {s : False → Set α} : iInter s = univ :=
+ iInf_false
+#align set.Inter_false Set.iInter_false
-theorem unionᵢ_false {s : False → Set α} : unionᵢ s = ∅ :=
- supᵢ_false
-#align set.Union_false Set.unionᵢ_false
+theorem iUnion_false {s : False → Set α} : iUnion s = ∅ :=
+ iSup_false
+#align set.Union_false Set.iUnion_false
@[simp]
-theorem interᵢ_true {s : True → Set α} : interᵢ s = s trivial :=
- infᵢ_true
-#align set.Inter_true Set.interᵢ_true
+theorem iInter_true {s : True → Set α} : iInter s = s trivial :=
+ iInf_true
+#align set.Inter_true Set.iInter_true
@[simp]
-theorem unionᵢ_true {s : True → Set α} : unionᵢ s = s trivial :=
- supᵢ_true
-#align set.Union_true Set.unionᵢ_true
+theorem iUnion_true {s : True → Set α} : iUnion s = s trivial :=
+ iSup_true
+#align set.Union_true Set.iUnion_true
@[simp]
-theorem interᵢ_exists {p : ι → Prop} {f : Exists p → Set α} :
+theorem iInter_exists {p : ι → Prop} {f : Exists p → Set α} :
(⋂ x, f x) = ⋂ (i) (h : p i), f ⟨i, h⟩ :=
- infᵢ_exists
-#align set.Inter_exists Set.interᵢ_exists
+ iInf_exists
+#align set.Inter_exists Set.iInter_exists
@[simp]
-theorem unionᵢ_exists {p : ι → Prop} {f : Exists p → Set α} :
+theorem iUnion_exists {p : ι → Prop} {f : Exists p → Set α} :
(⋃ x, f x) = ⋃ (i) (h : p i), f ⟨i, h⟩ :=
- supᵢ_exists
-#align set.Union_exists Set.unionᵢ_exists
+ iSup_exists
+#align set.Union_exists Set.iUnion_exists
@[simp]
-theorem unionᵢ_empty : (⋃ _i : ι, ∅ : Set α) = ∅ :=
- supᵢ_bot
-#align set.Union_empty Set.unionᵢ_empty
+theorem iUnion_empty : (⋃ _i : ι, ∅ : Set α) = ∅ :=
+ iSup_bot
+#align set.Union_empty Set.iUnion_empty
@[simp]
-theorem interᵢ_univ : (⋂ _i : ι, univ : Set α) = univ :=
- infᵢ_top
-#align set.Inter_univ Set.interᵢ_univ
+theorem iInter_univ : (⋂ _i : ι, univ : Set α) = univ :=
+ iInf_top
+#align set.Inter_univ Set.iInter_univ
section
variable {s : ι → Set α}
@[simp]
-theorem unionᵢ_eq_empty : (⋃ i, s i) = ∅ ↔ ∀ i, s i = ∅ :=
- supᵢ_eq_bot
-#align set.Union_eq_empty Set.unionᵢ_eq_empty
+theorem iUnion_eq_empty : (⋃ i, s i) = ∅ ↔ ∀ i, s i = ∅ :=
+ iSup_eq_bot
+#align set.Union_eq_empty Set.iUnion_eq_empty
@[simp]
-theorem interᵢ_eq_univ : (⋂ i, s i) = univ ↔ ∀ i, s i = univ :=
- infᵢ_eq_top
-#align set.Inter_eq_univ Set.interᵢ_eq_univ
+theorem iInter_eq_univ : (⋂ i, s i) = univ ↔ ∀ i, s i = univ :=
+ iInf_eq_top
+#align set.Inter_eq_univ Set.iInter_eq_univ
@[simp]
-theorem nonempty_unionᵢ : (⋃ i, s i).Nonempty ↔ ∃ i, (s i).Nonempty := by
+theorem nonempty_iUnion : (⋃ i, s i).Nonempty ↔ ∃ i, (s i).Nonempty := by
simp [nonempty_iff_ne_empty]
-#align set.nonempty_Union Set.nonempty_unionᵢ
+#align set.nonempty_Union Set.nonempty_iUnion
--Porting note: removing `simp`. `simp` can prove it
-theorem nonempty_bunionᵢ {t : Set α} {s : α → Set β} :
+theorem nonempty_biUnion {t : Set α} {s : α → Set β} :
(⋃ i ∈ t, s i).Nonempty ↔ ∃ i ∈ t, (s i).Nonempty := by simp
-#align set.nonempty_bUnion Set.nonempty_bunionᵢ
+#align set.nonempty_bUnion Set.nonempty_biUnion
-theorem unionᵢ_nonempty_index (s : Set α) (t : s.Nonempty → Set β) :
+theorem iUnion_nonempty_index (s : Set α) (t : s.Nonempty → Set β) :
(⋃ h, t h) = ⋃ x ∈ s, t ⟨x, ‹_›⟩ :=
- supᵢ_exists
-#align set.Union_nonempty_index Set.unionᵢ_nonempty_index
+ iSup_exists
+#align set.Union_nonempty_index Set.iUnion_nonempty_index
end
@[simp]
-theorem interᵢ_interᵢ_eq_left {b : β} {s : ∀ x : β, x = b → Set α} :
+theorem iInter_iInter_eq_left {b : β} {s : ∀ x : β, x = b → Set α} :
(⋂ (x) (h : x = b), s x h) = s b rfl :=
- infᵢ_infᵢ_eq_left
-#align set.Inter_Inter_eq_left Set.interᵢ_interᵢ_eq_left
+ iInf_iInf_eq_left
+#align set.Inter_Inter_eq_left Set.iInter_iInter_eq_left
@[simp]
-theorem interᵢ_interᵢ_eq_right {b : β} {s : ∀ x : β, b = x → Set α} :
+theorem iInter_iInter_eq_right {b : β} {s : ∀ x : β, b = x → Set α} :
(⋂ (x) (h : b = x), s x h) = s b rfl :=
- infᵢ_infᵢ_eq_right
-#align set.Inter_Inter_eq_right Set.interᵢ_interᵢ_eq_right
+ iInf_iInf_eq_right
+#align set.Inter_Inter_eq_right Set.iInter_iInter_eq_right
@[simp]
-theorem unionᵢ_unionᵢ_eq_left {b : β} {s : ∀ x : β, x = b → Set α} :
+theorem iUnion_iUnion_eq_left {b : β} {s : ∀ x : β, x = b → Set α} :
(⋃ (x) (h : x = b), s x h) = s b rfl :=
- supᵢ_supᵢ_eq_left
-#align set.Union_Union_eq_left Set.unionᵢ_unionᵢ_eq_left
+ iSup_iSup_eq_left
+#align set.Union_Union_eq_left Set.iUnion_iUnion_eq_left
@[simp]
-theorem unionᵢ_unionᵢ_eq_right {b : β} {s : ∀ x : β, b = x → Set α} :
+theorem iUnion_iUnion_eq_right {b : β} {s : ∀ x : β, b = x → Set α} :
(⋃ (x) (h : b = x), s x h) = s b rfl :=
- supᵢ_supᵢ_eq_right
-#align set.Union_Union_eq_right Set.unionᵢ_unionᵢ_eq_right
+ iSup_iSup_eq_right
+#align set.Union_Union_eq_right Set.iUnion_iUnion_eq_right
-theorem interᵢ_or {p q : Prop} (s : p ∨ q → Set α) :
+theorem iInter_or {p q : Prop} (s : p ∨ q → Set α) :
(⋂ h, s h) = (⋂ h : p, s (Or.inl h)) ∩ ⋂ h : q, s (Or.inr h) :=
- infᵢ_or
-#align set.Inter_or Set.interᵢ_or
+ iInf_or
+#align set.Inter_or Set.iInter_or
-theorem unionᵢ_or {p q : Prop} (s : p ∨ q → Set α) :
+theorem iUnion_or {p q : Prop} (s : p ∨ q → Set α) :
(⋃ h, s h) = (⋃ i, s (Or.inl i)) ∪ ⋃ j, s (Or.inr j) :=
- supᵢ_or
-#align set.Union_or Set.unionᵢ_or
+ iSup_or
+#align set.Union_or Set.iUnion_or
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (hp hq) -/
-theorem unionᵢ_and {p q : Prop} (s : p ∧ q → Set α) : (⋃ h, s h) = ⋃ (hp) (hq), s ⟨hp, hq⟩ :=
- supᵢ_and
-#align set.Union_and Set.unionᵢ_and
+theorem iUnion_and {p q : Prop} (s : p ∧ q → Set α) : (⋃ h, s h) = ⋃ (hp) (hq), s ⟨hp, hq⟩ :=
+ iSup_and
+#align set.Union_and Set.iUnion_and
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (hp hq) -/
-theorem interᵢ_and {p q : Prop} (s : p ∧ q → Set α) : (⋂ h, s h) = ⋂ (hp) (hq), s ⟨hp, hq⟩ :=
- infᵢ_and
-#align set.Inter_and Set.interᵢ_and
+theorem iInter_and {p q : Prop} (s : p ∧ q → Set α) : (⋂ h, s h) = ⋂ (hp) (hq), s ⟨hp, hq⟩ :=
+ iInf_and
+#align set.Inter_and Set.iInter_and
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i i') -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i' i) -/
-theorem unionᵢ_comm (s : ι → ι' → Set α) : (⋃ (i) (i'), s i i') = ⋃ (i') (i), s i i' :=
- supᵢ_comm
-#align set.Union_comm Set.unionᵢ_comm
+theorem iUnion_comm (s : ι → ι' → Set α) : (⋃ (i) (i'), s i i') = ⋃ (i') (i), s i i' :=
+ iSup_comm
+#align set.Union_comm Set.iUnion_comm
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i i') -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i' i) -/
-theorem interᵢ_comm (s : ι → ι' → Set α) : (⋂ (i) (i'), s i i') = ⋂ (i') (i), s i i' :=
- infᵢ_comm
-#align set.Inter_comm Set.interᵢ_comm
+theorem iInter_comm (s : ι → ι' → Set α) : (⋂ (i) (i'), s i i') = ⋂ (i') (i), s i i' :=
+ iInf_comm
+#align set.Inter_comm Set.iInter_comm
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i₁ j₁ i₂ j₂) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i₂ j₂ i₁ j₁) -/
-theorem unionᵢ₂_comm (s : ∀ i₁, κ₁ i₁ → ∀ i₂, κ₂ i₂ → Set α) :
+theorem iUnion₂_comm (s : ∀ i₁, κ₁ i₁ → ∀ i₂, κ₂ i₂ → Set α) :
(⋃ (i₁) (j₁) (i₂) (j₂), s i₁ j₁ i₂ j₂) = ⋃ (i₂) (j₂) (i₁) (j₁), s i₁ j₁ i₂ j₂ :=
- supᵢ₂_comm _
-#align set.Union₂_comm Set.unionᵢ₂_comm
+ iSup₂_comm _
+#align set.Union₂_comm Set.iUnion₂_comm
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i₁ j₁ i₂ j₂) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i₂ j₂ i₁ j₁) -/
-theorem interᵢ₂_comm (s : ∀ i₁, κ₁ i₁ → ∀ i₂, κ₂ i₂ → Set α) :
+theorem iInter₂_comm (s : ∀ i₁, κ₁ i₁ → ∀ i₂, κ₂ i₂ → Set α) :
(⋂ (i₁) (j₁) (i₂) (j₂), s i₁ j₁ i₂ j₂) = ⋂ (i₂) (j₂) (i₁) (j₁), s i₁ j₁ i₂ j₂ :=
- infᵢ₂_comm _
-#align set.Inter₂_comm Set.interᵢ₂_comm
+ iInf₂_comm _
+#align set.Inter₂_comm Set.iInter₂_comm
@[simp]
-theorem bunionᵢ_and (p : ι → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p x ∧ q x y → Set α) :
+theorem biUnion_and (p : ι → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p x ∧ q x y → Set α) :
(⋃ (x : ι) (y : ι') (h : p x ∧ q x y), s x y h) =
⋃ (x : ι) (hx : p x) (y : ι') (hy : q x y), s x y ⟨hx, hy⟩ :=
- by simp only [unionᵢ_and, @unionᵢ_comm _ ι']
-#align set.bUnion_and Set.bunionᵢ_and
+ by simp only [iUnion_and, @iUnion_comm _ ι']
+#align set.bUnion_and Set.biUnion_and
@[simp]
-theorem bunionᵢ_and' (p : ι' → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p y ∧ q x y → Set α) :
+theorem biUnion_and' (p : ι' → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p y ∧ q x y → Set α) :
(⋃ (x : ι) (y : ι') (h : p y ∧ q x y), s x y h) =
⋃ (y : ι') (hy : p y) (x : ι) (hx : q x y), s x y ⟨hy, hx⟩ :=
- by simp only [unionᵢ_and, @unionᵢ_comm _ ι]
-#align set.bUnion_and' Set.bunionᵢ_and'
+ by simp only [iUnion_and, @iUnion_comm _ ι]
+#align set.bUnion_and' Set.biUnion_and'
@[simp]
-theorem binterᵢ_and (p : ι → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p x ∧ q x y → Set α) :
+theorem biInter_and (p : ι → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p x ∧ q x y → Set α) :
(⋂ (x : ι) (y : ι') (h : p x ∧ q x y), s x y h) =
⋂ (x : ι) (hx : p x) (y : ι') (hy : q x y), s x y ⟨hx, hy⟩ :=
- by simp only [interᵢ_and, @interᵢ_comm _ ι']
-#align set.bInter_and Set.binterᵢ_and
+ by simp only [iInter_and, @iInter_comm _ ι']
+#align set.bInter_and Set.biInter_and
@[simp]
-theorem binterᵢ_and' (p : ι' → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p y ∧ q x y → Set α) :
+theorem biInter_and' (p : ι' → Prop) (q : ι → ι' → Prop) (s : ∀ x y, p y ∧ q x y → Set α) :
(⋂ (x : ι) (y : ι') (h : p y ∧ q x y), s x y h) =
⋂ (y : ι') (hy : p y) (x : ι) (hx : q x y), s x y ⟨hy, hx⟩ :=
- by simp only [interᵢ_and, @interᵢ_comm _ ι]
-#align set.bInter_and' Set.binterᵢ_and'
+ by simp only [iInter_and, @iInter_comm _ ι]
+#align set.bInter_and' Set.biInter_and'
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (x h) -/
@[simp]
-theorem unionᵢ_unionᵢ_eq_or_left {b : β} {p : β → Prop} {s : ∀ x : β, x = b ∨ p x → Set α} :
+theorem iUnion_iUnion_eq_or_left {b : β} {p : β → Prop} {s : ∀ x : β, x = b ∨ p x → Set α} :
(⋃ (x) (h), s x h) = s b (Or.inl rfl) ∪ ⋃ (x) (h : p x), s x (Or.inr h) := by
- simp only [unionᵢ_or, unionᵢ_union_distrib, unionᵢ_unionᵢ_eq_left]
-#align set.Union_Union_eq_or_left Set.unionᵢ_unionᵢ_eq_or_left
+ simp only [iUnion_or, iUnion_union_distrib, iUnion_iUnion_eq_left]
+#align set.Union_Union_eq_or_left Set.iUnion_iUnion_eq_or_left
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (x h) -/
@[simp]
-theorem interᵢ_interᵢ_eq_or_left {b : β} {p : β → Prop} {s : ∀ x : β, x = b ∨ p x → Set α} :
+theorem iInter_iInter_eq_or_left {b : β} {p : β → Prop} {s : ∀ x : β, x = b ∨ p x → Set α} :
(⋂ (x) (h), s x h) = s b (Or.inl rfl) ∩ ⋂ (x) (h : p x), s x (Or.inr h) := by
- simp only [interᵢ_or, interᵢ_inter_distrib, interᵢ_interᵢ_eq_left]
-#align set.Inter_Inter_eq_or_left Set.interᵢ_interᵢ_eq_or_left
+ simp only [iInter_or, iInter_inter_distrib, iInter_iInter_eq_left]
+#align set.Inter_Inter_eq_or_left Set.iInter_iInter_eq_or_left
/-! ### Bounded unions and intersections -/
-/-- A specialization of `mem_unionᵢ₂`. -/
-theorem mem_bunionᵢ {s : Set α} {t : α → Set β} {x : α} {y : β} (xs : x ∈ s) (ytx : y ∈ t x) :
+/-- A specialization of `mem_iUnion₂`. -/
+theorem mem_biUnion {s : Set α} {t : α → Set β} {x : α} {y : β} (xs : x ∈ s) (ytx : y ∈ t x) :
y ∈ ⋃ x ∈ s, t x :=
- mem_unionᵢ₂_of_mem xs ytx
-#align set.mem_bUnion Set.mem_bunionᵢ
+ mem_iUnion₂_of_mem xs ytx
+#align set.mem_bUnion Set.mem_biUnion
-/-- A specialization of `mem_interᵢ₂`. -/
-theorem mem_binterᵢ {s : Set α} {t : α → Set β} {y : β} (h : ∀ x ∈ s, y ∈ t x) :
+/-- A specialization of `mem_iInter₂`. -/
+theorem mem_biInter {s : Set α} {t : α → Set β} {y : β} (h : ∀ x ∈ s, y ∈ t x) :
y ∈ ⋂ x ∈ s, t x :=
- mem_interᵢ₂_of_mem h
-#align set.mem_bInter Set.mem_binterᵢ
+ mem_iInter₂_of_mem h
+#align set.mem_bInter Set.mem_biInter
-/-- A specialization of `subset_unionᵢ₂`. -/
-theorem subset_bunionᵢ_of_mem {s : Set α} {u : α → Set β} {x : α} (xs : x ∈ s) :
+/-- A specialization of `subset_iUnion₂`. -/
+theorem subset_biUnion_of_mem {s : Set α} {u : α → Set β} {x : α} (xs : x ∈ s) :
u x ⊆ ⋃ x ∈ s, u x :=
---Porting note: Why is this not just `subset_unionᵢ₂ x xs`?
- @subset_unionᵢ₂ β α (. ∈ s) (fun i _ => u i) x xs
-#align set.subset_bUnion_of_mem Set.subset_bunionᵢ_of_mem
+--Porting note: Why is this not just `subset_iUnion₂ x xs`?
+ @subset_iUnion₂ β α (. ∈ s) (fun i _ => u i) x xs
+#align set.subset_bUnion_of_mem Set.subset_biUnion_of_mem
-/-- A specialization of `interᵢ₂_subset`. -/
-theorem binterᵢ_subset_of_mem {s : Set α} {t : α → Set β} {x : α} (xs : x ∈ s) :
+/-- A specialization of `iInter₂_subset`. -/
+theorem biInter_subset_of_mem {s : Set α} {t : α → Set β} {x : α} (xs : x ∈ s) :
(⋂ x ∈ s, t x) ⊆ t x :=
- interᵢ₂_subset x xs
-#align set.bInter_subset_of_mem Set.binterᵢ_subset_of_mem
+ iInter₂_subset x xs
+#align set.bInter_subset_of_mem Set.biInter_subset_of_mem
-theorem bunionᵢ_subset_bunionᵢ_left {s s' : Set α} {t : α → Set β} (h : s ⊆ s') :
+theorem biUnion_subset_biUnion_left {s s' : Set α} {t : α → Set β} (h : s ⊆ s') :
(⋃ x ∈ s, t x) ⊆ ⋃ x ∈ s', t x :=
- unionᵢ₂_subset fun _ hx => subset_bunionᵢ_of_mem <| h hx
-#align set.bUnion_subset_bUnion_left Set.bunionᵢ_subset_bunionᵢ_left
+ iUnion₂_subset fun _ hx => subset_biUnion_of_mem <| h hx
+#align set.bUnion_subset_bUnion_left Set.biUnion_subset_biUnion_left
-theorem binterᵢ_subset_binterᵢ_left {s s' : Set α} {t : α → Set β} (h : s' ⊆ s) :
+theorem biInter_subset_biInter_left {s s' : Set α} {t : α → Set β} (h : s' ⊆ s) :
(⋂ x ∈ s, t x) ⊆ ⋂ x ∈ s', t x :=
- subset_interᵢ₂ fun _ hx => binterᵢ_subset_of_mem <| h hx
-#align set.bInter_subset_bInter_left Set.binterᵢ_subset_binterᵢ_left
+ subset_iInter₂ fun _ hx => biInter_subset_of_mem <| h hx
+#align set.bInter_subset_bInter_left Set.biInter_subset_biInter_left
-theorem bunionᵢ_mono {s s' : Set α} {t t' : α → Set β} (hs : s' ⊆ s) (h : ∀ x ∈ s, t x ⊆ t' x) :
+theorem biUnion_mono {s s' : Set α} {t t' : α → Set β} (hs : s' ⊆ s) (h : ∀ x ∈ s, t x ⊆ t' x) :
(⋃ x ∈ s', t x) ⊆ ⋃ x ∈ s, t' x :=
- (bunionᵢ_subset_bunionᵢ_left hs).trans <| unionᵢ₂_mono h
-#align set.bUnion_mono Set.bunionᵢ_mono
+ (biUnion_subset_biUnion_left hs).trans <| iUnion₂_mono h
+#align set.bUnion_mono Set.biUnion_mono
-theorem binterᵢ_mono {s s' : Set α} {t t' : α → Set β} (hs : s ⊆ s') (h : ∀ x ∈ s, t x ⊆ t' x) :
+theorem biInter_mono {s s' : Set α} {t t' : α → Set β} (hs : s ⊆ s') (h : ∀ x ∈ s, t x ⊆ t' x) :
(⋂ x ∈ s', t x) ⊆ ⋂ x ∈ s, t' x :=
- (binterᵢ_subset_binterᵢ_left hs).trans <| interᵢ₂_mono h
-#align set.bInter_mono Set.binterᵢ_mono
+ (biInter_subset_biInter_left hs).trans <| iInter₂_mono h
+#align set.bInter_mono Set.biInter_mono
-theorem bunionᵢ_eq_unionᵢ (s : Set α) (t : ∀ x ∈ s, Set β) :
+theorem biUnion_eq_iUnion (s : Set α) (t : ∀ x ∈ s, Set β) :
(⋃ x ∈ s, t x ‹_›) = ⋃ x : s, t x x.2 :=
- supᵢ_subtype'
-#align set.bUnion_eq_Union Set.bunionᵢ_eq_unionᵢ
+ iSup_subtype'
+#align set.bUnion_eq_Union Set.biUnion_eq_iUnion
-theorem binterᵢ_eq_interᵢ (s : Set α) (t : ∀ x ∈ s, Set β) :
+theorem biInter_eq_iInter (s : Set α) (t : ∀ x ∈ s, Set β) :
(⋂ x ∈ s, t x ‹_›) = ⋂ x : s, t x x.2 :=
- infᵢ_subtype'
-#align set.bInter_eq_Inter Set.binterᵢ_eq_interᵢ
+ iInf_subtype'
+#align set.bInter_eq_Inter Set.biInter_eq_iInter
-theorem unionᵢ_subtype (p : α → Prop) (s : { x // p x } → Set β) :
+theorem iUnion_subtype (p : α → Prop) (s : { x // p x } → Set β) :
(⋃ x : { x // p x }, s x) = ⋃ (x) (hx : p x), s ⟨x, hx⟩ :=
- supᵢ_subtype
-#align set.Union_subtype Set.unionᵢ_subtype
+ iSup_subtype
+#align set.Union_subtype Set.iUnion_subtype
-theorem interᵢ_subtype (p : α → Prop) (s : { x // p x } → Set β) :
+theorem iInter_subtype (p : α → Prop) (s : { x // p x } → Set β) :
(⋂ x : { x // p x }, s x) = ⋂ (x) (hx : p x), s ⟨x, hx⟩ :=
- infᵢ_subtype
-#align set.Inter_subtype Set.interᵢ_subtype
+ iInf_subtype
+#align set.Inter_subtype Set.iInter_subtype
-theorem binterᵢ_empty (u : α → Set β) : (⋂ x ∈ (∅ : Set α), u x) = univ :=
- infᵢ_emptyset
-#align set.bInter_empty Set.binterᵢ_empty
+theorem biInter_empty (u : α → Set β) : (⋂ x ∈ (∅ : Set α), u x) = univ :=
+ iInf_emptyset
+#align set.bInter_empty Set.biInter_empty
-theorem binterᵢ_univ (u : α → Set β) : (⋂ x ∈ @univ α, u x) = ⋂ x, u x :=
- infᵢ_univ
-#align set.bInter_univ Set.binterᵢ_univ
+theorem biInter_univ (u : α → Set β) : (⋂ x ∈ @univ α, u x) = ⋂ x, u x :=
+ iInf_univ
+#align set.bInter_univ Set.biInter_univ
@[simp]
-theorem bunionᵢ_self (s : Set α) : (⋃ x ∈ s, s) = s :=
- Subset.antisymm (unionᵢ₂_subset fun _ _ => Subset.refl s) fun _ hx => mem_bunionᵢ hx hx
-#align set.bUnion_self Set.bunionᵢ_self
+theorem biUnion_self (s : Set α) : (⋃ x ∈ s, s) = s :=
+ Subset.antisymm (iUnion₂_subset fun _ _ => Subset.refl s) fun _ hx => mem_biUnion hx hx
+#align set.bUnion_self Set.biUnion_self
@[simp]
-theorem unionᵢ_nonempty_self (s : Set α) : (⋃ _h : s.Nonempty, s) = s := by
- rw [unionᵢ_nonempty_index, bunionᵢ_self]
-#align set.Union_nonempty_self Set.unionᵢ_nonempty_self
+theorem iUnion_nonempty_self (s : Set α) : (⋃ _h : s.Nonempty, s) = s := by
+ rw [iUnion_nonempty_index, biUnion_self]
+#align set.Union_nonempty_self Set.iUnion_nonempty_self
-theorem binterᵢ_singleton (a : α) (s : α → Set β) : (⋂ x ∈ ({a} : Set α), s x) = s a :=
- infᵢ_singleton
-#align set.bInter_singleton Set.binterᵢ_singleton
+theorem biInter_singleton (a : α) (s : α → Set β) : (⋂ x ∈ ({a} : Set α), s x) = s a :=
+ iInf_singleton
+#align set.bInter_singleton Set.biInter_singleton
-theorem binterᵢ_union (s t : Set α) (u : α → Set β) :
+theorem biInter_union (s t : Set α) (u : α → Set β) :
(⋂ x ∈ s ∪ t, u x) = (⋂ x ∈ s, u x) ∩ ⋂ x ∈ t, u x :=
- infᵢ_union
-#align set.bInter_union Set.binterᵢ_union
+ iInf_union
+#align set.bInter_union Set.biInter_union
-theorem binterᵢ_insert (a : α) (s : Set α) (t : α → Set β) :
+theorem biInter_insert (a : α) (s : Set α) (t : α → Set β) :
(⋂ x ∈ insert a s, t x) = t a ∩ ⋂ x ∈ s, t x := by simp
-#align set.bInter_insert Set.binterᵢ_insert
+#align set.bInter_insert Set.biInter_insert
-theorem binterᵢ_pair (a b : α) (s : α → Set β) : (⋂ x ∈ ({a, b} : Set α), s x) = s a ∩ s b := by
- rw [binterᵢ_insert, binterᵢ_singleton]
-#align set.bInter_pair Set.binterᵢ_pair
+theorem biInter_pair (a b : α) (s : α → Set β) : (⋂ x ∈ ({a, b} : Set α), s x) = s a ∩ s b := by
+ rw [biInter_insert, biInter_singleton]
+#align set.bInter_pair Set.biInter_pair
-theorem binterᵢ_inter {ι α : Type _} {s : Set ι} (hs : s.Nonempty) (f : ι → Set α) (t : Set α) :
+theorem biInter_inter {ι α : Type _} {s : Set ι} (hs : s.Nonempty) (f : ι → Set α) (t : Set α) :
(⋂ i ∈ s, f i ∩ t) = (⋂ i ∈ s, f i) ∩ t := by
haveI : Nonempty s := hs.to_subtype
- simp [binterᵢ_eq_interᵢ, ← interᵢ_inter]
-#align set.bInter_inter Set.binterᵢ_inter
+ simp [biInter_eq_iInter, ← iInter_inter]
+#align set.bInter_inter Set.biInter_inter
-theorem inter_binterᵢ {ι α : Type _} {s : Set ι} (hs : s.Nonempty) (f : ι → Set α) (t : Set α) :
+theorem inter_biInter {ι α : Type _} {s : Set ι} (hs : s.Nonempty) (f : ι → Set α) (t : Set α) :
(⋂ i ∈ s, t ∩ f i) = t ∩ ⋂ i ∈ s, f i := by
- rw [inter_comm, ← binterᵢ_inter hs]
+ rw [inter_comm, ← biInter_inter hs]
simp [inter_comm]
-#align set.inter_bInter Set.inter_binterᵢ
+#align set.inter_bInter Set.inter_biInter
-theorem bunionᵢ_empty (s : α → Set β) : (⋃ x ∈ (∅ : Set α), s x) = ∅ :=
- supᵢ_emptyset
-#align set.bUnion_empty Set.bunionᵢ_empty
+theorem biUnion_empty (s : α → Set β) : (⋃ x ∈ (∅ : Set α), s x) = ∅ :=
+ iSup_emptyset
+#align set.bUnion_empty Set.biUnion_empty
-theorem bunionᵢ_univ (s : α → Set β) : (⋃ x ∈ @univ α, s x) = ⋃ x, s x :=
- supᵢ_univ
-#align set.bUnion_univ Set.bunionᵢ_univ
+theorem biUnion_univ (s : α → Set β) : (⋃ x ∈ @univ α, s x) = ⋃ x, s x :=
+ iSup_univ
+#align set.bUnion_univ Set.biUnion_univ
-theorem bunionᵢ_singleton (a : α) (s : α → Set β) : (⋃ x ∈ ({a} : Set α), s x) = s a :=
- supᵢ_singleton
-#align set.bUnion_singleton Set.bunionᵢ_singleton
+theorem biUnion_singleton (a : α) (s : α → Set β) : (⋃ x ∈ ({a} : Set α), s x) = s a :=
+ iSup_singleton
+#align set.bUnion_singleton Set.biUnion_singleton
@[simp]
-theorem bunionᵢ_of_singleton (s : Set α) : (⋃ x ∈ s, {x}) = s :=
+theorem biUnion_of_singleton (s : Set α) : (⋃ x ∈ s, {x}) = s :=
ext <| by simp
-#align set.bUnion_of_singleton Set.bunionᵢ_of_singleton
+#align set.bUnion_of_singleton Set.biUnion_of_singleton
-theorem bunionᵢ_union (s t : Set α) (u : α → Set β) :
+theorem biUnion_union (s t : Set α) (u : α → Set β) :
(⋃ x ∈ s ∪ t, u x) = (⋃ x ∈ s, u x) ∪ ⋃ x ∈ t, u x :=
- supᵢ_union
-#align set.bUnion_union Set.bunionᵢ_union
+ iSup_union
+#align set.bUnion_union Set.biUnion_union
@[simp]
-theorem unionᵢ_coe_set {α β : Type _} (s : Set α) (f : s → Set β) :
+theorem iUnion_coe_set {α β : Type _} (s : Set α) (f : s → Set β) :
(⋃ i, f i) = ⋃ i ∈ s, f ⟨i, ‹i ∈ s›⟩ :=
- unionᵢ_subtype _ _
-#align set.Union_coe_set Set.unionᵢ_coe_set
+ iUnion_subtype _ _
+#align set.Union_coe_set Set.iUnion_coe_set
@[simp]
-theorem interᵢ_coe_set {α β : Type _} (s : Set α) (f : s → Set β) :
+theorem iInter_coe_set {α β : Type _} (s : Set α) (f : s → Set β) :
(⋂ i, f i) = ⋂ i ∈ s, f ⟨i, ‹i ∈ s›⟩ :=
- interᵢ_subtype _ _
-#align set.Inter_coe_set Set.interᵢ_coe_set
+ iInter_subtype _ _
+#align set.Inter_coe_set Set.iInter_coe_set
-theorem bunionᵢ_insert (a : α) (s : Set α) (t : α → Set β) :
+theorem biUnion_insert (a : α) (s : Set α) (t : α → Set β) :
(⋃ x ∈ insert a s, t x) = t a ∪ ⋃ x ∈ s, t x := by simp
-#align set.bUnion_insert Set.bunionᵢ_insert
+#align set.bUnion_insert Set.biUnion_insert
-theorem bunionᵢ_pair (a b : α) (s : α → Set β) : (⋃ x ∈ ({a, b} : Set α), s x) = s a ∪ s b :=
+theorem biUnion_pair (a b : α) (s : α → Set β) : (⋃ x ∈ ({a, b} : Set α), s x) = s a ∪ s b :=
by simp
-#align set.bUnion_pair Set.bunionᵢ_pair
+#align set.bUnion_pair Set.biUnion_pair
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem inter_unionᵢ₂ (s : Set α) (t : ∀ i, κ i → Set α) :
- (s ∩ ⋃ (i) (j), t i j) = ⋃ (i) (j), s ∩ t i j := by simp only [inter_unionᵢ]
-#align set.inter_Union₂ Set.inter_unionᵢ₂
+theorem inter_iUnion₂ (s : Set α) (t : ∀ i, κ i → Set α) :
+ (s ∩ ⋃ (i) (j), t i j) = ⋃ (i) (j), s ∩ t i j := by simp only [inter_iUnion]
+#align set.inter_Union₂ Set.inter_iUnion₂
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem unionᵢ₂_inter (s : ∀ i, κ i → Set α) (t : Set α) :
- (⋃ (i) (j), s i j) ∩ t = ⋃ (i) (j), s i j ∩ t := by simp_rw [unionᵢ_inter]
-#align set.Union₂_inter Set.unionᵢ₂_inter
+theorem iUnion₂_inter (s : ∀ i, κ i → Set α) (t : Set α) :
+ (⋃ (i) (j), s i j) ∩ t = ⋃ (i) (j), s i j ∩ t := by simp_rw [iUnion_inter]
+#align set.Union₂_inter Set.iUnion₂_inter
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem union_interᵢ₂ (s : Set α) (t : ∀ i, κ i → Set α) :
- (s ∪ ⋂ (i) (j), t i j) = ⋂ (i) (j), s ∪ t i j := by simp_rw [union_interᵢ]
-#align set.union_Inter₂ Set.union_interᵢ₂
+theorem union_iInter₂ (s : Set α) (t : ∀ i, κ i → Set α) :
+ (s ∪ ⋂ (i) (j), t i j) = ⋂ (i) (j), s ∪ t i j := by simp_rw [union_iInter]
+#align set.union_Inter₂ Set.union_iInter₂
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem interᵢ₂_union (s : ∀ i, κ i → Set α) (t : Set α) :
- (⋂ (i) (j), s i j) ∪ t = ⋂ (i) (j), s i j ∪ t := by simp_rw [interᵢ_union]
-#align set.Inter₂_union Set.interᵢ₂_union
+theorem iInter₂_union (s : ∀ i, κ i → Set α) (t : Set α) :
+ (⋂ (i) (j), s i j) ∪ t = ⋂ (i) (j), s i j ∪ t := by simp_rw [iInter_union]
+#align set.Inter₂_union Set.iInter₂_union
-theorem mem_unionₛ_of_mem {x : α} {t : Set α} {S : Set (Set α)} (hx : x ∈ t) (ht : t ∈ S) :
+theorem mem_sUnion_of_mem {x : α} {t : Set α} {S : Set (Set α)} (hx : x ∈ t) (ht : t ∈ S) :
x ∈ ⋃₀S :=
⟨t, ht, hx⟩
-#align set.mem_sUnion_of_mem Set.mem_unionₛ_of_mem
+#align set.mem_sUnion_of_mem Set.mem_sUnion_of_mem
-- is this theorem really necessary?
-theorem not_mem_of_not_mem_unionₛ {x : α} {t : Set α} {S : Set (Set α)} (hx : x ∉ ⋃₀S)
+theorem not_mem_of_not_mem_sUnion {x : α} {t : Set α} {S : Set (Set α)} (hx : x ∉ ⋃₀S)
(ht : t ∈ S) : x ∉ t := fun h => hx ⟨t, ht, h⟩
-#align set.not_mem_of_not_mem_sUnion Set.not_mem_of_not_mem_unionₛ
+#align set.not_mem_of_not_mem_sUnion Set.not_mem_of_not_mem_sUnion
-theorem interₛ_subset_of_mem {S : Set (Set α)} {t : Set α} (tS : t ∈ S) : ⋂₀ S ⊆ t :=
- infₛ_le tS
-#align set.sInter_subset_of_mem Set.interₛ_subset_of_mem
+theorem sInter_subset_of_mem {S : Set (Set α)} {t : Set α} (tS : t ∈ S) : ⋂₀ S ⊆ t :=
+ sInf_le tS
+#align set.sInter_subset_of_mem Set.sInter_subset_of_mem
-theorem subset_unionₛ_of_mem {S : Set (Set α)} {t : Set α} (tS : t ∈ S) : t ⊆ ⋃₀S :=
- le_supₛ tS
-#align set.subset_sUnion_of_mem Set.subset_unionₛ_of_mem
+theorem subset_sUnion_of_mem {S : Set (Set α)} {t : Set α} (tS : t ∈ S) : t ⊆ ⋃₀S :=
+ le_sSup tS
+#align set.subset_sUnion_of_mem Set.subset_sUnion_of_mem
-theorem subset_unionₛ_of_subset {s : Set α} (t : Set (Set α)) (u : Set α) (h₁ : s ⊆ u)
+theorem subset_sUnion_of_subset {s : Set α} (t : Set (Set α)) (u : Set α) (h₁ : s ⊆ u)
(h₂ : u ∈ t) : s ⊆ ⋃₀t :=
- Subset.trans h₁ (subset_unionₛ_of_mem h₂)
-#align set.subset_sUnion_of_subset Set.subset_unionₛ_of_subset
+ Subset.trans h₁ (subset_sUnion_of_mem h₂)
+#align set.subset_sUnion_of_subset Set.subset_sUnion_of_subset
-theorem unionₛ_subset {S : Set (Set α)} {t : Set α} (h : ∀ t' ∈ S, t' ⊆ t) : ⋃₀S ⊆ t :=
- supₛ_le h
-#align set.sUnion_subset Set.unionₛ_subset
+theorem sUnion_subset {S : Set (Set α)} {t : Set α} (h : ∀ t' ∈ S, t' ⊆ t) : ⋃₀S ⊆ t :=
+ sSup_le h
+#align set.sUnion_subset Set.sUnion_subset
@[simp]
-theorem unionₛ_subset_iff {s : Set (Set α)} {t : Set α} : ⋃₀s ⊆ t ↔ ∀ t' ∈ s, t' ⊆ t :=
- supₛ_le_iff
-#align set.sUnion_subset_iff Set.unionₛ_subset_iff
+theorem sUnion_subset_iff {s : Set (Set α)} {t : Set α} : ⋃₀s ⊆ t ↔ ∀ t' ∈ s, t' ⊆ t :=
+ sSup_le_iff
+#align set.sUnion_subset_iff Set.sUnion_subset_iff
-theorem subset_interₛ {S : Set (Set α)} {t : Set α} (h : ∀ t' ∈ S, t ⊆ t') : t ⊆ ⋂₀ S :=
- le_infₛ h
-#align set.subset_sInter Set.subset_interₛ
+theorem subset_sInter {S : Set (Set α)} {t : Set α} (h : ∀ t' ∈ S, t ⊆ t') : t ⊆ ⋂₀ S :=
+ le_sInf h
+#align set.subset_sInter Set.subset_sInter
@[simp]
-theorem subset_interₛ_iff {S : Set (Set α)} {t : Set α} : t ⊆ ⋂₀ S ↔ ∀ t' ∈ S, t ⊆ t' :=
- le_infₛ_iff
-#align set.subset_sInter_iff Set.subset_interₛ_iff
+theorem subset_sInter_iff {S : Set (Set α)} {t : Set α} : t ⊆ ⋂₀ S ↔ ∀ t' ∈ S, t ⊆ t' :=
+ le_sInf_iff
+#align set.subset_sInter_iff Set.subset_sInter_iff
-theorem unionₛ_subset_unionₛ {S T : Set (Set α)} (h : S ⊆ T) : ⋃₀S ⊆ ⋃₀T :=
- unionₛ_subset fun _ hs => subset_unionₛ_of_mem (h hs)
-#align set.sUnion_subset_sUnion Set.unionₛ_subset_unionₛ
+theorem sUnion_subset_sUnion {S T : Set (Set α)} (h : S ⊆ T) : ⋃₀S ⊆ ⋃₀T :=
+ sUnion_subset fun _ hs => subset_sUnion_of_mem (h hs)
+#align set.sUnion_subset_sUnion Set.sUnion_subset_sUnion
-theorem interₛ_subset_interₛ {S T : Set (Set α)} (h : S ⊆ T) : ⋂₀ T ⊆ ⋂₀ S :=
- subset_interₛ fun _ hs => interₛ_subset_of_mem (h hs)
-#align set.sInter_subset_sInter Set.interₛ_subset_interₛ
+theorem sInter_subset_sInter {S T : Set (Set α)} (h : S ⊆ T) : ⋂₀ T ⊆ ⋂₀ S :=
+ subset_sInter fun _ hs => sInter_subset_of_mem (h hs)
+#align set.sInter_subset_sInter Set.sInter_subset_sInter
@[simp]
-theorem unionₛ_empty : ⋃₀∅ = (∅ : Set α) :=
- supₛ_empty
-#align set.sUnion_empty Set.unionₛ_empty
+theorem sUnion_empty : ⋃₀∅ = (∅ : Set α) :=
+ sSup_empty
+#align set.sUnion_empty Set.sUnion_empty
@[simp]
-theorem interₛ_empty : ⋂₀ ∅ = (univ : Set α) :=
- infₛ_empty
-#align set.sInter_empty Set.interₛ_empty
+theorem sInter_empty : ⋂₀ ∅ = (univ : Set α) :=
+ sInf_empty
+#align set.sInter_empty Set.sInter_empty
@[simp]
-theorem unionₛ_singleton (s : Set α) : ⋃₀{s} = s :=
- supₛ_singleton
-#align set.sUnion_singleton Set.unionₛ_singleton
+theorem sUnion_singleton (s : Set α) : ⋃₀{s} = s :=
+ sSup_singleton
+#align set.sUnion_singleton Set.sUnion_singleton
@[simp]
-theorem interₛ_singleton (s : Set α) : ⋂₀ {s} = s :=
- infₛ_singleton
-#align set.sInter_singleton Set.interₛ_singleton
+theorem sInter_singleton (s : Set α) : ⋂₀ {s} = s :=
+ sInf_singleton
+#align set.sInter_singleton Set.sInter_singleton
@[simp]
-theorem unionₛ_eq_empty {S : Set (Set α)} : ⋃₀S = ∅ ↔ ∀ s ∈ S, s = ∅ :=
- supₛ_eq_bot
-#align set.sUnion_eq_empty Set.unionₛ_eq_empty
+theorem sUnion_eq_empty {S : Set (Set α)} : ⋃₀S = ∅ ↔ ∀ s ∈ S, s = ∅ :=
+ sSup_eq_bot
+#align set.sUnion_eq_empty Set.sUnion_eq_empty
@[simp]
-theorem interₛ_eq_univ {S : Set (Set α)} : ⋂₀ S = univ ↔ ∀ s ∈ S, s = univ :=
- infₛ_eq_top
-#align set.sInter_eq_univ Set.interₛ_eq_univ
+theorem sInter_eq_univ {S : Set (Set α)} : ⋂₀ S = univ ↔ ∀ s ∈ S, s = univ :=
+ sInf_eq_top
+#align set.sInter_eq_univ Set.sInter_eq_univ
/-- If all sets in a collection are either `∅` or `Set.univ`, then so is their union. -/
-theorem unionₛ_mem_empty_univ {S : Set (Set α)} (h : S ⊆ {∅, univ}) :
+theorem sUnion_mem_empty_univ {S : Set (Set α)} (h : S ⊆ {∅, univ}) :
⋃₀ S ∈ ({∅, univ} :Set (Set α)) := by
- simp only [mem_insert_iff, mem_singleton_iff, or_iff_not_imp_left, unionₛ_eq_empty, not_forall]
+ simp only [mem_insert_iff, mem_singleton_iff, or_iff_not_imp_left, sUnion_eq_empty, not_forall]
rintro ⟨s, hs, hne⟩
obtain rfl : s = univ := (h hs).resolve_left hne
- exact univ_subset_iff.1 <| subset_unionₛ_of_mem hs
+ exact univ_subset_iff.1 <| subset_sUnion_of_mem hs
@[simp]
-theorem nonempty_unionₛ {S : Set (Set α)} : (⋃₀S).Nonempty ↔ ∃ s ∈ S, Set.Nonempty s := by
+theorem nonempty_sUnion {S : Set (Set α)} : (⋃₀S).Nonempty ↔ ∃ s ∈ S, Set.Nonempty s := by
simp [nonempty_iff_ne_empty]
-#align set.nonempty_sUnion Set.nonempty_unionₛ
+#align set.nonempty_sUnion Set.nonempty_sUnion
-theorem Nonempty.of_unionₛ {s : Set (Set α)} (h : (⋃₀s).Nonempty) : s.Nonempty :=
- let ⟨s, hs, _⟩ := nonempty_unionₛ.1 h
+theorem Nonempty.of_sUnion {s : Set (Set α)} (h : (⋃₀s).Nonempty) : s.Nonempty :=
+ let ⟨s, hs, _⟩ := nonempty_sUnion.1 h
⟨s, hs⟩
-#align set.nonempty.of_sUnion Set.Nonempty.of_unionₛ
+#align set.nonempty.of_sUnion Set.Nonempty.of_sUnion
-theorem Nonempty.of_unionₛ_eq_univ [Nonempty α] {s : Set (Set α)} (h : ⋃₀s = univ) : s.Nonempty :=
- Nonempty.of_unionₛ <| h.symm ▸ univ_nonempty
-#align set.nonempty.of_sUnion_eq_univ Set.Nonempty.of_unionₛ_eq_univ
+theorem Nonempty.of_sUnion_eq_univ [Nonempty α] {s : Set (Set α)} (h : ⋃₀s = univ) : s.Nonempty :=
+ Nonempty.of_sUnion <| h.symm ▸ univ_nonempty
+#align set.nonempty.of_sUnion_eq_univ Set.Nonempty.of_sUnion_eq_univ
-theorem unionₛ_union (S T : Set (Set α)) : ⋃₀(S ∪ T) = ⋃₀S ∪ ⋃₀T :=
- supₛ_union
-#align set.sUnion_union Set.unionₛ_union
+theorem sUnion_union (S T : Set (Set α)) : ⋃₀(S ∪ T) = ⋃₀S ∪ ⋃₀T :=
+ sSup_union
+#align set.sUnion_union Set.sUnion_union
-theorem interₛ_union (S T : Set (Set α)) : ⋂₀ (S ∪ T) = ⋂₀ S ∩ ⋂₀ T :=
- infₛ_union
-#align set.sInter_union Set.interₛ_union
+theorem sInter_union (S T : Set (Set α)) : ⋂₀ (S ∪ T) = ⋂₀ S ∩ ⋂₀ T :=
+ sInf_union
+#align set.sInter_union Set.sInter_union
@[simp]
-theorem unionₛ_insert (s : Set α) (T : Set (Set α)) : ⋃₀insert s T = s ∪ ⋃₀T :=
- supₛ_insert
-#align set.sUnion_insert Set.unionₛ_insert
+theorem sUnion_insert (s : Set α) (T : Set (Set α)) : ⋃₀insert s T = s ∪ ⋃₀T :=
+ sSup_insert
+#align set.sUnion_insert Set.sUnion_insert
@[simp]
-theorem interₛ_insert (s : Set α) (T : Set (Set α)) : ⋂₀ insert s T = s ∩ ⋂₀ T :=
- infₛ_insert
-#align set.sInter_insert Set.interₛ_insert
+theorem sInter_insert (s : Set α) (T : Set (Set α)) : ⋂₀ insert s T = s ∩ ⋂₀ T :=
+ sInf_insert
+#align set.sInter_insert Set.sInter_insert
@[simp]
-theorem unionₛ_diff_singleton_empty (s : Set (Set α)) : ⋃₀(s \ {∅}) = ⋃₀s :=
- supₛ_diff_singleton_bot s
-#align set.sUnion_diff_singleton_empty Set.unionₛ_diff_singleton_empty
+theorem sUnion_diff_singleton_empty (s : Set (Set α)) : ⋃₀(s \ {∅}) = ⋃₀s :=
+ sSup_diff_singleton_bot s
+#align set.sUnion_diff_singleton_empty Set.sUnion_diff_singleton_empty
@[simp]
-theorem interₛ_diff_singleton_univ (s : Set (Set α)) : ⋂₀ (s \ {univ}) = ⋂₀ s :=
- infₛ_diff_singleton_top s
-#align set.sInter_diff_singleton_univ Set.interₛ_diff_singleton_univ
+theorem sInter_diff_singleton_univ (s : Set (Set α)) : ⋂₀ (s \ {univ}) = ⋂₀ s :=
+ sInf_diff_singleton_top s
+#align set.sInter_diff_singleton_univ Set.sInter_diff_singleton_univ
-theorem unionₛ_pair (s t : Set α) : ⋃₀{s, t} = s ∪ t :=
- supₛ_pair
-#align set.sUnion_pair Set.unionₛ_pair
+theorem sUnion_pair (s t : Set α) : ⋃₀{s, t} = s ∪ t :=
+ sSup_pair
+#align set.sUnion_pair Set.sUnion_pair
-theorem interₛ_pair (s t : Set α) : ⋂₀ {s, t} = s ∩ t :=
- infₛ_pair
-#align set.sInter_pair Set.interₛ_pair
+theorem sInter_pair (s t : Set α) : ⋂₀ {s, t} = s ∩ t :=
+ sInf_pair
+#align set.sInter_pair Set.sInter_pair
@[simp]
-theorem unionₛ_image (f : α → Set β) (s : Set α) : ⋃₀(f '' s) = ⋃ x ∈ s, f x :=
- supₛ_image
-#align set.sUnion_image Set.unionₛ_image
+theorem sUnion_image (f : α → Set β) (s : Set α) : ⋃₀(f '' s) = ⋃ x ∈ s, f x :=
+ sSup_image
+#align set.sUnion_image Set.sUnion_image
@[simp]
-theorem interₛ_image (f : α → Set β) (s : Set α) : ⋂₀ (f '' s) = ⋂ x ∈ s, f x :=
- infₛ_image
-#align set.sInter_image Set.interₛ_image
+theorem sInter_image (f : α → Set β) (s : Set α) : ⋂₀ (f '' s) = ⋂ x ∈ s, f x :=
+ sInf_image
+#align set.sInter_image Set.sInter_image
@[simp]
-theorem unionₛ_range (f : ι → Set β) : ⋃₀range f = ⋃ x, f x :=
+theorem sUnion_range (f : ι → Set β) : ⋃₀range f = ⋃ x, f x :=
rfl
-#align set.sUnion_range Set.unionₛ_range
+#align set.sUnion_range Set.sUnion_range
@[simp]
-theorem interₛ_range (f : ι → Set β) : ⋂₀ range f = ⋂ x, f x :=
+theorem sInter_range (f : ι → Set β) : ⋂₀ range f = ⋂ x, f x :=
rfl
-#align set.sInter_range Set.interₛ_range
+#align set.sInter_range Set.sInter_range
-theorem unionᵢ_eq_univ_iff {f : ι → Set α} : (⋃ i, f i) = univ ↔ ∀ x, ∃ i, x ∈ f i := by
- simp only [eq_univ_iff_forall, mem_unionᵢ]
-#align set.Union_eq_univ_iff Set.unionᵢ_eq_univ_iff
+theorem iUnion_eq_univ_iff {f : ι → Set α} : (⋃ i, f i) = univ ↔ ∀ x, ∃ i, x ∈ f i := by
+ simp only [eq_univ_iff_forall, mem_iUnion]
+#align set.Union_eq_univ_iff Set.iUnion_eq_univ_iff
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem unionᵢ₂_eq_univ_iff {s : ∀ i, κ i → Set α} :
+theorem iUnion₂_eq_univ_iff {s : ∀ i, κ i → Set α} :
(⋃ (i) (j), s i j) = univ ↔ ∀ a, ∃ i j, a ∈ s i j :=
- by simp only [unionᵢ_eq_univ_iff, mem_unionᵢ]
-#align set.Union₂_eq_univ_iff Set.unionᵢ₂_eq_univ_iff
+ by simp only [iUnion_eq_univ_iff, mem_iUnion]
+#align set.Union₂_eq_univ_iff Set.iUnion₂_eq_univ_iff
-theorem unionₛ_eq_univ_iff {c : Set (Set α)} : ⋃₀c = univ ↔ ∀ a, ∃ b ∈ c, a ∈ b := by
- simp only [eq_univ_iff_forall, mem_unionₛ]
-#align set.sUnion_eq_univ_iff Set.unionₛ_eq_univ_iff
+theorem sUnion_eq_univ_iff {c : Set (Set α)} : ⋃₀c = univ ↔ ∀ a, ∃ b ∈ c, a ∈ b := by
+ simp only [eq_univ_iff_forall, mem_sUnion]
+#align set.sUnion_eq_univ_iff Set.sUnion_eq_univ_iff
-- classical
-theorem interᵢ_eq_empty_iff {f : ι → Set α} : (⋂ i, f i) = ∅ ↔ ∀ x, ∃ i, x ∉ f i := by
+theorem iInter_eq_empty_iff {f : ι → Set α} : (⋂ i, f i) = ∅ ↔ ∀ x, ∃ i, x ∉ f i := by
simp [Set.eq_empty_iff_forall_not_mem]
-#align set.Inter_eq_empty_iff Set.interᵢ_eq_empty_iff
+#align set.Inter_eq_empty_iff Set.iInter_eq_empty_iff
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-- classical
-theorem interᵢ₂_eq_empty_iff {s : ∀ i, κ i → Set α} :
+theorem iInter₂_eq_empty_iff {s : ∀ i, κ i → Set α} :
(⋂ (i) (j), s i j) = ∅ ↔ ∀ a, ∃ i j, a ∉ s i j := by
- simp only [eq_empty_iff_forall_not_mem, mem_interᵢ, not_forall]
-#align set.Inter₂_eq_empty_iff Set.interᵢ₂_eq_empty_iff
+ simp only [eq_empty_iff_forall_not_mem, mem_iInter, not_forall]
+#align set.Inter₂_eq_empty_iff Set.iInter₂_eq_empty_iff
-- classical
-theorem interₛ_eq_empty_iff {c : Set (Set α)} : ⋂₀ c = ∅ ↔ ∀ a, ∃ b ∈ c, a ∉ b := by
+theorem sInter_eq_empty_iff {c : Set (Set α)} : ⋂₀ c = ∅ ↔ ∀ a, ∃ b ∈ c, a ∉ b := by
simp [Set.eq_empty_iff_forall_not_mem]
-#align set.sInter_eq_empty_iff Set.interₛ_eq_empty_iff
+#align set.sInter_eq_empty_iff Set.sInter_eq_empty_iff
-- classical
@[simp]
-theorem nonempty_interᵢ {f : ι → Set α} : (⋂ i, f i).Nonempty ↔ ∃ x, ∀ i, x ∈ f i := by
- simp [nonempty_iff_ne_empty, interᵢ_eq_empty_iff]
-#align set.nonempty_Inter Set.nonempty_interᵢ
+theorem nonempty_iInter {f : ι → Set α} : (⋂ i, f i).Nonempty ↔ ∃ x, ∀ i, x ∈ f i := by
+ simp [nonempty_iff_ne_empty, iInter_eq_empty_iff]
+#align set.nonempty_Inter Set.nonempty_iInter
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-- classical
--Porting note: removing `simp`. `simp` can prove it
-theorem nonempty_interᵢ₂ {s : ∀ i, κ i → Set α} :
+theorem nonempty_iInter₂ {s : ∀ i, κ i → Set α} :
(⋂ (i) (j), s i j).Nonempty ↔ ∃ a, ∀ i j, a ∈ s i j := by
simp
-#align set.nonempty_Inter₂ Set.nonempty_interᵢ₂
+#align set.nonempty_Inter₂ Set.nonempty_iInter₂
-- classical
@[simp]
-theorem nonempty_interₛ {c : Set (Set α)} : (⋂₀ c).Nonempty ↔ ∃ a, ∀ b ∈ c, a ∈ b := by
- simp [nonempty_iff_ne_empty, interₛ_eq_empty_iff]
-#align set.nonempty_sInter Set.nonempty_interₛ
+theorem nonempty_sInter {c : Set (Set α)} : (⋂₀ c).Nonempty ↔ ∃ a, ∀ b ∈ c, a ∈ b := by
+ simp [nonempty_iff_ne_empty, sInter_eq_empty_iff]
+#align set.nonempty_sInter Set.nonempty_sInter
-- classical
-theorem compl_unionₛ (S : Set (Set α)) : (⋃₀S)ᶜ = ⋂₀ (compl '' S) :=
+theorem compl_sUnion (S : Set (Set α)) : (⋃₀S)ᶜ = ⋂₀ (compl '' S) :=
ext fun x => by simp
-#align set.compl_sUnion Set.compl_unionₛ
+#align set.compl_sUnion Set.compl_sUnion
-- classical
-theorem unionₛ_eq_compl_interₛ_compl (S : Set (Set α)) : ⋃₀S = (⋂₀ (compl '' S))ᶜ := by
- rw [← compl_compl (⋃₀S), compl_unionₛ]
-#align set.sUnion_eq_compl_sInter_compl Set.unionₛ_eq_compl_interₛ_compl
+theorem sUnion_eq_compl_sInter_compl (S : Set (Set α)) : ⋃₀S = (⋂₀ (compl '' S))ᶜ := by
+ rw [← compl_compl (⋃₀S), compl_sUnion]
+#align set.sUnion_eq_compl_sInter_compl Set.sUnion_eq_compl_sInter_compl
-- classical
-theorem compl_interₛ (S : Set (Set α)) : (⋂₀ S)ᶜ = ⋃₀(compl '' S) := by
- rw [unionₛ_eq_compl_interₛ_compl, compl_compl_image]
-#align set.compl_sInter Set.compl_interₛ
+theorem compl_sInter (S : Set (Set α)) : (⋂₀ S)ᶜ = ⋃₀(compl '' S) := by
+ rw [sUnion_eq_compl_sInter_compl, compl_compl_image]
+#align set.compl_sInter Set.compl_sInter
-- classical
-theorem interₛ_eq_compl_unionₛ_compl (S : Set (Set α)) : ⋂₀ S = (⋃₀(compl '' S))ᶜ := by
- rw [← compl_compl (⋂₀ S), compl_interₛ]
-#align set.sInter_eq_compl_sUnion_compl Set.interₛ_eq_compl_unionₛ_compl
+theorem sInter_eq_compl_sUnion_compl (S : Set (Set α)) : ⋂₀ S = (⋃₀(compl '' S))ᶜ := by
+ rw [← compl_compl (⋂₀ S), compl_sInter]
+#align set.sInter_eq_compl_sUnion_compl Set.sInter_eq_compl_sUnion_compl
-theorem inter_empty_of_inter_unionₛ_empty {s t : Set α} {S : Set (Set α)} (hs : t ∈ S)
+theorem inter_empty_of_inter_sUnion_empty {s t : Set α} {S : Set (Set α)} (hs : t ∈ S)
(h : s ∩ ⋃₀S = ∅) : s ∩ t = ∅ :=
eq_empty_of_subset_empty <| by
- rw [← h]; exact inter_subset_inter_right _ (subset_unionₛ_of_mem hs)
-#align set.inter_empty_of_inter_sUnion_empty Set.inter_empty_of_inter_unionₛ_empty
+ rw [← h]; exact inter_subset_inter_right _ (subset_sUnion_of_mem hs)
+#align set.inter_empty_of_inter_sUnion_empty Set.inter_empty_of_inter_sUnion_empty
-theorem range_sigma_eq_unionᵢ_range {γ : α → Type _} (f : Sigma γ → β) :
+theorem range_sigma_eq_iUnion_range {γ : α → Type _} (f : Sigma γ → β) :
range f = ⋃ a, range fun b => f ⟨a, b⟩ :=
Set.ext <| by simp
-#align set.range_sigma_eq_Union_range Set.range_sigma_eq_unionᵢ_range
+#align set.range_sigma_eq_Union_range Set.range_sigma_eq_iUnion_range
-theorem unionᵢ_eq_range_sigma (s : α → Set β) : (⋃ i, s i) = range fun a : Σi, s i => a.2 := by
+theorem iUnion_eq_range_sigma (s : α → Set β) : (⋃ i, s i) = range fun a : Σi, s i => a.2 := by
simp [Set.ext_iff]
-#align set.Union_eq_range_sigma Set.unionᵢ_eq_range_sigma
+#align set.Union_eq_range_sigma Set.iUnion_eq_range_sigma
-theorem unionᵢ_eq_range_psigma (s : ι → Set β) : (⋃ i, s i) = range fun a : Σ'i, s i => a.2 := by
+theorem iUnion_eq_range_psigma (s : ι → Set β) : (⋃ i, s i) = range fun a : Σ'i, s i => a.2 := by
simp [Set.ext_iff]
-#align set.Union_eq_range_psigma Set.unionᵢ_eq_range_psigma
+#align set.Union_eq_range_psigma Set.iUnion_eq_range_psigma
-theorem unionᵢ_image_preimage_sigma_mk_eq_self {ι : Type _} {σ : ι → Type _} (s : Set (Sigma σ)) :
+theorem iUnion_image_preimage_sigma_mk_eq_self {ι : Type _} {σ : ι → Type _} (s : Set (Sigma σ)) :
(⋃ i, Sigma.mk i '' (Sigma.mk i ⁻¹' s)) = s := by
ext x
- simp only [mem_unionᵢ, mem_image, mem_preimage]
+ simp only [mem_iUnion, mem_image, mem_preimage]
constructor
· rintro ⟨i, a, h, rfl⟩
exact h
· intro h
cases' x with i a
exact ⟨i, a, h, rfl⟩
-#align set.Union_image_preimage_sigma_mk_eq_self Set.unionᵢ_image_preimage_sigma_mk_eq_self
+#align set.Union_image_preimage_sigma_mk_eq_self Set.iUnion_image_preimage_sigma_mk_eq_self
theorem Sigma.univ (X : α → Type _) : (Set.univ : Set (Σa, X a)) = ⋃ a, range (Sigma.mk a) :=
Set.ext fun x =>
iff_of_true trivial ⟨range (Sigma.mk x.1), Set.mem_range_self _, x.2, Sigma.eta x⟩
#align set.sigma.univ Set.Sigma.univ
-theorem unionₛ_mono {s t : Set (Set α)} (h : s ⊆ t) : ⋃₀s ⊆ ⋃₀t :=
- unionₛ_subset fun _' ht' => subset_unionₛ_of_mem <| h ht'
-#align set.sUnion_mono Set.unionₛ_mono
+theorem sUnion_mono {s t : Set (Set α)} (h : s ⊆ t) : ⋃₀s ⊆ ⋃₀t :=
+ sUnion_subset fun _' ht' => subset_sUnion_of_mem <| h ht'
+#align set.sUnion_mono Set.sUnion_mono
-theorem unionᵢ_subset_unionᵢ_const {s : Set α} (h : ι → ι₂) : (⋃ _i : ι, s) ⊆ ⋃ _j : ι₂, s :=
- @supᵢ_const_mono (Set α) ι ι₂ _ s h
-#align set.Union_subset_Union_const Set.unionᵢ_subset_unionᵢ_const
+theorem iUnion_subset_iUnion_const {s : Set α} (h : ι → ι₂) : (⋃ _i : ι, s) ⊆ ⋃ _j : ι₂, s :=
+ @iSup_const_mono (Set α) ι ι₂ _ s h
+#align set.Union_subset_Union_const Set.iUnion_subset_iUnion_const
@[simp]
-theorem unionᵢ_singleton_eq_range {α β : Type _} (f : α → β) : (⋃ x : α, {f x}) = range f := by
+theorem iUnion_singleton_eq_range {α β : Type _} (f : α → β) : (⋃ x : α, {f x}) = range f := by
ext x
simp [@eq_comm _ x]
-#align set.Union_singleton_eq_range Set.unionᵢ_singleton_eq_range
+#align set.Union_singleton_eq_range Set.iUnion_singleton_eq_range
-theorem unionᵢ_of_singleton (α : Type _) : (⋃ x, {x} : Set α) = univ := by simp [Set.ext_iff]
-#align set.Union_of_singleton Set.unionᵢ_of_singleton
+theorem iUnion_of_singleton (α : Type _) : (⋃ x, {x} : Set α) = univ := by simp [Set.ext_iff]
+#align set.Union_of_singleton Set.iUnion_of_singleton
-theorem unionᵢ_of_singleton_coe (s : Set α) : (⋃ i : s, ({(i : α)} : Set α)) = s := by simp
-#align set.Union_of_singleton_coe Set.unionᵢ_of_singleton_coe
+theorem iUnion_of_singleton_coe (s : Set α) : (⋃ i : s, ({(i : α)} : Set α)) = s := by simp
+#align set.Union_of_singleton_coe Set.iUnion_of_singleton_coe
-theorem unionₛ_eq_bunionᵢ {s : Set (Set α)} : ⋃₀s = ⋃ (i : Set α) (_h : i ∈ s), i := by
- rw [← unionₛ_image, image_id']
-#align set.sUnion_eq_bUnion Set.unionₛ_eq_bunionᵢ
+theorem sUnion_eq_biUnion {s : Set (Set α)} : ⋃₀s = ⋃ (i : Set α) (_h : i ∈ s), i := by
+ rw [← sUnion_image, image_id']
+#align set.sUnion_eq_bUnion Set.sUnion_eq_biUnion
-theorem interₛ_eq_binterᵢ {s : Set (Set α)} : ⋂₀ s = ⋂ (i : Set α) (_h : i ∈ s), i := by
- rw [← interₛ_image, image_id']
-#align set.sInter_eq_bInter Set.interₛ_eq_binterᵢ
+theorem sInter_eq_biInter {s : Set (Set α)} : ⋂₀ s = ⋂ (i : Set α) (_h : i ∈ s), i := by
+ rw [← sInter_image, image_id']
+#align set.sInter_eq_bInter Set.sInter_eq_biInter
-theorem unionₛ_eq_unionᵢ {s : Set (Set α)} : ⋃₀s = ⋃ i : s, i := by
- simp only [← unionₛ_range, Subtype.range_coe]
-#align set.sUnion_eq_Union Set.unionₛ_eq_unionᵢ
+theorem sUnion_eq_iUnion {s : Set (Set α)} : ⋃₀s = ⋃ i : s, i := by
+ simp only [← sUnion_range, Subtype.range_coe]
+#align set.sUnion_eq_Union Set.sUnion_eq_iUnion
-theorem interₛ_eq_interᵢ {s : Set (Set α)} : ⋂₀ s = ⋂ i : s, i := by
- simp only [← interₛ_range, Subtype.range_coe]
-#align set.sInter_eq_Inter Set.interₛ_eq_interᵢ
+theorem sInter_eq_iInter {s : Set (Set α)} : ⋂₀ s = ⋂ i : s, i := by
+ simp only [← sInter_range, Subtype.range_coe]
+#align set.sInter_eq_Inter Set.sInter_eq_iInter
@[simp]
-theorem unionᵢ_of_empty [IsEmpty ι] (s : ι → Set α) : (⋃ i, s i) = ∅ :=
- supᵢ_of_empty _
-#align set.Union_of_empty Set.unionᵢ_of_empty
+theorem iUnion_of_empty [IsEmpty ι] (s : ι → Set α) : (⋃ i, s i) = ∅ :=
+ iSup_of_empty _
+#align set.Union_of_empty Set.iUnion_of_empty
@[simp]
-theorem interᵢ_of_empty [IsEmpty ι] (s : ι → Set α) : (⋂ i, s i) = univ :=
- infᵢ_of_empty _
-#align set.Inter_of_empty Set.interᵢ_of_empty
+theorem iInter_of_empty [IsEmpty ι] (s : ι → Set α) : (⋂ i, s i) = univ :=
+ iInf_of_empty _
+#align set.Inter_of_empty Set.iInter_of_empty
-theorem union_eq_unionᵢ {s₁ s₂ : Set α} : s₁ ∪ s₂ = ⋃ b : Bool, cond b s₁ s₂ :=
- sup_eq_supᵢ s₁ s₂
-#align set.union_eq_Union Set.union_eq_unionᵢ
+theorem union_eq_iUnion {s₁ s₂ : Set α} : s₁ ∪ s₂ = ⋃ b : Bool, cond b s₁ s₂ :=
+ sup_eq_iSup s₁ s₂
+#align set.union_eq_Union Set.union_eq_iUnion
-theorem inter_eq_interᵢ {s₁ s₂ : Set α} : s₁ ∩ s₂ = ⋂ b : Bool, cond b s₁ s₂ :=
- inf_eq_infᵢ s₁ s₂
-#align set.inter_eq_Inter Set.inter_eq_interᵢ
+theorem inter_eq_iInter {s₁ s₂ : Set α} : s₁ ∩ s₂ = ⋂ b : Bool, cond b s₁ s₂ :=
+ inf_eq_iInf s₁ s₂
+#align set.inter_eq_Inter Set.inter_eq_iInter
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem interₛ_union_interₛ {S T : Set (Set α)} :
+theorem sInter_union_sInter {S T : Set (Set α)} :
⋂₀ S ∪ ⋂₀ T = ⋂ p ∈ S ×ˢ T, (p : Set α × Set α).1 ∪ p.2 :=
- infₛ_sup_infₛ
-#align set.sInter_union_sInter Set.interₛ_union_interₛ
+ sInf_sup_sInf
+#align set.sInter_union_sInter Set.sInter_union_sInter
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem unionₛ_inter_unionₛ {s t : Set (Set α)} :
+theorem sUnion_inter_sUnion {s t : Set (Set α)} :
⋃₀s ∩ ⋃₀t = ⋃ p ∈ s ×ˢ t, (p : Set α × Set α).1 ∩ p.2 :=
- supₛ_inf_supₛ
-#align set.sUnion_inter_sUnion Set.unionₛ_inter_unionₛ
+ sSup_inf_sSup
+#align set.sUnion_inter_sUnion Set.sUnion_inter_sUnion
-theorem bunionᵢ_unionᵢ (s : ι → Set α) (t : α → Set β) :
- (⋃ x ∈ ⋃ i, s i, t x) = ⋃ (i) (x ∈ s i), t x := by simp [@unionᵢ_comm _ ι]
-#align set.bUnion_Union Set.bunionᵢ_unionᵢ
+theorem biUnion_iUnion (s : ι → Set α) (t : α → Set β) :
+ (⋃ x ∈ ⋃ i, s i, t x) = ⋃ (i) (x ∈ s i), t x := by simp [@iUnion_comm _ ι]
+#align set.bUnion_Union Set.biUnion_iUnion
-theorem binterᵢ_unionᵢ (s : ι → Set α) (t : α → Set β) :
- (⋂ x ∈ ⋃ i, s i, t x) = ⋂ (i) (x ∈ s i), t x := by simp [@interᵢ_comm _ ι]
-#align set.bInter_Union Set.binterᵢ_unionᵢ
+theorem biInter_iUnion (s : ι → Set α) (t : α → Set β) :
+ (⋂ x ∈ ⋃ i, s i, t x) = ⋂ (i) (x ∈ s i), t x := by simp [@iInter_comm _ ι]
+#align set.bInter_Union Set.biInter_iUnion
-theorem unionₛ_unionᵢ (s : ι → Set (Set α)) : (⋃₀⋃ i, s i) = ⋃ i, ⋃₀s i := by
- simp only [unionₛ_eq_bunionᵢ, bunionᵢ_unionᵢ]
-#align set.sUnion_Union Set.unionₛ_unionᵢ
+theorem sUnion_iUnion (s : ι → Set (Set α)) : (⋃₀⋃ i, s i) = ⋃ i, ⋃₀s i := by
+ simp only [sUnion_eq_biUnion, biUnion_iUnion]
+#align set.sUnion_Union Set.sUnion_iUnion
-theorem interₛ_unionᵢ (s : ι → Set (Set α)) : (⋂₀ ⋃ i, s i) = ⋂ i, ⋂₀ s i := by
- simp only [interₛ_eq_binterᵢ, binterᵢ_unionᵢ]
-#align set.sInter_Union Set.interₛ_unionᵢ
+theorem sInter_iUnion (s : ι → Set (Set α)) : (⋂₀ ⋃ i, s i) = ⋂ i, ⋂₀ s i := by
+ simp only [sInter_eq_biInter, biInter_iUnion]
+#align set.sInter_Union Set.sInter_iUnion
-theorem unionᵢ_range_eq_unionₛ {α β : Type _} (C : Set (Set α)) {f : ∀ s : C, β → (s : Type _)}
+theorem iUnion_range_eq_sUnion {α β : Type _} (C : Set (Set α)) {f : ∀ s : C, β → (s : Type _)}
(hf : ∀ s : C, Surjective (f s)) : (⋃ y : β, range fun s : C => (f s y).val) = ⋃₀C := by
ext x; constructor
· rintro ⟨s, ⟨y, rfl⟩, ⟨s, hs⟩, rfl⟩
@@ -1382,111 +1382,111 @@ theorem unionᵢ_range_eq_unionₛ {α β : Type _} (C : Set (Set α)) {f : ∀
cases' hf ⟨s, hs⟩ ⟨x, hx⟩ with y hy
refine' ⟨_, ⟨y, rfl⟩, ⟨s, hs⟩, _⟩
exact congr_arg Subtype.val hy
-#align set.Union_range_eq_sUnion Set.unionᵢ_range_eq_unionₛ
+#align set.Union_range_eq_sUnion Set.iUnion_range_eq_sUnion
-theorem unionᵢ_range_eq_unionᵢ (C : ι → Set α) {f : ∀ x : ι, β → C x}
+theorem iUnion_range_eq_iUnion (C : ι → Set α) {f : ∀ x : ι, β → C x}
(hf : ∀ x : ι, Surjective (f x)) : (⋃ y : β, range fun x : ι => (f x y).val) = ⋃ x, C x := by
- ext x; rw [mem_unionᵢ, mem_unionᵢ]; constructor
+ ext x; rw [mem_iUnion, mem_iUnion]; constructor
· rintro ⟨y, i, rfl⟩
exact ⟨i, (f i y).2⟩
· rintro ⟨i, hx⟩
cases' hf i ⟨x, hx⟩ with y hy
exact ⟨y, i, congr_arg Subtype.val hy⟩
-#align set.Union_range_eq_Union Set.unionᵢ_range_eq_unionᵢ
+#align set.Union_range_eq_Union Set.iUnion_range_eq_iUnion
-theorem union_distrib_interᵢ_left (s : ι → Set α) (t : Set α) : (t ∪ ⋂ i, s i) = ⋂ i, t ∪ s i :=
- sup_infᵢ_eq _ _
-#align set.union_distrib_Inter_left Set.union_distrib_interᵢ_left
+theorem union_distrib_iInter_left (s : ι → Set α) (t : Set α) : (t ∪ ⋂ i, s i) = ⋂ i, t ∪ s i :=
+ sup_iInf_eq _ _
+#align set.union_distrib_Inter_left Set.union_distrib_iInter_left
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem union_distrib_interᵢ₂_left (s : Set α) (t : ∀ i, κ i → Set α) :
- (s ∪ ⋂ (i) (j), t i j) = ⋂ (i) (j), s ∪ t i j := by simp_rw [union_distrib_interᵢ_left]
-#align set.union_distrib_Inter₂_left Set.union_distrib_interᵢ₂_left
+theorem union_distrib_iInter₂_left (s : Set α) (t : ∀ i, κ i → Set α) :
+ (s ∪ ⋂ (i) (j), t i j) = ⋂ (i) (j), s ∪ t i j := by simp_rw [union_distrib_iInter_left]
+#align set.union_distrib_Inter₂_left Set.union_distrib_iInter₂_left
-theorem union_distrib_interᵢ_right (s : ι → Set α) (t : Set α) : (⋂ i, s i) ∪ t = ⋂ i, s i ∪ t :=
- infᵢ_sup_eq _ _
-#align set.union_distrib_Inter_right Set.union_distrib_interᵢ_right
+theorem union_distrib_iInter_right (s : ι → Set α) (t : Set α) : (⋂ i, s i) ∪ t = ⋂ i, s i ∪ t :=
+ iInf_sup_eq _ _
+#align set.union_distrib_Inter_right Set.union_distrib_iInter_right
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem union_distrib_interᵢ₂_right (s : ∀ i, κ i → Set α) (t : Set α) :
- (⋂ (i) (j), s i j) ∪ t = ⋂ (i) (j), s i j ∪ t := by simp_rw [union_distrib_interᵢ_right]
-#align set.union_distrib_Inter₂_right Set.union_distrib_interᵢ₂_right
+theorem union_distrib_iInter₂_right (s : ∀ i, κ i → Set α) (t : Set α) :
+ (⋂ (i) (j), s i j) ∪ t = ⋂ (i) (j), s i j ∪ t := by simp_rw [union_distrib_iInter_right]
+#align set.union_distrib_Inter₂_right Set.union_distrib_iInter₂_right
section Function
/-! ### `mapsTo` -/
-theorem mapsTo_unionₛ {S : Set (Set α)} {t : Set β} {f : α → β} (H : ∀ s ∈ S, MapsTo f s t) :
+theorem mapsTo_sUnion {S : Set (Set α)} {t : Set β} {f : α → β} (H : ∀ s ∈ S, MapsTo f s t) :
MapsTo f (⋃₀S) t := fun _ ⟨s, hs, hx⟩ => H s hs hx
-#align set.maps_to_sUnion Set.mapsTo_unionₛ
+#align set.maps_to_sUnion Set.mapsTo_sUnion
-theorem mapsTo_unionᵢ {s : ι → Set α} {t : Set β} {f : α → β} (H : ∀ i, MapsTo f (s i) t) :
+theorem mapsTo_iUnion {s : ι → Set α} {t : Set β} {f : α → β} (H : ∀ i, MapsTo f (s i) t) :
MapsTo f (⋃ i, s i) t :=
- mapsTo_unionₛ <| forall_range_iff.2 H
-#align set.maps_to_Union Set.mapsTo_unionᵢ
+ mapsTo_sUnion <| forall_range_iff.2 H
+#align set.maps_to_Union Set.mapsTo_iUnion
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem mapsTo_unionᵢ₂ {s : ∀ i, κ i → Set α} {t : Set β} {f : α → β}
+theorem mapsTo_iUnion₂ {s : ∀ i, κ i → Set α} {t : Set β} {f : α → β}
(H : ∀ i j, MapsTo f (s i j) t) : MapsTo f (⋃ (i) (j), s i j) t :=
- mapsTo_unionᵢ fun i => mapsTo_unionᵢ (H i)
-#align set.maps_to_Union₂ Set.mapsTo_unionᵢ₂
+ mapsTo_iUnion fun i => mapsTo_iUnion (H i)
+#align set.maps_to_Union₂ Set.mapsTo_iUnion₂
-theorem mapsTo_unionᵢ_unionᵢ {s : ι → Set α} {t : ι → Set β} {f : α → β}
+theorem mapsTo_iUnion_iUnion {s : ι → Set α} {t : ι → Set β} {f : α → β}
(H : ∀ i, MapsTo f (s i) (t i)) : MapsTo f (⋃ i, s i) (⋃ i, t i) :=
- mapsTo_unionᵢ fun i => (H i).mono (Subset.refl _) (subset_unionᵢ t i)
-#align set.maps_to_Union_Union Set.mapsTo_unionᵢ_unionᵢ
+ mapsTo_iUnion fun i => (H i).mono (Subset.refl _) (subset_iUnion t i)
+#align set.maps_to_Union_Union Set.mapsTo_iUnion_iUnion
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem mapsTo_unionᵢ₂_unionᵢ₂ {s : ∀ i, κ i → Set α} {t : ∀ i, κ i → Set β} {f : α → β}
+theorem mapsTo_iUnion₂_iUnion₂ {s : ∀ i, κ i → Set α} {t : ∀ i, κ i → Set β} {f : α → β}
(H : ∀ i j, MapsTo f (s i j) (t i j)) : MapsTo f (⋃ (i) (j), s i j) (⋃ (i) (j), t i j) :=
- mapsTo_unionᵢ_unionᵢ fun i => mapsTo_unionᵢ_unionᵢ (H i)
-#align set.maps_to_Union₂_Union₂ Set.mapsTo_unionᵢ₂_unionᵢ₂
+ mapsTo_iUnion_iUnion fun i => mapsTo_iUnion_iUnion (H i)
+#align set.maps_to_Union₂_Union₂ Set.mapsTo_iUnion₂_iUnion₂
-theorem mapsTo_interₛ {s : Set α} {T : Set (Set β)} {f : α → β} (H : ∀ t ∈ T, MapsTo f s t) :
+theorem mapsTo_sInter {s : Set α} {T : Set (Set β)} {f : α → β} (H : ∀ t ∈ T, MapsTo f s t) :
MapsTo f s (⋂₀ T) := fun _ hx t ht => H t ht hx
-#align set.maps_to_sInter Set.mapsTo_interₛ
+#align set.maps_to_sInter Set.mapsTo_sInter
-theorem mapsTo_interᵢ {s : Set α} {t : ι → Set β} {f : α → β} (H : ∀ i, MapsTo f s (t i)) :
- MapsTo f s (⋂ i, t i) := fun _ hx => mem_interᵢ.2 fun i => H i hx
-#align set.maps_to_Inter Set.mapsTo_interᵢ
+theorem mapsTo_iInter {s : Set α} {t : ι → Set β} {f : α → β} (H : ∀ i, MapsTo f s (t i)) :
+ MapsTo f s (⋂ i, t i) := fun _ hx => mem_iInter.2 fun i => H i hx
+#align set.maps_to_Inter Set.mapsTo_iInter
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem mapsTo_interᵢ₂ {s : Set α} {t : ∀ i, κ i → Set β} {f : α → β}
+theorem mapsTo_iInter₂ {s : Set α} {t : ∀ i, κ i → Set β} {f : α → β}
(H : ∀ i j, MapsTo f s (t i j)) : MapsTo f s (⋂ (i) (j), t i j) :=
- mapsTo_interᵢ fun i => mapsTo_interᵢ (H i)
-#align set.maps_to_Inter₂ Set.mapsTo_interᵢ₂
+ mapsTo_iInter fun i => mapsTo_iInter (H i)
+#align set.maps_to_Inter₂ Set.mapsTo_iInter₂
-theorem mapsTo_interᵢ_interᵢ {s : ι → Set α} {t : ι → Set β} {f : α → β}
+theorem mapsTo_iInter_iInter {s : ι → Set α} {t : ι → Set β} {f : α → β}
(H : ∀ i, MapsTo f (s i) (t i)) : MapsTo f (⋂ i, s i) (⋂ i, t i) :=
- mapsTo_interᵢ fun i => (H i).mono (interᵢ_subset s i) (Subset.refl _)
-#align set.maps_to_Inter_Inter Set.mapsTo_interᵢ_interᵢ
+ mapsTo_iInter fun i => (H i).mono (iInter_subset s i) (Subset.refl _)
+#align set.maps_to_Inter_Inter Set.mapsTo_iInter_iInter
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem mapsTo_interᵢ₂_interᵢ₂ {s : ∀ i, κ i → Set α} {t : ∀ i, κ i → Set β} {f : α → β}
+theorem mapsTo_iInter₂_iInter₂ {s : ∀ i, κ i → Set α} {t : ∀ i, κ i → Set β} {f : α → β}
(H : ∀ i j, MapsTo f (s i j) (t i j)) : MapsTo f (⋂ (i) (j), s i j) (⋂ (i) (j), t i j) :=
- mapsTo_interᵢ_interᵢ fun i => mapsTo_interᵢ_interᵢ (H i)
-#align set.maps_to_Inter₂_Inter₂ Set.mapsTo_interᵢ₂_interᵢ₂
+ mapsTo_iInter_iInter fun i => mapsTo_iInter_iInter (H i)
+#align set.maps_to_Inter₂_Inter₂ Set.mapsTo_iInter₂_iInter₂
-theorem image_interᵢ_subset (s : ι → Set α) (f : α → β) : (f '' ⋂ i, s i) ⊆ ⋂ i, f '' s i :=
- (mapsTo_interᵢ_interᵢ fun i => mapsTo_image f (s i)).image_subset
-#align set.image_Inter_subset Set.image_interᵢ_subset
+theorem image_iInter_subset (s : ι → Set α) (f : α → β) : (f '' ⋂ i, s i) ⊆ ⋂ i, f '' s i :=
+ (mapsTo_iInter_iInter fun i => mapsTo_image f (s i)).image_subset
+#align set.image_Inter_subset Set.image_iInter_subset
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem image_interᵢ₂_subset (s : ∀ i, κ i → Set α) (f : α → β) :
+theorem image_iInter₂_subset (s : ∀ i, κ i → Set α) (f : α → β) :
(f '' ⋂ (i) (j), s i j) ⊆ ⋂ (i) (j), f '' s i j :=
- (mapsTo_interᵢ₂_interᵢ₂ fun i hi => mapsTo_image f (s i hi)).image_subset
-#align set.image_Inter₂_subset Set.image_interᵢ₂_subset
+ (mapsTo_iInter₂_iInter₂ fun i hi => mapsTo_image f (s i hi)).image_subset
+#align set.image_Inter₂_subset Set.image_iInter₂_subset
-theorem image_interₛ_subset (S : Set (Set α)) (f : α → β) : f '' ⋂₀ S ⊆ ⋂ s ∈ S, f '' s := by
- rw [interₛ_eq_binterᵢ]
- apply image_interᵢ₂_subset
-#align set.image_sInter_subset Set.image_interₛ_subset
+theorem image_sInter_subset (S : Set (Set α)) (f : α → β) : f '' ⋂₀ S ⊆ ⋂ s ∈ S, f '' s := by
+ rw [sInter_eq_biInter]
+ apply image_iInter₂_subset
+#align set.image_sInter_subset Set.image_sInter_subset
/-! ### `restrictPreimage` -/
@@ -1495,152 +1495,152 @@ section
open Function
-variable (s : Set β) {f : α → β} {U : ι → Set β} (hU : unionᵢ U = univ)
+variable (s : Set β) {f : α → β} {U : ι → Set β} (hU : iUnion U = univ)
-theorem injective_iff_injective_of_unionᵢ_eq_univ :
+theorem injective_iff_injective_of_iUnion_eq_univ :
Injective f ↔ ∀ i, Injective ((U i).restrictPreimage f) := by
refine' ⟨fun H i => (U i).restrictPreimage_injective H, fun H x y e => _⟩
- obtain ⟨i, hi⟩ := Set.mem_unionᵢ.mp
- (show f x ∈ Set.unionᵢ U by rw [hU]; triv)
+ obtain ⟨i, hi⟩ := Set.mem_iUnion.mp
+ (show f x ∈ Set.iUnion U by rw [hU]; triv)
injection @H i ⟨x, hi⟩ ⟨y, show f y ∈ U i from e ▸ hi⟩ (Subtype.ext e)
-#align set.injective_iff_injective_of_Union_eq_univ Set.injective_iff_injective_of_unionᵢ_eq_univ
+#align set.injective_iff_injective_of_Union_eq_univ Set.injective_iff_injective_of_iUnion_eq_univ
-theorem surjective_iff_surjective_of_unionᵢ_eq_univ :
+theorem surjective_iff_surjective_of_iUnion_eq_univ :
Surjective f ↔ ∀ i, Surjective ((U i).restrictPreimage f) := by
refine' ⟨fun H i => (U i).restrictPreimage_surjective H, fun H x => _⟩
obtain ⟨i, hi⟩ :=
- Set.mem_unionᵢ.mp
- (show x ∈ Set.unionᵢ U by rw [hU]; triv)
+ Set.mem_iUnion.mp
+ (show x ∈ Set.iUnion U by rw [hU]; triv)
exact ⟨_, congr_arg Subtype.val (H i ⟨x, hi⟩).choose_spec⟩
-#align set.surjective_iff_surjective_of_Union_eq_univ Set.surjective_iff_surjective_of_unionᵢ_eq_univ
+#align set.surjective_iff_surjective_of_Union_eq_univ Set.surjective_iff_surjective_of_iUnion_eq_univ
-theorem bijective_iff_bijective_of_unionᵢ_eq_univ :
+theorem bijective_iff_bijective_of_iUnion_eq_univ :
Bijective f ↔ ∀ i, Bijective ((U i).restrictPreimage f) := by
- rw [Bijective, injective_iff_injective_of_unionᵢ_eq_univ hU,
- surjective_iff_surjective_of_unionᵢ_eq_univ hU]
+ rw [Bijective, injective_iff_injective_of_iUnion_eq_univ hU,
+ surjective_iff_surjective_of_iUnion_eq_univ hU]
simp [Bijective, forall_and]
-#align set.bijective_iff_bijective_of_Union_eq_univ Set.bijective_iff_bijective_of_unionᵢ_eq_univ
+#align set.bijective_iff_bijective_of_Union_eq_univ Set.bijective_iff_bijective_of_iUnion_eq_univ
end
/-! ### `InjOn` -/
-theorem InjOn.image_interᵢ_eq [Nonempty ι] {s : ι → Set α} {f : α → β} (h : InjOn f (⋃ i, s i)) :
+theorem InjOn.image_iInter_eq [Nonempty ι] {s : ι → Set α} {f : α → β} (h : InjOn f (⋃ i, s i)) :
(f '' ⋂ i, s i) = ⋂ i, f '' s i := by
inhabit ι
- refine' Subset.antisymm (image_interᵢ_subset s f) fun y hy => _
- simp only [mem_interᵢ, mem_image_iff_bex] at hy
+ refine' Subset.antisymm (image_iInter_subset s f) fun y hy => _
+ simp only [mem_iInter, mem_image_iff_bex] at hy
choose x hx hy using hy
- refine' ⟨x default, mem_interᵢ.2 fun i => _, hy _⟩
+ refine' ⟨x default, mem_iInter.2 fun i => _, hy _⟩
suffices x default = x i by
rw [this]
apply hx
- replace hx : ∀ i, x i ∈ ⋃ j, s j := fun i => (subset_unionᵢ _ _) (hx i)
+ replace hx : ∀ i, x i ∈ ⋃ j, s j := fun i => (subset_iUnion _ _) (hx i)
apply h (hx _) (hx _)
simp only [hy]
-#align set.inj_on.image_Inter_eq Set.InjOn.image_interᵢ_eq
+#align set.inj_on.image_Inter_eq Set.InjOn.image_iInter_eq
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i hi) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i hi) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i hi) -/
-theorem InjOn.image_binterᵢ_eq {p : ι → Prop} {s : ∀ (i) (_ : p i), Set α} (hp : ∃ i, p i)
+theorem InjOn.image_biInter_eq {p : ι → Prop} {s : ∀ (i) (_ : p i), Set α} (hp : ∃ i, p i)
{f : α → β} (h : InjOn f (⋃ (i) (hi), s i hi)) :
(f '' ⋂ (i) (hi), s i hi) = ⋂ (i) (hi), f '' s i hi := by
- simp only [interᵢ, infᵢ_subtype']
+ simp only [iInter, iInf_subtype']
haveI : Nonempty { i // p i } := nonempty_subtype.2 hp
- apply InjOn.image_interᵢ_eq
- simpa only [unionᵢ, supᵢ_subtype'] using h
-#align set.inj_on.image_bInter_eq Set.InjOn.image_binterᵢ_eq
+ apply InjOn.image_iInter_eq
+ simpa only [iUnion, iSup_subtype'] using h
+#align set.inj_on.image_bInter_eq Set.InjOn.image_biInter_eq
-theorem image_interᵢ {f : α → β} (hf : Bijective f) (s : ι → Set α) :
+theorem image_iInter {f : α → β} (hf : Bijective f) (s : ι → Set α) :
(f '' ⋂ i, s i) = ⋂ i, f '' s i := by
cases isEmpty_or_nonempty ι
- · simp_rw [interᵢ_of_empty, image_univ_of_surjective hf.surjective]
- · exact (hf.injective.injOn _).image_interᵢ_eq
-#align set.image_Inter Set.image_interᵢ
+ · simp_rw [iInter_of_empty, image_univ_of_surjective hf.surjective]
+ · exact (hf.injective.injOn _).image_iInter_eq
+#align set.image_Inter Set.image_iInter
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem image_interᵢ₂ {f : α → β} (hf : Bijective f) (s : ∀ i, κ i → Set α) :
- (f '' ⋂ (i) (j), s i j) = ⋂ (i) (j), f '' s i j := by simp_rw [image_interᵢ hf]
-#align set.image_Inter₂ Set.image_interᵢ₂
+theorem image_iInter₂ {f : α → β} (hf : Bijective f) (s : ∀ i, κ i → Set α) :
+ (f '' ⋂ (i) (j), s i j) = ⋂ (i) (j), f '' s i j := by simp_rw [image_iInter hf]
+#align set.image_Inter₂ Set.image_iInter₂
-theorem inj_on_unionᵢ_of_directed {s : ι → Set α} (hs : Directed (· ⊆ ·) s) {f : α → β}
+theorem inj_on_iUnion_of_directed {s : ι → Set α} (hs : Directed (· ⊆ ·) s) {f : α → β}
(hf : ∀ i, InjOn f (s i)) : InjOn f (⋃ i, s i) := by
intro x hx y hy hxy
- rcases mem_unionᵢ.1 hx with ⟨i, hx⟩
- rcases mem_unionᵢ.1 hy with ⟨j, hy⟩
+ rcases mem_iUnion.1 hx with ⟨i, hx⟩
+ rcases mem_iUnion.1 hy with ⟨j, hy⟩
rcases hs i j with ⟨k, hi, hj⟩
exact hf k (hi hx) (hj hy) hxy
-#align set.inj_on_Union_of_directed Set.inj_on_unionᵢ_of_directed
+#align set.inj_on_Union_of_directed Set.inj_on_iUnion_of_directed
/-! ### `SurjOn` -/
-theorem surjOn_unionₛ {s : Set α} {T : Set (Set β)} {f : α → β} (H : ∀ t ∈ T, SurjOn f s t) :
+theorem surjOn_sUnion {s : Set α} {T : Set (Set β)} {f : α → β} (H : ∀ t ∈ T, SurjOn f s t) :
SurjOn f s (⋃₀T) := fun _ ⟨t, ht, hx⟩ => H t ht hx
-#align set.surj_on_sUnion Set.surjOn_unionₛ
+#align set.surj_on_sUnion Set.surjOn_sUnion
-theorem surjOn_unionᵢ {s : Set α} {t : ι → Set β} {f : α → β} (H : ∀ i, SurjOn f s (t i)) :
+theorem surjOn_iUnion {s : Set α} {t : ι → Set β} {f : α → β} (H : ∀ i, SurjOn f s (t i)) :
SurjOn f s (⋃ i, t i) :=
- surjOn_unionₛ <| forall_range_iff.2 H
-#align set.surj_on_Union Set.surjOn_unionᵢ
+ surjOn_sUnion <| forall_range_iff.2 H
+#align set.surj_on_Union Set.surjOn_iUnion
-theorem surjOn_unionᵢ_unionᵢ {s : ι → Set α} {t : ι → Set β} {f : α → β}
+theorem surjOn_iUnion_iUnion {s : ι → Set α} {t : ι → Set β} {f : α → β}
(H : ∀ i, SurjOn f (s i) (t i)) : SurjOn f (⋃ i, s i) (⋃ i, t i) :=
- surjOn_unionᵢ fun i => (H i).mono (subset_unionᵢ _ _) (Subset.refl _)
-#align set.surj_on_Union_Union Set.surjOn_unionᵢ_unionᵢ
+ surjOn_iUnion fun i => (H i).mono (subset_iUnion _ _) (Subset.refl _)
+#align set.surj_on_Union_Union Set.surjOn_iUnion_iUnion
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem surjOn_unionᵢ₂ {s : Set α} {t : ∀ i, κ i → Set β} {f : α → β}
+theorem surjOn_iUnion₂ {s : Set α} {t : ∀ i, κ i → Set β} {f : α → β}
(H : ∀ i j, SurjOn f s (t i j)) : SurjOn f s (⋃ (i) (j), t i j) :=
- surjOn_unionᵢ fun i => surjOn_unionᵢ (H i)
-#align set.surj_on_Union₂ Set.surjOn_unionᵢ₂
+ surjOn_iUnion fun i => surjOn_iUnion (H i)
+#align set.surj_on_Union₂ Set.surjOn_iUnion₂
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem surjOn_unionᵢ₂_unionᵢ₂ {s : ∀ i, κ i → Set α} {t : ∀ i, κ i → Set β} {f : α → β}
+theorem surjOn_iUnion₂_iUnion₂ {s : ∀ i, κ i → Set α} {t : ∀ i, κ i → Set β} {f : α → β}
(H : ∀ i j, SurjOn f (s i j) (t i j)) : SurjOn f (⋃ (i) (j), s i j) (⋃ (i) (j), t i j) :=
- surjOn_unionᵢ_unionᵢ fun i => surjOn_unionᵢ_unionᵢ (H i)
-#align set.surj_on_Union₂_Union₂ Set.surjOn_unionᵢ₂_unionᵢ₂
+ surjOn_iUnion_iUnion fun i => surjOn_iUnion_iUnion (H i)
+#align set.surj_on_Union₂_Union₂ Set.surjOn_iUnion₂_iUnion₂
-theorem surjOn_interᵢ [Nonempty ι] {s : ι → Set α} {t : Set β} {f : α → β}
+theorem surjOn_iInter [Nonempty ι] {s : ι → Set α} {t : Set β} {f : α → β}
(H : ∀ i, SurjOn f (s i) t) (Hinj : InjOn f (⋃ i, s i)) : SurjOn f (⋂ i, s i) t := by
intro y hy
- rw [Hinj.image_interᵢ_eq, mem_interᵢ]
+ rw [Hinj.image_iInter_eq, mem_iInter]
exact fun i => H i hy
-#align set.surj_on_Inter Set.surjOn_interᵢ
+#align set.surj_on_Inter Set.surjOn_iInter
-theorem surjOn_interᵢ_interᵢ [Nonempty ι] {s : ι → Set α} {t : ι → Set β} {f : α → β}
+theorem surjOn_iInter_iInter [Nonempty ι] {s : ι → Set α} {t : ι → Set β} {f : α → β}
(H : ∀ i, SurjOn f (s i) (t i)) (Hinj : InjOn f (⋃ i, s i)) : SurjOn f (⋂ i, s i) (⋂ i, t i) :=
- surjOn_interᵢ (fun i => (H i).mono (Subset.refl _) (interᵢ_subset _ _)) Hinj
-#align set.surj_on_Inter_Inter Set.surjOn_interᵢ_interᵢ
+ surjOn_iInter (fun i => (H i).mono (Subset.refl _) (iInter_subset _ _)) Hinj
+#align set.surj_on_Inter_Inter Set.surjOn_iInter_iInter
/-! ### `BijOn` -/
-theorem bijOn_unionᵢ {s : ι → Set α} {t : ι → Set β} {f : α → β} (H : ∀ i, BijOn f (s i) (t i))
+theorem bijOn_iUnion {s : ι → Set α} {t : ι → Set β} {f : α → β} (H : ∀ i, BijOn f (s i) (t i))
(Hinj : InjOn f (⋃ i, s i)) : BijOn f (⋃ i, s i) (⋃ i, t i) :=
- ⟨mapsTo_unionᵢ_unionᵢ fun i => (H i).mapsTo, Hinj, surjOn_unionᵢ_unionᵢ fun i => (H i).surjOn⟩
-#align set.bij_on_Union Set.bijOn_unionᵢ
+ ⟨mapsTo_iUnion_iUnion fun i => (H i).mapsTo, Hinj, surjOn_iUnion_iUnion fun i => (H i).surjOn⟩
+#align set.bij_on_Union Set.bijOn_iUnion
-theorem bijOn_interᵢ [hi : Nonempty ι] {s : ι → Set α} {t : ι → Set β} {f : α → β}
+theorem bijOn_iInter [hi : Nonempty ι] {s : ι → Set α} {t : ι → Set β} {f : α → β}
(H : ∀ i, BijOn f (s i) (t i)) (Hinj : InjOn f (⋃ i, s i)) : BijOn f (⋂ i, s i) (⋂ i, t i) :=
- ⟨mapsTo_interᵢ_interᵢ fun i => (H i).mapsTo,
- hi.elim fun i => (H i).injOn.mono (interᵢ_subset _ _),
- surjOn_interᵢ_interᵢ (fun i => (H i).surjOn) Hinj⟩
-#align set.bij_on_Inter Set.bijOn_interᵢ
+ ⟨mapsTo_iInter_iInter fun i => (H i).mapsTo,
+ hi.elim fun i => (H i).injOn.mono (iInter_subset _ _),
+ surjOn_iInter_iInter (fun i => (H i).surjOn) Hinj⟩
+#align set.bij_on_Inter Set.bijOn_iInter
-theorem bijOn_unionᵢ_of_directed {s : ι → Set α} (hs : Directed (· ⊆ ·) s) {t : ι → Set β}
+theorem bijOn_iUnion_of_directed {s : ι → Set α} (hs : Directed (· ⊆ ·) s) {t : ι → Set β}
{f : α → β} (H : ∀ i, BijOn f (s i) (t i)) : BijOn f (⋃ i, s i) (⋃ i, t i) :=
- bijOn_unionᵢ H <| inj_on_unionᵢ_of_directed hs fun i => (H i).injOn
-#align set.bij_on_Union_of_directed Set.bijOn_unionᵢ_of_directed
+ bijOn_iUnion H <| inj_on_iUnion_of_directed hs fun i => (H i).injOn
+#align set.bij_on_Union_of_directed Set.bijOn_iUnion_of_directed
-theorem bijOn_interᵢ_of_directed [Nonempty ι] {s : ι → Set α} (hs : Directed (· ⊆ ·) s)
+theorem bijOn_iInter_of_directed [Nonempty ι] {s : ι → Set α} (hs : Directed (· ⊆ ·) s)
{t : ι → Set β} {f : α → β} (H : ∀ i, BijOn f (s i) (t i)) : BijOn f (⋂ i, s i) (⋂ i, t i) :=
- bijOn_interᵢ H <| inj_on_unionᵢ_of_directed hs fun i => (H i).injOn
-#align set.bij_on_Inter_of_directed Set.bijOn_interᵢ_of_directed
+ bijOn_iInter H <| inj_on_iUnion_of_directed hs fun i => (H i).injOn
+#align set.bij_on_Inter_of_directed Set.bijOn_iInter_of_directed
end Function
@@ -1649,60 +1649,60 @@ end Function
section Image
-theorem image_unionᵢ {f : α → β} {s : ι → Set α} : (f '' ⋃ i, s i) = ⋃ i, f '' s i := by
+theorem image_iUnion {f : α → β} {s : ι → Set α} : (f '' ⋃ i, s i) = ⋃ i, f '' s i := by
ext1 x
- simp only [mem_image, mem_unionᵢ, ← exists_and_right, ← exists_and_left]
+ simp only [mem_image, mem_iUnion, ← exists_and_right, ← exists_and_left]
--Porting note: `exists_swap` causes a `simp` loop in Lean4 so we use `rw` instead.
rw [exists_swap]
-#align set.image_Union Set.image_unionᵢ
+#align set.image_Union Set.image_iUnion
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem image_unionᵢ₂ (f : α → β) (s : ∀ i, κ i → Set α) :
- (f '' ⋃ (i) (j), s i j) = ⋃ (i) (j), f '' s i j := by simp_rw [image_unionᵢ]
-#align set.image_Union₂ Set.image_unionᵢ₂
+theorem image_iUnion₂ (f : α → β) (s : ∀ i, κ i → Set α) :
+ (f '' ⋃ (i) (j), s i j) = ⋃ (i) (j), f '' s i j := by simp_rw [image_iUnion]
+#align set.image_Union₂ Set.image_iUnion₂
theorem univ_subtype {p : α → Prop} : (univ : Set (Subtype p)) = ⋃ (x) (h : p x), {⟨x, h⟩} :=
Set.ext fun ⟨x, h⟩ => by simp [h]
#align set.univ_subtype Set.univ_subtype
-theorem range_eq_unionᵢ {ι} (f : ι → α) : range f = ⋃ i, {f i} :=
+theorem range_eq_iUnion {ι} (f : ι → α) : range f = ⋃ i, {f i} :=
Set.ext fun a => by simp [@eq_comm α a]
-#align set.range_eq_Union Set.range_eq_unionᵢ
+#align set.range_eq_Union Set.range_eq_iUnion
-theorem image_eq_unionᵢ (f : α → β) (s : Set α) : f '' s = ⋃ i ∈ s, {f i} :=
+theorem image_eq_iUnion (f : α → β) (s : Set α) : f '' s = ⋃ i ∈ s, {f i} :=
Set.ext fun b => by simp [@eq_comm β b]
-#align set.image_eq_Union Set.image_eq_unionᵢ
+#align set.image_eq_Union Set.image_eq_iUnion
-theorem bunionᵢ_range {f : ι → α} {g : α → Set β} : (⋃ x ∈ range f, g x) = ⋃ y, g (f y) :=
- supᵢ_range
-#align set.bUnion_range Set.bunionᵢ_range
+theorem biUnion_range {f : ι → α} {g : α → Set β} : (⋃ x ∈ range f, g x) = ⋃ y, g (f y) :=
+ iSup_range
+#align set.bUnion_range Set.biUnion_range
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (x y) -/
@[simp]
-theorem unionᵢ_unionᵢ_eq' {f : ι → α} {g : α → Set β} :
- (⋃ (x) (y) (_h : f y = x), g x) = ⋃ y, g (f y) := by simpa using bunionᵢ_range
-#align set.Union_Union_eq' Set.unionᵢ_unionᵢ_eq'
+theorem iUnion_iUnion_eq' {f : ι → α} {g : α → Set β} :
+ (⋃ (x) (y) (_h : f y = x), g x) = ⋃ y, g (f y) := by simpa using biUnion_range
+#align set.Union_Union_eq' Set.iUnion_iUnion_eq'
-theorem binterᵢ_range {f : ι → α} {g : α → Set β} : (⋂ x ∈ range f, g x) = ⋂ y, g (f y) :=
- infᵢ_range
-#align set.bInter_range Set.binterᵢ_range
+theorem biInter_range {f : ι → α} {g : α → Set β} : (⋂ x ∈ range f, g x) = ⋂ y, g (f y) :=
+ iInf_range
+#align set.bInter_range Set.biInter_range
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (x y) -/
@[simp]
-theorem interᵢ_interᵢ_eq' {f : ι → α} {g : α → Set β} :
- (⋂ (x) (y) (_h : f y = x), g x) = ⋂ y, g (f y) := by simpa using binterᵢ_range
-#align set.Inter_Inter_eq' Set.interᵢ_interᵢ_eq'
+theorem iInter_iInter_eq' {f : ι → α} {g : α → Set β} :
+ (⋂ (x) (y) (_h : f y = x), g x) = ⋂ y, g (f y) := by simpa using biInter_range
+#align set.Inter_Inter_eq' Set.iInter_iInter_eq'
variable {s : Set γ} {f : γ → α} {g : α → Set β}
-theorem bunionᵢ_image : (⋃ x ∈ f '' s, g x) = ⋃ y ∈ s, g (f y) :=
- supᵢ_image
-#align set.bUnion_image Set.bunionᵢ_image
+theorem biUnion_image : (⋃ x ∈ f '' s, g x) = ⋃ y ∈ s, g (f y) :=
+ iSup_image
+#align set.bUnion_image Set.biUnion_image
-theorem binterᵢ_image : (⋂ x ∈ f '' s, g x) = ⋂ y ∈ s, g (f y) :=
- infᵢ_image
-#align set.bInter_image Set.binterᵢ_image
+theorem biInter_image : (⋂ x ∈ f '' s, g x) = ⋂ y ∈ s, g (f y) :=
+ iInf_image
+#align set.bInter_image Set.biInter_image
end Image
@@ -1712,44 +1712,44 @@ theorem monotone_preimage {f : α → β} : Monotone (preimage f) := fun _ _ h =
#align set.monotone_preimage Set.monotone_preimage
@[simp]
-theorem preimage_unionᵢ {f : α → β} {s : ι → Set β} : (f ⁻¹' ⋃ i, s i) = ⋃ i, f ⁻¹' s i :=
+theorem preimage_iUnion {f : α → β} {s : ι → Set β} : (f ⁻¹' ⋃ i, s i) = ⋃ i, f ⁻¹' s i :=
Set.ext <| by simp [preimage]
-#align set.preimage_Union Set.preimage_unionᵢ
+#align set.preimage_Union Set.preimage_iUnion
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem preimage_unionᵢ₂ {f : α → β} {s : ∀ i, κ i → Set β} :
- (f ⁻¹' ⋃ (i) (j), s i j) = ⋃ (i) (j), f ⁻¹' s i j := by simp_rw [preimage_unionᵢ]
-#align set.preimage_Union₂ Set.preimage_unionᵢ₂
+theorem preimage_iUnion₂ {f : α → β} {s : ∀ i, κ i → Set β} :
+ (f ⁻¹' ⋃ (i) (j), s i j) = ⋃ (i) (j), f ⁻¹' s i j := by simp_rw [preimage_iUnion]
+#align set.preimage_Union₂ Set.preimage_iUnion₂
@[simp]
-theorem preimage_unionₛ {f : α → β} {s : Set (Set β)} : f ⁻¹' ⋃₀s = ⋃ t ∈ s, f ⁻¹' t := by
- rw [unionₛ_eq_bunionᵢ, preimage_unionᵢ₂]
-#align set.preimage_sUnion Set.preimage_unionₛ
+theorem preimage_sUnion {f : α → β} {s : Set (Set β)} : f ⁻¹' ⋃₀s = ⋃ t ∈ s, f ⁻¹' t := by
+ rw [sUnion_eq_biUnion, preimage_iUnion₂]
+#align set.preimage_sUnion Set.preimage_sUnion
-theorem preimage_interᵢ {f : α → β} {s : ι → Set β} : (f ⁻¹' ⋂ i, s i) = ⋂ i, f ⁻¹' s i := by
+theorem preimage_iInter {f : α → β} {s : ι → Set β} : (f ⁻¹' ⋂ i, s i) = ⋂ i, f ⁻¹' s i := by
ext; simp
-#align set.preimage_Inter Set.preimage_interᵢ
+#align set.preimage_Inter Set.preimage_iInter
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem preimage_interᵢ₂ {f : α → β} {s : ∀ i, κ i → Set β} :
- (f ⁻¹' ⋂ (i) (j), s i j) = ⋂ (i) (j), f ⁻¹' s i j := by simp_rw [preimage_interᵢ]
-#align set.preimage_Inter₂ Set.preimage_interᵢ₂
+theorem preimage_iInter₂ {f : α → β} {s : ∀ i, κ i → Set β} :
+ (f ⁻¹' ⋂ (i) (j), s i j) = ⋂ (i) (j), f ⁻¹' s i j := by simp_rw [preimage_iInter]
+#align set.preimage_Inter₂ Set.preimage_iInter₂
@[simp]
-theorem preimage_interₛ {f : α → β} {s : Set (Set β)} : f ⁻¹' ⋂₀ s = ⋂ t ∈ s, f ⁻¹' t := by
- rw [interₛ_eq_binterᵢ, preimage_interᵢ₂]
-#align set.preimage_sInter Set.preimage_interₛ
+theorem preimage_sInter {f : α → β} {s : Set (Set β)} : f ⁻¹' ⋂₀ s = ⋂ t ∈ s, f ⁻¹' t := by
+ rw [sInter_eq_biInter, preimage_iInter₂]
+#align set.preimage_sInter Set.preimage_sInter
@[simp]
-theorem bunionᵢ_preimage_singleton (f : α → β) (s : Set β) : (⋃ y ∈ s, f ⁻¹' {y}) = f ⁻¹' s := by
- rw [← preimage_unionᵢ₂, bunionᵢ_of_singleton]
-#align set.bUnion_preimage_singleton Set.bunionᵢ_preimage_singleton
+theorem biUnion_preimage_singleton (f : α → β) (s : Set β) : (⋃ y ∈ s, f ⁻¹' {y}) = f ⁻¹' s := by
+ rw [← preimage_iUnion₂, biUnion_of_singleton]
+#align set.bUnion_preimage_singleton Set.biUnion_preimage_singleton
-theorem bunionᵢ_range_preimage_singleton (f : α → β) : (⋃ y ∈ range f, f ⁻¹' {y}) = univ := by
- rw [bunionᵢ_preimage_singleton, preimage_range]
-#align set.bUnion_range_preimage_singleton Set.bunionᵢ_range_preimage_singleton
+theorem biUnion_range_preimage_singleton (f : α → β) : (⋃ y ∈ range f, f ⁻¹' {y}) = univ := by
+ rw [biUnion_preimage_singleton, preimage_range]
+#align set.bUnion_range_preimage_singleton Set.biUnion_range_preimage_singleton
end Preimage
@@ -1757,101 +1757,101 @@ section Prod
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem prod_unionᵢ {s : Set α} {t : ι → Set β} : (s ×ˢ ⋃ i, t i) = ⋃ i, s ×ˢ t i := by
+theorem prod_iUnion {s : Set α} {t : ι → Set β} : (s ×ˢ ⋃ i, t i) = ⋃ i, s ×ˢ t i := by
ext
simp
-#align set.prod_Union Set.prod_unionᵢ
+#align set.prod_Union Set.prod_iUnion
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem prod_unionᵢ₂ {s : Set α} {t : ∀ i, κ i → Set β} :
- (s ×ˢ ⋃ (i) (j), t i j) = ⋃ (i) (j), s ×ˢ t i j := by simp_rw [prod_unionᵢ]
-#align set.prod_Union₂ Set.prod_unionᵢ₂
+theorem prod_iUnion₂ {s : Set α} {t : ∀ i, κ i → Set β} :
+ (s ×ˢ ⋃ (i) (j), t i j) = ⋃ (i) (j), s ×ˢ t i j := by simp_rw [prod_iUnion]
+#align set.prod_Union₂ Set.prod_iUnion₂
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem prod_unionₛ {s : Set α} {C : Set (Set β)} : s ×ˢ ⋃₀C = ⋃₀((fun t => s ×ˢ t) '' C) := by
- simp_rw [unionₛ_eq_bunionᵢ, bunionᵢ_image, prod_unionᵢ₂]
-#align set.prod_sUnion Set.prod_unionₛ
+theorem prod_sUnion {s : Set α} {C : Set (Set β)} : s ×ˢ ⋃₀C = ⋃₀((fun t => s ×ˢ t) '' C) := by
+ simp_rw [sUnion_eq_biUnion, biUnion_image, prod_iUnion₂]
+#align set.prod_sUnion Set.prod_sUnion
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem unionᵢ_prod_const {s : ι → Set α} {t : Set β} : (⋃ i, s i) ×ˢ t = ⋃ i, s i ×ˢ t := by
+theorem iUnion_prod_const {s : ι → Set α} {t : Set β} : (⋃ i, s i) ×ˢ t = ⋃ i, s i ×ˢ t := by
ext
simp
-#align set.Union_prod_const Set.unionᵢ_prod_const
+#align set.Union_prod_const Set.iUnion_prod_const
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem unionᵢ₂_prod_const {s : ∀ i, κ i → Set α} {t : Set β} :
- (⋃ (i) (j), s i j) ×ˢ t = ⋃ (i) (j), s i j ×ˢ t := by simp_rw [unionᵢ_prod_const]
-#align set.Union₂_prod_const Set.unionᵢ₂_prod_const
+theorem iUnion₂_prod_const {s : ∀ i, κ i → Set α} {t : Set β} :
+ (⋃ (i) (j), s i j) ×ˢ t = ⋃ (i) (j), s i j ×ˢ t := by simp_rw [iUnion_prod_const]
+#align set.Union₂_prod_const Set.iUnion₂_prod_const
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem unionₛ_prod_const {C : Set (Set α)} {t : Set β} :
+theorem sUnion_prod_const {C : Set (Set α)} {t : Set β} :
⋃₀C ×ˢ t = ⋃₀((fun s : Set α => s ×ˢ t) '' C) := by
- simp only [unionₛ_eq_bunionᵢ, unionᵢ₂_prod_const, bunionᵢ_image]
-#align set.sUnion_prod_const Set.unionₛ_prod_const
+ simp only [sUnion_eq_biUnion, iUnion₂_prod_const, biUnion_image]
+#align set.sUnion_prod_const Set.sUnion_prod_const
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem unionᵢ_prod {ι ι' α β} (s : ι → Set α) (t : ι' → Set β) :
+theorem iUnion_prod {ι ι' α β} (s : ι → Set α) (t : ι' → Set β) :
(⋃ x : ι × ι', s x.1 ×ˢ t x.2) = (⋃ i : ι, s i) ×ˢ ⋃ i : ι', t i := by
ext
simp
-#align set.Union_prod Set.unionᵢ_prod
+#align set.Union_prod Set.iUnion_prod
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem unionᵢ_prod_of_monotone [SemilatticeSup α] {s : α → Set β} {t : α → Set γ} (hs : Monotone s)
+theorem iUnion_prod_of_monotone [SemilatticeSup α] {s : α → Set β} {t : α → Set γ} (hs : Monotone s)
(ht : Monotone t) : (⋃ x, s x ×ˢ t x) = (⋃ x, s x) ×ˢ ⋃ x, t x := by
- ext ⟨z, w⟩; simp only [mem_prod, mem_unionᵢ, exists_imp, and_imp, iff_def]; constructor
+ ext ⟨z, w⟩; simp only [mem_prod, mem_iUnion, exists_imp, and_imp, iff_def]; constructor
· intro x hz hw
exact ⟨⟨x, hz⟩, x, hw⟩
· intro x hz x' hw
exact ⟨x ⊔ x', hs le_sup_left hz, ht le_sup_right hw⟩
-#align set.Union_prod_of_monotone Set.unionᵢ_prod_of_monotone
+#align set.Union_prod_of_monotone Set.iUnion_prod_of_monotone
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem interₛ_prod_interₛ_subset (S : Set (Set α)) (T : Set (Set β)) :
+theorem sInter_prod_sInter_subset (S : Set (Set α)) (T : Set (Set β)) :
⋂₀ S ×ˢ ⋂₀ T ⊆ ⋂ r ∈ S ×ˢ T, r.1 ×ˢ r.2 :=
- subset_interᵢ₂ fun x hx _ hy => ⟨hy.1 x.1 hx.1, hy.2 x.2 hx.2⟩
-#align set.sInter_prod_sInter_subset Set.interₛ_prod_interₛ_subset
+ subset_iInter₂ fun x hx _ hy => ⟨hy.1 x.1 hx.1, hy.2 x.2 hx.2⟩
+#align set.sInter_prod_sInter_subset Set.sInter_prod_sInter_subset
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem interₛ_prod_interₛ {S : Set (Set α)} {T : Set (Set β)} (hS : S.Nonempty) (hT : T.Nonempty) :
+theorem sInter_prod_sInter {S : Set (Set α)} {T : Set (Set β)} (hS : S.Nonempty) (hT : T.Nonempty) :
⋂₀ S ×ˢ ⋂₀ T = ⋂ r ∈ S ×ˢ T, r.1 ×ˢ r.2 := by
obtain ⟨s₁, h₁⟩ := hS
obtain ⟨s₂, h₂⟩ := hT
- refine' Set.Subset.antisymm (interₛ_prod_interₛ_subset S T) fun x hx => _
- rw [mem_interᵢ₂] at hx
+ refine' Set.Subset.antisymm (sInter_prod_sInter_subset S T) fun x hx => _
+ rw [mem_iInter₂] at hx
exact ⟨fun s₀ h₀ => (hx (s₀, s₂) ⟨h₀, h₂⟩).1, fun s₀ h₀ => (hx (s₁, s₀) ⟨h₁, h₀⟩).2⟩
-#align set.sInter_prod_sInter Set.interₛ_prod_interₛ
+#align set.sInter_prod_sInter Set.sInter_prod_sInter
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem interₛ_prod {S : Set (Set α)} (hS : S.Nonempty) (t : Set β) :
+theorem sInter_prod {S : Set (Set α)} (hS : S.Nonempty) (t : Set β) :
⋂₀ S ×ˢ t = ⋂ s ∈ S, s ×ˢ t := by
- rw [← interₛ_singleton t, interₛ_prod_interₛ hS (singleton_nonempty t), interₛ_singleton]
- simp_rw [prod_singleton, mem_image, interᵢ_exists, binterᵢ_and', interᵢ_interᵢ_eq_right]
-#align set.sInter_prod Set.interₛ_prod
+ rw [← sInter_singleton t, sInter_prod_sInter hS (singleton_nonempty t), sInter_singleton]
+ simp_rw [prod_singleton, mem_image, iInter_exists, biInter_and', iInter_iInter_eq_right]
+#align set.sInter_prod Set.sInter_prod
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem prod_interₛ {T : Set (Set β)} (hT : T.Nonempty) (s : Set α) :
+theorem prod_sInter {T : Set (Set β)} (hT : T.Nonempty) (s : Set α) :
s ×ˢ ⋂₀ T = ⋂ t ∈ T, s ×ˢ t := by
- rw [← interₛ_singleton s, interₛ_prod_interₛ (singleton_nonempty s) hT, interₛ_singleton]
- simp_rw [singleton_prod, mem_image, interᵢ_exists, binterᵢ_and', interᵢ_interᵢ_eq_right]
-#align set.prod_sInter Set.prod_interₛ
+ rw [← sInter_singleton s, sInter_prod_sInter (singleton_nonempty s) hT, sInter_singleton]
+ simp_rw [singleton_prod, mem_image, iInter_exists, biInter_and', iInter_iInter_eq_right]
+#align set.prod_sInter Set.prod_sInter
end Prod
@@ -1859,83 +1859,83 @@ section Image2
variable (f : α → β → γ) {s : Set α} {t : Set β}
-theorem unionᵢ_image_left : (⋃ a ∈ s, f a '' t) = image2 f s t := by
+theorem iUnion_image_left : (⋃ a ∈ s, f a '' t) = image2 f s t := by
ext y
- constructor <;> simp only [mem_unionᵢ] <;> rintro ⟨a, ha, x, hx, ax⟩ <;> exact ⟨a, x, ha, hx, ax⟩
-#align set.Union_image_left Set.unionᵢ_image_left
+ constructor <;> simp only [mem_iUnion] <;> rintro ⟨a, ha, x, hx, ax⟩ <;> exact ⟨a, x, ha, hx, ax⟩
+#align set.Union_image_left Set.iUnion_image_left
-theorem unionᵢ_image_right : (⋃ b ∈ t, (fun a => f a b) '' s) = image2 f s t := by
+theorem iUnion_image_right : (⋃ b ∈ t, (fun a => f a b) '' s) = image2 f s t := by
ext y
- constructor <;> simp only [mem_unionᵢ] <;> rintro ⟨a, b, c, d, e⟩
+ constructor <;> simp only [mem_iUnion] <;> rintro ⟨a, b, c, d, e⟩
exact ⟨c, a, d, b, e⟩
exact ⟨b, d, a, c, e⟩
-#align set.Union_image_right Set.unionᵢ_image_right
+#align set.Union_image_right Set.iUnion_image_right
-theorem image2_unionᵢ_left (s : ι → Set α) (t : Set β) :
+theorem image2_iUnion_left (s : ι → Set α) (t : Set β) :
image2 f (⋃ i, s i) t = ⋃ i, image2 f (s i) t := by
- simp only [← image_prod, unionᵢ_prod_const, image_unionᵢ]
-#align set.image2_Union_left Set.image2_unionᵢ_left
+ simp only [← image_prod, iUnion_prod_const, image_iUnion]
+#align set.image2_Union_left Set.image2_iUnion_left
-theorem image2_unionᵢ_right (s : Set α) (t : ι → Set β) :
+theorem image2_iUnion_right (s : Set α) (t : ι → Set β) :
image2 f s (⋃ i, t i) = ⋃ i, image2 f s (t i) := by
- simp only [← image_prod, prod_unionᵢ, image_unionᵢ]
-#align set.image2_Union_right Set.image2_unionᵢ_right
+ simp only [← image_prod, prod_iUnion, image_iUnion]
+#align set.image2_Union_right Set.image2_iUnion_right
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem image2_unionᵢ₂_left (s : ∀ i, κ i → Set α) (t : Set β) :
- image2 f (⋃ (i) (j), s i j) t = ⋃ (i) (j), image2 f (s i j) t := by simp_rw [image2_unionᵢ_left]
-#align set.image2_Union₂_left Set.image2_unionᵢ₂_left
+theorem image2_iUnion₂_left (s : ∀ i, κ i → Set α) (t : Set β) :
+ image2 f (⋃ (i) (j), s i j) t = ⋃ (i) (j), image2 f (s i j) t := by simp_rw [image2_iUnion_left]
+#align set.image2_Union₂_left Set.image2_iUnion₂_left
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem image2_unionᵢ₂_right (s : Set α) (t : ∀ i, κ i → Set β) :
+theorem image2_iUnion₂_right (s : Set α) (t : ∀ i, κ i → Set β) :
image2 f s (⋃ (i) (j), t i j) = ⋃ (i) (j), image2 f s (t i j) :=
- by simp_rw [image2_unionᵢ_right]
-#align set.image2_Union₂_right Set.image2_unionᵢ₂_right
+ by simp_rw [image2_iUnion_right]
+#align set.image2_Union₂_right Set.image2_iUnion₂_right
-theorem image2_interᵢ_subset_left (s : ι → Set α) (t : Set β) :
+theorem image2_iInter_subset_left (s : ι → Set α) (t : Set β) :
image2 f (⋂ i, s i) t ⊆ ⋂ i, image2 f (s i) t := by
- simp_rw [image2_subset_iff, mem_interᵢ]
+ simp_rw [image2_subset_iff, mem_iInter]
exact fun x hx y hy i => mem_image2_of_mem (hx _) hy
-#align set.image2_Inter_subset_left Set.image2_interᵢ_subset_left
+#align set.image2_Inter_subset_left Set.image2_iInter_subset_left
-theorem image2_interᵢ_subset_right (s : Set α) (t : ι → Set β) :
+theorem image2_iInter_subset_right (s : Set α) (t : ι → Set β) :
image2 f s (⋂ i, t i) ⊆ ⋂ i, image2 f s (t i) := by
- simp_rw [image2_subset_iff, mem_interᵢ]
+ simp_rw [image2_subset_iff, mem_iInter]
exact fun x hx y hy i => mem_image2_of_mem hx (hy _)
-#align set.image2_Inter_subset_right Set.image2_interᵢ_subset_right
+#align set.image2_Inter_subset_right Set.image2_iInter_subset_right
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem image2_interᵢ₂_subset_left (s : ∀ i, κ i → Set α) (t : Set β) :
+theorem image2_iInter₂_subset_left (s : ∀ i, κ i → Set α) (t : Set β) :
image2 f (⋂ (i) (j), s i j) t ⊆ ⋂ (i) (j), image2 f (s i j) t := by
- simp_rw [image2_subset_iff, mem_interᵢ]
+ simp_rw [image2_subset_iff, mem_iInter]
exact fun x hx y hy i j => mem_image2_of_mem (hx _ _) hy
-#align set.image2_Inter₂_subset_left Set.image2_interᵢ₂_subset_left
+#align set.image2_Inter₂_subset_left Set.image2_iInter₂_subset_left
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem image2_interᵢ₂_subset_right (s : Set α) (t : ∀ i, κ i → Set β) :
+theorem image2_iInter₂_subset_right (s : Set α) (t : ∀ i, κ i → Set β) :
image2 f s (⋂ (i) (j), t i j) ⊆ ⋂ (i) (j), image2 f s (t i j) := by
- simp_rw [image2_subset_iff, mem_interᵢ]
+ simp_rw [image2_subset_iff, mem_iInter]
exact fun x hx y hy i j => mem_image2_of_mem hx (hy _ _)
-#align set.image2_Inter₂_subset_right Set.image2_interᵢ₂_subset_right
+#align set.image2_Inter₂_subset_right Set.image2_iInter₂_subset_right
-/-- The `Set.image2` version of `Set.image_eq_unionᵢ` -/
-theorem image2_eq_unionᵢ (s : Set α) (t : Set β) : image2 f s t = ⋃ (i ∈ s) (j ∈ t), {f i j} := by
- simp_rw [← image_eq_unionᵢ, unionᵢ_image_left]
-#align set.image2_eq_Union Set.image2_eq_unionᵢ
+/-- The `Set.image2` version of `Set.image_eq_iUnion` -/
+theorem image2_eq_iUnion (s : Set α) (t : Set β) : image2 f s t = ⋃ (i ∈ s) (j ∈ t), {f i j} := by
+ simp_rw [← image_eq_iUnion, iUnion_image_left]
+#align set.image2_eq_Union Set.image2_eq_iUnion
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem prod_eq_bunionᵢ_left : s ×ˢ t = ⋃ a ∈ s, (fun b => (a, b)) '' t := by
- rw [unionᵢ_image_left, image2_mk_eq_prod]
-#align set.prod_eq_bUnion_left Set.prod_eq_bunionᵢ_left
+theorem prod_eq_biUnion_left : s ×ˢ t = ⋃ a ∈ s, (fun b => (a, b)) '' t := by
+ rw [iUnion_image_left, image2_mk_eq_prod]
+#align set.prod_eq_bUnion_left Set.prod_eq_biUnion_left
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem prod_eq_bunionᵢ_right : s ×ˢ t = ⋃ b ∈ t, (fun a => (a, b)) '' s := by
- rw [unionᵢ_image_right, image2_mk_eq_prod]
-#align set.prod_eq_bUnion_right Set.prod_eq_bunionᵢ_right
+theorem prod_eq_biUnion_right : s ×ˢ t = ⋃ b ∈ t, (fun a => (a, b)) '' s := by
+ rw [iUnion_image_right, image2_mk_eq_prod]
+#align set.prod_eq_bUnion_right Set.prod_eq_biUnion_right
end Image2
@@ -2021,23 +2021,23 @@ theorem pi_def (i : Set α) (s : ∀ a, Set (π a)) : pi i s = ⋂ a ∈ i, eval
simp
#align set.pi_def Set.pi_def
-theorem univ_pi_eq_interᵢ (t : ∀ i, Set (π i)) : pi univ t = ⋂ i, eval i ⁻¹' t i := by
- simp only [pi_def, interᵢ_true, mem_univ]
-#align set.univ_pi_eq_Inter Set.univ_pi_eq_interᵢ
+theorem univ_pi_eq_iInter (t : ∀ i, Set (π i)) : pi univ t = ⋂ i, eval i ⁻¹' t i := by
+ simp only [pi_def, iInter_true, mem_univ]
+#align set.univ_pi_eq_Inter Set.univ_pi_eq_iInter
theorem pi_diff_pi_subset (i : Set α) (s t : ∀ a, Set (π a)) :
pi i s \ pi i t ⊆ ⋃ a ∈ i, eval a ⁻¹' (s a \ t a) := by
refine' diff_subset_comm.2 fun x hx a ha => _
- simp only [mem_diff, mem_pi, mem_unionᵢ, not_exists, mem_preimage, not_and, not_not,
+ simp only [mem_diff, mem_pi, mem_iUnion, not_exists, mem_preimage, not_and, not_not,
eval_apply] at hx
exact hx.2 _ ha (hx.1 _ ha)
#align set.pi_diff_pi_subset Set.pi_diff_pi_subset
-theorem unionᵢ_univ_pi (t : ∀ i, ι → Set (π i)) :
+theorem iUnion_univ_pi (t : ∀ i, ι → Set (π i)) :
(⋃ x : α → ι, pi univ fun i => t i (x i)) = pi univ fun i => ⋃ j : ι, t i j := by
ext
simp [Classical.skolem]
-#align set.Union_univ_pi Set.unionᵢ_univ_pi
+#align set.Union_univ_pi Set.iUnion_univ_pi
end Pi
@@ -2047,13 +2047,13 @@ namespace Function
namespace Surjective
-theorem unionᵢ_comp {f : ι → ι₂} (hf : Surjective f) (g : ι₂ → Set α) : (⋃ x, g (f x)) = ⋃ y, g y :=
- hf.supᵢ_comp g
-#align function.surjective.Union_comp Function.Surjective.unionᵢ_comp
+theorem iUnion_comp {f : ι → ι₂} (hf : Surjective f) (g : ι₂ → Set α) : (⋃ x, g (f x)) = ⋃ y, g y :=
+ hf.iSup_comp g
+#align function.surjective.Union_comp Function.Surjective.iUnion_comp
-theorem interᵢ_comp {f : ι → ι₂} (hf : Surjective f) (g : ι₂ → Set α) : (⋂ x, g (f x)) = ⋂ y, g y :=
- hf.infᵢ_comp g
-#align function.surjective.Inter_comp Function.Surjective.interᵢ_comp
+theorem iInter_comp {f : ι → ι₂} (hf : Surjective f) (g : ι₂ → Set α) : (⋂ x, g (f x)) = ⋂ y, g y :=
+ hf.iInf_comp g
+#align function.surjective.Inter_comp Function.Surjective.iInter_comp
end Surjective
@@ -2071,42 +2071,42 @@ variable {s t u : Set α} {f : α → β}
namespace Set
@[simp]
-theorem disjoint_unionᵢ_left {ι : Sort _} {s : ι → Set α} :
+theorem disjoint_iUnion_left {ι : Sort _} {s : ι → Set α} :
Disjoint (⋃ i, s i) t ↔ ∀ i, Disjoint (s i) t :=
- supᵢ_disjoint_iff
-#align set.disjoint_Union_left Set.disjoint_unionᵢ_left
+ iSup_disjoint_iff
+#align set.disjoint_Union_left Set.disjoint_iUnion_left
@[simp]
-theorem disjoint_unionᵢ_right {ι : Sort _} {s : ι → Set α} :
+theorem disjoint_iUnion_right {ι : Sort _} {s : ι → Set α} :
Disjoint t (⋃ i, s i) ↔ ∀ i, Disjoint t (s i) :=
- disjoint_supᵢ_iff
-#align set.disjoint_Union_right Set.disjoint_unionᵢ_right
+ disjoint_iSup_iff
+#align set.disjoint_Union_right Set.disjoint_iUnion_right
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
--Porting note: removing `simp`. `simp` can prove it
-theorem disjoint_unionᵢ₂_left {s : ∀ i, κ i → Set α} {t : Set α} :
+theorem disjoint_iUnion₂_left {s : ∀ i, κ i → Set α} {t : Set α} :
Disjoint (⋃ (i) (j), s i j) t ↔ ∀ i j, Disjoint (s i j) t :=
- supᵢ₂_disjoint_iff
-#align set.disjoint_Union₂_left Set.disjoint_unionᵢ₂_left
+ iSup₂_disjoint_iff
+#align set.disjoint_Union₂_left Set.disjoint_iUnion₂_left
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
--Porting note: removing `simp`. `simp` can prove it
-theorem disjoint_unionᵢ₂_right {s : Set α} {t : ∀ i, κ i → Set α} :
+theorem disjoint_iUnion₂_right {s : Set α} {t : ∀ i, κ i → Set α} :
Disjoint s (⋃ (i) (j), t i j) ↔ ∀ i j, Disjoint s (t i j) :=
- disjoint_supᵢ₂_iff
-#align set.disjoint_Union₂_right Set.disjoint_unionᵢ₂_right
+ disjoint_iSup₂_iff
+#align set.disjoint_Union₂_right Set.disjoint_iUnion₂_right
@[simp]
-theorem disjoint_unionₛ_left {S : Set (Set α)} {t : Set α} :
+theorem disjoint_sUnion_left {S : Set (Set α)} {t : Set α} :
Disjoint (⋃₀S) t ↔ ∀ s ∈ S, Disjoint s t :=
- supₛ_disjoint_iff
-#align set.disjoint_sUnion_left Set.disjoint_unionₛ_left
+ sSup_disjoint_iff
+#align set.disjoint_sUnion_left Set.disjoint_sUnion_left
@[simp]
-theorem disjoint_unionₛ_right {s : Set α} {S : Set (Set α)} :
+theorem disjoint_sUnion_right {s : Set α} {S : Set (Set α)} :
Disjoint s (⋃₀S) ↔ ∀ t ∈ S, Disjoint s t :=
- disjoint_supₛ_iff
-#align set.disjoint_sUnion_right Set.disjoint_unionₛ_right
+ disjoint_sSup_iff
+#align set.disjoint_sUnion_right Set.disjoint_sUnion_right
end Set
@@ -2119,31 +2119,31 @@ namespace Set
variable [CompleteLattice α]
-theorem Ici_supᵢ (f : ι → α) : Ici (⨆ i, f i) = ⋂ i, Ici (f i) :=
- ext fun _ => by simp only [mem_Ici, supᵢ_le_iff, mem_interᵢ]
-#align set.Ici_supr Set.Ici_supᵢ
+theorem Ici_iSup (f : ι → α) : Ici (⨆ i, f i) = ⋂ i, Ici (f i) :=
+ ext fun _ => by simp only [mem_Ici, iSup_le_iff, mem_iInter]
+#align set.Ici_supr Set.Ici_iSup
-theorem Iic_infᵢ (f : ι → α) : Iic (⨅ i, f i) = ⋂ i, Iic (f i) :=
- ext fun _ => by simp only [mem_Iic, le_infᵢ_iff, mem_interᵢ]
-#align set.Iic_infi Set.Iic_infᵢ
+theorem Iic_iInf (f : ι → α) : Iic (⨅ i, f i) = ⋂ i, Iic (f i) :=
+ ext fun _ => by simp only [mem_Iic, le_iInf_iff, mem_iInter]
+#align set.Iic_infi Set.Iic_iInf
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem Ici_supᵢ₂ (f : ∀ i, κ i → α) : Ici (⨆ (i) (j), f i j) = ⋂ (i) (j), Ici (f i j) := by
- simp_rw [Ici_supᵢ]
-#align set.Ici_supr₂ Set.Ici_supᵢ₂
+theorem Ici_iSup₂ (f : ∀ i, κ i → α) : Ici (⨆ (i) (j), f i j) = ⋂ (i) (j), Ici (f i j) := by
+ simp_rw [Ici_iSup]
+#align set.Ici_supr₂ Set.Ici_iSup₂
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem Iic_infᵢ₂ (f : ∀ i, κ i → α) : Iic (⨅ (i) (j), f i j) = ⋂ (i) (j), Iic (f i j) := by
- simp_rw [Iic_infᵢ]
-#align set.Iic_infi₂ Set.Iic_infᵢ₂
+theorem Iic_iInf₂ (f : ∀ i, κ i → α) : Iic (⨅ (i) (j), f i j) = ⋂ (i) (j), Iic (f i j) := by
+ simp_rw [Iic_iInf]
+#align set.Iic_infi₂ Set.Iic_iInf₂
-theorem Ici_supₛ (s : Set α) : Ici (supₛ s) = ⋂ a ∈ s, Ici a := by rw [supₛ_eq_supᵢ, Ici_supᵢ₂]
-#align set.Ici_Sup Set.Ici_supₛ
+theorem Ici_sSup (s : Set α) : Ici (sSup s) = ⋂ a ∈ s, Ici a := by rw [sSup_eq_iSup, Ici_iSup₂]
+#align set.Ici_Sup Set.Ici_sSup
-theorem Iic_infₛ (s : Set α) : Iic (infₛ s) = ⋂ a ∈ s, Iic a := by rw [infₛ_eq_infᵢ, Iic_infᵢ₂]
-#align set.Iic_Inf Set.Iic_infₛ
+theorem Iic_sInf (s : Set α) : Iic (sInf s) = ⋂ a ∈ s, Iic a := by rw [sInf_eq_iInf, Iic_iInf₂]
+#align set.Iic_Inf Set.Iic_sInf
end Set
@@ -2151,29 +2151,29 @@ namespace Set
variable (t : α → Set β)
-theorem bunionᵢ_diff_bunionᵢ_subset (s₁ s₂ : Set α) :
+theorem biUnion_diff_biUnion_subset (s₁ s₂ : Set α) :
((⋃ x ∈ s₁, t x) \ ⋃ x ∈ s₂, t x) ⊆ ⋃ x ∈ s₁ \ s₂, t x := by
- simp only [diff_subset_iff, ← bunionᵢ_union]
- apply bunionᵢ_subset_bunionᵢ_left
+ simp only [diff_subset_iff, ← biUnion_union]
+ apply biUnion_subset_biUnion_left
rw [union_diff_self]
apply subset_union_right
-#align set.bUnion_diff_bUnion_subset Set.bunionᵢ_diff_bunionᵢ_subset
+#align set.bUnion_diff_bUnion_subset Set.biUnion_diff_biUnion_subset
/-- If `t` is an indexed family of sets, then there is a natural map from `Σ i, t i` to `⋃ i, t i`
sending `⟨i, x⟩` to `x`. -/
-def sigmaToUnionᵢ (x : Σi, t i) : ⋃ i, t i :=
- ⟨x.2, mem_unionᵢ.2 ⟨x.1, x.2.2⟩⟩
-#align set.sigma_to_Union Set.sigmaToUnionᵢ
+def sigmaToiUnion (x : Σi, t i) : ⋃ i, t i :=
+ ⟨x.2, mem_iUnion.2 ⟨x.1, x.2.2⟩⟩
+#align set.sigma_to_Union Set.sigmaToiUnion
-theorem sigmaToUnionᵢ_surjective : Surjective (sigmaToUnionᵢ t)
+theorem sigmaToiUnion_surjective : Surjective (sigmaToiUnion t)
| ⟨b, hb⟩ =>
have : ∃ a, b ∈ t a := by simpa using hb
let ⟨a, hb⟩ := this
⟨⟨a, b, hb⟩, rfl⟩
-#align set.sigma_to_Union_surjective Set.sigmaToUnionᵢ_surjective
+#align set.sigma_to_Union_surjective Set.sigmaToiUnion_surjective
-theorem sigmaToUnionᵢ_injective (h : ∀ i j, i ≠ j → Disjoint (t i) (t j)) :
- Injective (sigmaToUnionᵢ t)
+theorem sigmaToiUnion_injective (h : ∀ i j, i ≠ j → Disjoint (t i) (t j)) :
+ Injective (sigmaToiUnion t)
| ⟨a₁, b₁, h₁⟩, ⟨a₂, b₂, h₂⟩, eq =>
have b_eq : b₁ = b₂ := congr_arg Subtype.val eq
have a_eq : a₁ = a₂ :=
@@ -2181,52 +2181,52 @@ theorem sigmaToUnionᵢ_injective (h : ∀ i j, i ≠ j → Disjoint (t i) (t j)
have : b₁ ∈ t a₁ ∩ t a₂ := ⟨h₁, b_eq.symm ▸ h₂⟩
(h _ _ ne).le_bot this
Sigma.eq a_eq <| Subtype.eq <| by subst b_eq; subst a_eq; rfl
-#align set.sigma_to_Union_injective Set.sigmaToUnionᵢ_injective
+#align set.sigma_to_Union_injective Set.sigmaToiUnion_injective
-theorem sigmaToUnionᵢ_bijective (h : ∀ i j, i ≠ j → Disjoint (t i) (t j)) :
- Bijective (sigmaToUnionᵢ t) :=
- ⟨sigmaToUnionᵢ_injective t h, sigmaToUnionᵢ_surjective t⟩
-#align set.sigma_to_Union_bijective Set.sigmaToUnionᵢ_bijective
+theorem sigmaToiUnion_bijective (h : ∀ i j, i ≠ j → Disjoint (t i) (t j)) :
+ Bijective (sigmaToiUnion t) :=
+ ⟨sigmaToiUnion_injective t h, sigmaToiUnion_surjective t⟩
+#align set.sigma_to_Union_bijective Set.sigmaToiUnion_bijective
/-- Equivalence between a disjoint union and a dependent sum. -/
noncomputable def unionEqSigmaOfDisjoint {t : α → Set β} (h : ∀ i j, i ≠ j → Disjoint (t i) (t j)) :
(⋃ i, t i) ≃ Σi, t i :=
- (Equiv.ofBijective _ <| sigmaToUnionᵢ_bijective t h).symm
+ (Equiv.ofBijective _ <| sigmaToiUnion_bijective t h).symm
#align set.Union_eq_sigma_of_disjoint Set.unionEqSigmaOfDisjoint
-theorem unionᵢ_ge_eq_unionᵢ_nat_add (u : ℕ → Set α) (n : ℕ) : (⋃ i ≥ n, u i) = ⋃ i, u (i + n) :=
- supᵢ_ge_eq_supᵢ_nat_add u n
-#align set.Union_ge_eq_Union_nat_add Set.unionᵢ_ge_eq_unionᵢ_nat_add
+theorem iUnion_ge_eq_iUnion_nat_add (u : ℕ → Set α) (n : ℕ) : (⋃ i ≥ n, u i) = ⋃ i, u (i + n) :=
+ iSup_ge_eq_iSup_nat_add u n
+#align set.Union_ge_eq_Union_nat_add Set.iUnion_ge_eq_iUnion_nat_add
-theorem interᵢ_ge_eq_interᵢ_nat_add (u : ℕ → Set α) (n : ℕ) : (⋂ i ≥ n, u i) = ⋂ i, u (i + n) :=
- infᵢ_ge_eq_infᵢ_nat_add u n
-#align set.Inter_ge_eq_Inter_nat_add Set.interᵢ_ge_eq_interᵢ_nat_add
+theorem iInter_ge_eq_iInter_nat_add (u : ℕ → Set α) (n : ℕ) : (⋂ i ≥ n, u i) = ⋂ i, u (i + n) :=
+ iInf_ge_eq_iInf_nat_add u n
+#align set.Inter_ge_eq_Inter_nat_add Set.iInter_ge_eq_iInter_nat_add
-theorem _root_.Monotone.unionᵢ_nat_add {f : ℕ → Set α} (hf : Monotone f) (k : ℕ) :
+theorem _root_.Monotone.iUnion_nat_add {f : ℕ → Set α} (hf : Monotone f) (k : ℕ) :
(⋃ n, f (n + k)) = ⋃ n, f n :=
- hf.supᵢ_nat_add k
-#align monotone.Union_nat_add Monotone.unionᵢ_nat_add
+ hf.iSup_nat_add k
+#align monotone.Union_nat_add Monotone.iUnion_nat_add
-theorem _root_.Antitone.interᵢ_nat_add {f : ℕ → Set α} (hf : Antitone f) (k : ℕ) :
+theorem _root_.Antitone.iInter_nat_add {f : ℕ → Set α} (hf : Antitone f) (k : ℕ) :
(⋂ n, f (n + k)) = ⋂ n, f n :=
- hf.infᵢ_nat_add k
-#align antitone.Inter_nat_add Antitone.interᵢ_nat_add
+ hf.iInf_nat_add k
+#align antitone.Inter_nat_add Antitone.iInter_nat_add
/-Porting note: removing `simp`. LHS does not simplify. Possible linter bug. Zulip discussion:
https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/complete_lattice.20and.20has_sup/near/316497982
-/
-theorem unionᵢ_interᵢ_ge_nat_add (f : ℕ → Set α) (k : ℕ) :
+theorem iUnion_iInter_ge_nat_add (f : ℕ → Set α) (k : ℕ) :
(⋃ n, ⋂ i ≥ n, f (i + k)) = ⋃ n, ⋂ i ≥ n, f i :=
- supᵢ_infᵢ_ge_nat_add f k
-#align set.Union_Inter_ge_nat_add Set.unionᵢ_interᵢ_ge_nat_add
+ iSup_iInf_ge_nat_add f k
+#align set.Union_Inter_ge_nat_add Set.iUnion_iInter_ge_nat_add
-theorem union_unionᵢ_nat_succ (u : ℕ → Set α) : (u 0 ∪ ⋃ i, u (i + 1)) = ⋃ i, u i :=
- sup_supᵢ_nat_succ u
-#align set.union_Union_nat_succ Set.union_unionᵢ_nat_succ
+theorem union_iUnion_nat_succ (u : ℕ → Set α) : (u 0 ∪ ⋃ i, u (i + 1)) = ⋃ i, u i :=
+ sup_iSup_nat_succ u
+#align set.union_Union_nat_succ Set.union_iUnion_nat_succ
-theorem inter_interᵢ_nat_succ (u : ℕ → Set α) : (u 0 ∩ ⋂ i, u (i + 1)) = ⋂ i, u i :=
- inf_infᵢ_nat_succ u
-#align set.inter_Inter_nat_succ Set.inter_interᵢ_nat_succ
+theorem inter_iInter_nat_succ (u : ℕ → Set α) : (u 0 ∩ ⋂ i, u (i + 1)) = ⋂ i, u i :=
+ inf_iInf_nat_succ u
+#align set.inter_Inter_nat_succ Set.inter_iInter_nat_succ
end Set
@@ -2234,19 +2234,19 @@ open Set
variable [CompleteLattice β]
-theorem supᵢ_unionᵢ (s : ι → Set α) (f : α → β) : (⨆ a ∈ ⋃ i, s i, f a) = ⨆ (i) (a ∈ s i), f a := by
- rw [supᵢ_comm]
- simp_rw [mem_unionᵢ, supᵢ_exists]
-#align supr_Union supᵢ_unionᵢ
+theorem iSup_iUnion (s : ι → Set α) (f : α → β) : (⨆ a ∈ ⋃ i, s i, f a) = ⨆ (i) (a ∈ s i), f a := by
+ rw [iSup_comm]
+ simp_rw [mem_iUnion, iSup_exists]
+#align supr_Union iSup_iUnion
-theorem infᵢ_unionᵢ (s : ι → Set α) (f : α → β) : (⨅ a ∈ ⋃ i, s i, f a) = ⨅ (i) (a ∈ s i), f a :=
- @supᵢ_unionᵢ α βᵒᵈ _ _ s f
-#align infi_Union infᵢ_unionᵢ
+theorem iInf_iUnion (s : ι → Set α) (f : α → β) : (⨅ a ∈ ⋃ i, s i, f a) = ⨅ (i) (a ∈ s i), f a :=
+ @iSup_iUnion α βᵒᵈ _ _ s f
+#align infi_Union iInf_iUnion
-theorem supₛ_unionₛ (s : Set (Set β)) : supₛ (⋃₀s) = ⨆ t ∈ s, supₛ t := by
- simp only [unionₛ_eq_bunionᵢ, supₛ_eq_supᵢ, supᵢ_unionᵢ]
-#align Sup_sUnion supₛ_unionₛ
+theorem sSup_sUnion (s : Set (Set β)) : sSup (⋃₀s) = ⨆ t ∈ s, sSup t := by
+ simp only [sUnion_eq_biUnion, sSup_eq_iSup, iSup_iUnion]
+#align Sup_sUnion sSup_sUnion
-theorem infₛ_unionₛ (s : Set (Set β)) : infₛ (⋃₀s) = ⨅ t ∈ s, infₛ t :=
- @supₛ_unionₛ βᵒᵈ _ _
-#align Inf_sUnion infₛ_unionₛ
+theorem sInf_sUnion (s : Set (Set β)) : sInf (⋃₀s) = ⨅ t ∈ s, sInf t :=
+ @sSup_sUnion βᵒᵈ _ _
+#align Inf_sUnion sInf_sUnion
@@ -1105,6 +1105,14 @@ theorem interₛ_eq_univ {S : Set (Set α)} : ⋂₀ S = univ ↔ ∀ s ∈ S, s
infₛ_eq_top
#align set.sInter_eq_univ Set.interₛ_eq_univ
+/-- If all sets in a collection are either `∅` or `Set.univ`, then so is their union. -/
+theorem unionₛ_mem_empty_univ {S : Set (Set α)} (h : S ⊆ {∅, univ}) :
+ ⋃₀ S ∈ ({∅, univ} :Set (Set α)) := by
+ simp only [mem_insert_iff, mem_singleton_iff, or_iff_not_imp_left, unionₛ_eq_empty, not_forall]
+ rintro ⟨s, hs, hne⟩
+ obtain rfl : s = univ := (h hs).resolve_left hne
+ exact univ_subset_iff.1 <| subset_unionₛ_of_mem hs
+
@[simp]
theorem nonempty_unionₛ {S : Set (Set α)} : (⋃₀S).Nonempty ↔ ∃ s ∈ S, Set.Nonempty s := by
simp [nonempty_iff_ne_empty]
This was done semi-automatically with some regular expressions in vim in contrast to the fully automatic https://github.com/leanprover-community/mathlib4/pull/1523.
Co-authored-by: Moritz Firsching <firsching@google.com>
@@ -1831,16 +1831,16 @@ theorem interₛ_prod_interₛ {S : Set (Set α)} {T : Set (Set β)} (hS : S.Non
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem interₛ_prod {S : Set (Set α)} (hS : S.Nonempty) (t : Set β) : ⋂₀ S ×ˢ t = ⋂ s ∈ S, s ×ˢ t :=
- by
+theorem interₛ_prod {S : Set (Set α)} (hS : S.Nonempty) (t : Set β) :
+ ⋂₀ S ×ˢ t = ⋂ s ∈ S, s ×ˢ t := by
rw [← interₛ_singleton t, interₛ_prod_interₛ hS (singleton_nonempty t), interₛ_singleton]
simp_rw [prod_singleton, mem_image, interᵢ_exists, binterᵢ_and', interᵢ_interᵢ_eq_right]
#align set.sInter_prod Set.interₛ_prod
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem prod_interₛ {T : Set (Set β)} (hT : T.Nonempty) (s : Set α) : s ×ˢ ⋂₀ T = ⋂ t ∈ T, s ×ˢ t :=
- by
+theorem prod_interₛ {T : Set (Set β)} (hT : T.Nonempty) (s : Set α) :
+ s ×ˢ ⋂₀ T = ⋂ t ∈ T, s ×ˢ t := by
rw [← interₛ_singleton s, interₛ_prod_interₛ (singleton_nonempty s) hT, interₛ_singleton]
simp_rw [singleton_prod, mem_image, interᵢ_exists, binterᵢ_and', interᵢ_interᵢ_eq_right]
#align set.prod_sInter Set.prod_interₛ
@@ -1504,8 +1504,7 @@ theorem surjective_iff_surjective_of_unionᵢ_eq_univ :
Set.mem_unionᵢ.mp
(show x ∈ Set.unionᵢ U by rw [hU]; triv)
exact ⟨_, congr_arg Subtype.val (H i ⟨x, hi⟩).choose_spec⟩
-#align set.surjective_iff_surjective_of_Union_eq_univ
- Set.surjective_iff_surjective_of_unionᵢ_eq_univ
+#align set.surjective_iff_surjective_of_Union_eq_univ Set.surjective_iff_surjective_of_unionᵢ_eq_univ
theorem bijective_iff_bijective_of_unionᵢ_eq_univ :
Bijective f ↔ ∀ i, Bijective ((U i).restrictPreimage f) := by
Match https://github.com/leanprover-community/mathlib/pull/17901 and https://github.com/leanprover-community/mathlib/pull/17957
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jeremy Avigad, Leonardo de Moura, Johannes Hölzl, Mario Carneiro
! This file was ported from Lean 3 source module data.set.lattice
-! leanprover-community/mathlib commit 3d95492390dc90e34184b13e865f50bc67f30fbb
+! leanprover-community/mathlib commit b86832321b586c6ac23ef8cdef6a7a27e42b13bd
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -449,14 +449,43 @@ theorem interᵢ_congr_of_surjective {f : ι → Set α} {g : ι₂ → Set α}
h1.infᵢ_congr h h2
#align set.Inter_congr_of_surjective Set.interᵢ_congr_of_surjective
-theorem unionᵢ_const [Nonempty ι] (s : Set β) : (⋃ _i : ι, s) = s :=
- supᵢ_const
-#align set.Union_const Set.unionᵢ_const
+lemma unionᵢ_congr {s t : ι → Set α} (h : ∀ i, s i = t i) : (⋃ i, s i) = ⋃ i, t i := supᵢ_congr h
+#align set.Union_congr Set.unionᵢ_congr
+lemma interᵢ_congr {s t : ι → Set α} (h : ∀ i, s i = t i) : (⋂ i, s i) = ⋂ i, t i := infᵢ_congr h
+#align set.Inter_congr Set.interᵢ_congr
+
+/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+lemma unionᵢ₂_congr {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j = t i j) :
+ (⋃ (i) (j), s i j) = ⋃ (i) (j), t i j :=
+ unionᵢ_congr fun i => unionᵢ_congr <| h i
+#align set.Union₂_congr Set.unionᵢ₂_congr
-theorem interᵢ_const [Nonempty ι] (s : Set β) : (⋂ _i : ι, s) = s :=
- infᵢ_const
+/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
+lemma interᵢ₂_congr {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j = t i j) :
+ (⋂ (i) (j), s i j) = ⋂ (i) (j), t i j :=
+ interᵢ_congr fun i => interᵢ_congr <| h i
+#align set.Inter₂_congr Set.interᵢ₂_congr
+
+section Nonempty
+variable [Nonempty ι] {f : ι → Set α} {s : Set α}
+
+lemma unionᵢ_const (s : Set β) : (⋃ _i : ι, s) = s := supᵢ_const
+#align set.Union_const Set.unionᵢ_const
+lemma interᵢ_const (s : Set β) : (⋂ _i : ι, s) = s := infᵢ_const
#align set.Inter_const Set.interᵢ_const
+lemma unionᵢ_eq_const (hf : ∀ i, f i = s) : (⋃ i, f i) = s :=
+(unionᵢ_congr hf).trans $ unionᵢ_const _
+#align set.Union_eq_const Set.unionᵢ_eq_const
+
+lemma interᵢ_eq_const (hf : ∀ i, f i = s) : (⋂ i, f i) = s :=
+(interᵢ_congr hf).trans $ interᵢ_const _
+#align set.Inter_eq_const Set.interᵢ_eq_const
+
+end Nonempty
+
@[simp]
theorem compl_unionᵢ (s : ι → Set β) : (⋃ i, s i)ᶜ = ⋂ i, s iᶜ :=
compl_supᵢ
@@ -864,28 +893,6 @@ theorem binterᵢ_mono {s s' : Set α} {t t' : α → Set β} (hs : s ⊆ s') (h
(binterᵢ_subset_binterᵢ_left hs).trans <| interᵢ₂_mono h
#align set.bInter_mono Set.binterᵢ_mono
-theorem unionᵢ_congr {s t : ι → Set α} (h : ∀ i, s i = t i) : (⋃ i, s i) = ⋃ i, t i :=
- supᵢ_congr h
-#align set.Union_congr Set.unionᵢ_congr
-
-theorem interᵢ_congr {s t : ι → Set α} (h : ∀ i, s i = t i) : (⋂ i, s i) = ⋂ i, t i :=
- infᵢ_congr h
-#align set.Inter_congr Set.interᵢ_congr
-
-/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem unionᵢ₂_congr {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j = t i j) :
- (⋃ (i) (j), s i j) = ⋃ (i) (j), t i j :=
- unionᵢ_congr fun i => unionᵢ_congr <| h i
-#align set.Union₂_congr Set.unionᵢ₂_congr
-
-/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
-theorem interᵢ₂_congr {s t : ∀ i, κ i → Set α} (h : ∀ i j, s i j = t i j) :
- (⋂ (i) (j), s i j) = ⋂ (i) (j), t i j :=
- interᵢ_congr fun i => interᵢ_congr <| h i
-#align set.Inter₂_congr Set.interᵢ₂_congr
-
theorem bunionᵢ_eq_unionᵢ (s : Set α) (t : ∀ x ∈ s, Set β) :
(⋃ x ∈ s, t x ‹_›) = ⋃ x : s, t x x.2 :=
supᵢ_subtype'
@@ -26,7 +26,7 @@ for `Set α`, and some more set constructions.
* `Set.unionₛ`: **s**et **union**. Union of sets belonging to a set of sets.
* `Set.interₛ_eq_binterᵢ`, `Set.unionₛ_eq_binterᵢ`: Shows that `⋂₀ s = ⋂ x ∈ s, x` and
`⋃₀ s = ⋃ x ∈ s, x`.
-* `Set.complete_boolean_algebra`: `Set α` is a `CompleteBooleanAlgebra` with `≤ = ⊆`, `< = ⊂`,
+* `Set.completeBooleanAlgebra`: `Set α` is a `CompleteBooleanAlgebra` with `≤ = ⊆`, `< = ⊂`,
`⊓ = ∩`, `⊔ = ∪`, `⨅ = ⋂`, `⨆ = ⋃` and `\` as the set difference. See `Set.BooleanAlgebra`.
* `Set.kern_image`: For a function `f : α → β`, `s.kern_image f` is the set of `y` such that
`f ⁻¹ y ⊆ s`.
@@ -577,7 +577,7 @@ theorem interᵢ_union_of_antitone {ι α} [Preorder ι] [IsDirected ι (· ≤
infᵢ_sup_of_antitone hs ht
#align set.Inter_union_of_antitone Set.interᵢ_union_of_antitone
-/-- An equality version of this lemma is `unionᵢ_interᵢ_of_monotone` in `data.set.finite`. -/
+/-- An equality version of this lemma is `unionᵢ_interᵢ_of_monotone` in `Data.Set.Finite`. -/
theorem unionᵢ_interᵢ_subset {s : ι → ι' → Set α} : (⋃ j, ⋂ i, s i j) ⊆ ⋂ i, ⋃ j, s i j :=
supᵢ_infᵢ_le_infᵢ_supᵢ (flip s)
#align set.Union_Inter_subset Set.unionᵢ_interᵢ_subset
@@ -1401,7 +1401,7 @@ theorem union_distrib_interᵢ₂_right (s : ∀ i, κ i → Set α) (t : Set α
section Function
-/-! ### `maps_to` -/
+/-! ### `mapsTo` -/
theorem mapsTo_unionₛ {S : Set (Set α)} {t : Set β} {f : α → β} (H : ∀ s ∈ S, MapsTo f s t) :
@@ -2047,8 +2047,6 @@ end Function
/-!
### Disjoint sets
-
-We define some lemmas in the `Disjoint` namespace to be able to use projection notation.
-/
@@ -87,7 +87,7 @@ def unionₛ (S : Set (Set α)) : Set α :=
#align set.sUnion Set.unionₛ
/-- Notation for Set.unionₛ`. Union of a set of sets. -/
-prefix:110 "⋃₀" => unionₛ
+prefix:110 "⋃₀ " => unionₛ
@[simp]
theorem mem_interₛ {x : α} {S : Set (Set α)} : x ∈ ⋂₀ S ↔ ∀ t ∈ S, x ∈ t :=
synchronize with https://github.com/leanprover-community/mathlib/pull/17882
Make disjoint_singleton
@[simp 1100]
because the linter complains it is not in simpNF (because of disjoint_singleton_left
and disjoint_singleton_right
).
Removing simp
of disjoint_singleton
, making disjoint_singleton_left
have a greater priority than disjoint_singleton_right
, then disjoint_singleton
can be proved by simp
.
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jeremy Avigad, Leonardo de Moura, Johannes Hölzl, Mario Carneiro
! This file was ported from Lean 3 source module data.set.lattice
-! leanprover-community/mathlib commit 550b58538991c8977703fdeb7c9d51a5aa27df11
+! leanprover-community/mathlib commit 3d95492390dc90e34184b13e865f50bc67f30fbb
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -185,63 +185,6 @@ instance : CompleteBooleanAlgebra (Set α) :=
infᵢ_sup_le_sup_infₛ := fun s S x => Iff.mp <| by simp [forall_or_left]
inf_supₛ_le_supᵢ_inf := fun s S x => Iff.mp <| by simp [exists_and_left] }
-/-- `Set.image` is monotone. See `Set.image_image` for the statement in terms of `⊆`. -/
-theorem monotone_image {f : α → β} : Monotone (image f) := fun _ _ => image_subset _
-#align set.monotone_image Set.monotone_image
-
-theorem _root_.Monotone.inter [Preorder β] {f g : β → Set α} (hf : Monotone f) (hg : Monotone g) :
- Monotone fun x => f x ∩ g x :=
- hf.inf hg
-#align monotone.inter Monotone.inter
-
-theorem _root_.MonotoneOn.inter [Preorder β] {f g : β → Set α} {s : Set β} (hf : MonotoneOn f s)
- (hg : MonotoneOn g s) : MonotoneOn (fun x => f x ∩ g x) s :=
- hf.inf hg
-#align monotone_on.inter MonotoneOn.inter
-
-theorem _root_.Antitone.inter [Preorder β] {f g : β → Set α} (hf : Antitone f) (hg : Antitone g) :
- Antitone fun x => f x ∩ g x :=
- hf.inf hg
-#align antitone.inter Antitone.inter
-
-theorem _root_.AntitoneOn.inter [Preorder β] {f g : β → Set α} {s : Set β} (hf : AntitoneOn f s)
- (hg : AntitoneOn g s) : AntitoneOn (fun x => f x ∩ g x) s :=
- hf.inf hg
-#align antitone_on.inter AntitoneOn.inter
-
-theorem _root_.Monotone.union [Preorder β] {f g : β → Set α} (hf : Monotone f) (hg : Monotone g) :
- Monotone fun x => f x ∪ g x :=
- hf.sup hg
-#align monotone.union Monotone.union
-
-theorem _root_.MonotoneOn.union [Preorder β] {f g : β → Set α} {s : Set β} (hf : MonotoneOn f s)
- (hg : MonotoneOn g s) : MonotoneOn (fun x => f x ∪ g x) s :=
- hf.sup hg
-#align monotone_on.union MonotoneOn.union
-
-theorem _root_.Antitone.union [Preorder β] {f g : β → Set α} (hf : Antitone f) (hg : Antitone g) :
- Antitone fun x => f x ∪ g x :=
- hf.sup hg
-#align antitone.union Antitone.union
-
-theorem _root_.AntitoneOn.union [Preorder β] {f g : β → Set α} {s : Set β} (hf : AntitoneOn f s)
- (hg : AntitoneOn g s) : AntitoneOn (fun x => f x ∪ g x) s :=
- hf.sup hg
-#align antitone_on.union AntitoneOn.union
-
-theorem monotone_setOf [Preorder α] {p : α → β → Prop} (hp : ∀ b, Monotone fun a => p a b) :
- Monotone fun a => { b | p a b } := fun _ _ h b => hp b h
-#align set.monotone_set_of Set.monotone_setOf
-
-theorem antitone_setOf [Preorder α] {p : α → β → Prop} (hp : ∀ b, Antitone fun a => p a b) :
- Antitone fun a => { b | p a b } := fun _ _ h b => hp b h
-#align set.antitone_set_of Set.antitone_setOf
-
-/-- Quantifying over a set is antitone in the set -/
-theorem antitone_bforall {P : α → Prop} : Antitone fun s : Set α => ∀ x ∈ s, P x :=
- fun _ _ hst h x hx => h x <| hst hx
-#align set.antitone_bforall Set.antitone_bforall
-
section GaloisConnection
variable {f : α → β}
@@ -1539,25 +1482,6 @@ open Function
variable (s : Set β) {f : α → β} {U : ι → Set β} (hU : unionᵢ U = univ)
-theorem restrictPreimage_injective (hf : Injective f) : Injective (s.restrictPreimage f) :=
- fun _ _ e => Subtype.val_injective (hf (Subtype.ext_iff_val.1 e))
-#align set.restrict_preimage_injective Set.restrictPreimage_injective
-
-theorem restrictPreimage_surjective (hf : Surjective f) : Surjective (s.restrictPreimage f) :=
- fun x => let ⟨y, hy⟩ := hf x; ⟨⟨y, mem_preimage.2 <| hy ▸ x.prop⟩,
- Subtype.val_injective <| by conv_rhs => rw [← hy]; rfl⟩
-#align set.restrict_preimage_surjective Set.restrictPreimage_surjective
-
-theorem restrictPreimage_bijective (hf : Bijective f) : Bijective (s.restrictPreimage f) :=
- ⟨s.restrictPreimage_injective hf.1, s.restrictPreimage_surjective hf.2⟩
-#align set.restrict_preimage_bijective Set.restrictPreimage_bijective
-
-alias Set.restrictPreimage_injective ← _root_.Function.Injective.restrictPreimage
-
-alias Set.restrictPreimage_surjective ← _root_.Function.Surjective.restrictPreimage
-
-alias Set.restrictPreimage_bijective ← _root_.Function.Bijective.restrictPreimage
-
theorem injective_iff_injective_of_unionᵢ_eq_univ :
Injective f ↔ ∀ i, Injective ((U i).restrictPreimage f) := by
refine' ⟨fun H i => (U i).restrictPreimage_injective H, fun H x y e => _⟩
@@ -1588,17 +1512,6 @@ end
/-! ### `InjOn` -/
-theorem InjOn.image_inter {f : α → β} {s t u : Set α} (hf : InjOn f u) (hs : s ⊆ u) (ht : t ⊆ u) :
- f '' (s ∩ t) = f '' s ∩ f '' t := by
- apply Subset.antisymm (image_inter_subset _ _ _)
- rintro x ⟨⟨y, ys, hy⟩, ⟨z, zt, hz⟩⟩
- have : y = z := by
- apply hf (hs ys) (ht zt)
- rwa [← hz] at hy
- rw [← this] at zt
- exact ⟨y, ⟨ys, zt⟩, hy⟩
-#align set.inj_on.image_inter Set.InjOn.image_inter
-
theorem InjOn.image_interᵢ_eq [Nonempty ι] {s : ι → Set α} {f : α → β} (h : InjOn f (⋃ i, s i)) :
(f '' ⋂ i, s i) = ⋂ i, f '' s i := by
inhabit ι
@@ -2143,94 +2056,8 @@ section Disjoint
variable {s t u : Set α} {f : α → β}
-namespace Disjoint
-
-theorem union_left (hs : Disjoint s u) (ht : Disjoint t u) : Disjoint (s ∪ t) u :=
- hs.sup_left ht
-#align disjoint.union_left Disjoint.union_left
-
-theorem union_right (ht : Disjoint s t) (hu : Disjoint s u) : Disjoint s (t ∪ u) :=
- ht.sup_right hu
-#align disjoint.union_right Disjoint.union_right
-
-theorem inter_left (u : Set α) (h : Disjoint s t) : Disjoint (s ∩ u) t :=
- inf_left _ h
-#align disjoint.inter_left Disjoint.inter_left
-
-theorem inter_left' (u : Set α) (h : Disjoint s t) : Disjoint (u ∩ s) t :=
- inf_left' _ h
-#align disjoint.inter_left' Disjoint.inter_left'
-
-theorem inter_right (u : Set α) (h : Disjoint s t) : Disjoint s (t ∩ u) :=
- inf_right _ h
-#align disjoint.inter_right Disjoint.inter_right
-
-theorem inter_right' (u : Set α) (h : Disjoint s t) : Disjoint s (u ∩ t) :=
- inf_right' _ h
-#align disjoint.inter_right' Disjoint.inter_right'
-
-theorem subset_left_of_subset_union (h : s ⊆ t ∪ u) (hac : Disjoint s u) : s ⊆ t :=
- hac.left_le_of_le_sup_right h
-#align disjoint.subset_left_of_subset_union Disjoint.subset_left_of_subset_union
-
-theorem subset_right_of_subset_union (h : s ⊆ t ∪ u) (hab : Disjoint s t) : s ⊆ u :=
- hab.left_le_of_le_sup_left h
-#align disjoint.subset_right_of_subset_union Disjoint.subset_right_of_subset_union
-
-theorem preimage {α β} (f : α → β) {s t : Set β} (h : Disjoint s t) :
- Disjoint (f ⁻¹' s) (f ⁻¹' t) :=
- disjoint_iff_inf_le.mpr fun _ hx => h.le_bot hx
-#align disjoint.preimage Disjoint.preimage
-
-end Disjoint
-
namespace Set
-theorem not_disjoint_iff : ¬Disjoint s t ↔ ∃ x, x ∈ s ∧ x ∈ t :=
- Set.disjoint_iff.not.trans <| not_forall.trans <| exists_congr fun _ => not_not
-#align set.not_disjoint_iff Set.not_disjoint_iff
-
-theorem not_disjoint_iff_nonempty_inter : ¬Disjoint s t ↔ (s ∩ t).Nonempty :=
- not_disjoint_iff
-#align set.not_disjoint_iff_nonempty_inter Set.not_disjoint_iff_nonempty_inter
-
-alias not_disjoint_iff_nonempty_inter ↔ _ nonempty.not_disjoint
-
-theorem disjoint_or_nonempty_inter (s t : Set α) : Disjoint s t ∨ (s ∩ t).Nonempty :=
- (em _).imp_right not_disjoint_iff_nonempty_inter.mp
-#align set.disjoint_or_nonempty_inter Set.disjoint_or_nonempty_inter
-
-theorem disjoint_iff_forall_ne : Disjoint s t ↔ ∀ x ∈ s, ∀ y ∈ t, x ≠ y := by
- simp only [Ne.def, disjoint_left, @imp_not_comm _ (_ = _), forall_eq']
-#align set.disjoint_iff_forall_ne Set.disjoint_iff_forall_ne
-
-theorem _root_.Disjoint.ne_of_mem (h : Disjoint s t) {x y} (hx : x ∈ s) (hy : y ∈ t) : x ≠ y :=
- disjoint_iff_forall_ne.mp h x hx y hy
-#align disjoint.ne_of_mem Disjoint.ne_of_mem
-
-theorem disjoint_of_subset_left (h : s ⊆ u) (d : Disjoint u t) : Disjoint s t :=
- d.mono_left h
-#align set.disjoint_of_subset_left Set.disjoint_of_subset_left
-
-theorem disjoint_of_subset_right (h : t ⊆ u) (d : Disjoint s u) : Disjoint s t :=
- d.mono_right h
-#align set.disjoint_of_subset_right Set.disjoint_of_subset_right
-
-theorem disjoint_of_subset {s t u v : Set α} (h1 : s ⊆ u) (h2 : t ⊆ v) (d : Disjoint u v) :
- Disjoint s t :=
- d.mono h1 h2
-#align set.disjoint_of_subset Set.disjoint_of_subset
-
-@[simp]
-theorem disjoint_union_left : Disjoint (s ∪ t) u ↔ Disjoint s u ∧ Disjoint t u :=
- disjoint_sup_left
-#align set.disjoint_union_left Set.disjoint_union_left
-
-@[simp]
-theorem disjoint_union_right : Disjoint s (t ∪ u) ↔ Disjoint s t ∧ Disjoint s u :=
- disjoint_sup_right
-#align set.disjoint_union_right Set.disjoint_union_right
-
@[simp]
theorem disjoint_unionᵢ_left {ι : Sort _} {s : ι → Set α} :
Disjoint (⋃ i, s i) t ↔ ∀ i, Disjoint (s i) t :=
@@ -2269,94 +2096,6 @@ theorem disjoint_unionₛ_right {s : Set α} {S : Set (Set α)} :
disjoint_supₛ_iff
#align set.disjoint_sUnion_right Set.disjoint_unionₛ_right
-theorem disjoint_diff {a b : Set α} : Disjoint a (b \ a) :=
- disjoint_iff.2 (inter_diff_self _ _)
-#align set.disjoint_diff Set.disjoint_diff
-
-@[simp]
-theorem disjoint_empty (s : Set α) : Disjoint s ∅ :=
- disjoint_bot_right
-#align set.disjoint_empty Set.disjoint_empty
-
-@[simp]
-theorem empty_disjoint (s : Set α) : Disjoint ∅ s :=
- disjoint_bot_left
-#align set.empty_disjoint Set.empty_disjoint
-
-@[simp]
-theorem univ_disjoint {s : Set α} : Disjoint univ s ↔ s = ∅ :=
- top_disjoint
-#align set.univ_disjoint Set.univ_disjoint
-
-@[simp]
-theorem disjoint_univ {s : Set α} : Disjoint s univ ↔ s = ∅ :=
- disjoint_top
-#align set.disjoint_univ Set.disjoint_univ
-
-@[simp]
-theorem disjoint_singleton_left {a : α} {s : Set α} : Disjoint {a} s ↔ a ∉ s := by
- simp [Set.disjoint_iff, subset_def]
-#align set.disjoint_singleton_left Set.disjoint_singleton_left
-
-@[simp]
-theorem disjoint_singleton_right {a : α} {s : Set α} : Disjoint s {a} ↔ a ∉ s := by
- rw [Disjoint.comm]; exact disjoint_singleton_left
-#align set.disjoint_singleton_right Set.disjoint_singleton_right
-
---Porting note: removing `simp`. `simp [eq_comm]` can prove it
-theorem disjoint_singleton {a b : α} : Disjoint ({a} : Set α) {b} ↔ a ≠ b := by
- rw [disjoint_singleton_left, mem_singleton_iff]
-#align set.disjoint_singleton Set.disjoint_singleton
-
-theorem disjoint_image_image {f : β → α} {g : γ → α} {s : Set β} {t : Set γ}
- (h : ∀ b ∈ s, ∀ c ∈ t, f b ≠ g c) : Disjoint (f '' s) (g '' t) :=
- disjoint_iff_inf_le.mpr <| by rintro a ⟨⟨b, hb, eq⟩, c, hc, rfl⟩; exact h b hb c hc eq
-#align set.disjoint_image_image Set.disjoint_image_image
-
-theorem disjoint_image_of_injective {f : α → β} (hf : Injective f) {s t : Set α}
- (hd : Disjoint s t) : Disjoint (f '' s) (f '' t) :=
- disjoint_image_image fun _ hx _ hy => hf.ne fun H => Set.disjoint_iff.1 hd ⟨hx, H.symm ▸ hy⟩
-#align set.disjoint_image_of_injective Set.disjoint_image_of_injective
-
-theorem _root_.Disjoint.of_image (h : Disjoint (f '' s) (f '' t)) : Disjoint s t :=
- disjoint_iff_inf_le.mpr fun _ hx =>
- disjoint_left.1 h (mem_image_of_mem _ hx.1) (mem_image_of_mem _ hx.2)
-#align disjoint.of_image Disjoint.of_image
-
-theorem disjoint_image_iff (hf : Injective f) : Disjoint (f '' s) (f '' t) ↔ Disjoint s t :=
- ⟨Disjoint.of_image, disjoint_image_of_injective hf⟩
-#align set.disjoint_image_iff Set.disjoint_image_iff
-
-theorem _root_.Disjoint.of_preimage (hf : Surjective f) {s t : Set β}
- (h : Disjoint (f ⁻¹' s) (f ⁻¹' t)) : Disjoint s t := by
- rw [disjoint_iff_inter_eq_empty, ← image_preimage_eq (_ ∩ _) hf, preimage_inter, h.inter_eq,
- image_empty]
-#align disjoint.of_preimage Disjoint.of_preimage
-
-theorem disjoint_preimage_iff (hf : Surjective f) {s t : Set β} :
- Disjoint (f ⁻¹' s) (f ⁻¹' t) ↔ Disjoint s t :=
- ⟨Disjoint.of_preimage hf, Disjoint.preimage _⟩
-#align set.disjoint_preimage_iff Set.disjoint_preimage_iff
-
-theorem preimage_eq_empty {f : α → β} {s : Set β} (h : Disjoint s (range f)) : f ⁻¹' s = ∅ := by
- simpa using h.preimage f
-#align set.preimage_eq_empty Set.preimage_eq_empty
-
-theorem preimage_eq_empty_iff {s : Set β} : f ⁻¹' s = ∅ ↔ Disjoint s (range f) :=
- ⟨fun h => by
- simp only [eq_empty_iff_forall_not_mem, disjoint_iff_inter_eq_empty, not_exists, mem_inter_iff,
- not_and, mem_range, mem_preimage] at h⊢
- intro y hy x hx
- rw [← hx] at hy
- exact h x hy, preimage_eq_empty⟩
-#align set.preimage_eq_empty_iff Set.preimage_eq_empty_iff
-
-theorem _root_.Disjoint.image {s t u : Set α} {f : α → β} (h : Disjoint s t) (hf : InjOn f u)
- (hs : s ⊆ u) (ht : t ⊆ u) : Disjoint (f '' s) (f '' t) := by
- rw [disjoint_iff_inter_eq_empty] at h⊢
- rw [← hf.image_inter hs ht, h, image_empty]
-#align disjoint.image Disjoint.image
-
end Set
end Disjoint
@@ -2400,11 +2139,6 @@ namespace Set
variable (t : α → Set β)
-theorem subset_diff {s t u : Set α} : s ⊆ t \ u ↔ s ⊆ t ∧ Disjoint s u :=
- ⟨fun h => ⟨fun _ hxs => (h hxs).1, disjoint_iff_inf_le.mpr fun _ ⟨hxs, hxu⟩ => (h hxs).2 hxu⟩,
- fun ⟨h1, h2⟩ _ hxs => ⟨h1 hxs, fun hxu => h2.le_bot ⟨hxs, hxu⟩⟩⟩
-#align set.subset_diff Set.subset_diff
-
theorem bunionᵢ_diff_bunionᵢ_subset (s₁ s₂ : Set α) :
((⋃ x ∈ s₁, t x) \ ⋃ x ∈ s₂, t x) ⊆ ⋃ x ∈ s₁ \ s₂, t x := by
simp only [diff_subset_iff, ← bunionᵢ_union]
Fix a lot of wrong casing mostly in the docstrings but also sometimes in def/theorem names. E.g. fin 2 --> Fin 2
, add_monoid_hom --> AddMonoidHom
Remove \n
from to_additive
docstrings that were inserted by mathport.
Move files and directories with Gcd
and Smul
to GCD
and SMul
@@ -24,14 +24,14 @@ for `Set α`, and some more set constructions.
* `Set.interᵢ`: **i**ndexed **inter**section. Intersection of an indexed family of sets.
* `Set.interₛ`: **s**et **inter**section. Intersection of sets belonging to a set of sets.
* `Set.unionₛ`: **s**et **union**. Union of sets belonging to a set of sets.
-* `Set.interₛ_eq_binterᵢ`, `set.unionₛ_eq_binterᵢ`: Shows that `⋂₀ s = ⋂ x ∈ s, x` and
+* `Set.interₛ_eq_binterᵢ`, `Set.unionₛ_eq_binterᵢ`: Shows that `⋂₀ s = ⋂ x ∈ s, x` and
`⋃₀ s = ⋃ x ∈ s, x`.
-* `Set.complete_boolean_algebra`: `set α` is a `CompleteBooleanAlgebra` with `≤ = ⊆`, `< = ⊂`,
+* `Set.complete_boolean_algebra`: `Set α` is a `CompleteBooleanAlgebra` with `≤ = ⊆`, `< = ⊂`,
`⊓ = ∩`, `⊔ = ∪`, `⨅ = ⋂`, `⨆ = ⋃` and `\` as the set difference. See `Set.BooleanAlgebra`.
* `Set.kern_image`: For a function `f : α → β`, `s.kern_image f` is the set of `y` such that
`f ⁻¹ y ⊆ s`.
* `Set.seq`: Union of the image of a set under a **seq**uence of functions. `seq s t` is the union
- of `f '' t` over all `f ∈ s`, where `t : set α` and `s : set (α → β)`.
+ of `f '' t` over all `f ∈ s`, where `t : Set α` and `s : Set (α → β)`.
* `Set.unionᵢ_eq_sigma_of_disjoint`: Equivalence between `⋃ i, t i` and `Σ i, t i`, where `t` is an
indexed family of disjoint sets.
@@ -1995,7 +1995,7 @@ theorem image2_interᵢ₂_subset_right (s : Set α) (t : ∀ i, κ i → Set β
exact fun x hx y hy i j => mem_image2_of_mem hx (hy _ _)
#align set.image2_Inter₂_subset_right Set.image2_interᵢ₂_subset_right
-/-- The `set.image2` version of `set.image_eq_unionᵢ` -/
+/-- The `Set.image2` version of `Set.image_eq_unionᵢ` -/
theorem image2_eq_unionᵢ (s : Set α) (t : Set β) : image2 f s t = ⋃ (i ∈ s) (j ∈ t), {f i j} := by
simp_rw [← image_eq_unionᵢ, unionᵢ_image_left]
#align set.image2_eq_Union Set.image2_eq_unionᵢ
@@ -2014,7 +2014,7 @@ end Image2
section Seq
-/-- Given a set `s` of functions `α → β` and `t : set α`, `seq s t` is the union of `f '' t` over
+/-- Given a set `s` of functions `α → β` and `t : Set α`, `seq s t` is the union of `f '' t` over
all `f ∈ s`. -/
def seq (s : Set (α → β)) (t : Set α) : Set β :=
{ b | ∃ f ∈ s, ∃ a ∈ t, (f : α → β) a = b }
Mostly name changes. The proof of subset_bunionᵢ_of_mem
needed a bunch of explicit arguments for some reason. I also moved the definition of set.sUnion
from Init.Set
into this file and changed its name. I also protected
the definition of Set.compl
Co-authored-by: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com>
All dependencies are ported!