Theorem: Asymptotics.IsBigO.mul_isLittleO
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

tactic: simp only [IsLittleO_def] at *
state_before: α : Type u_1
β : Type ?u.477260
E : Type ?u.477263
F : Type ?u.477266
G : Type ?u.477269
E' : Type ?u.477272
F' : Type ?u.477275
G' : Type ?u.477278
E'' : Type ?u.477281
F'' : Type ?u.477284
G'' : Type ?u.477287
R : Type u_2
R' : Type ?u.477293
𝕜 : Type u_3
𝕜' : Type ?u.477299
inst✝¹² : Norm E
inst✝¹¹ : Norm F
inst✝¹⁰ : Norm G
inst✝⁹ : SeminormedAddCommGroup E'
inst✝⁸ : SeminormedAddCommGroup F'
inst✝⁷ : SeminormedAddCommGroup G'
inst✝⁶ : NormedAddCommGroup E''
inst✝⁵ : NormedAddCommGroup F''
inst✝⁴ : NormedAddCommGroup G''
inst✝³ : SeminormedRing R
inst✝² : SeminormedRing R'
inst✝¹ : NormedField 𝕜
inst✝ : NormedField 𝕜'
c c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
f₁ f₂ : α → R
g₁ g₂ : α → 𝕜
h₁ : f₁ =O[l] g₁
h₂ : f₂ =o[l] g₂
⊢ (fun x => f₁ x * f₂ x) =o[l] fun x => g₁ x * g₂ x

tactic: intro c cpos
state_before: α : Type u_1
β : Type ?u.477260
E : Type ?u.477263
F : Type ?u.477266
G : Type ?u.477269
E' : Type ?u.477272
F' : Type ?u.477275
G' : Type ?u.477278
E'' : Type ?u.477281
F'' : Type ?u.477284
G'' : Type ?u.477287
R : Type u_2
R' : Type ?u.477293
𝕜 : Type u_3
𝕜' : Type ?u.477299
inst✝¹² : Norm E
inst✝¹¹ : Norm F
inst✝¹⁰ : Norm G
inst✝⁹ : SeminormedAddCommGroup E'
inst✝⁸ : SeminormedAddCommGroup F'
inst✝⁷ : SeminormedAddCommGroup G'
inst✝⁶ : NormedAddCommGroup E''
inst✝⁵ : NormedAddCommGroup F''
inst✝⁴ : NormedAddCommGroup G''
inst✝³ : SeminormedRing R
inst✝² : SeminormedRing R'
inst✝¹ : NormedField 𝕜
inst✝ : NormedField 𝕜'
c c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
f₁ f₂ : α → R
g₁ g₂ : α → 𝕜
h₁ : f₁ =O[l] g₁
h₂ : ∀ ⦃c : ℝ⦄, 0 < c → IsBigOWith c l f₂ g₂
⊢ ∀ ⦃c : ℝ⦄, 0 < c → IsBigOWith c l (fun x => f₁ x * f₂ x) fun x => g₁ x * g₂ x

tactic: rcases h₁.exists_pos with ⟨c', c'pos, hc'⟩
state_before: α : Type u_1
β : Type ?u.477260
E : Type ?u.477263
F : Type ?u.477266
G : Type ?u.477269
E' : Type ?u.477272
F' : Type ?u.477275
G' : Type ?u.477278
E'' : Type ?u.477281
F'' : Type ?u.477284
G'' : Type ?u.477287
R : Type u_2
R' : Type ?u.477293
𝕜 : Type u_3
𝕜' : Type ?u.477299
inst✝¹² : Norm E
inst✝¹¹ : Norm F
inst✝¹⁰ : Norm G
inst✝⁹ : SeminormedAddCommGroup E'
inst✝⁸ : SeminormedAddCommGroup F'
inst✝⁷ : SeminormedAddCommGroup G'
inst✝⁶ : NormedAddCommGroup E''
inst✝⁵ : NormedAddCommGroup F''
inst✝⁴ : NormedAddCommGroup G''
inst✝³ : SeminormedRing R
inst✝² : SeminormedRing R'
inst✝¹ : NormedField 𝕜
inst✝ : NormedField 𝕜'
c✝ c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
f₁ f₂ : α → R
g₁ g₂ : α → 𝕜
h₁ : f₁ =O[l] g₁
h₂ : ∀ ⦃c : ℝ⦄, 0 < c → IsBigOWith c l f₂ g₂
c : ℝ
cpos : 0 < c
⊢ IsBigOWith c l (fun x => f₁ x * f₂ x) fun x => g₁ x * g₂ x

tactic: exact (hc'.mul (h₂ (div_pos cpos c'pos))).congr_const (mul_div_cancel' _ (ne_of_gt c'pos))
state_before: case intro.intro
α : Type u_1
β : Type ?u.477260
E : Type ?u.477263
F : Type ?u.477266
G : Type ?u.477269
E' : Type ?u.477272
F' : Type ?u.477275
G' : Type ?u.477278
E'' : Type ?u.477281
F'' : Type ?u.477284
G'' : Type ?u.477287
R : Type u_2
R' : Type ?u.477293
𝕜 : Type u_3
𝕜' : Type ?u.477299
inst✝¹² : Norm E
inst✝¹¹ : Norm F
inst✝¹⁰ : Norm G
inst✝⁹ : SeminormedAddCommGroup E'
inst✝⁸ : SeminormedAddCommGroup F'
inst✝⁷ : SeminormedAddCommGroup G'
inst✝⁶ : NormedAddCommGroup E''
inst✝⁵ : NormedAddCommGroup F''
inst✝⁴ : NormedAddCommGroup G''
inst✝³ : SeminormedRing R
inst✝² : SeminormedRing R'
inst✝¹ : NormedField 𝕜
inst✝ : NormedField 𝕜'
c✝ c'✝ c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
f₁ f₂ : α → R
g₁ g₂ : α → 𝕜
h₁ : f₁ =O[l] g₁
h₂ : ∀ ⦃c : ℝ⦄, 0 < c → IsBigOWith c l f₂ g₂
c : ℝ
cpos : 0 < c
c' : ℝ
c'pos : 0 < c'
hc' : IsBigOWith c' l f₁ g₁
⊢ IsBigOWith c l (fun x => f₁ x * f₂ x) fun x => g₁ x * g₂ x