Theorem: Filter.isBoundedUnder_ge_add
File: Mathlib/Order/LiminfLimsup.lean

Proof steps:
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
f : Filter α
inst✝⁴ : f.NeBot
R : Type u_7
inst✝³ : Preorder R
inst✝² : Add R
inst✝¹ : CovariantClass R R (fun a b => a + b) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass R R (fun a b => b + a) fun x x_1 => x ≤ x_1
u v : α → R
u_bdd_ge : IsBoundedUnder (fun x x_1 => x ≥ x_1) f u
v_bdd_ge : IsBoundedUnder (fun x x_1 => x ≥ x_1) f v
⊢ IsBoundedUnder (fun x x_1 => x ≥ x_1) f (u + v)
state_after: case intro
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
f : Filter α
inst✝⁴ : f.NeBot
R : Type u_7
inst✝³ : Preorder R
inst✝² : Add R
inst✝¹ : CovariantClass R R (fun a b => a + b) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass R R (fun a b => b + a) fun x x_1 => x ≤ x_1
u v : α → R
v_bdd_ge : IsBoundedUnder (fun x x_1 => x ≥ x_1) f v
U : R
hU : ∀ᶠ (x : R) in map u f, (fun x x_1 => x ≥ x_1) x U
⊢ IsBoundedUnder (fun x x_1 => x ≥ x_1) f (u + v)
tactic: obtain ⟨U, hU⟩ := u_bdd_ge
state_before: case intro
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
f : Filter α
inst✝⁴ : f.NeBot
R : Type u_7
inst✝³ : Preorder R
inst✝² : Add R
inst✝¹ : CovariantClass R R (fun a b => a + b) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass R R (fun a b => b + a) fun x x_1 => x ≤ x_1
u v : α → R
v_bdd_ge : IsBoundedUnder (fun x x_1 => x ≥ x_1) f v
U : R
hU : ∀ᶠ (x : R) in map u f, (fun x x_1 => x ≥ x_1) x U
⊢ IsBoundedUnder (fun x x_1 => x ≥ x_1) f (u + v)
state_after: case intro.intro
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
f : Filter α
inst✝⁴ : f.NeBot
R : Type u_7
inst✝³ : Preorder R
inst✝² : Add R
inst✝¹ : CovariantClass R R (fun a b => a + b) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass R R (fun a b => b + a) fun x x_1 => x ≤ x_1
u v : α → R
U : R
hU : ∀ᶠ (x : R) in map u f, (fun x x_1 => x ≥ x_1) x U
V : R
hV : ∀ᶠ (x : R) in map v f, (fun x x_1 => x ≥ x_1) x V
⊢ IsBoundedUnder (fun x x_1 => x ≥ x_1) f (u + v)
tactic: obtain ⟨V, hV⟩ := v_bdd_ge
state_before: case intro.intro
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
f : Filter α
inst✝⁴ : f.NeBot
R : Type u_7
inst✝³ : Preorder R
inst✝² : Add R
inst✝¹ : CovariantClass R R (fun a b => a + b) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass R R (fun a b => b + a) fun x x_1 => x ≤ x_1
u v : α → R
U : R
hU : ∀ᶠ (x : R) in map u f, (fun x x_1 => x ≥ x_1) x U
V : R
hV : ∀ᶠ (x : R) in map v f, (fun x x_1 => x ≥ x_1) x V
⊢ IsBoundedUnder (fun x x_1 => x ≥ x_1) f (u + v)
state_after: case h
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
f : Filter α
inst✝⁴ : f.NeBot
R : Type u_7
inst✝³ : Preorder R
inst✝² : Add R
inst✝¹ : CovariantClass R R (fun a b => a + b) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass R R (fun a b => b + a) fun x x_1 => x ≤ x_1
u v : α → R
U : R
hU : ∀ᶠ (x : R) in map u f, (fun x x_1 => x ≥ x_1) x U
V : R
hV : ∀ᶠ (x : R) in map v f, (fun x x_1 => x ≥ x_1) x V
⊢ ∀ᶠ (x : R) in map (u + v) f, (fun x x_1 => x ≥ x_1) x (U + V)
tactic: use U + V
state_before: case h
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
f : Filter α
inst✝⁴ : f.NeBot
R : Type u_7
inst✝³ : Preorder R
inst✝² : Add R
inst✝¹ : CovariantClass R R (fun a b => a + b) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass R R (fun a b => b + a) fun x x_1 => x ≤ x_1
u v : α → R
U : R
hU : ∀ᶠ (x : R) in map u f, (fun x x_1 => x ≥ x_1) x U
V : R
hV : ∀ᶠ (x : R) in map v f, (fun x x_1 => x ≥ x_1) x V
⊢ ∀ᶠ (x : R) in map (u + v) f, (fun x x_1 => x ≥ x_1) x (U + V)
state_after: case h
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
f : Filter α
inst✝⁴ : f.NeBot
R : Type u_7
inst✝³ : Preorder R
inst✝² : Add R
inst✝¹ : CovariantClass R R (fun a b => a + b) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass R R (fun a b => b + a) fun x x_1 => x ≤ x_1
u v : α → R
U V : R
hU : ∀ᶠ (a : α) in f, u a ≥ U
hV : ∀ᶠ (a : α) in f, v a ≥ V
⊢ ∀ᶠ (a : α) in f, u a + v a ≥ U + V
tactic: simp only [eventually_map, Pi.add_apply] at hU hV ⊢
state_before: case h
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
f : Filter α
inst✝⁴ : f.NeBot
R : Type u_7
inst✝³ : Preorder R
inst✝² : Add R
inst✝¹ : CovariantClass R R (fun a b => a + b) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass R R (fun a b => b + a) fun x x_1 => x ≤ x_1
u v : α → R
U V : R
hU : ∀ᶠ (a : α) in f, u a ≥ U
hV : ∀ᶠ (a : α) in f, v a ≥ V
⊢ ∀ᶠ (a : α) in f, u a + v a ≥ U + V
state_after: no goals
tactic: filter_upwards [hU, hV] with a hu hv using add_le_add hu hv