Theorem: Set.image2_image2_image2_comm
File: Mathlib/Data/Set/NAry.lean

tactic: ext
state_before: α : Type u_4
α' : Type ?u.42153
β : Type u_5
β' : Type ?u.42159
γ : Type u_6
γ' : Type ?u.42165
δ : Type u_7
δ' : Type ?u.42171
ε : Type u_2
ε' : Type u_8
ζ : Type u_3
ζ' : Type u_9
ν : Type u_1
f✝ f'✝ : α → β → γ
g✝ g'✝ : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
f : ε → ζ → ν
g : α → β → ε
h : γ → δ → ζ
f' : ε' → ζ' → ν
g' : α → γ → ε'
h' : β → δ → ζ'
h_comm : ∀ (a : α) (b : β) (c : γ) (d : δ), f (g a b) (h c d) = f' (g' a c) (h' b d)
⊢ image2 f (image2 g s t) (image2 h u v) = image2 f' (image2 g' s u) (image2 h' t v)

tactic: constructor
state_before: case h
α : Type u_4
α' : Type ?u.42153
β : Type u_5
β' : Type ?u.42159
γ : Type u_6
γ' : Type ?u.42165
δ : Type u_7
δ' : Type ?u.42171
ε : Type u_2
ε' : Type u_8
ζ : Type u_3
ζ' : Type u_9
ν : Type u_1
f✝ f'✝ : α → β → γ
g✝ g'✝ : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
f : ε → ζ → ν
g : α → β → ε
h : γ → δ → ζ
f' : ε' → ζ' → ν
g' : α → γ → ε'
h' : β → δ → ζ'
h_comm : ∀ (a : α) (b : β) (c : γ) (d : δ), f (g a b) (h c d) = f' (g' a c) (h' b d)
x✝ : ν
⊢ x✝ ∈ image2 f (image2 g s t) (image2 h u v) ↔ x✝ ∈ image2 f' (image2 g' s u) (image2 h' t v)

tactic: rintro ⟨_, _, ⟨a, b, ha, hb, rfl⟩, ⟨c, d, hc, hd, rfl⟩, rfl⟩
state_before: case h.mp
α : Type u_4
α' : Type ?u.42153
β : Type u_5
β' : Type ?u.42159
γ : Type u_6
γ' : Type ?u.42165
δ : Type u_7
δ' : Type ?u.42171
ε : Type u_2
ε' : Type u_8
ζ : Type u_3
ζ' : Type u_9
ν : Type u_1
f✝ f'✝ : α → β → γ
g✝ g'✝ : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
f : ε → ζ → ν
g : α → β → ε
h : γ → δ → ζ
f' : ε' → ζ' → ν
g' : α → γ → ε'
h' : β → δ → ζ'
h_comm : ∀ (a : α) (b : β) (c : γ) (d : δ), f (g a b) (h c d) = f' (g' a c) (h' b d)
x✝ : ν
⊢ x✝ ∈ image2 f (image2 g s t) (image2 h u v) → x✝ ∈ image2 f' (image2 g' s u) (image2 h' t v)

tactic: exact ⟨_, _, ⟨a, c, ha, hc, rfl⟩, ⟨b, d, hb, hd, rfl⟩, (h_comm _ _ _ _).symm⟩
state_before: case h.mp.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_4
α' : Type ?u.42153
β : Type u_5
β' : Type ?u.42159
γ : Type u_6
γ' : Type ?u.42165
δ : Type u_7
δ' : Type ?u.42171
ε : Type u_2
ε' : Type u_8
ζ : Type u_3
ζ' : Type u_9
ν : Type u_1
f✝ f'✝ : α → β → γ
g✝ g'✝ : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a✝ a' : α
b✝ b' : β
c✝ c' : γ
d✝ d' : δ
f : ε → ζ → ν
g : α → β → ε
h : γ → δ → ζ
f' : ε' → ζ' → ν
g' : α → γ → ε'
h' : β → δ → ζ'
h_comm : ∀ (a : α) (b : β) (c : γ) (d : δ), f (g a b) (h c d) = f' (g' a c) (h' b d)
a : α
b : β
ha : a ∈ s
hb : b ∈ t
c : γ
d : δ
hc : c ∈ u
hd : d ∈ v
⊢ f (g a b) (h c d) ∈ image2 f' (image2 g' s u) (image2 h' t v)

tactic: rintro ⟨_, _, ⟨a, c, ha, hc, rfl⟩, ⟨b, d, hb, hd, rfl⟩, rfl⟩
state_before: case h.mpr
α : Type u_4
α' : Type ?u.42153
β : Type u_5
β' : Type ?u.42159
γ : Type u_6
γ' : Type ?u.42165
δ : Type u_7
δ' : Type ?u.42171
ε : Type u_2
ε' : Type u_8
ζ : Type u_3
ζ' : Type u_9
ν : Type u_1
f✝ f'✝ : α → β → γ
g✝ g'✝ : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
f : ε → ζ → ν
g : α → β → ε
h : γ → δ → ζ
f' : ε' → ζ' → ν
g' : α → γ → ε'
h' : β → δ → ζ'
h_comm : ∀ (a : α) (b : β) (c : γ) (d : δ), f (g a b) (h c d) = f' (g' a c) (h' b d)
x✝ : ν
⊢ x✝ ∈ image2 f' (image2 g' s u) (image2 h' t v) → x✝ ∈ image2 f (image2 g s t) (image2 h u v)

tactic: exact ⟨_, _, ⟨a, b, ha, hb, rfl⟩, ⟨c, d, hc, hd, rfl⟩, h_comm _ _ _ _⟩
state_before: case h.mpr.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_4
α' : Type ?u.42153
β : Type u_5
β' : Type ?u.42159
γ : Type u_6
γ' : Type ?u.42165
δ : Type u_7
δ' : Type ?u.42171
ε : Type u_2
ε' : Type u_8
ζ : Type u_3
ζ' : Type u_9
ν : Type u_1
f✝ f'✝ : α → β → γ
g✝ g'✝ : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a✝ a' : α
b✝ b' : β
c✝ c' : γ
d✝ d' : δ
f : ε → ζ → ν
g : α → β → ε
h : γ → δ → ζ
f' : ε' → ζ' → ν
g' : α → γ → ε'
h' : β → δ → ζ'
h_comm : ∀ (a : α) (b : β) (c : γ) (d : δ), f (g a b) (h c d) = f' (g' a c) (h' b d)
a : α
c : γ
ha : a ∈ s
hc : c ∈ u
b : β
d : δ
hb : b ∈ t
hd : d ∈ v
⊢ f' (g' a c) (h' b d) ∈ image2 f (image2 g s t) (image2 h u v)