File: Mathlib/Data/Set/Lattice.lean

full_name: Set.mem_iUnion₂
code: theorem mem_iUnion₂ {x : γ} {s : ∀ i, κ i → Set γ} : (x ∈ ⋃ (i) (j), s i j) ↔ ∃ i j, x ∈ s i j 
goal: x ∈ ⋃ i, ⋃ j, s i j ↔ ∃ i j, x ∈ s i j

full_name: Set.mem_iInter₂
code: theorem mem_iInter₂ {x : γ} {s : ∀ i, κ i → Set γ} : (x ∈ ⋂ (i) (j), s i j) ↔ ∀ i j, x ∈ s i j 
goal: x ∈ ⋂ i, ⋂ j, s i j ↔ ∀ (i : ι) (j : κ i), x ∈ s i j

full_name: Set.mem_iUnion_of_mem
code: theorem mem_iUnion_of_mem {s : ι → Set α} {a : α} (i : ι) (ha : a ∈ s i) : a ∈ ⋃ i, s i 
goal: a ∈ ⋃ i, s i

full_name: Set.mem_iUnion₂_of_mem
code: theorem mem_iUnion₂_of_mem {s : ∀ i, κ i → Set α} {a : α} {i : ι} (j : κ i) (ha : a ∈ s i j) :
    a ∈ ⋃ (i) (j), s i j 
goal: a ∈ ⋃ i, ⋃ j, s i j

full_name: Set.mem_iInter_of_mem
code: theorem mem_iInter_of_mem {s : ι → Set α} {a : α} (h : ∀ i, a ∈ s i) : a ∈ ⋂ i, s i 
goal: a ∈ ⋂ i, s i

full_name: Set.mem_iInter₂_of_mem
code: theorem mem_iInter₂_of_mem {s : ∀ i, κ i → Set α} {a : α} (h : ∀ i j, a ∈ s i j) :
    a ∈ ⋂ (i) (j), s i j 
goal: a ∈ ⋂ i, ⋂ j, s i j

full_name: Set.completeAtomicBooleanAlgebra
code: instance completeAtomicBooleanAlgebra : CompleteAtomicBooleanAlgebra (Set α) 
goal: CompleteAtomicBooleanAlgebra (Set α)

full_name: Set.image_preimage
code: protected theorem image_preimage : GaloisConnection (image f) (preimage f) 
goal: GaloisConnection (Set.image f) (Set.preimage f)

full_name: Set.preimage_kernImage
code: protected theorem preimage_kernImage : GaloisConnection (preimage f) (kernImage f) 
goal: GaloisConnection (Set.preimage f) (Set.kernImage f)

full_name: Set.kernImage_mono
code: lemma kernImage_mono : Monotone (kernImage f) 
goal: Monotone (Set.kernImage f)

full_name: Set.kernImage_eq_compl
code: lemma kernImage_eq_compl {s : Set α} : kernImage f s = (f '' sᶜ)ᶜ 
goal: Set.kernImage f s = (f '' sᶜ)ᶜ

full_name: Set.kernImage_compl
code: lemma kernImage_compl {s : Set α} : kernImage f (sᶜ) = (f '' s)ᶜ 
goal: Set.kernImage f sᶜ = (f '' s)ᶜ

full_name: Set.kernImage_empty
code: lemma kernImage_empty : kernImage f ∅ = (range f)ᶜ 
goal: Set.kernImage f ∅ = (Set.range f)ᶜ

