Theorem: HasDerivAt.lhopital_zero_left_on_Ioo
File: Mathlib/Analysis/Calculus/LHopital.lean

tactic: have hdnf : ∀ x ∈ -Ioo a b, HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x := fun x hx =>
  comp x (hff' (-x) hx) (hasDerivAt_neg x)
state_before: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≠ 0
hfb : Tendsto f (𝓝[Iio b] b) (𝓝 0)
hgb : Tendsto g (𝓝[Iio b] b) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio b] b) l
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio b] b) l

tactic: have hdng : ∀ x ∈ -Ioo a b, HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x := fun x hx =>
  comp x (hgg' (-x) hx) (hasDerivAt_neg x)
state_before: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≠ 0
hfb : Tendsto f (𝓝[Iio b] b) (𝓝 0)
hgb : Tendsto g (𝓝[Iio b] b) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio b] b) l
hdnf : ∀ (x : ℝ), x ∈ -Ioo a b → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio b] b) l

tactic: rw [preimage_neg_Ioo] at hdnf
state_before: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≠ 0
hfb : Tendsto f (𝓝[Iio b] b) (𝓝 0)
hgb : Tendsto g (𝓝[Iio b] b) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio b] b) l
hdnf : ∀ (x : ℝ), x ∈ -Ioo a b → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ -Ioo a b → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio b] b) l

tactic: rw [preimage_neg_Ioo] at hdng
state_before: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≠ 0
hfb : Tendsto f (𝓝[Iio b] b) (𝓝 0)
hgb : Tendsto g (𝓝[Iio b] b) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio b] b) l
hdnf : ∀ (x : ℝ), x ∈ Ioo (-b) (-a) → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ -Ioo a b → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio b] b) l

tactic: have := lhopital_zero_right_on_Ioo (neg_lt_neg hab) hdnf hdng (by
  intro x hx h
  apply hg' _ (by rw [← preimage_neg_Ioo] at hx; exact hx)
  rwa [mul_comm, ← neg_eq_neg_one_mul, neg_eq_zero] at h)
  (hfb.comp tendsto_neg_nhdsWithin_Ioi_neg) (hgb.comp tendsto_neg_nhdsWithin_Ioi_neg)
  (by
    simp only [neg_div_neg_eq, mul_one, mul_neg]
    exact (tendsto_congr fun x => rfl).mp (hdiv.comp tendsto_neg_nhdsWithin_Ioi_neg))
state_before: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≠ 0
hfb : Tendsto f (𝓝[Iio b] b) (𝓝 0)
hgb : Tendsto g (𝓝[Iio b] b) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio b] b) l
hdnf : ∀ (x : ℝ), x ∈ Ioo (-b) (-a) → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ Ioo (-b) (-a) → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio b] b) l

tactic: have := this.comp tendsto_neg_nhdsWithin_Iio
state_before: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≠ 0
hfb : Tendsto f (𝓝[Iio b] b) (𝓝 0)
hgb : Tendsto g (𝓝[Iio b] b) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio b] b) l
hdnf : ∀ (x : ℝ), x ∈ Ioo (-b) (-a) → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ Ioo (-b) (-a) → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
this : Tendsto (fun x => (f ∘ Neg.neg) x / (g ∘ Neg.neg) x) (𝓝[Ioi (-b)] (-b)) l
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio b] b) l

tactic: unfold Function.comp at this
state_before: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≠ 0
hfb : Tendsto f (𝓝[Iio b] b) (𝓝 0)
hgb : Tendsto g (𝓝[Iio b] b) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio b] b) l
hdnf : ∀ (x : ℝ), x ∈ Ioo (-b) (-a) → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ Ioo (-b) (-a) → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
this✝ : Tendsto (fun x => (f ∘ Neg.neg) x / (g ∘ Neg.neg) x) (𝓝[Ioi (-b)] (-b)) l
this : Tendsto ((fun x => (f ∘ Neg.neg) x / (g ∘ Neg.neg) x) ∘ Neg.neg) (𝓝[Iio b] b) l
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio b] b) l

