Theorem: Filter.map₂_map₂_right
File: Mathlib/Order/Filter/NAry.lean

tactic: ext w
state_before: α : Type u_2
α' : Type ?u.35089
β : Type u_4
β' : Type ?u.35095
γ : Type u_5
γ' : Type ?u.35101
δ : Type u_3
δ' : Type ?u.35107
ε : Type u_1
ε' : Type ?u.35113
m✝ : α → β → γ
f f₁ f₂ : Filter α
g g₁ g₂ : Filter β
h h₁ h₂ : Filter γ
s s₁ s₂ : Set α
t t₁ t₂ : Set β
u : Set γ
v : Set δ
a : α
b : β
c : γ
m : α → δ → ε
n : β → γ → δ
⊢ map₂ m f (map₂ n g h) = map₃ (fun a b c => m a (n b c)) f g h

tactic: constructor
state_before: case a
α : Type u_2
α' : Type ?u.35089
β : Type u_4
β' : Type ?u.35095
γ : Type u_5
γ' : Type ?u.35101
δ : Type u_3
δ' : Type ?u.35107
ε : Type u_1
ε' : Type ?u.35113
m✝ : α → β → γ
f f₁ f₂ : Filter α
g g₁ g₂ : Filter β
h h₁ h₂ : Filter γ
s s₁ s₂ : Set α
t t₁ t₂ : Set β
u : Set γ
v : Set δ
a : α
b : β
c : γ
m : α → δ → ε
n : β → γ → δ
w : Set ε
⊢ w ∈ map₂ m f (map₂ n g h) ↔ w ∈ map₃ (fun a b c => m a (n b c)) f g h

tactic: rintro ⟨s, t, hs, ⟨u, v, hu, hv, ht⟩, hw⟩
state_before: case a.mp
α : Type u_2
α' : Type ?u.35089
β : Type u_4
β' : Type ?u.35095
γ : Type u_5
γ' : Type ?u.35101
δ : Type u_3
δ' : Type ?u.35107
ε : Type u_1
ε' : Type ?u.35113
m✝ : α → β → γ
f f₁ f₂ : Filter α
g g₁ g₂ : Filter β
h h₁ h₂ : Filter γ
s s₁ s₂ : Set α
t t₁ t₂ : Set β
u : Set γ
v : Set δ
a : α
b : β
c : γ
m : α → δ → ε
n : β → γ → δ
w : Set ε
⊢ w ∈ map₂ m f (map₂ n g h) → w ∈ map₃ (fun a b c => m a (n b c)) f g h

tactic: refine' ⟨s, u, v, hs, hu, hv, _⟩
state_before: case a.mp.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_2
α' : Type ?u.35089
β : Type u_4
β' : Type ?u.35095
γ : Type u_5
γ' : Type ?u.35101
δ : Type u_3
δ' : Type ?u.35107
ε : Type u_1
ε' : Type ?u.35113
m✝ : α → β → γ
f f₁ f₂ : Filter α
g g₁ g₂ : Filter β
h h₁ h₂ : Filter γ
s✝ s₁ s₂ : Set α
t✝ t₁ t₂ : Set β
u✝ : Set γ
v✝ : Set δ
a : α
b : β
c : γ
m : α → δ → ε
n : β → γ → δ
w : Set ε
s : Set α
t : Set δ
hs : s ∈ f
hw : image2 m s t ⊆ w
u : Set β
v : Set γ
hu : u ∈ g
hv : v ∈ h
ht : image2 n u v ⊆ t
⊢ w ∈ map₃ (fun a b c => m a (n b c)) f g h

tactic: rw [← image2_image2_right]
state_before: case a.mp.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_2
α' : Type ?u.35089
β : Type u_4
β' : Type ?u.35095
γ : Type u_5
γ' : Type ?u.35101
δ : Type u_3
δ' : Type ?u.35107
ε : Type u_1
ε' : Type ?u.35113
m✝ : α → β → γ
f f₁ f₂ : Filter α
g g₁ g₂ : Filter β
h h₁ h₂ : Filter γ
s✝ s₁ s₂ : Set α
t✝ t₁ t₂ : Set β
u✝ : Set γ
v✝ : Set δ
a : α
b : β
c : γ
m : α → δ → ε
n : β → γ → δ
w : Set ε
s : Set α
t : Set δ
hs : s ∈ f
hw : image2 m s t ⊆ w
u : Set β
v : Set γ
hu : u ∈ g
hv : v ∈ h
ht : image2 n u v ⊆ t
⊢ image3 (fun a b c => m a (n b c)) s u v ⊆ w

