[GOAL]
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
have sub : ∀ x ∈ Ioo a b, Ioo a x ⊆ Ioo a b := fun x hx => Ioo_subset_Ioo (le_refl a) (le_of_lt hx.2)
[GOAL]
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
have hg : ∀ x ∈ Ioo a b, g x ≠ 0 := by
  intro x hx h
  have : Tendsto g (𝓝[<] x) (𝓝 0) :=
    by
    rw [← h, ← nhdsWithin_Ioo_eq_nhdsWithin_Iio hx.1]
    exact ((hgg' x hx).continuousAt.continuousWithinAt.mono <| sub x hx).tendsto
  obtain ⟨y, hyx, hy⟩ : ∃ c ∈ Ioo a x, g' c = 0
  exact exists_hasDerivAt_eq_zero' hx.1 hga this fun y hy => hgg' y <| sub x hx hy
  exact hg' y (sub x hx hyx) hy
[GOAL]
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
⊢ ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
[PROOFSTEP]
intro x hx h
[GOAL]
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
x : ℝ
hx : x ∈ Ioo a b
h : g x = 0
⊢ False
[PROOFSTEP]
have : Tendsto g (𝓝[<] x) (𝓝 0) := by
  rw [← h, ← nhdsWithin_Ioo_eq_nhdsWithin_Iio hx.1]
  exact ((hgg' x hx).continuousAt.continuousWithinAt.mono <| sub x hx).tendsto
[GOAL]
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
x : ℝ
hx : x ∈ Ioo a b
h : g x = 0
⊢ Tendsto g (𝓝[Iio x] x) (𝓝 0)
[PROOFSTEP]
rw [← h, ← nhdsWithin_Ioo_eq_nhdsWithin_Iio hx.1]
[GOAL]
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
x : ℝ
hx : x ∈ Ioo a b
h : g x = 0
⊢ Tendsto g (𝓝[Ioo a x] x) (𝓝 (g x))
[PROOFSTEP]
exact ((hgg' x hx).continuousAt.continuousWithinAt.mono <| sub x hx).tendsto
[GOAL]
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
x : ℝ
hx : x ∈ Ioo a b
h : g x = 0
this : Tendsto g (𝓝[Iio x] x) (𝓝 0)
⊢ False
[PROOFSTEP]
obtain ⟨y, hyx, hy⟩ : ∃ c ∈ Ioo a x, g' c = 0
[GOAL]
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
x : ℝ
hx : x ∈ Ioo a b
h : g x = 0
this : Tendsto g (𝓝[Iio x] x) (𝓝 0)
⊢ ∃ c, c ∈ Ioo a x ∧ g' c = 0
case intro.intro
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
x : ℝ
hx : x ∈ Ioo a b
h : g x = 0
this : Tendsto g (𝓝[Iio x] x) (𝓝 0)
y : ℝ
hyx : y ∈ Ioo a x
hy : g' y = 0
⊢ False
[PROOFSTEP]
exact exists_hasDerivAt_eq_zero' hx.1 hga this fun y hy => hgg' y <| sub x hx hy
[GOAL]
case intro.intro
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
x : ℝ
hx : x ∈ Ioo a b
h : g x = 0
this : Tendsto g (𝓝[Iio x] x) (𝓝 0)
y : ℝ
hyx : y ∈ Ioo a x
hy : g' y = 0
⊢ False
[PROOFSTEP]
exact hg' y (sub x hx hyx) hy
[GOAL]
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
have : ∀ x ∈ Ioo a b, ∃ c ∈ Ioo a x, f x * g' c = g x * f' c :=
  by
  intro x hx
  rw [← sub_zero (f x), ← sub_zero (g x)]
  exact
    exists_ratio_hasDerivAt_eq_ratio_slope' g g' hx.1 f f' (fun y hy => hgg' y <| sub x hx hy)
      (fun y hy => hff' y <| sub x hx hy) hga hfa (tendsto_nhdsWithin_of_tendsto_nhds (hgg' x hx).continuousAt.tendsto)
      (tendsto_nhdsWithin_of_tendsto_nhds (hff' x hx).continuousAt.tendsto)
[GOAL]
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
⊢ ∀ (x : ℝ), x ∈ Ioo a b → ∃ c, c ∈ Ioo a x ∧ f x * g' c = g x * f' c
[PROOFSTEP]
intro x hx
[GOAL]
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
x : ℝ
hx : x ∈ Ioo a b
⊢ ∃ c, c ∈ Ioo a x ∧ f x * g' c = g x * f' c
[PROOFSTEP]
rw [← sub_zero (f x), ← sub_zero (g x)]
[GOAL]
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
x : ℝ
hx : x ∈ Ioo a b
⊢ ∃ c, c ∈ Ioo a x ∧ (f x - 0) * g' c = (g x - 0) * f' c
[PROOFSTEP]
exact
  exists_ratio_hasDerivAt_eq_ratio_slope' g g' hx.1 f f' (fun y hy => hgg' y <| sub x hx hy)
    (fun y hy => hff' y <| sub x hx hy) hga hfa (tendsto_nhdsWithin_of_tendsto_nhds (hgg' x hx).continuousAt.tendsto)
    (tendsto_nhdsWithin_of_tendsto_nhds (hff' x hx).continuousAt.tendsto)
[GOAL]
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
this : ∀ (x : ℝ), x ∈ Ioo a b → ∃ c, c ∈ Ioo a x ∧ f x * g' c = g x * f' c
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
choose! c hc using this
[GOAL]
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
have : ∀ x ∈ Ioo a b, ((fun x' => f' x' / g' x') ∘ c) x = f x / g x :=
  by
  intro x hx
  rcases hc x hx with ⟨h₁, h₂⟩
  field_simp [hg x hx, hg' (c x) ((sub x hx) h₁)]
  simp only [h₂]
  rw [mul_comm]
[GOAL]
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
⊢ ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
[PROOFSTEP]
intro x hx
[GOAL]
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
x : ℝ
hx : x ∈ Ioo a b
⊢ ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
[PROOFSTEP]
rcases hc x hx with ⟨h₁, h₂⟩
[GOAL]
case intro
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
x : ℝ
hx : x ∈ Ioo a b
h₁ : c x ∈ Ioo a x
h₂ : f x * g' (c x) = g x * f' (c x)
⊢ ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
[PROOFSTEP]
field_simp [hg x hx, hg' (c x) ((sub x hx) h₁)]
[GOAL]
case intro
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
x : ℝ
hx : x ∈ Ioo a b
h₁ : c x ∈ Ioo a x
h₂ : f x * g' (c x) = g x * f' (c x)
⊢ f' (c x) * g x = f x * g' (c x)
[PROOFSTEP]
simp only [h₂]
[GOAL]
case intro
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
x : ℝ
hx : x ∈ Ioo a b
h₁ : c x ∈ Ioo a x
h₂ : f x * g' (c x) = g x * f' (c x)
⊢ f' (c x) * g x = g x * f' (c x)
[PROOFSTEP]
rw [mul_comm]
[GOAL]
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
have cmp : ∀ x ∈ Ioo a b, a < c x ∧ c x < x := fun x hx => (hc x hx).1
[GOAL]
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
cmp : ∀ (x : ℝ), x ∈ Ioo a b → a < c x ∧ c x < x
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
rw [← nhdsWithin_Ioo_eq_nhdsWithin_Ioi hab]
[GOAL]
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
cmp : ∀ (x : ℝ), x ∈ Ioo a b → a < c x ∧ c x < x
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioo a b] a) l
[PROOFSTEP]
apply tendsto_nhdsWithin_congr this
[GOAL]
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
cmp : ∀ (x : ℝ), x ∈ Ioo a b → a < c x ∧ c x < x
⊢ Tendsto (fun x => ((fun x' => f' x' / g' x') ∘ c) x) (𝓝[Ioo a b] a) l
[PROOFSTEP]
apply hdiv.comp
[GOAL]
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
cmp : ∀ (x : ℝ), x ∈ Ioo a b → a < c x ∧ c x < x
⊢ Tendsto c (𝓝[Ioo a b] a) (𝓝[Ioi a] a)
[PROOFSTEP]
refine'
  tendsto_nhdsWithin_of_tendsto_nhds_of_eventually_within _
    (tendsto_of_tendsto_of_tendsto_of_le_of_le' tendsto_const_nhds (tendsto_nhdsWithin_of_tendsto_nhds tendsto_id) _ _)
    _
[GOAL]
case refine'_1
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
cmp : ∀ (x : ℝ), x ∈ Ioo a b → a < c x ∧ c x < x
⊢ ∀ᶠ (b : ℝ) in 𝓝[Ioo a b] a, a ≤ c b
case refine'_2
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
cmp : ∀ (x : ℝ), x ∈ Ioo a b → a < c x ∧ c x < x
⊢ ∀ᶠ (b : ℝ) in 𝓝[Ioo a b] a, c b ≤ id b
case refine'_3
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
cmp : ∀ (x : ℝ), x ∈ Ioo a b → a < c x ∧ c x < x
⊢ ∀ᶠ (x : ℝ) in 𝓝[Ioo a b] a, c x ∈ Ioi a
[PROOFSTEP]
all_goals
  apply eventually_nhdsWithin_of_forall
  intro x hx
  have := cmp x hx
  try simp
  linarith [this]
[GOAL]
case refine'_1
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
cmp : ∀ (x : ℝ), x ∈ Ioo a b → a < c x ∧ c x < x
⊢ ∀ᶠ (b : ℝ) in 𝓝[Ioo a b] a, a ≤ c b
[PROOFSTEP]
apply eventually_nhdsWithin_of_forall
[GOAL]
case refine'_1.h
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
cmp : ∀ (x : ℝ), x ∈ Ioo a b → a < c x ∧ c x < x
⊢ ∀ (x : ℝ), x ∈ Ioo a b → a ≤ c x
[PROOFSTEP]
intro x hx
[GOAL]
case refine'_1.h
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
cmp : ∀ (x : ℝ), x ∈ Ioo a b → a < c x ∧ c x < x
x : ℝ
hx : x ∈ Ioo a b
⊢ a ≤ c x
[PROOFSTEP]
have := cmp x hx
[GOAL]
case refine'_1.h
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this✝ : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
cmp : ∀ (x : ℝ), x ∈ Ioo a b → a < c x ∧ c x < x
x : ℝ
hx : x ∈ Ioo a b
this : a < c x ∧ c x < x
⊢ a ≤ c x
[PROOFSTEP]
try simp
[GOAL]
case refine'_1.h
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this✝ : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
cmp : ∀ (x : ℝ), x ∈ Ioo a b → a < c x ∧ c x < x
x : ℝ
hx : x ∈ Ioo a b
this : a < c x ∧ c x < x
⊢ a ≤ c x
[PROOFSTEP]
simp
[GOAL]
case refine'_1.h
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this✝ : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
cmp : ∀ (x : ℝ), x ∈ Ioo a b → a < c x ∧ c x < x
x : ℝ
hx : x ∈ Ioo a b
this : a < c x ∧ c x < x
⊢ a ≤ c x
[PROOFSTEP]
linarith [this]
[GOAL]
case refine'_2
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
cmp : ∀ (x : ℝ), x ∈ Ioo a b → a < c x ∧ c x < x
⊢ ∀ᶠ (b : ℝ) in 𝓝[Ioo a b] a, c b ≤ id b
[PROOFSTEP]
apply eventually_nhdsWithin_of_forall
[GOAL]
case refine'_2.h
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
cmp : ∀ (x : ℝ), x ∈ Ioo a b → a < c x ∧ c x < x
⊢ ∀ (x : ℝ), x ∈ Ioo a b → c x ≤ id x
[PROOFSTEP]
intro x hx
[GOAL]
case refine'_2.h
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
cmp : ∀ (x : ℝ), x ∈ Ioo a b → a < c x ∧ c x < x
x : ℝ
hx : x ∈ Ioo a b
⊢ c x ≤ id x
[PROOFSTEP]
have := cmp x hx
[GOAL]
case refine'_2.h
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this✝ : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
cmp : ∀ (x : ℝ), x ∈ Ioo a b → a < c x ∧ c x < x
x : ℝ
hx : x ∈ Ioo a b
this : a < c x ∧ c x < x
⊢ c x ≤ id x
[PROOFSTEP]
try simp
[GOAL]
case refine'_2.h
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this✝ : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
cmp : ∀ (x : ℝ), x ∈ Ioo a b → a < c x ∧ c x < x
x : ℝ
hx : x ∈ Ioo a b
this : a < c x ∧ c x < x
⊢ c x ≤ id x
[PROOFSTEP]
simp
[GOAL]
case refine'_2.h
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this✝ : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
cmp : ∀ (x : ℝ), x ∈ Ioo a b → a < c x ∧ c x < x
x : ℝ
hx : x ∈ Ioo a b
this : a < c x ∧ c x < x
⊢ c x ≤ x
[PROOFSTEP]
linarith [this]
[GOAL]
case refine'_3
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
cmp : ∀ (x : ℝ), x ∈ Ioo a b → a < c x ∧ c x < x
⊢ ∀ᶠ (x : ℝ) in 𝓝[Ioo a b] a, c x ∈ Ioi a
[PROOFSTEP]
apply eventually_nhdsWithin_of_forall
[GOAL]
case refine'_3.h
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
cmp : ∀ (x : ℝ), x ∈ Ioo a b → a < c x ∧ c x < x
⊢ ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioi a
[PROOFSTEP]
intro x hx
[GOAL]
case refine'_3.h
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
cmp : ∀ (x : ℝ), x ∈ Ioo a b → a < c x ∧ c x < x
x : ℝ
hx : x ∈ Ioo a b
⊢ c x ∈ Ioi a
[PROOFSTEP]
have := cmp x hx
[GOAL]
case refine'_3.h
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this✝ : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
cmp : ∀ (x : ℝ), x ∈ Ioo a b → a < c x ∧ c x < x
x : ℝ
hx : x ∈ Ioo a b
this : a < c x ∧ c x < x
⊢ c x ∈ Ioi a
[PROOFSTEP]
try simp
[GOAL]
case refine'_3.h
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this✝ : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
cmp : ∀ (x : ℝ), x ∈ Ioo a b → a < c x ∧ c x < x
x : ℝ
hx : x ∈ Ioo a b
this : a < c x ∧ c x < x
⊢ c x ∈ Ioi a
[PROOFSTEP]
simp
[GOAL]
case refine'_3.h
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
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
sub : ∀ (x : ℝ), x ∈ Ioo a b → Ioo a x ⊆ Ioo a b
hg : ∀ (x : ℝ), x ∈ Ioo a b → g x ≠ 0
c : ℝ → ℝ
hc : ∀ (x : ℝ), x ∈ Ioo a b → c x ∈ Ioo a x ∧ f x * g' (c x) = g x * f' (c x)
this✝ : ∀ (x : ℝ), x ∈ Ioo a b → ((fun x' => f' x' / g' x') ∘ c) x = f x / g x
cmp : ∀ (x : ℝ), x ∈ Ioo a b → a < c x ∧ c x < x
x : ℝ
hx : x ∈ Ioo a b
this : a < c x ∧ c x < x
⊢ a < c x
[PROOFSTEP]
linarith [this]
[GOAL]
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
hcf : ContinuousOn f (Ico a b)
hcg : ContinuousOn g (Ico a b)
hg' : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≠ 0
hfa : f a = 0
hga : g a = 0
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
refine' lhopital_zero_right_on_Ioo hab hff' hgg' hg' _ _ hdiv
[GOAL]
case refine'_1
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
hcf : ContinuousOn f (Ico a b)
hcg : ContinuousOn g (Ico a b)
hg' : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≠ 0
hfa : f a = 0
hga : g a = 0
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
⊢ Tendsto (fun x => f x) (𝓝[Ioi a] a) (𝓝 0)
[PROOFSTEP]
rw [← hfa, ← nhdsWithin_Ioo_eq_nhdsWithin_Ioi hab]
[GOAL]
case refine'_1
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
hcf : ContinuousOn f (Ico a b)
hcg : ContinuousOn g (Ico a b)
hg' : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≠ 0
hfa : f a = 0
hga : g a = 0
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
⊢ Tendsto (fun x => f x) (𝓝[Ioo a b] a) (𝓝 (f a))
[PROOFSTEP]
exact ((hcf a <| left_mem_Ico.mpr hab).mono Ioo_subset_Ico_self).tendsto
[GOAL]
case refine'_2
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
hcf : ContinuousOn f (Ico a b)
hcg : ContinuousOn g (Ico a b)
hg' : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≠ 0
hfa : f a = 0
hga : g a = 0
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
⊢ Tendsto (fun x => g x) (𝓝[Ioi a] a) (𝓝 0)
[PROOFSTEP]
rw [← hga, ← nhdsWithin_Ioo_eq_nhdsWithin_Ioi hab]
[GOAL]
case refine'_2
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
hcf : ContinuousOn f (Ico a b)
hcg : ContinuousOn g (Ico a b)
hg' : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≠ 0
hfa : f a = 0
hga : g a = 0
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
⊢ Tendsto (fun x => g x) (𝓝[Ioo a b] a) (𝓝 (g a))
[PROOFSTEP]
exact ((hcg a <| left_mem_Ico.mpr hab).mono Ioo_subset_Ico_self).tendsto
[GOAL]
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
[PROOFSTEP]
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)
[GOAL]
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
[PROOFSTEP]
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)
[GOAL]
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
[PROOFSTEP]
rw [preimage_neg_Ioo] at hdnf 
[GOAL]
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
[PROOFSTEP]
rw [preimage_neg_Ioo] at hdng 
[GOAL]
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
[PROOFSTEP]
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))
[GOAL]
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
[PROOFSTEP]
intro x hx h
[GOAL]
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
[PROOFSTEP]
apply hg' _ (by rw [← preimage_neg_Ioo] at hx ; exact hx)
[GOAL]
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.13460 ∈ Ioo a b
[PROOFSTEP]
rw [← preimage_neg_Ioo] at hx 
[GOAL]
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.13535 h ∈ Ioo a b
[PROOFSTEP]
exact hx
[GOAL]
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
[PROOFSTEP]
rwa [mul_comm, ← neg_eq_neg_one_mul, neg_eq_zero] at h 
[GOAL]
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.13087
[PROOFSTEP]
simp only [neg_div_neg_eq, mul_one, mul_neg]
[GOAL]
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.13087
[PROOFSTEP]
exact (tendsto_congr fun x => rfl).mp (hdiv.comp tendsto_neg_nhdsWithin_Ioi_neg)
[GOAL]
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
[PROOFSTEP]
have := this.comp tendsto_neg_nhdsWithin_Iio
[GOAL]
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
[PROOFSTEP]
unfold Function.comp at this 
[GOAL]
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
[PROOFSTEP]
simpa only [neg_neg]
[GOAL]
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
hcf : ContinuousOn f (Ioc a b)
hcg : ContinuousOn g (Ioc a b)
hg' : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≠ 0
hfb : f b = 0
hgb : g 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
[PROOFSTEP]
refine' lhopital_zero_left_on_Ioo hab hff' hgg' hg' _ _ hdiv
[GOAL]
case refine'_1
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
hcf : ContinuousOn f (Ioc a b)
hcg : ContinuousOn g (Ioc a b)
hg' : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≠ 0
hfb : f b = 0
hgb : g b = 0
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio b] b) l
⊢ Tendsto (fun x => f x) (𝓝[Iio b] b) (𝓝 0)
[PROOFSTEP]
rw [← hfb, ← nhdsWithin_Ioo_eq_nhdsWithin_Iio hab]
[GOAL]
case refine'_1
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
hcf : ContinuousOn f (Ioc a b)
hcg : ContinuousOn g (Ioc a b)
hg' : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≠ 0
hfb : f b = 0
hgb : g b = 0
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio b] b) l
⊢ Tendsto (fun x => f x) (𝓝[Ioo a b] b) (𝓝 (f b))
[PROOFSTEP]
exact ((hcf b <| right_mem_Ioc.mpr hab).mono Ioo_subset_Ioc_self).tendsto
[GOAL]
case refine'_2
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
hcf : ContinuousOn f (Ioc a b)
hcg : ContinuousOn g (Ioc a b)
hg' : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≠ 0
hfb : f b = 0
hgb : g b = 0
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio b] b) l
⊢ Tendsto (fun x => g x) (𝓝[Iio b] b) (𝓝 0)
[PROOFSTEP]
rw [← hgb, ← nhdsWithin_Ioo_eq_nhdsWithin_Iio hab]
[GOAL]
case refine'_2
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
hcf : ContinuousOn f (Ioc a b)
hcg : ContinuousOn g (Ioc a b)
hg' : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≠ 0
hfb : f b = 0
hgb : g b = 0
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio b] b) l
⊢ Tendsto (fun x => g x) (𝓝[Ioo a b] b) (𝓝 (g b))
[PROOFSTEP]
exact ((hcg b <| right_mem_Ioc.mpr hab).mono Ioo_subset_Ioc_self).tendsto
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioi a → g' x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
⊢ Tendsto (fun x => f x / g x) atTop l
[PROOFSTEP]
obtain ⟨a', haa', ha'⟩ : ∃ a', a < a' ∧ 0 < a' :=
  ⟨1 + max a 0, ⟨lt_of_le_of_lt (le_max_left a 0) (lt_one_add _), lt_of_le_of_lt (le_max_right a 0) (lt_one_add _)⟩⟩
[GOAL]
case intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioi a → g' x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
a' : ℝ
haa' : a < a'
ha' : 0 < a'
⊢ Tendsto (fun x => f x / g x) atTop l
[PROOFSTEP]
have fact1 : ∀ x : ℝ, x ∈ Ioo 0 a'⁻¹ → x ≠ 0 := fun _ hx => (ne_of_lt hx.1).symm
[GOAL]
case intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioi a → g' x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
a' : ℝ
haa' : a < a'
ha' : 0 < a'
fact1 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → x ≠ 0
⊢ Tendsto (fun x => f x / g x) atTop l
[PROOFSTEP]
have fact2 : ∀ x ∈ Ioo 0 a'⁻¹, a < x⁻¹ := fun _ hx => lt_trans haa' ((lt_inv ha' hx.1).mpr hx.2)
[GOAL]
case intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioi a → g' x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
a' : ℝ
haa' : a < a'
ha' : 0 < a'
fact1 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → x ≠ 0
fact2 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → a < x⁻¹
⊢ Tendsto (fun x => f x / g x) atTop l
[PROOFSTEP]
have hdnf : ∀ x ∈ Ioo 0 a'⁻¹, HasDerivAt (f ∘ Inv.inv) (f' x⁻¹ * -(x ^ 2)⁻¹) x := fun x hx =>
  comp x (hff' x⁻¹ <| fact2 x hx) (hasDerivAt_inv <| fact1 x hx)
[GOAL]
case intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioi a → g' x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
a' : ℝ
haa' : a < a'
ha' : 0 < a'
fact1 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → x ≠ 0
fact2 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → a < x⁻¹
hdnf : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (f ∘ Inv.inv) (f' x⁻¹ * -(x ^ 2)⁻¹) x
⊢ Tendsto (fun x => f x / g x) atTop l
[PROOFSTEP]
have hdng : ∀ x ∈ Ioo 0 a'⁻¹, HasDerivAt (g ∘ Inv.inv) (g' x⁻¹ * -(x ^ 2)⁻¹) x := fun x hx =>
  comp x (hgg' x⁻¹ <| fact2 x hx) (hasDerivAt_inv <| fact1 x hx)
[GOAL]
case intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioi a → g' x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
a' : ℝ
haa' : a < a'
ha' : 0 < a'
fact1 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → x ≠ 0
fact2 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → a < x⁻¹
hdnf : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (f ∘ Inv.inv) (f' x⁻¹ * -(x ^ 2)⁻¹) x
hdng : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (g ∘ Inv.inv) (g' x⁻¹ * -(x ^ 2)⁻¹) x
⊢ Tendsto (fun x => f x / g x) atTop l
[PROOFSTEP]
have :=
  lhopital_zero_right_on_Ioo (inv_pos.mpr ha') hdnf hdng
    (by
      intro x hx
      refine' mul_ne_zero _ (neg_ne_zero.mpr <| inv_ne_zero <| pow_ne_zero _ <| fact1 x hx)
      exact hg' _ (fact2 x hx))
    (hftop.comp tendsto_inv_zero_atTop) (hgtop.comp tendsto_inv_zero_atTop)
    (by
      refine' (tendsto_congr' _).mp (hdiv.comp tendsto_inv_zero_atTop)
      rw [eventuallyEq_iff_exists_mem]
      use Ioi 0, self_mem_nhdsWithin
      intro x hx
      unfold Function.comp
      simp only
      erw [mul_div_mul_right]
      refine' neg_ne_zero.mpr (inv_ne_zero <| pow_ne_zero _ <| ne_of_gt hx))
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioi a → g' x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
a' : ℝ
haa' : a < a'
ha' : 0 < a'
fact1 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → x ≠ 0
fact2 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → a < x⁻¹
hdnf : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (f ∘ Inv.inv) (f' x⁻¹ * -(x ^ 2)⁻¹) x
hdng : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (g ∘ Inv.inv) (g' x⁻¹ * -(x ^ 2)⁻¹) x
⊢ ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → g' x⁻¹ * -(x ^ 2)⁻¹ ≠ 0
[PROOFSTEP]
intro x hx
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioi a → g' x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
a' : ℝ
haa' : a < a'
ha' : 0 < a'
fact1 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → x ≠ 0
fact2 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → a < x⁻¹
hdnf : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (f ∘ Inv.inv) (f' x⁻¹ * -(x ^ 2)⁻¹) x
hdng : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (g ∘ Inv.inv) (g' x⁻¹ * -(x ^ 2)⁻¹) x
x : ℝ
hx : x ∈ Ioo 0 a'⁻¹
⊢ g' x⁻¹ * -(x ^ 2)⁻¹ ≠ 0
[PROOFSTEP]
refine' mul_ne_zero _ (neg_ne_zero.mpr <| inv_ne_zero <| pow_ne_zero _ <| fact1 x hx)
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioi a → g' x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
a' : ℝ
haa' : a < a'
ha' : 0 < a'
fact1 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → x ≠ 0
fact2 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → a < x⁻¹
hdnf : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (f ∘ Inv.inv) (f' x⁻¹ * -(x ^ 2)⁻¹) x
hdng : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (g ∘ Inv.inv) (g' x⁻¹ * -(x ^ 2)⁻¹) x
x : ℝ
hx : x ∈ Ioo 0 a'⁻¹
⊢ g' x⁻¹ ≠ 0
[PROOFSTEP]
exact hg' _ (fact2 x hx)
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioi a → g' x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
a' : ℝ
haa' : a < a'
ha' : 0 < a'
fact1 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → x ≠ 0
fact2 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → a < x⁻¹
hdnf : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (f ∘ Inv.inv) (f' x⁻¹ * -(x ^ 2)⁻¹) x
hdng : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (g ∘ Inv.inv) (g' x⁻¹ * -(x ^ 2)⁻¹) x
⊢ Tendsto (fun x => f' x⁻¹ * -(x ^ 2)⁻¹ / (g' x⁻¹ * -(x ^ 2)⁻¹)) (𝓝[Ioi 0] 0) ?m.21930
[PROOFSTEP]
refine' (tendsto_congr' _).mp (hdiv.comp tendsto_inv_zero_atTop)
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioi a → g' x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
a' : ℝ
haa' : a < a'
ha' : 0 < a'
fact1 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → x ≠ 0
fact2 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → a < x⁻¹
hdnf : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (f ∘ Inv.inv) (f' x⁻¹ * -(x ^ 2)⁻¹) x
hdng : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (g ∘ Inv.inv) (g' x⁻¹ * -(x ^ 2)⁻¹) x
⊢ ((fun x => f' x / g' x) ∘ fun x => x⁻¹) =ᶠ[𝓝[Ioi 0] 0] fun x => f' x⁻¹ * -(x ^ 2)⁻¹ / (g' x⁻¹ * -(x ^ 2)⁻¹)
[PROOFSTEP]
rw [eventuallyEq_iff_exists_mem]
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioi a → g' x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
a' : ℝ
haa' : a < a'
ha' : 0 < a'
fact1 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → x ≠ 0
fact2 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → a < x⁻¹
hdnf : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (f ∘ Inv.inv) (f' x⁻¹ * -(x ^ 2)⁻¹) x
hdng : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (g ∘ Inv.inv) (g' x⁻¹ * -(x ^ 2)⁻¹) x
⊢ ∃ s,
    s ∈ 𝓝[Ioi 0] 0 ∧
      EqOn ((fun x => f' x / g' x) ∘ fun x => x⁻¹) (fun x => f' x⁻¹ * -(x ^ 2)⁻¹ / (g' x⁻¹ * -(x ^ 2)⁻¹)) s
[PROOFSTEP]
use Ioi 0, self_mem_nhdsWithin
[GOAL]
case right
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioi a → g' x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
a' : ℝ
haa' : a < a'
ha' : 0 < a'
fact1 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → x ≠ 0
fact2 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → a < x⁻¹
hdnf : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (f ∘ Inv.inv) (f' x⁻¹ * -(x ^ 2)⁻¹) x
hdng : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (g ∘ Inv.inv) (g' x⁻¹ * -(x ^ 2)⁻¹) x
⊢ EqOn ((fun x => f' x / g' x) ∘ fun x => x⁻¹) (fun x => f' x⁻¹ * -(x ^ 2)⁻¹ / (g' x⁻¹ * -(x ^ 2)⁻¹)) (Ioi 0)
[PROOFSTEP]
intro x hx
[GOAL]
case right
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioi a → g' x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
a' : ℝ
haa' : a < a'
ha' : 0 < a'
fact1 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → x ≠ 0
fact2 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → a < x⁻¹
hdnf : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (f ∘ Inv.inv) (f' x⁻¹ * -(x ^ 2)⁻¹) x
hdng : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (g ∘ Inv.inv) (g' x⁻¹ * -(x ^ 2)⁻¹) x
x : ℝ
hx : x ∈ Ioi 0
⊢ ((fun x => f' x / g' x) ∘ fun x => x⁻¹) x = (fun x => f' x⁻¹ * -(x ^ 2)⁻¹ / (g' x⁻¹ * -(x ^ 2)⁻¹)) x
[PROOFSTEP]
unfold Function.comp
[GOAL]
case right
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioi a → g' x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
a' : ℝ
haa' : a < a'
ha' : 0 < a'
fact1 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → x ≠ 0
fact2 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → a < x⁻¹
hdnf : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (f ∘ Inv.inv) (f' x⁻¹ * -(x ^ 2)⁻¹) x
hdng : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (g ∘ Inv.inv) (g' x⁻¹ * -(x ^ 2)⁻¹) x
x : ℝ
hx : x ∈ Ioi 0
⊢ (fun x => f' x / g' x) ((fun x => x⁻¹) x) = (fun x => f' x⁻¹ * -(x ^ 2)⁻¹ / (g' x⁻¹ * -(x ^ 2)⁻¹)) x
[PROOFSTEP]
simp only
[GOAL]
case right
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioi a → g' x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
a' : ℝ
haa' : a < a'
ha' : 0 < a'
fact1 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → x ≠ 0
fact2 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → a < x⁻¹
hdnf : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (f ∘ Inv.inv) (f' x⁻¹ * -(x ^ 2)⁻¹) x
hdng : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (g ∘ Inv.inv) (g' x⁻¹ * -(x ^ 2)⁻¹) x
x : ℝ
hx : x ∈ Ioi 0
⊢ f' x⁻¹ / g' x⁻¹ = f' x⁻¹ * -(x ^ 2)⁻¹ / (g' x⁻¹ * -(x ^ 2)⁻¹)
[PROOFSTEP]
erw [mul_div_mul_right]
[GOAL]
case right.hc
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioi a → g' x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
a' : ℝ
haa' : a < a'
ha' : 0 < a'
fact1 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → x ≠ 0
fact2 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → a < x⁻¹
hdnf : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (f ∘ Inv.inv) (f' x⁻¹ * -(x ^ 2)⁻¹) x
hdng : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (g ∘ Inv.inv) (g' x⁻¹ * -(x ^ 2)⁻¹) x
x : ℝ
hx : x ∈ Ioi 0
⊢ -(x ^ 2)⁻¹ ≠ 0
[PROOFSTEP]
refine' neg_ne_zero.mpr (inv_ne_zero <| pow_ne_zero _ <| ne_of_gt hx)
[GOAL]
case intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioi a → g' x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
a' : ℝ
haa' : a < a'
ha' : 0 < a'
fact1 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → x ≠ 0
fact2 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → a < x⁻¹
hdnf : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (f ∘ Inv.inv) (f' x⁻¹ * -(x ^ 2)⁻¹) x
hdng : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (g ∘ Inv.inv) (g' x⁻¹ * -(x ^ 2)⁻¹) x
this : Tendsto (fun x => (f ∘ Inv.inv) x / (g ∘ Inv.inv) x) (𝓝[Ioi 0] 0) l
⊢ Tendsto (fun x => f x / g x) atTop l
[PROOFSTEP]
have := this.comp tendsto_inv_atTop_zero'
[GOAL]
case intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioi a → g' x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
a' : ℝ
haa' : a < a'
ha' : 0 < a'
fact1 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → x ≠ 0
fact2 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → a < x⁻¹
hdnf : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (f ∘ Inv.inv) (f' x⁻¹ * -(x ^ 2)⁻¹) x
hdng : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (g ∘ Inv.inv) (g' x⁻¹ * -(x ^ 2)⁻¹) x
this✝ : Tendsto (fun x => (f ∘ Inv.inv) x / (g ∘ Inv.inv) x) (𝓝[Ioi 0] 0) l
this : Tendsto ((fun x => (f ∘ Inv.inv) x / (g ∘ Inv.inv) x) ∘ fun r => r⁻¹) atTop l
⊢ Tendsto (fun x => f x / g x) atTop l
[PROOFSTEP]
unfold Function.comp at this 
[GOAL]
case intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Ioi a → g' x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
a' : ℝ
haa' : a < a'
ha' : 0 < a'
fact1 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → x ≠ 0
fact2 : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → a < x⁻¹
hdnf : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (f ∘ Inv.inv) (f' x⁻¹ * -(x ^ 2)⁻¹) x
hdng : ∀ (x : ℝ), x ∈ Ioo 0 a'⁻¹ → HasDerivAt (g ∘ Inv.inv) (g' x⁻¹ * -(x ^ 2)⁻¹) x
this✝ : Tendsto (fun x => (f ∘ Inv.inv) x / (g ∘ Inv.inv) x) (𝓝[Ioi 0] 0) l
this : Tendsto (fun x => (fun x => f x⁻¹ / g x⁻¹) ((fun r => r⁻¹) x)) atTop l
⊢ Tendsto (fun x => f x / g x) atTop l
[PROOFSTEP]
simpa only [inv_inv]
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Iio a → g' x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l
⊢ Tendsto (fun x => f x / g x) atBot l
[PROOFSTEP]
have hdnf : ∀ x ∈ -Iio a, HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x := fun x hx =>
  comp x (hff' (-x) hx) (hasDerivAt_neg x)
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Iio a → g' x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l
hdnf : ∀ (x : ℝ), x ∈ -Iio a → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
⊢ Tendsto (fun x => f x / g x) atBot l
[PROOFSTEP]
have hdng : ∀ x ∈ -Iio a, HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x := fun x hx =>
  comp x (hgg' (-x) hx) (hasDerivAt_neg x)
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Iio a → g' x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l
hdnf : ∀ (x : ℝ), x ∈ -Iio a → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ -Iio a → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
⊢ Tendsto (fun x => f x / g x) atBot l
[PROOFSTEP]
rw [preimage_neg_Iio] at hdnf 
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Iio a → g' x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l
hdnf : ∀ (x : ℝ), x ∈ Ioi (-a) → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ -Iio a → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
⊢ Tendsto (fun x => f x / g x) atBot l
[PROOFSTEP]
rw [preimage_neg_Iio] at hdng 
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Iio a → g' x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l
hdnf : ∀ (x : ℝ), x ∈ Ioi (-a) → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ Ioi (-a) → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
⊢ Tendsto (fun x => f x / g x) atBot l
[PROOFSTEP]
have :=
  lhopital_zero_atTop_on_Ioi hdnf hdng
    (by
      intro x hx h
      apply hg' _ (by rw [← preimage_neg_Iio] at hx ; exact hx)
      rwa [mul_comm, ← neg_eq_neg_one_mul, neg_eq_zero] at h )
    (hfbot.comp tendsto_neg_atTop_atBot) (hgbot.comp tendsto_neg_atTop_atBot)
    (by
      simp only [mul_one, mul_neg, neg_div_neg_eq]
      exact (tendsto_congr fun x => rfl).mp (hdiv.comp tendsto_neg_atTop_atBot))
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Iio a → g' x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l
hdnf : ∀ (x : ℝ), x ∈ Ioi (-a) → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ Ioi (-a) → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
⊢ ∀ (x : ℝ), x ∈ Ioi (-a) → g' (-x) * -1 ≠ 0
[PROOFSTEP]
intro x hx h
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Iio a → g' x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l
hdnf : ∀ (x : ℝ), x ∈ Ioi (-a) → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ Ioi (-a) → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
x : ℝ
hx : x ∈ Ioi (-a)
h : g' (-x) * -1 = 0
⊢ False
[PROOFSTEP]
apply hg' _ (by rw [← preimage_neg_Iio] at hx ; exact hx)
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Iio a → g' x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l
hdnf : ∀ (x : ℝ), x ∈ Ioi (-a) → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ Ioi (-a) → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
x : ℝ
hx : x ∈ Ioi (-a)
h : g' (-x) * -1 = 0
⊢ ?m.26788 ∈ Iio a
[PROOFSTEP]
rw [← preimage_neg_Iio] at hx 
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Iio a → g' x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l
hdnf : ∀ (x : ℝ), x ∈ Ioi (-a) → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ Ioi (-a) → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
x : ℝ
hx✝ : x ∈ Ioi (-a)
hx : x ∈ -Iio a
h : g' (-x) * -1 = 0
⊢ ?m.26876 h ∈ Iio a
[PROOFSTEP]
exact hx
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Iio a → g' x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l
hdnf : ∀ (x : ℝ), x ∈ Ioi (-a) → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ Ioi (-a) → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
x : ℝ
hx : x ∈ Ioi (-a)
h : g' (-x) * -1 = 0
⊢ g' (-x) = 0
[PROOFSTEP]
rwa [mul_comm, ← neg_eq_neg_one_mul, neg_eq_zero] at h 
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Iio a → g' x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l
hdnf : ∀ (x : ℝ), x ∈ Ioi (-a) → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ Ioi (-a) → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
⊢ Tendsto (fun x => f' (-x) * -1 / (g' (-x) * -1)) atTop ?m.26621
[PROOFSTEP]
simp only [mul_one, mul_neg, neg_div_neg_eq]
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Iio a → g' x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l
hdnf : ∀ (x : ℝ), x ∈ Ioi (-a) → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ Ioi (-a) → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
⊢ Tendsto (fun x => f' (-x) / g' (-x)) atTop ?m.26621
[PROOFSTEP]
exact (tendsto_congr fun x => rfl).mp (hdiv.comp tendsto_neg_atTop_atBot)
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Iio a → g' x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l
hdnf : ∀ (x : ℝ), x ∈ Ioi (-a) → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ Ioi (-a) → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
this : Tendsto (fun x => (f ∘ Neg.neg) x / (g ∘ Neg.neg) x) atTop l
⊢ Tendsto (fun x => f x / g x) atBot l
[PROOFSTEP]
have := this.comp tendsto_neg_atBot_atTop
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Iio a → g' x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l
hdnf : ∀ (x : ℝ), x ∈ Ioi (-a) → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ Ioi (-a) → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
this✝ : Tendsto (fun x => (f ∘ Neg.neg) x / (g ∘ Neg.neg) x) atTop l
this : Tendsto ((fun x => (f ∘ Neg.neg) x / (g ∘ Neg.neg) x) ∘ Neg.neg) atBot l
⊢ Tendsto (fun x => f x / g x) atBot l
[PROOFSTEP]
unfold Function.comp at this 
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt f (f' x) x
hgg' : ∀ (x : ℝ), x ∈ Iio a → HasDerivAt g (g' x) x
hg' : ∀ (x : ℝ), x ∈ Iio a → g' x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l
hdnf : ∀ (x : ℝ), x ∈ Ioi (-a) → HasDerivAt (f ∘ Neg.neg) (f' (-x) * -1) x
hdng : ∀ (x : ℝ), x ∈ Ioi (-a) → HasDerivAt (g ∘ Neg.neg) (g' (-x) * -1) x
this✝ : Tendsto (fun x => (f ∘ Neg.neg) x / (g ∘ Neg.neg) x) atTop l
this : Tendsto (fun x => (fun x => f (-x) / g (-x)) (-x)) atBot l
⊢ Tendsto (fun x => f x / g x) atBot l
[PROOFSTEP]
simpa only [neg_neg]
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : DifferentiableOn ℝ f (Ioo a b)
hg' : ∀ (x : ℝ), x ∈ Ioo a b → deriv g x ≠ 0
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[Ioi a] a) l
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
have hdf : ∀ x ∈ Ioo a b, DifferentiableAt ℝ f x := fun x hx => (hdf x hx).differentiableAt (Ioo_mem_nhds hx.1 hx.2)
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf✝ : DifferentiableOn ℝ f (Ioo a b)
hg' : ∀ (x : ℝ), x ∈ Ioo a b → deriv g x ≠ 0
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[Ioi a] a) l
hdf : ∀ (x : ℝ), x ∈ Ioo a b → DifferentiableAt ℝ f x
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
have hdg : ∀ x ∈ Ioo a b, DifferentiableAt ℝ g x := fun x hx =>
  by_contradiction fun h => hg' x hx (deriv_zero_of_not_differentiableAt h)
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf✝ : DifferentiableOn ℝ f (Ioo a b)
hg' : ∀ (x : ℝ), x ∈ Ioo a b → deriv g x ≠ 0
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[Ioi a] a) l
hdf : ∀ (x : ℝ), x ∈ Ioo a b → DifferentiableAt ℝ f x
hdg : ∀ (x : ℝ), x ∈ Ioo a b → DifferentiableAt ℝ g x
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
exact
  HasDerivAt.lhopital_zero_right_on_Ioo hab (fun x hx => (hdf x hx).hasDerivAt) (fun x hx => (hdg x hx).hasDerivAt) hg'
    hfa hga hdiv
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : DifferentiableOn ℝ f (Ioo a b)
hcf : ContinuousOn f (Ico a b)
hcg : ContinuousOn g (Ico a b)
hg' : ∀ (x : ℝ), x ∈ Ioo a b → deriv g x ≠ 0
hfa : f a = 0
hga : g a = 0
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[Ioi a] a) l
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
refine' lhopital_zero_right_on_Ioo hab hdf hg' _ _ hdiv
[GOAL]
case refine'_1
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : DifferentiableOn ℝ f (Ioo a b)
hcf : ContinuousOn f (Ico a b)
hcg : ContinuousOn g (Ico a b)
hg' : ∀ (x : ℝ), x ∈ Ioo a b → deriv g x ≠ 0
hfa : f a = 0
hga : g a = 0
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[Ioi a] a) l
⊢ Tendsto (fun x => f x) (𝓝[Ioi a] a) (𝓝 0)
[PROOFSTEP]
rw [← hfa, ← nhdsWithin_Ioo_eq_nhdsWithin_Ioi hab]
[GOAL]
case refine'_1
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : DifferentiableOn ℝ f (Ioo a b)
hcf : ContinuousOn f (Ico a b)
hcg : ContinuousOn g (Ico a b)
hg' : ∀ (x : ℝ), x ∈ Ioo a b → deriv g x ≠ 0
hfa : f a = 0
hga : g a = 0
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[Ioi a] a) l
⊢ Tendsto (fun x => f x) (𝓝[Ioo a b] a) (𝓝 (f a))
[PROOFSTEP]
exact ((hcf a <| left_mem_Ico.mpr hab).mono Ioo_subset_Ico_self).tendsto
[GOAL]
case refine'_2
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : DifferentiableOn ℝ f (Ioo a b)
hcf : ContinuousOn f (Ico a b)
hcg : ContinuousOn g (Ico a b)
hg' : ∀ (x : ℝ), x ∈ Ioo a b → deriv g x ≠ 0
hfa : f a = 0
hga : g a = 0
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[Ioi a] a) l
⊢ Tendsto (fun x => g x) (𝓝[Ioi a] a) (𝓝 0)
[PROOFSTEP]
rw [← hga, ← nhdsWithin_Ioo_eq_nhdsWithin_Ioi hab]
[GOAL]
case refine'_2
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : DifferentiableOn ℝ f (Ioo a b)
hcf : ContinuousOn f (Ico a b)
hcg : ContinuousOn g (Ico a b)
hg' : ∀ (x : ℝ), x ∈ Ioo a b → deriv g x ≠ 0
hfa : f a = 0
hga : g a = 0
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[Ioi a] a) l
⊢ Tendsto (fun x => g x) (𝓝[Ioo a b] a) (𝓝 (g a))
[PROOFSTEP]
exact ((hcg a <| left_mem_Ico.mpr hab).mono Ioo_subset_Ico_self).tendsto
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : DifferentiableOn ℝ f (Ioo a b)
hg' : ∀ (x : ℝ), x ∈ Ioo a b → deriv g x ≠ 0
hfb : Tendsto f (𝓝[Iio b] b) (𝓝 0)
hgb : Tendsto g (𝓝[Iio b] b) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[Iio b] b) l
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio b] b) l
[PROOFSTEP]
have hdf : ∀ x ∈ Ioo a b, DifferentiableAt ℝ f x := fun x hx => (hdf x hx).differentiableAt (Ioo_mem_nhds hx.1 hx.2)
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf✝ : DifferentiableOn ℝ f (Ioo a b)
hg' : ∀ (x : ℝ), x ∈ Ioo a b → deriv g x ≠ 0
hfb : Tendsto f (𝓝[Iio b] b) (𝓝 0)
hgb : Tendsto g (𝓝[Iio b] b) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[Iio b] b) l
hdf : ∀ (x : ℝ), x ∈ Ioo a b → DifferentiableAt ℝ f x
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio b] b) l
[PROOFSTEP]
have hdg : ∀ x ∈ Ioo a b, DifferentiableAt ℝ g x := fun x hx =>
  by_contradiction fun h => hg' x hx (deriv_zero_of_not_differentiableAt h)
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf✝ : DifferentiableOn ℝ f (Ioo a b)
hg' : ∀ (x : ℝ), x ∈ Ioo a b → deriv g x ≠ 0
hfb : Tendsto f (𝓝[Iio b] b) (𝓝 0)
hgb : Tendsto g (𝓝[Iio b] b) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[Iio b] b) l
hdf : ∀ (x : ℝ), x ∈ Ioo a b → DifferentiableAt ℝ f x
hdg : ∀ (x : ℝ), x ∈ Ioo a b → DifferentiableAt ℝ g x
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio b] b) l
[PROOFSTEP]
exact
  HasDerivAt.lhopital_zero_left_on_Ioo hab (fun x hx => (hdf x hx).hasDerivAt) (fun x hx => (hdg x hx).hasDerivAt) hg'
    hfb hgb hdiv
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : DifferentiableOn ℝ f (Ioi a)
hg' : ∀ (x : ℝ), x ∈ Ioi a → deriv g x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) atTop l
⊢ Tendsto (fun x => f x / g x) atTop l
[PROOFSTEP]
have hdf : ∀ x ∈ Ioi a, DifferentiableAt ℝ f x := fun x hx => (hdf x hx).differentiableAt (Ioi_mem_nhds hx)
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf✝ : DifferentiableOn ℝ f (Ioi a)
hg' : ∀ (x : ℝ), x ∈ Ioi a → deriv g x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) atTop l
hdf : ∀ (x : ℝ), x ∈ Ioi a → DifferentiableAt ℝ f x
⊢ Tendsto (fun x => f x / g x) atTop l
[PROOFSTEP]
have hdg : ∀ x ∈ Ioi a, DifferentiableAt ℝ g x := fun x hx =>
  by_contradiction fun h => hg' x hx (deriv_zero_of_not_differentiableAt h)
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf✝ : DifferentiableOn ℝ f (Ioi a)
hg' : ∀ (x : ℝ), x ∈ Ioi a → deriv g x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) atTop l
hdf : ∀ (x : ℝ), x ∈ Ioi a → DifferentiableAt ℝ f x
hdg : ∀ (x : ℝ), x ∈ Ioi a → DifferentiableAt ℝ g x
⊢ Tendsto (fun x => f x / g x) atTop l
[PROOFSTEP]
exact
  HasDerivAt.lhopital_zero_atTop_on_Ioi (fun x hx => (hdf x hx).hasDerivAt) (fun x hx => (hdg x hx).hasDerivAt) hg'
    hftop hgtop hdiv
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : DifferentiableOn ℝ f (Iio a)
hg' : ∀ (x : ℝ), x ∈ Iio a → deriv g x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) atBot l
⊢ Tendsto (fun x => f x / g x) atBot l
[PROOFSTEP]
have hdf : ∀ x ∈ Iio a, DifferentiableAt ℝ f x := fun x hx => (hdf x hx).differentiableAt (Iio_mem_nhds hx)
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf✝ : DifferentiableOn ℝ f (Iio a)
hg' : ∀ (x : ℝ), x ∈ Iio a → deriv g x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) atBot l
hdf : ∀ (x : ℝ), x ∈ Iio a → DifferentiableAt ℝ f x
⊢ Tendsto (fun x => f x / g x) atBot l
[PROOFSTEP]
have hdg : ∀ x ∈ Iio a, DifferentiableAt ℝ g x := fun x hx =>
  by_contradiction fun h => hg' x hx (deriv_zero_of_not_differentiableAt h)
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf✝ : DifferentiableOn ℝ f (Iio a)
hg' : ∀ (x : ℝ), x ∈ Iio a → deriv g x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) atBot l
hdf : ∀ (x : ℝ), x ∈ Iio a → DifferentiableAt ℝ f x
hdg : ∀ (x : ℝ), x ∈ Iio a → DifferentiableAt ℝ g x
⊢ Tendsto (fun x => f x / g x) atBot l
[PROOFSTEP]
exact
  HasDerivAt.lhopital_zero_atBot_on_Iio (fun x hx => (hdf x hx).hasDerivAt) (fun x hx => (hdg x hx).hasDerivAt) hg'
    hfbot hgbot hdiv
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝[Ioi a] a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝[Ioi a] a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝[Ioi a] a, g' x ≠ 0
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
rw [eventually_iff_exists_mem] at *
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∃ v, v ∈ 𝓝[Ioi a] a ∧ ∀ (y : ℝ), y ∈ v → HasDerivAt f (f' y) y
hgg' : ∃ v, v ∈ 𝓝[Ioi a] a ∧ ∀ (y : ℝ), y ∈ v → HasDerivAt g (g' y) y
hg' : ∃ v, v ∈ 𝓝[Ioi a] a ∧ ∀ (y : ℝ), y ∈ v → g' y ≠ 0
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
rcases hff' with ⟨s₁, hs₁, hff'⟩
[GOAL]
case intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hgg' : ∃ v, v ∈ 𝓝[Ioi a] a ∧ ∀ (y : ℝ), y ∈ v → HasDerivAt g (g' y) y
hg' : ∃ v, v ∈ 𝓝[Ioi a] a ∧ ∀ (y : ℝ), y ∈ v → g' y ≠ 0
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Ioi a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
rcases hgg' with ⟨s₂, hs₂, hgg'⟩
[GOAL]
case intro.intro.intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hg' : ∃ v, v ∈ 𝓝[Ioi a] a ∧ ∀ (y : ℝ), y ∈ v → g' y ≠ 0
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Ioi a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Ioi a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
rcases hg' with ⟨s₃, hs₃, hg'⟩
[GOAL]
case intro.intro.intro.intro.intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Ioi a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Ioi a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Ioi a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
let s := s₁ ∩ s₂ ∩ s₃
[GOAL]
case intro.intro.intro.intro.intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Ioi a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Ioi a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Ioi a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
have hs : s ∈ 𝓝[>] a := inter_mem (inter_mem hs₁ hs₂) hs₃
[GOAL]
case intro.intro.intro.intro.intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Ioi a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Ioi a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Ioi a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
hs : s ∈ 𝓝[Ioi a] a
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
rw [mem_nhdsWithin_Ioi_iff_exists_Ioo_subset] at hs 
[GOAL]
case intro.intro.intro.intro.intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Ioi a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Ioi a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Ioi a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
hs : ∃ u, u ∈ Ioi a ∧ Ioo a u ⊆ s
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
rcases hs with ⟨u, hau, hu⟩
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Ioi a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Ioi a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Ioi a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
u : ℝ
hau : u ∈ Ioi a
hu : Ioo a u ⊆ s
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
refine' lhopital_zero_right_on_Ioo hau _ _ _ hfa hga hdiv
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Ioi a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Ioi a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Ioi a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
u : ℝ
hau : u ∈ Ioi a
hu : Ioo a u ⊆ s
⊢ ∀ (x : ℝ), x ∈ Ioo a u → HasDerivAt (fun x => f x) (f' x) x
[PROOFSTEP]
intro x hx
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Ioi a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Ioi a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Ioi a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
u : ℝ
hau : u ∈ Ioi a
hu : Ioo a u ⊆ s
⊢ ∀ (x : ℝ), x ∈ Ioo a u → HasDerivAt (fun x => g x) (g' x) x
[PROOFSTEP]
intro x hx
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_3
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Ioi a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Ioi a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Ioi a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
u : ℝ
hau : u ∈ Ioi a
hu : Ioo a u ⊆ s
⊢ ∀ (x : ℝ), x ∈ Ioo a u → g' x ≠ 0
[PROOFSTEP]
intro x hx
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Ioi a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Ioi a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Ioi a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
u : ℝ
hau : u ∈ Ioi a
hu : Ioo a u ⊆ s
x : ℝ
hx : x ∈ Ioo a u
⊢ HasDerivAt (fun x => f x) (f' x) x
[PROOFSTEP]
apply_assumption
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Ioi a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Ioi a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Ioi a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
u : ℝ
hau : u ∈ Ioi a
hu : Ioo a u ⊆ s
x : ℝ
hx : x ∈ Ioo a u
⊢ HasDerivAt (fun x => g x) (g' x) x
[PROOFSTEP]
apply_assumption
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_3
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Ioi a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Ioi a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Ioi a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
u : ℝ
hau : u ∈ Ioi a
hu : Ioo a u ⊆ s
x : ℝ
hx : x ∈ Ioo a u
⊢ g' x ≠ 0
[PROOFSTEP]
apply_assumption
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_1.a
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Ioi a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Ioi a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Ioi a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
u : ℝ
hau : u ∈ Ioi a
hu : Ioo a u ⊆ s
x : ℝ
hx : x ∈ Ioo a u
⊢ x ∈ s₁
[PROOFSTEP]
first
| exact (hu hx).1.1
| exact (hu hx).1.2
| exact (hu hx).2
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_1.a
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Ioi a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Ioi a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Ioi a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
u : ℝ
hau : u ∈ Ioi a
hu : Ioo a u ⊆ s
x : ℝ
hx : x ∈ Ioo a u
⊢ x ∈ s₁
[PROOFSTEP]
exact (hu hx).1.1
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_2.a
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Ioi a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Ioi a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Ioi a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
u : ℝ
hau : u ∈ Ioi a
hu : Ioo a u ⊆ s
x : ℝ
hx : x ∈ Ioo a u
⊢ x ∈ s₂
[PROOFSTEP]
first
| exact (hu hx).1.1
| exact (hu hx).1.2
| exact (hu hx).2
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_2.a
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Ioi a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Ioi a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Ioi a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
u : ℝ
hau : u ∈ Ioi a
hu : Ioo a u ⊆ s
x : ℝ
hx : x ∈ Ioo a u
⊢ x ∈ s₂
[PROOFSTEP]
exact (hu hx).1.1
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_2.a
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Ioi a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Ioi a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Ioi a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
u : ℝ
hau : u ∈ Ioi a
hu : Ioo a u ⊆ s
x : ℝ
hx : x ∈ Ioo a u
⊢ x ∈ s₂
[PROOFSTEP]
exact (hu hx).1.2
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_3.a
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Ioi a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Ioi a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Ioi a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
u : ℝ
hau : u ∈ Ioi a
hu : Ioo a u ⊆ s
x : ℝ
hx : x ∈ Ioo a u
⊢ x ∈ s₃
[PROOFSTEP]
first
| exact (hu hx).1.1
| exact (hu hx).1.2
| exact (hu hx).2
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_3.a
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Ioi a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Ioi a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Ioi a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
u : ℝ
hau : u ∈ Ioi a
hu : Ioo a u ⊆ s
x : ℝ
hx : x ∈ Ioo a u
⊢ x ∈ s₃
[PROOFSTEP]
exact (hu hx).1.1
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_3.a
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Ioi a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Ioi a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Ioi a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
u : ℝ
hau : u ∈ Ioi a
hu : Ioo a u ⊆ s
x : ℝ
hx : x ∈ Ioo a u
⊢ x ∈ s₃
[PROOFSTEP]
exact (hu hx).1.2
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_3.a
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Ioi a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Ioi a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Ioi a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
u : ℝ
hau : u ∈ Ioi a
hu : Ioo a u ⊆ s
x : ℝ
hx : x ∈ Ioo a u
⊢ x ∈ s₃
[PROOFSTEP]
exact (hu hx).2
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝[Iio a] a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝[Iio a] a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝[Iio a] a, g' x ≠ 0
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio a] a) l
[PROOFSTEP]
rw [eventually_iff_exists_mem] at *
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∃ v, v ∈ 𝓝[Iio a] a ∧ ∀ (y : ℝ), y ∈ v → HasDerivAt f (f' y) y
hgg' : ∃ v, v ∈ 𝓝[Iio a] a ∧ ∀ (y : ℝ), y ∈ v → HasDerivAt g (g' y) y
hg' : ∃ v, v ∈ 𝓝[Iio a] a ∧ ∀ (y : ℝ), y ∈ v → g' y ≠ 0
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio a] a) l
[PROOFSTEP]
rcases hff' with ⟨s₁, hs₁, hff'⟩
[GOAL]
case intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hgg' : ∃ v, v ∈ 𝓝[Iio a] a ∧ ∀ (y : ℝ), y ∈ v → HasDerivAt g (g' y) y
hg' : ∃ v, v ∈ 𝓝[Iio a] a ∧ ∀ (y : ℝ), y ∈ v → g' y ≠ 0
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Iio a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio a] a) l
[PROOFSTEP]
rcases hgg' with ⟨s₂, hs₂, hgg'⟩
[GOAL]
case intro.intro.intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hg' : ∃ v, v ∈ 𝓝[Iio a] a ∧ ∀ (y : ℝ), y ∈ v → g' y ≠ 0
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Iio a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Iio a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio a] a) l
[PROOFSTEP]
rcases hg' with ⟨s₃, hs₃, hg'⟩
[GOAL]
case intro.intro.intro.intro.intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Iio a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Iio a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Iio a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio a] a) l
[PROOFSTEP]
let s := s₁ ∩ s₂ ∩ s₃
[GOAL]
case intro.intro.intro.intro.intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Iio a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Iio a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Iio a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio a] a) l
[PROOFSTEP]
have hs : s ∈ 𝓝[<] a := inter_mem (inter_mem hs₁ hs₂) hs₃
[GOAL]
case intro.intro.intro.intro.intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Iio a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Iio a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Iio a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
hs : s ∈ 𝓝[Iio a] a
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio a] a) l
[PROOFSTEP]
rw [mem_nhdsWithin_Iio_iff_exists_Ioo_subset] at hs 
[GOAL]
case intro.intro.intro.intro.intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Iio a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Iio a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Iio a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
hs : ∃ l, l ∈ Iio a ∧ Ioo l a ⊆ s
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio a] a) l
[PROOFSTEP]
rcases hs with ⟨l, hal, hl⟩
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Iio a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Iio a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Iio a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hal : l ∈ Iio a
hl : Ioo l a ⊆ s
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio a] a) l✝
[PROOFSTEP]
refine' lhopital_zero_left_on_Ioo hal _ _ _ hfa hga hdiv
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Iio a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Iio a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Iio a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hal : l ∈ Iio a
hl : Ioo l a ⊆ s
⊢ ∀ (x : ℝ), x ∈ Ioo l a → HasDerivAt (fun x => f x) (f' x) x
[PROOFSTEP]
intro x hx
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Iio a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Iio a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Iio a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hal : l ∈ Iio a
hl : Ioo l a ⊆ s
⊢ ∀ (x : ℝ), x ∈ Ioo l a → HasDerivAt (fun x => g x) (g' x) x
[PROOFSTEP]
intro x hx
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_3
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Iio a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Iio a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Iio a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hal : l ∈ Iio a
hl : Ioo l a ⊆ s
⊢ ∀ (x : ℝ), x ∈ Ioo l a → g' x ≠ 0
[PROOFSTEP]
intro x hx
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Iio a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Iio a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Iio a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hal : l ∈ Iio a
hl : Ioo l a ⊆ s
x : ℝ
hx : x ∈ Ioo l a
⊢ HasDerivAt (fun x => f x) (f' x) x
[PROOFSTEP]
apply_assumption
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Iio a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Iio a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Iio a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hal : l ∈ Iio a
hl : Ioo l a ⊆ s
x : ℝ
hx : x ∈ Ioo l a
⊢ HasDerivAt (fun x => g x) (g' x) x
[PROOFSTEP]
apply_assumption
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_3
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Iio a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Iio a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Iio a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hal : l ∈ Iio a
hl : Ioo l a ⊆ s
x : ℝ
hx : x ∈ Ioo l a
⊢ g' x ≠ 0
[PROOFSTEP]
apply_assumption
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_1.a
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Iio a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Iio a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Iio a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hal : l ∈ Iio a
hl : Ioo l a ⊆ s
x : ℝ
hx : x ∈ Ioo l a
⊢ x ∈ s₁
[PROOFSTEP]
first
| exact (hl hx).1.1
| exact (hl hx).1.2
| exact (hl hx).2
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_1.a
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Iio a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Iio a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Iio a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hal : l ∈ Iio a
hl : Ioo l a ⊆ s
x : ℝ
hx : x ∈ Ioo l a
⊢ x ∈ s₁
[PROOFSTEP]
exact (hl hx).1.1
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_2.a
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Iio a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Iio a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Iio a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hal : l ∈ Iio a
hl : Ioo l a ⊆ s
x : ℝ
hx : x ∈ Ioo l a
⊢ x ∈ s₂
[PROOFSTEP]
first
| exact (hl hx).1.1
| exact (hl hx).1.2
| exact (hl hx).2
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_2.a
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Iio a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Iio a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Iio a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hal : l ∈ Iio a
hl : Ioo l a ⊆ s
x : ℝ
hx : x ∈ Ioo l a
⊢ x ∈ s₂
[PROOFSTEP]
exact (hl hx).1.1
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_2.a
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Iio a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Iio a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Iio a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hal : l ∈ Iio a
hl : Ioo l a ⊆ s
x : ℝ
hx : x ∈ Ioo l a
⊢ x ∈ s₂
[PROOFSTEP]
exact (hl hx).1.2
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_3.a
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Iio a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Iio a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Iio a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hal : l ∈ Iio a
hl : Ioo l a ⊆ s
x : ℝ
hx : x ∈ Ioo l a
⊢ x ∈ s₃
[PROOFSTEP]
first
| exact (hl hx).1.1
| exact (hl hx).1.2
| exact (hl hx).2
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_3.a
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Iio a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Iio a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Iio a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hal : l ∈ Iio a
hl : Ioo l a ⊆ s
x : ℝ
hx : x ∈ Ioo l a
⊢ x ∈ s₃
[PROOFSTEP]
exact (hl hx).1.1
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_3.a
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Iio a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Iio a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Iio a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hal : l ∈ Iio a
hl : Ioo l a ⊆ s
x : ℝ
hx : x ∈ Ioo l a
⊢ x ∈ s₃
[PROOFSTEP]
exact (hl hx).1.2
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_3.a
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ 𝓝[Iio a] a
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ 𝓝[Iio a] a
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ 𝓝[Iio a] a
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hal : l ∈ Iio a
hl : Ioo l a ⊆ s
x : ℝ
hx : x ∈ Ioo l a
⊢ x ∈ s₃
[PROOFSTEP]
exact (hl hx).2
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝[{a}ᶜ] a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝[{a}ᶜ] a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝[{a}ᶜ] a, g' x ≠ 0
hfa : Tendsto f (𝓝[{a}ᶜ] a) (𝓝 0)
hga : Tendsto g (𝓝[{a}ᶜ] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[{a}ᶜ] a) l
⊢ Tendsto (fun x => f x / g x) (𝓝[{a}ᶜ] a) l
[PROOFSTEP]
simp only [← Iio_union_Ioi, nhdsWithin_union, tendsto_sup, eventually_sup] at *
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : (∀ᶠ (x : ℝ) in 𝓝[Iio a] a, HasDerivAt f (f' x) x) ∧ ∀ᶠ (x : ℝ) in 𝓝[Ioi a] a, HasDerivAt f (f' x) x
hgg' : (∀ᶠ (x : ℝ) in 𝓝[Iio a] a, HasDerivAt g (g' x) x) ∧ ∀ᶠ (x : ℝ) in 𝓝[Ioi a] a, HasDerivAt g (g' x) x
hg' : (∀ᶠ (x : ℝ) in 𝓝[Iio a] a, g' x ≠ 0) ∧ ∀ᶠ (x : ℝ) in 𝓝[Ioi a] a, g' x ≠ 0
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0) ∧ Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0) ∧ Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l ∧ Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio a] a) l ∧ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
exact
  ⟨lhopital_zero_nhds_left hff'.1 hgg'.1 hg'.1 hfa.1 hga.1 hdiv.1,
    lhopital_zero_nhds_right hff'.2 hgg'.2 hg'.2 hfa.2 hga.2 hdiv.2⟩
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, g' x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝 a) l
⊢ Tendsto (fun x => f x / g x) (𝓝[{a}ᶜ] a) l
[PROOFSTEP]
apply @lhopital_zero_nhds' _ _ _ f' _ g'
[GOAL]
case hff'
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, g' x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝 a) l
⊢ ∀ᶠ (x : ℝ) in 𝓝[{a}ᶜ] a, HasDerivAt (fun x => f x) (f' x) x
[PROOFSTEP]
first
| apply eventually_nhdsWithin_of_eventually_nhds
| apply tendsto_nhdsWithin_of_tendsto_nhds
[GOAL]
case hff'
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, g' x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝 a) l
⊢ ∀ᶠ (x : ℝ) in 𝓝[{a}ᶜ] a, HasDerivAt (fun x => f x) (f' x) x
[PROOFSTEP]
apply eventually_nhdsWithin_of_eventually_nhds
[GOAL]
case hgg'
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, g' x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝 a) l
⊢ ∀ᶠ (x : ℝ) in 𝓝[{a}ᶜ] a, HasDerivAt (fun x => g x) (g' x) x
[PROOFSTEP]
first
| apply eventually_nhdsWithin_of_eventually_nhds
| apply tendsto_nhdsWithin_of_tendsto_nhds
[GOAL]
case hgg'
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, g' x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝 a) l
⊢ ∀ᶠ (x : ℝ) in 𝓝[{a}ᶜ] a, HasDerivAt (fun x => g x) (g' x) x
[PROOFSTEP]
apply eventually_nhdsWithin_of_eventually_nhds
[GOAL]
case hg'
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, g' x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝 a) l
⊢ ∀ᶠ (x : ℝ) in 𝓝[{a}ᶜ] a, g' x ≠ 0
[PROOFSTEP]
first
| apply eventually_nhdsWithin_of_eventually_nhds
| apply tendsto_nhdsWithin_of_tendsto_nhds
[GOAL]
case hg'
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, g' x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝 a) l
⊢ ∀ᶠ (x : ℝ) in 𝓝[{a}ᶜ] a, g' x ≠ 0
[PROOFSTEP]
apply eventually_nhdsWithin_of_eventually_nhds
[GOAL]
case hfa
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, g' x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝 a) l
⊢ Tendsto (fun x => f x) (𝓝[{a}ᶜ] a) (𝓝 0)
[PROOFSTEP]
first
| apply eventually_nhdsWithin_of_eventually_nhds
| apply tendsto_nhdsWithin_of_tendsto_nhds
[GOAL]
case hfa
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, g' x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝 a) l
⊢ Tendsto (fun x => f x) (𝓝[{a}ᶜ] a) (𝓝 0)
[PROOFSTEP]
apply eventually_nhdsWithin_of_eventually_nhds
[GOAL]
case hfa
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, g' x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝 a) l
⊢ Tendsto (fun x => f x) (𝓝[{a}ᶜ] a) (𝓝 0)
[PROOFSTEP]
apply tendsto_nhdsWithin_of_tendsto_nhds
[GOAL]
case hga
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, g' x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝 a) l
⊢ Tendsto (fun x => g x) (𝓝[{a}ᶜ] a) (𝓝 0)
[PROOFSTEP]
first
| apply eventually_nhdsWithin_of_eventually_nhds
| apply tendsto_nhdsWithin_of_tendsto_nhds
[GOAL]
case hga
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, g' x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝 a) l
⊢ Tendsto (fun x => g x) (𝓝[{a}ᶜ] a) (𝓝 0)
[PROOFSTEP]
apply eventually_nhdsWithin_of_eventually_nhds
[GOAL]
case hga
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, g' x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝 a) l
⊢ Tendsto (fun x => g x) (𝓝[{a}ᶜ] a) (𝓝 0)
[PROOFSTEP]
apply tendsto_nhdsWithin_of_tendsto_nhds
[GOAL]
case hdiv
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, g' x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝 a) l
⊢ Tendsto (fun x => f' x / g' x) (𝓝[{a}ᶜ] a) l
[PROOFSTEP]
first
| apply eventually_nhdsWithin_of_eventually_nhds
| apply tendsto_nhdsWithin_of_tendsto_nhds
[GOAL]
case hdiv
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, g' x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝 a) l
⊢ Tendsto (fun x => f' x / g' x) (𝓝[{a}ᶜ] a) l
[PROOFSTEP]
apply eventually_nhdsWithin_of_eventually_nhds
[GOAL]
case hdiv
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, g' x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝 a) l
⊢ Tendsto (fun x => f' x / g' x) (𝓝[{a}ᶜ] a) l
[PROOFSTEP]
apply tendsto_nhdsWithin_of_tendsto_nhds
[GOAL]
case hff'.h
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, g' x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝 a) l
⊢ ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt (fun x => f x) (f' x) x
[PROOFSTEP]
assumption
[GOAL]
case hgg'.h
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, g' x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝 a) l
⊢ ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt (fun x => g x) (g' x) x
[PROOFSTEP]
assumption
[GOAL]
case hg'.h
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, g' x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝 a) l
⊢ ∀ᶠ (x : ℝ) in 𝓝 a, g' x ≠ 0
[PROOFSTEP]
assumption
[GOAL]
case hfa.h
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, g' x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝 a) l
⊢ Tendsto (fun x => f x) (𝓝 a) (𝓝 0)
[PROOFSTEP]
assumption
[GOAL]
case hga.h
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, g' x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝 a) l
⊢ Tendsto (fun x => g x) (𝓝 a) (𝓝 0)
[PROOFSTEP]
assumption
[GOAL]
case hdiv.h
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝 a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, g' x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝 a) l
⊢ Tendsto (fun x => f' x / g' x) (𝓝 a) l
[PROOFSTEP]
assumption
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in atTop, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in atTop, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in atTop, g' x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
⊢ Tendsto (fun x => f x / g x) atTop l
[PROOFSTEP]
rw [eventually_iff_exists_mem] at *
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∃ v, v ∈ atTop ∧ ∀ (y : ℝ), y ∈ v → HasDerivAt f (f' y) y
hgg' : ∃ v, v ∈ atTop ∧ ∀ (y : ℝ), y ∈ v → HasDerivAt g (g' y) y
hg' : ∃ v, v ∈ atTop ∧ ∀ (y : ℝ), y ∈ v → g' y ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
⊢ Tendsto (fun x => f x / g x) atTop l
[PROOFSTEP]
rcases hff' with ⟨s₁, hs₁, hff'⟩
[GOAL]
case intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hgg' : ∃ v, v ∈ atTop ∧ ∀ (y : ℝ), y ∈ v → HasDerivAt g (g' y) y
hg' : ∃ v, v ∈ atTop ∧ ∀ (y : ℝ), y ∈ v → g' y ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
s₁ : Set ℝ
hs₁ : s₁ ∈ atTop
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
⊢ Tendsto (fun x => f x / g x) atTop l
[PROOFSTEP]
rcases hgg' with ⟨s₂, hs₂, hgg'⟩
[GOAL]
case intro.intro.intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hg' : ∃ v, v ∈ atTop ∧ ∀ (y : ℝ), y ∈ v → g' y ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
s₁ : Set ℝ
hs₁ : s₁ ∈ atTop
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atTop
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
⊢ Tendsto (fun x => f x / g x) atTop l
[PROOFSTEP]
rcases hg' with ⟨s₃, hs₃, hg'⟩
[GOAL]
case intro.intro.intro.intro.intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
s₁ : Set ℝ
hs₁ : s₁ ∈ atTop
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atTop
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atTop
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
⊢ Tendsto (fun x => f x / g x) atTop l
[PROOFSTEP]
let s := s₁ ∩ s₂ ∩ s₃
[GOAL]
case intro.intro.intro.intro.intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
s₁ : Set ℝ
hs₁ : s₁ ∈ atTop
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atTop
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atTop
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
⊢ Tendsto (fun x => f x / g x) atTop l
[PROOFSTEP]
have hs : s ∈ atTop := inter_mem (inter_mem hs₁ hs₂) hs₃
[GOAL]
case intro.intro.intro.intro.intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
s₁ : Set ℝ
hs₁ : s₁ ∈ atTop
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atTop
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atTop
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
hs : s ∈ atTop
⊢ Tendsto (fun x => f x / g x) atTop l
[PROOFSTEP]
rw [mem_atTop_sets] at hs 
[GOAL]
case intro.intro.intro.intro.intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l
s₁ : Set ℝ
hs₁ : s₁ ∈ atTop
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atTop
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atTop
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
hs : ∃ a, ∀ (b : ℝ), b ≥ a → b ∈ s
⊢ Tendsto (fun x => f x / g x) atTop l
[PROOFSTEP]
rcases hs with ⟨l, hl⟩
[GOAL]
case intro.intro.intro.intro.intro.intro.intro
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ atTop
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atTop
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atTop
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hl : ∀ (b : ℝ), b ≥ l → b ∈ s
⊢ Tendsto (fun x => f x / g x) atTop l✝
[PROOFSTEP]
have hl' : Ioi l ⊆ s := fun x hx => hl x (le_of_lt hx)
[GOAL]
case intro.intro.intro.intro.intro.intro.intro
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ atTop
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atTop
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atTop
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hl : ∀ (b : ℝ), b ≥ l → b ∈ s
hl' : Ioi l ⊆ s
⊢ Tendsto (fun x => f x / g x) atTop l✝
[PROOFSTEP]
refine' lhopital_zero_atTop_on_Ioi _ _ (fun x hx => hg' x <| (hl' hx).2) hftop hgtop hdiv
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.refine'_1
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ atTop
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atTop
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atTop
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hl : ∀ (b : ℝ), b ≥ l → b ∈ s
hl' : Ioi l ⊆ s
⊢ ∀ (x : ℝ), x ∈ Ioi l → HasDerivAt (fun x => f x) (f' x) x
[PROOFSTEP]
intro x hx
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.refine'_2
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ atTop
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atTop
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atTop
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hl : ∀ (b : ℝ), b ≥ l → b ∈ s
hl' : Ioi l ⊆ s
⊢ ∀ (x : ℝ), x ∈ Ioi l → HasDerivAt (fun x => g x) (g' x) x
[PROOFSTEP]
intro x hx
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.refine'_1
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ atTop
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atTop
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atTop
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hl : ∀ (b : ℝ), b ≥ l → b ∈ s
hl' : Ioi l ⊆ s
x : ℝ
hx : x ∈ Ioi l
⊢ HasDerivAt (fun x => f x) (f' x) x
[PROOFSTEP]
apply_assumption
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.refine'_2
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ atTop
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atTop
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atTop
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hl : ∀ (b : ℝ), b ≥ l → b ∈ s
hl' : Ioi l ⊆ s
x : ℝ
hx : x ∈ Ioi l
⊢ HasDerivAt (fun x => g x) (g' x) x
[PROOFSTEP]
apply_assumption
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.refine'_1.a
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ atTop
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atTop
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atTop
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hl : ∀ (b : ℝ), b ≥ l → b ∈ s
hl' : Ioi l ⊆ s
x : ℝ
hx : x ∈ Ioi l
⊢ x ∈ s₁
[PROOFSTEP]
first
| exact (hl' hx).1.1
| exact (hl' hx).1.2
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.refine'_1.a
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ atTop
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atTop
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atTop
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hl : ∀ (b : ℝ), b ≥ l → b ∈ s
hl' : Ioi l ⊆ s
x : ℝ
hx : x ∈ Ioi l
⊢ x ∈ s₁
[PROOFSTEP]
exact (hl' hx).1.1
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.refine'_2.a
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ atTop
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atTop
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atTop
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hl : ∀ (b : ℝ), b ≥ l → b ∈ s
hl' : Ioi l ⊆ s
x : ℝ
hx : x ∈ Ioi l
⊢ x ∈ s₂
[PROOFSTEP]
first
| exact (hl' hx).1.1
| exact (hl' hx).1.2
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.refine'_2.a
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ atTop
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atTop
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atTop
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hl : ∀ (b : ℝ), b ≥ l → b ∈ s
hl' : Ioi l ⊆ s
x : ℝ
hx : x ∈ Ioi l
⊢ x ∈ s₂
[PROOFSTEP]
exact (hl' hx).1.1
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.refine'_2.a
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atTop l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ atTop
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atTop
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atTop
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hl : ∀ (b : ℝ), b ≥ l → b ∈ s
hl' : Ioi l ⊆ s
x : ℝ
hx : x ∈ Ioi l
⊢ x ∈ s₂
[PROOFSTEP]
exact (hl' hx).1.2
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in atBot, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in atBot, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in atBot, g' x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l
⊢ Tendsto (fun x => f x / g x) atBot l
[PROOFSTEP]
rw [eventually_iff_exists_mem] at *
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∃ v, v ∈ atBot ∧ ∀ (y : ℝ), y ∈ v → HasDerivAt f (f' y) y
hgg' : ∃ v, v ∈ atBot ∧ ∀ (y : ℝ), y ∈ v → HasDerivAt g (g' y) y
hg' : ∃ v, v ∈ atBot ∧ ∀ (y : ℝ), y ∈ v → g' y ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l
⊢ Tendsto (fun x => f x / g x) atBot l
[PROOFSTEP]
rcases hff' with ⟨s₁, hs₁, hff'⟩
[GOAL]
case intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hgg' : ∃ v, v ∈ atBot ∧ ∀ (y : ℝ), y ∈ v → HasDerivAt g (g' y) y
hg' : ∃ v, v ∈ atBot ∧ ∀ (y : ℝ), y ∈ v → g' y ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l
s₁ : Set ℝ
hs₁ : s₁ ∈ atBot
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
⊢ Tendsto (fun x => f x / g x) atBot l
[PROOFSTEP]
rcases hgg' with ⟨s₂, hs₂, hgg'⟩
[GOAL]
case intro.intro.intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hg' : ∃ v, v ∈ atBot ∧ ∀ (y : ℝ), y ∈ v → g' y ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l
s₁ : Set ℝ
hs₁ : s₁ ∈ atBot
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atBot
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
⊢ Tendsto (fun x => f x / g x) atBot l
[PROOFSTEP]
rcases hg' with ⟨s₃, hs₃, hg'⟩
[GOAL]
case intro.intro.intro.intro.intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l
s₁ : Set ℝ
hs₁ : s₁ ∈ atBot
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atBot
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atBot
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
⊢ Tendsto (fun x => f x / g x) atBot l
[PROOFSTEP]
let s := s₁ ∩ s₂ ∩ s₃
[GOAL]
case intro.intro.intro.intro.intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l
s₁ : Set ℝ
hs₁ : s₁ ∈ atBot
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atBot
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atBot
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
⊢ Tendsto (fun x => f x / g x) atBot l
[PROOFSTEP]
have hs : s ∈ atBot := inter_mem (inter_mem hs₁ hs₂) hs₃
[GOAL]
case intro.intro.intro.intro.intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l
s₁ : Set ℝ
hs₁ : s₁ ∈ atBot
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atBot
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atBot
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
hs : s ∈ atBot
⊢ Tendsto (fun x => f x / g x) atBot l
[PROOFSTEP]
rw [mem_atBot_sets] at hs 
[GOAL]
case intro.intro.intro.intro.intro.intro
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l
s₁ : Set ℝ
hs₁ : s₁ ∈ atBot
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atBot
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atBot
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
hs : ∃ a, ∀ (b : ℝ), b ≤ a → b ∈ s
⊢ Tendsto (fun x => f x / g x) atBot l
[PROOFSTEP]
rcases hs with ⟨l, hl⟩
[GOAL]
case intro.intro.intro.intro.intro.intro.intro
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ atBot
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atBot
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atBot
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hl : ∀ (b : ℝ), b ≤ l → b ∈ s
⊢ Tendsto (fun x => f x / g x) atBot l✝
[PROOFSTEP]
have hl' : Iio l ⊆ s := fun x hx => hl x (le_of_lt hx)
[GOAL]
case intro.intro.intro.intro.intro.intro.intro
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ atBot
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atBot
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atBot
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hl : ∀ (b : ℝ), b ≤ l → b ∈ s
hl' : Iio l ⊆ s
⊢ Tendsto (fun x => f x / g x) atBot l✝
[PROOFSTEP]
refine' lhopital_zero_atBot_on_Iio _ _ (fun x hx => hg' x <| (hl' hx).2) hfbot hgbot hdiv
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.refine'_1
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ atBot
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atBot
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atBot
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hl : ∀ (b : ℝ), b ≤ l → b ∈ s
hl' : Iio l ⊆ s
⊢ ∀ (x : ℝ), x ∈ Iio l → HasDerivAt (fun x => f x) (f' x) x
[PROOFSTEP]
intro x hx
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.refine'_2
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ atBot
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atBot
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atBot
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hl : ∀ (b : ℝ), b ≤ l → b ∈ s
hl' : Iio l ⊆ s
⊢ ∀ (x : ℝ), x ∈ Iio l → HasDerivAt (fun x => g x) (g' x) x
[PROOFSTEP]
intro x hx
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.refine'_1
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ atBot
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atBot
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atBot
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hl : ∀ (b : ℝ), b ≤ l → b ∈ s
hl' : Iio l ⊆ s
x : ℝ
hx : x ∈ Iio l
⊢ HasDerivAt (fun x => f x) (f' x) x
[PROOFSTEP]
apply_assumption
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.refine'_2
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ atBot
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atBot
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atBot
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hl : ∀ (b : ℝ), b ≤ l → b ∈ s
hl' : Iio l ⊆ s
x : ℝ
hx : x ∈ Iio l
⊢ HasDerivAt (fun x => g x) (g' x) x
[PROOFSTEP]
apply_assumption
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.refine'_1.a
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ atBot
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atBot
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atBot
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hl : ∀ (b : ℝ), b ≤ l → b ∈ s
hl' : Iio l ⊆ s
x : ℝ
hx : x ∈ Iio l
⊢ x ∈ s₁
[PROOFSTEP]
first
| exact (hl' hx).1.1
| exact (hl' hx).1.2
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.refine'_1.a
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ atBot
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atBot
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atBot
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hl : ∀ (b : ℝ), b ≤ l → b ∈ s
hl' : Iio l ⊆ s
x : ℝ
hx : x ∈ Iio l
⊢ x ∈ s₁
[PROOFSTEP]
exact (hl' hx).1.1
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.refine'_2.a
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ atBot
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atBot
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atBot
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hl : ∀ (b : ℝ), b ≤ l → b ∈ s
hl' : Iio l ⊆ s
x : ℝ
hx : x ∈ Iio l
⊢ x ∈ s₂
[PROOFSTEP]
first
| exact (hl' hx).1.1
| exact (hl' hx).1.2
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.refine'_2.a
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ atBot
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atBot
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atBot
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hl : ∀ (b : ℝ), b ≤ l → b ∈ s
hl' : Iio l ⊆ s
x : ℝ
hx : x ∈ Iio l
⊢ x ∈ s₂
[PROOFSTEP]
exact (hl' hx).1.1
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.refine'_2.a
a b : ℝ
hab : a < b
l✝ : Filter ℝ
f f' g g' : ℝ → ℝ
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) atBot l✝
s₁ : Set ℝ
hs₁ : s₁ ∈ atBot
hff' : ∀ (y : ℝ), y ∈ s₁ → HasDerivAt f (f' y) y
s₂ : Set ℝ
hs₂ : s₂ ∈ atBot
hgg' : ∀ (y : ℝ), y ∈ s₂ → HasDerivAt g (g' y) y
s₃ : Set ℝ
hs₃ : s₃ ∈ atBot
hg' : ∀ (y : ℝ), y ∈ s₃ → g' y ≠ 0
s : Set ℝ := s₁ ∩ s₂ ∩ s₃
l : ℝ
hl : ∀ (b : ℝ), b ≤ l → b ∈ s
hl' : Iio l ⊆ s
x : ℝ
hx : x ∈ Iio l
⊢ x ∈ s₂
[PROOFSTEP]
exact (hl' hx).1.2
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝[Ioi a] a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝[Ioi a] a, deriv g x ≠ 0
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[Ioi a] a) l
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
have hdg : ∀ᶠ x in 𝓝[>] a, DifferentiableAt ℝ g x :=
  hg'.mp (eventually_of_forall fun _ hg' => by_contradiction fun h => hg' (deriv_zero_of_not_differentiableAt h))
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝[Ioi a] a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝[Ioi a] a, deriv g x ≠ 0
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[Ioi a] a) l
hdg : ∀ᶠ (x : ℝ) in 𝓝[Ioi a] a, DifferentiableAt ℝ g x
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
have hdf' : ∀ᶠ x in 𝓝[>] a, HasDerivAt f (deriv f x) x :=
  hdf.mp (eventually_of_forall fun _ => DifferentiableAt.hasDerivAt)
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝[Ioi a] a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝[Ioi a] a, deriv g x ≠ 0
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[Ioi a] a) l
hdg : ∀ᶠ (x : ℝ) in 𝓝[Ioi a] a, DifferentiableAt ℝ g x
hdf' : ∀ᶠ (x : ℝ) in 𝓝[Ioi a] a, HasDerivAt f (deriv f x) x
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
have hdg' : ∀ᶠ x in 𝓝[>] a, HasDerivAt g (deriv g x) x :=
  hdg.mp (eventually_of_forall fun _ => DifferentiableAt.hasDerivAt)
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝[Ioi a] a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝[Ioi a] a, deriv g x ≠ 0
hfa : Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[Ioi a] a) l
hdg : ∀ᶠ (x : ℝ) in 𝓝[Ioi a] a, DifferentiableAt ℝ g x
hdf' : ∀ᶠ (x : ℝ) in 𝓝[Ioi a] a, HasDerivAt f (deriv f x) x
hdg' : ∀ᶠ (x : ℝ) in 𝓝[Ioi a] a, HasDerivAt g (deriv g x) x
⊢ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
exact HasDerivAt.lhopital_zero_nhds_right hdf' hdg' hg' hfa hga hdiv
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝[Iio a] a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝[Iio a] a, deriv g x ≠ 0
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[Iio a] a) l
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio a] a) l
[PROOFSTEP]
have hdg : ∀ᶠ x in 𝓝[<] a, DifferentiableAt ℝ g x :=
  hg'.mp (eventually_of_forall fun _ hg' => by_contradiction fun h => hg' (deriv_zero_of_not_differentiableAt h))
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝[Iio a] a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝[Iio a] a, deriv g x ≠ 0
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[Iio a] a) l
hdg : ∀ᶠ (x : ℝ) in 𝓝[Iio a] a, DifferentiableAt ℝ g x
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio a] a) l
[PROOFSTEP]
have hdf' : ∀ᶠ x in 𝓝[<] a, HasDerivAt f (deriv f x) x :=
  hdf.mp (eventually_of_forall fun _ => DifferentiableAt.hasDerivAt)
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝[Iio a] a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝[Iio a] a, deriv g x ≠ 0
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[Iio a] a) l
hdg : ∀ᶠ (x : ℝ) in 𝓝[Iio a] a, DifferentiableAt ℝ g x
hdf' : ∀ᶠ (x : ℝ) in 𝓝[Iio a] a, HasDerivAt f (deriv f x) x
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio a] a) l
[PROOFSTEP]
have hdg' : ∀ᶠ x in 𝓝[<] a, HasDerivAt g (deriv g x) x :=
  hdg.mp (eventually_of_forall fun _ => DifferentiableAt.hasDerivAt)
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝[Iio a] a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝[Iio a] a, deriv g x ≠ 0
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[Iio a] a) l
hdg : ∀ᶠ (x : ℝ) in 𝓝[Iio a] a, DifferentiableAt ℝ g x
hdf' : ∀ᶠ (x : ℝ) in 𝓝[Iio a] a, HasDerivAt f (deriv f x) x
hdg' : ∀ᶠ (x : ℝ) in 𝓝[Iio a] a, HasDerivAt g (deriv g x) x
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio a] a) l
[PROOFSTEP]
exact HasDerivAt.lhopital_zero_nhds_left hdf' hdg' hg' hfa hga hdiv
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝[{a}ᶜ] a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝[{a}ᶜ] a, deriv g x ≠ 0
hfa : Tendsto f (𝓝[{a}ᶜ] a) (𝓝 0)
hga : Tendsto g (𝓝[{a}ᶜ] a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[{a}ᶜ] a) l
⊢ Tendsto (fun x => f x / g x) (𝓝[{a}ᶜ] a) l
[PROOFSTEP]
simp only [← Iio_union_Ioi, nhdsWithin_union, tendsto_sup, eventually_sup] at *
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : (∀ᶠ (x : ℝ) in 𝓝[Iio a] a, DifferentiableAt ℝ f x) ∧ ∀ᶠ (x : ℝ) in 𝓝[Ioi a] a, DifferentiableAt ℝ f x
hg' : (∀ᶠ (x : ℝ) in 𝓝[Iio a] a, deriv g x ≠ 0) ∧ ∀ᶠ (x : ℝ) in 𝓝[Ioi a] a, deriv g x ≠ 0
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0) ∧ Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0) ∧ Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[Iio a] a) l ∧ Tendsto (fun x => deriv f x / deriv g x) (𝓝[Ioi a] a) l
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio a] a) l ∧ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
[PROOFSTEP]
exact ⟨lhopital_zero_nhds_left hdf.1 hg'.1 hfa.1 hga.1 hdiv.1, lhopital_zero_nhds_right hdf.2 hg'.2 hfa.2 hga.2 hdiv.2⟩
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝 a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, deriv g x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝 a) l
⊢ Tendsto (fun x => f x / g x) (𝓝[{a}ᶜ] a) l
[PROOFSTEP]
apply lhopital_zero_nhds'
[GOAL]
case hdf
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝 a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, deriv g x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝 a) l
⊢ ∀ᶠ (x : ℝ) in 𝓝[{a}ᶜ] a, DifferentiableAt ℝ (fun x => f x) x
[PROOFSTEP]
first
| apply eventually_nhdsWithin_of_eventually_nhds
| apply tendsto_nhdsWithin_of_tendsto_nhds
[GOAL]
case hdf
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝 a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, deriv g x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝 a) l
⊢ ∀ᶠ (x : ℝ) in 𝓝[{a}ᶜ] a, DifferentiableAt ℝ (fun x => f x) x
[PROOFSTEP]
apply eventually_nhdsWithin_of_eventually_nhds
[GOAL]
case hg'
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝 a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, deriv g x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝 a) l
⊢ ∀ᶠ (x : ℝ) in 𝓝[{a}ᶜ] a, deriv (fun x => g x) x ≠ 0
[PROOFSTEP]
first
| apply eventually_nhdsWithin_of_eventually_nhds
| apply tendsto_nhdsWithin_of_tendsto_nhds
[GOAL]
case hg'
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝 a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, deriv g x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝 a) l
⊢ ∀ᶠ (x : ℝ) in 𝓝[{a}ᶜ] a, deriv (fun x => g x) x ≠ 0
[PROOFSTEP]
apply eventually_nhdsWithin_of_eventually_nhds
[GOAL]
case hfa
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝 a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, deriv g x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝 a) l
⊢ Tendsto (fun x => f x) (𝓝[{a}ᶜ] a) (𝓝 0)
[PROOFSTEP]
first
| apply eventually_nhdsWithin_of_eventually_nhds
| apply tendsto_nhdsWithin_of_tendsto_nhds
[GOAL]
case hfa
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝 a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, deriv g x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝 a) l
⊢ Tendsto (fun x => f x) (𝓝[{a}ᶜ] a) (𝓝 0)
[PROOFSTEP]
apply eventually_nhdsWithin_of_eventually_nhds
[GOAL]
case hfa
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝 a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, deriv g x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝 a) l
⊢ Tendsto (fun x => f x) (𝓝[{a}ᶜ] a) (𝓝 0)
[PROOFSTEP]
apply tendsto_nhdsWithin_of_tendsto_nhds
[GOAL]
case hga
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝 a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, deriv g x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝 a) l
⊢ Tendsto (fun x => g x) (𝓝[{a}ᶜ] a) (𝓝 0)
[PROOFSTEP]
first
| apply eventually_nhdsWithin_of_eventually_nhds
| apply tendsto_nhdsWithin_of_tendsto_nhds
[GOAL]
case hga
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝 a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, deriv g x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝 a) l
⊢ Tendsto (fun x => g x) (𝓝[{a}ᶜ] a) (𝓝 0)
[PROOFSTEP]
apply eventually_nhdsWithin_of_eventually_nhds
[GOAL]
case hga
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝 a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, deriv g x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝 a) l
⊢ Tendsto (fun x => g x) (𝓝[{a}ᶜ] a) (𝓝 0)
[PROOFSTEP]
apply tendsto_nhdsWithin_of_tendsto_nhds
[GOAL]
case hdiv
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝 a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, deriv g x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝 a) l
⊢ Tendsto (fun x => deriv (fun x => f x) x / deriv (fun x => g x) x) (𝓝[{a}ᶜ] a) l
[PROOFSTEP]
first
| apply eventually_nhdsWithin_of_eventually_nhds
| apply tendsto_nhdsWithin_of_tendsto_nhds
[GOAL]
case hdiv
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝 a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, deriv g x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝 a) l
⊢ Tendsto (fun x => deriv (fun x => f x) x / deriv (fun x => g x) x) (𝓝[{a}ᶜ] a) l
[PROOFSTEP]
apply eventually_nhdsWithin_of_eventually_nhds
[GOAL]
case hdiv
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝 a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, deriv g x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝 a) l
⊢ Tendsto (fun x => deriv (fun x => f x) x / deriv (fun x => g x) x) (𝓝[{a}ᶜ] a) l
[PROOFSTEP]
apply tendsto_nhdsWithin_of_tendsto_nhds
[GOAL]
case hdf.h
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝 a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, deriv g x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝 a) l
⊢ ∀ᶠ (x : ℝ) in 𝓝 a, DifferentiableAt ℝ (fun x => f x) x
[PROOFSTEP]
assumption
[GOAL]
case hg'.h
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝 a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, deriv g x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝 a) l
⊢ ∀ᶠ (x : ℝ) in 𝓝 a, deriv (fun x => g x) x ≠ 0
[PROOFSTEP]
assumption
[GOAL]
case hfa.h
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝 a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, deriv g x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝 a) l
⊢ Tendsto (fun x => f x) (𝓝 a) (𝓝 0)
[PROOFSTEP]
assumption
[GOAL]
case hga.h
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝 a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, deriv g x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝 a) l
⊢ Tendsto (fun x => g x) (𝓝 a) (𝓝 0)
[PROOFSTEP]
assumption
[GOAL]
case hdiv.h
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝 a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, deriv g x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝 a) l
⊢ Tendsto (fun x => deriv (fun x => f x) x / deriv (fun x => g x) x) (𝓝 a) l
[PROOFSTEP]
assumption
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in atTop, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in atTop, deriv g x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) atTop l
⊢ Tendsto (fun x => f x / g x) atTop l
[PROOFSTEP]
have hdg : ∀ᶠ x in atTop, DifferentiableAt ℝ g x :=
  hg'.mp (eventually_of_forall fun _ hg' => by_contradiction fun h => hg' (deriv_zero_of_not_differentiableAt h))
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in atTop, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in atTop, deriv g x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) atTop l
hdg : ∀ᶠ (x : ℝ) in atTop, DifferentiableAt ℝ g x
⊢ Tendsto (fun x => f x / g x) atTop l
[PROOFSTEP]
have hdf' : ∀ᶠ x in atTop, HasDerivAt f (deriv f x) x :=
  hdf.mp (eventually_of_forall fun _ => DifferentiableAt.hasDerivAt)
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in atTop, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in atTop, deriv g x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) atTop l
hdg : ∀ᶠ (x : ℝ) in atTop, DifferentiableAt ℝ g x
hdf' : ∀ᶠ (x : ℝ) in atTop, HasDerivAt f (deriv f x) x
⊢ Tendsto (fun x => f x / g x) atTop l
[PROOFSTEP]
have hdg' : ∀ᶠ x in atTop, HasDerivAt g (deriv g x) x :=
  hdg.mp (eventually_of_forall fun _ => DifferentiableAt.hasDerivAt)
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in atTop, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in atTop, deriv g x ≠ 0
hftop : Tendsto f atTop (𝓝 0)
hgtop : Tendsto g atTop (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) atTop l
hdg : ∀ᶠ (x : ℝ) in atTop, DifferentiableAt ℝ g x
hdf' : ∀ᶠ (x : ℝ) in atTop, HasDerivAt f (deriv f x) x
hdg' : ∀ᶠ (x : ℝ) in atTop, HasDerivAt g (deriv g x) x
⊢ Tendsto (fun x => f x / g x) atTop l
[PROOFSTEP]
exact HasDerivAt.lhopital_zero_atTop hdf' hdg' hg' hftop hgtop hdiv
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in atBot, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in atBot, deriv g x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) atBot l
⊢ Tendsto (fun x => f x / g x) atBot l
[PROOFSTEP]
have hdg : ∀ᶠ x in atBot, DifferentiableAt ℝ g x :=
  hg'.mp (eventually_of_forall fun _ hg' => by_contradiction fun h => hg' (deriv_zero_of_not_differentiableAt h))
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in atBot, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in atBot, deriv g x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) atBot l
hdg : ∀ᶠ (x : ℝ) in atBot, DifferentiableAt ℝ g x
⊢ Tendsto (fun x => f x / g x) atBot l
[PROOFSTEP]
have hdf' : ∀ᶠ x in atBot, HasDerivAt f (deriv f x) x :=
  hdf.mp (eventually_of_forall fun _ => DifferentiableAt.hasDerivAt)
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in atBot, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in atBot, deriv g x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) atBot l
hdg : ∀ᶠ (x : ℝ) in atBot, DifferentiableAt ℝ g x
hdf' : ∀ᶠ (x : ℝ) in atBot, HasDerivAt f (deriv f x) x
⊢ Tendsto (fun x => f x / g x) atBot l
[PROOFSTEP]
have hdg' : ∀ᶠ x in atBot, HasDerivAt g (deriv g x) x :=
  hdg.mp (eventually_of_forall fun _ => DifferentiableAt.hasDerivAt)
[GOAL]
a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in atBot, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in atBot, deriv g x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) atBot l
hdg : ∀ᶠ (x : ℝ) in atBot, DifferentiableAt ℝ g x
hdf' : ∀ᶠ (x : ℝ) in atBot, HasDerivAt f (deriv f x) x
hdg' : ∀ᶠ (x : ℝ) in atBot, HasDerivAt g (deriv g x) x
⊢ Tendsto (fun x => f x / g x) atBot l
[PROOFSTEP]
exact HasDerivAt.lhopital_zero_atBot hdf' hdg' hg' hfbot hgbot hdiv
