Analysis I, Section 9.6: The maximum principle
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:
-
Continuous functions on closed and bounded intervals are bounded.
-
Continuous functions on closed and bounded intervals attain their maximum and minimum.
namespace Chapter9
abbrev BddBelowOn (f:ℝ → ℝ) (X:Set ℝ) : Prop := ∃ M, ∀ x ∈ X, -M ≤ f xabbrev BddOn (f:ℝ → ℝ) (X:Set ℝ) : Prop := ∃ M, ∀ x ∈ X, |f x| ≤ MRemark 9.6.2
theorem BddOn.iff (f:ℝ → ℝ) (X:Set ℝ) : BddOn f X ↔ BddAboveOn f X ∧ BddBelowOn f X := f:ℝ → ℝX:Set ℝ⊢ BddOn f X ↔ BddAboveOn f X ∧ BddBelowOn f X
All goals completed! 🐙theorem BddOn.iff' (f:ℝ → ℝ) (X:Set ℝ) : BddOn f X ↔ Bornology.IsBounded (f '' X) := f:ℝ → ℝX:Set ℝ⊢ BddOn f X ↔ Bornology.IsBounded (f '' X)
All goals completed! 🐙theorem BddOn.of_bounded {f :ℝ → ℝ} {X: Set ℝ} {M:ℝ} (h: ∀ x ∈ X, |f x| ≤ M) : BddOn f X := f:ℝ → ℝX:Set ℝM:ℝh:∀ x ∈ X, |f x| ≤ M⊢ BddOn f X All goals completed! 🐙example : Continuous (fun x:ℝ ↦ x) := ⊢ Continuous fun x => x All goals completed! 🐙example : ¬ BddOn (fun x:ℝ ↦ x) .univ := ⊢ ¬BddOn (fun x => x) Set.univ All goals completed! 🐙example : BddOn (fun x:ℝ ↦ x) (.Icc 1 2) := ⊢ BddOn (fun x => x) (Set.Icc 1 2) All goals completed! 🐙example : ContinuousOn (fun x:ℝ ↦ 1/x) (.Ioo 0 1) := ⊢ ContinuousOn (fun x => 1 / x) (Set.Ioo 0 1) All goals completed! 🐙example : ¬ BddOn (fun x:ℝ ↦ 1/x) (.Ioo 0 1) := ⊢ ¬BddOn (fun x => 1 / x) (Set.Ioo 0 1) All goals completed! 🐙theorem why_7_6_3 {n: ℕ → ℕ} (hn: StrictMono n) (j:ℕ) : n j ≥ j := n:ℕ → ℕhn:StrictMono nj:ℕ⊢ n j ≥ j All goals completed! 🐙Lemma 9.6.3
theorem BddOn.of_continuous_on_compact {a b:ℝ} (_h:a < b) {f:ℝ → ℝ} (hf: ContinuousOn f (.Icc a b) ) :
BddOn f (.Icc a b) := a:ℝb:ℝ_h:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)⊢ BddOn f (Set.Icc a b)
-- This proof is written to follow the structure of the original text.
a:ℝb:ℝ_h:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)hunbound:∀ (M : ℝ), ∃ x ∈ Set.Icc a b, M < |f x|⊢ False; a:ℝb:ℝ_h:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)hunbound:∀ (M : ℝ), ∃ x, (a ≤ x ∧ x ≤ b) ∧ M < |f x|⊢ False
a:ℝb:ℝ_h:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)hunbound:∀ (M : ℝ), ∃ x, (a ≤ x ∧ x ≤ b) ∧ M < |f x|x:ℕ → ℝ := fun n => ⋯.choose⊢ False
have hx (n:ℕ) : a ≤ x n ∧ x n ≤ b ∧ n < |f (x n)| := a:ℝb:ℝ_h:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)⊢ BddOn f (Set.Icc a b)
a:ℝb:ℝ_h:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)hunbound:∀ (M : ℝ), ∃ x, (a ≤ x ∧ x ≤ b) ∧ M < |f x|x:ℕ → ℝ := fun n => ⋯.choosen:ℕh3:↑n < |f ⋯.choose|h1:a ≤ ⋯.chooseh2:⋯.choose ≤ b⊢ a ≤ x n ∧ x n ≤ b ∧ ↑n < |f (x n)|; All goals completed! 🐙
a:ℝb:ℝ_h:a < bf:ℝ → ℝhunbound:∀ (M : ℝ), ∃ x, (a ≤ x ∧ x ≤ b) ∧ M < |f x|x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), a ≤ x n ∧ x n ≤ b ∧ ↑n < |f (x n)| := fun n => And.casesOn (Exists.choose_spec (hunbound ↑n)) fun left h3 => And.casesOn left fun h1 h2 => ⟨h1, ⟨h2, h3⟩⟩X:Set ℝ := Set.Icc a bhf:ContinuousOn f X⊢ False
a:ℝb:ℝ_h:a < bf:ℝ → ℝhunbound:∀ (M : ℝ), ∃ x, (a ≤ x ∧ x ≤ b) ∧ M < |f x|x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), a ≤ x n ∧ x n ≤ b ∧ ↑n < |f (x n)| := fun n => And.casesOn (Exists.choose_spec (hunbound ↑n)) fun left h3 => And.casesOn left fun h1 h2 => ⟨h1, ⟨h2, h3⟩⟩X:Set ℝ := Set.Icc a bhf:ContinuousOn f XhXclosed:IsClosed (Set.Icc a b)⊢ False
a:ℝb:ℝ_h:a < bf:ℝ → ℝhunbound:∀ (M : ℝ), ∃ x, (a ≤ x ∧ x ≤ b) ∧ M < |f x|x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), a ≤ x n ∧ x n ≤ b ∧ ↑n < |f (x n)| := fun n => And.casesOn (Exists.choose_spec (hunbound ↑n)) fun left h3 => And.casesOn left fun h1 h2 => ⟨h1, ⟨h2, h3⟩⟩X:Set ℝ := Set.Icc a bhf:ContinuousOn f XhXclosed:IsClosed (Set.Icc a b)hXbounded:Bornology.IsBounded (Set.Icc a b)⊢ False
have haX (n:ℕ): x n ∈ X := a:ℝb:ℝ_h:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)⊢ BddOn f (Set.Icc a b) a:ℝb:ℝ_h:a < bf:ℝ → ℝhunbound:∀ (M : ℝ), ∃ x, (a ≤ x ∧ x ≤ b) ∧ M < |f x|x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), a ≤ x n ∧ x n ≤ b ∧ ↑n < |f (x n)| := fun n => And.casesOn (Exists.choose_spec (hunbound ↑n)) fun left h3 => And.casesOn left fun h1 h2 => ⟨h1, ⟨h2, h3⟩⟩X:Set ℝ := Set.Icc a bhf:ContinuousOn f XhXclosed:IsClosed (Set.Icc a b)hXbounded:Bornology.IsBounded (Set.Icc a b)n:ℕ⊢ a ≤ x n ∧ x n ≤ b; a:ℝb:ℝ_h:a < bf:ℝ → ℝhunbound:∀ (M : ℝ), ∃ x, (a ≤ x ∧ x ≤ b) ∧ M < |f x|x:ℕ → ℝ := fun n => ⋯.chooseX:Set ℝ := Set.Icc a bhf:ContinuousOn f XhXclosed:IsClosed (Set.Icc a b)hXbounded:Bornology.IsBounded (Set.Icc a b)n:ℕhx:a ≤ x n ∧ x n ≤ b ∧ ↑n < |f (x n)|⊢ a ≤ x n ∧ x n ≤ b; All goals completed! 🐙
a:ℝb:ℝ_h:a < bf:ℝ → ℝhunbound:∀ (M : ℝ), ∃ x, (a ≤ x ∧ x ≤ b) ∧ M < |f x|x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), a ≤ x n ∧ x n ≤ b ∧ ↑n < |f (x n)| := fun n => And.casesOn (Exists.choose_spec (hunbound ↑n)) fun left h3 => And.casesOn left fun h1 h2 => ⟨h1, ⟨h2, h3⟩⟩X:Set ℝ := Set.Icc a bhf:ContinuousOn f XhXclosed:IsClosed (Set.Icc a b)hXbounded:Bornology.IsBounded (Set.Icc a b)haX:∀ (n : ℕ), x n ∈ X := fun n => Eq.mpr (id Set.mem_Icc._simp_1) (of_continuous_on_compact._proof_2 hunbound n (hx n))n:ℕ → ℕhn:StrictMono nL:ℝhLX:L ∈ Xhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds L)⊢ False
a:ℝb:ℝ_h:a < bf:ℝ → ℝhunbound:∀ (M : ℝ), ∃ x, (a ≤ x ∧ x ≤ b) ∧ M < |f x|x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), a ≤ x n ∧ x n ≤ b ∧ ↑n < |f (x n)| := fun n => And.casesOn (Exists.choose_spec (hunbound ↑n)) fun left h3 => And.casesOn left fun h1 h2 => ⟨h1, ⟨h2, h3⟩⟩X:Set ℝ := Set.Icc a bhf:ContinuousOn f XhXclosed:IsClosed (Set.Icc a b)hXbounded:Bornology.IsBounded (Set.Icc a b)haX:∀ (n : ℕ), x n ∈ X := fun n => Eq.mpr (id Set.mem_Icc._simp_1) (of_continuous_on_compact._proof_2 hunbound n (hx n))n:ℕ → ℕhn:StrictMono nL:ℝhLX:L ∈ Xhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds L)why:∀ (j : ℕ), n j ≥ j := fun j => why_7_6_3 hn j⊢ False
a:ℝb:ℝ_h:a < bf:ℝ → ℝhunbound:∀ (M : ℝ), ∃ x, (a ≤ x ∧ x ≤ b) ∧ M < |f x|x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), a ≤ x n ∧ x n ≤ b ∧ ↑n < |f (x n)| := fun n => And.casesOn (Exists.choose_spec (hunbound ↑n)) fun left h3 => And.casesOn left fun h1 h2 => ⟨h1, ⟨h2, h3⟩⟩X:Set ℝ := Set.Icc a bhXclosed:IsClosed (Set.Icc a b)hXbounded:Bornology.IsBounded (Set.Icc a b)haX:∀ (n : ℕ), x n ∈ X := fun n => Eq.mpr (id Set.mem_Icc._simp_1) (of_continuous_on_compact._proof_2 hunbound n (hx n))n:ℕ → ℕhn:StrictMono nL:ℝhLX:L ∈ Xhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds L)why:∀ (j : ℕ), n j ≥ j := fun j => why_7_6_3 hn jhf:ContinuousWithinAt f X L := ContinuousOn.continuousWithinAt _fvar.11023 hLX⊢ False
a:ℝb:ℝ_h:a < bf:ℝ → ℝhunbound:∀ (M : ℝ), ∃ x, (a ≤ x ∧ x ≤ b) ∧ M < |f x|x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), a ≤ x n ∧ x n ≤ b ∧ ↑n < |f (x n)| := fun n => And.casesOn (Exists.choose_spec (hunbound ↑n)) fun left h3 => And.casesOn left fun h1 h2 => ⟨h1, ⟨h2, h3⟩⟩X:Set ℝ := Set.Icc a bhXclosed:IsClosed (Set.Icc a b)hXbounded:Bornology.IsBounded (Set.Icc a b)haX:∀ (n : ℕ), x n ∈ X := fun n => Eq.mpr (id Set.mem_Icc._simp_1) (of_continuous_on_compact._proof_2 hunbound n (hx n))n:ℕ → ℕhn:StrictMono nL:ℝhLX:L ∈ Xhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds L)why:∀ (j : ℕ), n j ≥ j := fun j => why_7_6_3 hn jhf:Convergesto X f (f L) L⊢ False
a:ℝb:ℝ_h:a < bf:ℝ → ℝhunbound:∀ (M : ℝ), ∃ x, (a ≤ x ∧ x ≤ b) ∧ M < |f x|x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), a ≤ x n ∧ x n ≤ b ∧ ↑n < |f (x n)| := fun n => And.casesOn (Exists.choose_spec (hunbound ↑n)) fun left h3 => And.casesOn left fun h1 h2 => ⟨h1, ⟨h2, h3⟩⟩X:Set ℝ := Set.Icc a bhXclosed:IsClosed (Set.Icc a b)hXbounded:Bornology.IsBounded (Set.Icc a b)haX:∀ (n : ℕ), x n ∈ X := fun n => Eq.mpr (id Set.mem_Icc._simp_1) (of_continuous_on_compact._proof_2 hunbound n (hx n))n:ℕ → ℕhn:StrictMono nL:ℝhLX:L ∈ Xhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds L)why:∀ (j : ℕ), n j ≥ j := fun j => why_7_6_3 hn jhf:Filter.Tendsto (fun n_1 => f (x (n n_1))) Filter.atTop (nhds (f L)) := Convergesto.comp (AdherentPt.of_mem hLX) _fvar.21304 (fun j => haX (n j)) hconv⊢ False
a:ℝb:ℝ_h:a < bf:ℝ → ℝhunbound:∀ (M : ℝ), ∃ x, (a ≤ x ∧ x ≤ b) ∧ M < |f x|x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), a ≤ x n ∧ x n ≤ b ∧ ↑n < |f (x n)| := fun n => And.casesOn (Exists.choose_spec (hunbound ↑n)) fun left h3 => And.casesOn left fun h1 h2 => ⟨h1, ⟨h2, h3⟩⟩X:Set ℝ := Set.Icc a bhXclosed:IsClosed (Set.Icc a b)hXbounded:Bornology.IsBounded (Set.Icc a b)haX:∀ (n : ℕ), x n ∈ X := fun n => Eq.mpr (id Set.mem_Icc._simp_1) (of_continuous_on_compact._proof_2 hunbound n (hx n))n:ℕ → ℕhn:StrictMono nL:ℝhLX:L ∈ Xhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds L)why:∀ (j : ℕ), n j ≥ j := fun j => why_7_6_3 hn jhf:Bornology.IsBounded (Set.range fun n_1 => f (x (n n_1)))⊢ False
a:ℝb:ℝ_h:a < bf:ℝ → ℝhunbound:∀ (M : ℝ), ∃ x, (a ≤ x ∧ x ≤ b) ∧ M < |f x|x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), a ≤ x n ∧ x n ≤ b ∧ ↑n < |f (x n)| := fun n => And.casesOn (Exists.choose_spec (hunbound ↑n)) fun left h3 => And.casesOn left fun h1 h2 => ⟨h1, ⟨h2, h3⟩⟩X:Set ℝ := Set.Icc a bhXclosed:IsClosed (Set.Icc a b)hXbounded:Bornology.IsBounded (Set.Icc a b)haX:∀ (n : ℕ), x n ∈ X := fun n => Eq.mpr (id Set.mem_Icc._simp_1) (of_continuous_on_compact._proof_2 hunbound n (hx n))n:ℕ → ℕhn:StrictMono nL:ℝhLX:L ∈ Xhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds L)why:∀ (j : ℕ), n j ≥ j := fun j => why_7_6_3 hn jhf:∃ M > 0, (Set.range fun n_1 => f (x (n n_1))) ⊆ Set.Icc (-M) M⊢ False; a:ℝb:ℝ_h:a < bf:ℝ → ℝhunbound:∀ (M : ℝ), ∃ x, (a ≤ x ∧ x ≤ b) ∧ M < |f x|x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), a ≤ x n ∧ x n ≤ b ∧ ↑n < |f (x n)| := fun n => And.casesOn (Exists.choose_spec (hunbound ↑n)) fun left h3 => And.casesOn left fun h1 h2 => ⟨h1, ⟨h2, h3⟩⟩X:Set ℝ := Set.Icc a bhXclosed:IsClosed (Set.Icc a b)hXbounded:Bornology.IsBounded (Set.Icc a b)haX:∀ (n : ℕ), x n ∈ X := fun n => Eq.mpr (id Set.mem_Icc._simp_1) (of_continuous_on_compact._proof_2 hunbound n (hx n))n:ℕ → ℕhn:StrictMono nL:ℝhLX:L ∈ Xhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds L)why:∀ (j : ℕ), n j ≥ j := fun j => why_7_6_3 hn jM:ℝhpos:M > 0hM:(Set.range fun n_1 => f (x (n n_1))) ⊆ Set.Icc (-M) M⊢ False
a:ℝb:ℝ_h:a < bf:ℝ → ℝhunbound:∀ (M : ℝ), ∃ x, (a ≤ x ∧ x ≤ b) ∧ M < |f x|x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), a ≤ x n ∧ x n ≤ b ∧ ↑n < |f (x n)| := fun n => And.casesOn (Exists.choose_spec (hunbound ↑n)) fun left h3 => And.casesOn left fun h1 h2 => ⟨h1, ⟨h2, h3⟩⟩X:Set ℝ := Set.Icc a bhXclosed:IsClosed (Set.Icc a b)hXbounded:Bornology.IsBounded (Set.Icc a b)haX:∀ (n : ℕ), x n ∈ X := fun n => Eq.mpr (id Set.mem_Icc._simp_1) (of_continuous_on_compact._proof_2 hunbound n (hx n))n:ℕ → ℕhn:StrictMono nL:ℝhLX:L ∈ Xhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds L)why:∀ (j : ℕ), n j ≥ j := fun j => why_7_6_3 hn jM:ℝhpos:M > 0hM:(Set.range fun n_1 => f (x (n n_1))) ⊆ Set.Icc (-M) Mj:ℕhj:M < ↑j⊢ False
a:ℝb:ℝ_h:a < bf:ℝ → ℝhunbound:∀ (M : ℝ), ∃ x, (a ≤ x ∧ x ≤ b) ∧ M < |f x|x:ℕ → ℝ := fun n => ⋯.chooseX:Set ℝ := Set.Icc a bhXclosed:IsClosed (Set.Icc a b)hXbounded:Bornology.IsBounded (Set.Icc a b)haX:∀ (n : ℕ), x n ∈ X := fun n => Eq.mpr (id Set.mem_Icc._simp_1) (of_continuous_on_compact._proof_2 hunbound n (hx n))n:ℕ → ℕhn:StrictMono nL:ℝhLX:L ∈ Xhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds L)why:∀ (j : ℕ), n j ≥ j := fun j => why_7_6_3 hn jM:ℝhpos:M > 0hM:(Set.range fun n_1 => f (x (n n_1))) ⊆ Set.Icc (-M) Mj:ℕhj:M < ↑jhx:↑(n j) < |f (x (n j))| := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)⊢ False
replace hM : f (x (n j)) ∈ Set.Icc (-M) M := a:ℝb:ℝ_h:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)⊢ BddOn f (Set.Icc a b) All goals completed! 🐙
a:ℝb:ℝ_h:a < bf:ℝ → ℝhunbound:∀ (M : ℝ), ∃ x, (a ≤ x ∧ x ≤ b) ∧ M < |f x|x:ℕ → ℝ := fun n => ⋯.chooseX:Set ℝ := Set.Icc a bhXclosed:IsClosed (Set.Icc a b)hXbounded:Bornology.IsBounded (Set.Icc a b)haX:∀ (n : ℕ), x n ∈ X := fun n => Eq.mpr (id Set.mem_Icc._simp_1) (of_continuous_on_compact._proof_2 hunbound n (hx n))n:ℕ → ℕhn:StrictMono nL:ℝhLX:L ∈ Xhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds L)why:∀ (j : ℕ), n j ≥ j := fun j => why_7_6_3 hn jM:ℝhpos:M > 0j:ℕhj:M < ↑jhx:↑(n j) < |f (x (n j))| := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hM:|f (x (n j))| ≤ M⊢ False
have : n j ≥ (j:ℝ) := a:ℝb:ℝ_h:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)⊢ BddOn f (Set.Icc a b) All goals completed! 🐙
All goals completed! 🐙Remark 9.6.6
theorem BddAboveOn.isMaxOn {f:ℝ → ℝ} {X:Set ℝ} {x₀:ℝ} (h: IsMaxOn f X x₀): BddAboveOn f X := f:ℝ → ℝX:Set ℝx₀:ℝh:IsMaxOn f X x₀⊢ BddAboveOn f X All goals completed! 🐙theorem BddBelowOn.isMinOn {f:ℝ → ℝ} {X:Set ℝ} {x₀:ℝ} (h: IsMinOn f X x₀): BddBelowOn f X := f:ℝ → ℝX:Set ℝx₀:ℝh:IsMinOn f X x₀⊢ BddBelowOn f X All goals completed! 🐙Proposition 9.6.7 (Maximum principle)
theorem IsMaxOn.of_continuous_on_compact {a b:ℝ} (h:a < b) {f:ℝ → ℝ} (hf: ContinuousOn f (.Icc a b)) :
∃ xmax ∈ Set.Icc a b, IsMaxOn f (.Icc a b) xmax := a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)⊢ ∃ xmax ∈ Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax
-- This proof is written to follow the structure of the original text.
a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ M⊢ ∃ xmax ∈ Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax
a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a b⊢ ∃ xmax ∈ Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax
have hE : E ⊆ .Icc (-M) M := a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)⊢ ∃ xmax ∈ Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bx:ℝhx:x ∈ Set.Icc a b⊢ f x ∈ Set.Icc (-M) M; All goals completed! 🐙
have hnon : E ≠ ∅ := a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)⊢ ∃ xmax ∈ Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))⊢ ¬Set.Icc a b = ∅; a:ℝb:ℝf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))h:Set.Icc a b = ∅⊢ b ≤ a; All goals completed! 🐙
a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup E⊢ ∃ xmax ∈ Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax
a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hy⊢ ∃ xmax ∈ Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax
a:ℝb:ℝh✝:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hyh:∃ xmax ∈ Set.Icc a b, f xmax = m⊢ ∃ xmax ∈ Set.Icc a b, IsMaxOn f (Set.Icc a b) xmaxa:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hy⊢ ∃ xmax ∈ Set.Icc a b, f xmax = m
a:ℝb:ℝh✝:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hyh:∃ xmax ∈ Set.Icc a b, f xmax = m⊢ ∃ xmax ∈ Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax All goals completed! 🐙
have claim2 (n:ℕ) : ∃ x ∈ Set.Icc a b, m - 1/(n+1:ℝ) < f x := a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)⊢ ∃ xmax ∈ Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax
have : 1/(n+1:ℝ) > 0 := a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)⊢ ∃ xmax ∈ Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax All goals completed! 🐙
replace : m - 1/(n+1:ℝ) < sSup E := a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)⊢ ∃ xmax ∈ Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax All goals completed! 🐙
a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E.Nonemptym:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ mn:ℕthis:m - 1 / (↑n + 1) < sSup E⊢ ∃ x ∈ Set.Icc a b, m - 1 / (↑n + 1) < f x
a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E.Nonemptym:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ mn:ℕthis:∃ a ∈ E, m - 1 / (↑n + 1) < a⊢ ∃ x ∈ Set.Icc a b, m - 1 / (↑n + 1) < f x
All goals completed! 🐙
a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hyclaim2:∀ (n : ℕ), ∃ x ∈ Set.Icc a b, m - 1 / (↑n + 1) < f x :=
fun n =>
have this :=
div_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl (Nat.ble 1 1)))
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))));
have this :=
lt_of_not_ge fun a =>
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.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.zero_mul 0) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_zero_add
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast +
0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf (sSup E))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_add
(Mathlib.Tactic.Ring.neg_mul (sSup E) (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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (sSup E) (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_zero_add 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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.add_lt_of_neg_of_le
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Linarith.without_one_mul (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl)))
(Mathlib.Tactic.Linarith.sub_neg_of_lt this))
(Eq.mp
(congrArg (fun _a => _a ≤ 0)
(Mathlib.Tactic.Linarith.without_one_mul
(Mathlib.Tactic.CancelDenoms.sub_subst rfl (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))));
of_continuous_on_compact._proof_2 n
(exists_lt_of_lt_csSup (Eq.mp (congrArg (fun _a => _a) (Eq.symm (propext Set.nonempty_iff_ne_empty))) hnon) this)x:ℕ → ℝ := fun n => ⋯.choose⊢ ∃ xmax ∈ Set.Icc a b, f xmax = m
a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hyclaim2:∀ (n : ℕ), ∃ x ∈ Set.Icc a b, m - 1 / (↑n + 1) < f x :=
fun n =>
have this :=
div_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl (Nat.ble 1 1)))
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))));
have this :=
lt_of_not_ge fun a =>
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.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.zero_mul 0) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_zero_add
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast +
0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf (sSup E))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_add
(Mathlib.Tactic.Ring.neg_mul (sSup E) (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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (sSup E) (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_zero_add 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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.add_lt_of_neg_of_le
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Linarith.without_one_mul (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl)))
(Mathlib.Tactic.Linarith.sub_neg_of_lt this))
(Eq.mp
(congrArg (fun _a => _a ≤ 0)
(Mathlib.Tactic.Linarith.without_one_mul
(Mathlib.Tactic.CancelDenoms.sub_subst rfl (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))));
of_continuous_on_compact._proof_2 n
(exists_lt_of_lt_csSup (Eq.mp (congrArg (fun _a => _a) (Eq.symm (propext Set.nonempty_iff_ne_empty))) hnon) this)x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), x n ∈ Set.Icc a b := fun n => (Exists.choose_spec (claim2 n)).left⊢ ∃ xmax ∈ Set.Icc a b, f xmax = m
a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hyclaim2:∀ (n : ℕ), ∃ x ∈ Set.Icc a b, m - 1 / (↑n + 1) < f x :=
fun n =>
have this :=
div_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl (Nat.ble 1 1)))
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))));
have this :=
lt_of_not_ge fun a =>
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.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.zero_mul 0) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_zero_add
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast +
0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf (sSup E))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_add
(Mathlib.Tactic.Ring.neg_mul (sSup E) (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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (sSup E) (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_zero_add 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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.add_lt_of_neg_of_le
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Linarith.without_one_mul (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl)))
(Mathlib.Tactic.Linarith.sub_neg_of_lt this))
(Eq.mp
(congrArg (fun _a => _a ≤ 0)
(Mathlib.Tactic.Linarith.without_one_mul
(Mathlib.Tactic.CancelDenoms.sub_subst rfl (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))));
of_continuous_on_compact._proof_2 n
(exists_lt_of_lt_csSup (Eq.mp (congrArg (fun _a => _a) (Eq.symm (propext Set.nonempty_iff_ne_empty))) hnon) this)x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), x n ∈ Set.Icc a b := fun n => (Exists.choose_spec (claim2 n)).lefthfx:∀ (n : ℕ), m - 1 / (↑n + 1) < f (x n) := fun n => (Exists.choose_spec (claim2 n)).right⊢ ∃ xmax ∈ Set.Icc a b, f xmax = m
a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hyclaim2:∀ (n : ℕ), ∃ x ∈ Set.Icc a b, m - 1 / (↑n + 1) < f x :=
fun n =>
have this :=
div_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl (Nat.ble 1 1)))
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))));
have this :=
lt_of_not_ge fun a =>
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.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.zero_mul 0) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_zero_add
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast +
0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf (sSup E))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_add
(Mathlib.Tactic.Ring.neg_mul (sSup E) (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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (sSup E) (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_zero_add 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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.add_lt_of_neg_of_le
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Linarith.without_one_mul (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl)))
(Mathlib.Tactic.Linarith.sub_neg_of_lt this))
(Eq.mp
(congrArg (fun _a => _a ≤ 0)
(Mathlib.Tactic.Linarith.without_one_mul
(Mathlib.Tactic.CancelDenoms.sub_subst rfl (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))));
of_continuous_on_compact._proof_2 n
(exists_lt_of_lt_csSup (Eq.mp (congrArg (fun _a => _a) (Eq.symm (propext Set.nonempty_iff_ne_empty))) hnon) this)x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), x n ∈ Set.Icc a b := fun n => (Exists.choose_spec (claim2 n)).lefthfx:∀ (n : ℕ), m - 1 / (↑n + 1) < f (x n) := fun n => (Exists.choose_spec (claim2 n)).righthclosed:IsClosed (Set.Icc a b)⊢ ∃ xmax ∈ Set.Icc a b, f xmax = m
a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hyclaim2:∀ (n : ℕ), ∃ x ∈ Set.Icc a b, m - 1 / (↑n + 1) < f x :=
fun n =>
have this :=
div_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl (Nat.ble 1 1)))
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))));
have this :=
lt_of_not_ge fun a =>
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.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.zero_mul 0) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_zero_add
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast +
0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf (sSup E))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_add
(Mathlib.Tactic.Ring.neg_mul (sSup E) (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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (sSup E) (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_zero_add 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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.add_lt_of_neg_of_le
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Linarith.without_one_mul (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl)))
(Mathlib.Tactic.Linarith.sub_neg_of_lt this))
(Eq.mp
(congrArg (fun _a => _a ≤ 0)
(Mathlib.Tactic.Linarith.without_one_mul
(Mathlib.Tactic.CancelDenoms.sub_subst rfl (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))));
of_continuous_on_compact._proof_2 n
(exists_lt_of_lt_csSup (Eq.mp (congrArg (fun _a => _a) (Eq.symm (propext Set.nonempty_iff_ne_empty))) hnon) this)x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), x n ∈ Set.Icc a b := fun n => (Exists.choose_spec (claim2 n)).lefthfx:∀ (n : ℕ), m - 1 / (↑n + 1) < f (x n) := fun n => (Exists.choose_spec (claim2 n)).righthclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)⊢ ∃ xmax ∈ Set.Icc a b, f xmax = m
a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hyclaim2:∀ (n : ℕ), ∃ x ∈ Set.Icc a b, m - 1 / (↑n + 1) < f x :=
fun n =>
have this :=
div_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl (Nat.ble 1 1)))
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))));
have this :=
lt_of_not_ge fun a =>
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.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.zero_mul 0) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_zero_add
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast +
0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf (sSup E))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_add
(Mathlib.Tactic.Ring.neg_mul (sSup E) (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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (sSup E) (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_zero_add 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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.add_lt_of_neg_of_le
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Linarith.without_one_mul (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl)))
(Mathlib.Tactic.Linarith.sub_neg_of_lt this))
(Eq.mp
(congrArg (fun _a => _a ≤ 0)
(Mathlib.Tactic.Linarith.without_one_mul
(Mathlib.Tactic.CancelDenoms.sub_subst rfl (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))));
of_continuous_on_compact._proof_2 n
(exists_lt_of_lt_csSup (Eq.mp (congrArg (fun _a => _a) (Eq.symm (propext Set.nonempty_iff_ne_empty))) hnon) this)x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), x n ∈ Set.Icc a b := fun n => (Exists.choose_spec (claim2 n)).lefthfx:∀ (n : ℕ), m - 1 / (↑n + 1) < f (x n) := fun n => (Exists.choose_spec (claim2 n)).righthclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n:ℕ → ℕhn:StrictMono nxmax:ℝhmax:xmax ∈ Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)⊢ ∃ xmax ∈ Set.Icc a b, f xmax = m
a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hyclaim2:∀ (n : ℕ), ∃ x ∈ Set.Icc a b, m - 1 / (↑n + 1) < f x :=
fun n =>
have this :=
div_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl (Nat.ble 1 1)))
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))));
have this :=
lt_of_not_ge fun a =>
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.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.zero_mul 0) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_zero_add
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast +
0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf (sSup E))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_add
(Mathlib.Tactic.Ring.neg_mul (sSup E) (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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (sSup E) (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_zero_add 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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.add_lt_of_neg_of_le
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Linarith.without_one_mul (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl)))
(Mathlib.Tactic.Linarith.sub_neg_of_lt this))
(Eq.mp
(congrArg (fun _a => _a ≤ 0)
(Mathlib.Tactic.Linarith.without_one_mul
(Mathlib.Tactic.CancelDenoms.sub_subst rfl (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))));
of_continuous_on_compact._proof_2 n
(exists_lt_of_lt_csSup (Eq.mp (congrArg (fun _a => _a) (Eq.symm (propext Set.nonempty_iff_ne_empty))) hnon) this)x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), x n ∈ Set.Icc a b := fun n => (Exists.choose_spec (claim2 n)).lefthfx:∀ (n : ℕ), m - 1 / (↑n + 1) < f (x n) := fun n => (Exists.choose_spec (claim2 n)).righthclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n:ℕ → ℕhn:StrictMono nxmax:ℝhmax:xmax ∈ Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)⊢ f xmax = m
a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hyclaim2:∀ (n : ℕ), ∃ x ∈ Set.Icc a b, m - 1 / (↑n + 1) < f x :=
fun n =>
have this :=
div_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl (Nat.ble 1 1)))
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))));
have this :=
lt_of_not_ge fun a =>
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.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.zero_mul 0) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_zero_add
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast +
0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf (sSup E))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_add
(Mathlib.Tactic.Ring.neg_mul (sSup E) (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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (sSup E) (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_zero_add 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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.add_lt_of_neg_of_le
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Linarith.without_one_mul (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl)))
(Mathlib.Tactic.Linarith.sub_neg_of_lt this))
(Eq.mp
(congrArg (fun _a => _a ≤ 0)
(Mathlib.Tactic.Linarith.without_one_mul
(Mathlib.Tactic.CancelDenoms.sub_subst rfl (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))));
of_continuous_on_compact._proof_2 n
(exists_lt_of_lt_csSup (Eq.mp (congrArg (fun _a => _a) (Eq.symm (propext Set.nonempty_iff_ne_empty))) hnon) this)x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), x n ∈ Set.Icc a b := fun n => (Exists.choose_spec (claim2 n)).lefthfx:∀ (n : ℕ), m - 1 / (↑n + 1) < f (x n) := fun n => (Exists.choose_spec (claim2 n)).righthclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n:ℕ → ℕhn:StrictMono nxmax:ℝhmax:xmax ∈ Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower:∀ (j : ℕ), n j ≥ j := fun j => why_7_6_3 hn j⊢ f xmax = m
a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hyclaim2:∀ (n : ℕ), ∃ x ∈ Set.Icc a b, m - 1 / (↑n + 1) < f x :=
fun n =>
have this :=
div_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl (Nat.ble 1 1)))
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))));
have this :=
lt_of_not_ge fun a =>
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.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.zero_mul 0) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_zero_add
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast +
0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf (sSup E))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_add
(Mathlib.Tactic.Ring.neg_mul (sSup E) (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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (sSup E) (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_zero_add 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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.add_lt_of_neg_of_le
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Linarith.without_one_mul (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl)))
(Mathlib.Tactic.Linarith.sub_neg_of_lt this))
(Eq.mp
(congrArg (fun _a => _a ≤ 0)
(Mathlib.Tactic.Linarith.without_one_mul
(Mathlib.Tactic.CancelDenoms.sub_subst rfl (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))));
of_continuous_on_compact._proof_2 n
(exists_lt_of_lt_csSup (Eq.mp (congrArg (fun _a => _a) (Eq.symm (propext Set.nonempty_iff_ne_empty))) hnon) this)x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), x n ∈ Set.Icc a b := fun n => (Exists.choose_spec (claim2 n)).lefthfx:∀ (n : ℕ), m - 1 / (↑n + 1) < f (x n) := fun n => (Exists.choose_spec (claim2 n)).righthclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n:ℕ → ℕhn:StrictMono nxmax:ℝhmax:xmax ∈ Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower:∀ (j : ℕ), n j ≥ j := fun j => why_7_6_3 hn jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax)) := Filter.Tendsto.comp_of_continuous hmax (ContinuousOn.continuousWithinAt hf hmax) (fun j => hx (n j)) hconv⊢ f xmax = m
have hlower (j:ℕ) : m - 1/(j+1:ℝ) < f (x (n j)) := a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)⊢ ∃ xmax ∈ Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax
a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hyclaim2:∀ (n : ℕ), ∃ x ∈ Set.Icc a b, m - 1 / (↑n + 1) < f x :=
fun n =>
have this :=
div_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl (Nat.ble 1 1)))
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))));
have this :=
lt_of_not_ge fun a =>
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.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.zero_mul 0) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_zero_add
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast +
0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf (sSup E))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_add
(Mathlib.Tactic.Ring.neg_mul (sSup E) (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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (sSup E) (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_zero_add 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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.add_lt_of_neg_of_le
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Linarith.without_one_mul (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl)))
(Mathlib.Tactic.Linarith.sub_neg_of_lt this))
(Eq.mp
(congrArg (fun _a => _a ≤ 0)
(Mathlib.Tactic.Linarith.without_one_mul
(Mathlib.Tactic.CancelDenoms.sub_subst rfl (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))));
of_continuous_on_compact._proof_2 n
(exists_lt_of_lt_csSup (Eq.mp (congrArg (fun _a => _a) (Eq.symm (propext Set.nonempty_iff_ne_empty))) hnon) this)x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), x n ∈ Set.Icc a b := fun n => (Exists.choose_spec (claim2 n)).lefthfx:∀ (n : ℕ), m - 1 / (↑n + 1) < f (x n) := fun n => (Exists.choose_spec (claim2 n)).righthclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n:ℕ → ℕhn:StrictMono nxmax:ℝhmax:xmax ∈ Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower:∀ (j : ℕ), n j ≥ j := fun j => why_7_6_3 hn jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax)) := Filter.Tendsto.comp_of_continuous hmax (ContinuousOn.continuousWithinAt hf hmax) (fun j => hx (n j)) hconvj:ℕ⊢ m - 1 / (↑j + 1) ≤ m - 1 / (↑(n j) + 1); a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hyclaim2:∀ (n : ℕ), ∃ x ∈ Set.Icc a b, m - 1 / (↑n + 1) < f x :=
fun n =>
have this :=
div_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl (Nat.ble 1 1)))
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))));
have this :=
lt_of_not_ge fun a =>
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.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.zero_mul 0) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_zero_add
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast +
0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf (sSup E))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_add
(Mathlib.Tactic.Ring.neg_mul (sSup E) (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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (sSup E) (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_zero_add 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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.add_lt_of_neg_of_le
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Linarith.without_one_mul (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl)))
(Mathlib.Tactic.Linarith.sub_neg_of_lt this))
(Eq.mp
(congrArg (fun _a => _a ≤ 0)
(Mathlib.Tactic.Linarith.without_one_mul
(Mathlib.Tactic.CancelDenoms.sub_subst rfl (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))));
of_continuous_on_compact._proof_2 n
(exists_lt_of_lt_csSup (Eq.mp (congrArg (fun _a => _a) (Eq.symm (propext Set.nonempty_iff_ne_empty))) hnon) this)x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), x n ∈ Set.Icc a b := fun n => (Exists.choose_spec (claim2 n)).lefthfx:∀ (n : ℕ), m - 1 / (↑n + 1) < f (x n) := fun n => (Exists.choose_spec (claim2 n)).righthclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n:ℕ → ℕhn:StrictMono nxmax:ℝhmax:xmax ∈ Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower:∀ (j : ℕ), n j ≥ j := fun j => why_7_6_3 hn jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax)) := Filter.Tendsto.comp_of_continuous hmax (ContinuousOn.continuousWithinAt hf hmax) (fun j => hx (n j)) hconvj:ℕ⊢ j ≤ n j; All goals completed! 🐙
have hupper (j:ℕ) : f (x (n j)) ≤ m := a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)⊢ ∃ xmax ∈ Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hyclaim2:∀ (n : ℕ), ∃ x ∈ Set.Icc a b, m - 1 / (↑n + 1) < f x :=
fun n =>
have this :=
div_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl (Nat.ble 1 1)))
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))));
have this :=
lt_of_not_ge fun a =>
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.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.zero_mul 0) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_zero_add
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast +
0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf (sSup E))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_add
(Mathlib.Tactic.Ring.neg_mul (sSup E) (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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (sSup E) (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_zero_add 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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.add_lt_of_neg_of_le
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Linarith.without_one_mul (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl)))
(Mathlib.Tactic.Linarith.sub_neg_of_lt this))
(Eq.mp
(congrArg (fun _a => _a ≤ 0)
(Mathlib.Tactic.Linarith.without_one_mul
(Mathlib.Tactic.CancelDenoms.sub_subst rfl (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))));
of_continuous_on_compact._proof_2 n
(exists_lt_of_lt_csSup (Eq.mp (congrArg (fun _a => _a) (Eq.symm (propext Set.nonempty_iff_ne_empty))) hnon) this)x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), x n ∈ Set.Icc a b := fun n => (Exists.choose_spec (claim2 n)).lefthfx:∀ (n : ℕ), m - 1 / (↑n + 1) < f (x n) := fun n => (Exists.choose_spec (claim2 n)).righthclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n:ℕ → ℕhn:StrictMono nxmax:ℝhmax:xmax ∈ Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower:∀ (j : ℕ), n j ≥ j := fun j => why_7_6_3 hn jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax)) := Filter.Tendsto.comp_of_continuous hmax (ContinuousOn.continuousWithinAt hf hmax) (fun j => hx (n j)) hconvhlower:∀ (j : ℕ), m - 1 / (↑j + 1) < f (x (n j)) :=
fun j =>
lt_of_le_of_lt
(sub_le_sub_left
(div_le_div₀
(le_of_lt
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))))
(le_refl 1)
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' j)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))))
(add_le_add_left (Nat.mono_cast (of_continuous_on_compact._proof_5 n hn_lower j)) 1))
m)
(hfx (n j))j:ℕ⊢ f (x (n j)) ∈ E; a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hyclaim2:∀ (n : ℕ), ∃ x ∈ Set.Icc a b, m - 1 / (↑n + 1) < f x :=
fun n =>
have this :=
div_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl (Nat.ble 1 1)))
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))));
have this :=
lt_of_not_ge fun a =>
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.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.zero_mul 0) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_zero_add
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast +
0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf (sSup E))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_add
(Mathlib.Tactic.Ring.neg_mul (sSup E) (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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (sSup E) (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_zero_add 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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.add_lt_of_neg_of_le
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Linarith.without_one_mul (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl)))
(Mathlib.Tactic.Linarith.sub_neg_of_lt this))
(Eq.mp
(congrArg (fun _a => _a ≤ 0)
(Mathlib.Tactic.Linarith.without_one_mul
(Mathlib.Tactic.CancelDenoms.sub_subst rfl (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))));
of_continuous_on_compact._proof_2 n
(exists_lt_of_lt_csSup (Eq.mp (congrArg (fun _a => _a) (Eq.symm (propext Set.nonempty_iff_ne_empty))) hnon) this)x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), x n ∈ Set.Icc a b := fun n => (Exists.choose_spec (claim2 n)).lefthfx:∀ (n : ℕ), m - 1 / (↑n + 1) < f (x n) := fun n => (Exists.choose_spec (claim2 n)).righthclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n:ℕ → ℕhn:StrictMono nxmax:ℝhmax:xmax ∈ Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower:∀ (j : ℕ), n j ≥ j := fun j => why_7_6_3 hn jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax)) := Filter.Tendsto.comp_of_continuous hmax (ContinuousOn.continuousWithinAt hf hmax) (fun j => hx (n j)) hconvhlower:∀ (j : ℕ), m - 1 / (↑j + 1) < f (x (n j)) :=
fun j =>
lt_of_le_of_lt
(sub_le_sub_left
(div_le_div₀
(le_of_lt
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))))
(le_refl 1)
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' j)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))))
(add_le_add_left (Nat.mono_cast (of_continuous_on_compact._proof_5 n hn_lower j)) 1))
m)
(hfx (n j))j:ℕ⊢ ∃ x_1, (a ≤ x_1 ∧ x_1 ≤ b) ∧ f x_1 = f (x (n j)); All goals completed! 🐙
have hconvm : Filter.atTop.Tendsto (fun j ↦ f (x (n j))) (nhds m) := a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)⊢ ∃ xmax ∈ Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax
a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hyclaim2:∀ (n : ℕ), ∃ x ∈ Set.Icc a b, m - 1 / (↑n + 1) < f x :=
fun n =>
have this :=
div_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl (Nat.ble 1 1)))
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))));
have this :=
lt_of_not_ge fun a =>
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.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.zero_mul 0) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_zero_add
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast +
0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf (sSup E))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_add
(Mathlib.Tactic.Ring.neg_mul (sSup E) (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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (sSup E) (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_zero_add 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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.add_lt_of_neg_of_le
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Linarith.without_one_mul (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl)))
(Mathlib.Tactic.Linarith.sub_neg_of_lt this))
(Eq.mp
(congrArg (fun _a => _a ≤ 0)
(Mathlib.Tactic.Linarith.without_one_mul
(Mathlib.Tactic.CancelDenoms.sub_subst rfl (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))));
of_continuous_on_compact._proof_2 n
(exists_lt_of_lt_csSup (Eq.mp (congrArg (fun _a => _a) (Eq.symm (propext Set.nonempty_iff_ne_empty))) hnon) this)x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), x n ∈ Set.Icc a b := fun n => (Exists.choose_spec (claim2 n)).lefthfx:∀ (n : ℕ), m - 1 / (↑n + 1) < f (x n) := fun n => (Exists.choose_spec (claim2 n)).righthclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n:ℕ → ℕhn:StrictMono nxmax:ℝhmax:xmax ∈ Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower:∀ (j : ℕ), n j ≥ j := fun j => why_7_6_3 hn jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax)) := Filter.Tendsto.comp_of_continuous hmax (ContinuousOn.continuousWithinAt hf hmax) (fun j => hx (n j)) hconvhlower:∀ (j : ℕ), m - 1 / (↑j + 1) < f (x (n j)) :=
fun j =>
lt_of_le_of_lt
(sub_le_sub_left
(div_le_div₀
(le_of_lt
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))))
(le_refl 1)
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' j)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))))
(add_le_add_left (Nat.mono_cast (of_continuous_on_compact._proof_5 n hn_lower j)) 1))
m)
(hfx (n j))hupper:∀ (j : ℕ), f (x (n j)) ≤ m :=
fun j =>
claim1
(Eq.mpr
(id
(Eq.trans (Set.mem_image._simp_1 f (Set.Icc a b) (f (x (n j))))
(congrArg Exists (funext fun x_1 => congrFun' (congrArg And Set.mem_Icc._simp_1) (f x_1 = f (x (n j)))))))
(Exists.intro (x (n j)) ⟨hx (n j), Eq.refl (f (x (n j)))⟩))⊢ Filter.Tendsto (fun j => m - 1 / (↑j + 1)) Filter.atTop (nhds m)a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hyclaim2:∀ (n : ℕ), ∃ x ∈ Set.Icc a b, m - 1 / (↑n + 1) < f x :=
fun n =>
have this :=
div_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl (Nat.ble 1 1)))
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))));
have this :=
lt_of_not_ge fun a =>
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.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.zero_mul 0) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_zero_add
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast +
0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf (sSup E))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_add
(Mathlib.Tactic.Ring.neg_mul (sSup E) (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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (sSup E) (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_zero_add 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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.add_lt_of_neg_of_le
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Linarith.without_one_mul (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl)))
(Mathlib.Tactic.Linarith.sub_neg_of_lt this))
(Eq.mp
(congrArg (fun _a => _a ≤ 0)
(Mathlib.Tactic.Linarith.without_one_mul
(Mathlib.Tactic.CancelDenoms.sub_subst rfl (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))));
of_continuous_on_compact._proof_2 n
(exists_lt_of_lt_csSup (Eq.mp (congrArg (fun _a => _a) (Eq.symm (propext Set.nonempty_iff_ne_empty))) hnon) this)x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), x n ∈ Set.Icc a b := fun n => (Exists.choose_spec (claim2 n)).lefthfx:∀ (n : ℕ), m - 1 / (↑n + 1) < f (x n) := fun n => (Exists.choose_spec (claim2 n)).righthclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n:ℕ → ℕhn:StrictMono nxmax:ℝhmax:xmax ∈ Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower:∀ (j : ℕ), n j ≥ j := fun j => why_7_6_3 hn jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax)) := Filter.Tendsto.comp_of_continuous hmax (ContinuousOn.continuousWithinAt hf hmax) (fun j => hx (n j)) hconvhlower:∀ (j : ℕ), m - 1 / (↑j + 1) < f (x (n j)) :=
fun j =>
lt_of_le_of_lt
(sub_le_sub_left
(div_le_div₀
(le_of_lt
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))))
(le_refl 1)
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' j)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))))
(add_le_add_left (Nat.mono_cast (of_continuous_on_compact._proof_5 n hn_lower j)) 1))
m)
(hfx (n j))hupper:∀ (j : ℕ), f (x (n j)) ≤ m :=
fun j =>
claim1
(Eq.mpr
(id
(Eq.trans (Set.mem_image._simp_1 f (Set.Icc a b) (f (x (n j))))
(congrArg Exists (funext fun x_1 => congrFun' (congrArg And Set.mem_Icc._simp_1) (f x_1 = f (x (n j)))))))
(Exists.intro (x (n j)) ⟨hx (n j), Eq.refl (f (x (n j)))⟩))⊢ Filter.Tendsto (fun x => m) Filter.atTop (nhds m)a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hyclaim2:∀ (n : ℕ), ∃ x ∈ Set.Icc a b, m - 1 / (↑n + 1) < f x :=
fun n =>
have this :=
div_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl (Nat.ble 1 1)))
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))));
have this :=
lt_of_not_ge fun a =>
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.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.zero_mul 0) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_zero_add
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast +
0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf (sSup E))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_add
(Mathlib.Tactic.Ring.neg_mul (sSup E) (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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (sSup E) (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_zero_add 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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.add_lt_of_neg_of_le
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Linarith.without_one_mul (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl)))
(Mathlib.Tactic.Linarith.sub_neg_of_lt this))
(Eq.mp
(congrArg (fun _a => _a ≤ 0)
(Mathlib.Tactic.Linarith.without_one_mul
(Mathlib.Tactic.CancelDenoms.sub_subst rfl (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))));
of_continuous_on_compact._proof_2 n
(exists_lt_of_lt_csSup (Eq.mp (congrArg (fun _a => _a) (Eq.symm (propext Set.nonempty_iff_ne_empty))) hnon) this)x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), x n ∈ Set.Icc a b := fun n => (Exists.choose_spec (claim2 n)).lefthfx:∀ (n : ℕ), m - 1 / (↑n + 1) < f (x n) := fun n => (Exists.choose_spec (claim2 n)).righthclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n:ℕ → ℕhn:StrictMono nxmax:ℝhmax:xmax ∈ Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower:∀ (j : ℕ), n j ≥ j := fun j => why_7_6_3 hn jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax)) := Filter.Tendsto.comp_of_continuous hmax (ContinuousOn.continuousWithinAt hf hmax) (fun j => hx (n j)) hconvhlower:∀ (j : ℕ), m - 1 / (↑j + 1) < f (x (n j)) :=
fun j =>
lt_of_le_of_lt
(sub_le_sub_left
(div_le_div₀
(le_of_lt
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))))
(le_refl 1)
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' j)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))))
(add_le_add_left (Nat.mono_cast (of_continuous_on_compact._proof_5 n hn_lower j)) 1))
m)
(hfx (n j))hupper:∀ (j : ℕ), f (x (n j)) ≤ m :=
fun j =>
claim1
(Eq.mpr
(id
(Eq.trans (Set.mem_image._simp_1 f (Set.Icc a b) (f (x (n j))))
(congrArg Exists (funext fun x_1 => congrFun' (congrArg And Set.mem_Icc._simp_1) (f x_1 = f (x (n j)))))))
(Exists.intro (x (n j)) ⟨hx (n j), Eq.refl (f (x (n j)))⟩))⊢ (fun j => m - 1 / (↑j + 1)) ≤ fun j => f (x (n j))a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hyclaim2:∀ (n : ℕ), ∃ x ∈ Set.Icc a b, m - 1 / (↑n + 1) < f x :=
fun n =>
have this :=
div_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl (Nat.ble 1 1)))
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))));
have this :=
lt_of_not_ge fun a =>
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.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.zero_mul 0) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_zero_add
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast +
0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf (sSup E))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_add
(Mathlib.Tactic.Ring.neg_mul (sSup E) (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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (sSup E) (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_zero_add 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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.add_lt_of_neg_of_le
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Linarith.without_one_mul (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl)))
(Mathlib.Tactic.Linarith.sub_neg_of_lt this))
(Eq.mp
(congrArg (fun _a => _a ≤ 0)
(Mathlib.Tactic.Linarith.without_one_mul
(Mathlib.Tactic.CancelDenoms.sub_subst rfl (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))));
of_continuous_on_compact._proof_2 n
(exists_lt_of_lt_csSup (Eq.mp (congrArg (fun _a => _a) (Eq.symm (propext Set.nonempty_iff_ne_empty))) hnon) this)x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), x n ∈ Set.Icc a b := fun n => (Exists.choose_spec (claim2 n)).lefthfx:∀ (n : ℕ), m - 1 / (↑n + 1) < f (x n) := fun n => (Exists.choose_spec (claim2 n)).righthclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n:ℕ → ℕhn:StrictMono nxmax:ℝhmax:xmax ∈ Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower:∀ (j : ℕ), n j ≥ j := fun j => why_7_6_3 hn jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax)) := Filter.Tendsto.comp_of_continuous hmax (ContinuousOn.continuousWithinAt hf hmax) (fun j => hx (n j)) hconvhlower:∀ (j : ℕ), m - 1 / (↑j + 1) < f (x (n j)) :=
fun j =>
lt_of_le_of_lt
(sub_le_sub_left
(div_le_div₀
(le_of_lt
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))))
(le_refl 1)
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' j)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))))
(add_le_add_left (Nat.mono_cast (of_continuous_on_compact._proof_5 n hn_lower j)) 1))
m)
(hfx (n j))hupper:∀ (j : ℕ), f (x (n j)) ≤ m :=
fun j =>
claim1
(Eq.mpr
(id
(Eq.trans (Set.mem_image._simp_1 f (Set.Icc a b) (f (x (n j))))
(congrArg Exists (funext fun x_1 => congrFun' (congrArg And Set.mem_Icc._simp_1) (f x_1 = f (x (n j)))))))
(Exists.intro (x (n j)) ⟨hx (n j), Eq.refl (f (x (n j)))⟩))⊢ (fun j => f (x (n j))) ≤ fun x => m
a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hyclaim2:∀ (n : ℕ), ∃ x ∈ Set.Icc a b, m - 1 / (↑n + 1) < f x :=
fun n =>
have this :=
div_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl (Nat.ble 1 1)))
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))));
have this :=
lt_of_not_ge fun a =>
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.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.zero_mul 0) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_zero_add
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast +
0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf (sSup E))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_add
(Mathlib.Tactic.Ring.neg_mul (sSup E) (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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (sSup E) (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_zero_add 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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.add_lt_of_neg_of_le
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Linarith.without_one_mul (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl)))
(Mathlib.Tactic.Linarith.sub_neg_of_lt this))
(Eq.mp
(congrArg (fun _a => _a ≤ 0)
(Mathlib.Tactic.Linarith.without_one_mul
(Mathlib.Tactic.CancelDenoms.sub_subst rfl (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))));
of_continuous_on_compact._proof_2 n
(exists_lt_of_lt_csSup (Eq.mp (congrArg (fun _a => _a) (Eq.symm (propext Set.nonempty_iff_ne_empty))) hnon) this)x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), x n ∈ Set.Icc a b := fun n => (Exists.choose_spec (claim2 n)).lefthfx:∀ (n : ℕ), m - 1 / (↑n + 1) < f (x n) := fun n => (Exists.choose_spec (claim2 n)).righthclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n:ℕ → ℕhn:StrictMono nxmax:ℝhmax:xmax ∈ Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower:∀ (j : ℕ), n j ≥ j := fun j => why_7_6_3 hn jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax)) := Filter.Tendsto.comp_of_continuous hmax (ContinuousOn.continuousWithinAt hf hmax) (fun j => hx (n j)) hconvhlower:∀ (j : ℕ), m - 1 / (↑j + 1) < f (x (n j)) :=
fun j =>
lt_of_le_of_lt
(sub_le_sub_left
(div_le_div₀
(le_of_lt
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))))
(le_refl 1)
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' j)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))))
(add_le_add_left (Nat.mono_cast (of_continuous_on_compact._proof_5 n hn_lower j)) 1))
m)
(hfx (n j))hupper:∀ (j : ℕ), f (x (n j)) ≤ m :=
fun j =>
claim1
(Eq.mpr
(id
(Eq.trans (Set.mem_image._simp_1 f (Set.Icc a b) (f (x (n j))))
(congrArg Exists (funext fun x_1 => congrFun' (congrArg And Set.mem_Icc._simp_1) (f x_1 = f (x (n j)))))))
(Exists.intro (x (n j)) ⟨hx (n j), Eq.refl (f (x (n j)))⟩))⊢ Filter.Tendsto (fun j => m - 1 / (↑j + 1)) Filter.atTop (nhds m) a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hyclaim2:∀ (n : ℕ), ∃ x ∈ Set.Icc a b, m - 1 / (↑n + 1) < f x :=
fun n =>
have this :=
div_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl (Nat.ble 1 1)))
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))));
have this :=
lt_of_not_ge fun a =>
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.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.zero_mul 0) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_zero_add
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast +
0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf (sSup E))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_add
(Mathlib.Tactic.Ring.neg_mul (sSup E) (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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (sSup E) (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_zero_add 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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.add_lt_of_neg_of_le
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Linarith.without_one_mul (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl)))
(Mathlib.Tactic.Linarith.sub_neg_of_lt this))
(Eq.mp
(congrArg (fun _a => _a ≤ 0)
(Mathlib.Tactic.Linarith.without_one_mul
(Mathlib.Tactic.CancelDenoms.sub_subst rfl (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))));
of_continuous_on_compact._proof_2 n
(exists_lt_of_lt_csSup (Eq.mp (congrArg (fun _a => _a) (Eq.symm (propext Set.nonempty_iff_ne_empty))) hnon) this)x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), x n ∈ Set.Icc a b := fun n => (Exists.choose_spec (claim2 n)).lefthfx:∀ (n : ℕ), m - 1 / (↑n + 1) < f (x n) := fun n => (Exists.choose_spec (claim2 n)).righthclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n:ℕ → ℕhn:StrictMono nxmax:ℝhmax:xmax ∈ Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower:∀ (j : ℕ), n j ≥ j := fun j => why_7_6_3 hn jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax)) := Filter.Tendsto.comp_of_continuous hmax (ContinuousOn.continuousWithinAt hf hmax) (fun j => hx (n j)) hconvhlower:∀ (j : ℕ), m - 1 / (↑j + 1) < f (x (n j)) :=
fun j =>
lt_of_le_of_lt
(sub_le_sub_left
(div_le_div₀
(le_of_lt
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))))
(le_refl 1)
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' j)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))))
(add_le_add_left (Nat.mono_cast (of_continuous_on_compact._proof_5 n hn_lower j)) 1))
m)
(hfx (n j))hupper:∀ (j : ℕ), f (x (n j)) ≤ m :=
fun j =>
claim1
(Eq.mpr
(id
(Eq.trans (Set.mem_image._simp_1 f (Set.Icc a b) (f (x (n j))))
(congrArg Exists (funext fun x_1 => congrFun' (congrArg And Set.mem_Icc._simp_1) (f x_1 = f (x (n j)))))))
(Exists.intro (x (n j)) ⟨hx (n j), Eq.refl (f (x (n j)))⟩))⊢ m = m - 0; All goals completed! 🐙
a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hyclaim2:∀ (n : ℕ), ∃ x ∈ Set.Icc a b, m - 1 / (↑n + 1) < f x :=
fun n =>
have this :=
div_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl (Nat.ble 1 1)))
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))));
have this :=
lt_of_not_ge fun a =>
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.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.zero_mul 0) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_zero_add
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast +
0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf (sSup E))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_add
(Mathlib.Tactic.Ring.neg_mul (sSup E) (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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (sSup E) (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_zero_add 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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.add_lt_of_neg_of_le
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Linarith.without_one_mul (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl)))
(Mathlib.Tactic.Linarith.sub_neg_of_lt this))
(Eq.mp
(congrArg (fun _a => _a ≤ 0)
(Mathlib.Tactic.Linarith.without_one_mul
(Mathlib.Tactic.CancelDenoms.sub_subst rfl (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))));
of_continuous_on_compact._proof_2 n
(exists_lt_of_lt_csSup (Eq.mp (congrArg (fun _a => _a) (Eq.symm (propext Set.nonempty_iff_ne_empty))) hnon) this)x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), x n ∈ Set.Icc a b := fun n => (Exists.choose_spec (claim2 n)).lefthfx:∀ (n : ℕ), m - 1 / (↑n + 1) < f (x n) := fun n => (Exists.choose_spec (claim2 n)).righthclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n:ℕ → ℕhn:StrictMono nxmax:ℝhmax:xmax ∈ Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower:∀ (j : ℕ), n j ≥ j := fun j => why_7_6_3 hn jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax)) := Filter.Tendsto.comp_of_continuous hmax (ContinuousOn.continuousWithinAt hf hmax) (fun j => hx (n j)) hconvhlower:∀ (j : ℕ), m - 1 / (↑j + 1) < f (x (n j)) :=
fun j =>
lt_of_le_of_lt
(sub_le_sub_left
(div_le_div₀
(le_of_lt
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))))
(le_refl 1)
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' j)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))))
(add_le_add_left (Nat.mono_cast (of_continuous_on_compact._proof_5 n hn_lower j)) 1))
m)
(hfx (n j))hupper:∀ (j : ℕ), f (x (n j)) ≤ m :=
fun j =>
claim1
(Eq.mpr
(id
(Eq.trans (Set.mem_image._simp_1 f (Set.Icc a b) (f (x (n j))))
(congrArg Exists (funext fun x_1 => congrFun' (congrArg And Set.mem_Icc._simp_1) (f x_1 = f (x (n j)))))))
(Exists.intro (x (n j)) ⟨hx (n j), Eq.refl (f (x (n j)))⟩))⊢ Filter.Tendsto (fun x => m) Filter.atTop (nhds m) All goals completed! 🐙
a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hyclaim2:∀ (n : ℕ), ∃ x ∈ Set.Icc a b, m - 1 / (↑n + 1) < f x :=
fun n =>
have this :=
div_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl (Nat.ble 1 1)))
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))));
have this :=
lt_of_not_ge fun a =>
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.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.zero_mul 0) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_zero_add
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast +
0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf (sSup E))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_add
(Mathlib.Tactic.Ring.neg_mul (sSup E) (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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (sSup E) (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_zero_add 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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.add_lt_of_neg_of_le
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Linarith.without_one_mul (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl)))
(Mathlib.Tactic.Linarith.sub_neg_of_lt this))
(Eq.mp
(congrArg (fun _a => _a ≤ 0)
(Mathlib.Tactic.Linarith.without_one_mul
(Mathlib.Tactic.CancelDenoms.sub_subst rfl (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))));
of_continuous_on_compact._proof_2 n
(exists_lt_of_lt_csSup (Eq.mp (congrArg (fun _a => _a) (Eq.symm (propext Set.nonempty_iff_ne_empty))) hnon) this)x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), x n ∈ Set.Icc a b := fun n => (Exists.choose_spec (claim2 n)).lefthfx:∀ (n : ℕ), m - 1 / (↑n + 1) < f (x n) := fun n => (Exists.choose_spec (claim2 n)).righthclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n:ℕ → ℕhn:StrictMono nxmax:ℝhmax:xmax ∈ Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower:∀ (j : ℕ), n j ≥ j := fun j => why_7_6_3 hn jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax)) := Filter.Tendsto.comp_of_continuous hmax (ContinuousOn.continuousWithinAt hf hmax) (fun j => hx (n j)) hconvhlower:∀ (j : ℕ), m - 1 / (↑j + 1) < f (x (n j)) :=
fun j =>
lt_of_le_of_lt
(sub_le_sub_left
(div_le_div₀
(le_of_lt
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))))
(le_refl 1)
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' j)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))))
(add_le_add_left (Nat.mono_cast (of_continuous_on_compact._proof_5 n hn_lower j)) 1))
m)
(hfx (n j))hupper:∀ (j : ℕ), f (x (n j)) ≤ m :=
fun j =>
claim1
(Eq.mpr
(id
(Eq.trans (Set.mem_image._simp_1 f (Set.Icc a b) (f (x (n j))))
(congrArg Exists (funext fun x_1 => congrFun' (congrArg And Set.mem_Icc._simp_1) (f x_1 = f (x (n j)))))))
(Exists.intro (x (n j)) ⟨hx (n j), Eq.refl (f (x (n j)))⟩))⊢ (fun j => m - 1 / (↑j + 1)) ≤ fun j => f (x (n j)) a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, |f x| ≤ ME:Set ℝ := f '' Set.Icc a bhE:E ⊆ Set.Icc (-M) M :=
fun ⦃a_1⦄ a_2 =>
Exists.casesOn a_2 fun x h =>
And.casesOn h fun hx right =>
right ▸
of_eq_true (Eq.trans Set.mem_Icc._simp_1 (Eq.trans BddOn.of_continuous_on_compact._simp_4 (eq_true (hM x hx))))hnon:E ≠ ∅ :=
Eq.mpr (id (congrArg Not Set.image_eq_empty._simp_1))
(Mathlib.Tactic.Contrapose.contrapose₃
(Eq.mpr (id (implies_congr (Eq.refl (Set.Icc a b = ∅)) not_lt._simp_1)) fun h =>
of_continuous_on_compact._proof_1 h)
h)m:ℝ := sSup Eclaim1:∀ {y : ℝ}, y ∈ E → y ≤ m := fun {y} hy => le_csSup (BddAbove.mono hE bddAbove_Icc) hyclaim2:∀ (n : ℕ), ∃ x ∈ Set.Icc a b, m - 1 / (↑n + 1) < f x :=
fun n =>
have this :=
div_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl (Nat.ble 1 1)))
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))));
have this :=
lt_of_not_ge fun a =>
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.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.zero_mul 0) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_zero_add
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast +
0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf (sSup E))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (sSup E) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.div_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.div_pf
(Mathlib.Tactic.Ring.atom_pf'
(Eq.refl (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right
(Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
Nat.rawCast 1 +
0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 *
(Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero (sSup E ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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_add
(Mathlib.Tactic.Ring.neg_mul (sSup E) (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_gt
((Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (sSup E) (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_zero_add 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (Nat.rawCast 1 + (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))⁻¹
(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.add_lt_of_neg_of_le
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Linarith.without_one_mul (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl)))
(Mathlib.Tactic.Linarith.sub_neg_of_lt this))
(Eq.mp
(congrArg (fun _a => _a ≤ 0)
(Mathlib.Tactic.Linarith.without_one_mul
(Mathlib.Tactic.CancelDenoms.sub_subst rfl (Mathlib.Tactic.CancelDenoms.sub_subst rfl rfl))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))));
of_continuous_on_compact._proof_2 n
(exists_lt_of_lt_csSup (Eq.mp (congrArg (fun _a => _a) (Eq.symm (propext Set.nonempty_iff_ne_empty))) hnon) this)x:ℕ → ℝ := fun n => ⋯.choosehx:∀ (n : ℕ), x n ∈ Set.Icc a b := fun n => (Exists.choose_spec (claim2 n)).lefthfx:∀ (n : ℕ), m - 1 / (↑n + 1) < f (x n) := fun n => (Exists.choose_spec (claim2 n)).righthclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n:ℕ → ℕhn:StrictMono nxmax:ℝhmax:xmax ∈ Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower:∀ (j : ℕ), n j ≥ j := fun j => why_7_6_3 hn jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax)) := Filter.Tendsto.comp_of_continuous hmax (ContinuousOn.continuousWithinAt hf hmax) (fun j => hx (n j)) hconvhlower:∀ (j : ℕ), m - 1 / (↑j + 1) < f (x (n j)) :=
fun j =>
lt_of_le_of_lt
(sub_le_sub_left
(div_le_div₀
(le_of_lt
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))))
(le_refl 1)
(Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' j)
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Eq.refl (Nat.ble 1 1))))
(add_le_add_left (Nat.mono_cast (of_continuous_on_compact._proof_5 n hn_lower j)) 1))
m)
(hfx (n j))hupper:∀ (j : ℕ), f (x (n j)) ≤ m :=
fun j =>
claim1
(Eq.mpr
(id
(Eq.trans (Set.mem_image._simp_1 f (Set.Icc a b) (f (x (n j))))
(congrArg Exists (funext fun x_1 => congrFun' (congrArg And Set.mem_Icc._simp_1) (f x_1 = f (x (n j)))))))
(Exists.intro (x (n j)) ⟨hx (n j), Eq.refl (f (x (n j)))⟩))i✝:ℕ⊢ (fun j => m - 1 / (↑j + 1)) i✝ ≤ (fun j => f (x (n j))) i✝; All goals completed! 🐙
All goals completed! 🐙
All goals completed! 🐙theorem IsMinOn.of_continuous_on_compact {a b:ℝ} (h:a < b) {f:ℝ → ℝ} (hf: ContinuousOn f (.Icc a b)) :
∃ xmin ∈ Set.Icc a b, IsMinOn f (.Icc a b) xmin := a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)⊢ ∃ xmin ∈ Set.Icc a b, IsMinOn f (Set.Icc a b) xmin
All goals completed! 🐙example : IsMaxOn (fun x ↦ x^2) (.Icc (-2) 2) 2 := ⊢ IsMaxOn (fun x => x ^ 2) (Set.Icc (-2) 2) 2 All goals completed! 🐙example : IsMaxOn (fun x ↦ x^2) (.Icc (-2) 2) (-2) := ⊢ IsMaxOn (fun x => x ^ 2) (Set.Icc (-2) 2) (-2) All goals completed! 🐙theorem sSup.of_isMaxOn {f:ℝ → ℝ} {X:Set ℝ} {x₀:ℝ} (hx₀: x₀ ∈ X) (h: IsMaxOn f X x₀) :
sSup (f '' X) = f x₀ := f:ℝ → ℝX:Set ℝx₀:ℝhx₀:x₀ ∈ Xh:IsMaxOn f X x₀⊢ sSup (f '' X) = f x₀
f:ℝ → ℝX:Set ℝx₀:ℝhx₀:x₀ ∈ Xh:IsMaxOn f X x₀⊢ IsGreatest (f '' X) (f x₀)
f:ℝ → ℝX:Set ℝx₀:ℝhx₀:x₀ ∈ Xh:IsMaxOn f X x₀⊢ (∃ x ∈ X, f x = f x₀) ∧ ∀ a ∈ X, f a ≤ f x₀
All goals completed! 🐙theorem sInf.of_isMinOn {f:ℝ → ℝ} {X:Set ℝ} {x₀:ℝ} (hx₀: x₀ ∈ X) (h: IsMinOn f X x₀) :
sInf (f '' X) = f x₀ := f:ℝ → ℝX:Set ℝx₀:ℝhx₀:x₀ ∈ Xh:IsMinOn f X x₀⊢ sInf (f '' X) = f x₀
f:ℝ → ℝX:Set ℝx₀:ℝhx₀:x₀ ∈ Xh:IsMinOn f X x₀⊢ IsLeast (f '' X) (f x₀)
f:ℝ → ℝX:Set ℝx₀:ℝhx₀:x₀ ∈ Xh:IsMinOn f X x₀⊢ (∃ x ∈ X, f x = f x₀) ∧ ∀ a ∈ X, f x₀ ≤ f a
All goals completed! 🐙theorem sSup.of_continuous_on_compact {a b:ℝ} (h:a < b) (f:ℝ → ℝ) (hf: ContinuousOn f (.Icc a b)) : ∃ xmax ∈ Set.Icc a b, sSup (f '' .Icc a b) = f xmax := a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)⊢ ∃ xmax ∈ Set.Icc a b, sSup (f '' Set.Icc a b) = f xmax
a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)x:ℝhx:x ∈ Set.Icc a bh':IsMaxOn f (Set.Icc a b) x⊢ ∃ xmax ∈ Set.Icc a b, sSup (f '' Set.Icc a b) = f xmax
All goals completed! 🐙theorem sInf.of_continuous_on_compact {a b:ℝ} (h:a < b) (f:ℝ → ℝ) (hf: ContinuousOn f (.Icc a b)) : ∃ xmin ∈ Set.Icc a b, sInf (f '' .Icc a b) = f xmin := a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)⊢ ∃ xmin ∈ Set.Icc a b, sInf (f '' Set.Icc a b) = f xmin
a:ℝb:ℝh:a < bf:ℝ → ℝhf:ContinuousOn f (Set.Icc a b)x:ℝhx:x ∈ Set.Icc a bh':IsMinOn f (Set.Icc a b) x⊢ ∃ xmin ∈ Set.Icc a b, sInf (f '' Set.Icc a b) = f xmin
All goals completed! 🐙Exercise 9.6.1
example : ∃ f: ℝ → ℝ, ContinuousOn f (.Ioo 1 2) ∧ BddOn f (.Ioo 1 2) ∧
∃ x₀ ∈ Set.Ioo 1 2, IsMinOn f (.Ioo 1 2) x₀ ∧
¬ ∃ x₀ ∈ Set.Ioo 1 2, IsMaxOn f (.Ioo 1 2) x₀
:= ⊢ ∃ f,
ContinuousOn f (Set.Ioo 1 2) ∧
BddOn f (Set.Ioo 1 2) ∧
∃ x₀ ∈ Set.Ioo 1 2, IsMinOn f (Set.Ioo 1 2) x₀ ∧ ¬∃ x₀ ∈ Set.Ioo 1 2, IsMaxOn f (Set.Ioo 1 2) x₀ All goals completed! 🐙Exercise 9.6.1
example : ∃ f: ℝ → ℝ, ContinuousOn f (.Ioo 1 2) ∧ BddOn f (.Ioo 1 2) ∧
∃ x₀ ∈ Set.Ioo 1 2, IsMaxOn f (.Ioo 1 2) x₀ ∧
¬ ∃ x₀ ∈ Set.Ioo 1 2, IsMinOn f (.Ioo 1 2) x₀
:= ⊢ ∃ f,
ContinuousOn f (Set.Ioo 1 2) ∧
BddOn f (Set.Ioo 1 2) ∧
∃ x₀ ∈ Set.Ioo 1 2, IsMaxOn f (Set.Ioo 1 2) x₀ ∧ ¬∃ x₀ ∈ Set.Ioo 1 2, IsMinOn f (Set.Ioo 1 2) x₀ All goals completed! 🐙Exercise 9.6.1
example : ∃ f: ℝ → ℝ, BddOn f (.Icc (-1) 1) ∧
¬ ∃ x₀ ∈ Set.Icc (-1) 1, IsMinOn f (.Icc (-1) 1) x₀ ∧
¬ ∃ x₀ ∈ Set.Icc (-1) 1, IsMaxOn f (.Icc (-1) 1) x₀
:= ⊢ ∃ f,
BddOn f (Set.Icc (-1) 1) ∧
¬∃ x₀ ∈ Set.Icc (-1) 1, IsMinOn f (Set.Icc (-1) 1) x₀ ∧ ¬∃ x₀ ∈ Set.Icc (-1) 1, IsMaxOn f (Set.Icc (-1) 1) x₀ All goals completed! 🐙Exercise 9.6.1
example : ∃ f: ℝ → ℝ, ¬ BddAboveOn f (.Icc (-1) 1) ∧ ¬ BddBelowOn f (.Icc (-1) 1) := ⊢ ∃ f, ¬BddAboveOn f (Set.Icc (-1) 1) ∧ ¬BddBelowOn f (Set.Icc (-1) 1) All goals completed! 🐙end Chapter9