Theorem: Asymptotics.IsBigOWith.inv_rev
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

tactic: refine' IsBigOWith.of_bound (h.bound.mp (h₀.mono fun x h₀ hle => _))
state_before: α : Type u_1
β : Type ?u.533106
E : Type ?u.533109
F : Type ?u.533112
G : Type ?u.533115
E' : Type ?u.533118
F' : Type ?u.533121
G' : Type ?u.533124
E'' : Type ?u.533127
F'' : Type ?u.533130
G'' : Type ?u.533133
R : Type ?u.533136
R' : Type ?u.533139
𝕜 : Type u_2
𝕜' : Type u_3
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 : α → 𝕜
g : α → 𝕜'
h : IsBigOWith c l f g
h₀ : ∀ᶠ (x : α) in l, f x = 0 → g x = 0
⊢ IsBigOWith c l (fun x => (g x)⁻¹) fun x => (f x)⁻¹

tactic: cases' eq_or_ne (f x) 0 with hx hx
state_before: α : Type u_1
β : Type ?u.533106
E : Type ?u.533109
F : Type ?u.533112
G : Type ?u.533115
E' : Type ?u.533118
F' : Type ?u.533121
G' : Type ?u.533124
E'' : Type ?u.533127
F'' : Type ?u.533130
G'' : Type ?u.533133
R : Type ?u.533136
R' : Type ?u.533139
𝕜 : Type u_2
𝕜' : Type u_3
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 : α → 𝕜
g : α → 𝕜'
h : IsBigOWith c l f g
h₀✝ : ∀ᶠ (x : α) in l, f x = 0 → g x = 0
x : α
h₀ : f x = 0 → g x = 0
hle : ‖f x‖ ≤ c * ‖g x‖
⊢ ‖(g x)⁻¹‖ ≤ c * ‖(f x)⁻¹‖

tactic: simp only [hx, h₀ hx, inv_zero, norm_zero, MulZeroClass.mul_zero]
state_before: case inl
α : Type u_1
β : Type ?u.533106
E : Type ?u.533109
F : Type ?u.533112
G : Type ?u.533115
E' : Type ?u.533118
F' : Type ?u.533121
G' : Type ?u.533124
E'' : Type ?u.533127
F'' : Type ?u.533130
G'' : Type ?u.533133
R : Type ?u.533136
R' : Type ?u.533139
𝕜 : Type u_2
𝕜' : Type u_3
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 : α → 𝕜
g : α → 𝕜'
h : IsBigOWith c l f g
h₀✝ : ∀ᶠ (x : α) in l, f x = 0 → g x = 0
x : α
h₀ : f x = 0 → g x = 0
hle : ‖f x‖ ≤ c * ‖g x‖
hx : f x = 0
⊢ ‖(g x)⁻¹‖ ≤ c * ‖(f x)⁻¹‖

tactic: rfl
state_before: case inl
α : Type u_1
β : Type ?u.533106
E : Type ?u.533109
F : Type ?u.533112
G : Type ?u.533115
E' : Type ?u.533118
F' : Type ?u.533121
G' : Type ?u.533124
E'' : Type ?u.533127
F'' : Type ?u.533130
G'' : Type ?u.533133
R : Type ?u.533136
R' : Type ?u.533139
𝕜 : Type u_2
𝕜' : Type u_3
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 : α → 𝕜
g : α → 𝕜'
h : IsBigOWith c l f g
h₀✝ : ∀ᶠ (x : α) in l, f x = 0 → g x = 0
x : α
h₀ : f x = 0 → g x = 0
hle : ‖f x‖ ≤ c * ‖g x‖
hx : f x = 0
⊢ 0 ≤ 0

tactic: have hc : 0 < c := pos_of_mul_pos_left ((norm_pos_iff.2 hx).trans_le hle) (norm_nonneg _)
state_before: case inr
α : Type u_1
β : Type ?u.533106
E : Type ?u.533109
F : Type ?u.533112
G : Type ?u.533115
E' : Type ?u.533118
F' : Type ?u.533121
G' : Type ?u.533124
E'' : Type ?u.533127
F'' : Type ?u.533130
G'' : Type ?u.533133
R : Type ?u.533136
R' : Type ?u.533139
𝕜 : Type u_2
𝕜' : Type u_3
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 : α → 𝕜
g : α → 𝕜'
h : IsBigOWith c l f g
h₀✝ : ∀ᶠ (x : α) in l, f x = 0 → g x = 0
x : α
h₀ : f x = 0 → g x = 0
hle : ‖f x‖ ≤ c * ‖g x‖
hx : f x ≠ 0
⊢ ‖(g x)⁻¹‖ ≤ c * ‖(f x)⁻¹‖

tactic: replace hle := inv_le_inv_of_le (norm_pos_iff.2 hx) hle
state_before: case inr
α : Type u_1
β : Type ?u.533106
E : Type ?u.533109
F : Type ?u.533112
G : Type ?u.533115
E' : Type ?u.533118
F' : Type ?u.533121
G' : Type ?u.533124
E'' : Type ?u.533127
F'' : Type ?u.533130
G'' : Type ?u.533133
R : Type ?u.533136
R' : Type ?u.533139
𝕜 : Type u_2
𝕜' : Type u_3
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 : α → 𝕜
g : α → 𝕜'
h : IsBigOWith c l f g
h₀✝ : ∀ᶠ (x : α) in l, f x = 0 → g x = 0
x : α
h₀ : f x = 0 → g x = 0
hle : ‖f x‖ ≤ c * ‖g x‖
hx : f x ≠ 0
hc : 0 < c
⊢ ‖(g x)⁻¹‖ ≤ c * ‖(f x)⁻¹‖

tactic: simpa only [norm_inv, mul_inv, ← div_eq_inv_mul, div_le_iff hc] using hle
state_before: case inr
α : Type u_1
β : Type ?u.533106
E : Type ?u.533109
F : Type ?u.533112
G : Type ?u.533115
E' : Type ?u.533118
F' : Type ?u.533121
G' : Type ?u.533124
E'' : Type ?u.533127
F'' : Type ?u.533130
G'' : Type ?u.533133
R : Type ?u.533136
R' : Type ?u.533139
𝕜 : Type u_2
𝕜' : Type u_3
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 : α → 𝕜
g : α → 𝕜'
h : IsBigOWith c l f g
h₀✝ : ∀ᶠ (x : α) in l, f x = 0 → g x = 0
x : α
h₀ : f x = 0 → g x = 0
hx : f x ≠ 0
hc : 0 < c
hle : (c * ‖g x‖)⁻¹ ≤ ‖f x‖⁻¹
⊢ ‖(g x)⁻¹‖ ≤ c * ‖(f x)⁻¹‖