Theorem: tendsto_log_mul_self_nhds_zero_left
File: Mathlib/Analysis/SpecialFunctions/Pow/Asymptotics.lean

tactic: have h := tendsto_log_mul_rpow_nhds_zero zero_lt_one
state_before: ⊢ Tendsto (fun x => log x * x) (𝓝[<] 0) (𝓝 0)
state_after: h : Tendsto (fun x => log x * x ^ 1) (𝓝[>] 0) (𝓝 0)
⊢ Tendsto (fun x => log x * x) (𝓝[<] 0) (𝓝 0)

tactic: simp only [Real.rpow_one] at h
state_before: h : Tendsto (fun x => log x * x ^ 1) (𝓝[>] 0) (𝓝 0)
⊢ Tendsto (fun x => log x * x) (𝓝[<] 0) (𝓝 0)
state_after: h : Tendsto (fun x => log x * x) (𝓝[>] 0) (𝓝 0)
⊢ Tendsto (fun x => log x * x) (𝓝[<] 0) (𝓝 0)

tactic: have h_eq : ∀ x ∈ Set.Iio 0, (- (fun x ↦ log x * x) ∘ (fun x ↦ |x|)) x = log x * x := by
  simp only [Set.mem_Iio, Pi.neg_apply, Function.comp_apply, log_abs]
  intro x hx
  simp only [abs_of_nonpos hx.le, mul_neg, neg_neg]
state_before: h : Tendsto (fun x => log x * x) (𝓝[>] 0) (𝓝 0)
⊢ Tendsto (fun x => log x * x) (𝓝[<] 0) (𝓝 0)
state_after: h : Tendsto (fun x => log x * x) (𝓝[>] 0) (𝓝 0)
h_eq : ∀ x ∈ Set.Iio 0, (-(fun x => log x * x) ∘ fun x => |x|) x = log x * x
⊢ Tendsto (fun x => log x * x) (𝓝[<] 0) (𝓝 0)

tactic: refine tendsto_nhdsWithin_congr h_eq ?_
state_before: h : Tendsto (fun x => log x * x) (𝓝[>] 0) (𝓝 0)
h_eq : ∀ x ∈ Set.Iio 0, (-(fun x => log x * x) ∘ fun x => |x|) x = log x * x
⊢ Tendsto (fun x => log x * x) (𝓝[<] 0) (𝓝 0)
state_after: h : Tendsto (fun x => log x * x) (𝓝[>] 0) (𝓝 0)
h_eq : ∀ x ∈ Set.Iio 0, (-(fun x => log x * x) ∘ fun x => |x|) x = log x * x
⊢ Tendsto (-(fun x => log x * x) ∘ fun x => |x|) (𝓝[<] 0) (𝓝 0)

tactic: nth_rewrite 3 [← neg_zero]
state_before: h : Tendsto (fun x => log x * x) (𝓝[>] 0) (𝓝 0)
h_eq : ∀ x ∈ Set.Iio 0, (-(fun x => log x * x) ∘ fun x => |x|) x = log x * x
⊢ Tendsto (-(fun x => log x * x) ∘ fun x => |x|) (𝓝[<] 0) (𝓝 0)
state_after: h : Tendsto (fun x => log x * x) (𝓝[>] 0) (𝓝 0)
h_eq : ∀ x ∈ Set.Iio 0, (-(fun x => log x * x) ∘ fun x => |x|) x = log x * x
⊢ Tendsto (-(fun x => log x * x) ∘ fun x => |x|) (𝓝[<] 0) (𝓝 (-0))

tactic: refine (h.comp (tendsto_abs_nhdsWithin_zero.mono_left ?_)).neg
state_before: h : Tendsto (fun x => log x * x) (𝓝[>] 0) (𝓝 0)
h_eq : ∀ x ∈ Set.Iio 0, (-(fun x => log x * x) ∘ fun x => |x|) x = log x * x
⊢ Tendsto (-(fun x => log x * x) ∘ fun x => |x|) (𝓝[<] 0) (𝓝 (-0))
state_after: h : Tendsto (fun x => log x * x) (𝓝[>] 0) (𝓝 0)
h_eq : ∀ x ∈ Set.Iio 0, (-(fun x => log x * x) ∘ fun x => |x|) x = log x * x
⊢ 𝓝[<] 0 ≤ 𝓝[≠] 0

tactic: refine nhdsWithin_mono 0 (fun x hx ↦ ?_)
state_before: h : Tendsto (fun x => log x * x) (𝓝[>] 0) (𝓝 0)
h_eq : ∀ x ∈ Set.Iio 0, (-(fun x => log x * x) ∘ fun x => |x|) x = log x * x
⊢ 𝓝[<] 0 ≤ 𝓝[≠] 0
state_after: h : Tendsto (fun x => log x * x) (𝓝[>] 0) (𝓝 0)
h_eq : ∀ x ∈ Set.Iio 0, (-(fun x => log x * x) ∘ fun x => |x|) x = log x * x
x : ℝ
hx : x ∈ Set.Iio 0
⊢ x ∈ {0}ᶜ

tactic: simp only [Set.mem_Iio] at hx
state_before: h : Tendsto (fun x => log x * x) (𝓝[>] 0) (𝓝 0)
h_eq : ∀ x ∈ Set.Iio 0, (-(fun x => log x * x) ∘ fun x => |x|) x = log x * x
x : ℝ
hx : x ∈ Set.Iio 0
⊢ x ∈ {0}ᶜ
state_after: h : Tendsto (fun x => log x * x) (𝓝[>] 0) (𝓝 0)
h_eq : ∀ x ∈ Set.Iio 0, (-(fun x => log x * x) ∘ fun x => |x|) x = log x * x
x : ℝ
hx : x < 0
⊢ x ∈ {0}ᶜ

tactic: simp only [Set.mem_compl_iff, Set.mem_singleton_iff, hx.ne, not_false_eq_true]
state_before: h : Tendsto (fun x => log x * x) (𝓝[>] 0) (𝓝 0)
h_eq : ∀ x ∈ Set.Iio 0, (-(fun x => log x * x) ∘ fun x => |x|) x = log x * x
x : ℝ
hx : x < 0
⊢ x ∈ {0}ᶜ
state_after: no goals

tactic: simp only [Set.mem_Iio, Pi.neg_apply, Function.comp_apply, log_abs]
state_before: h : Tendsto (fun x => log x * x) (𝓝[>] 0) (𝓝 0)
⊢ ∀ x ∈ Set.Iio 0, (-(fun x => log x * x) ∘ fun x => |x|) x = log x * x
state_after: h : Tendsto (fun x => log x * x) (𝓝[>] 0) (𝓝 0)
⊢ ∀ x < 0, -(log x * |x|) = log x * x

tactic: intro x hx
state_before: h : Tendsto (fun x => log x * x) (𝓝[>] 0) (𝓝 0)
⊢ ∀ x < 0, -(log x * |x|) = log x * x
state_after: h : Tendsto (fun x => log x * x) (𝓝[>] 0) (𝓝 0)
x : ℝ
hx : x < 0
⊢ -(log x * |x|) = log x * x

tactic: simp only [abs_of_nonpos hx.le, mul_neg, neg_neg]
state_before: h : Tendsto (fun x => log x * x) (𝓝[>] 0) (𝓝 0)
x : ℝ
hx : x < 0
⊢ -(log x * |x|) = log x * x
state_after: no goals