[GOAL]
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i✝ j : ι
a : α i✝
i : ι
⊢ range (Sigma.mk i) = Sigma.fst ⁻¹' {i}
[PROOFSTEP]
apply Subset.antisymm
[GOAL]
case h₁
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i✝ j : ι
a : α i✝
i : ι
⊢ range (Sigma.mk i) ⊆ Sigma.fst ⁻¹' {i}
[PROOFSTEP]
rintro _ ⟨b, rfl⟩
[GOAL]
case h₁.intro
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i✝ j : ι
a : α i✝
i : ι
b : α i
⊢ { fst := i, snd := b } ∈ Sigma.fst ⁻¹' {i}
[PROOFSTEP]
simp
[GOAL]
case h₂
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i✝ j : ι
a : α i✝
i : ι
⊢ Sigma.fst ⁻¹' {i} ⊆ range (Sigma.mk i)
[PROOFSTEP]
rintro ⟨x, y⟩ (rfl | _)
[GOAL]
case h₂.mk.refl
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i j : ι
a : α i
x : ι
y : α x
⊢ { fst := x, snd := y } ∈ range (Sigma.mk { fst := x, snd := y }.fst)
[PROOFSTEP]
exact mem_range_self y
[GOAL]
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s✝ s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i j : ι
a : α i
h : i ≠ j
s : Set (α j)
⊢ Sigma.mk i ⁻¹' (Sigma.mk j '' s) = ∅
[PROOFSTEP]
ext x
[GOAL]
case h
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s✝ s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i j : ι
a : α i
h : i ≠ j
s : Set (α j)
x : α i
⊢ x ∈ Sigma.mk i ⁻¹' (Sigma.mk j '' s) ↔ x ∈ ∅
[PROOFSTEP]
simp [h.symm]
[GOAL]
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β✝ : ι → Type u_4
s✝ s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i✝ j : ι
a : α i✝
β : ι' → Type u_5
f : ι → ι'
hf : Function.Injective f
g : (i : ι) → α i → β (f i)
i : ι
s : Set (β (f i))
⊢ Sigma.mk i '' (g i ⁻¹' s) = Sigma.map f g ⁻¹' (Sigma.mk (f i) '' s)
[PROOFSTEP]
refine' (image_sigmaMk_preimage_sigmaMap_subset f g i s).antisymm _
[GOAL]
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β✝ : ι → Type u_4
s✝ s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i✝ j : ι
a : α i✝
β : ι' → Type u_5
f : ι → ι'
hf : Function.Injective f
g : (i : ι) → α i → β (f i)
i : ι
s : Set (β (f i))
⊢ Sigma.map f g ⁻¹' (Sigma.mk (f i) '' s) ⊆ Sigma.mk i '' (g i ⁻¹' s)
[PROOFSTEP]
rintro ⟨j, x⟩ ⟨y, hys, hxy⟩
[GOAL]
case mk.intro.intro
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β✝ : ι → Type u_4
s✝ s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i✝ j✝ : ι
a : α i✝
β : ι' → Type u_5
f : ι → ι'
hf : Function.Injective f
g : (i : ι) → α i → β (f i)
i : ι
s : Set (β (f i))
j : ι
x : α j
y : β (f i)
hys : y ∈ s
hxy : { fst := f i, snd := y } = Sigma.map f g { fst := j, snd := x }
⊢ { fst := j, snd := x } ∈ Sigma.mk i '' (g i ⁻¹' s)
[PROOFSTEP]
simp only [hf.eq_iff, Sigma.map, Sigma.ext_iff] at hxy 
[GOAL]
case mk.intro.intro
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β✝ : ι → Type u_4
s✝ s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i✝ j✝ : ι
a : α i✝
β : ι' → Type u_5
f : ι → ι'
hf : Function.Injective f
g : (i : ι) → α i → β (f i)
i : ι
s : Set (β (f i))
j : ι
x : α j
y : β (f i)
hys : y ∈ s
hxy : i = j ∧ HEq y (g j x)
⊢ { fst := j, snd := x } ∈ Sigma.mk i '' (g i ⁻¹' s)
[PROOFSTEP]
rcases hxy with ⟨rfl, hxy⟩
[GOAL]
case mk.intro.intro.intro
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β✝ : ι → Type u_4
s✝ s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i✝ j : ι
a : α i✝
β : ι' → Type u_5
f : ι → ι'
hf : Function.Injective f
g : (i : ι) → α i → β (f i)
i : ι
s : Set (β (f i))
y : β (f i)
hys : y ∈ s
x : α i
hxy : HEq y (g i x)
⊢ { fst := i, snd := x } ∈ Sigma.mk i '' (g i ⁻¹' s)
[PROOFSTEP]
rw [heq_iff_eq] at hxy 
[GOAL]
case mk.intro.intro.intro
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β✝ : ι → Type u_4
s✝ s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i✝ j : ι
a : α i✝
β : ι' → Type u_5
f : ι → ι'
hf : Function.Injective f
g : (i : ι) → α i → β (f i)
i : ι
s : Set (β (f i))
y : β (f i)
hys : y ∈ s
x : α i
hxy : y = g i x
⊢ { fst := i, snd := x } ∈ Sigma.mk i '' (g i ⁻¹' s)
[PROOFSTEP]
subst y
[GOAL]
case mk.intro.intro.intro
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β✝ : ι → Type u_4
s✝ s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i✝ j : ι
a : α i✝
β : ι' → Type u_5
f : ι → ι'
hf : Function.Injective f
g : (i : ι) → α i → β (f i)
i : ι
s : Set (β (f i))
x : α i
hys : g i x ∈ s
⊢ { fst := i, snd := x } ∈ Sigma.mk i '' (g i ⁻¹' s)
[PROOFSTEP]
exact ⟨x, hys, rfl⟩
[GOAL]
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i j : ι
a : α i
x : (i : ι) × α i
⊢ x ∈ Set.Sigma {i} t ↔ x ∈ Sigma.mk i '' t i
[PROOFSTEP]
constructor
[GOAL]
case mp
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i j : ι
a : α i
x : (i : ι) × α i
⊢ x ∈ Set.Sigma {i} t → x ∈ Sigma.mk i '' t i
[PROOFSTEP]
obtain ⟨j, a⟩ := x
[GOAL]
case mp.mk
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i j✝ : ι
a✝ : α i
j : ι
a : α j
⊢ { fst := j, snd := a } ∈ Set.Sigma {i} t → { fst := j, snd := a } ∈ Sigma.mk i '' t i
[PROOFSTEP]
rintro ⟨rfl : j = i, ha⟩
[GOAL]
case mp.mk.intro
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
j✝ j : ι
a✝ : α j
ha : { fst := j, snd := a✝ }.snd ∈ t { fst := j, snd := a✝ }.fst
a : α j
⊢ { fst := j, snd := a✝ } ∈ Sigma.mk j '' t j
[PROOFSTEP]
exact mem_image_of_mem _ ha
[GOAL]
case mpr
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i j : ι
a : α i
x : (i : ι) × α i
⊢ x ∈ Sigma.mk i '' t i → x ∈ Set.Sigma {i} t
[PROOFSTEP]
rintro ⟨b, hb, rfl⟩
[GOAL]
case mpr.intro.intro
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i j : ι
a b : α i
hb : b ∈ t i
⊢ { fst := i, snd := b } ∈ Set.Sigma {i} t
[PROOFSTEP]
exact ⟨rfl, hb⟩
[GOAL]
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i j : ι
a✝ : α i
a : (i : ι) → α i
⊢ (Set.Sigma s fun i => {a i}) = (fun i => { fst := i, snd := a i }) '' s
[PROOFSTEP]
ext ⟨x, y⟩
[GOAL]
case h.mk
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i j : ι
a✝ : α i
a : (i : ι) → α i
x : ι
y : α x
⊢ ({ fst := x, snd := y } ∈ Set.Sigma s fun i => {a i}) ↔
    { fst := x, snd := y } ∈ (fun i => { fst := i, snd := a i }) '' s
[PROOFSTEP]
simp [and_left_comm, eq_comm]
[GOAL]
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i j : ι
a✝ : α i
a : (i : ι) → α i
⊢ (Set.Sigma {i} fun i => {a i}) = {{ fst := i, snd := a i }}
[PROOFSTEP]
rw [sigma_singleton, image_singleton]
[GOAL]
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i j : ι
a : α i
⊢ Set.Sigma s₁ t₁ ∩ Set.Sigma s₂ t₂ = Set.Sigma (s₁ ∩ s₂) fun i => t₁ i ∩ t₂ i
[PROOFSTEP]
ext ⟨x, y⟩
[GOAL]
case h.mk
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i j : ι
a : α i
x : ι
y : α x
⊢ { fst := x, snd := y } ∈ Set.Sigma s₁ t₁ ∩ Set.Sigma s₂ t₂ ↔
    { fst := x, snd := y } ∈ Set.Sigma (s₁ ∩ s₂) fun i => t₁ i ∩ t₂ i
[PROOFSTEP]
simp [and_assoc, and_left_comm]
[GOAL]
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i j : ι
a : α i
⊢ Set.Sigma (insert i s) t = Sigma.mk i '' t i ∪ Set.Sigma s t
[PROOFSTEP]
rw [insert_eq, union_sigma, singleton_sigma]
[GOAL]
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i j : ι
a : α i
⊢ α i
[PROOFSTEP]
exact a
[GOAL]
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i j : ι
a✝ : α i
a : (i : ι) → α i
⊢ (Set.Sigma s fun i => insert (a i) (t i)) = (fun i => { fst := i, snd := a i }) '' s ∪ Set.Sigma s t
[PROOFSTEP]
simp_rw [insert_eq, sigma_union, sigma_singleton]
[GOAL]
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i j : ι
a : α i
inst✝ : DecidablePred fun x => x ∈ s
⊢ Sigma.mk i ⁻¹' Set.Sigma s t = if i ∈ s then t i else ∅
[PROOFSTEP]
split_ifs
[GOAL]
case pos
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i j : ι
a : α i
inst✝ : DecidablePred fun x => x ∈ s
h✝ : i ∈ s
⊢ Sigma.mk i ⁻¹' Set.Sigma s t = t i
[PROOFSTEP]
simp [*]
[GOAL]
case neg
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i j : ι
a : α i
inst✝ : DecidablePred fun x => x ∈ s
h✝ : ¬i ∈ s
⊢ Sigma.mk i ⁻¹' Set.Sigma s t = ∅
[PROOFSTEP]
simp [*]
[GOAL]
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β✝ : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i j : ι
a : α i
β : Type u_5
inst✝ : DecidablePred fun x => x ∈ s
g : β → α i
x✝ : β
⊢ x✝ ∈ (fun b => { fst := i, snd := g b }) ⁻¹' Set.Sigma s t ↔ x✝ ∈ if i ∈ s then g ⁻¹' t i else ∅
[PROOFSTEP]
split_ifs
[GOAL]
case pos
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β✝ : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i j : ι
a : α i
β : Type u_5
inst✝ : DecidablePred fun x => x ∈ s
g : β → α i
x✝ : β
h✝ : i ∈ s
⊢ x✝ ∈ (fun b => { fst := i, snd := g b }) ⁻¹' Set.Sigma s t ↔ x✝ ∈ g ⁻¹' t i
[PROOFSTEP]
simp [*]
[GOAL]
case neg
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β✝ : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i j : ι
a : α i
β : Type u_5
inst✝ : DecidablePred fun x => x ∈ s
g : β → α i
x✝ : β
h✝ : ¬i ∈ s
⊢ x✝ ∈ (fun b => { fst := i, snd := g b }) ⁻¹' Set.Sigma s t ↔ x✝ ∈ ∅
[PROOFSTEP]
simp [*]
[GOAL]
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i j : ι
a : α i
f : (i : ι) → α i → β i
⊢ ∀ (x : (i : ι) × β i),
    (x ∈ Set.Sigma univ fun i => range (f i)) ↔ x ∈ range fun x => { fst := x.fst, snd := f x.fst x.snd }
[PROOFSTEP]
simp [range]
[GOAL]
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i j : ι
a : α i
⊢ (¬∃ i, i ∈ s ∧ Set.Nonempty (t i)) ↔ ∀ (i : ι), i ∈ s → t i = ∅
[PROOFSTEP]
simp only [not_nonempty_iff_eq_empty, not_and, not_exists]
[GOAL]
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i j : ι
a : α i
x : (i : ι) × α i
⊢ x ∈ Set.Sigma s₁ t₁ \ Set.Sigma s₂ t₂ ↔ x ∈ Set.Sigma s₁ (t₁ \ t₂) ∪ Set.Sigma (s₁ \ s₂) t₁
[PROOFSTEP]
by_cases h₁ : x.1 ∈ s₁
[GOAL]
case pos
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i j : ι
a : α i
x : (i : ι) × α i
h₁ : x.fst ∈ s₁
⊢ x ∈ Set.Sigma s₁ t₁ \ Set.Sigma s₂ t₂ ↔ x ∈ Set.Sigma s₁ (t₁ \ t₂) ∪ Set.Sigma (s₁ \ s₂) t₁
[PROOFSTEP]
by_cases h₂ : x.2 ∈ t₁ x.1
[GOAL]
case neg
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i j : ι
a : α i
x : (i : ι) × α i
h₁ : ¬x.fst ∈ s₁
⊢ x ∈ Set.Sigma s₁ t₁ \ Set.Sigma s₂ t₂ ↔ x ∈ Set.Sigma s₁ (t₁ \ t₂) ∪ Set.Sigma (s₁ \ s₂) t₁
[PROOFSTEP]
by_cases h₂ : x.2 ∈ t₁ x.1
[GOAL]
case pos
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i j : ι
a : α i
x : (i : ι) × α i
h₁ : x.fst ∈ s₁
h₂ : x.snd ∈ t₁ x.fst
⊢ x ∈ Set.Sigma s₁ t₁ \ Set.Sigma s₂ t₂ ↔ x ∈ Set.Sigma s₁ (t₁ \ t₂) ∪ Set.Sigma (s₁ \ s₂) t₁
[PROOFSTEP]
simp [*, ← imp_iff_or_not]
[GOAL]
case neg
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i j : ι
a : α i
x : (i : ι) × α i
h₁ : x.fst ∈ s₁
h₂ : ¬x.snd ∈ t₁ x.fst
⊢ x ∈ Set.Sigma s₁ t₁ \ Set.Sigma s₂ t₂ ↔ x ∈ Set.Sigma s₁ (t₁ \ t₂) ∪ Set.Sigma (s₁ \ s₂) t₁
[PROOFSTEP]
simp [*, ← imp_iff_or_not]
[GOAL]
case pos
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i j : ι
a : α i
x : (i : ι) × α i
h₁ : ¬x.fst ∈ s₁
h₂ : x.snd ∈ t₁ x.fst
⊢ x ∈ Set.Sigma s₁ t₁ \ Set.Sigma s₂ t₂ ↔ x ∈ Set.Sigma s₁ (t₁ \ t₂) ∪ Set.Sigma (s₁ \ s₂) t₁
[PROOFSTEP]
simp [*, ← imp_iff_or_not]
[GOAL]
case neg
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i j : ι
a : α i
x : (i : ι) × α i
h₁ : ¬x.fst ∈ s₁
h₂ : ¬x.snd ∈ t₁ x.fst
⊢ x ∈ Set.Sigma s₁ t₁ \ Set.Sigma s₂ t₂ ↔ x ∈ Set.Sigma s₁ (t₁ \ t₂) ∪ Set.Sigma (s₁ \ s₂) t₁
[PROOFSTEP]
simp [*, ← imp_iff_or_not]
