-- Mathlib/Analysis/Asymptotics/Lemmas.lean
/-- The condition `f = O[𝓝[≠] a] 1` is equivalent to `f = O[𝓝 a] 1`. -/
lemma isBigO_one_nhds_ne_iff [TopologicalSpace α] {a : α} :
    f =O[𝓝[≠] a] (fun _ ↦ 1 : α → F) ↔ f =O[𝓝 a] (fun _ ↦ 1 : α → F)

Proof state:
case intro
α : Type u_1
E : Type u_3
F : Type u_4
inst✝⁴ : Norm E
inst✝³ : Norm F
f : α → E
inst✝² : One F
inst✝¹ : NormOneClass F
inst✝ : TopologicalSpace α
a : α
c : ℝ
hc : ∀ᶠ (a : α) in 𝓝[≠] a, ‖f a‖ ≤ c
⊢ ∃ b, ∀ᶠ (a : α) in 𝓝 a, ‖f a‖ ≤ b

Tactic:
use max c ‖f a‖

Result:
case h
α : Type u_1
E : Type u_3
F : Type u_4
inst✝⁴ : Norm E
inst✝³ : Norm F
f : α → E
inst✝² : One F
inst✝¹ : NormOneClass F
inst✝ : TopologicalSpace α
a : α
c : ℝ
hc : ∀ᶠ (a : α) in 𝓝[≠] a, ‖f a‖ ≤ c
⊢ ∀ᶠ (a_1 : α) in 𝓝 a, ‖f a_1‖ ≤ c ⊔ ‖f a‖

Proof state:
case h.inr
α : Type u_1
E : Type u_3
F : Type u_4
inst✝⁴ : Norm E
inst✝³ : Norm F
f : α → E
inst✝² : One F
inst✝¹ : NormOneClass F
inst✝ : TopologicalSpace α
a : α
c : ℝ
hc : ∀ᶠ (a : α) in 𝓝[≠] a, ‖f a‖ ≤ c
b : α
hb : b ∈ {a}ᶜ → ‖f b‖ ≤ c
hb' : b ≠ a
⊢ ‖f b‖ ≤ c ⊔ ‖f a‖

