Theorem: Set.image_sigmaMk_preimage_sigmaMap
File: Mathlib/Data/Set/Sigma.lean

tactic: refine' (image_sigmaMk_preimage_sigmaMap_subset f g i s).antisymm _
state_before: ι : Type u_2
ι' : Type u_3
α : ι → Type u_4
β✝ : ι → Type ?u.1906
s✝ s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i✝ j : ι
a : α i✝
β : ι' → Type u_1
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)

tactic: rintro ⟨j, x⟩ ⟨y, hys, hxy⟩
state_before: ι : Type u_2
ι' : Type u_3
α : ι → Type u_4
β✝ : ι → Type ?u.1906
s✝ s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i✝ j : ι
a : α i✝
β : ι' → Type u_1
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)

tactic: simp only [hf.eq_iff, Sigma.map, Sigma.ext_iff] at hxy
state_before: case mk.intro.intro
ι : Type u_2
ι' : Type u_3
α : ι → Type u_4
β✝ : ι → Type ?u.1906
s✝ s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i✝ j✝ : ι
a : α i✝
β : ι' → Type u_1
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)

tactic: rcases hxy with ⟨rfl, hxy⟩
state_before: case mk.intro.intro
ι : Type u_2
ι' : Type u_3
α : ι → Type u_4
β✝ : ι → Type ?u.1906
s✝ s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i✝ j✝ : ι
a : α i✝
β : ι' → Type u_1
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)

tactic: rw [heq_iff_eq] at hxy
state_before: case mk.intro.intro.intro
ι : Type u_2
ι' : Type u_3
α : ι → Type u_4
β✝ : ι → Type ?u.1906
s✝ s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i✝ j : ι
a : α i✝
β : ι' → Type u_1
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)

tactic: subst y
state_before: case mk.intro.intro.intro
ι : Type u_2
ι' : Type u_3
α : ι → Type u_4
β✝ : ι → Type ?u.1906
s✝ s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i✝ j : ι
a : α i✝
β : ι' → Type u_1
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)

tactic: exact ⟨x, hys, rfl⟩
state_before: case mk.intro.intro.intro
ι : Type u_2
ι' : Type u_3
α : ι → Type u_4
β✝ : ι → Type ?u.1906
s✝ s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i✝ j : ι
a : α i✝
β : ι' → Type u_1
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)