tactic: simpa only [neg_neg]
state_before: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≠ 0
hfb : Tendsto f (𝓝[Iio b] b) (𝓝 0)
hgb : Tendsto g (𝓝[Iio b] b) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio b] b) l
hdnf : ∀ (x : ℝ), x ∈ Ioo (-b) (-a) → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ Ioo (-b) (-a) → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
this✝ : Tendsto (fun x => (f ∘ Neg.neg) x / (g ∘ Neg.neg) x) (𝓝[Ioi (-b)] (-b)) l
this : Tendsto (fun x => (fun x => f (-x) / g (-x)) (-x)) (𝓝[Iio b] b) l
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio b] b) l

tactic: intro x hx h
state_before: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≠ 0
hfb : Tendsto f (𝓝[Iio b] b) (𝓝 0)
hgb : Tendsto g (𝓝[Iio b] b) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio b] b) l
hdnf : ∀ (x : ℝ), x ∈ Ioo (-b) (-a) → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ Ioo (-b) (-a) → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
⊢ ∀ (x : ℝ), x ∈ Ioo (-b) (-a) → g' (-x) * -1 ≠ 0

tactic: apply hg' _ (by rw [← preimage_neg_Ioo] at hx; exact hx)
state_before: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≠ 0
hfb : Tendsto f (𝓝[Iio b] b) (𝓝 0)
hgb : Tendsto g (𝓝[Iio b] b) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio b] b) l
hdnf : ∀ (x : ℝ), x ∈ Ioo (-b) (-a) → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ Ioo (-b) (-a) → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
x : ℝ
hx : x ∈ Ioo (-b) (-a)
h : g' (-x) * -1 = 0
⊢ False

tactic: rwa [mul_comm, ← neg_eq_neg_one_mul, neg_eq_zero] at h
state_before: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≠ 0
hfb : Tendsto f (𝓝[Iio b] b) (𝓝 0)
hgb : Tendsto g (𝓝[Iio b] b) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio b] b) l
hdnf : ∀ (x : ℝ), x ∈ Ioo (-b) (-a) → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ Ioo (-b) (-a) → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
x : ℝ
hx : x ∈ Ioo (-b) (-a)
h : g' (-x) * -1 = 0
⊢ g' (-x) = 0

tactic: rw [← preimage_neg_Ioo] at hx
state_before: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≠ 0
hfb : Tendsto f (𝓝[Iio b] b) (𝓝 0)
hgb : Tendsto g (𝓝[Iio b] b) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio b] b) l
hdnf : ∀ (x : ℝ), x ∈ Ioo (-b) (-a) → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ Ioo (-b) (-a) → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
x : ℝ
hx : x ∈ Ioo (-b) (-a)
h : g' (-x) * -1 = 0
⊢ ?m.13575 ∈ Ioo a b

tactic: exact hx
state_before: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≠ 0
hfb : Tendsto f (𝓝[Iio b] b) (𝓝 0)
hgb : Tendsto g (𝓝[Iio b] b) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio b] b) l
hdnf : ∀ (x : ℝ), x ∈ Ioo (-b) (-a) → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ Ioo (-b) (-a) → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
x : ℝ
hx✝ : x ∈ Ioo (-b) (-a)
hx : x ∈ -Ioo a b
h : g' (-x) * -1 = 0
⊢ ?m.13646 h ∈ Ioo a b

tactic: simp only [neg_div_neg_eq, mul_one, mul_neg]
state_before: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≠ 0
hfb : Tendsto f (𝓝[Iio b] b) (𝓝 0)
hgb : Tendsto g (𝓝[Iio b] b) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio b] b) l
hdnf : ∀ (x : ℝ), x ∈ Ioo (-b) (-a) → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ Ioo (-b) (-a) → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
⊢ Tendsto (fun x => f' (-x) * -1 / (g' (-x) * -1)) (𝓝[Ioi (-b)] (-b)) ?m.13206

tactic: exact (tendsto_congr fun x => rfl).mp (hdiv.comp tendsto_neg_nhdsWithin_Ioi_neg)
state_before: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≠ 0
hfb : Tendsto f (𝓝[Iio b] b) (𝓝 0)
hgb : Tendsto g (𝓝[Iio b] b) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio b] b) l
hdnf : ∀ (x : ℝ), x ∈ Ioo (-b) (-a) → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ Ioo (-b) (-a) → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
⊢ Tendsto (fun x => f' (-x) / g' (-x)) (𝓝[Ioi (-b)] (-b)) ?m.13206