Tactic:
exact (hb hb').trans (le_max_left ..)

Result:
no goals

Proof state:
α : Type u_1
E : Type u_3
F : Type u_4
inst✝⁴ : Norm E
inst✝³ : Norm F
f : α → E
inst✝² : One F
inst✝¹ : NormOneClass F
inst✝ : TopologicalSpace α
a : α
h : f =O[𝓝[≠] a] fun x => 1
⊢ f =O[𝓝 a] fun x => 1

Tactic:
simp only [isBigO_one_iff, IsBoundedUnder, IsBounded, eventually_map] at h ⊢

Result:
α : Type u_1
E : Type u_3
F : Type u_4
inst✝⁴ : Norm E
inst✝³ : Norm F
f : α → E
inst✝² : One F
inst✝¹ : NormOneClass F
inst✝ : TopologicalSpace α
a : α
h : ∃ b, ∀ᶠ (a : α) in 𝓝[≠] a, ‖f a‖ ≤ b
⊢ ∃ b, ∀ᶠ (a : α) in 𝓝 a, ‖f a‖ ≤ b

Proof state:
case h
α : Type u_1
E : Type u_3
F : Type u_4
inst✝⁴ : Norm E
inst✝³ : Norm F
f : α → E
inst✝² : One F
inst✝¹ : NormOneClass F
inst✝ : TopologicalSpace α
a : α
c : ℝ
hc : ∀ᶠ (a : α) in 𝓝[≠] a, ‖f a‖ ≤ c
b : α
hb : b ∈ {a}ᶜ → ‖f b‖ ≤ c
⊢ ‖f b‖ ≤ c ⊔ ‖f a‖

Tactic:
rcases eq_or_ne b a with rfl | hb'

Result:
case h.inl
α : Type u_1
E : Type u_3
F : Type u_4
inst✝⁴ : Norm E
inst✝³ : Norm F
f : α → E
inst✝² : One F
inst✝¹ : NormOneClass F
inst✝ : TopologicalSpace α
c : ℝ
b : α
hc : ∀ᶠ (a : α) in 𝓝[≠] b, ‖f a‖ ≤ c
hb : b ∈ {b}ᶜ → ‖f b‖ ≤ c
⊢ ‖f b‖ ≤ c ⊔ ‖f b‖

case h.inr
α : Type u_1
E : Type u_3
F : Type u_4
inst✝⁴ : Norm E
inst✝³ : Norm F
f : α → E
inst✝² : One F
inst✝¹ : NormOneClass F
inst✝ : TopologicalSpace α
a : α
c : ℝ
hc : ∀ᶠ (a : α) in 𝓝[≠] a, ‖f a‖ ≤ c
b : α
hb : b ∈ {a}ᶜ → ‖f b‖ ≤ c
hb' : b ≠ a
⊢ ‖f b‖ ≤ c ⊔ ‖f a‖

Proof state:
case h.inl
α : Type u_1
E : Type u_3
F : Type u_4
inst✝⁴ : Norm E
inst✝³ : Norm F
f : α → E
inst✝² : One F
inst✝¹ : NormOneClass F
inst✝ : TopologicalSpace α
c : ℝ
b : α
hc : ∀ᶠ (a : α) in 𝓝[≠] b, ‖f a‖ ≤ c
hb : b ∈ {b}ᶜ → ‖f b‖ ≤ c
⊢ ‖f b‖ ≤ c ⊔ ‖f b‖

Tactic:
apply le_max_right

Result:
no goals

Proof state:
α : Type u_1
E : Type u_3
F : Type u_4
inst✝⁴ : Norm E
inst✝³ : Norm F
f : α → E
inst✝² : One F
inst✝¹ : NormOneClass F
inst✝ : TopologicalSpace α
a : α
h : ∃ b, ∀ᶠ (a : α) in 𝓝[≠] a, ‖f a‖ ≤ b
⊢ ∃ b, ∀ᶠ (a : α) in 𝓝 a, ‖f a‖ ≤ b

Tactic:
obtain ⟨c, hc⟩ := h

Result:
case intro
α : Type u_1
E : Type u_3
F : Type u_4
inst✝⁴ : Norm E
inst✝³ : Norm F
f : α → E
inst✝² : One F
inst✝¹ : NormOneClass F
inst✝ : TopologicalSpace α
a : α
c : ℝ
hc : ∀ᶠ (a : α) in 𝓝[≠] a, ‖f a‖ ≤ c
⊢ ∃ b, ∀ᶠ (a : α) in 𝓝 a, ‖f a‖ ≤ b

Proof state:
case h
α : Type u_1
E : Type u_3
F : Type u_4
inst✝⁴ : Norm E
inst✝³ : Norm F
f : α → E
inst✝² : One F
inst✝¹ : NormOneClass F
inst✝ : TopologicalSpace α
a : α
c : ℝ
hc : ∀ᶠ (a : α) in 𝓝[≠] a, ‖f a‖ ≤ c
⊢ ∀ᶠ (a_1 : α) in 𝓝 a, ‖f a_1‖ ≤ c ⊔ ‖f a‖

Tactic:
filter_upwards [eventually_nhdsWithin_iff.mp hc] with b hb

Result:
case h
α : Type u_1
E : Type u_3
F : Type u_4
inst✝⁴ : Norm E
inst✝³ : Norm F
f : α → E
inst✝² : One F
inst✝¹ : NormOneClass F
inst✝ : TopologicalSpace α
a : α
c : ℝ
hc : ∀ᶠ (a : α) in 𝓝[≠] a, ‖f a‖ ≤ c
b : α
hb : b ∈ {a}ᶜ → ‖f b‖ ≤ c
⊢ ‖f b‖ ≤ c ⊔ ‖f a‖

Proof state:
α : Type u_1
E : Type u_3
F : Type u_4
inst✝⁴ : Norm E
inst✝³ : Norm F
f : α → E
inst✝² : One F
inst✝¹ : NormOneClass F
inst✝ : TopologicalSpace α
a : α
⊢ (f =O[𝓝[≠] a] fun x => 1) ↔ f =O[𝓝 a] fun x => 1

Tactic:
refine ⟨fun h ↦ ?_, fun h ↦ h.mono nhdsWithin_le_nhds⟩

Result:
α : Type u_1
E : Type u_3
F : Type u_4
inst✝⁴ : Norm E
inst✝³ : Norm F
f : α → E
inst✝² : One F
inst✝¹ : NormOneClass F
inst✝ : TopologicalSpace α
a : α
h : f =O[𝓝[≠] a] fun x => 1
⊢ f =O[𝓝 a] fun x => 1