tactic: exact (image2_subset_left ht).trans hw
state_before: case a.mp.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_2
α' : Type ?u.35089
β : Type u_4
β' : Type ?u.35095
γ : Type u_5
γ' : Type ?u.35101
δ : Type u_3
δ' : Type ?u.35107
ε : Type u_1
ε' : Type ?u.35113
m✝ : α → β → γ
f f₁ f₂ : Filter α
g g₁ g₂ : Filter β
h h₁ h₂ : Filter γ
s✝ s₁ s₂ : Set α
t✝ t₁ t₂ : Set β
u✝ : Set γ
v✝ : Set δ
a : α
b : β
c : γ
m : α → δ → ε
n : β → γ → δ
w : Set ε
s : Set α
t : Set δ
hs : s ∈ f
hw : image2 m s t ⊆ w
u : Set β
v : Set γ
hu : u ∈ g
hv : v ∈ h
ht : image2 n u v ⊆ t
⊢ image2 (fun a => m a) s (image2 (fun b c => n b c) u v) ⊆ w

tactic: rintro ⟨s, t, u, hs, ht, hu, hw⟩
state_before: case a.mpr
α : Type u_2
α' : Type ?u.35089
β : Type u_4
β' : Type ?u.35095
γ : Type u_5
γ' : Type ?u.35101
δ : Type u_3
δ' : Type ?u.35107
ε : Type u_1
ε' : Type ?u.35113
m✝ : α → β → γ
f f₁ f₂ : Filter α
g g₁ g₂ : Filter β
h h₁ h₂ : Filter γ
s s₁ s₂ : Set α
t t₁ t₂ : Set β
u : Set γ
v : Set δ
a : α
b : β
c : γ
m : α → δ → ε
n : β → γ → δ
w : Set ε
⊢ w ∈ map₃ (fun a b c => m a (n b c)) f g h → w ∈ map₂ m f (map₂ n g h)

tactic: exact ⟨s, _, hs, image2_mem_map₂ ht hu, by rwa [image2_image2_right]⟩
state_before: case a.mpr.intro.intro.intro.intro.intro.intro
α : Type u_2
α' : Type ?u.35089
β : Type u_4
β' : Type ?u.35095
γ : Type u_5
γ' : Type ?u.35101
δ : Type u_3
δ' : Type ?u.35107
ε : Type u_1
ε' : Type ?u.35113
m✝ : α → β → γ
f f₁ f₂ : Filter α
g g₁ g₂ : Filter β
h h₁ h₂ : Filter γ
s✝ s₁ s₂ : Set α
t✝ t₁ t₂ : Set β
u✝ : Set γ
v : Set δ
a : α
b : β
c : γ
m : α → δ → ε
n : β → γ → δ
w : Set ε
s : Set α
t : Set β
u : Set γ
hs : s ∈ f
ht : t ∈ g
hu : u ∈ h
hw : image3 (fun a b c => m a (n b c)) s t u ⊆ w
⊢ w ∈ map₂ m f (map₂ n g h)

tactic: rwa [image2_image2_right]
state_before: α : Type u_2
α' : Type ?u.35089
β : Type u_4
β' : Type ?u.35095
γ : Type u_5
γ' : Type ?u.35101
δ : Type u_3
δ' : Type ?u.35107
ε : Type u_1
ε' : Type ?u.35113
m✝ : α → β → γ
f f₁ f₂ : Filter α
g g₁ g₂ : Filter β
h h₁ h₂ : Filter γ
s✝ s₁ s₂ : Set α
t✝ t₁ t₂ : Set β
u✝ : Set γ
v : Set δ
a : α
b : β
c : γ
m : α → δ → ε
n : β → γ → δ
w : Set ε
s : Set α
t : Set β
u : Set γ
hs : s ∈ f
ht : t ∈ g
hu : u ∈ h
hw : image3 (fun a b c => m a (n b c)) s t u ⊆ w
⊢ image2 m s (image2 n t u) ⊆ w