full_name: Set.kernImage_preimage_eq_iff
code: lemma kernImage_preimage_eq_iff {s : Set β} : kernImage f (f ⁻¹' s) = s ↔ (range f)ᶜ ⊆ s 
goal: Set.kernImage f (f ⁻¹' s) = s ↔ (Set.range f)ᶜ ⊆ s

full_name: Set.compl_range_subset_kernImage
code: lemma compl_range_subset_kernImage {s : Set α} : (range f)ᶜ ⊆ kernImage f s 
goal: (Set.range f)ᶜ ⊆ Set.kernImage f s

full_name: Set.kernImage_union_preimage
code: lemma kernImage_union_preimage {s : Set α} {t : Set β} :
    kernImage f (s ∪ f ⁻¹' t) = kernImage f s ∪ t 
goal: Set.kernImage f (s ∪ f ⁻¹' t) = Set.kernImage f s ∪ t

full_name: Set.kernImage_preimage_union
code: lemma kernImage_preimage_union {s : Set α} {t : Set β} :
    kernImage f (f ⁻¹' t ∪ s) = t ∪ kernImage f s 
goal: Set.kernImage f (f ⁻¹' t ∪ s) = t ∪ Set.kernImage f s

full_name: Set.instOrderTop
code: instance : OrderTop (Set α) 
goal: OrderTop (Set α)

full_name: Set.iUnion_congr_Prop
code: @[congr]
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₂ 
goal: Set.iUnion f₁ = Set.iUnion f₂

full_name: Set.iInter_congr_Prop
code: @[congr]
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₂ 
goal: Set.iInter f₁ = Set.iInter f₂

full_name: Set.iUnion_plift_up
code: theorem iUnion_plift_up (f : PLift ι → Set α) : ⋃ i, f (PLift.up i) = ⋃ i, f i 
goal: ⋃ i, f { down := i } = ⋃ i, f i

full_name: Set.iUnion_plift_down
code: theorem iUnion_plift_down (f : ι → Set α) : ⋃ i, f (PLift.down i) = ⋃ i, f i 
goal: ⋃ i, f i.down = ⋃ i, f i

full_name: Set.iInter_plift_up
code: theorem iInter_plift_up (f : PLift ι → Set α) : ⋂ i, f (PLift.up i) = ⋂ i, f i 
goal: ⋂ i, f { down := i } = ⋂ i, f i

full_name: Set.iInter_plift_down
code: theorem iInter_plift_down (f : ι → Set α) : ⋂ i, f (PLift.down i) = ⋂ i, f i 
goal: ⋂ i, f i.down = ⋂ i, f i

full_name: Set.iUnion_eq_if
code: theorem iUnion_eq_if {p : Prop} [Decidable p] (s : Set α) : ⋃ _ : p, s = if p then s else ∅ 
goal: ⋃ (_ : p), s = if p then s else ∅

full_name: Set.iUnion_eq_dif
code: theorem iUnion_eq_dif {p : Prop} [Decidable p] (s : p → Set α) :
    ⋃ h : p, s h = if h : p then s h else ∅ 
goal: ⋃ (h : p), s h = if h : p then s h else ∅

full_name: Set.iInter_eq_if
code: theorem iInter_eq_if {p : Prop} [Decidable p] (s : Set α) : ⋂ _ : p, s = if p then s else univ 
goal: ⋂ (_ : p), s = if p then s else Set.univ

full_name: Set.iInf_eq_dif
code: theorem iInf_eq_dif {p : Prop} [Decidable p] (s : p → Set α) :
    ⋂ h : p, s h = if h : p then s h else univ 
goal: ⋂ (h : p), s h = if h : p then s h else Set.univ

full_name: Set.exists_set_mem_of_union_eq_top
code: theorem exists_set_mem_of_union_eq_top {ι : Type*} (t : Set ι) (s : ι → Set β)
    (w : ⋃ i ∈ t, s i = ⊤) (x : β) : ∃ i ∈ t, x ∈ s i 
goal: ∃ i ∈ t, x ∈ s i

full_name: Set.nonempty_of_union_eq_top_of_nonempty
code: theorem nonempty_of_union_eq_top_of_nonempty {ι : Type*} (t : Set ι) (s : ι → Set α)
    (H : Nonempty α) (w : ⋃ i ∈ t, s i = ⊤) : t.Nonempty 
goal: t.Nonempty

full_name: Set.nonempty_of_nonempty_iUnion
code: theorem nonempty_of_nonempty_iUnion
    {s : ι → Set α} (h_Union : (⋃ i, s i).Nonempty) : Nonempty ι 
goal: Nonempty ι

full_name: Set.nonempty_of_nonempty_iUnion_eq_univ
code: theorem nonempty_of_nonempty_iUnion_eq_univ
    {s : ι → Set α} [Nonempty α] (h_Union : ⋃ i, s i = univ) : Nonempty ι 
goal: Nonempty ι

full_name: Set.setOf_exists
code: theorem setOf_exists (p : ι → β → Prop) : { x | ∃ i, p i x } = ⋃ i, { x | p i x } 
goal: {x | ∃ i, p i x} = ⋃ i, {x | p i x}

full_name: Set.setOf_forall
code: theorem setOf_forall (p : ι → β → Prop) : { x | ∀ i, p i x } = ⋂ i, { x | p i x } 
goal: {x | ∀ (i : ι), p i x} = ⋂ i, {x | p i x}

full_name: Set.iUnion_subset
code: theorem iUnion_subset {s : ι → Set α} {t : Set α} (h : ∀ i, s i ⊆ t) : ⋃ i, s i ⊆ t 
goal: ⋃ i, s i ⊆ t

full_name: Set.iUnion₂_subset
code: theorem iUnion₂_subset {s : ∀ i, κ i → Set α} {t : Set α} (h : ∀ i j, s i j ⊆ t) :
    ⋃ (i) (j), s i j ⊆ t 
goal: ⋃ i, ⋃ j, s i j ⊆ t

full_name: Set.subset_iInter
code: theorem subset_iInter {t : Set β} {s : ι → Set β} (h : ∀ i, t ⊆ s i) : t ⊆ ⋂ i, s i 
goal: t ⊆ ⋂ i, s i

full_name: Set.subset_iInter₂
code: theorem subset_iInter₂ {s : Set α} {t : ∀ i, κ i → Set α} (h : ∀ i j, s ⊆ t i j) :
    s ⊆ ⋂ (i) (j), t i j 
goal: s ⊆ ⋂ i, ⋂ j, t i j

full_name: Set.iUnion_subset_iff
code: @[simp]
theorem iUnion_subset_iff {s : ι → Set α} {t : Set α} : ⋃ i, s i ⊆ t ↔ ∀ i, s i ⊆ t 
goal: ⋃ i, s i ⊆ t ↔ ∀ (i : ι), s i ⊆ t

full_name: Set.iUnion₂_subset_iff
code: theorem iUnion₂_subset_iff {s : ∀ i, κ i → Set α} {t : Set α} :
    ⋃ (i) (j), s i j ⊆ t ↔ ∀ i j, s i j ⊆ t 
goal: ⋃ i, ⋃ j, s i j ⊆ t ↔ ∀ (i : ι) (j : κ i), s i j ⊆ t

full_name: Set.subset_iInter_iff
code: @[simp]
theorem subset_iInter_iff {s : Set α} {t : ι → Set α} : (s ⊆ ⋂ i, t i) ↔ ∀ i, s ⊆ t i 
goal: s ⊆ ⋂ i, t i ↔ ∀ (i : ι), s ⊆ t i

full_name: Set.subset_iInter₂_iff
code: theorem subset_iInter₂_iff {s : Set α} {t : ∀ i, κ i → Set α} :
    (s ⊆ ⋂ (i) (j), t i j) ↔ ∀ i j, s ⊆ t i j 
goal: s ⊆ ⋂ i, ⋂ j, t i j ↔ ∀ (i : ι) (j : κ i), s ⊆ t i j

full_name: Set.subset_iUnion
code: theorem subset_iUnion : ∀ (s : ι → Set β) (i : ι), s i ⊆ ⋃ i, s i 
goal: s i ⊆ ⋃ i, s i

full_name: Set.iInter_subset
code: theorem iInter_subset : ∀ (s : ι → Set β) (i : ι), ⋂ i, s i ⊆ s i 
goal: ⋂ i, s i ⊆ s i

full_name: Set.subset_iUnion₂
code: theorem subset_iUnion₂ {s : ∀ i, κ i → Set α} (i : ι) (j : κ i) : s i j ⊆ ⋃ (i') (j'), s i' j' 
goal: s i j ⊆ ⋃ i', ⋃ j', s i' j'

full_name: Set.iInter₂_subset
code: theorem iInter₂_subset {s : ∀ i, κ i → Set α} (i : ι) (j : κ i) : ⋂ (i) (j), s i j ⊆ s i j 
goal: ⋂ i, ⋂ j, s i j ⊆ s i j

full_name: Set.subset_iUnion_of_subset
code: /-- This rather trivial consequence of `subset_iUnion`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 
goal: s ⊆ ⋃ i, t i

full_name: Set.iInter_subset_of_subset
code: /-- 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 
goal: ⋂ i, s i ⊆ t

full_name: Set.subset_iUnion₂_of_subset
code: /-- This rather trivial consequence of `subset_iUnion₂` 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 
goal: s ⊆ ⋃ i, ⋃ j, t i j

full_name: Set.iInter₂_subset_of_subset
code: /-- 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 
goal: ⋂ i, ⋂ j, s i j ⊆ t

full_name: Set.iUnion_mono
code: theorem iUnion_mono {s t : ι → Set α} (h : ∀ i, s i ⊆ t i) : ⋃ i, s i ⊆ ⋃ i, t i 
goal: ⋃ i, s i ⊆ ⋃ i, t i

full_name: Set.iUnion_mono''
code: @[gcongr]
theorem iUnion_mono'' {s t : ι → Set α} (h : ∀ i, s i ⊆ t i) : iUnion s ⊆ iUnion t 
goal: Set.iUnion s ⊆ Set.iUnion t

full_name: Set.iUnion₂_mono
code: 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 
goal: ⋃ i, ⋃ j, s i j ⊆ ⋃ i, ⋃ j, t i j

full_name: Set.iInter_mono
code: theorem iInter_mono {s t : ι → Set α} (h : ∀ i, s i ⊆ t i) : ⋂ i, s i ⊆ ⋂ i, t i 
goal: ⋂ i, s i ⊆ ⋂ i, t i

full_name: Set.iInter_mono''
code: @[gcongr]
theorem iInter_mono'' {s t : ι → Set α} (h : ∀ i, s i ⊆ t i) : iInter s ⊆ iInter t 
goal: Set.iInter s ⊆ Set.iInter t

full_name: Set.iInter₂_mono
code: 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 
goal: ⋂ i, ⋂ j, s i j ⊆ ⋂ i, ⋂ j, t i j

full_name: Set.iUnion_mono'
code: theorem iUnion_mono' {s : ι → Set α} {t : ι₂ → Set α} (h : ∀ i, ∃ j, s i ⊆ t j) :
    ⋃ i, s i ⊆ ⋃ i, t i 
goal: ⋃ i, s i ⊆ ⋃ i, t i

full_name: Set.iUnion₂_mono'
code: 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' 
goal: ⋃ i, ⋃ j, s i j ⊆ ⋃ i', ⋃ j', t i' j'

full_name: Set.iInter_mono'
code: theorem iInter_mono' {s : ι → Set α} {t : ι' → Set α} (h : ∀ j, ∃ i, s i ⊆ t j) :
    ⋂ i, s i ⊆ ⋂ j, t j 
goal: ⋂ i, s i ⊆ ⋂ j, t j

full_name: Set.iInter₂_mono'
code: 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' 
goal: ⋂ i, ⋂ j, s i j ⊆ ⋂ i', ⋂ j', t i' j'

full_name: Set.iUnion₂_subset_iUnion
code: theorem iUnion₂_subset_iUnion (κ : ι → Sort*) (s : ι → Set α) :
    ⋃ (i) (_ : κ i), s i ⊆ ⋃ i, s i 
goal: ⋃ i, ⋃ x, s i ⊆ ⋃ i, s i

full_name: Set.iInter_subset_iInter₂
code: theorem iInter_subset_iInter₂ (κ : ι → Sort*) (s : ι → Set α) :
    ⋂ i, s i ⊆ ⋂ (i) (_ : κ i), s i 
goal: ⋂ i, s i ⊆ ⋂ i, ⋂ x, s i

full_name: Set.iUnion_setOf
code: theorem iUnion_setOf (P : ι → α → Prop) : ⋃ i, { x : α | P i x } = { x : α | ∃ i, P i x } 
goal: ⋃ i, {x | P i x} = {x | ∃ i, P i x}

full_name: Set.iInter_setOf
code: theorem iInter_setOf (P : ι → α → Prop) : ⋂ i, { x : α | P i x } = { x : α | ∀ i, P i x } 
goal: ⋂ i, {x | P i x} = {x | ∀ (i : ι), P i x}

full_name: Set.iUnion_congr_of_surjective
code: 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 
goal: ⋃ x, f x = ⋃ y, g y

full_name: Set.iInter_congr_of_surjective
code: 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 
goal: ⋂ x, f x = ⋂ y, g y

full_name: Set.iUnion_congr
code: lemma iUnion_congr {s t : ι → Set α} (h : ∀ i, s i = t i) : ⋃ i, s i = ⋃ i, t i 
goal: ⋃ i, s i = ⋃ i, t i

full_name: Set.iInter_congr
code: lemma iInter_congr {s t : ι → Set α} (h : ∀ i, s i = t i) : ⋂ i, s i = ⋂ i, t i 
goal: ⋂ i, s i = ⋂ i, t i

full_name: Set.iUnion₂_congr
code: 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 
goal: ⋃ i, ⋃ j, s i j = ⋃ i, ⋃ j, t i j

full_name: Set.iInter₂_congr
code: 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 
goal: ⋂ i, ⋂ j, s i j = ⋂ i, ⋂ j, t i j

full_name: Set.iUnion_const
code: lemma iUnion_const (s : Set β) : ⋃ _ : ι, s = s 
goal: ⋃ x, s = s

full_name: Set.iInter_const
code: lemma iInter_const (s : Set β) : ⋂ _ : ι, s = s 
goal: ⋂ x, s = s

full_name: Set.iUnion_eq_const
code: lemma iUnion_eq_const (hf : ∀ i, f i = s) : ⋃ i, f i = s 
goal: ⋃ i, f i = s

full_name: Set.iInter_eq_const
code: lemma iInter_eq_const (hf : ∀ i, f i = s) : ⋂ i, f i = s 
goal: ⋂ i, f i = s

full_name: Set.compl_iUnion
code: @[simp]
theorem compl_iUnion (s : ι → Set β) : (⋃ i, s i)ᶜ = ⋂ i, (s i)ᶜ 
goal: (⋃ i, s i)ᶜ = ⋂ i, (s i)ᶜ

full_name: Set.compl_iUnion₂
code: theorem compl_iUnion₂ (s : ∀ i, κ i → Set α) : (⋃ (i) (j), s i j)ᶜ = ⋂ (i) (j), (s i j)ᶜ 
goal: (⋃ i, ⋃ j, s i j)ᶜ = ⋂ i, ⋂ j, (s i j)ᶜ

full_name: Set.compl_iInter
code: @[simp]
theorem compl_iInter (s : ι → Set β) : (⋂ i, s i)ᶜ = ⋃ i, (s i)ᶜ 
goal: (⋂ i, s i)ᶜ = ⋃ i, (s i)ᶜ

full_name: Set.compl_iInter₂
code: theorem compl_iInter₂ (s : ∀ i, κ i → Set α) : (⋂ (i) (j), s i j)ᶜ = ⋃ (i) (j), (s i j)ᶜ 
goal: (⋂ i, ⋂ j, s i j)ᶜ = ⋃ i, ⋃ j, (s i j)ᶜ

full_name: Set.iUnion_eq_compl_iInter_compl
code: theorem iUnion_eq_compl_iInter_compl (s : ι → Set β) : ⋃ i, s i = (⋂ i, (s i)ᶜ)ᶜ 
goal: ⋃ i, s i = (⋂ i, (s i)ᶜ)ᶜ

full_name: Set.iInter_eq_compl_iUnion_compl
code: theorem iInter_eq_compl_iUnion_compl (s : ι → Set β) : ⋂ i, s i = (⋃ i, (s i)ᶜ)ᶜ 
goal: ⋂ i, s i = (⋃ i, (s i)ᶜ)ᶜ

full_name: Set.inter_iUnion
code: theorem inter_iUnion (s : Set β) (t : ι → Set β) : (s ∩ ⋃ i, t i) = ⋃ i, s ∩ t i 
goal: s ∩ ⋃ i, t i = ⋃ i, s ∩ t i

full_name: Set.iUnion_inter
code: theorem iUnion_inter (s : Set β) (t : ι → Set β) : (⋃ i, t i) ∩ s = ⋃ i, t i ∩ s 
goal: (⋃ i, t i) ∩ s = ⋃ i, t i ∩ s

full_name: Set.iUnion_union_distrib
code: theorem iUnion_union_distrib (s : ι → Set β) (t : ι → Set β) :
    ⋃ i, s i ∪ t i = (⋃ i, s i) ∪ ⋃ i, t i 
goal: ⋃ i, s i ∪ t i = (⋃ i, s i) ∪ ⋃ i, t i

full_name: Set.iInter_inter_distrib
code: theorem iInter_inter_distrib (s : ι → Set β) (t : ι → Set β) :
    ⋂ i, s i ∩ t i = (⋂ i, s i) ∩ ⋂ i, t i 
goal: ⋂ i, s i ∩ t i = (⋂ i, s i) ∩ ⋂ i, t i

full_name: Set.union_iUnion
code: theorem union_iUnion [Nonempty ι] (s : Set β) (t : ι → Set β) : (s ∪ ⋃ i, t i) = ⋃ i, s ∪ t i 
goal: s ∪ ⋃ i, t i = ⋃ i, s ∪ t i

full_name: Set.iUnion_union
code: theorem iUnion_union [Nonempty ι] (s : Set β) (t : ι → Set β) : (⋃ i, t i) ∪ s = ⋃ i, t i ∪ s 
goal: (⋃ i, t i) ∪ s = ⋃ i, t i ∪ s

full_name: Set.inter_iInter
code: theorem inter_iInter [Nonempty ι] (s : Set β) (t : ι → Set β) : (s ∩ ⋂ i, t i) = ⋂ i, s ∩ t i 
goal: s ∩ ⋂ i, t i = ⋂ i, s ∩ t i

full_name: Set.iInter_inter
code: theorem iInter_inter [Nonempty ι] (s : Set β) (t : ι → Set β) : (⋂ i, t i) ∩ s = ⋂ i, t i ∩ s 
goal: (⋂ i, t i) ∩ s = ⋂ i, t i ∩ s

full_name: Set.union_iInter
code: theorem union_iInter (s : Set β) (t : ι → Set β) : (s ∪ ⋂ i, t i) = ⋂ i, s ∪ t i 
goal: s ∪ ⋂ i, t i = ⋂ i, s ∪ t i

full_name: Set.iInter_union
code: theorem iInter_union (s : ι → Set β) (t : Set β) : (⋂ i, s i) ∪ t = ⋂ i, s i ∪ t 
goal: (⋂ i, s i) ∪ t = ⋂ i, s i ∪ t

full_name: Set.iUnion_diff
code: theorem iUnion_diff (s : Set β) (t : ι → Set β) : (⋃ i, t i) \ s = ⋃ i, t i \ s 
goal: (⋃ i, t i) \ s = ⋃ i, t i \ s

full_name: Set.diff_iUnion
code: theorem diff_iUnion [Nonempty ι] (s : Set β) (t : ι → Set β) : (s \ ⋃ i, t i) = ⋂ i, s \ t i 
goal: s \ ⋃ i, t i = ⋂ i, s \ t i

full_name: Set.diff_iInter
code: theorem diff_iInter (s : Set β) (t : ι → Set β) : (s \ ⋂ i, t i) = ⋃ i, s \ t i 
goal: s \ ⋂ i, t i = ⋃ i, s \ t i

full_name: Set.iUnion_inter_subset
code: theorem iUnion_inter_subset {ι α} {s t : ι → Set α} : ⋃ i, s i ∩ t i ⊆ (⋃ i, s i) ∩ ⋃ i, t i 
goal: ⋃ i, s i ∩ t i ⊆ (⋃ i, s i) ∩ ⋃ i, t i

full_name: Set.iUnion_inter_of_monotone
code: 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 
goal: ⋃ i, s i ∩ t i = (⋃ i, s i) ∩ ⋃ i, t i

full_name: Set.iUnion_inter_of_antitone
code: 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 
goal: ⋃ i, s i ∩ t i = (⋃ i, s i) ∩ ⋃ i, t i

full_name: Set.iInter_union_of_monotone
code: 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 
goal: ⋂ i, s i ∪ t i = (⋂ i, s i) ∪ ⋂ i, t i

full_name: Set.iInter_union_of_antitone
code: 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 
goal: ⋂ i, s i ∪ t i = (⋂ i, s i) ∪ ⋂ i, t i

full_name: Set.iUnion_iInter_subset
code: /-- 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 
goal: ⋃ j, ⋂ i, s i j ⊆ ⋂ i, ⋃ j, s i j

full_name: Set.iUnion_option
code: theorem iUnion_option {ι} (s : Option ι → Set α) : ⋃ o, s o = s none ∪ ⋃ i, s (some i) 
goal: ⋃ o, s o = s none ∪ ⋃ i, s (some i)

full_name: Set.iInter_option
code: theorem iInter_option {ι} (s : Option ι → Set α) : ⋂ o, s o = s none ∩ ⋂ i, s (some i) 
goal: ⋂ o, s o = s none ∩ ⋂ i, s (some i)

full_name: Set.iUnion_dite
code: 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 
goal: (⋃ 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

full_name: Set.iUnion_ite
code: 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 
goal: (⋃ i, if p i then f i else g i) = (⋃ i, ⋃ (_ : p i), f i) ∪ ⋃ i, ⋃ (_ : ¬p i), g i

full_name: Set.iInter_dite
code: 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 
goal: (⋂ 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

full_name: Set.iInter_ite
code: 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 
goal: (⋂ i, if p i then f i else g i) = (⋂ i, ⋂ (_ : p i), f i) ∩ ⋂ i, ⋂ (_ : ¬p i), g i

full_name: Set.image_projection_prod
code: 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 
goal: (fun x => x i) '' ⋂ k, (fun x => x k) ⁻¹' v k = v i

full_name: Set.iInter_false
code: theorem iInter_false {s : False → Set α} : iInter s = univ 
goal: Set.iInter s = Set.univ

full_name: Set.iUnion_false
code: theorem iUnion_false {s : False → Set α} : iUnion s = ∅ 
goal: Set.iUnion s = ∅

full_name: Set.iInter_true
code: @[simp]
theorem iInter_true {s : True → Set α} : iInter s = s trivial 
goal: Set.iInter s = s trivial

full_name: Set.iUnion_true
code: @[simp]
theorem iUnion_true {s : True → Set α} : iUnion s = s trivial 
goal: Set.iUnion s = s trivial

full_name: Set.iInter_exists
code: @[simp]
theorem iInter_exists {p : ι → Prop} {f : Exists p → Set α} :
    ⋂ x, f x = ⋂ (i) (h : p i), f ⟨i, h⟩ 
goal: ⋂ (x : Exists p), f x = ⋂ i, ⋂ (h : p i), f ⋯

full_name: Set.iUnion_exists
code: @[simp]
theorem iUnion_exists {p : ι → Prop} {f : Exists p → Set α} :
    ⋃ x, f x = ⋃ (i) (h : p i), f ⟨i, h⟩ 
goal: ⋃ (x : Exists p), f x = ⋃ i, ⋃ (h : p i), f ⋯

full_name: Set.iUnion_empty
code: @[simp]
theorem iUnion_empty : (⋃ _ : ι, ∅ : Set α) = ∅ 
goal: ⋃ x, ∅ = ∅

full_name: Set.iInter_univ
code: @[simp]
theorem iInter_univ : (⋂ _ : ι, univ : Set α) = univ 
goal: ⋂ x, Set.univ = Set.univ

full_name: Set.iUnion_eq_empty
code: @[simp]
theorem iUnion_eq_empty : ⋃ i, s i = ∅ ↔ ∀ i, s i = ∅ 
goal: ⋃ i, s i = ∅ ↔ ∀ (i : ι), s i = ∅

full_name: Set.iInter_eq_univ
code: @[simp]
theorem iInter_eq_univ : ⋂ i, s i = univ ↔ ∀ i, s i = univ 
goal: ⋂ i, s i = Set.univ ↔ ∀ (i : ι), s i = Set.univ

full_name: Set.nonempty_iUnion
code: @[simp]
theorem nonempty_iUnion : (⋃ i, s i).Nonempty ↔ ∃ i, (s i).Nonempty 
goal: (⋃ i, s i).Nonempty ↔ ∃ i, (s i).Nonempty

full_name: Set.nonempty_biUnion
code: theorem nonempty_biUnion {t : Set α} {s : α → Set β} :
    (⋃ i ∈ t, s i).Nonempty ↔ ∃ i ∈ t, (s i).Nonempty 
goal: (⋃ i ∈ t, s i).Nonempty ↔ ∃ i ∈ t, (s i).Nonempty

full_name: Set.iUnion_nonempty_index
code: theorem iUnion_nonempty_index (s : Set α) (t : s.Nonempty → Set β) :
    ⋃ h, t h = ⋃ x ∈ s, t ⟨x, ‹_›⟩ 
goal: ⋃ (h : s.Nonempty), t h = ⋃ x, ⋃ (h : x ∈ s), t ⋯

full_name: Set.iInter_iInter_eq_left
code: @[simp]
theorem iInter_iInter_eq_left {b : β} {s : ∀ x : β, x = b → Set α} :
    ⋂ (x) (h : x = b), s x h = s b rfl 
goal: ⋂ x, ⋂ (h : x = b), s x h = s b ⋯

full_name: Set.iInter_iInter_eq_right
code: @[simp]
theorem iInter_iInter_eq_right {b : β} {s : ∀ x : β, b = x → Set α} :
    ⋂ (x) (h : b = x), s x h = s b rfl 
goal: ⋂ x, ⋂ (h : b = x), s x h = s b ⋯

full_name: Set.iUnion_iUnion_eq_left
code: @[simp]
theorem iUnion_iUnion_eq_left {b : β} {s : ∀ x : β, x = b → Set α} :
    ⋃ (x) (h : x = b), s x h = s b rfl 
goal: ⋃ x, ⋃ (h : x = b), s x h = s b ⋯

full_name: Set.iUnion_iUnion_eq_right
code: @[simp]
theorem iUnion_iUnion_eq_right {b : β} {s : ∀ x : β, b = x → Set α} :
    ⋃ (x) (h : b = x), s x h = s b rfl 
goal: ⋃ x, ⋃ (h : b = x), s x h = s b ⋯

full_name: Set.iInter_or
code: 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) 
goal: ⋂ (h : p ∨ q), s h = (⋂ (h : p), s ⋯) ∩ ⋂ (h : q), s ⋯

full_name: Set.iUnion_or
code: theorem iUnion_or {p q : Prop} (s : p ∨ q → Set α) :
    ⋃ h, s h = (⋃ i, s (Or.inl i)) ∪ ⋃ j, s (Or.inr j) 
goal: ⋃ (h : p ∨ q), s h = (⋃ (i : p), s ⋯) ∪ ⋃ (j : q), s ⋯

full_name: Set.iUnion_and
code: theorem iUnion_and {p q : Prop} (s : p ∧ q → Set α) : ⋃ h, s h = ⋃ (hp) (hq), s ⟨hp, hq⟩ 
goal: ⋃ (h : p ∧ q), s h = ⋃ (hp : p), ⋃ (hq : q), s ⋯

full_name: Set.iInter_and
code: theorem iInter_and {p q : Prop} (s : p ∧ q → Set α) : ⋂ h, s h = ⋂ (hp) (hq), s ⟨hp, hq⟩ 
goal: ⋂ (h : p ∧ q), s h = ⋂ (hp : p), ⋂ (hq : q), s ⋯

full_name: Set.iUnion_comm
code: theorem iUnion_comm (s : ι → ι' → Set α) : ⋃ (i) (i'), s i i' = ⋃ (i') (i), s i i' 
goal: ⋃ i, ⋃ i', s i i' = ⋃ i', ⋃ i, s i i'

full_name: Set.iInter_comm
code: theorem iInter_comm (s : ι → ι' → Set α) : ⋂ (i) (i'), s i i' = ⋂ (i') (i), s i i' 
goal: ⋂ i, ⋂ i', s i i' = ⋂ i', ⋂ i, s i i'

full_name: Set.iUnion_sigma
code: theorem iUnion_sigma {γ : α → Type*} (s : Sigma γ → Set β) : ⋃ ia, s ia = ⋃ i, ⋃ a, s ⟨i, a⟩ 
goal: ⋃ ia, s ia = ⋃ i, ⋃ a, s ⟨i, a⟩

full_name: Set.iUnion_sigma'
code: theorem iUnion_sigma' {γ : α → Type*} (s : ∀ i, γ i → Set β) :
    ⋃ i, ⋃ a, s i a = ⋃ ia : Sigma γ, s ia.1 ia.2 
goal: ⋃ i, ⋃ a, s i a = ⋃ ia, s ia.fst ia.snd

full_name: Set.iInter_sigma
code: theorem iInter_sigma {γ : α → Type*} (s : Sigma γ → Set β) : ⋂ ia, s ia = ⋂ i, ⋂ a, s ⟨i, a⟩ 
goal: ⋂ ia, s ia = ⋂ i, ⋂ a, s ⟨i, a⟩

full_name: Set.iInter_sigma'
code: theorem iInter_sigma' {γ : α → Type*} (s : ∀ i, γ i → Set β) :
    ⋂ i, ⋂ a, s i a = ⋂ ia : Sigma γ, s ia.1 ia.2 
goal: ⋂ i, ⋂ a, s i a = ⋂ ia, s ia.fst ia.snd

full_name: Set.iUnion₂_comm
code: 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₂ 
goal: ⋃ i₁, ⋃ j₁, ⋃ i₂, ⋃ j₂, s i₁ j₁ i₂ j₂ = ⋃ i₂, ⋃ j₂, ⋃ i₁, ⋃ j₁, s i₁ j₁ i₂ j₂

full_name: Set.iInter₂_comm
code: 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₂ 
goal: ⋂ i₁, ⋂ j₁, ⋂ i₂, ⋂ j₂, s i₁ j₁ i₂ j₂ = ⋂ i₂, ⋂ j₂, ⋂ i₁, ⋂ j₁, s i₁ j₁ i₂ j₂

full_name: Set.biUnion_and
code: @[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⟩ 
goal: ⋃ x, ⋃ y, ⋃ (h : p x ∧ q x y), s x y h = ⋃ x, ⋃ (hx : p x), ⋃ y, ⋃ (hy : q x y), s x y ⋯

full_name: Set.biUnion_and'
code: @[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⟩ 
goal: ⋃ x, ⋃ y, ⋃ (h : p y ∧ q x y), s x y h = ⋃ y, ⋃ (hy : p y), ⋃ x, ⋃ (hx : q x y), s x y ⋯

full_name: Set.biInter_and
code: @[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⟩ 
goal: ⋂ x, ⋂ y, ⋂ (h : p x ∧ q x y), s x y h = ⋂ x, ⋂ (hx : p x), ⋂ y, ⋂ (hy : q x y), s x y ⋯

full_name: Set.biInter_and'
code: @[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⟩ 
goal: ⋂ x, ⋂ y, ⋂ (h : p y ∧ q x y), s x y h = ⋂ y, ⋂ (hy : p y), ⋂ x, ⋂ (hx : q x y), s x y ⋯

full_name: Set.iUnion_iUnion_eq_or_left
code: @[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) 
goal: ⋃ x, ⋃ (h : x = b ∨ p x), s x h = s b ⋯ ∪ ⋃ x, ⋃ (h : p x), s x ⋯

full_name: Set.iInter_iInter_eq_or_left
code: @[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) 
goal: ⋂ x, ⋂ (h : x = b ∨ p x), s x h = s b ⋯ ∩ ⋂ x, ⋂ (h : p x), s x ⋯

full_name: Set.mem_biUnion
code: /-- 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 
goal: y ∈ ⋃ x ∈ s, t x

full_name: Set.mem_biInter
code: /-- A specialization of `mem_iInter₂`. -/
theorem mem_biInter {s : Set α} {t : α → Set β} {y : β} (h : ∀ x ∈ s, y ∈ t x) :
    y ∈ ⋂ x ∈ s, t x 
goal: y ∈ ⋂ x ∈ s, t x

full_name: Set.subset_biUnion_of_mem
code: /-- A specialization of `subset_iUnion₂`. -/
theorem subset_biUnion_of_mem {s : Set α} {u : α → Set β} {x : α} (xs : x ∈ s) :
    u x ⊆ ⋃ x ∈ s, u x 
goal: u x ⊆ ⋃ x ∈ s, u x

full_name: Set.biInter_subset_of_mem
code: /-- A specialization of `iInter₂_subset`. -/
theorem biInter_subset_of_mem {s : Set α} {t : α → Set β} {x : α} (xs : x ∈ s) :
    ⋂ x ∈ s, t x ⊆ t x 
goal: ⋂ x ∈ s, t x ⊆ t x

full_name: Set.biUnion_subset_biUnion_left
code: theorem biUnion_subset_biUnion_left {s s' : Set α} {t : α → Set β} (h : s ⊆ s') :
    ⋃ x ∈ s, t x ⊆ ⋃ x ∈ s', t x 
goal: ⋃ x ∈ s, t x ⊆ ⋃ x ∈ s', t x

full_name: Set.biInter_subset_biInter_left
code: theorem biInter_subset_biInter_left {s s' : Set α} {t : α → Set β} (h : s' ⊆ s) :
    ⋂ x ∈ s, t x ⊆ ⋂ x ∈ s', t x 
goal: ⋂ x ∈ s, t x ⊆ ⋂ x ∈ s', t x

full_name: Set.biUnion_mono
code: 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 
goal: ⋃ x ∈ s', t x ⊆ ⋃ x ∈ s, t' x

full_name: Set.biInter_mono
code: 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 
goal: ⋂ x ∈ s', t x ⊆ ⋂ x ∈ s, t' x

full_name: Set.biUnion_eq_iUnion
code: theorem biUnion_eq_iUnion (s : Set α) (t : ∀ x ∈ s, Set β) :
    ⋃ x ∈ s, t x ‹_› = ⋃ x : s, t x x.2 
goal: ⋃ x, ⋃ (h : x ∈ s), t x h = ⋃ x, t ↑x ⋯

full_name: Set.biInter_eq_iInter
code: theorem biInter_eq_iInter (s : Set α) (t : ∀ x ∈ s, Set β) :
    ⋂ x ∈ s, t x ‹_› = ⋂ x : s, t x x.2 
goal: ⋂ x, ⋂ (h : x ∈ s), t x h = ⋂ x, t ↑x ⋯

full_name: Set.iUnion_subtype
code: theorem iUnion_subtype (p : α → Prop) (s : { x // p x } → Set β) :
    ⋃ x : { x // p x }, s x = ⋃ (x) (hx : p x), s ⟨x, hx⟩ 
goal: ⋃ x, s x = ⋃ x, ⋃ (hx : p x), s ⟨x, hx⟩

full_name: Set.iInter_subtype
code: theorem iInter_subtype (p : α → Prop) (s : { x // p x } → Set β) :
    ⋂ x : { x // p x }, s x = ⋂ (x) (hx : p x), s ⟨x, hx⟩ 
goal: ⋂ x, s x = ⋂ x, ⋂ (hx : p x), s ⟨x, hx⟩

full_name: Set.biInter_empty
code: theorem biInter_empty (u : α → Set β) : ⋂ x ∈ (∅ : Set α), u x = univ 
goal: ⋂ x ∈ ∅, u x = Set.univ

full_name: Set.biInter_univ
code: theorem biInter_univ (u : α → Set β) : ⋂ x ∈ @univ α, u x = ⋂ x, u x 
goal: ⋂ x ∈ Set.univ, u x = ⋂ x, u x

full_name: Set.biUnion_self
code: @[simp]
theorem biUnion_self (s : Set α) : ⋃ x ∈ s, s = s 
goal: ⋃ x ∈ s, s = s

full_name: Set.iUnion_nonempty_self
code: @[simp]
theorem iUnion_nonempty_self (s : Set α) : ⋃ _ : s.Nonempty, s = s 
goal: ⋃ (_ : s.Nonempty), s = s

full_name: Set.biInter_singleton
code: theorem biInter_singleton (a : α) (s : α → Set β) : ⋂ x ∈ ({a} : Set α), s x = s a 
goal: ⋂ x ∈ {a}, s x = s a

full_name: Set.biInter_union
code: theorem biInter_union (s t : Set α) (u : α → Set β) :
    ⋂ x ∈ s ∪ t, u x = (⋂ x ∈ s, u x) ∩ ⋂ x ∈ t, u x 
goal: ⋂ x ∈ s ∪ t, u x = (⋂ x ∈ s, u x) ∩ ⋂ x ∈ t, u x

full_name: Set.biInter_insert
code: theorem biInter_insert (a : α) (s : Set α) (t : α → Set β) :
    ⋂ x ∈ insert a s, t x = t a ∩ ⋂ x ∈ s, t x 
goal: ⋂ x ∈ insert a s, t x = t a ∩ ⋂ x ∈ s, t x

full_name: Set.biInter_pair
code: theorem biInter_pair (a b : α) (s : α → Set β) : ⋂ x ∈ ({a, b} : Set α), s x = s a ∩ s b 
goal: ⋂ x ∈ {a, b}, s x = s a ∩ s b

full_name: Set.biInter_inter
code: theorem biInter_inter {ι α : Type*} {s : Set ι} (hs : s.Nonempty) (f : ι → Set α) (t : Set α) :
    ⋂ i ∈ s, f i ∩ t = (⋂ i ∈ s, f i) ∩ t 
goal: ⋂ i ∈ s, f i ∩ t = (⋂ i ∈ s, f i) ∩ t

full_name: Set.inter_biInter
code: theorem inter_biInter {ι α : Type*} {s : Set ι} (hs : s.Nonempty) (f : ι → Set α) (t : Set α) :
    ⋂ i ∈ s, t ∩ f i = t ∩ ⋂ i ∈ s, f i 
goal: ⋂ i ∈ s, t ∩ f i = t ∩ ⋂ i ∈ s, f i

full_name: Set.biUnion_empty
code: theorem biUnion_empty (s : α → Set β) : ⋃ x ∈ (∅ : Set α), s x = ∅ 
goal: ⋃ x ∈ ∅, s x = ∅

full_name: Set.biUnion_univ
code: theorem biUnion_univ (s : α → Set β) : ⋃ x ∈ @univ α, s x = ⋃ x, s x 
goal: ⋃ x ∈ Set.univ, s x = ⋃ x, s x

full_name: Set.biUnion_singleton
code: theorem biUnion_singleton (a : α) (s : α → Set β) : ⋃ x ∈ ({a} : Set α), s x = s a 
goal: ⋃ x ∈ {a}, s x = s a

full_name: Set.biUnion_of_singleton
code: @[simp]
theorem biUnion_of_singleton (s : Set α) : ⋃ x ∈ s, {x} = s 
goal: ⋃ x ∈ s, {x} = s

full_name: Set.biUnion_union
code: theorem biUnion_union (s t : Set α) (u : α → Set β) :
    ⋃ x ∈ s ∪ t, u x = (⋃ x ∈ s, u x) ∪ ⋃ x ∈ t, u x 
goal: ⋃ x ∈ s ∪ t, u x = (⋃ x ∈ s, u x) ∪ ⋃ x ∈ t, u x

full_name: Set.iUnion_coe_set
code: @[simp]
theorem iUnion_coe_set {α β : Type*} (s : Set α) (f : s → Set β) :
    ⋃ i, f i = ⋃ i ∈ s, f ⟨i, ‹i ∈ s›⟩ 
goal: ⋃ i, f i = ⋃ i, ⋃ (h : i ∈ s), f ⟨i, h⟩

full_name: Set.iInter_coe_set
code: @[simp]
theorem iInter_coe_set {α β : Type*} (s : Set α) (f : s → Set β) :
    ⋂ i, f i = ⋂ i ∈ s, f ⟨i, ‹i ∈ s›⟩ 
goal: ⋂ i, f i = ⋂ i, ⋂ (h : i ∈ s), f ⟨i, h⟩

full_name: Set.biUnion_insert
code: theorem biUnion_insert (a : α) (s : Set α) (t : α → Set β) :
    ⋃ x ∈ insert a s, t x = t a ∪ ⋃ x ∈ s, t x 
goal: ⋃ x ∈ insert a s, t x = t a ∪ ⋃ x ∈ s, t x

full_name: Set.biUnion_pair
code: theorem biUnion_pair (a b : α) (s : α → Set β) : ⋃ x ∈ ({a, b} : Set α), s x = s a ∪ s b 
goal: ⋃ x ∈ {a, b}, s x = s a ∪ s b

full_name: Set.inter_iUnion₂
code: theorem inter_iUnion₂ (s : Set α) (t : ∀ i, κ i → Set α) :
    (s ∩ ⋃ (i) (j), t i j) = ⋃ (i) (j), s ∩ t i j 
goal: s ∩ ⋃ i, ⋃ j, t i j = ⋃ i, ⋃ j, s ∩ t i j

full_name: Set.iUnion₂_inter
code: theorem iUnion₂_inter (s : ∀ i, κ i → Set α) (t : Set α) :
    (⋃ (i) (j), s i j) ∩ t = ⋃ (i) (j), s i j ∩ t 
goal: (⋃ i, ⋃ j, s i j) ∩ t = ⋃ i, ⋃ j, s i j ∩ t

full_name: Set.union_iInter₂
code: theorem union_iInter₂ (s : Set α) (t : ∀ i, κ i → Set α) :
    (s ∪ ⋂ (i) (j), t i j) = ⋂ (i) (j), s ∪ t i j 
goal: s ∪ ⋂ i, ⋂ j, t i j = ⋂ i, ⋂ j, s ∪ t i j

full_name: Set.iInter₂_union
code: theorem iInter₂_union (s : ∀ i, κ i → Set α) (t : Set α) :
    (⋂ (i) (j), s i j) ∪ t = ⋂ (i) (j), s i j ∪ t 
goal: (⋂ i, ⋂ j, s i j) ∪ t = ⋂ i, ⋂ j, s i j ∪ t

full_name: Set.mem_sUnion_of_mem
code: theorem mem_sUnion_of_mem {x : α} {t : Set α} {S : Set (Set α)} (hx : x ∈ t) (ht : t ∈ S) :
    x ∈ ⋃₀S 
goal: x ∈ ⋃₀ S

full_name: Set.not_mem_of_not_mem_sUnion
code: theorem not_mem_of_not_mem_sUnion {x : α} {t : Set α} {S : Set (Set α)} (hx : x ∉ ⋃₀S)
    (ht : t ∈ S) : x ∉ t 
goal: x ∉ t

full_name: Set.sInter_subset_of_mem
code: theorem sInter_subset_of_mem {S : Set (Set α)} {t : Set α} (tS : t ∈ S) : ⋂₀ S ⊆ t 
goal: ⋂₀ S ⊆ t

full_name: Set.subset_sUnion_of_mem
code: theorem subset_sUnion_of_mem {S : Set (Set α)} {t : Set α} (tS : t ∈ S) : t ⊆ ⋃₀S 
goal: t ⊆ ⋃₀ S

full_name: Set.subset_sUnion_of_subset
code: theorem subset_sUnion_of_subset {s : Set α} (t : Set (Set α)) (u : Set α) (h₁ : s ⊆ u)
    (h₂ : u ∈ t) : s ⊆ ⋃₀t 
goal: s ⊆ ⋃₀ t

full_name: Set.sUnion_subset
code: theorem sUnion_subset {S : Set (Set α)} {t : Set α} (h : ∀ t' ∈ S, t' ⊆ t) : ⋃₀S ⊆ t 
goal: ⋃₀ S ⊆ t

full_name: Set.sUnion_subset_iff
code: @[simp]
theorem sUnion_subset_iff {s : Set (Set α)} {t : Set α} : ⋃₀s ⊆ t ↔ ∀ t' ∈ s, t' ⊆ t 
goal: ⋃₀ s ⊆ t ↔ ∀ t' ∈ s, t' ⊆ t

full_name: Set.sUnion_mono_subsets
code: /-- `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) 
goal: ⋃₀ s ⊆ ⋃₀ (f '' s)

full_name: Set.sUnion_mono_supsets
code: /-- `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 
goal: ⋃₀ (f '' s) ⊆ ⋃₀ s

full_name: Set.subset_sInter
code: theorem subset_sInter {S : Set (Set α)} {t : Set α} (h : ∀ t' ∈ S, t ⊆ t') : t ⊆ ⋂₀ S 
goal: t ⊆ ⋂₀ S

full_name: Set.subset_sInter_iff
code: @[simp]
theorem subset_sInter_iff {S : Set (Set α)} {t : Set α} : t ⊆ ⋂₀ S ↔ ∀ t' ∈ S, t ⊆ t' 
goal: t ⊆ ⋂₀ S ↔ ∀ t' ∈ S, t ⊆ t'

full_name: Set.sUnion_subset_sUnion
code: @[gcongr]
theorem sUnion_subset_sUnion {S T : Set (Set α)} (h : S ⊆ T) : ⋃₀S ⊆ ⋃₀T 
goal: ⋃₀ S ⊆ ⋃₀ T

full_name: Set.sInter_subset_sInter
code: @[gcongr]
theorem sInter_subset_sInter {S T : Set (Set α)} (h : S ⊆ T) : ⋂₀ T ⊆ ⋂₀ S 
goal: ⋂₀ T ⊆ ⋂₀ S

full_name: Set.sUnion_empty
code: @[simp]
theorem sUnion_empty : ⋃₀∅ = (∅ : Set α) 
goal: ⋃₀ ∅ = ∅

full_name: Set.sInter_empty
code: @[simp]
theorem sInter_empty : ⋂₀ ∅ = (univ : Set α) 
goal: ⋂₀ ∅ = Set.univ

full_name: Set.sUnion_singleton
code: @[simp]
theorem sUnion_singleton (s : Set α) : ⋃₀{s} = s 
goal: ⋃₀ {s} = s

full_name: Set.sInter_singleton
code: @[simp]
theorem sInter_singleton (s : Set α) : ⋂₀ {s} = s 
goal: ⋂₀ {s} = s

full_name: Set.sUnion_eq_empty
code: @[simp]
theorem sUnion_eq_empty {S : Set (Set α)} : ⋃₀S = ∅ ↔ ∀ s ∈ S, s = ∅ 
goal: ⋃₀ S = ∅ ↔ ∀ s ∈ S, s = ∅

full_name: Set.sInter_eq_univ
code: @[simp]
theorem sInter_eq_univ {S : Set (Set α)} : ⋂₀ S = univ ↔ ∀ s ∈ S, s = univ 
goal: ⋂₀ S = Set.univ ↔ ∀ s ∈ S, s = Set.univ

full_name: Set.subset_powerset_iff
code: theorem subset_powerset_iff {s : Set (Set α)} {t : Set α} : s ⊆ 𝒫 t ↔ ⋃₀ s ⊆ t 
goal: s ⊆ 𝒫 t ↔ ⋃₀ s ⊆ t

full_name: Set.sUnion_powerset_gc
code: /-- `⋃₀` and `𝒫` form a Galois connection. -/
theorem sUnion_powerset_gc :
    GaloisConnection (⋃₀ · : Set (Set α) → Set α) (𝒫 · : Set α → Set (Set α)) 
goal: GaloisConnection (fun x => ⋃₀ x) fun x => 𝒫 x

full_name: Set.sUnion_powerset_gi
code: /-- `⋃₀` and `𝒫` form a Galois insertion. -/
def sUnion_powerset_gi :
    GaloisInsertion (⋃₀ · : Set (Set α) → Set α) (𝒫 · : Set α → Set (Set α)) 
goal: GaloisInsertion (fun x => ⋃₀ x) fun x => 𝒫 x

full_name: Set.sUnion_mem_empty_univ
code: /-- 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 α)) 
goal: ⋃₀ S ∈ {∅, Set.univ}

full_name: Set.nonempty_sUnion
code: @[simp]
theorem nonempty_sUnion {S : Set (Set α)} : (⋃₀S).Nonempty ↔ ∃ s ∈ S, Set.Nonempty s 
goal: (⋃₀ S).Nonempty ↔ ∃ s ∈ S, s.Nonempty

full_name: Set.Nonempty.of_sUnion
code: theorem Nonempty.of_sUnion {s : Set (Set α)} (h : (⋃₀s).Nonempty) : s.Nonempty 
goal: s.Nonempty

full_name: Set.Nonempty.of_sUnion_eq_univ
code: theorem Nonempty.of_sUnion_eq_univ [Nonempty α] {s : Set (Set α)} (h : ⋃₀s = univ) : s.Nonempty 
goal: s.Nonempty

full_name: Set.sUnion_union
code: theorem sUnion_union (S T : Set (Set α)) : ⋃₀(S ∪ T) = ⋃₀S ∪ ⋃₀T 
goal: ⋃₀ (S ∪ T) = ⋃₀ S ∪ ⋃₀ T

full_name: Set.sInter_union
code: theorem sInter_union (S T : Set (Set α)) : ⋂₀ (S ∪ T) = ⋂₀ S ∩ ⋂₀ T 
goal: ⋂₀ (S ∪ T) = ⋂₀ S ∩ ⋂₀ T

full_name: Set.sUnion_insert
code: @[simp]
theorem sUnion_insert (s : Set α) (T : Set (Set α)) : ⋃₀insert s T = s ∪ ⋃₀T 
goal: ⋃₀ insert s T = s ∪ ⋃₀ T

full_name: Set.sInter_insert
code: @[simp]
theorem sInter_insert (s : Set α) (T : Set (Set α)) : ⋂₀ insert s T = s ∩ ⋂₀ T 
goal: ⋂₀ insert s T = s ∩ ⋂₀ T

full_name: Set.sUnion_diff_singleton_empty
code: @[simp]
theorem sUnion_diff_singleton_empty (s : Set (Set α)) : ⋃₀(s \ {∅}) = ⋃₀s 
goal: ⋃₀ (s \ {∅}) = ⋃₀ s

full_name: Set.sInter_diff_singleton_univ
code: @[simp]
theorem sInter_diff_singleton_univ (s : Set (Set α)) : ⋂₀ (s \ {univ}) = ⋂₀ s 
goal: ⋂₀ (s \ {Set.univ}) = ⋂₀ s

full_name: Set.sUnion_pair
code: theorem sUnion_pair (s t : Set α) : ⋃₀{s, t} = s ∪ t 
goal: ⋃₀ {s, t} = s ∪ t

full_name: Set.sInter_pair
code: theorem sInter_pair (s t : Set α) : ⋂₀ {s, t} = s ∩ t 
goal: ⋂₀ {s, t} = s ∩ t

full_name: Set.sUnion_image
code: @[simp]
theorem sUnion_image (f : α → Set β) (s : Set α) : ⋃₀(f '' s) = ⋃ x ∈ s, f x 
goal: ⋃₀ (f '' s) = ⋃ x ∈ s, f x

full_name: Set.sInter_image
code: @[simp]
theorem sInter_image (f : α → Set β) (s : Set α) : ⋂₀ (f '' s) = ⋂ x ∈ s, f x 
goal: ⋂₀ (f '' s) = ⋂ x ∈ s, f x

full_name: Set.sUnion_range
code: @[simp]
theorem sUnion_range (f : ι → Set β) : ⋃₀range f = ⋃ x, f x 
goal: ⋃₀ Set.range f = ⋃ x, f x

full_name: Set.sInter_range
code: @[simp]
theorem sInter_range (f : ι → Set β) : ⋂₀ range f = ⋂ x, f x 
goal: ⋂₀ Set.range f = ⋂ x, f x

full_name: Set.iUnion_eq_univ_iff
code: theorem iUnion_eq_univ_iff {f : ι → Set α} : ⋃ i, f i = univ ↔ ∀ x, ∃ i, x ∈ f i 
goal: ⋃ i, f i = Set.univ ↔ ∀ (x : α), ∃ i, x ∈ f i

full_name: Set.iUnion₂_eq_univ_iff
code: theorem iUnion₂_eq_univ_iff {s : ∀ i, κ i → Set α} :
    ⋃ (i) (j), s i j = univ ↔ ∀ a, ∃ i j, a ∈ s i j 
goal: ⋃ i, ⋃ j, s i j = Set.univ ↔ ∀ (a : α), ∃ i j, a ∈ s i j

full_name: Set.sUnion_eq_univ_iff
code: theorem sUnion_eq_univ_iff {c : Set (Set α)} : ⋃₀c = univ ↔ ∀ a, ∃ b ∈ c, a ∈ b 
goal: ⋃₀ c = Set.univ ↔ ∀ (a : α), ∃ b ∈ c, a ∈ b

full_name: Set.iInter_eq_empty_iff
code: theorem iInter_eq_empty_iff {f : ι → Set α} : ⋂ i, f i = ∅ ↔ ∀ x, ∃ i, x ∉ f i 
goal: ⋂ i, f i = ∅ ↔ ∀ (x : α), ∃ i, x ∉ f i

full_name: Set.iInter₂_eq_empty_iff
code: theorem iInter₂_eq_empty_iff {s : ∀ i, κ i → Set α} :
    ⋂ (i) (j), s i j = ∅ ↔ ∀ a, ∃ i j, a ∉ s i j 
goal: ⋂ i, ⋂ j, s i j = ∅ ↔ ∀ (a : α), ∃ i j, a ∉ s i j

full_name: Set.sInter_eq_empty_iff
code: theorem sInter_eq_empty_iff {c : Set (Set α)} : ⋂₀ c = ∅ ↔ ∀ a, ∃ b ∈ c, a ∉ b 
goal: ⋂₀ c = ∅ ↔ ∀ (a : α), ∃ b ∈ c, a ∉ b

full_name: Set.nonempty_iInter
code: @[simp]
theorem nonempty_iInter {f : ι → Set α} : (⋂ i, f i).Nonempty ↔ ∃ x, ∀ i, x ∈ f i 
goal: (⋂ i, f i).Nonempty ↔ ∃ x, ∀ (i : ι), x ∈ f i

full_name: Set.nonempty_iInter₂
code: theorem nonempty_iInter₂ {s : ∀ i, κ i → Set α} :
    (⋂ (i) (j), s i j).Nonempty ↔ ∃ a, ∀ i j, a ∈ s i j 
goal: (⋂ i, ⋂ j, s i j).Nonempty ↔ ∃ a, ∀ (i : ι) (j : κ i), a ∈ s i j

full_name: Set.nonempty_sInter
code: @[simp]
theorem nonempty_sInter {c : Set (Set α)} : (⋂₀ c).Nonempty ↔ ∃ a, ∀ b ∈ c, a ∈ b 
goal: (⋂₀ c).Nonempty ↔ ∃ a, ∀ b ∈ c, a ∈ b

full_name: Set.compl_sUnion
code: theorem compl_sUnion (S : Set (Set α)) : (⋃₀S)ᶜ = ⋂₀ (compl '' S) 
goal: (⋃₀ S)ᶜ = ⋂₀ (compl '' S)

full_name: Set.sUnion_eq_compl_sInter_compl
code: theorem sUnion_eq_compl_sInter_compl (S : Set (Set α)) : ⋃₀S = (⋂₀ (compl '' S))ᶜ 
goal: ⋃₀ S = (⋂₀ (compl '' S))ᶜ

full_name: Set.compl_sInter
code: theorem compl_sInter (S : Set (Set α)) : (⋂₀ S)ᶜ = ⋃₀(compl '' S) 
goal: (⋂₀ S)ᶜ = ⋃₀ (compl '' S)

full_name: Set.sInter_eq_compl_sUnion_compl
code: theorem sInter_eq_compl_sUnion_compl (S : Set (Set α)) : ⋂₀ S = (⋃₀(compl '' S))ᶜ 
goal: ⋂₀ S = (⋃₀ (compl '' S))ᶜ

full_name: Set.inter_empty_of_inter_sUnion_empty
code: theorem inter_empty_of_inter_sUnion_empty {s t : Set α} {S : Set (Set α)} (hs : t ∈ S)
    (h : s ∩ ⋃₀S = ∅) : s ∩ t = ∅ 
goal: s ∩ t = ∅

full_name: Set.range_sigma_eq_iUnion_range
code: theorem range_sigma_eq_iUnion_range {γ : α → Type*} (f : Sigma γ → β) :
    range f = ⋃ a, range fun b => f ⟨a, b⟩ 
goal: Set.range f = ⋃ a, Set.range fun b => f ⟨a, b⟩

full_name: Set.iUnion_eq_range_sigma
code: theorem iUnion_eq_range_sigma (s : α → Set β) : ⋃ i, s i = range fun a : Σi, s i => a.2 
goal: ⋃ i, s i = Set.range fun a => ↑a.snd

full_name: Set.iUnion_eq_range_psigma
code: theorem iUnion_eq_range_psigma (s : ι → Set β) : ⋃ i, s i = range fun a : Σ'i, s i => a.2 
goal: ⋃ i, s i = Set.range fun a => ↑a.snd

full_name: Set.iUnion_image_preimage_sigma_mk_eq_self
code: theorem iUnion_image_preimage_sigma_mk_eq_self {ι : Type*} {σ : ι → Type*} (s : Set (Sigma σ)) :
    ⋃ i, Sigma.mk i '' (Sigma.mk i ⁻¹' s) = s 
goal: ⋃ i, Sigma.mk i '' (Sigma.mk i ⁻¹' s) = s

full_name: Set.Sigma.univ
code: theorem Sigma.univ (X : α → Type*) : (Set.univ : Set (Σa, X a)) = ⋃ a, range (Sigma.mk a) 
goal: Set.univ = ⋃ a, Set.range (Sigma.mk a)

full_name: Set.iUnion_subset_iUnion_const
code: theorem iUnion_subset_iUnion_const {s : Set α} (h : ι → ι₂) : ⋃ _ : ι, s ⊆ ⋃ _ : ι₂, s 
goal: ⋃ x, s ⊆ ⋃ x, s

full_name: Set.iUnion_singleton_eq_range
code: @[simp]
theorem iUnion_singleton_eq_range {α β : Type*} (f : α → β) : ⋃ x : α, {f x} = range f 
goal: ⋃ x, {f x} = Set.range f

full_name: Set.iUnion_of_singleton
code: theorem iUnion_of_singleton (α : Type*) : (⋃ x, {x} : Set α) = univ 
goal: ⋃ x, {x} = Set.univ

full_name: Set.iUnion_of_singleton_coe
code: theorem iUnion_of_singleton_coe (s : Set α) : ⋃ i : s, ({(i : α)} : Set α) = s 
goal: ⋃ i, {↑i} = s

full_name: Set.sUnion_eq_biUnion
code: theorem sUnion_eq_biUnion {s : Set (Set α)} : ⋃₀s = ⋃ (i : Set α) (_ : i ∈ s), i 
goal: ⋃₀ s = ⋃ i ∈ s, i

full_name: Set.sInter_eq_biInter
code: theorem sInter_eq_biInter {s : Set (Set α)} : ⋂₀ s = ⋂ (i : Set α) (_ : i ∈ s), i 
goal: ⋂₀ s = ⋂ i ∈ s, i

full_name: Set.sUnion_eq_iUnion
code: theorem sUnion_eq_iUnion {s : Set (Set α)} : ⋃₀s = ⋃ i : s, i 
goal: ⋃₀ s = ⋃ i, ↑i

full_name: Set.sInter_eq_iInter
code: theorem sInter_eq_iInter {s : Set (Set α)} : ⋂₀ s = ⋂ i : s, i 
goal: ⋂₀ s = ⋂ i, ↑i

full_name: Set.iUnion_of_empty
code: @[simp]
theorem iUnion_of_empty [IsEmpty ι] (s : ι → Set α) : ⋃ i, s i = ∅ 
goal: ⋃ i, s i = ∅

full_name: Set.iInter_of_empty
code: @[simp]
theorem iInter_of_empty [IsEmpty ι] (s : ι → Set α) : ⋂ i, s i = univ 
goal: ⋂ i, s i = Set.univ

full_name: Set.union_eq_iUnion
code: theorem union_eq_iUnion {s₁ s₂ : Set α} : s₁ ∪ s₂ = ⋃ b : Bool, cond b s₁ s₂ 
goal: s₁ ∪ s₂ = ⋃ b, bif b then s₁ else s₂

full_name: Set.inter_eq_iInter
code: theorem inter_eq_iInter {s₁ s₂ : Set α} : s₁ ∩ s₂ = ⋂ b : Bool, cond b s₁ s₂ 
goal: s₁ ∩ s₂ = ⋂ b, bif b then s₁ else s₂

full_name: Set.sInter_union_sInter
code: theorem sInter_union_sInter {S T : Set (Set α)} :
    ⋂₀ S ∪ ⋂₀ T = ⋂ p ∈ S ×ˢ T, (p : Set α × Set α).1 ∪ p.2 
goal: ⋂₀ S ∪ ⋂₀ T = ⋂ p ∈ S ×ˢ T, p.1 ∪ p.2

full_name: Set.sUnion_inter_sUnion
code: theorem sUnion_inter_sUnion {s t : Set (Set α)} :
    ⋃₀s ∩ ⋃₀t = ⋃ p ∈ s ×ˢ t, (p : Set α × Set α).1 ∩ p.2 
goal: ⋃₀ s ∩ ⋃₀ t = ⋃ p ∈ s ×ˢ t, p.1 ∩ p.2

full_name: Set.biUnion_iUnion
code: theorem biUnion_iUnion (s : ι → Set α) (t : α → Set β) :
    ⋃ x ∈ ⋃ i, s i, t x = ⋃ (i) (x ∈ s i), t x 
goal: ⋃ x ∈ ⋃ i, s i, t x = ⋃ i, ⋃ x ∈ s i, t x

full_name: Set.biInter_iUnion
code: theorem biInter_iUnion (s : ι → Set α) (t : α → Set β) :
    ⋂ x ∈ ⋃ i, s i, t x = ⋂ (i) (x ∈ s i), t x 
goal: ⋂ x ∈ ⋃ i, s i, t x = ⋂ i, ⋂ x ∈ s i, t x

full_name: Set.sUnion_iUnion
code: theorem sUnion_iUnion (s : ι → Set (Set α)) : ⋃₀⋃ i, s i = ⋃ i, ⋃₀s i 
goal: ⋃₀ ⋃ i, s i = ⋃ i, ⋃₀ s i

full_name: Set.sInter_iUnion
code: theorem sInter_iUnion (s : ι → Set (Set α)) : ⋂₀ ⋃ i, s i = ⋂ i, ⋂₀ s i 
goal: ⋂₀ ⋃ i, s i = ⋂ i, ⋂₀ s i

full_name: Set.iUnion_range_eq_sUnion
code: 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 
goal: (⋃ y, Set.range fun s => ↑(f s y)) = ⋃₀ C

full_name: Set.iUnion_range_eq_iUnion
code: 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 
goal: (⋃ y, Set.range fun x => ↑(f x y)) = ⋃ x, C x

full_name: Set.union_distrib_iInter_left
code: theorem union_distrib_iInter_left (s : ι → Set α) (t : Set α) : (t ∪ ⋂ i, s i) = ⋂ i, t ∪ s i 
goal: t ∪ ⋂ i, s i = ⋂ i, t ∪ s i

full_name: Set.union_distrib_iInter₂_left
code: theorem union_distrib_iInter₂_left (s : Set α) (t : ∀ i, κ i → Set α) :
    (s ∪ ⋂ (i) (j), t i j) = ⋂ (i) (j), s ∪ t i j 
goal: s ∪ ⋂ i, ⋂ j, t i j = ⋂ i, ⋂ j, s ∪ t i j

full_name: Set.union_distrib_iInter_right
code: theorem union_distrib_iInter_right (s : ι → Set α) (t : Set α) : (⋂ i, s i) ∪ t = ⋂ i, s i ∪ t 
goal: (⋂ i, s i) ∪ t = ⋂ i, s i ∪ t

full_name: Set.union_distrib_iInter₂_right
code: theorem union_distrib_iInter₂_right (s : ∀ i, κ i → Set α) (t : Set α) :
    (⋂ (i) (j), s i j) ∪ t = ⋂ (i) (j), s i j ∪ t 
goal: (⋂ i, ⋂ j, s i j) ∪ t = ⋂ i, ⋂ j, s i j ∪ t

full_name: Set.mapsTo_sUnion
code: @[simp]
theorem mapsTo_sUnion {S : Set (Set α)} {t : Set β} {f : α → β} :
    MapsTo f (⋃₀ S) t ↔ ∀ s ∈ S, MapsTo f s t 
goal: Set.MapsTo f (⋃₀ S) t ↔ ∀ s ∈ S, Set.MapsTo f s t

full_name: Set.mapsTo_iUnion
code: @[simp]
theorem mapsTo_iUnion {s : ι → Set α} {t : Set β} {f : α → β} :
    MapsTo f (⋃ i, s i) t ↔ ∀ i, MapsTo f (s i) t 
goal: Set.MapsTo f (⋃ i, s i) t ↔ ∀ (i : ι), Set.MapsTo f (s i) t

full_name: Set.mapsTo_iUnion₂
code: 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 
goal: Set.MapsTo f (⋃ i, ⋃ j, s i j) t ↔ ∀ (i : ι) (j : κ i), Set.MapsTo f (s i j) t

full_name: Set.mapsTo_iUnion_iUnion
code: 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) 
goal: Set.MapsTo f (⋃ i, s i) (⋃ i, t i)

full_name: Set.mapsTo_iUnion₂_iUnion₂
code: 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) 
goal: Set.MapsTo f (⋃ i, ⋃ j, s i j) (⋃ i, ⋃ j, t i j)

full_name: Set.mapsTo_sInter
code: @[simp]
theorem mapsTo_sInter {s : Set α} {T : Set (Set β)} {f : α → β} :
    MapsTo f s (⋂₀ T) ↔ ∀ t ∈ T, MapsTo f s t 
goal: Set.MapsTo f s (⋂₀ T) ↔ ∀ t ∈ T, Set.MapsTo f s t

full_name: Set.mapsTo_iInter
code: @[simp]
theorem mapsTo_iInter {s : Set α} {t : ι → Set β} {f : α → β} :
    MapsTo f s (⋂ i, t i) ↔ ∀ i, MapsTo f s (t i) 
goal: Set.MapsTo f s (⋂ i, t i) ↔ ∀ (i : ι), Set.MapsTo f s (t i)

full_name: Set.mapsTo_iInter₂
code: 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) 
goal: Set.MapsTo f s (⋂ i, ⋂ j, t i j) ↔ ∀ (i : ι) (j : κ i), Set.MapsTo f s (t i j)

full_name: Set.mapsTo_iInter_iInter
code: 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) 
goal: Set.MapsTo f (⋂ i, s i) (⋂ i, t i)

full_name: Set.mapsTo_iInter₂_iInter₂
code: 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) 
goal: Set.MapsTo f (⋂ i, ⋂ j, s i j) (⋂ i, ⋂ j, t i j)

full_name: Set.image_iInter_subset
code: theorem image_iInter_subset (s : ι → Set α) (f : α → β) : (f '' ⋂ i, s i) ⊆ ⋂ i, f '' s i 
goal: f '' ⋂ i, s i ⊆ ⋂ i, f '' s i

full_name: Set.image_iInter₂_subset
code: theorem image_iInter₂_subset (s : ∀ i, κ i → Set α) (f : α → β) :
    (f '' ⋂ (i) (j), s i j) ⊆ ⋂ (i) (j), f '' s i j 
goal: f '' ⋂ i, ⋂ j, s i j ⊆ ⋂ i, ⋂ j, f '' s i j

full_name: Set.image_sInter_subset
code: theorem image_sInter_subset (S : Set (Set α)) (f : α → β) : f '' ⋂₀ S ⊆ ⋂ s ∈ S, f '' s 
goal: f '' ⋂₀ S ⊆ ⋂ s ∈ S, f '' s

full_name: Set.injective_iff_injective_of_iUnion_eq_univ
code: theorem injective_iff_injective_of_iUnion_eq_univ :
    Injective f ↔ ∀ i, Injective ((U i).restrictPreimage f) 
goal: Function.Injective f ↔ ∀ (i : ι), Function.Injective ((U i).restrictPreimage f)

full_name: Set.surjective_iff_surjective_of_iUnion_eq_univ
code: theorem surjective_iff_surjective_of_iUnion_eq_univ :
    Surjective f ↔ ∀ i, Surjective ((U i).restrictPreimage f) 
goal: Function.Surjective f ↔ ∀ (i : ι), Function.Surjective ((U i).restrictPreimage f)

full_name: Set.bijective_iff_bijective_of_iUnion_eq_univ
code: theorem bijective_iff_bijective_of_iUnion_eq_univ :
    Bijective f ↔ ∀ i, Bijective ((U i).restrictPreimage f) 
goal: Function.Bijective f ↔ ∀ (i : ι), Function.Bijective ((U i).restrictPreimage f)

full_name: Set.InjOn.image_iInter_eq
code: theorem InjOn.image_iInter_eq [Nonempty ι] {s : ι → Set α} {f : α → β} (h : InjOn f (⋃ i, s i)) :
    (f '' ⋂ i, s i) = ⋂ i, f '' s i 
goal: f '' ⋂ i, s i = ⋂ i, f '' s i

full_name: Set.InjOn.image_biInter_eq
code: 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 
goal: f '' ⋂ i, ⋂ (hi : p i), s i hi = ⋂ i, ⋂ (hi : p i), f '' s i hi

full_name: Set.image_iInter
code: theorem image_iInter {f : α → β} (hf : Bijective f) (s : ι → Set α) :
    (f '' ⋂ i, s i) = ⋂ i, f '' s i 
goal: f '' ⋂ i, s i = ⋂ i, f '' s i

full_name: Set.image_iInter₂
code: theorem image_iInter₂ {f : α → β} (hf : Bijective f) (s : ∀ i, κ i → Set α) :
    (f '' ⋂ (i) (j), s i j) = ⋂ (i) (j), f '' s i j 
goal: f '' ⋂ i, ⋂ j, s i j = ⋂ i, ⋂ j, f '' s i j

full_name: Set.inj_on_iUnion_of_directed
code: theorem inj_on_iUnion_of_directed {s : ι → Set α} (hs : Directed (· ⊆ ·) s) {f : α → β}
    (hf : ∀ i, InjOn f (s i)) : InjOn f (⋃ i, s i) 
goal: Set.InjOn f (⋃ i, s i)

full_name: Set.surjOn_sUnion
code: theorem surjOn_sUnion {s : Set α} {T : Set (Set β)} {f : α → β} (H : ∀ t ∈ T, SurjOn f s t) :
    SurjOn f s (⋃₀T) 
goal: Set.SurjOn f s (⋃₀ T)

full_name: Set.surjOn_iUnion
code: theorem surjOn_iUnion {s : Set α} {t : ι → Set β} {f : α → β} (H : ∀ i, SurjOn f s (t i)) :
    SurjOn f s (⋃ i, t i) 
goal: Set.SurjOn f s (⋃ i, t i)

full_name: Set.surjOn_iUnion_iUnion
code: 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) 
goal: Set.SurjOn f (⋃ i, s i) (⋃ i, t i)

full_name: Set.surjOn_iUnion₂
code: 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) 
goal: Set.SurjOn f s (⋃ i, ⋃ j, t i j)

full_name: Set.surjOn_iUnion₂_iUnion₂
code: 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) 
goal: Set.SurjOn f (⋃ i, ⋃ j, s i j) (⋃ i, ⋃ j, t i j)

full_name: Set.surjOn_iInter
code: 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 
goal: Set.SurjOn f (⋂ i, s i) t

full_name: Set.surjOn_iInter_iInter
code: 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) 
goal: Set.SurjOn f (⋂ i, s i) (⋂ i, t i)

full_name: Set.bijOn_iUnion
code: 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) 
goal: Set.BijOn f (⋃ i, s i) (⋃ i, t i)

full_name: Set.bijOn_iInter
code: 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) 
goal: Set.BijOn f (⋂ i, s i) (⋂ i, t i)

full_name: Set.bijOn_iUnion_of_directed
code: 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) 
goal: Set.BijOn f (⋃ i, s i) (⋃ i, t i)

full_name: Set.bijOn_iInter_of_directed
code: 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) 
goal: Set.BijOn f (⋂ i, s i) (⋂ i, t i)

full_name: Set.image_iUnion
code: theorem image_iUnion {f : α → β} {s : ι → Set α} : (f '' ⋃ i, s i) = ⋃ i, f '' s i 
goal: f '' ⋃ i, s i = ⋃ i, f '' s i

full_name: Set.image_iUnion₂
code: theorem image_iUnion₂ (f : α → β) (s : ∀ i, κ i → Set α) :
    (f '' ⋃ (i) (j), s i j) = ⋃ (i) (j), f '' s i j 
goal: f '' ⋃ i, ⋃ j, s i j = ⋃ i, ⋃ j, f '' s i j

full_name: Set.univ_subtype
code: theorem univ_subtype {p : α → Prop} : (univ : Set (Subtype p)) = ⋃ (x) (h : p x), {⟨x, h⟩} 
goal: Set.univ = ⋃ x, ⋃ (h : p x), {⟨x, h⟩}

full_name: Set.range_eq_iUnion
code: theorem range_eq_iUnion {ι} (f : ι → α) : range f = ⋃ i, {f i} 
goal: Set.range f = ⋃ i, {f i}

full_name: Set.image_eq_iUnion
code: theorem image_eq_iUnion (f : α → β) (s : Set α) : f '' s = ⋃ i ∈ s, {f i} 
goal: f '' s = ⋃ i ∈ s, {f i}

full_name: Set.biUnion_range
code: theorem biUnion_range {f : ι → α} {g : α → Set β} : ⋃ x ∈ range f, g x = ⋃ y, g (f y) 
goal: ⋃ x ∈ Set.range f, g x = ⋃ y, g (f y)

full_name: Set.iUnion_iUnion_eq'
code: @[simp]
theorem iUnion_iUnion_eq' {f : ι → α} {g : α → Set β} :
    ⋃ (x) (y) (_ : f y = x), g x = ⋃ y, g (f y) 
goal: ⋃ x, ⋃ y, ⋃ (_ : f y = x), g x = ⋃ y, g (f y)

full_name: Set.biInter_range
code: theorem biInter_range {f : ι → α} {g : α → Set β} : ⋂ x ∈ range f, g x = ⋂ y, g (f y) 
goal: ⋂ x ∈ Set.range f, g x = ⋂ y, g (f y)

full_name: Set.iInter_iInter_eq'
code: @[simp]
theorem iInter_iInter_eq' {f : ι → α} {g : α → Set β} :
    ⋂ (x) (y) (_ : f y = x), g x = ⋂ y, g (f y) 
goal: ⋂ x, ⋂ y, ⋂ (_ : f y = x), g x = ⋂ y, g (f y)

full_name: Set.biUnion_image
code: theorem biUnion_image : ⋃ x ∈ f '' s, g x = ⋃ y ∈ s, g (f y) 
goal: ⋃ x ∈ f '' s, g x = ⋃ y ∈ s, g (f y)

full_name: Set.biInter_image
code: theorem biInter_image : ⋂ x ∈ f '' s, g x = ⋂ y ∈ s, g (f y) 
goal: ⋂ x ∈ f '' s, g x = ⋂ y ∈ s, g (f y)

full_name: Set.monotone_preimage
code: theorem monotone_preimage {f : α → β} : Monotone (preimage f) 
goal: Monotone (Set.preimage f)

full_name: Set.preimage_iUnion
code: @[simp]
theorem preimage_iUnion {f : α → β} {s : ι → Set β} : (f ⁻¹' ⋃ i, s i) = ⋃ i, f ⁻¹' s i 
goal: f ⁻¹' ⋃ i, s i = ⋃ i, f ⁻¹' s i

full_name: Set.preimage_iUnion₂
code: theorem preimage_iUnion₂ {f : α → β} {s : ∀ i, κ i → Set β} :
    (f ⁻¹' ⋃ (i) (j), s i j) = ⋃ (i) (j), f ⁻¹' s i j 
goal: f ⁻¹' ⋃ i, ⋃ j, s i j = ⋃ i, ⋃ j, f ⁻¹' s i j

full_name: Set.image_sUnion
code: theorem image_sUnion {f : α → β} {s : Set (Set α)} : (f '' ⋃₀ s) = ⋃₀ (image f '' s) 
goal: f '' ⋃₀ s = ⋃₀ (Set.image f '' s)

full_name: Set.preimage_sUnion
code: @[simp]
theorem preimage_sUnion {f : α → β} {s : Set (Set β)} : f ⁻¹' ⋃₀s = ⋃ t ∈ s, f ⁻¹' t 
goal: f ⁻¹' ⋃₀ s = ⋃ t ∈ s, f ⁻¹' t

full_name: Set.preimage_iInter
code: theorem preimage_iInter {f : α → β} {s : ι → Set β} : (f ⁻¹' ⋂ i, s i) = ⋂ i, f ⁻¹' s i 
goal: f ⁻¹' ⋂ i, s i = ⋂ i, f ⁻¹' s i

full_name: Set.preimage_iInter₂
code: theorem preimage_iInter₂ {f : α → β} {s : ∀ i, κ i → Set β} :
    (f ⁻¹' ⋂ (i) (j), s i j) = ⋂ (i) (j), f ⁻¹' s i j 
goal: f ⁻¹' ⋂ i, ⋂ j, s i j = ⋂ i, ⋂ j, f ⁻¹' s i j

full_name: Set.preimage_sInter
code: @[simp]
theorem preimage_sInter {f : α → β} {s : Set (Set β)} : f ⁻¹' ⋂₀ s = ⋂ t ∈ s, f ⁻¹' t 
goal: f ⁻¹' ⋂₀ s = ⋂ t ∈ s, f ⁻¹' t

full_name: Set.biUnion_preimage_singleton
code: @[simp]
theorem biUnion_preimage_singleton (f : α → β) (s : Set β) : ⋃ y ∈ s, f ⁻¹' {y} = f ⁻¹' s 
goal: ⋃ y ∈ s, f ⁻¹' {y} = f ⁻¹' s

full_name: Set.biUnion_range_preimage_singleton
code: theorem biUnion_range_preimage_singleton (f : α → β) : ⋃ y ∈ range f, f ⁻¹' {y} = univ 
goal: ⋃ y ∈ Set.range f, f ⁻¹' {y} = Set.univ

full_name: Set.prod_iUnion
code: theorem prod_iUnion {s : Set α} {t : ι → Set β} : (s ×ˢ ⋃ i, t i) = ⋃ i, s ×ˢ t i 
goal: s ×ˢ ⋃ i, t i = ⋃ i, s ×ˢ t i

full_name: Set.prod_iUnion₂
code: theorem prod_iUnion₂ {s : Set α} {t : ∀ i, κ i → Set β} :
    (s ×ˢ ⋃ (i) (j), t i j) = ⋃ (i) (j), s ×ˢ t i j 
goal: s ×ˢ ⋃ i, ⋃ j, t i j = ⋃ i, ⋃ j, s ×ˢ t i j

full_name: Set.prod_sUnion
code: theorem prod_sUnion {s : Set α} {C : Set (Set β)} : s ×ˢ ⋃₀C = ⋃₀((fun t => s ×ˢ t) '' C) 
goal: s ×ˢ ⋃₀ C = ⋃₀ ((fun t => s ×ˢ t) '' C)

full_name: Set.iUnion_prod_const
code: theorem iUnion_prod_const {s : ι → Set α} {t : Set β} : (⋃ i, s i) ×ˢ t = ⋃ i, s i ×ˢ t 
goal: (⋃ i, s i) ×ˢ t = ⋃ i, s i ×ˢ t

full_name: Set.iUnion₂_prod_const
code: theorem iUnion₂_prod_const {s : ∀ i, κ i → Set α} {t : Set β} :
    (⋃ (i) (j), s i j) ×ˢ t = ⋃ (i) (j), s i j ×ˢ t 
goal: (⋃ i, ⋃ j, s i j) ×ˢ t = ⋃ i, ⋃ j, s i j ×ˢ t

full_name: Set.sUnion_prod_const
code: theorem sUnion_prod_const {C : Set (Set α)} {t : Set β} :
    ⋃₀C ×ˢ t = ⋃₀((fun s : Set α => s ×ˢ t) '' C) 
goal: ⋃₀ C ×ˢ t = ⋃₀ ((fun s => s ×ˢ t) '' C)

full_name: Set.iUnion_prod
code: theorem iUnion_prod {ι ι' α β} (s : ι → Set α) (t : ι' → Set β) :
    ⋃ x : ι × ι', s x.1 ×ˢ t x.2 = (⋃ i : ι, s i) ×ˢ ⋃ i : ι', t i 
goal: ⋃ x, s x.1 ×ˢ t x.2 = (⋃ i, s i) ×ˢ ⋃ i, t i

full_name: Set.iUnion_prod'
code: /-- Analogue of `iSup_prod` for sets. -/
lemma iUnion_prod' (f : β × γ → Set α) : ⋃ x : β × γ, f x = ⋃ (i : β) (j : γ), f (i, j) 
goal: ⋃ x, f x = ⋃ i, ⋃ j, f (i, j)

full_name: Set.iUnion_prod_of_monotone
code: 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 
goal: ⋃ x, s x ×ˢ t x = (⋃ x, s x) ×ˢ ⋃ x, t x

full_name: Set.sInter_prod_sInter_subset
code: theorem sInter_prod_sInter_subset (S : Set (Set α)) (T : Set (Set β)) :
    ⋂₀ S ×ˢ ⋂₀ T ⊆ ⋂ r ∈ S ×ˢ T, r.1 ×ˢ r.2 
goal: ⋂₀ S ×ˢ ⋂₀ T ⊆ ⋂ r ∈ S ×ˢ T, r.1 ×ˢ r.2

full_name: Set.sInter_prod_sInter
code: 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 
goal: ⋂₀ S ×ˢ ⋂₀ T = ⋂ r ∈ S ×ˢ T, r.1 ×ˢ r.2

full_name: Set.sInter_prod
code: theorem sInter_prod {S : Set (Set α)} (hS : S.Nonempty) (t : Set β) :
    ⋂₀ S ×ˢ t = ⋂ s ∈ S, s ×ˢ t 
goal: ⋂₀ S ×ˢ t = ⋂ s ∈ S, s ×ˢ t

full_name: Set.prod_sInter
code: theorem prod_sInter {T : Set (Set β)} (hT : T.Nonempty) (s : Set α) :
    s ×ˢ ⋂₀ T = ⋂ t ∈ T, s ×ˢ t 
goal: s ×ˢ ⋂₀ T = ⋂ t ∈ T, s ×ˢ t

full_name: Set.prod_iInter
code: theorem prod_iInter {s : Set α} {t : ι → Set β} [hι : Nonempty ι] :
    (s ×ˢ ⋂ i, t i) = ⋂ i, s ×ˢ t i 
goal: s ×ˢ ⋂ i, t i = ⋂ i, s ×ˢ t i

full_name: Set.image2_eq_iUnion
code: /-- 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} 
goal: Set.image2 f s t = ⋃ i ∈ s, ⋃ j ∈ t, {f i j}

full_name: Set.iUnion_image_left
code: theorem iUnion_image_left : ⋃ a ∈ s, f a '' t = image2 f s t 
goal: ⋃ a ∈ s, f a '' t = Set.image2 f s t

full_name: Set.iUnion_image_right
code: theorem iUnion_image_right : ⋃ b ∈ t, (f · b) '' s = image2 f s t 
goal: ⋃ b ∈ t, (fun x => f x b) '' s = Set.image2 f s t

full_name: Set.image2_iUnion_left
code: theorem image2_iUnion_left (s : ι → Set α) (t : Set β) :
    image2 f (⋃ i, s i) t = ⋃ i, image2 f (s i) t 
goal: Set.image2 f (⋃ i, s i) t = ⋃ i, Set.image2 f (s i) t

full_name: Set.image2_iUnion_right
code: theorem image2_iUnion_right (s : Set α) (t : ι → Set β) :
    image2 f s (⋃ i, t i) = ⋃ i, image2 f s (t i) 
goal: Set.image2 f s (⋃ i, t i) = ⋃ i, Set.image2 f s (t i)

full_name: Set.image2_iUnion₂_left
code: 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 
goal: Set.image2 f (⋃ i, ⋃ j, s i j) t = ⋃ i, ⋃ j, Set.image2 f (s i j) t

full_name: Set.image2_iUnion₂_right
code: 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) 
goal: Set.image2 f s (⋃ i, ⋃ j, t i j) = ⋃ i, ⋃ j, Set.image2 f s (t i j)

full_name: Set.image2_iInter_subset_left
code: theorem image2_iInter_subset_left (s : ι → Set α) (t : Set β) :
    image2 f (⋂ i, s i) t ⊆ ⋂ i, image2 f (s i) t 
goal: Set.image2 f (⋂ i, s i) t ⊆ ⋂ i, Set.image2 f (s i) t

full_name: Set.image2_iInter_subset_right
code: theorem image2_iInter_subset_right (s : Set α) (t : ι → Set β) :
    image2 f s (⋂ i, t i) ⊆ ⋂ i, image2 f s (t i) 
goal: Set.image2 f s (⋂ i, t i) ⊆ ⋂ i, Set.image2 f s (t i)

full_name: Set.image2_iInter₂_subset_left
code: 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 
goal: Set.image2 f (⋂ i, ⋂ j, s i j) t ⊆ ⋂ i, ⋂ j, Set.image2 f (s i j) t

full_name: Set.image2_iInter₂_subset_right
code: 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) 
goal: Set.image2 f s (⋂ i, ⋂ j, t i j) ⊆ ⋂ i, ⋂ j, Set.image2 f s (t i j)

full_name: Set.prod_eq_biUnion_left
code: theorem prod_eq_biUnion_left : s ×ˢ t = ⋃ a ∈ s, (fun b => (a, b)) '' t 
goal: s ×ˢ t = ⋃ a ∈ s, (fun b => (a, b)) '' t

full_name: Set.prod_eq_biUnion_right
code: theorem prod_eq_biUnion_right : s ×ˢ t = ⋃ b ∈ t, (fun a => (a, b)) '' s 
goal: s ×ˢ t = ⋃ b ∈ t, (fun a => (a, b)) '' s

full_name: Set.seq_def
code: theorem seq_def {s : Set (α → β)} {t : Set α} : seq s t = ⋃ f ∈ s, f '' t 
goal: s.seq t = ⋃ f ∈ s, f '' t

full_name: Set.seq_subset
code: theorem seq_subset {s : Set (α → β)} {t : Set α} {u : Set β} :
    seq s t ⊆ u ↔ ∀ f ∈ s, ∀ a ∈ t, (f : α → β) a ∈ u 
goal: s.seq t ⊆ u ↔ ∀ f ∈ s, ∀ a ∈ t, f a ∈ u

full_name: Set.seq_mono
code: @[gcongr]
theorem seq_mono {s₀ s₁ : Set (α → β)} {t₀ t₁ : Set α} (hs : s₀ ⊆ s₁) (ht : t₀ ⊆ t₁) :
    seq s₀ t₀ ⊆ seq s₁ t₁ 
goal: s₀.seq t₀ ⊆ s₁.seq t₁

full_name: Set.singleton_seq
code: theorem singleton_seq {f : α → β} {t : Set α} : Set.seq ({f} : Set (α → β)) t = f '' t 
goal: {f}.seq t = f '' t

full_name: Set.seq_singleton
code: theorem seq_singleton {s : Set (α → β)} {a : α} : Set.seq s {a} = (fun f : α → β => f a) '' s 
goal: s.seq {a} = (fun f => f a) '' s

full_name: Set.seq_seq
code: theorem seq_seq {s : Set (β → γ)} {t : Set (α → β)} {u : Set α} :
    seq s (seq t u) = seq (seq ((· ∘ ·) '' s) t) u 
goal: s.seq (t.seq u) = (((fun x x_1 => x ∘ x_1) '' s).seq t).seq u

full_name: Set.image_seq
code: theorem image_seq {f : β → γ} {s : Set (α → β)} {t : Set α} :
    f '' seq s t = seq ((f ∘ ·) '' s) t 
goal: f '' s.seq t = ((fun x => f ∘ x) '' s).seq t

full_name: Set.prod_eq_seq
code: theorem prod_eq_seq {s : Set α} {t : Set β} : s ×ˢ t = (Prod.mk '' s).seq t 
goal: s ×ˢ t = (Prod.mk '' s).seq t

full_name: Set.prod_image_seq_comm
code: theorem prod_image_seq_comm (s : Set α) (t : Set β) :
    (Prod.mk '' s).seq t = seq ((fun b a => (a, b)) '' t) s 
goal: (Prod.mk '' s).seq t = ((fun b a => (a, b)) '' t).seq s

full_name: Set.image2_eq_seq
code: theorem image2_eq_seq (f : α → β → γ) (s : Set α) (t : Set β) : image2 f s t = seq (f '' s) t 
goal: Set.image2 f s t = (f '' s).seq t

full_name: Set.pi_def
code: theorem pi_def (i : Set α) (s : ∀ a, Set (π a)) : pi i s = ⋂ a ∈ i, eval a ⁻¹' s a 
goal: i.pi s = ⋂ a ∈ i, Function.eval a ⁻¹' s a

full_name: Set.univ_pi_eq_iInter
code: theorem univ_pi_eq_iInter (t : ∀ i, Set (π i)) : pi univ t = ⋂ i, eval i ⁻¹' t i 
goal: Set.univ.pi t = ⋂ i, Function.eval i ⁻¹' t i

full_name: Set.pi_diff_pi_subset
code: 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) 
goal: i.pi s \ i.pi t ⊆ ⋃ a ∈ i, Function.eval a ⁻¹' (s a \ t a)

full_name: Set.iUnion_univ_pi
code: 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 
goal: (⋃ x, Set.univ.pi fun a => t a (x a)) = Set.univ.pi fun a => ⋃ j, t a j

full_name: Set.directedOn_iUnion
code: theorem directedOn_iUnion {r} {f : ι → Set α} (hd : Directed (· ⊆ ·) f)
    (h : ∀ x, DirectedOn r (f x)) : DirectedOn r (⋃ x, f x) 
goal: DirectedOn r (⋃ x, f x)

full_name: Set.directedOn_sUnion
code: theorem directedOn_sUnion {r} {S : Set (Set α)} (hd : DirectedOn (· ⊆ ·) S)
    (h : ∀ x ∈ S, DirectedOn r x) : DirectedOn r (⋃₀ S) 
goal: DirectedOn r (⋃₀ S)

full_name: Function.Surjective.iUnion_comp
code: theorem iUnion_comp {f : ι → ι₂} (hf : Surjective f) (g : ι₂ → Set α) : ⋃ x, g (f x) = ⋃ y, g y 
goal: ⋃ x, g (f x) = ⋃ y, g y

full_name: Function.Surjective.iInter_comp
code: theorem iInter_comp {f : ι → ι₂} (hf : Surjective f) (g : ι₂ → Set α) : ⋂ x, g (f x) = ⋂ y, g y 
goal: ⋂ x, g (f x) = ⋂ y, g y

full_name: Set.disjoint_iUnion_left
code: @[simp]
theorem disjoint_iUnion_left {ι : Sort*} {s : ι → Set α} :
    Disjoint (⋃ i, s i) t ↔ ∀ i, Disjoint (s i) t 
goal: Disjoint (⋃ i, s i) t ↔ ∀ (i : ι), Disjoint (s i) t

full_name: Set.disjoint_iUnion_right
code: @[simp]
theorem disjoint_iUnion_right {ι : Sort*} {s : ι → Set α} :
    Disjoint t (⋃ i, s i) ↔ ∀ i, Disjoint t (s i) 
goal: Disjoint t (⋃ i, s i) ↔ ∀ (i : ι), Disjoint t (s i)

full_name: Set.disjoint_iUnion₂_left
code: theorem disjoint_iUnion₂_left {s : ∀ i, κ i → Set α} {t : Set α} :
    Disjoint (⋃ (i) (j), s i j) t ↔ ∀ i j, Disjoint (s i j) t 
goal: Disjoint (⋃ i, ⋃ j, s i j) t ↔ ∀ (i : ι) (j : κ i), Disjoint (s i j) t

full_name: Set.disjoint_iUnion₂_right
code: theorem disjoint_iUnion₂_right {s : Set α} {t : ∀ i, κ i → Set α} :
    Disjoint s (⋃ (i) (j), t i j) ↔ ∀ i j, Disjoint s (t i j) 
goal: Disjoint s (⋃ i, ⋃ j, t i j) ↔ ∀ (i : ι) (j : κ i), Disjoint s (t i j)

full_name: Set.disjoint_sUnion_left
code: @[simp]
theorem disjoint_sUnion_left {S : Set (Set α)} {t : Set α} :
    Disjoint (⋃₀S) t ↔ ∀ s ∈ S, Disjoint s t 
goal: Disjoint (⋃₀ S) t ↔ ∀ s ∈ S, Disjoint s t

full_name: Set.disjoint_sUnion_right
code: @[simp]
theorem disjoint_sUnion_right {s : Set α} {S : Set (Set α)} :
    Disjoint s (⋃₀S) ↔ ∀ t ∈ S, Disjoint s t 
goal: Disjoint s (⋃₀ S) ↔ ∀ t ∈ S, Disjoint s t

full_name: Set.biUnion_compl_eq_of_pairwise_disjoint_of_iUnion_eq_univ
code: lemma biUnion_compl_eq_of_pairwise_disjoint_of_iUnion_eq_univ {ι : Type*} {Es : ι → Set α}
    (Es_union : ⋃ i, Es i = univ) (Es_disj : Pairwise fun i j ↦ Disjoint (Es i) (Es j))
    (I : Set ι) :
    (⋃ i ∈ I, Es i)ᶜ = ⋃ i ∈ Iᶜ, Es i 
goal: (⋃ i ∈ I, Es i)ᶜ = ⋃ i ∈ Iᶜ, Es i

full_name: Set.nonempty_iInter_Iic_iff
code: lemma nonempty_iInter_Iic_iff [Preorder α] {f : ι → α} :
    (⋂ i, Iic (f i)).Nonempty ↔ BddBelow (range f) 
goal: (⋂ i, Set.Iic (f i)).Nonempty ↔ BddBelow (Set.range f)

full_name: Set.nonempty_iInter_Ici_iff
code: lemma nonempty_iInter_Ici_iff [Preorder α] {f : ι → α} :
    (⋂ i, Ici (f i)).Nonempty ↔ BddAbove (range f) 
goal: (⋂ i, Set.Ici (f i)).Nonempty ↔ BddAbove (Set.range f)

full_name: Set.Ici_iSup
code: theorem Ici_iSup (f : ι → α) : Ici (⨆ i, f i) = ⋂ i, Ici (f i) 
goal: Set.Ici (⨆ i, f i) = ⋂ i, Set.Ici (f i)

full_name: Set.Iic_iInf
code: theorem Iic_iInf (f : ι → α) : Iic (⨅ i, f i) = ⋂ i, Iic (f i) 
goal: Set.Iic (⨅ i, f i) = ⋂ i, Set.Iic (f i)

full_name: Set.Ici_iSup₂
code: theorem Ici_iSup₂ (f : ∀ i, κ i → α) : Ici (⨆ (i) (j), f i j) = ⋂ (i) (j), Ici (f i j) 
goal: Set.Ici (⨆ i, ⨆ j, f i j) = ⋂ i, ⋂ j, Set.Ici (f i j)

full_name: Set.Iic_iInf₂
code: theorem Iic_iInf₂ (f : ∀ i, κ i → α) : Iic (⨅ (i) (j), f i j) = ⋂ (i) (j), Iic (f i j) 
goal: Set.Iic (⨅ i, ⨅ j, f i j) = ⋂ i, ⋂ j, Set.Iic (f i j)

full_name: Set.Ici_sSup
code: theorem Ici_sSup (s : Set α) : Ici (sSup s) = ⋂ a ∈ s, Ici a 
goal: Set.Ici (sSup s) = ⋂ a ∈ s, Set.Ici a

full_name: Set.Iic_sInf
code: theorem Iic_sInf (s : Set α) : Iic (sInf s) = ⋂ a ∈ s, Iic a 
goal: Set.Iic (sInf s) = ⋂ a ∈ s, Set.Iic a

full_name: Set.biUnion_diff_biUnion_subset
code: theorem biUnion_diff_biUnion_subset (s₁ s₂ : Set α) :
    ((⋃ x ∈ s₁, t x) \ ⋃ x ∈ s₂, t x) ⊆ ⋃ x ∈ s₁ \ s₂, t x 
goal: (⋃ x ∈ s₁, t x) \ ⋃ x ∈ s₂, t x ⊆ ⋃ x ∈ s₁ \ s₂, t x

full_name: Set.sigmaToiUnion
code: /-- 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 
goal: ↑(⋃ i, t i)

full_name: Set.sigmaToiUnion_surjective
code: theorem sigmaToiUnion_surjective : Surjective (sigmaToiUnion t)
  
goal: Function.Surjective (Set.sigmaToiUnion t)

full_name: Set.sigmaToiUnion_injective
code: theorem sigmaToiUnion_injective (h : Pairwise fun i j => Disjoint (t i) (t j)) :
    Injective (sigmaToiUnion t)
  
goal: Function.Injective (Set.sigmaToiUnion t)

full_name: Set.sigmaToiUnion_bijective
code: theorem sigmaToiUnion_bijective (h : Pairwise fun i j => Disjoint (t i) (t j)) :
    Bijective (sigmaToiUnion t) 
goal: Function.Bijective (Set.sigmaToiUnion t)

full_name: Set.sigmaEquiv
code: /-- Equivalence from the disjoint union of a family of sets forming a partition of `β`, to `β`
itself. -/
noncomputable def sigmaEquiv (s : α → Set β) (hs : ∀ b, ∃! i, b ∈ s i) :
    (Σ i, s i) ≃ β 
goal: (i : α) × ↑(s i) ≃ β

full_name: Set.unionEqSigmaOfDisjoint
code: /-- Equivalence between a disjoint union and a dependent sum. -/
noncomputable def unionEqSigmaOfDisjoint {t : α → Set β}
    (h : Pairwise fun i j => Disjoint (t i) (t j)) :
    (⋃ i, t i) ≃ Σi, t i 
goal: ↑(⋃ i, t i) ≃ (i : α) × ↑(t i)

full_name: Set.iUnion_ge_eq_iUnion_nat_add
code: theorem iUnion_ge_eq_iUnion_nat_add (u : ℕ → Set α) (n : ℕ) : ⋃ i ≥ n, u i = ⋃ i, u (i + n) 
goal: ⋃ i, ⋃ (_ : i ≥ n), u i = ⋃ i, u (i + n)

full_name: Set.iInter_ge_eq_iInter_nat_add
code: theorem iInter_ge_eq_iInter_nat_add (u : ℕ → Set α) (n : ℕ) : ⋂ i ≥ n, u i = ⋂ i, u (i + n) 
goal: ⋂ i, ⋂ (_ : i ≥ n), u i = ⋂ i, u (i + n)

full_name: Monotone.iUnion_nat_add
code: theorem _root_.Monotone.iUnion_nat_add {f : ℕ → Set α} (hf : Monotone f) (k : ℕ) :
    ⋃ n, f (n + k) = ⋃ n, f n 
goal: ⋃ n, f (n + k) = ⋃ n, f n

full_name: Antitone.iInter_nat_add
code: theorem _root_.Antitone.iInter_nat_add {f : ℕ → Set α} (hf : Antitone f) (k : ℕ) :
    ⋂ n, f (n + k) = ⋂ n, f n 
goal: ⋂ n, f (n + k) = ⋂ n, f n

full_name: Set.iUnion_iInter_ge_nat_add
code: theorem iUnion_iInter_ge_nat_add (f : ℕ → Set α) (k : ℕ) :
    ⋃ n, ⋂ i ≥ n, f (i + k) = ⋃ n, ⋂ i ≥ n, f i 
goal: ⋃ n, ⋂ i, ⋂ (_ : i ≥ n), f (i + k) = ⋃ n, ⋂ i, ⋂ (_ : i ≥ n), f i

full_name: Set.union_iUnion_nat_succ
code: theorem union_iUnion_nat_succ (u : ℕ → Set α) : (u 0 ∪ ⋃ i, u (i + 1)) = ⋃ i, u i 
goal: u 0 ∪ ⋃ i, u (i + 1) = ⋃ i, u i

full_name: Set.inter_iInter_nat_succ
code: theorem inter_iInter_nat_succ (u : ℕ → Set α) : (u 0 ∩ ⋂ i, u (i + 1)) = ⋂ i, u i 
goal: u 0 ∩ ⋂ i, u (i + 1) = ⋂ i, u i

full_name: iSup_iUnion
code: theorem iSup_iUnion (s : ι → Set α) (f : α → β) : ⨆ a ∈ ⋃ i, s i, f a = ⨆ (i) (a ∈ s i), f a 
goal: ⨆ a ∈ ⋃ i, s i, f a = ⨆ i, ⨆ a ∈ s i, f a

full_name: iInf_iUnion
code: theorem iInf_iUnion (s : ι → Set α) (f : α → β) : ⨅ a ∈ ⋃ i, s i, f a = ⨅ (i) (a ∈ s i), f a 
goal: ⨅ a ∈ ⋃ i, s i, f a = ⨅ i, ⨅ a ∈ s i, f a

full_name: sSup_iUnion
code: theorem sSup_iUnion (t : ι → Set β) : sSup (⋃ i, t i) = ⨆ i, sSup (t i) 
goal: sSup (⋃ i, t i) = ⨆ i, sSup (t i)

full_name: sSup_sUnion
code: theorem sSup_sUnion (s : Set (Set β)) : sSup (⋃₀ s) = ⨆ t ∈ s, sSup t 
goal: sSup (⋃₀ s) = ⨆ t ∈ s, sSup t

full_name: sInf_sUnion
code: theorem sInf_sUnion (s : Set (Set β)) : sInf (⋃₀ s) = ⨅ t ∈ s, sInf t 
goal: sInf (⋃₀ s) = ⨅ t ∈ s, sInf t

full_name: iSup_sUnion
code: lemma iSup_sUnion (S : Set (Set α)) (f : α → β) :
    (⨆ x ∈ ⋃₀ S, f x) = ⨆ (s ∈ S) (x ∈ s), f x 
goal: ⨆ x ∈ ⋃₀ S, f x = ⨆ s ∈ S, ⨆ x ∈ s, f x

full_name: iInf_sUnion
code: lemma iInf_sUnion (S : Set (Set α)) (f : α → β) :
    (⨅ x ∈ ⋃₀ S, f x) = ⨅ (s ∈ S) (x ∈ s), f x 
goal: ⨅ x ∈ ⋃₀ S, f x = ⨅ s ∈ S, ⨅ x ∈ s, f x

full_name: forall_sUnion
code: lemma forall_sUnion {S : Set (Set α)} {p : α → Prop} :
    (∀ x ∈ ⋃₀ S, p x) ↔ ∀ s ∈ S, ∀ x ∈ s, p x 
goal: (∀ x ∈ ⋃₀ S, p x) ↔ ∀ s ∈ S, ∀ x ∈ s, p x

full_name: exists_sUnion
code: lemma exists_sUnion {S : Set (Set α)} {p : α → Prop} :
    (∃ x ∈ ⋃₀ S, p x) ↔ ∃ s ∈ S, ∃ x ∈ s, p x 
goal: (∃ x ∈ ⋃₀ S, p x) ↔ ∃ s ∈ S, ∃ x ∈ s, p x