Analysis I, Section 10.5: L'Hôpital's rule
I have attempted to make the translation as faithful a paraphrasing as possible of the original text. When there is a choice between a more idiomatic Lean solution and a more faithful translation, I have generally chosen the latter. In particular, there will be places where the Lean code could be "golfed" to be more elegant and idiomatic, but I have consciously avoided doing so.
Main constructions and results of this section:
-
L'Hôpital's rule.
open Chapter9namespace Chapter10Proposition 10.5.1 (L'Hôpital's rule, I) / Exercise 10.5.1
theorem _root_.Filter.Tendsto.of_div {X: Set ℝ} {f g: ℝ → ℝ} {x₀ f'x₀ g'x₀:ℝ}
(hfx₀: f x₀ = 0) (hgx₀: g x₀ = 0) (hg_non: g'x₀ ≠ 0)
(hf'x₀: HasDerivWithinAt f f'x₀ X x₀) (hg'x₀: HasDerivWithinAt g g'x₀ X x₀) :
(∃ δ > 0, ∀ x ∈ X \ {x₀} ∩ .Ioo (x₀ - δ) (x₀ + δ), g x ≠ 0) ∧
(nhdsWithin x₀ (X \ {x₀})).Tendsto (fun x ↦ f x / g x) (nhds (f'x₀ / g'x₀))
:= X:Set ℝf:ℝ → ℝg:ℝ → ℝx₀:ℝf'x₀:ℝg'x₀:ℝhfx₀:f x₀ = 0hgx₀:g x₀ = 0hg_non:g'x₀ ≠ 0hf'x₀:HasDerivWithinAt f f'x₀ X x₀hg'x₀:HasDerivWithinAt g g'x₀ X x₀⊢ (∃ δ > 0, ∀ x ∈ X \ {x₀} ∩ Set.Ioo (x₀ - δ) (x₀ + δ), g x ≠ 0) ∧
Filter.Tendsto (fun x => f x / g x) (nhdsWithin x₀ (X \ {x₀})) (nhds (f'x₀ / g'x₀))
All goals completed! 🐙Proposition 10.5.2 (L'Hôpital's rule, II)
theorem _root_.Filter.Tendsto.of_div' {a b L:ℝ} (hab: a < b) {f g f' g': ℝ → ℝ}
(hf: DifferentiableOn ℝ f (.Icc a b)) (hg: DifferentiableOn ℝ g (.Icc a b))
(hf': f' = derivWithin f (.Icc a b)) (hg': g' = derivWithin g (.Icc a b))
(hfa: f a = 0) (hga: g a = 0) (hgnon: ∀ x ∈ Set.Icc a b, g' x ≠ 0)
(hderiv: (nhdsWithin a (.Icc a b)).Tendsto (fun x ↦ f' x / g' x) (nhds L)) :
(∀ x ∈ Set.Ioc a b, g x ≠ 0) ∧
(nhdsWithin a (.Ioc a b)).Tendsto (fun x ↦ f x / g x) (nhds L) := a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)⊢ (∀ x ∈ Set.Ioc a b, g x ≠ 0) ∧ Filter.Tendsto (fun x => f x / g x) (nhdsWithin a (Set.Ioc a b)) (nhds L)
-- This proof is written to follow the structure of the original text.
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)⊢ (∀ x ∈ Set.Ioc a b, g x ≠ 0) ∧ Filter.Tendsto (fun x => f x / g x) (nhdsWithin a (Set.Ioc a b)) (nhds L)
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)⊢ (∀ x ∈ Set.Ioc a b, g x ≠ 0) ∧ Filter.Tendsto (fun x => f x / g x) (nhdsWithin a (Set.Ioc a b)) (nhds L)
have (x:ℝ) (hx: x ∈ Set.Ioc a b) : g x ≠ 0 := a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)⊢ (∀ x ∈ Set.Ioc a b, g x ≠ 0) ∧ Filter.Tendsto (fun x => f x / g x) (nhdsWithin a (Set.Ioc a b)) (nhds L)
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝhx:x ∈ Set.Ioc a bthis:g x = 0⊢ False
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ False
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis✝:g x = 0hx:a < x ∧ x ≤ bthis:∃ x_1 ∈ Set.Ioo a x, HasDerivWithinAt g 0 (Set.Ioo a x) x_1 := HasDerivWithinAt.exist_zero hx.left (ContinuousOn.mono hgcon ?refine_1) (DifferentiableOn.mono hg ?refine_2) ?refine_3⊢ Falsea:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ Set.Icc a x ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ Set.Ioo a x ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ g a = g x
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ by:ℝhy:y ∈ Set.Ioo a xhgy:HasDerivWithinAt g 0 (Set.Ioo a x) y⊢ Falsea:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ Set.Icc a x ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ Set.Ioo a x ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ g a = g x; a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ by:ℝhgy:HasDerivWithinAt g 0 (Set.Ioo a x) yhy:a < y ∧ y < x⊢ Falsea:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ Set.Icc a x ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ Set.Ioo a x ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ g a = g x
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis✝:g x = 0hx:a < x ∧ x ≤ by:ℝhgy:HasDerivWithinAt g 0 (Set.Ioo a x) yhy:a < y ∧ y < xthis:y ∈ Set.Icc a b := ?refine_4.refine_1⊢ Falsea:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ by:ℝhgy:HasDerivWithinAt g 0 (Set.Ioo a x) yhy:a < y ∧ y < x⊢ y ∈ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ Set.Icc a x ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ Set.Ioo a x ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ g a = g x
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis✝:g x = 0hx:a < x ∧ x ≤ by:ℝhgy:HasDerivWithinAt g 0 (Set.Ioo a x) yhy:a < y ∧ y < xthis:y ∈ Set.Icc a b := ?refine_4.refine_1hgnon:g' y ≠ 0⊢ Falsea:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ by:ℝhgy:HasDerivWithinAt g 0 (Set.Ioo a x) yhy:a < y ∧ y < x⊢ y ∈ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ Set.Icc a x ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ Set.Ioo a x ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ g a = g x
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhg:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ g (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis✝:g x = 0hx:a < x ∧ x ≤ by:ℝhgy:HasDerivWithinAt g 0 (Set.Ioo a x) yhy:a < y ∧ y < xthis:y ∈ Set.Icc a bhgnon:g' y ≠ 0⊢ Falsea:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ by:ℝhgy:HasDerivWithinAt g 0 (Set.Ioo a x) yhy:a < y ∧ y < x⊢ y ∈ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ Set.Icc a x ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ Set.Ioo a x ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ g a = g x; a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis✝:g x = 0hx:a < x ∧ x ≤ by:ℝhgy:HasDerivWithinAt g 0 (Set.Ioo a x) yhy:a < y ∧ y < xthis:y ∈ Set.Icc a bhgnon:g' y ≠ 0hg:DifferentiableWithinAt ℝ g (Set.Icc a b) y⊢ Falsea:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ by:ℝhgy:HasDerivWithinAt g 0 (Set.Ioo a x) yhy:a < y ∧ y < x⊢ y ∈ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ Set.Icc a x ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ Set.Ioo a x ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ g a = g x
replace hg : HasDerivWithinAt g (g' y) (.Ioo a x) y := a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)⊢ (∀ x ∈ Set.Ioc a b, g x ≠ 0) ∧ Filter.Tendsto (fun x => f x / g x) (nhdsWithin a (Set.Ioc a b)) (nhds L)
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis✝:g x = 0hx:a < x ∧ x ≤ by:ℝhgy:HasDerivWithinAt g 0 (Set.Ioo a x) yhy:a < y ∧ y < xthis:y ∈ Set.Icc a bhgnon:g' y ≠ 0hg:DifferentiableWithinAt ℝ g (Set.Icc a b) y⊢ HasDerivWithinAt g (derivWithin g (Set.Icc a b) y) (Set.Ioo a x) y; a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis✝:g x = 0hx:a < x ∧ x ≤ by:ℝhgy:HasDerivWithinAt g 0 (Set.Ioo a x) yhy:a < y ∧ y < xthis:y ∈ Set.Icc a bhgnon:g' y ≠ 0hg:DifferentiableWithinAt ℝ g (Set.Icc a b) y⊢ Set.Ioo a x ⊆ Set.Icc a b; All goals completed! 🐙
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis✝:g x = 0hx:a < x ∧ x ≤ by:ℝhgy:HasDerivWithinAt g 0 (Set.Ioo a x) yhy:a < y ∧ y < xthis:y ∈ Set.Icc a bhgnon:g' y ≠ 0hg:HasDerivWithinAt g (g' y) (Set.Ioo a x) y :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono (DifferentiableWithinAt.hasDerivWithinAt _fvar.14556) (Filter.Tendsto.of_div'._proof_2 x hx))hd:g' y = 0 := derivative_unique ?refine_4.refine_2.refine_1 hg hgy⊢ Falsea:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis✝:g x = 0hx:a < x ∧ x ≤ by:ℝhgy:HasDerivWithinAt g 0 (Set.Ioo a x) yhy:a < y ∧ y < xthis:y ∈ Set.Icc a bhgnon:g' y ≠ 0hg:HasDerivWithinAt g (g' y) (Set.Ioo a x) y :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono (DifferentiableWithinAt.hasDerivWithinAt _fvar.14556) (Filter.Tendsto.of_div'._proof_2 x hx))⊢ ClusterPt y (Filter.principal (Set.Ioo a x \ {y}))a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ by:ℝhgy:HasDerivWithinAt g 0 (Set.Ioo a x) yhy:a < y ∧ y < x⊢ y ∈ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ Set.Icc a x ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ Set.Ioo a x ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ g a = g x
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis✝:g x = 0hx:a < x ∧ x ≤ by:ℝhgy:HasDerivWithinAt g 0 (Set.Ioo a x) yhy:a < y ∧ y < xthis:y ∈ Set.Icc a bhgnon:g' y ≠ 0hg:HasDerivWithinAt g (g' y) (Set.Ioo a x) y :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono (DifferentiableWithinAt.hasDerivWithinAt _fvar.14556) (Filter.Tendsto.of_div'._proof_2 x hx))hd:g' y = 0 := derivative_unique ?refine_4.refine_2.refine_1 hg hgy⊢ False All goals completed! 🐙
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis✝:g x = 0hx:a < x ∧ x ≤ by:ℝhgy:HasDerivWithinAt g 0 (Set.Ioo a x) yhy:a < y ∧ y < xthis:y ∈ Set.Icc a bhgnon:g' y ≠ 0hg:HasDerivWithinAt g (g' y) (Set.Ioo a x) y :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono (DifferentiableWithinAt.hasDerivWithinAt _fvar.14556) (Filter.Tendsto.of_div'._proof_2 x hx))⊢ ClusterPt y (Filter.principal (Set.Ioo a y))a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis✝:g x = 0hx:a < x ∧ x ≤ by:ℝhgy:HasDerivWithinAt g 0 (Set.Ioo a x) yhy:a < y ∧ y < xthis:y ∈ Set.Icc a bhgnon:g' y ≠ 0hg:HasDerivWithinAt g (g' y) (Set.Ioo a x) y :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono (DifferentiableWithinAt.hasDerivWithinAt _fvar.14556) (Filter.Tendsto.of_div'._proof_2 x hx))⊢ Set.Ioo a y ⊆ Set.Ioo a x \ {y}a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ by:ℝhgy:HasDerivWithinAt g 0 (Set.Ioo a x) yhy:a < y ∧ y < x⊢ y ∈ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ Set.Icc a x ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ Set.Ioo a x ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis:g x = 0hx:a < x ∧ x ≤ b⊢ g a = g x
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)x:ℝthis✝:g x = 0hx:a < x ∧ x ≤ by:ℝhgy:HasDerivWithinAt g 0 (Set.Ioo a x) yhy:a < y ∧ y < xthis:y ∈ Set.Icc a bhgnon:g' y ≠ 0hg:HasDerivWithinAt g (g' y) (Set.Ioo a x) y :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono (DifferentiableWithinAt.hasDerivWithinAt _fvar.14556) (Filter.Tendsto.of_div'._proof_2 x hx))⊢ ClusterPt y (Filter.principal (Set.Ioo a y)) All goals completed! 🐙
all_goals All goals completed! 🐙
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)⊢ Filter.Tendsto (fun x => f x / g x) (nhdsWithin a (Set.Ioc a b)) (nhds L)
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)⊢ ∀ (a_1 : ℕ → ℝ),
(∀ (n : ℕ), a_1 n ∈ Set.Ioc a b) →
Filter.Tendsto a_1 Filter.atTop (nhds a) → Filter.Tendsto (fun n => f (a_1 n) / g (a_1 n)) Filter.atTop (nhds L)a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)⊢ AdherentPt a (Set.Ioc a b)
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)⊢ ∀ (a_1 : ℕ → ℝ),
(∀ (n : ℕ), a_1 n ∈ Set.Ioc a b) →
Filter.Tendsto a_1 Filter.atTop (nhds a) → Filter.Tendsto (fun n => f (a_1 n) / g (a_1 n)) Filter.atTop (nhds L) intro x a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhx:∀ (n : ℕ), x n ∈ Set.Ioc a b⊢ Filter.Tendsto x Filter.atTop (nhds a) → Filter.Tendsto (fun n => f (x n) / g (x n)) Filter.atTop (nhds L) a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhx:∀ (n : ℕ), x n ∈ Set.Ioc a bhconv:Filter.Tendsto x Filter.atTop (nhds a)⊢ Filter.Tendsto (fun n => f (x n) / g (x n)) Filter.atTop (nhds L)
have hxy (n:ℕ) : ∃ yn ∈ Set.Ioo a (x n), (f (x n))/(g (x n)) = f' yn / (g' yn) := a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)⊢ (∀ x ∈ Set.Ioc a b, g x ≠ 0) ∧ Filter.Tendsto (fun x => f x / g x) (nhdsWithin a (Set.Ioc a b)) (nhds L)
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhx:∀ (n : ℕ), x n ∈ Set.Ioc a bhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)⊢ ∃ yn ∈ Set.Ioo a (x n), f (x n) / g (x n) = f' yn / g' yn
have hdiff : DifferentiableOn ℝ h (.Icc a b) := a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)⊢ (∀ x ∈ Set.Ioc a b, g x ≠ 0) ∧ Filter.Tendsto (fun x => f x / g x) (nhdsWithin a (Set.Ioc a b)) (nhds L) All goals completed! 🐙
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhx:∀ (n : ℕ), x n ∈ Set.Ioc a bhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hdiff:DifferentiableOn ℝ h (Set.Icc a b) := DifferentiableOn.fun_sub (DifferentiableOn.mul_const hf (g (x n))) (DifferentiableOn.mul_const hg (f (x n)))hcon:ContinuousOn h (Set.Icc a b)⊢ ∃ yn ∈ Set.Ioo a (x n), f (x n) / g (x n) = f' yn / g' yn
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hdiff:DifferentiableOn ℝ h (Set.Icc a b) := DifferentiableOn.fun_sub (DifferentiableOn.mul_const hf (g (x n))) (DifferentiableOn.mul_const hg (f (x n)))hcon:ContinuousOn h (Set.Icc a b)hx:x n ∈ Set.Ioc a b⊢ ∃ yn ∈ Set.Ioo a (x n), f (x n) / g (x n) = f' yn / g' yn; a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hdiff:DifferentiableOn ℝ h (Set.Icc a b) := DifferentiableOn.fun_sub (DifferentiableOn.mul_const hf (g (x n))) (DifferentiableOn.mul_const hg (f (x n)))hcon:ContinuousOn h (Set.Icc a b)hx:a < x n ∧ x n ≤ b⊢ ∃ yn ∈ Set.Ioo a (x n), f (x n) / g (x n) = f' yn / g' yn
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hdiff:DifferentiableOn ℝ h (Set.Icc a b) := DifferentiableOn.fun_sub (DifferentiableOn.mul_const hf (g (x n))) (DifferentiableOn.mul_const hg (f (x n)))hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1⊢ ∃ yn ∈ Set.Ioo a (x n), f (x n) / g (x n) = f' yn / g' yna:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hdiff:DifferentiableOn ℝ h (Set.Icc a b) := DifferentiableOn.fun_sub (DifferentiableOn.mul_const hf (g (x n))) (DifferentiableOn.mul_const hg (f (x n)))hcon:ContinuousOn h (Set.Icc a b)hx:a < x n ∧ x n ≤ b⊢ Set.Icc a (x n) ⊆ Set.Icc a b
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n)) := DifferentiableOn.mono _fvar.28597 ?refine_2.refine_1⊢ ∃ yn ∈ Set.Ioo a (x n), f (x n) / g (x n) = f' yn / g' yna:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hdiff:DifferentiableOn ℝ h (Set.Icc a b) := DifferentiableOn.fun_sub (DifferentiableOn.mul_const hf (g (x n))) (DifferentiableOn.mul_const hg (f (x n)))hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1⊢ Set.Ioo a (x n) ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hdiff:DifferentiableOn ℝ h (Set.Icc a b) := DifferentiableOn.fun_sub (DifferentiableOn.mul_const hf (g (x n))) (DifferentiableOn.mul_const hg (f (x n)))hcon:ContinuousOn h (Set.Icc a b)hx:a < x n ∧ x n ≤ b⊢ Set.Icc a (x n) ⊆ Set.Icc a b
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n)) := DifferentiableOn.mono _fvar.28597 ?refine_2.refine_1ha:h a = 0 := ?refine_2.refine_2.refine_1⊢ ∃ yn ∈ Set.Ioo a (x n), f (x n) / g (x n) = f' yn / g' yna:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n)) := DifferentiableOn.mono _fvar.28597 ?refine_2.refine_1⊢ h a = 0a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hdiff:DifferentiableOn ℝ h (Set.Icc a b) := DifferentiableOn.fun_sub (DifferentiableOn.mul_const hf (g (x n))) (DifferentiableOn.mul_const hg (f (x n)))hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1⊢ Set.Ioo a (x n) ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hdiff:DifferentiableOn ℝ h (Set.Icc a b) := DifferentiableOn.fun_sub (DifferentiableOn.mul_const hf (g (x n))) (DifferentiableOn.mul_const hg (f (x n)))hcon:ContinuousOn h (Set.Icc a b)hx:a < x n ∧ x n ≤ b⊢ Set.Icc a (x n) ⊆ Set.Icc a b
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n)) := DifferentiableOn.mono _fvar.28597 ?refine_2.refine_1ha:h a = 0 := ?refine_2.refine_2.refine_1hb:h (x n) = 0 := ?refine_2.refine_2.refine_2.refine_1⊢ ∃ yn ∈ Set.Ioo a (x n), f (x n) / g (x n) = f' yn / g' yna:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n)) := DifferentiableOn.mono _fvar.28597 ?refine_2.refine_1ha:h a = 0 := ?refine_2.refine_2.refine_1⊢ h (x n) = 0a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n)) := DifferentiableOn.mono _fvar.28597 ?refine_2.refine_1⊢ h a = 0a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hdiff:DifferentiableOn ℝ h (Set.Icc a b) := DifferentiableOn.fun_sub (DifferentiableOn.mul_const hf (g (x n))) (DifferentiableOn.mul_const hg (f (x n)))hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1⊢ Set.Ioo a (x n) ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hdiff:DifferentiableOn ℝ h (Set.Icc a b) := DifferentiableOn.fun_sub (DifferentiableOn.mul_const hf (g (x n))) (DifferentiableOn.mul_const hg (f (x n)))hcon:ContinuousOn h (Set.Icc a b)hx:a < x n ∧ x n ≤ b⊢ Set.Icc a (x n) ⊆ Set.Icc a b
choose yn hyn hdh using HasDerivWithinAt.exist_zero hx.1 hcon hdiff (a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n)) := DifferentiableOn.mono _fvar.28597 ?refine_2.refine_1ha:h a = 0 := ?refine_2.refine_2.refine_1hb:h (x n) = 0 := ?refine_2.refine_2.refine_2.refine_1⊢ h a = h (x n) All goals completed! 🐙)
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n)) := DifferentiableOn.mono _fvar.28597 ?refine_2.refine_1ha:h a = 0 := ?refine_2.refine_2.refine_1hb:h (x n) = 0 := ?refine_2.refine_2.refine_2.refine_1yn:ℝhyn:yn ∈ Set.Ioo a (x n)hdh:HasDerivWithinAt h 0 (Set.Ioo a (x n)) yn⊢ f (x n) / g (x n) = f' yn / g' yna:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n)) := DifferentiableOn.mono _fvar.28597 ?refine_2.refine_1ha:h a = 0 := ?refine_2.refine_2.refine_1⊢ h (x n) = 0a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n)) := DifferentiableOn.mono _fvar.28597 ?refine_2.refine_1⊢ h a = 0a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hdiff:DifferentiableOn ℝ h (Set.Icc a b) := DifferentiableOn.fun_sub (DifferentiableOn.mul_const hf (g (x n))) (DifferentiableOn.mul_const hg (f (x n)))hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1⊢ Set.Ioo a (x n) ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hdiff:DifferentiableOn ℝ h (Set.Icc a b) := DifferentiableOn.fun_sub (DifferentiableOn.mul_const hf (g (x n))) (DifferentiableOn.mul_const hg (f (x n)))hcon:ContinuousOn h (Set.Icc a b)hx:a < x n ∧ x n ≤ b⊢ Set.Icc a (x n) ⊆ Set.Icc a b
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhg:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ g (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n))hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n))ha:h a = 0hb:h (x n) = 0yn:ℝhyn:yn ∈ Set.Ioo a (x n)hdh:HasDerivWithinAt h 0 (Set.Ioo a (x n)) yn⊢ f (x n) / g (x n) = f' yn / g' yna:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n)) := DifferentiableOn.mono _fvar.28597 ?refine_2.refine_1ha:h a = 0 := ?refine_2.refine_2.refine_1⊢ h (x n) = 0a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n)) := DifferentiableOn.mono _fvar.28597 ?refine_2.refine_1⊢ h a = 0a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hdiff:DifferentiableOn ℝ h (Set.Icc a b) := DifferentiableOn.fun_sub (DifferentiableOn.mul_const hf (g (x n))) (DifferentiableOn.mul_const hg (f (x n)))hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1⊢ Set.Ioo a (x n) ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hdiff:DifferentiableOn ℝ h (Set.Icc a b) := DifferentiableOn.fun_sub (DifferentiableOn.mul_const hf (g (x n))) (DifferentiableOn.mul_const hg (f (x n)))hcon:ContinuousOn h (Set.Icc a b)hx:a < x n ∧ x n ≤ b⊢ Set.Icc a (x n) ⊆ Set.Icc a b
have h1 : HasDerivWithinAt f (f' yn) (.Ioo a (x n)) yn := a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)⊢ (∀ x ∈ Set.Ioc a b, g x ≠ 0) ∧ Filter.Tendsto (fun x => f x / g x) (nhdsWithin a (Set.Ioc a b)) (nhds L)
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhg:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ g (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n))hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n))ha:h a = 0hb:h (x n) = 0yn:ℝhyn:yn ∈ Set.Ioo a (x n)hdh:HasDerivWithinAt h 0 (Set.Ioo a (x n)) yn⊢ HasDerivWithinAt f (derivWithin f (Set.Icc a b) yn) (Set.Ioo a (x n)) yn; a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhg:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ g (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n))hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n))ha:h a = 0hb:h (x n) = 0yn:ℝhyn:yn ∈ Set.Ioo a (x n)hdh:HasDerivWithinAt h 0 (Set.Ioo a (x n)) yn⊢ Set.Ioo a (x n) ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhg:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ g (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n))hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n))ha:h a = 0hb:h (x n) = 0yn:ℝhyn:yn ∈ Set.Ioo a (x n)hdh:HasDerivWithinAt h 0 (Set.Ioo a (x n)) yn⊢ yn ∈ Set.Icc a b a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhg:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ g (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n))hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n))ha:h a = 0hb:h (x n) = 0yn:ℝhyn:yn ∈ Set.Ioo a (x n)hdh:HasDerivWithinAt h 0 (Set.Ioo a (x n)) yn⊢ Set.Ioo a (x n) ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhg:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ g (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n))hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n))ha:h a = 0hb:h (x n) = 0yn:ℝhyn:yn ∈ Set.Ioo a (x n)hdh:HasDerivWithinAt h 0 (Set.Ioo a (x n)) yn⊢ yn ∈ Set.Icc a b All goals completed! 🐙
have h2 : HasDerivWithinAt g (g' yn) (.Ioo a (x n)) yn := a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)⊢ (∀ x ∈ Set.Ioc a b, g x ≠ 0) ∧ Filter.Tendsto (fun x => f x / g x) (nhdsWithin a (Set.Ioc a b)) (nhds L)
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhg:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ g (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n))hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n))ha:h a = 0hb:h (x n) = 0yn:ℝhyn:yn ∈ Set.Ioo a (x n)hdh:HasDerivWithinAt h 0 (Set.Ioo a (x n)) ynh1:HasDerivWithinAt f (f' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt f (_a yn) (Set.Ioo a (x n)) yn) hf'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hf yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))⊢ HasDerivWithinAt g (derivWithin g (Set.Icc a b) yn) (Set.Ioo a (x n)) yn; a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhg:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ g (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n))hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n))ha:h a = 0hb:h (x n) = 0yn:ℝhyn:yn ∈ Set.Ioo a (x n)hdh:HasDerivWithinAt h 0 (Set.Ioo a (x n)) ynh1:HasDerivWithinAt f (f' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt f (_a yn) (Set.Ioo a (x n)) yn) hf'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hf yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))⊢ Set.Ioo a (x n) ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhg:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ g (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n))hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n))ha:h a = 0hb:h (x n) = 0yn:ℝhyn:yn ∈ Set.Ioo a (x n)hdh:HasDerivWithinAt h 0 (Set.Ioo a (x n)) ynh1:HasDerivWithinAt f (f' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt f (_a yn) (Set.Ioo a (x n)) yn) hf'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hf yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))⊢ yn ∈ Set.Icc a b a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhg:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ g (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n))hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n))ha:h a = 0hb:h (x n) = 0yn:ℝhyn:yn ∈ Set.Ioo a (x n)hdh:HasDerivWithinAt h 0 (Set.Ioo a (x n)) ynh1:HasDerivWithinAt f (f' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt f (_a yn) (Set.Ioo a (x n)) yn) hf'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hf yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))⊢ Set.Ioo a (x n) ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhg:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ g (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n))hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n))ha:h a = 0hb:h (x n) = 0yn:ℝhyn:yn ∈ Set.Ioo a (x n)hdh:HasDerivWithinAt h 0 (Set.Ioo a (x n)) ynh1:HasDerivWithinAt f (f' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt f (_a yn) (Set.Ioo a (x n)) yn) hf'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hf yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))⊢ yn ∈ Set.Icc a b All goals completed! 🐙
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhg:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ g (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n))hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n))ha:h a = 0hb:h (x n) = 0yn:ℝhyn:yn ∈ Set.Ioo a (x n)hdh:HasDerivWithinAt h 0 (Set.Ioo a (x n)) ynh1:HasDerivWithinAt f (f' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt f (_a yn) (Set.Ioo a (x n)) yn) hf'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hf yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h2:HasDerivWithinAt g (g' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a yn) (Set.Ioo a (x n)) yn) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hg yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h3:HasDerivWithinAt (fun y => f y * g (x n)) (f' yn * g (x n)) (Set.Ioo a (x n)) yn⊢ f (x n) / g (x n) = f' yn / g' yna:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n)) := DifferentiableOn.mono _fvar.28597 ?refine_2.refine_1ha:h a = 0 := ?refine_2.refine_2.refine_1⊢ h (x n) = 0a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n)) := DifferentiableOn.mono _fvar.28597 ?refine_2.refine_1⊢ h a = 0a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hdiff:DifferentiableOn ℝ h (Set.Icc a b) := DifferentiableOn.fun_sub (DifferentiableOn.mul_const hf (g (x n))) (DifferentiableOn.mul_const hg (f (x n)))hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1⊢ Set.Ioo a (x n) ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hdiff:DifferentiableOn ℝ h (Set.Icc a b) := DifferentiableOn.fun_sub (DifferentiableOn.mul_const hf (g (x n))) (DifferentiableOn.mul_const hg (f (x n)))hcon:ContinuousOn h (Set.Icc a b)hx:a < x n ∧ x n ≤ b⊢ Set.Icc a (x n) ⊆ Set.Icc a b
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhg:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ g (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n))hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n))ha:h a = 0hb:h (x n) = 0yn:ℝhyn:yn ∈ Set.Ioo a (x n)hdh:HasDerivWithinAt h 0 (Set.Ioo a (x n)) ynh1:HasDerivWithinAt f (f' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt f (_a yn) (Set.Ioo a (x n)) yn) hf'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hf yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h2:HasDerivWithinAt g (g' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a yn) (Set.Ioo a (x n)) yn) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hg yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h3:HasDerivWithinAt (fun y => f y * g (x n)) (f' yn * g (x n)) (Set.Ioo a (x n)) ynh4:HasDerivWithinAt (fun y => g y * f (x n)) (g' yn * f (x n)) (Set.Ioo a (x n)) yn⊢ f (x n) / g (x n) = f' yn / g' yna:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n)) := DifferentiableOn.mono _fvar.28597 ?refine_2.refine_1ha:h a = 0 := ?refine_2.refine_2.refine_1⊢ h (x n) = 0a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n)) := DifferentiableOn.mono _fvar.28597 ?refine_2.refine_1⊢ h a = 0a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hdiff:DifferentiableOn ℝ h (Set.Icc a b) := DifferentiableOn.fun_sub (DifferentiableOn.mul_const hf (g (x n))) (DifferentiableOn.mul_const hg (f (x n)))hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1⊢ Set.Ioo a (x n) ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hdiff:DifferentiableOn ℝ h (Set.Icc a b) := DifferentiableOn.fun_sub (DifferentiableOn.mul_const hf (g (x n))) (DifferentiableOn.mul_const hg (f (x n)))hcon:ContinuousOn h (Set.Icc a b)hx:a < x n ∧ x n ≤ b⊢ Set.Icc a (x n) ⊆ Set.Icc a b
have h5 : HasDerivWithinAt h (f' yn * g (x n) - g' yn * f (x n)) (.Ioo a (x n)) yn := a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)⊢ (∀ x ∈ Set.Ioc a b, g x ≠ 0) ∧ Filter.Tendsto (fun x => f x / g x) (nhdsWithin a (Set.Ioc a b)) (nhds L)
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhg:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ g (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n))hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n))ha:h a = 0hb:h (x n) = 0yn:ℝhyn:yn ∈ Set.Ioo a (x n)hdh:HasDerivWithinAt h 0 (Set.Ioo a (x n)) ynh1:HasDerivWithinAt f (f' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt f (_a yn) (Set.Ioo a (x n)) yn) hf'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hf yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h2:HasDerivWithinAt g (g' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a yn) (Set.Ioo a (x n)) yn) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hg yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h3:HasDerivWithinAt (fun y => f y * g (x n)) (f' yn * g (x n)) (Set.Ioo a (x n)) ynh4:HasDerivWithinAt (fun y => g y * f (x n)) (g' yn * f (x n)) (Set.Ioo a (x n)) yn⊢ HasDerivWithinAt (fun x' => f x' * g (x n) - g x' * f (x n)) (f' yn * g (x n) - g' yn * f (x n)) (Set.Ioo a (x n)) yn; All goals completed! 🐙
have h6 : f' yn * g (x n) - g' yn * f (x n) = 0 := a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)⊢ (∀ x ∈ Set.Ioc a b, g x ≠ 0) ∧ Filter.Tendsto (fun x => f x / g x) (nhdsWithin a (Set.Ioc a b)) (nhds L)
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhg:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ g (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n))hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n))ha:h a = 0hb:h (x n) = 0yn:ℝhyn:yn ∈ Set.Ioo a (x n)hdh:HasDerivWithinAt h 0 (Set.Ioo a (x n)) ynh1:HasDerivWithinAt f (f' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt f (_a yn) (Set.Ioo a (x n)) yn) hf'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hf yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h2:HasDerivWithinAt g (g' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a yn) (Set.Ioo a (x n)) yn) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hg yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h3:HasDerivWithinAt (fun y => f y * g (x n)) (f' yn * g (x n)) (Set.Ioo a (x n)) ynh4:HasDerivWithinAt (fun y => g y * f (x n)) (g' yn * f (x n)) (Set.Ioo a (x n)) ynh5:HasDerivWithinAt h (f' yn * g (x n) - g' yn * f (x n)) (Set.Ioo a (x n)) yn := id (HasDerivWithinAt.sub h3 h4)⊢ ClusterPt yn (Filter.principal (Set.Ioo a (x n) \ {yn}))
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhg:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ g (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n))hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n))ha:h a = 0hb:h (x n) = 0yn:ℝhyn:yn ∈ Set.Ioo a (x n)hdh:HasDerivWithinAt h 0 (Set.Ioo a (x n)) ynh1:HasDerivWithinAt f (f' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt f (_a yn) (Set.Ioo a (x n)) yn) hf'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hf yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h2:HasDerivWithinAt g (g' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a yn) (Set.Ioo a (x n)) yn) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hg yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h3:HasDerivWithinAt (fun y => f y * g (x n)) (f' yn * g (x n)) (Set.Ioo a (x n)) ynh4:HasDerivWithinAt (fun y => g y * f (x n)) (g' yn * f (x n)) (Set.Ioo a (x n)) ynh5:HasDerivWithinAt h (f' yn * g (x n) - g' yn * f (x n)) (Set.Ioo a (x n)) yn := id (HasDerivWithinAt.sub h3 h4)⊢ ClusterPt yn (Filter.principal (Set.Ioo a yn))a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhg:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ g (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n))hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n))ha:h a = 0hb:h (x n) = 0yn:ℝhyn:yn ∈ Set.Ioo a (x n)hdh:HasDerivWithinAt h 0 (Set.Ioo a (x n)) ynh1:HasDerivWithinAt f (f' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt f (_a yn) (Set.Ioo a (x n)) yn) hf'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hf yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h2:HasDerivWithinAt g (g' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a yn) (Set.Ioo a (x n)) yn) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hg yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h3:HasDerivWithinAt (fun y => f y * g (x n)) (f' yn * g (x n)) (Set.Ioo a (x n)) ynh4:HasDerivWithinAt (fun y => g y * f (x n)) (g' yn * f (x n)) (Set.Ioo a (x n)) ynh5:HasDerivWithinAt h (f' yn * g (x n) - g' yn * f (x n)) (Set.Ioo a (x n)) yn := id (HasDerivWithinAt.sub h3 h4)⊢ Set.Ioo a yn ⊆ Set.Ioo a (x n) \ {yn}
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhg:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ g (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n))hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n))ha:h a = 0hb:h (x n) = 0yn:ℝhyn:yn ∈ Set.Ioo a (x n)hdh:HasDerivWithinAt h 0 (Set.Ioo a (x n)) ynh1:HasDerivWithinAt f (f' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt f (_a yn) (Set.Ioo a (x n)) yn) hf'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hf yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h2:HasDerivWithinAt g (g' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a yn) (Set.Ioo a (x n)) yn) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hg yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h3:HasDerivWithinAt (fun y => f y * g (x n)) (f' yn * g (x n)) (Set.Ioo a (x n)) ynh4:HasDerivWithinAt (fun y => g y * f (x n)) (g' yn * f (x n)) (Set.Ioo a (x n)) ynh5:HasDerivWithinAt h (f' yn * g (x n) - g' yn * f (x n)) (Set.Ioo a (x n)) yn := id (HasDerivWithinAt.sub h3 h4)⊢ ClusterPt yn (Filter.principal (Set.Ioo a yn)) a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhg:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ g (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n))hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n))ha:h a = 0hb:h (x n) = 0yn:ℝhyn:yn ∈ Set.Ioo a (x n)hdh:HasDerivWithinAt h 0 (Set.Ioo a (x n)) ynh1:HasDerivWithinAt f (f' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt f (_a yn) (Set.Ioo a (x n)) yn) hf'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hf yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h2:HasDerivWithinAt g (g' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a yn) (Set.Ioo a (x n)) yn) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hg yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h3:HasDerivWithinAt (fun y => f y * g (x n)) (f' yn * g (x n)) (Set.Ioo a (x n)) ynh4:HasDerivWithinAt (fun y => g y * f (x n)) (g' yn * f (x n)) (Set.Ioo a (x n)) ynh5:HasDerivWithinAt h (f' yn * g (x n) - g' yn * f (x n)) (Set.Ioo a (x n)) yn := id (HasDerivWithinAt.sub h3 h4)⊢ a ≤ yn; All goals completed! 🐙
All goals completed! 🐙
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhg:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ g (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n))hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n))ha:h a = 0hb:h (x n) = 0yn:ℝhyn:yn ∈ Set.Ioo a (x n)hdh:HasDerivWithinAt h 0 (Set.Ioo a (x n)) ynh1:HasDerivWithinAt f (f' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt f (_a yn) (Set.Ioo a (x n)) yn) hf'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hf yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h2:HasDerivWithinAt g (g' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a yn) (Set.Ioo a (x n)) yn) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hg yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h3:HasDerivWithinAt (fun y => f y * g (x n)) (f' yn * g (x n)) (Set.Ioo a (x n)) ynh4:HasDerivWithinAt (fun y => g y * f (x n)) (g' yn * f (x n)) (Set.Ioo a (x n)) ynh5:HasDerivWithinAt h (f' yn * g (x n) - g' yn * f (x n)) (Set.Ioo a (x n)) yn := id (HasDerivWithinAt.sub h3 h4)h6:f' yn * g (x n) - g' yn * f (x n) = 0 :=
derivative_unique
(ClusterPt.mono
(Eq.mpr
(id
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this := Filter.Tendsto.of_div'._proof_11 x n yn hyn;
this)))
yn)
Set.mem_Icc._simp_1)
(Eq.trans (congrArg (And (a ≤ yn)) (Std.le_refl._simp_1 yn)) (and_true (a ≤ yn))))))
(Filter.Tendsto.of_div'._proof_12 x n yn hyn))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_13 x n yn hyn)))
h5 hdhh7:g (x n) ≠ 0 := ?right.refine_1⊢ f (x n) / g (x n) = f' yn / g' yna:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhg:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ g (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n))hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n))ha:h a = 0hb:h (x n) = 0yn:ℝhyn:yn ∈ Set.Ioo a (x n)hdh:HasDerivWithinAt h 0 (Set.Ioo a (x n)) ynh1:HasDerivWithinAt f (f' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt f (_a yn) (Set.Ioo a (x n)) yn) hf'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hf yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h2:HasDerivWithinAt g (g' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a yn) (Set.Ioo a (x n)) yn) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hg yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h3:HasDerivWithinAt (fun y => f y * g (x n)) (f' yn * g (x n)) (Set.Ioo a (x n)) ynh4:HasDerivWithinAt (fun y => g y * f (x n)) (g' yn * f (x n)) (Set.Ioo a (x n)) ynh5:HasDerivWithinAt h (f' yn * g (x n) - g' yn * f (x n)) (Set.Ioo a (x n)) yn := id (HasDerivWithinAt.sub h3 h4)h6:f' yn * g (x n) - g' yn * f (x n) = 0 :=
derivative_unique
(ClusterPt.mono
(Eq.mpr
(id
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this := Filter.Tendsto.of_div'._proof_11 x n yn hyn;
this)))
yn)
Set.mem_Icc._simp_1)
(Eq.trans (congrArg (And (a ≤ yn)) (Std.le_refl._simp_1 yn)) (and_true (a ≤ yn))))))
(Filter.Tendsto.of_div'._proof_12 x n yn hyn))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_13 x n yn hyn)))
h5 hdh⊢ g (x n) ≠ 0a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n)) := DifferentiableOn.mono _fvar.28597 ?refine_2.refine_1ha:h a = 0 := ?refine_2.refine_2.refine_1⊢ h (x n) = 0a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n)) := DifferentiableOn.mono _fvar.28597 ?refine_2.refine_1⊢ h a = 0a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hdiff:DifferentiableOn ℝ h (Set.Icc a b) := DifferentiableOn.fun_sub (DifferentiableOn.mul_const hf (g (x n))) (DifferentiableOn.mul_const hg (f (x n)))hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1⊢ Set.Ioo a (x n) ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hdiff:DifferentiableOn ℝ h (Set.Icc a b) := DifferentiableOn.fun_sub (DifferentiableOn.mul_const hf (g (x n))) (DifferentiableOn.mul_const hg (f (x n)))hcon:ContinuousOn h (Set.Icc a b)hx:a < x n ∧ x n ≤ b⊢ Set.Icc a (x n) ⊆ Set.Icc a b
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhg:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ g (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n))hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n))ha:h a = 0hb:h (x n) = 0yn:ℝhyn:yn ∈ Set.Ioo a (x n)hdh:HasDerivWithinAt h 0 (Set.Ioo a (x n)) ynh1:HasDerivWithinAt f (f' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt f (_a yn) (Set.Ioo a (x n)) yn) hf'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hf yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h2:HasDerivWithinAt g (g' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a yn) (Set.Ioo a (x n)) yn) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hg yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h3:HasDerivWithinAt (fun y => f y * g (x n)) (f' yn * g (x n)) (Set.Ioo a (x n)) ynh4:HasDerivWithinAt (fun y => g y * f (x n)) (g' yn * f (x n)) (Set.Ioo a (x n)) ynh5:HasDerivWithinAt h (f' yn * g (x n) - g' yn * f (x n)) (Set.Ioo a (x n)) yn := id (HasDerivWithinAt.sub h3 h4)h6:f' yn * g (x n) - g' yn * f (x n) = 0 :=
derivative_unique
(ClusterPt.mono
(Eq.mpr
(id
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this := Filter.Tendsto.of_div'._proof_11 x n yn hyn;
this)))
yn)
Set.mem_Icc._simp_1)
(Eq.trans (congrArg (And (a ≤ yn)) (Std.le_refl._simp_1 yn)) (and_true (a ≤ yn))))))
(Filter.Tendsto.of_div'._proof_12 x n yn hyn))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_13 x n yn hyn)))
h5 hdhh7:g (x n) ≠ 0 := ?right.refine_1h8:g' yn ≠ 0 := ?right.refine_2.refine_1⊢ f (x n) / g (x n) = f' yn / g' yna:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhg:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ g (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n))hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n))ha:h a = 0hb:h (x n) = 0yn:ℝhyn:yn ∈ Set.Ioo a (x n)hdh:HasDerivWithinAt h 0 (Set.Ioo a (x n)) ynh1:HasDerivWithinAt f (f' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt f (_a yn) (Set.Ioo a (x n)) yn) hf'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hf yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h2:HasDerivWithinAt g (g' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a yn) (Set.Ioo a (x n)) yn) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hg yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h3:HasDerivWithinAt (fun y => f y * g (x n)) (f' yn * g (x n)) (Set.Ioo a (x n)) ynh4:HasDerivWithinAt (fun y => g y * f (x n)) (g' yn * f (x n)) (Set.Ioo a (x n)) ynh5:HasDerivWithinAt h (f' yn * g (x n) - g' yn * f (x n)) (Set.Ioo a (x n)) yn := id (HasDerivWithinAt.sub h3 h4)h6:f' yn * g (x n) - g' yn * f (x n) = 0 :=
derivative_unique
(ClusterPt.mono
(Eq.mpr
(id
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this := Filter.Tendsto.of_div'._proof_11 x n yn hyn;
this)))
yn)
Set.mem_Icc._simp_1)
(Eq.trans (congrArg (And (a ≤ yn)) (Std.le_refl._simp_1 yn)) (and_true (a ≤ yn))))))
(Filter.Tendsto.of_div'._proof_12 x n yn hyn))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_13 x n yn hyn)))
h5 hdhh7:g (x n) ≠ 0 := ?right.refine_1⊢ g' yn ≠ 0a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ f (Set.Icc a b) xhg:∀ x ∈ Set.Icc a b, DifferentiableWithinAt ℝ g (Set.Icc a b) xhf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n))hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n))ha:h a = 0hb:h (x n) = 0yn:ℝhyn:yn ∈ Set.Ioo a (x n)hdh:HasDerivWithinAt h 0 (Set.Ioo a (x n)) ynh1:HasDerivWithinAt f (f' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt f (_a yn) (Set.Ioo a (x n)) yn) hf'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hf yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h2:HasDerivWithinAt g (g' yn) (Set.Ioo a (x n)) yn :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a yn) (Set.Ioo a (x n)) yn) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt (hg yn (Filter.Tendsto.of_div'._proof_9 x n hx yn hyn)))
(Filter.Tendsto.of_div'._proof_8 x n hx))h3:HasDerivWithinAt (fun y => f y * g (x n)) (f' yn * g (x n)) (Set.Ioo a (x n)) ynh4:HasDerivWithinAt (fun y => g y * f (x n)) (g' yn * f (x n)) (Set.Ioo a (x n)) ynh5:HasDerivWithinAt h (f' yn * g (x n) - g' yn * f (x n)) (Set.Ioo a (x n)) yn := id (HasDerivWithinAt.sub h3 h4)h6:f' yn * g (x n) - g' yn * f (x n) = 0 :=
derivative_unique
(ClusterPt.mono
(Eq.mpr
(id
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this := Filter.Tendsto.of_div'._proof_11 x n yn hyn;
this)))
yn)
Set.mem_Icc._simp_1)
(Eq.trans (congrArg (And (a ≤ yn)) (Std.le_refl._simp_1 yn)) (and_true (a ≤ yn))))))
(Filter.Tendsto.of_div'._proof_12 x n yn hyn))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_13 x n yn hyn)))
h5 hdh⊢ g (x n) ≠ 0a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n)) := DifferentiableOn.mono _fvar.28597 ?refine_2.refine_1ha:h a = 0 := ?refine_2.refine_2.refine_1⊢ h (x n) = 0a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1hdiff:DifferentiableOn ℝ h (Set.Ioo a (x n)) := DifferentiableOn.mono _fvar.28597 ?refine_2.refine_1⊢ h a = 0a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hdiff:DifferentiableOn ℝ h (Set.Icc a b) := DifferentiableOn.fun_sub (DifferentiableOn.mul_const hf (g (x n))) (DifferentiableOn.mul_const hg (f (x n)))hx:a < x n ∧ x n ≤ bhcon:ContinuousOn h (Set.Icc a (x n)) := ContinuousOn.mono _fvar.29782 ?refine_1⊢ Set.Ioo a (x n) ⊆ Set.Icc a ba:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhconv:Filter.Tendsto x Filter.atTop (nhds a)n:ℕh:ℝ → ℝ := fun x' => f x' * g (x n) - g x' * f (x n)hdiff:DifferentiableOn ℝ h (Set.Icc a b) := DifferentiableOn.fun_sub (DifferentiableOn.mul_const hf (g (x n))) (DifferentiableOn.mul_const hg (f (x n)))hcon:ContinuousOn h (Set.Icc a b)hx:a < x n ∧ x n ≤ b⊢ Set.Icc a (x n) ⊆ Set.Icc a b
all_goals All goals completed! 🐙
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhx:∀ (n : ℕ), x n ∈ Set.Ioc a bhconv:Filter.Tendsto x Filter.atTop (nhds a)y:ℕ → ℝhy:∀ (n : ℕ), y n ∈ Set.Ioo a (x n)hy':∀ (n : ℕ), f (x n) / g (x n) = f' (y n) / g' (y n)⊢ Filter.Tendsto (fun n => f (x n) / g (x n)) Filter.atTop (nhds L)
have hyconv : Filter.atTop.Tendsto y (nhds a) := a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)⊢ (∀ x ∈ Set.Ioc a b, g x ≠ 0) ∧ Filter.Tendsto (fun x => f x / g x) (nhdsWithin a (Set.Ioc a b)) (nhds L)
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhx:∀ (n : ℕ), x n ∈ Set.Ioc a bhconv:Filter.Tendsto x Filter.atTop (nhds a)y:ℕ → ℝhy:∀ (n : ℕ), y n ∈ Set.Ioo a (x n)hy':∀ (n : ℕ), f (x n) / g (x n) = f' (y n) / g' (y n)⊢ (fun x => a) ≤ ya:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhx:∀ (n : ℕ), x n ∈ Set.Ioc a bhconv:Filter.Tendsto x Filter.atTop (nhds a)y:ℕ → ℝhy:∀ (n : ℕ), y n ∈ Set.Ioo a (x n)hy':∀ (n : ℕ), f (x n) / g (x n) = f' (y n) / g' (y n)⊢ y ≤ x a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhx:∀ (n : ℕ), x n ∈ Set.Ioc a bhconv:Filter.Tendsto x Filter.atTop (nhds a)y:ℕ → ℝhy:∀ (n : ℕ), y n ∈ Set.Ioo a (x n)hy':∀ (n : ℕ), f (x n) / g (x n) = f' (y n) / g' (y n)⊢ (fun x => a) ≤ ya:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhx:∀ (n : ℕ), x n ∈ Set.Ioc a bhconv:Filter.Tendsto x Filter.atTop (nhds a)y:ℕ → ℝhy:∀ (n : ℕ), y n ∈ Set.Ioo a (x n)hy':∀ (n : ℕ), f (x n) / g (x n) = f' (y n) / g' (y n)⊢ y ≤ x (a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhx:∀ (n : ℕ), x n ∈ Set.Ioc a bhconv:Filter.Tendsto x Filter.atTop (nhds a)y:ℕ → ℝhy:∀ (n : ℕ), y n ∈ Set.Ioo a (x n)hy':∀ (n : ℕ), f (x n) / g (x n) = f' (y n) / g' (y n)i✝:ℕ⊢ y i✝ ≤ x i✝; All goals completed! 🐙)
replace hy : ∀ n, y n ∈ Set.Icc a b := a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)⊢ (∀ x ∈ Set.Ioc a b, g x ≠ 0) ∧ Filter.Tendsto (fun x => f x / g x) (nhdsWithin a (Set.Ioc a b)) (nhds L) All goals completed! 🐙
simp_rw a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhx:∀ (n : ℕ), x n ∈ Set.Ioc a bhconv:Filter.Tendsto x Filter.atTop (nhds a)y:ℕ → ℝhy':∀ (n : ℕ), f (x n) / g (x n) = f' (y n) / g' (y n)hyconv:Filter.Tendsto y Filter.atTop (nhds a) :=
Filter.Tendsto.squeeze tendsto_const_nhds hconv (fun i => Filter.Tendsto.of_div'._proof_20 x y _fvar.79235 i) fun i =>
Filter.Tendsto.of_div'._proof_21 x y _fvar.79235 ihy:∀ (n : ℕ), y n ∈ Set.Icc a b := Filter.Tendsto.of_div'._proof_22 x hx y _fvar.79235⊢ Filter.Tendsto (fun n => f (x n) / g (x n)) Filter.atTop (nhds L)hy']; a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)x:ℕ → ℝhx:∀ (n : ℕ), x n ∈ Set.Ioc a bhconv:Filter.Tendsto x Filter.atTop (nhds a)y:ℕ → ℝhy':∀ (n : ℕ), f (x n) / g (x n) = f' (y n) / g' (y n)hyconv:Filter.Tendsto y Filter.atTop (nhds a) :=
Filter.Tendsto.squeeze tendsto_const_nhds hconv (fun i => Filter.Tendsto.of_div'._proof_20 x y _fvar.79235 i) fun i =>
Filter.Tendsto.of_div'._proof_21 x y _fvar.79235 ihy:∀ (n : ℕ), y n ∈ Set.Icc a b := Filter.Tendsto.of_div'._proof_22 x hx y _fvar.79235⊢ Filter.Tendsto y Filter.atTop (nhdsWithin a (Set.Icc a b))
All goals completed! 🐙
a:ℝb:ℝL:ℝhab:a < bf:ℝ → ℝg:ℝ → ℝf':ℝ → ℝg':ℝ → ℝhf:DifferentiableOn ℝ f (Set.Icc a b)hg:DifferentiableOn ℝ g (Set.Icc a b)hf':f' = derivWithin f (Set.Icc a b)hg':g' = derivWithin g (Set.Icc a b)hfa:f a = 0hga:g a = 0hgnon:∀ x ∈ Set.Icc a b, g' x ≠ 0hderiv:Filter.Tendsto (fun x => f' x / g' x) (nhdsWithin a (Set.Icc a b)) (nhds L)hfcon:ContinuousOn f (Set.Icc a b)hgcon:ContinuousOn g (Set.Icc a b)this:∀ x ∈ Set.Ioc a b, g x ≠ 0 :=
fun x hx =>
id fun this =>
have this :=
HasDerivWithinAt.exist_zero (Eq.mp Set.mem_Ioc._simp_1 hx).left
(ContinuousOn.mono hgcon (Filter.Tendsto.of_div'._proof_5 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(DifferentiableOn.mono hg (Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)))
(Filter.Tendsto.of_div'._proof_6 hga x this);
(fun y x_1 =>
have this :=
Filter.Tendsto.of_div'._proof_4 x (Eq.mp Set.mem_Ioc._simp_1 hx) y (Eq.mp Set.mem_Ioo._simp_1 x_1.left);
have hg :=
Eq.mpr (id (congrArg (fun _a => HasDerivWithinAt g (_a y) (Set.Ioo a x) y) hg'))
(HasDerivWithinAt.mono
(DifferentiableWithinAt.hasDerivWithinAt
(Eq.mp (congrArg (fun _a => _a) (DifferentiableOn.eq_1 ℝ g (Set.Icc a b))) hg y this))
(Filter.Tendsto.of_div'._proof_2 x (Eq.mp Set.mem_Ioc._simp_1 hx)));
have hd :=
derivative_unique
(ClusterPt.mono
(of_eq_true
(Eq.trans Filter.Tendsto.of_div'._simp_2
(Eq.trans
(Eq.trans
(congrFun'
(congrArg Membership.mem
(closure_Ioo
(have this :=
Not.intro fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf a)
(Mathlib.Tactic.Ring.atom_pf y)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (a ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul a (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero a (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)
(neg_eq_zero.mpr (sub_eq_zero_of_eq a_1))));
this)))
y)
Set.mem_Icc._simp_1)
(Eq.trans
(congr (congrArg And (eq_true (le_of_lt (Eq.mp Set.mem_Ioo._simp_1 x_1.left).left)))
(Std.le_refl._simp_1 y))
(and_self True)))))
(Filter.principal_mono.mpr (Filter.Tendsto.of_div'._proof_3 x y (Eq.mp Set.mem_Ioo._simp_1 x_1.left))))
hg x_1.right;
False.elim (hgnon y this hd))
(Classical.choose this) (Classical.choose_spec this)⊢ a ≤ b; All goals completed! 🐙end Chapter10