Theorem: Filter.eventually_curry_prod_iff
File: Mathlib/Order/Filter/Curry.lean

tactic: refine ⟨fun h => ⟨?_, ?_⟩, fun ⟨hs, ht⟩ => prod_mem_curry hs ht⟩ <;>
  rw [eventually_curry_iff] at h
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
l : Filter α
m : Filter β
inst✝¹ : l.NeBot
inst✝ : m.NeBot
s : Set α
t : Set β
⊢ (∀ᶠ (x : α × β) in l.curry m, x ∈ s ×ˢ t) ↔ s ∈ l ∧ t ∈ m
state_after: case refine_1
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
l : Filter α
m : Filter β
inst✝¹ : l.NeBot
inst✝ : m.NeBot
s : Set α
t : Set β
h : ∀ᶠ (x : α) in l, ∀ᶠ (y : β) in m, (x, y) ∈ s ×ˢ t
⊢ s ∈ l

case refine_2
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
l : Filter α
m : Filter β
inst✝¹ : l.NeBot
inst✝ : m.NeBot
s : Set α
t : Set β
h : ∀ᶠ (x : α) in l, ∀ᶠ (y : β) in m, (x, y) ∈ s ×ˢ t
⊢ t ∈ m

tactic: rcases h.exists with ⟨_, hx⟩
state_before: case refine_2
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
l : Filter α
m : Filter β
inst✝¹ : l.NeBot
inst✝ : m.NeBot
s : Set α
t : Set β
h : ∀ᶠ (x : α) in l, ∀ᶠ (y : β) in m, (x, y) ∈ s ×ˢ t
⊢ t ∈ m
state_after: case refine_2.intro
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
l : Filter α
m : Filter β
inst✝¹ : l.NeBot
inst✝ : m.NeBot
s : Set α
t : Set β
h : ∀ᶠ (x : α) in l, ∀ᶠ (y : β) in m, (x, y) ∈ s ×ˢ t
w✝ : α
hx : ∀ᶠ (y : β) in m, (w✝, y) ∈ s ×ˢ t
⊢ t ∈ m

tactic: apply mem_of_superset hx
state_before: case refine_2.intro
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
l : Filter α
m : Filter β
inst✝¹ : l.NeBot
inst✝ : m.NeBot
s : Set α
t : Set β
h : ∀ᶠ (x : α) in l, ∀ᶠ (y : β) in m, (x, y) ∈ s ×ˢ t
w✝ : α
hx : ∀ᶠ (y : β) in m, (w✝, y) ∈ s ×ˢ t
⊢ t ∈ m
state_after: case refine_2.intro
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
l : Filter α
m : Filter β
inst✝¹ : l.NeBot
inst✝ : m.NeBot
s : Set α
t : Set β
h : ∀ᶠ (x : α) in l, ∀ᶠ (y : β) in m, (x, y) ∈ s ×ˢ t
w✝ : α
hx : ∀ᶠ (y : β) in m, (w✝, y) ∈ s ×ˢ t
⊢ {x | (fun y => (w✝, y) ∈ s ×ˢ t) x} ⊆ t

tactic: exact fun _ hy => hy.2
state_before: case refine_2.intro
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
l : Filter α
m : Filter β
inst✝¹ : l.NeBot
inst✝ : m.NeBot
s : Set α
t : Set β
h : ∀ᶠ (x : α) in l, ∀ᶠ (y : β) in m, (x, y) ∈ s ×ˢ t
w✝ : α
hx : ∀ᶠ (y : β) in m, (w✝, y) ∈ s ×ˢ t
⊢ {x | (fun y => (w✝, y) ∈ s ×ˢ t) x} ⊆ t
state_after: no goals

tactic: apply mem_of_superset h
state_before: case refine_1
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
l : Filter α
m : Filter β
inst✝¹ : l.NeBot
inst✝ : m.NeBot
s : Set α
t : Set β
h : ∀ᶠ (x : α) in l, ∀ᶠ (y : β) in m, (x, y) ∈ s ×ˢ t
⊢ s ∈ l
state_after: case refine_1
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
l : Filter α
m : Filter β
inst✝¹ : l.NeBot
inst✝ : m.NeBot
s : Set α
t : Set β
h : ∀ᶠ (x : α) in l, ∀ᶠ (y : β) in m, (x, y) ∈ s ×ˢ t
⊢ {x | (fun x => ∀ᶠ (y : β) in m, (x, y) ∈ s ×ˢ t) x} ⊆ s

tactic: simp
state_before: case refine_1
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
l : Filter α
m : Filter β
inst✝¹ : l.NeBot
inst✝ : m.NeBot
s : Set α
t : Set β
h : ∀ᶠ (x : α) in l, ∀ᶠ (y : β) in m, (x, y) ∈ s ×ˢ t
⊢ {x | (fun x => ∀ᶠ (y : β) in m, (x, y) ∈ s ×ˢ t) x} ⊆ s
state_after: no goals