Theorem: Filter.IsCobounded.frequently_ge
File: Mathlib/Order/LiminfLimsup.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
R : Type u_6
S : Type u_7
F : Filter R
inst✝² : LinearOrder R
inst✝¹ : LinearOrder S
inst✝ : F.NeBot
cobdd : IsCobounded (fun x x_1 => x ≤ x_1) F
⊢ ∃ l, ∃ᶠ (x : R) in F, l ≤ x
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
R : Type u_6
S : Type u_7
F : Filter R
inst✝² : LinearOrder R
inst✝¹ : LinearOrder S
inst✝ : F.NeBot
t : R
ht : ∀ (a : R), (∀ᶠ (x : R) in F, (fun x x_1 => x ≤ x_1) x a) → (fun x x_1 => x ≤ x_1) t a
⊢ ∃ l, ∃ᶠ (x : R) in F, l ≤ x
tactic: obtain ⟨t, ht⟩ := cobdd
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
R : Type u_6
S : Type u_7
F : Filter R
inst✝² : LinearOrder R
inst✝¹ : LinearOrder S
inst✝ : F.NeBot
t : R
ht : ∀ (a : R), (∀ᶠ (x : R) in F, (fun x x_1 => x ≤ x_1) x a) → (fun x x_1 => x ≤ x_1) t a
⊢ ∃ l, ∃ᶠ (x : R) in F, l ≤ x
state_after: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
R : Type u_6
S : Type u_7
F : Filter R
inst✝² : LinearOrder R
inst✝¹ : LinearOrder S
inst✝ : F.NeBot
t : R
ht : ∀ (a : R), (∀ᶠ (x : R) in F, (fun x x_1 => x ≤ x_1) x a) → (fun x x_1 => x ≤ x_1) t a
tbot : IsBot t
⊢ ∃ l, ∃ᶠ (x : R) in F, l ≤ x

case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
R : Type u_6
S : Type u_7
F : Filter R
inst✝² : LinearOrder R
inst✝¹ : LinearOrder S
inst✝ : F.NeBot
t : R
ht : ∀ (a : R), (∀ᶠ (x : R) in F, (fun x x_1 => x ≤ x_1) x a) → (fun x x_1 => x ≤ x_1) t a
tbot : ¬IsBot t
⊢ ∃ l, ∃ᶠ (x : R) in F, l ≤ x
tactic: by_cases tbot : IsBot t
state_before: case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
R : Type u_6
S : Type u_7
F : Filter R
inst✝² : LinearOrder R
inst✝¹ : LinearOrder S
inst✝ : F.NeBot
t : R
ht : ∀ (a : R), (∀ᶠ (x : R) in F, (fun x x_1 => x ≤ x_1) x a) → (fun x x_1 => x ≤ x_1) t a
tbot : ¬IsBot t
⊢ ∃ l, ∃ᶠ (x : R) in F, l ≤ x
state_after: case neg.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
R : Type u_6
S : Type u_7
F : Filter R
inst✝² : LinearOrder R
inst✝¹ : LinearOrder S
inst✝ : F.NeBot
t : R
ht : ∀ (a : R), (∀ᶠ (x : R) in F, (fun x x_1 => x ≤ x_1) x a) → (fun x x_1 => x ≤ x_1) t a
tbot : ¬IsBot t
t' : R
ht' : t' < t
⊢ ∃ l, ∃ᶠ (x : R) in F, l ≤ x
tactic: obtain ⟨t', ht'⟩ : ∃ t', t' < t := by
    by_contra!
    exact tbot this
state_before: case neg.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
R : Type u_6
S : Type u_7
F : Filter R
inst✝² : LinearOrder R
inst✝¹ : LinearOrder S
inst✝ : F.NeBot
t : R
ht : ∀ (a : R), (∀ᶠ (x : R) in F, (fun x x_1 => x ≤ x_1) x a) → (fun x x_1 => x ≤ x_1) t a
tbot : ¬IsBot t
t' : R
ht' : t' < t
⊢ ∃ l, ∃ᶠ (x : R) in F, l ≤ x
state_after: case neg.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
R : Type u_6
S : Type u_7
F : Filter R
inst✝² : LinearOrder R
inst✝¹ : LinearOrder S
inst✝ : F.NeBot
t : R
ht : ∀ (a : R), (∀ᶠ (x : R) in F, (fun x x_1 => x ≤ x_1) x a) → (fun x x_1 => x ≤ x_1) t a
tbot : ¬IsBot t
t' : R
ht' : t' < t
⊢ ∃ᶠ (x : R) in F, t' ≤ x
tactic: refine ⟨t', ?_⟩
state_before: case neg.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
R : Type u_6
S : Type u_7
F : Filter R
inst✝² : LinearOrder R
inst✝¹ : LinearOrder S
inst✝ : F.NeBot
t : R
ht : ∀ (a : R), (∀ᶠ (x : R) in F, (fun x x_1 => x ≤ x_1) x a) → (fun x x_1 => x ≤ x_1) t a
tbot : ¬IsBot t
t' : R
ht' : t' < t
⊢ ∃ᶠ (x : R) in F, t' ≤ x
state_after: case neg.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
R : Type u_6
S : Type u_7
F : Filter R
inst✝² : LinearOrder R
inst✝¹ : LinearOrder S
inst✝ : F.NeBot
t : R
ht : ∀ (a : R), (∀ᶠ (x : R) in F, (fun x x_1 => x ≤ x_1) x a) → (fun x x_1 => x ≤ x_1) t a
tbot : ¬IsBot t
t' : R
ht' : t' < t
ev : ∀ᶠ (x : R) in F, ¬(fun x => t' ≤ x) x
⊢ False
tactic: intro ev
state_before: case neg.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
R : Type u_6
S : Type u_7
F : Filter R
inst✝² : LinearOrder R
inst✝¹ : LinearOrder S
inst✝ : F.NeBot
t : R
ht : ∀ (a : R), (∀ᶠ (x : R) in F, (fun x x_1 => x ≤ x_1) x a) → (fun x x_1 => x ≤ x_1) t a
tbot : ¬IsBot t
t' : R
ht' : t' < t
ev : ∀ᶠ (x : R) in F, ¬(fun x => t' ≤ x) x
⊢ False
state_after: case neg.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
R : Type u_6
S : Type u_7
F : Filter R
inst✝² : LinearOrder R
inst✝¹ : LinearOrder S
inst✝ : F.NeBot
t : R
tbot : ¬IsBot t
t' : R
ht' : t' < t
ev : ∀ᶠ (x : R) in F, ¬(fun x => t' ≤ x) x
ht : t ≤ t'
⊢ False
tactic: specialize ht t' (by filter_upwards [ev] with _ h using (not_le.mp h).le)
state_before: case neg.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
R : Type u_6
S : Type u_7
F : Filter R
inst✝² : LinearOrder R
inst✝¹ : LinearOrder S
inst✝ : F.NeBot
t : R
tbot : ¬IsBot t
t' : R
ht' : t' < t
ev : ∀ᶠ (x : R) in F, ¬(fun x => t' ≤ x) x
ht : t ≤ t'
⊢ False
state_after: no goals
tactic: apply lt_irrefl t' <| lt_of_lt_of_le ht' ht