Theorem: isCoboundedUnder_le_finset_sup'
File: Mathlib/Order/LiminfLimsup.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : LinearOrder β
f : Filter α
F : ι → α → β
s : Finset ι
hs : s.Nonempty
h : ∃ i ∈ s, IsCoboundedUnder (fun x x_1 => x ≤ x_1) f (F i)
⊢ IsCoboundedUnder (fun x x_1 => x ≤ x_1) f fun a => s.sup' hs fun i => F i a
state_after: case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : LinearOrder β
f : Filter α
F : ι → α → β
s : Finset ι
hs : s.Nonempty
i : ι
i_s : i ∈ s
b : β
hb : ∀ (a : β), (∀ᶠ (x : β) in Filter.map (F i) f, (fun x x_1 => x ≤ x_1) x a) → (fun x x_1 => x ≤ x_1) b a
⊢ IsCoboundedUnder (fun x x_1 => x ≤ x_1) f fun a => s.sup' hs fun i => F i a
tactic: rcases h with ⟨i, i_s, b, hb⟩
state_before: case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : LinearOrder β
f : Filter α
F : ι → α → β
s : Finset ι
hs : s.Nonempty
i : ι
i_s : i ∈ s
b : β
hb : ∀ (a : β), (∀ᶠ (x : β) in Filter.map (F i) f, (fun x x_1 => x ≤ x_1) x a) → (fun x x_1 => x ≤ x_1) b a
⊢ IsCoboundedUnder (fun x x_1 => x ≤ x_1) f fun a => s.sup' hs fun i => F i a
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : LinearOrder β
f : Filter α
F : ι → α → β
s : Finset ι
hs : s.Nonempty
i : ι
i_s : i ∈ s
b : β
hb : ∀ (a : β), (∀ᶠ (x : β) in Filter.map (F i) f, (fun x x_1 => x ≤ x_1) x a) → (fun x x_1 => x ≤ x_1) b a
⊢ ∀ (a : β),
    (∀ᶠ (x : β) in Filter.map (fun a => s.sup' hs fun i => F i a) f, (fun x x_1 => x ≤ x_1) x a) →
      (fun x x_1 => x ≤ x_1) b a
tactic: use b
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : LinearOrder β
f : Filter α
F : ι → α → β
s : Finset ι
hs : s.Nonempty
i : ι
i_s : i ∈ s
b : β
hb : ∀ (a : β), (∀ᶠ (x : β) in Filter.map (F i) f, (fun x x_1 => x ≤ x_1) x a) → (fun x x_1 => x ≤ x_1) b a
⊢ ∀ (a : β),
    (∀ᶠ (x : β) in Filter.map (fun a => s.sup' hs fun i => F i a) f, (fun x x_1 => x ≤ x_1) x a) →
      (fun x x_1 => x ≤ x_1) b a
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : LinearOrder β
f : Filter α
F : ι → α → β
s : Finset ι
hs : s.Nonempty
i : ι
i_s : i ∈ s
b : β
hb : ∀ (a : β), (∀ᶠ (x : β) in Filter.map (F i) f, (fun x x_1 => x ≤ x_1) x a) → (fun x x_1 => x ≤ x_1) b a
c : β
hc : ∀ᶠ (x : β) in Filter.map (fun a => s.sup' hs fun i => F i a) f, (fun x x_1 => x ≤ x_1) x c
⊢ ∀ᶠ (x : β) in Filter.map (F i) f, (fun x x_1 => x ≤ x_1) x c
tactic: refine fun c hc ↦ hb c ?_
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : LinearOrder β
f : Filter α
F : ι → α → β
s : Finset ι
hs : s.Nonempty
i : ι
i_s : i ∈ s
b : β
hb : ∀ (a : β), (∀ᶠ (x : β) in Filter.map (F i) f, (fun x x_1 => x ≤ x_1) x a) → (fun x x_1 => x ≤ x_1) b a
c : β
hc : ∀ᶠ (x : β) in Filter.map (fun a => s.sup' hs fun i => F i a) f, (fun x x_1 => x ≤ x_1) x c
⊢ ∀ᶠ (x : β) in Filter.map (F i) f, (fun x x_1 => x ≤ x_1) x c
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : LinearOrder β
f : Filter α
F : ι → α → β
s : Finset ι
hs : s.Nonempty
i : ι
i_s : i ∈ s
b : β
hb : ∀ (a : β), (∀ᶠ (x : β) in Filter.map (F i) f, (fun x x_1 => x ≤ x_1) x a) → (fun x x_1 => x ≤ x_1) b a
c : β
hc : ∀ᶠ (a : α) in f, (fun x x_1 => x ≤ x_1) (s.sup' hs fun i => F i a) c
⊢ ∀ᶠ (a : α) in f, (fun x x_1 => x ≤ x_1) (F i a) c
tactic: rw [eventually_map] at hc ⊢
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : LinearOrder β
f : Filter α
F : ι → α → β
s : Finset ι
hs : s.Nonempty
i : ι
i_s : i ∈ s
b : β
hb : ∀ (a : β), (∀ᶠ (x : β) in Filter.map (F i) f, (fun x x_1 => x ≤ x_1) x a) → (fun x x_1 => x ≤ x_1) b a
c : β
hc : ∀ᶠ (a : α) in f, (fun x x_1 => x ≤ x_1) (s.sup' hs fun i => F i a) c
⊢ ∀ᶠ (a : α) in f, (fun x x_1 => x ≤ x_1) (F i a) c
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : LinearOrder β
f : Filter α
F : ι → α → β
s : Finset ι
hs : s.Nonempty
i : ι
i_s : i ∈ s
b : β
hb : ∀ (a : β), (∀ᶠ (x : β) in Filter.map (F i) f, (fun x x_1 => x ≤ x_1) x a) → (fun x x_1 => x ≤ x_1) b a
c : β
hc : ∀ᶠ (a : α) in f, (fun x x_1 => x ≤ x_1) (s.sup' hs fun i => F i a) c
a : α
h : (fun x x_1 => x ≤ x_1) (s.sup' hs fun i => F i a) c
⊢ (fun x x_1 => x ≤ x_1) (F i a) c
tactic: refine hc.mono fun a h ↦ ?_
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : LinearOrder β
f : Filter α
F : ι → α → β
s : Finset ι
hs : s.Nonempty
i : ι
i_s : i ∈ s
b : β
hb : ∀ (a : β), (∀ᶠ (x : β) in Filter.map (F i) f, (fun x x_1 => x ≤ x_1) x a) → (fun x x_1 => x ≤ x_1) b a
c : β
hc : ∀ᶠ (a : α) in f, (fun x x_1 => x ≤ x_1) (s.sup' hs fun i => F i a) c
a : α
h : (fun x x_1 => x ≤ x_1) (s.sup' hs fun i => F i a) c
⊢ (fun x x_1 => x ≤ x_1) (F i a) c
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : LinearOrder β
f : Filter α
F : ι → α → β
s : Finset ι
hs : s.Nonempty
i : ι
i_s : i ∈ s
b : β
hb : ∀ (a : β), (∀ᶠ (x : β) in Filter.map (F i) f, (fun x x_1 => x ≤ x_1) x a) → (fun x x_1 => x ≤ x_1) b a
c : β
hc : ∀ᶠ (a : α) in f, (fun x x_1 => x ≤ x_1) (s.sup' hs fun i => F i a) c
a : α
h : ∀ b ∈ s, F b a ≤ c
⊢ F i a ≤ c
tactic: simp only [Finset.sup'_apply, sup'_le_iff] at h ⊢
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : LinearOrder β
f : Filter α
F : ι → α → β
s : Finset ι
hs : s.Nonempty
i : ι
i_s : i ∈ s
b : β
hb : ∀ (a : β), (∀ᶠ (x : β) in Filter.map (F i) f, (fun x x_1 => x ≤ x_1) x a) → (fun x x_1 => x ≤ x_1) b a
c : β
hc : ∀ᶠ (a : α) in f, (fun x x_1 => x ≤ x_1) (s.sup' hs fun i => F i a) c
a : α
h : ∀ b ∈ s, F b a ≤ c
⊢ F i a ≤ c
state_after: no goals
tactic: exact h i i_s