Theorem: Asymptotics.IsLittleO.mul_isBigO
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

tactic: simp only [IsLittleO_def] at *
state_before: α : Type u_1
β : Type ?u.478794
E : Type ?u.478797
F : Type ?u.478800
G : Type ?u.478803
E' : Type ?u.478806
F' : Type ?u.478809
G' : Type ?u.478812
E'' : Type ?u.478815
F'' : Type ?u.478818
G'' : Type ?u.478821
R : Type u_2
R' : Type ?u.478827
𝕜 : Type u_3
𝕜' : Type ?u.478833
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.478794
E : Type ?u.478797
F : Type ?u.478800
G : Type ?u.478803
E' : Type ?u.478806
F' : Type ?u.478809
G' : Type ?u.478812
E'' : Type ?u.478815
F'' : Type ?u.478818
G'' : Type ?u.478821
R : Type u_2
R' : Type ?u.478827
𝕜 : Type u_3
𝕜' : Type ?u.478833
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.478794
E : Type ?u.478797
F : Type ?u.478800
G : Type ?u.478803
E' : Type ?u.478806
F' : Type ?u.478809
G' : Type ?u.478812
E'' : Type ?u.478815
F'' : Type ?u.478818
G'' : Type ?u.478821
R : Type u_2
R' : Type ?u.478827
𝕜 : Type u_3
𝕜' : Type ?u.478833
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 ((h₁ (div_pos cpos c'pos)).mul hc').congr_const (div_mul_cancel _ (ne_of_gt c'pos))
state_before: case intro.intro
α : Type u_1
β : Type ?u.478794
E : Type ?u.478797
F : Type ?u.478800
G : Type ?u.478803
E' : Type ?u.478806
F' : Type ?u.478809
G' : Type ?u.478812
E'' : Type ?u.478815
F'' : Type ?u.478818
G'' : Type ?u.478821
R : Type u_2
R' : Type ?u.478827
𝕜 : Type u_3
𝕜' : Type ?u.478833
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