The least upper bound property

Аналіз I, Розділ 5.5: Властивість найменшої верхньої межі

Я (пр.перекл. Терренс Тао) намагався зробити переклад якомога точнішим перефразуванням оригінального тексту. Коли є вибір між більш ідіоматичним рішенням Lean та більш точним перекладом, я зазвичай обирав останній. Зокрема, будуть місця, де код Lean можна було б "підбуцнути", щоб зробити його більш елегантним та ідіоматичним, але я свідомо уникав цього вибору.

Основні конструкції та результати цього розділу:

  • Верхня межа та найменша верхня межа на дійсній прямій

Підказки від попередніх користувачів

Користувачі супровідного матеріалу, які виконали вправи в цьому розділі, можуть надсилати свої поради майбутнім користувачам цього розділу як PRи.

  • (Додайте підказку тут)

namespace Chapter5

Визначення 5.5.1 (верхні межі). Тут ми використовуємо множину upperBounds.{u_1} {α : Type u_1} [LE α] (s : Set α) : Set αupperBounds, визначену в Mathlib.

theorem Real.upperBound_def (E: Set Real) (M: Real) : M upperBounds E x E, x M := mem_upperBounds
theorem Real.lowerBound_def (E: Set Real) (M: Real) : M lowerBounds E x E, x M := mem_lowerBounds

API для Приклада 5.5.2

theorem Real.Icc_def (x y:Real) : .Icc x y = { z | x z z y } := rfl

API для Приклада 5.5.2

theorem Real.mem_Icc (x y z:Real) : z Set.Icc x y x z z y := x:Realy:Realz:Realz Set.Icc x y x z z y All goals completed! 🐙

Приклад 5.5.2

declaration uses 'sorry'example (M: Real) : M upperBounds (.Icc 0 1) M 1 := M:RealM upperBounds (Set.Icc 0 1) M 1 All goals completed! 🐙

API для Приклада 5.5.3

theorem Real.Ioi_def (x:Real) : .Ioi x = { z | z > x } := rfl

Приклад 5.5.3

declaration uses 'sorry'example : ¬ M : Real, M upperBounds (.Ioi 0) := ¬ M, M upperBounds (Set.Ioi 0) All goals completed! 🐙

Приклад 5.5.4

declaration uses 'sorry'example : M, M upperBounds ( : Set Real) := (M : Real), M upperBounds All goals completed! 🐙
theorem declaration uses 'sorry'Real.upperBound_upper {M M': Real} (h: M M') {E: Set Real} (hb: M upperBounds E) : M' upperBounds E := M:RealM':Realh:M M'E:Set Realhb:M upperBounds EM' upperBounds E All goals completed! 🐙

Визначення 5.5.5 (найменша верхня межа). Тут ми використовуємо предикат Unknown identifier `isLUB`isLUB, визначений у Mathlib.

theorem Real.isLUB_def (E: Set Real) (M: Real) : IsLUB E M M upperBounds E M' upperBounds E, M' M := E:Set RealM:RealIsLUB E M M upperBounds E M' upperBounds E, M' M All goals completed! 🐙
theorem Real.isGLB_def (E: Set Real) (M: Real) : IsGLB E M M lowerBounds E M' lowerBounds E, M' M := E:Set RealM:RealIsGLB E M M lowerBounds E M' lowerBounds E, M' M All goals completed! 🐙

Приклад 5.5.6

declaration uses 'sorry'example : IsLUB (.Icc 0 1) (1 : Real) := IsLUB (Set.Icc 0 1) 1 All goals completed! 🐙

Приклад 5.5.7

declaration uses 'sorry'example : ¬ M, IsLUB (: Set Real) M := ¬ M, IsLUB M All goals completed! 🐙

Твердження 5.5.8 (Єдиність найменшої верхньої межі)

theorem Real.LUB_unique {E: Set Real} {M M': Real} (h1: IsLUB E M) (h2: IsLUB E M') : M = M' := E:Set RealM:RealM':Realh1:IsLUB E Mh2:IsLUB E M'M = M' All goals completed! 🐙

Визначення "обмежено зверху" з використанням нотації Mathlib

theorem Real.bddAbove_def (E: Set Real) : BddAbove E M, M upperBounds E := Set.nonempty_def
theorem Real.bddBelow_def (E: Set Real) : BddBelow E M, M lowerBounds E := Set.nonempty_def

Вправа 5.5.2

theorem declaration uses 'sorry'Real.upperBound_between {E: Set Real} {n:} {L K:} (hLK: L < K) (hK: K*((1/(n+1):):Real) upperBounds E) (hL: L*((1/(n+1):):Real) upperBounds E) : m, L < m m K m*((1/(n+1):):Real) upperBounds E (m-1)*((1/(n+1):):Real) upperBounds E := E:Set Realn:L:K:hLK:L < KhK:K * (1 / (n + 1)) upperBounds EhL:L * (1 / (n + 1)) upperBounds E m, L < m m K m * (1 / (n + 1)) upperBounds E (m - 1) * (1 / (n + 1)) upperBounds E All goals completed! 🐙

Вправа 5.5.3

theorem declaration uses 'sorry'Real.upperBound_discrete_unique {E: Set Real} {n:} {m m':} (hm1: (((m:) / (n+1):):Real) upperBounds E) (hm2: (((m:) / (n+1) - 1 / (n+1):):Real) upperBounds E) (hm'1: (((m':) / (n+1):):Real) upperBounds E) (hm'2: (((m':) / (n+1) - 1 / (n+1):):Real) upperBounds E) : m = m' := E:Set Realn:m:m':hm1:(m / (n + 1)) upperBounds Ehm2:(m / (n + 1) - 1 / (n + 1)) upperBounds Ehm'1:(m' / (n + 1)) upperBounds Ehm'2:(m' / (n + 1) - 1 / (n + 1)) upperBounds Em = m' All goals completed! 🐙

Леми можуть бути корисними для доведення 5.5.4

theorem declaration uses 'sorry'Sequence.IsCauchy.abs {a: } (ha: (a:Sequence).IsCauchy): ((|a| : ) : Sequence).IsCauchy := a: ha:(↑a).IsCauchy(↑|a|).IsCauchy All goals completed! 🐙
theorem declaration uses 'sorry'Real.LIM.abs_eq {a b: } (ha: (a: Sequence).IsCauchy) (hb: (b: Sequence).IsCauchy) (h: LIM a = LIM b): LIM |a| = LIM |b| := a: b: ha:(↑a).IsCauchyhb:(↑b).IsCauchyh:LIM a = LIM bLIM |a| = LIM |b| All goals completed! 🐙theorem declaration uses 'sorry'Real.LIM.abs_eq_pos {a: } (h: LIM a > 0) (ha: (a:Sequence).IsCauchy): LIM a = LIM |a| := a: h:LIM a > 0ha:(↑a).IsCauchyLIM a = LIM |a| All goals completed! 🐙theorem declaration uses 'sorry'Real.LIM_abs {a: } (ha: (a:Sequence).IsCauchy): |LIM a| = LIM |a| := a: ha:(↑a).IsCauchy|LIM a| = LIM |a| All goals completed! 🐙theorem declaration uses 'sorry'Real.LIM_of_le' {x:Real} {a: } (hcauchy: (a:Sequence).IsCauchy) (h: N, n N, a n x) : LIM a x := x:Reala: hcauchy:(↑a).IsCauchyh: N, n N, (a n) xLIM a x All goals completed! 🐙

Вправа 5.5.4

theorem declaration uses 'sorry'Real.LIM_of_Cauchy {q: } (hq: M, n M, n' M, |q n - q n'| 1 / (M+1)) : (q:Sequence).IsCauchy M, |q M - LIM q| 1 / (M+1) := q: hq: (M n : ), n M n' M, |q n - q n'| 1 / (M + 1)(↑q).IsCauchy (M : ), |(q M) - LIM q| 1 / (M + 1) All goals completed! 🐙

Послідовність m₁, m₂, … визначена коректно. Цей доказ використовує іншу угоду щодо індексації, ніж у тексті.

lemma Real.LUB_claim1 (n : ) {E: Set Real} (hE: Set.Nonempty E) (hbound: BddAbove E) : ∃! m:, (((m:) / (n+1):):Real) upperBounds E ¬ (((m:) / (n+1) - 1 / (n+1):):Real) upperBounds E := n:E:Set RealhE:E.Nonemptyhbound:BddAbove E∃! m, (m / (n + 1)) upperBounds E (m / (n + 1) - 1 / (n + 1)) upperBounds E n:E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.24001∃! m, (m / (n + 1)) upperBounds E (m / (n + 1) - 1 / (n + 1)) upperBounds E n:E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some E∃! m, (m / (n + 1)) upperBounds E (m / (n + 1) - 1 / (n + 1)) upperBounds E n:E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))∃! m, (m / (n + 1)) upperBounds E (m / (n + 1) - 1 / (n + 1)) upperBounds E have hpos : ε.IsPos := n:E:Set RealhE:E.Nonemptyhbound:BddAbove E∃! m, (m / (n + 1)) upperBounds E (m / (n + 1) - 1 / (n + 1)) upperBounds E n:E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))0 < n + 1; All goals completed! 🐙 n:E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))hpos:Chapter5.Real.IsPos _fvar.75653 := ?_mvar.75735 x, (x / (n + 1)) upperBounds E (x / (n + 1) - 1 / (n + 1)) upperBounds En:E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))hpos:Chapter5.Real.IsPos _fvar.75653 := ?_mvar.75735 (y₁ y₂ : ), (y₁ / (n + 1)) upperBounds E (y₁ / (n + 1) - 1 / (n + 1)) upperBounds E (y₂ / (n + 1)) upperBounds E (y₂ / (n + 1) - 1 / (n + 1)) upperBounds E y₁ = y₂ n:E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))hpos:Chapter5.Real.IsPos _fvar.75653 := ?_mvar.75735 x, (x / (n + 1)) upperBounds E (x / (n + 1) - 1 / (n + 1)) upperBounds E n:E:Set RealhE:E.Nonemptyhbound: M, M upperBounds Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))hpos:ε.IsPos x, (x / (n + 1)) upperBounds E (x / (n + 1) - 1 / (n + 1)) upperBounds E; n:E:Set RealhE:E.Nonemptyx₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))hpos:ε.IsPosM:Realhbound:M upperBounds E x, (x / (n + 1)) upperBounds E (x / (n + 1) - 1 / (n + 1)) upperBounds E n:E:Set RealhE:E.Nonemptyx₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))hpos:ε.IsPosM:Realhbound:M upperBounds EK:h✝:K > 0hK:K * ε > M x, (x / (n + 1)) upperBounds E (x / (n + 1) - 1 / (n + 1)) upperBounds E n:E:Set RealhE:E.Nonemptyx₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))hpos:ε.IsPosM:Realhbound:M upperBounds EK:h✝¹:K > 0hK:K * ε > ML':h✝:L' > 0hL:L' * ε > -x₀ x, (x / (n + 1)) upperBounds E (x / (n + 1) - 1 / (n + 1)) upperBounds E n:E:Set RealhE:E.Nonemptyx₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))hpos:ε.IsPosM:Realhbound:M upperBounds EK:h✝¹:K > 0hK:K * ε > ML':h✝:L' > 0hL:L' * ε > -x₀L: := -_fvar.85437 x, (x / (n + 1)) upperBounds E (x / (n + 1) - 1 / (n + 1)) upperBounds E have claim1_1 : L * ε < x₀ := n:E:Set RealhE:E.Nonemptyhbound:BddAbove E∃! m, (m / (n + 1)) upperBounds E (m / (n + 1) - 1 / (n + 1)) upperBounds E n:E:Set RealhE:E.Nonemptyx₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))hpos:ε.IsPosM:Realhbound:M upperBounds EK:h✝¹:K > 0hK:K * ε > ML':h✝:L' > 0hL:L' * ε > -x₀L: := -_fvar.85437-(L' * ε) < x₀; All goals completed! 🐙 have claim1_2 : L * ε upperBounds E := n:E:Set RealhE:E.Nonemptyhbound:BddAbove E∃! m, (m / (n + 1)) upperBounds E (m / (n + 1) - 1 / (n + 1)) upperBounds E All goals completed! 🐙 have claim1_3 : (K:Real) > (L:Real) := n:E:Set RealhE:E.Nonemptyhbound:BddAbove E∃! m, (m / (n + 1)) upperBounds E (m / (n + 1) - 1 / (n + 1)) upperBounds E n:E:Set RealhE:E.Nonemptyx₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))hpos:ε.IsPosM:Realhbound:M upperBounds EK:h✝¹:K > 0hK:K * ε > ML':h✝:L' > 0hL:L' * ε > -x₀L: := -_fvar.85437claim1_1:_fvar.85489 * _fvar.85372 < _fvar.85370 := ?_mvar.86354claim1_2:K LL * ε upperBounds E n:E:Set RealhE:E.Nonemptyx₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))hpos:ε.IsPosM:Realhbound:M upperBounds EK:h✝¹:K > 0hK:K * ε > ML':h✝:L' > 0hL:L' * ε > -x₀L: := -_fvar.85437claim1_1:_fvar.85489 * _fvar.85372 < _fvar.85370 := ?_mvar.86354claim1_2:?_mvar.104281 := Chapter5.Real.mul_le_mul_left _fvar.104277 _fvar.85373L * ε upperBounds E n:E:Set RealhE:E.Nonemptyx₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))hpos:ε.IsPosM:Realhbound:M upperBounds EK:h✝¹:K > 0hK:K * ε > ML':h✝:L' > 0hL:L' * ε > -x₀L: := -_fvar.85437claim1_1:_fvar.85489 * _fvar.85372 < _fvar.85370 := ?_mvar.86354claim1_2:K * ε L * εL * ε upperBounds E replace claim1_2 : M L * ε := n:E:Set RealhE:E.Nonemptyhbound:BddAbove E∃! m, (m / (n + 1)) upperBounds E (m / (n + 1) - 1 / (n + 1)) upperBounds E All goals completed! 🐙 All goals completed! 🐙 have claim1_4 : m:, L < m m K m*ε upperBounds E (m-1)*ε upperBounds E := n:E:Set RealhE:E.Nonemptyhbound:BddAbove E∃! m, (m / (n + 1)) upperBounds E (m / (n + 1) - 1 / (n + 1)) upperBounds E n:E:Set RealhE:E.Nonemptyx₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))hpos:ε.IsPosM:Realhbound:M upperBounds EK:h✝¹:K > 0hK:K * ε > ML':h✝:L' > 0hL:L' * ε > -x₀L: := -_fvar.85437claim1_1:_fvar.85489 * _fvar.85372 < _fvar.85370 := ?_mvar.86354claim1_2:_fvar.85489 * _fvar.85372 upperBounds _fvar.24000 := ?_mvar.91571claim1_3:_fvar.85410 > _fvar.85489 := ?_mvar.104157L < Kn:E:Set RealhE:E.Nonemptyx₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))hpos:ε.IsPosM:Realhbound:M upperBounds EK:h✝¹:K > 0hK:K * ε > ML':h✝:L' > 0hL:L' * ε > -x₀L: := -_fvar.85437claim1_1:_fvar.85489 * _fvar.85372 < _fvar.85370 := ?_mvar.86354claim1_2:_fvar.85489 * _fvar.85372 upperBounds _fvar.24000 := ?_mvar.91571claim1_3:_fvar.85410 > _fvar.85489 := ?_mvar.104157K * (1 / (n + 1)) upperBounds E n:E:Set RealhE:E.Nonemptyx₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))hpos:ε.IsPosM:Realhbound:M upperBounds EK:h✝¹:K > 0hK:K * ε > ML':h✝:L' > 0hL:L' * ε > -x₀L: := -_fvar.85437claim1_1:_fvar.85489 * _fvar.85372 < _fvar.85370 := ?_mvar.86354claim1_2:_fvar.85489 * _fvar.85372 upperBounds _fvar.24000 := ?_mvar.91571claim1_3:_fvar.85410 > _fvar.85489 := ?_mvar.104157L < K n:E:Set RealhE:E.Nonemptyx₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))hpos:ε.IsPosM:Realhbound:M upperBounds EK:h✝¹:K > 0hK:K * ε > ML':h✝:L' > 0hL:L' * ε > -x₀L: := -_fvar.85437claim1_1:_fvar.85489 * _fvar.85372 < _fvar.85370 := ?_mvar.86354claim1_2:_fvar.85489 * _fvar.85372 upperBounds _fvar.24000 := ?_mvar.91571claim1_3:_fvar.85410 > _fvar.85489 := ?_mvar.104157L < K; rwa [gt_iff_lt, gt_of_coen:E:Set RealhE:E.Nonemptyx₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))hpos:ε.IsPosM:Realhbound:M upperBounds EK:h✝¹:K > 0hK:K * ε > ML':h✝:L' > 0hL:L' * ε > -x₀L: := -_fvar.85437claim1_1:_fvar.85489 * _fvar.85372 < _fvar.85370 := ?_mvar.86354claim1_2:_fvar.85489 * _fvar.85372 upperBounds _fvar.24000 := ?_mvar.91571claim1_3:_fvar.85410 > _fvar.85489 := ?_mvar.104157K > L n:E:Set RealhE:E.Nonemptyx₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))M:Realhbound:M upperBounds EK:L':L: := -_fvar.85437hpos:(n + 1)⁻¹.IsPosh✝¹:0 < KhK:M < K * (n + 1)⁻¹h✝:0 < L'hL:-x₀ < L' * (n + 1)⁻¹claim1_1:L * (n + 1)⁻¹ < x₀claim1_2:L * (n + 1)⁻¹ upperBounds Eclaim1_3:L < KK * (n + 1)⁻¹ upperBounds E; n:E:Set RealhE:E.Nonemptyx₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))M:Realhbound:M upperBounds EK:L':L: := -_fvar.85437hpos:(n + 1)⁻¹.IsPosh✝¹:0 < KhK:M < K * (n + 1)⁻¹h✝:0 < L'hL:-x₀ < L' * (n + 1)⁻¹claim1_1:L * (n + 1)⁻¹ < x₀claim1_2:L * (n + 1)⁻¹ upperBounds Eclaim1_3:L < KM K * (n + 1)⁻¹; All goals completed! 🐙 n:E:Set RealhE:E.Nonemptyx₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))hpos:ε.IsPosM:Realhbound:M upperBounds EK:h✝³:K > 0hK:K * ε > ML':h✝²:L' > 0hL:L' * ε > -x₀L: := -_fvar.85437claim1_1:_fvar.85489 * _fvar.85372 < _fvar.85370 := ?_mvar.86354claim1_2:_fvar.85489 * _fvar.85372 upperBounds _fvar.24000 := ?_mvar.91571claim1_3:_fvar.85410 > _fvar.85489 := ?_mvar.104157m:h✝¹:L < mh✝:m Khm:m * ε upperBounds Ehm':(m - 1) * ε upperBounds E x, (x / (n + 1)) upperBounds E (x / (n + 1) - 1 / (n + 1)) upperBounds E; n:E:Set RealhE:E.Nonemptyx₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))hpos:ε.IsPosM:Realhbound:M upperBounds EK:h✝³:K > 0hK:K * ε > ML':h✝²:L' > 0hL:L' * ε > -x₀L: := -_fvar.85437claim1_1:_fvar.85489 * _fvar.85372 < _fvar.85370 := ?_mvar.86354claim1_2:_fvar.85489 * _fvar.85372 upperBounds _fvar.24000 := ?_mvar.91571claim1_3:_fvar.85410 > _fvar.85489 := ?_mvar.104157m:h✝¹:L < mh✝:m Khm:m * ε upperBounds Ehm':(m - 1) * ε upperBounds E(m / (n + 1)) upperBounds E (m / (n + 1) - 1 / (n + 1)) upperBounds E have : (m/(n+1):) = m*ε := n:E:Set RealhE:E.Nonemptyhbound:BddAbove E∃! m, (m / (n + 1)) upperBounds E (m / (n + 1) - 1 / (n + 1)) upperBounds E n:E:Set RealhE:E.Nonemptyx₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))hpos:ε.IsPosM:Realhbound:M upperBounds EK:h✝³:K > 0hK:K * ε > ML':h✝²:L' > 0hL:L' * ε > -x₀L: := -_fvar.85437claim1_1:_fvar.85489 * _fvar.85372 < _fvar.85370 := ?_mvar.86354claim1_2:_fvar.85489 * _fvar.85372 upperBounds _fvar.24000 := ?_mvar.91571claim1_3:_fvar.85410 > _fvar.85489 := ?_mvar.104157m:h✝¹:L < mh✝:m Khm:m * ε upperBounds Ehm':(m - 1) * ε upperBounds Em / (n + 1) = m * (n + 1)⁻¹; All goals completed! 🐙 exact n:E:Set RealhE:E.Nonemptyx₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))hpos:ε.IsPosM:Realhbound:M upperBounds EK:h✝³:K > 0hK:K * ε > ML':h✝²:L' > 0hL:L' * ε > -x₀L: := -_fvar.85437claim1_1:_fvar.85489 * _fvar.85372 < _fvar.85370 := Eq.mpr (id (congrArg (fun x => x < _fvar.85370) (Eq.trans (congrArg (fun x => x * _fvar.85372) (Eq.trans (Int.cast_neg _fvar.85437) (congrArg Neg.neg (Int.cast_natCast _fvar.85437)))) (neg_mul (↑_fvar.85437) _fvar.85372)))) (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.neg_congr (Mathlib.Tactic.Ring.atom_pf _fvar.85370) (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul _fvar.85370 (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 Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero)) (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf _fvar.85437) (Mathlib.Tactic.Ring.atom_pf _fvar.85372) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left (↑_fvar.85437) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right _fvar.85372 (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))) (Mathlib.Tactic.Ring.mul_zero (_fvar.85437 ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (_fvar.85437 ^ Nat.rawCast 1 * (_fvar.85372 ^ Nat.rawCast 1 * Nat.rawCast 1) + 0))) (Mathlib.Tactic.Ring.zero_mul (_fvar.85372 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (_fvar.85437 ^ Nat.rawCast 1 * (_fvar.85372 ^ Nat.rawCast 1 * Nat.rawCast 1) + 0)))) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul (↑_fvar.85437) (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_mul _fvar.85372 (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 Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.negOfNat 1))))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (_fvar.85370 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) (Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.85437 ^ Nat.rawCast 1 * (_fvar.85372 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0))))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.85370) (Mathlib.Tactic.Ring.neg_congr (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf _fvar.85437) (Mathlib.Tactic.Ring.atom_pf _fvar.85372) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left (↑_fvar.85437) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right _fvar.85372 (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))) (Mathlib.Tactic.Ring.mul_zero (_fvar.85437 ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (_fvar.85437 ^ Nat.rawCast 1 * (_fvar.85372 ^ Nat.rawCast 1 * Nat.rawCast 1) + 0))) (Mathlib.Tactic.Ring.zero_mul (_fvar.85372 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (_fvar.85437 ^ Nat.rawCast 1 * (_fvar.85372 ^ Nat.rawCast 1 * Nat.rawCast 1) + 0)))) (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul (↑_fvar.85437) (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_mul _fvar.85372 (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 Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.negOfNat 1))))))) Mathlib.Tactic.Ring.neg_zero)) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul (↑_fvar.85437) (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_mul _fvar.85372 (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 Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsInt.of_raw Chapter5.Real (Int.negOfNat 1)) (Eq.refl (Int.ofNat 1)))))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (_fvar.85370 ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.85437 ^ Nat.rawCast 1 * (_fvar.85372 ^ Nat.rawCast 1 * Nat.rawCast 1) + 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.85370 (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.85437) (Nat.rawCast 1) (Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.85372 (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.ofNat 0)))))) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_zero)))) (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt _fvar.85449) (Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))claim1_2:_fvar.85489 * _fvar.85372 upperBounds _fvar.24000 := Chapter5.Real.LUB_claim1._proof_2 _fvar.23999 _fvar.24001 _fvar.85371 _fvar.85373 _fvar.85403 _fvar.85404 _fvar.85410 _fvar.85418 _fvar.85422 _fvar.85437 _fvar.85445 _fvar.85449 _fvar.86355claim1_3:_fvar.85410 > _fvar.85489 := Mathlib.Tactic.Contrapose.mtr (Eq.mpr (id (implies_congr (Mathlib.Tactic.PushNeg.not_gt_eq _fvar.85410 _fvar.85489) (Mathlib.Tactic.PushNeg.not_not_eq (_fvar.85489 * _fvar.85372 upperBounds _fvar.24000)))) fun claim1_2 => have claim1_2 := Chapter5.Real.mul_le_mul_left claim1_2 _fvar.85373; have claim1_2 := Decidable.byContradiction fun a => ne_of_lt _fvar.85422 (le_antisymm (le_trans (le_of_lt _fvar.85422) (le_refl (_fvar.85410 * _fvar.85372))) (le_trans (Eq.mp (congr (congrArg LE.le (mul_comm _fvar.85372 _fvar.85410)) (mul_comm _fvar.85372 _fvar.85489)) claim1_2) (le_trans (le_of_not_ge a) (le_refl _fvar.85403)))); Chapter5.Real.LUB_claim1._proof_3 _fvar.23999 _fvar.24001 _fvar.85373 _fvar.85403 _fvar.85404 _fvar.85410 _fvar.85418 _fvar.85422 _fvar.85437 _fvar.85445 _fvar.85449 _fvar.86355 claim1_2) _fvar.91572m:h✝¹:L < mh✝:m Khm:m * ε upperBounds Ehm':(m - 1) * ε upperBounds Ethis:(_fvar.147747 / (_fvar.23999 + 1)) = _fvar.147747 * _fvar.85372 := Eq.mpr (id (congr (congrArg Eq (Eq.trans (Rat.cast_div (↑_fvar.147747) (_fvar.23999 + 1)) (congr (congrArg HDiv.hDiv (Rat.cast_intCast _fvar.147747)) (Eq.trans (Rat.cast_add (↑_fvar.23999) 1) (congr (congrArg HAdd.hAdd (Rat.cast_natCast _fvar.23999)) Rat.cast_one))))) (congrArg (HMul.hMul _fvar.147747) (Eq.trans (Rat.cast_div 1 (_fvar.23999 + 1)) (Eq.trans (congr (congrArg HDiv.hDiv Rat.cast_one) (Eq.trans (Rat.cast_add (↑_fvar.23999) 1) (congr (congrArg HAdd.hAdd (Rat.cast_natCast _fvar.23999)) Rat.cast_one))) (one_div (_fvar.23999 + 1))))))) (of_eq_true (Eq.trans (Eq.trans (congrArg (Eq (_fvar.147747 / (_fvar.23999 + 1))) (Eq.trans (Eq.trans (congrArg (HMul.hMul _fvar.147747) (inv_eq_one_div (_fvar.23999 + 1))) (mul_div_assoc' (↑_fvar.147747) 1 (_fvar.23999 + 1))) (congrArg (fun x => x / (_fvar.23999 + 1)) (mul_one _fvar.147747)))) (eq_div_iff._simp_1 (ne_of_gt (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' _fvar.23999) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_one) (Eq.refl (Nat.ble 1 1))))))) (Eq.trans (congrArg (fun x => x = _fvar.147747) (Eq.trans (div_mul_eq_mul_div (↑_fvar.147747) (_fvar.23999 + 1) (_fvar.23999 + 1)) (mul_div_cancel_right₀ (↑_fvar.147747) (ne_of_gt (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' _fvar.23999) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_one) (Eq.refl (Nat.ble 1 1)))))))) (eq_self _fvar.147747))))(m / (n + 1)) upperBounds E All goals completed! 🐙, n:E:Set RealhE:E.Nonemptyx₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))hpos:ε.IsPosM:Realhbound:M upperBounds EK:h✝³:K > 0hK:K * ε > ML':h✝²:L' > 0hL:L' * ε > -x₀L: := -_fvar.85437claim1_1:_fvar.85489 * _fvar.85372 < _fvar.85370 := Eq.mpr (id (congrArg (fun x => x < _fvar.85370) (Eq.trans (congrArg (fun x => x * _fvar.85372) (Eq.trans (Int.cast_neg _fvar.85437) (congrArg Neg.neg (Int.cast_natCast _fvar.85437)))) (neg_mul (↑_fvar.85437) _fvar.85372)))) (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.neg_congr (Mathlib.Tactic.Ring.atom_pf _fvar.85370) (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul _fvar.85370 (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 Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero)) (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf _fvar.85437) (Mathlib.Tactic.Ring.atom_pf _fvar.85372) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left (↑_fvar.85437) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right _fvar.85372 (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))) (Mathlib.Tactic.Ring.mul_zero (_fvar.85437 ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (_fvar.85437 ^ Nat.rawCast 1 * (_fvar.85372 ^ Nat.rawCast 1 * Nat.rawCast 1) + 0))) (Mathlib.Tactic.Ring.zero_mul (_fvar.85372 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (_fvar.85437 ^ Nat.rawCast 1 * (_fvar.85372 ^ Nat.rawCast 1 * Nat.rawCast 1) + 0)))) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul (↑_fvar.85437) (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_mul _fvar.85372 (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 Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.negOfNat 1))))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (_fvar.85370 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) (Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.85437 ^ Nat.rawCast 1 * (_fvar.85372 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0))))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.85370) (Mathlib.Tactic.Ring.neg_congr (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf _fvar.85437) (Mathlib.Tactic.Ring.atom_pf _fvar.85372) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left (↑_fvar.85437) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right _fvar.85372 (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))) (Mathlib.Tactic.Ring.mul_zero (_fvar.85437 ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (_fvar.85437 ^ Nat.rawCast 1 * (_fvar.85372 ^ Nat.rawCast 1 * Nat.rawCast 1) + 0))) (Mathlib.Tactic.Ring.zero_mul (_fvar.85372 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (_fvar.85437 ^ Nat.rawCast 1 * (_fvar.85372 ^ Nat.rawCast 1 * Nat.rawCast 1) + 0)))) (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul (↑_fvar.85437) (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_mul _fvar.85372 (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 Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.negOfNat 1))))))) Mathlib.Tactic.Ring.neg_zero)) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul (↑_fvar.85437) (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_mul _fvar.85372 (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 Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsInt.of_raw Chapter5.Real (Int.negOfNat 1)) (Eq.refl (Int.ofNat 1)))))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (_fvar.85370 ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.85437 ^ Nat.rawCast 1 * (_fvar.85372 ^ Nat.rawCast 1 * Nat.rawCast 1) + 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.85370 (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.85437) (Nat.rawCast 1) (Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.85372 (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.ofNat 0)))))) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_zero)))) (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt _fvar.85449) (Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))claim1_2:_fvar.85489 * _fvar.85372 upperBounds _fvar.24000 := Chapter5.Real.LUB_claim1._proof_2 _fvar.23999 _fvar.24001 _fvar.85371 _fvar.85373 _fvar.85403 _fvar.85404 _fvar.85410 _fvar.85418 _fvar.85422 _fvar.85437 _fvar.85445 _fvar.85449 _fvar.86355claim1_3:_fvar.85410 > _fvar.85489 := Mathlib.Tactic.Contrapose.mtr (Eq.mpr (id (implies_congr (Mathlib.Tactic.PushNeg.not_gt_eq _fvar.85410 _fvar.85489) (Mathlib.Tactic.PushNeg.not_not_eq (_fvar.85489 * _fvar.85372 upperBounds _fvar.24000)))) fun claim1_2 => have claim1_2 := Chapter5.Real.mul_le_mul_left claim1_2 _fvar.85373; have claim1_2 := Decidable.byContradiction fun a => ne_of_lt _fvar.85422 (le_antisymm (le_trans (le_of_lt _fvar.85422) (le_refl (_fvar.85410 * _fvar.85372))) (le_trans (Eq.mp (congr (congrArg LE.le (mul_comm _fvar.85372 _fvar.85410)) (mul_comm _fvar.85372 _fvar.85489)) claim1_2) (le_trans (le_of_not_ge a) (le_refl _fvar.85403)))); Chapter5.Real.LUB_claim1._proof_3 _fvar.23999 _fvar.24001 _fvar.85373 _fvar.85403 _fvar.85404 _fvar.85410 _fvar.85418 _fvar.85422 _fvar.85437 _fvar.85445 _fvar.85449 _fvar.86355 claim1_2) _fvar.91572m:h✝¹:L < mh✝:m Khm:m * ε upperBounds Ehm':(m - 1) * ε upperBounds Ethis:(_fvar.147747 / (_fvar.23999 + 1)) = _fvar.147747 * _fvar.85372 := Eq.mpr (id (congr (congrArg Eq (Eq.trans (Rat.cast_div (↑_fvar.147747) (_fvar.23999 + 1)) (congr (congrArg HDiv.hDiv (Rat.cast_intCast _fvar.147747)) (Eq.trans (Rat.cast_add (↑_fvar.23999) 1) (congr (congrArg HAdd.hAdd (Rat.cast_natCast _fvar.23999)) Rat.cast_one))))) (congrArg (HMul.hMul _fvar.147747) (Eq.trans (Rat.cast_div 1 (_fvar.23999 + 1)) (Eq.trans (congr (congrArg HDiv.hDiv Rat.cast_one) (Eq.trans (Rat.cast_add (↑_fvar.23999) 1) (congr (congrArg HAdd.hAdd (Rat.cast_natCast _fvar.23999)) Rat.cast_one))) (one_div (_fvar.23999 + 1))))))) (of_eq_true (Eq.trans (Eq.trans (congrArg (Eq (_fvar.147747 / (_fvar.23999 + 1))) (Eq.trans (Eq.trans (congrArg (HMul.hMul _fvar.147747) (inv_eq_one_div (_fvar.23999 + 1))) (mul_div_assoc' (↑_fvar.147747) 1 (_fvar.23999 + 1))) (congrArg (fun x => x / (_fvar.23999 + 1)) (mul_one _fvar.147747)))) (eq_div_iff._simp_1 (ne_of_gt (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' _fvar.23999) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_one) (Eq.refl (Nat.ble 1 1))))))) (Eq.trans (congrArg (fun x => x = _fvar.147747) (Eq.trans (div_mul_eq_mul_div (↑_fvar.147747) (_fvar.23999 + 1) (_fvar.23999 + 1)) (mul_div_cancel_right₀ (↑_fvar.147747) (ne_of_gt (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' _fvar.23999) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_one) (Eq.refl (Nat.ble 1 1)))))))) (eq_self _fvar.147747))))(m / (n + 1) - 1 / (n + 1)) upperBounds E n:E:Set RealhE:E.Nonemptyx₀:Chapter5.Real := Set.Nonempty.some _fvar.24001hx₀:hE.some Eε:Chapter5.Real := (1 / (_fvar.23999 + 1))hpos:ε.IsPosM:Realhbound:M upperBounds EK:h✝³:K > 0hK:K * ε > ML':h✝²:L' > 0hL:L' * ε > -x₀L: := -_fvar.85437claim1_1:_fvar.85489 * _fvar.85372 < _fvar.85370 := Eq.mpr (id (congrArg (fun x => x < _fvar.85370) (Eq.trans (congrArg (fun x => x * _fvar.85372) (Eq.trans (Int.cast_neg _fvar.85437) (congrArg Neg.neg (Int.cast_natCast _fvar.85437)))) (neg_mul (↑_fvar.85437) _fvar.85372)))) (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.neg_congr (Mathlib.Tactic.Ring.atom_pf _fvar.85370) (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul _fvar.85370 (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 Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero)) (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf _fvar.85437) (Mathlib.Tactic.Ring.atom_pf _fvar.85372) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left (↑_fvar.85437) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right _fvar.85372 (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))) (Mathlib.Tactic.Ring.mul_zero (_fvar.85437 ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (_fvar.85437 ^ Nat.rawCast 1 * (_fvar.85372 ^ Nat.rawCast 1 * Nat.rawCast 1) + 0))) (Mathlib.Tactic.Ring.zero_mul (_fvar.85372 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (_fvar.85437 ^ Nat.rawCast 1 * (_fvar.85372 ^ Nat.rawCast 1 * Nat.rawCast 1) + 0)))) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul (↑_fvar.85437) (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_mul _fvar.85372 (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 Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.negOfNat 1))))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (_fvar.85370 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) (Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.85437 ^ Nat.rawCast 1 * (_fvar.85372 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0))))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.85370) (Mathlib.Tactic.Ring.neg_congr (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf _fvar.85437) (Mathlib.Tactic.Ring.atom_pf _fvar.85372) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left (↑_fvar.85437) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right _fvar.85372 (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))) (Mathlib.Tactic.Ring.mul_zero (_fvar.85437 ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (_fvar.85437 ^ Nat.rawCast 1 * (_fvar.85372 ^ Nat.rawCast 1 * Nat.rawCast 1) + 0))) (Mathlib.Tactic.Ring.zero_mul (_fvar.85372 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (_fvar.85437 ^ Nat.rawCast 1 * (_fvar.85372 ^ Nat.rawCast 1 * Nat.rawCast 1) + 0)))) (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul (↑_fvar.85437) (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_mul _fvar.85372 (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 Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.negOfNat 1))))))) Mathlib.Tactic.Ring.neg_zero)) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul (↑_fvar.85437) (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_mul _fvar.85372 (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 Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsInt.of_raw Chapter5.Real (Int.negOfNat 1)) (Eq.refl (Int.ofNat 1)))))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (_fvar.85370 ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.85437 ^ Nat.rawCast 1 * (_fvar.85372 ^ Nat.rawCast 1 * Nat.rawCast 1) + 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.85370 (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.85437) (Nat.rawCast 1) (Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.85372 (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.ofNat 0)))))) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_zero)))) (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt _fvar.85449) (Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))claim1_2:_fvar.85489 * _fvar.85372 upperBounds _fvar.24000 := Chapter5.Real.LUB_claim1._proof_2 _fvar.23999 _fvar.24001 _fvar.85371 _fvar.85373 _fvar.85403 _fvar.85404 _fvar.85410 _fvar.85418 _fvar.85422 _fvar.85437 _fvar.85445 _fvar.85449 _fvar.86355claim1_3:_fvar.85410 > _fvar.85489 := Mathlib.Tactic.Contrapose.mtr (Eq.mpr (id (implies_congr (Mathlib.Tactic.PushNeg.not_gt_eq _fvar.85410 _fvar.85489) (Mathlib.Tactic.PushNeg.not_not_eq (_fvar.85489 * _fvar.85372 upperBounds _fvar.24000)))) fun claim1_2 => have claim1_2 := Chapter5.Real.mul_le_mul_left claim1_2 _fvar.85373; have claim1_2 := Decidable.byContradiction fun a => ne_of_lt _fvar.85422 (le_antisymm (le_trans (le_of_lt _fvar.85422) (le_refl (_fvar.85410 * _fvar.85372))) (le_trans (Eq.mp (congr (congrArg LE.le (mul_comm _fvar.85372 _fvar.85410)) (mul_comm _fvar.85372 _fvar.85489)) claim1_2) (le_trans (le_of_not_ge a) (le_refl _fvar.85403)))); Chapter5.Real.LUB_claim1._proof_3 _fvar.23999 _fvar.24001 _fvar.85373 _fvar.85403 _fvar.85404 _fvar.85410 _fvar.85418 _fvar.85422 _fvar.85437 _fvar.85445 _fvar.85449 _fvar.86355 claim1_2) _fvar.91572m:h✝¹:L < mh✝:m Khm:m * ε upperBounds Ehm':(m - 1) * ε upperBounds Ethis:(_fvar.147747 / (_fvar.23999 + 1)) = _fvar.147747 * _fvar.85372 := Eq.mpr (id (congr (congrArg Eq (Eq.trans (Rat.cast_div (↑_fvar.147747) (_fvar.23999 + 1)) (congr (congrArg HDiv.hDiv (Rat.cast_intCast _fvar.147747)) (Eq.trans (Rat.cast_add (↑_fvar.23999) 1) (congr (congrArg HAdd.hAdd (Rat.cast_natCast _fvar.23999)) Rat.cast_one))))) (congrArg (HMul.hMul _fvar.147747) (Eq.trans (Rat.cast_div 1 (_fvar.23999 + 1)) (Eq.trans (congr (congrArg HDiv.hDiv Rat.cast_one) (Eq.trans (Rat.cast_add (↑_fvar.23999) 1) (congr (congrArg HAdd.hAdd (Rat.cast_natCast _fvar.23999)) Rat.cast_one))) (one_div (_fvar.23999 + 1))))))) (of_eq_true (Eq.trans (Eq.trans (congrArg (Eq (_fvar.147747 / (_fvar.23999 + 1))) (Eq.trans (Eq.trans (congrArg (HMul.hMul _fvar.147747) (inv_eq_one_div (_fvar.23999 + 1))) (mul_div_assoc' (↑_fvar.147747) 1 (_fvar.23999 + 1))) (congrArg (fun x => x / (_fvar.23999 + 1)) (mul_one _fvar.147747)))) (eq_div_iff._simp_1 (ne_of_gt (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' _fvar.23999) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_one) (Eq.refl (Nat.ble 1 1))))))) (Eq.trans (congrArg (fun x => x = _fvar.147747) (Eq.trans (div_mul_eq_mul_div (↑_fvar.147747) (_fvar.23999 + 1) (_fvar.23999 + 1)) (mul_div_cancel_right₀ (↑_fvar.147747) (ne_of_gt (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' _fvar.23999) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_one) (Eq.refl (Nat.ble 1 1)))))))) (eq_self _fvar.147747))))(m / (n + 1) - 1 / (n + 1)) = (m - 1) * ε; All goals completed! 🐙 All goals completed! 🐙
lemma Real.LUB_claim2 {E : Set Real} (N:) {a b: } (hb : n, b n = 1 / (n + 1)) (hm1 : (n : ), (a n) upperBounds E) (hm2 : (n : ), ((a - b) n) upperBounds E) : n N, n' N, |a n - a n'| 1 / (N+1) := E:Set RealN:a: b: hb: (n : ), b n = 1 / (n + 1)hm1: (n : ), (a n) upperBounds Ehm2: (n : ), ((a - b) n) upperBounds E n N, n' N, |a n - a n'| 1 / (N + 1) E:Set RealN:a: b: hb: (n : ), b n = 1 / (n + 1)hm1: (n : ), (a n) upperBounds Ehm2: (n : ), ((a - b) n) upperBounds En:hn:n Nn':hn':n' N|a n - a n'| 1 / (N + 1) E:Set RealN:a: b: hb: (n : ), b n = 1 / (n + 1)hm1: (n : ), (a n) upperBounds Ehm2: (n : ), ((a - b) n) upperBounds En:hn:n Nn':hn':n' N-(1 / (N + 1)) a n - a n' a n - a n' 1 / (N + 1) E:Set RealN:a: b: hb: (n : ), b n = 1 / (n + 1)hm1: (n : ), (a n) upperBounds Ehm2: (n : ), ((a - b) n) upperBounds En:hn:n Nn':hn':n' N-(1 / (N + 1)) a n - a n'E:Set RealN:a: b: hb: (n : ), b n = 1 / (n + 1)hm1: (n : ), (a n) upperBounds Ehm2: (n : ), ((a - b) n) upperBounds En:hn:n Nn':hn':n' Na n - a n' 1 / (N + 1) E:Set RealN:a: b: hb: (n : ), b n = 1 / (n + 1)hm1: (n : ), (a n) upperBounds Ehm2: (n : ), ((a - b) n) upperBounds En:hn:n Nn':hn':n' N-(1 / (N + 1)) a n - a n' E:Set RealN:a: b: hb: (n : ), b n = 1 / (n + 1)hm2: (n : ), ((a - b) n) upperBounds En:hn:n Nn':hn':n' Nhm1:(a n) upperBounds E-(1 / (N + 1)) a n - a n'; E:Set RealN:a: b: hb: (n : ), b n = 1 / (n + 1)n:hn:n Nn':hn':n' Nhm1:(a n) upperBounds Ehm2:((a - b) n') upperBounds E-(1 / (N + 1)) a n - a n' have bound1 : ((a-b) n') < a n := E:Set RealN:a: b: hb: (n : ), b n = 1 / (n + 1)hm1: (n : ), (a n) upperBounds Ehm2: (n : ), ((a - b) n) upperBounds E n N, n' N, |a n - a n'| 1 / (N + 1) E:Set RealN:a: b: hb: (n : ), b n = 1 / (n + 1)n:hn:n Nn':hn':n' Nhm1:(a n) upperBounds Ehm2:((a - b) n') upperBounds E((a - b) n') < (a n); E:Set RealN:a: b: hb: (n : ), b n = 1 / (n + 1)n:hn:n Nn':hn':n' Nhm1:(a n) upperBounds Ehm2:(a n) ((a - b) n')((a - b) n') upperBounds E; All goals completed! 🐙 have bound3 : 1/((n':)+1) 1/(N+1) := E:Set RealN:a: b: hb: (n : ), b n = 1 / (n + 1)hm1: (n : ), (a n) upperBounds Ehm2: (n : ), ((a - b) n) upperBounds E n N, n' N, |a n - a n'| 1 / (N + 1) All goals completed! 🐙 E:Set RealN:a: b: hb: (n : ), b n = 1 / (n + 1)n:hn:n Nn':hn':n' Nhm1:(a n) upperBounds Ehm2:((a - b) n') upperBounds Ebound1:@HSub.hSub ?_mvar.191137 ?_mvar.191138 ?_mvar.191139 ?_mvar.191140 _fvar.190509 _fvar.190510 _fvar.190523 < @_fvar.190509 _fvar.190517 := ?_mvar.191184bound3:-(1 / (N + 1)) -(1 / (n' + 1))-(1 / (N + 1)) a n - a n'; E:Set RealN:a: b: hb: (n : ), b n = 1 / (n + 1)n:hn:n Nn':hn':n' Nhm1:(a n) upperBounds Ehm2:((a - b) n') upperBounds Ebound1:a n' - b n' < a nbound3:-(1 / (N + 1)) -(1 / (n' + 1))-(1 / (N + 1)) a n - a n'; All goals completed! 🐙 E:Set RealN:a: b: hb: (n : ), b n = 1 / (n + 1)hm2: (n : ), ((a - b) n) upperBounds En:hn:n Nn':hn':n' Nhm1:(a n') upperBounds Ea n - a n' 1 / (N + 1); E:Set RealN:a: b: hb: (n : ), b n = 1 / (n + 1)n:hn:n Nn':hn':n' Nhm1:(a n') upperBounds Ehm2:((a - b) n) upperBounds Ea n - a n' 1 / (N + 1) have bound1 : ((a-b) n) < a n' := E:Set RealN:a: b: hb: (n : ), b n = 1 / (n + 1)hm1: (n : ), (a n) upperBounds Ehm2: (n : ), ((a - b) n) upperBounds E n N, n' N, |a n - a n'| 1 / (N + 1) E:Set RealN:a: b: hb: (n : ), b n = 1 / (n + 1)n:hn:n Nn':hn':n' Nhm1:(a n') upperBounds Ehm2:((a - b) n) upperBounds E((a - b) n) < (a n'); E:Set RealN:a: b: hb: (n : ), b n = 1 / (n + 1)n:hn:n Nn':hn':n' Nhm1:(a n') upperBounds Ehm2:(a n') ((a - b) n)((a - b) n) upperBounds E; All goals completed! 🐙 have bound2 : ((a-b) n) = a n - 1 / (n+1) := E:Set RealN:a: b: hb: (n : ), b n = 1 / (n + 1)hm1: (n : ), (a n) upperBounds Ehm2: (n : ), ((a - b) n) upperBounds E n N, n' N, |a n - a n'| 1 / (N + 1) All goals completed! 🐙 have bound3 : 1/((n+1):) 1/(N+1) := E:Set RealN:a: b: hb: (n : ), b n = 1 / (n + 1)hm1: (n : ), (a n) upperBounds Ehm2: (n : ), ((a - b) n) upperBounds E n N, n' N, |a n - a n'| 1 / (N + 1) All goals completed! 🐙 All goals completed! 🐙

Теорема 5.5.9 (Існування найменшої верхньої межі)

theorem Real.LUB_exist {E: Set Real} (hE: Set.Nonempty E) (hbound: BddAbove E): S, IsLUB E S := E:Set RealhE:E.Nonemptyhbound:BddAbove E S, IsLUB E S -- цей доказ написан так, щоб співпадати із структурою орігінального тексту. E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761 S, IsLUB E S E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761hx₀:_fvar.227775 _fvar.227760 := Set.Nonempty.some_mem _fvar.227761 S, IsLUB E S E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761hx₀:_fvar.227775 _fvar.227760 := Set.Nonempty.some_mem _fvar.227761m: := fun n => .choose S, IsLUB E S E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761hx₀:_fvar.227775 _fvar.227760 := Set.Nonempty.some_mem _fvar.227761m: := fun n => .choosea: := fun n => (@_fvar.227958 n) / (n + 1) S, IsLUB E S E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761hx₀:_fvar.227775 _fvar.227760 := Set.Nonempty.some_mem _fvar.227761m: := fun n => .choosea: := fun n => (@_fvar.227958 n) / (n + 1)b: := fun n => 1 / (n + 1) S, IsLUB E S E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761hx₀:_fvar.227775 _fvar.227760 := Set.Nonempty.some_mem _fvar.227761m: := fun n => .choosea: := fun n => (@_fvar.227958 n) / (n + 1)b: := fun n => 1 / (n + 1)claim1: (n : ), ∃! m, (m / (n + 1)) upperBounds _fvar.227760 (m / (n + 1) - 1 / (n + 1)) upperBounds _fvar.227760 := fun n => Chapter5.Real.LUB_claim1 n _fvar.227761 _fvar.227762 S, IsLUB E S E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761hx₀:_fvar.227775 _fvar.227760 := Set.Nonempty.some_mem _fvar.227761m: := fun n => .choosea: := fun n => (@_fvar.227958 n) / (n + 1)b: := fun n => 1 / (n + 1)claim1: (n : ), ∃! m, (m / (n + 1)) upperBounds _fvar.227760 (m / (n + 1) - 1 / (n + 1)) upperBounds _fvar.227760 := fun n => Chapter5.Real.LUB_claim1 n _fvar.227761 _fvar.227762hb:(↑_fvar.228513).IsCauchy := Chapter5.Sequence.IsCauchy.harmonic' S, IsLUB E S E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761hx₀:_fvar.227775 _fvar.227760 := Set.Nonempty.some_mem _fvar.227761m: := fun n => .choosea: := fun n => (@_fvar.227958 n) / (n + 1)b: := fun n => 1 / (n + 1)claim1: (n : ), ∃! m, (m / (n + 1)) upperBounds _fvar.227760 (m / (n + 1) - 1 / (n + 1)) upperBounds _fvar.227760 := fun n => Chapter5.Real.LUB_claim1 n _fvar.227761 _fvar.227762hb:(↑_fvar.228513).IsCauchy := Chapter5.Sequence.IsCauchy.harmonic'hm1: (n : ), (.choose / (n + 1)) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).left S, IsLUB E S E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761hx₀:_fvar.227775 _fvar.227760 := Set.Nonempty.some_mem _fvar.227761m: := fun n => .choosea: := fun n => (@_fvar.227958 n) / (n + 1)b: := fun n => 1 / (n + 1)claim1: (n : ), ∃! m, (m / (n + 1)) upperBounds _fvar.227760 (m / (n + 1) - 1 / (n + 1)) upperBounds _fvar.227760 := fun n => Chapter5.Real.LUB_claim1 n _fvar.227761 _fvar.227762hb:(↑_fvar.228513).IsCauchy := Chapter5.Sequence.IsCauchy.harmonic'hm1: (n : ), (.choose / (n + 1)) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).lefthm2: (n : ), ((_fvar.228262 - _fvar.228513) n) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).right S, IsLUB E S have claim2 (N:) := LUB_claim2 N (E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761hx₀:_fvar.227775 _fvar.227760 := @Set.Nonempty.some_mem Chapter5.Real _fvar.227760 _fvar.227761m: := fun n => .choosea: := fun n => (@_fvar.227958 n) / (n + 1)b: := fun n => 1 / (n + 1)claim1: (n : ), ∃! m, (m / (n + 1)) upperBounds _fvar.227760 (m / (n + 1) - 1 / (n + 1)) upperBounds _fvar.227760 := fun n => Chapter5.Real.LUB_claim1 n _fvar.227761 _fvar.227762hb:(↑_fvar.228513).IsCauchy := Chapter5.Sequence.IsCauchy.harmonic'hm1: (n : ), (.choose / (n + 1)) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).lefthm2: (n : ), ((_fvar.228262 - _fvar.228513) n) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).rightN: (n : ), b n = 1 / (n + 1) All goals completed! 🐙) hm1 hm2 E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761hx₀:_fvar.227775 _fvar.227760 := Set.Nonempty.some_mem _fvar.227761m: := fun n => .choosea: := fun n => (@_fvar.227958 n) / (n + 1)b: := fun n => 1 / (n + 1)claim1: (n : ), ∃! m, (m / (n + 1)) upperBounds _fvar.227760 (m / (n + 1) - 1 / (n + 1)) upperBounds _fvar.227760 := fun n => Chapter5.Real.LUB_claim1 n _fvar.227761 _fvar.227762hb:(↑_fvar.228513).IsCauchy := Chapter5.Sequence.IsCauchy.harmonic'hm1: (n : ), (.choose / (n + 1)) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).lefthm2: (n : ), ((_fvar.228262 - _fvar.228513) n) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).rightclaim2: (N n : ), n N n' N, |.choose / (n + 1) - .choose / (n' + 1)| 1 / (N + 1) := fun N => Chapter5.Real.LUB_claim2 N (@?_mvar.229126 N) _fvar.228814 _fvar.229066claim3:(↑_fvar.228262).IsCauchy := (Chapter5.Real.LIM_of_Cauchy _fvar.229127).left S, IsLUB E S E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761hx₀:_fvar.227775 _fvar.227760 := Set.Nonempty.some_mem _fvar.227761m: := fun n => .choosea: := fun n => (@_fvar.227958 n) / (n + 1)b: := fun n => 1 / (n + 1)claim1: (n : ), ∃! m, (m / (n + 1)) upperBounds _fvar.227760 (m / (n + 1) - 1 / (n + 1)) upperBounds _fvar.227760 := fun n => Chapter5.Real.LUB_claim1 n _fvar.227761 _fvar.227762hb:(↑_fvar.228513).IsCauchy := Chapter5.Sequence.IsCauchy.harmonic'hm1: (n : ), (.choose / (n + 1)) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).lefthm2: (n : ), ((_fvar.228262 - _fvar.228513) n) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).rightclaim2: (N n : ), n N n' N, |.choose / (n + 1) - .choose / (n' + 1)| 1 / (N + 1) := fun N => Chapter5.Real.LUB_claim2 N (@?_mvar.229126 N) _fvar.228814 _fvar.229066claim3:(↑_fvar.228262).IsCauchy := (Chapter5.Real.LIM_of_Cauchy _fvar.229127).leftS:Chapter5.Real := Chapter5.LIM _fvar.228262 S, IsLUB E S; E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761hx₀:_fvar.227775 _fvar.227760 := Set.Nonempty.some_mem _fvar.227761m: := fun n => .choosea: := fun n => (@_fvar.227958 n) / (n + 1)b: := fun n => 1 / (n + 1)claim1: (n : ), ∃! m, (m / (n + 1)) upperBounds _fvar.227760 (m / (n + 1) - 1 / (n + 1)) upperBounds _fvar.227760 := fun n => Chapter5.Real.LUB_claim1 n _fvar.227761 _fvar.227762hb:(↑_fvar.228513).IsCauchy := Chapter5.Sequence.IsCauchy.harmonic'hm1: (n : ), (.choose / (n + 1)) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).lefthm2: (n : ), ((_fvar.228262 - _fvar.228513) n) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).rightclaim2: (N n : ), n N n' N, |.choose / (n + 1) - .choose / (n' + 1)| 1 / (N + 1) := fun N => Chapter5.Real.LUB_claim2 N (@?_mvar.229126 N) _fvar.228814 _fvar.229066claim3:(↑_fvar.228262).IsCauchy := (Chapter5.Real.LIM_of_Cauchy _fvar.229127).leftS:Chapter5.Real := Chapter5.LIM _fvar.228262IsLUB E S have claim4 : S = LIM (a - b) := E:Set RealhE:E.Nonemptyhbound:BddAbove E S, IsLUB E S E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761hx₀:_fvar.227775 _fvar.227760 := Set.Nonempty.some_mem _fvar.227761m: := fun n => .choosea: := fun n => (@_fvar.227958 n) / (n + 1)b: := fun n => 1 / (n + 1)claim1: (n : ), ∃! m, (m / (n + 1)) upperBounds _fvar.227760 (m / (n + 1) - 1 / (n + 1)) upperBounds _fvar.227760 := fun n => Chapter5.Real.LUB_claim1 n _fvar.227761 _fvar.227762hb:(↑_fvar.228513).IsCauchy := Chapter5.Sequence.IsCauchy.harmonic'hm1: (n : ), (.choose / (n + 1)) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).lefthm2: (n : ), ((_fvar.228262 - _fvar.228513) n) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).rightclaim2: (N n : ), n N n' N, |.choose / (n + 1) - .choose / (n' + 1)| 1 / (N + 1) := fun N => Chapter5.Real.LUB_claim2 N (@?_mvar.229126 N) _fvar.228814 _fvar.229066claim3:(↑_fvar.228262).IsCauchy := (Chapter5.Real.LIM_of_Cauchy _fvar.229127).leftS:Chapter5.Real := Chapter5.LIM _fvar.228262this:Chapter5.LIM _fvar.228513 = 0 := Chapter5.Real.LIM.harmonicS = LIM (a - b) All goals completed! 🐙 E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761hx₀:_fvar.227775 _fvar.227760 := Set.Nonempty.some_mem _fvar.227761m: := fun n => .choosea: := fun n => (@_fvar.227958 n) / (n + 1)b: := fun n => 1 / (n + 1)claim1: (n : ), ∃! m, (m / (n + 1)) upperBounds _fvar.227760 (m / (n + 1) - 1 / (n + 1)) upperBounds _fvar.227760 := fun n => Chapter5.Real.LUB_claim1 n _fvar.227761 _fvar.227762hb:(↑_fvar.228513).IsCauchy := Chapter5.Sequence.IsCauchy.harmonic'hm1: (n : ), (.choose / (n + 1)) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).lefthm2: (n : ), ((_fvar.228262 - _fvar.228513) n) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).rightclaim2: (N n : ), n N n' N, |.choose / (n + 1) - .choose / (n' + 1)| 1 / (N + 1) := fun N => Chapter5.Real.LUB_claim2 N (@?_mvar.229126 N) _fvar.228814 _fvar.229066claim3:(↑_fvar.228262).IsCauchy := (Chapter5.Real.LIM_of_Cauchy _fvar.229127).leftS:Chapter5.Real := Chapter5.LIM _fvar.228262claim4:_fvar.245397 = Chapter5.LIM (_fvar.228262 - _fvar.228513) := ?_mvar.245687(∀ x E, x S) M' upperBounds E, M' S E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761hx₀:_fvar.227775 _fvar.227760 := Set.Nonempty.some_mem _fvar.227761m: := fun n => .choosea: := fun n => (@_fvar.227958 n) / (n + 1)b: := fun n => 1 / (n + 1)claim1: (n : ), ∃! m, (m / (n + 1)) upperBounds _fvar.227760 (m / (n + 1) - 1 / (n + 1)) upperBounds _fvar.227760 := fun n => Chapter5.Real.LUB_claim1 n _fvar.227761 _fvar.227762hb:(↑_fvar.228513).IsCauchy := Chapter5.Sequence.IsCauchy.harmonic'hm1: (n : ), (.choose / (n + 1)) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).lefthm2: (n : ), ((_fvar.228262 - _fvar.228513) n) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).rightclaim2: (N n : ), n N n' N, |.choose / (n + 1) - .choose / (n' + 1)| 1 / (N + 1) := fun N => Chapter5.Real.LUB_claim2 N (@?_mvar.229126 N) _fvar.228814 _fvar.229066claim3:(↑_fvar.228262).IsCauchy := (Chapter5.Real.LIM_of_Cauchy _fvar.229127).leftS:Chapter5.Real := Chapter5.LIM _fvar.228262claim4:_fvar.245397 = Chapter5.LIM (_fvar.228262 - _fvar.228513) := ?_mvar.245687 x E, x SE:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761hx₀:_fvar.227775 _fvar.227760 := Set.Nonempty.some_mem _fvar.227761m: := fun n => .choosea: := fun n => (@_fvar.227958 n) / (n + 1)b: := fun n => 1 / (n + 1)claim1: (n : ), ∃! m, (m / (n + 1)) upperBounds _fvar.227760 (m / (n + 1) - 1 / (n + 1)) upperBounds _fvar.227760 := fun n => Chapter5.Real.LUB_claim1 n _fvar.227761 _fvar.227762hb:(↑_fvar.228513).IsCauchy := Chapter5.Sequence.IsCauchy.harmonic'hm1: (n : ), (.choose / (n + 1)) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).lefthm2: (n : ), ((_fvar.228262 - _fvar.228513) n) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).rightclaim2: (N n : ), n N n' N, |.choose / (n + 1) - .choose / (n' + 1)| 1 / (N + 1) := fun N => Chapter5.Real.LUB_claim2 N (@?_mvar.229126 N) _fvar.228814 _fvar.229066claim3:(↑_fvar.228262).IsCauchy := (Chapter5.Real.LIM_of_Cauchy _fvar.229127).leftS:Chapter5.Real := Chapter5.LIM _fvar.228262claim4:_fvar.245397 = Chapter5.LIM (_fvar.228262 - _fvar.228513) := ?_mvar.245687 M' upperBounds E, M' S E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761hx₀:_fvar.227775 _fvar.227760 := Set.Nonempty.some_mem _fvar.227761m: := fun n => .choosea: := fun n => (@_fvar.227958 n) / (n + 1)b: := fun n => 1 / (n + 1)claim1: (n : ), ∃! m, (m / (n + 1)) upperBounds _fvar.227760 (m / (n + 1) - 1 / (n + 1)) upperBounds _fvar.227760 := fun n => Chapter5.Real.LUB_claim1 n _fvar.227761 _fvar.227762hb:(↑_fvar.228513).IsCauchy := Chapter5.Sequence.IsCauchy.harmonic'hm1: (n : ), (.choose / (n + 1)) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).lefthm2: (n : ), ((_fvar.228262 - _fvar.228513) n) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).rightclaim2: (N n : ), n N n' N, |.choose / (n + 1) - .choose / (n' + 1)| 1 / (N + 1) := fun N => Chapter5.Real.LUB_claim2 N (@?_mvar.229126 N) _fvar.228814 _fvar.229066claim3:(↑_fvar.228262).IsCauchy := (Chapter5.Real.LIM_of_Cauchy _fvar.229127).leftS:Chapter5.Real := Chapter5.LIM _fvar.228262claim4:_fvar.245397 = Chapter5.LIM (_fvar.228262 - _fvar.228513) := ?_mvar.245687 x E, x S E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761hx₀:_fvar.227775 _fvar.227760 := Set.Nonempty.some_mem _fvar.227761m: := fun n => .choosea: := fun n => (@_fvar.227958 n) / (n + 1)b: := fun n => 1 / (n + 1)claim1: (n : ), ∃! m, (m / (n + 1)) upperBounds _fvar.227760 (m / (n + 1) - 1 / (n + 1)) upperBounds _fvar.227760 := fun n => Chapter5.Real.LUB_claim1 n _fvar.227761 _fvar.227762hb:(↑_fvar.228513).IsCauchy := Chapter5.Sequence.IsCauchy.harmonic'hm1: (n : ), (.choose / (n + 1)) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).lefthm2: (n : ), ((_fvar.228262 - _fvar.228513) n) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).rightclaim2: (N n : ), n N n' N, |.choose / (n + 1) - .choose / (n' + 1)| 1 / (N + 1) := fun N => Chapter5.Real.LUB_claim2 N (@?_mvar.229126 N) _fvar.228814 _fvar.229066claim3:(↑_fvar.228262).IsCauchy := (Chapter5.Real.LIM_of_Cauchy _fvar.229127).leftS:Chapter5.Real := Chapter5.LIM _fvar.228262claim4:_fvar.245397 = Chapter5.LIM (_fvar.228262 - _fvar.228513) := ?_mvar.245687x✝:Reala✝:x✝ Ex✝ S; E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761hx₀:_fvar.227775 _fvar.227760 := Set.Nonempty.some_mem _fvar.227761m: := fun n => .choosea: := fun n => (@_fvar.227958 n) / (n + 1)b: := fun n => 1 / (n + 1)claim1: (n : ), ∃! m, (m / (n + 1)) upperBounds _fvar.227760 (m / (n + 1) - 1 / (n + 1)) upperBounds _fvar.227760 := fun n => Chapter5.Real.LUB_claim1 n _fvar.227761 _fvar.227762hb:(↑_fvar.228513).IsCauchy := Chapter5.Sequence.IsCauchy.harmonic'hm1: (n : ), (.choose / (n + 1)) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).lefthm2: (n : ), ((_fvar.228262 - _fvar.228513) n) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).rightclaim2: (N n : ), n N n' N, |.choose / (n + 1) - .choose / (n' + 1)| 1 / (N + 1) := fun N => Chapter5.Real.LUB_claim2 N (@?_mvar.229126 N) _fvar.228814 _fvar.229066claim3:(↑_fvar.228262).IsCauchy := (Chapter5.Real.LIM_of_Cauchy _fvar.229127).leftS:Chapter5.Real := Chapter5.LIM _fvar.228262claim4:_fvar.245397 = Chapter5.LIM (_fvar.228262 - _fvar.228513) := ?_mvar.245687x✝:Reala✝:x✝ E (n : ), (a n) x✝; All goals completed! 🐙 E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761hx₀:_fvar.227775 _fvar.227760 := Set.Nonempty.some_mem _fvar.227761m: := fun n => .choosea: := fun n => (@_fvar.227958 n) / (n + 1)b: := fun n => 1 / (n + 1)claim1: (n : ), ∃! m, (m / (n + 1)) upperBounds _fvar.227760 (m / (n + 1) - 1 / (n + 1)) upperBounds _fvar.227760 := fun n => Chapter5.Real.LUB_claim1 n _fvar.227761 _fvar.227762hb:(↑_fvar.228513).IsCauchy := Chapter5.Sequence.IsCauchy.harmonic'hm1: (n : ), (.choose / (n + 1)) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).lefthm2: (n : ), ((_fvar.228262 - _fvar.228513) n) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).rightclaim2: (N n : ), n N n' N, |.choose / (n + 1) - .choose / (n' + 1)| 1 / (N + 1) := fun N => Chapter5.Real.LUB_claim2 N (@?_mvar.229126 N) _fvar.228814 _fvar.229066claim3:(↑_fvar.228262).IsCauchy := (Chapter5.Real.LIM_of_Cauchy _fvar.229127).leftS:Chapter5.Real := Chapter5.LIM _fvar.228262claim4:_fvar.245397 = Chapter5.LIM (_fvar.228262 - _fvar.228513) := ?_mvar.245687y:Realhy:y upperBounds Ey S have claim5 (n:) : y (a-b) n := E:Set RealhE:E.Nonemptyhbound:BddAbove E S, IsLUB E S E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761hx₀:_fvar.227775 _fvar.227760 := Set.Nonempty.some_mem _fvar.227761m: := fun n => .choosea: := fun n => (@_fvar.227958 n) / (n + 1)b: := fun n => 1 / (n + 1)claim1: (n : ), ∃! m, (m / (n + 1)) upperBounds _fvar.227760 (m / (n + 1) - 1 / (n + 1)) upperBounds _fvar.227760 := fun n => Chapter5.Real.LUB_claim1 n _fvar.227761 _fvar.227762hb:(↑_fvar.228513).IsCauchy := Chapter5.Sequence.IsCauchy.harmonic'hm1: (n : ), (.choose / (n + 1)) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).leftclaim2: (N n : ), n N n' N, |.choose / (n + 1) - .choose / (n' + 1)| 1 / (N + 1) := fun N => Chapter5.Real.LUB_claim2 N (@?_mvar.229126 N) _fvar.228814 _fvar.229066claim3:(↑_fvar.228262).IsCauchy := (Chapter5.Real.LIM_of_Cauchy _fvar.229127).leftS:Chapter5.Real := Chapter5.LIM _fvar.228262claim4:_fvar.245397 = Chapter5.LIM (_fvar.228262 - _fvar.228513) := ?_mvar.245687y:Realhy:y upperBounds En:hm2:y < ((a - b) n) n, ((a - b) n) upperBounds E; E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761hx₀:_fvar.227775 _fvar.227760 := Set.Nonempty.some_mem _fvar.227761m: := fun n => .choosea: := fun n => (@_fvar.227958 n) / (n + 1)b: := fun n => 1 / (n + 1)claim1: (n : ), ∃! m, (m / (n + 1)) upperBounds _fvar.227760 (m / (n + 1) - 1 / (n + 1)) upperBounds _fvar.227760 := fun n => Chapter5.Real.LUB_claim1 n _fvar.227761 _fvar.227762hb:(↑_fvar.228513).IsCauchy := Chapter5.Sequence.IsCauchy.harmonic'hm1: (n : ), (.choose / (n + 1)) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).leftclaim2: (N n : ), n N n' N, |.choose / (n + 1) - .choose / (n' + 1)| 1 / (N + 1) := fun N => Chapter5.Real.LUB_claim2 N (@?_mvar.229126 N) _fvar.228814 _fvar.229066claim3:(↑_fvar.228262).IsCauchy := (Chapter5.Real.LIM_of_Cauchy _fvar.229127).leftS:Chapter5.Real := Chapter5.LIM _fvar.228262claim4:_fvar.245397 = Chapter5.LIM (_fvar.228262 - _fvar.228513) := ?_mvar.245687y:Realhy:y upperBounds En:hm2:y < ((a - b) n)((a - b) n) upperBounds E; E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761hx₀:_fvar.227775 _fvar.227760 := Set.Nonempty.some_mem _fvar.227761m: := fun n => .choosea: := fun n => (@_fvar.227958 n) / (n + 1)b: := fun n => 1 / (n + 1)claim1: (n : ), ∃! m, (m / (n + 1)) upperBounds _fvar.227760 (m / (n + 1) - 1 / (n + 1)) upperBounds _fvar.227760 := fun n => Chapter5.Real.LUB_claim1 n _fvar.227761 _fvar.227762hb:(↑_fvar.228513).IsCauchy := Chapter5.Sequence.IsCauchy.harmonic'hm1: (n : ), (.choose / (n + 1)) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).leftclaim2: (N n : ), n N n' N, |.choose / (n + 1) - .choose / (n' + 1)| 1 / (N + 1) := fun N => Chapter5.Real.LUB_claim2 N (@?_mvar.229126 N) _fvar.228814 _fvar.229066claim3:(↑_fvar.228262).IsCauchy := (Chapter5.Real.LIM_of_Cauchy _fvar.229127).leftS:Chapter5.Real := Chapter5.LIM _fvar.228262claim4:_fvar.245397 = Chapter5.LIM (_fvar.228262 - _fvar.228513) := ?_mvar.245687y:Realhy:y upperBounds En:hm2:y < ((a - b) n)y ((a - b) n); All goals completed! 🐙 E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761hx₀:_fvar.227775 _fvar.227760 := Set.Nonempty.some_mem _fvar.227761m: := fun n => .choosea: := fun n => (@_fvar.227958 n) / (n + 1)b: := fun n => 1 / (n + 1)claim1: (n : ), ∃! m, (m / (n + 1)) upperBounds _fvar.227760 (m / (n + 1) - 1 / (n + 1)) upperBounds _fvar.227760 := fun n => Chapter5.Real.LUB_claim1 n _fvar.227761 _fvar.227762hb:(↑_fvar.228513).IsCauchy := Chapter5.Sequence.IsCauchy.harmonic'hm1: (n : ), (.choose / (n + 1)) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).lefthm2: (n : ), ((_fvar.228262 - _fvar.228513) n) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).rightclaim2: (N n : ), n N n' N, |.choose / (n + 1) - .choose / (n' + 1)| 1 / (N + 1) := fun N => Chapter5.Real.LUB_claim2 N (@?_mvar.229126 N) _fvar.228814 _fvar.229066claim3:(↑_fvar.228262).IsCauchy := (Chapter5.Real.LIM_of_Cauchy _fvar.229127).leftS:Chapter5.Real := Chapter5.LIM _fvar.228262claim4:_fvar.245397 = Chapter5.LIM (_fvar.228262 - _fvar.228513) := ?_mvar.245687y:Realhy:y upperBounds Eclaim5: (n : ), _fvar.262504 ((_fvar.228262 - _fvar.228513) n) := fun n => @?_mvar.262683 ny LIM (a - b); E:Set RealhE:E.Nonemptyhbound:BddAbove Ex₀:Chapter5.Real := Set.Nonempty.some _fvar.227761hx₀:_fvar.227775 _fvar.227760 := Set.Nonempty.some_mem _fvar.227761m: := fun n => .choosea: := fun n => (@_fvar.227958 n) / (n + 1)b: := fun n => 1 / (n + 1)claim1: (n : ), ∃! m, (m / (n + 1)) upperBounds _fvar.227760 (m / (n + 1) - 1 / (n + 1)) upperBounds _fvar.227760 := fun n => Chapter5.Real.LUB_claim1 n _fvar.227761 _fvar.227762hb:(↑_fvar.228513).IsCauchy := Chapter5.Sequence.IsCauchy.harmonic'hm1: (n : ), (.choose / (n + 1)) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).lefthm2: (n : ), ((_fvar.228262 - _fvar.228513) n) upperBounds _fvar.227760 := fun n => (Exists.choose_spec (ExistsUnique.exists (@_fvar.228614 n))).rightclaim2: (N n : ), n N n' N, |.choose / (n + 1) - .choose / (n' + 1)| 1 / (N + 1) := fun N => Chapter5.Real.LUB_claim2 N (@?_mvar.229126 N) _fvar.228814 _fvar.229066claim3:(↑_fvar.228262).IsCauchy := (Chapter5.Real.LIM_of_Cauchy _fvar.229127).leftS:Chapter5.Real := Chapter5.LIM _fvar.228262claim4:_fvar.245397 = Chapter5.LIM (_fvar.228262 - _fvar.228513) := ?_mvar.245687y:Realhy:y upperBounds Eclaim5: (n : ), _fvar.262504 ((_fvar.228262 - _fvar.228513) n) := fun n => @?_mvar.262683 n(↑(a - b)).IsCauchy; All goals completed! 🐙

Простий розширений клас дійсної величини для визначення супремуму.

inductive ExtendedReal where | neg_infty : ExtendedReal | real (x:Real) : ExtendedReal | infty : ExtendedReal

Mathlib надає перевагу ⊤ для позначення елемента +∞.

instance ExtendedReal.inst_Top : Top ExtendedReal where top := infty

Mathlib надає перевагу ⊥ для позначення елемента -∞.

instance ExtendedReal.inst_Bot: Bot ExtendedReal where bot := neg_infty
instance ExtendedReal.coe_real : Coe Real ExtendedReal where coe x := ExtendedReal.real xinstance ExtendedReal.real_coe : Coe ExtendedReal Real where coe X := match X with | neg_infty => 0 | real x => x | infty => 0abbrev ExtendedReal.IsFinite (X : ExtendedReal) : Prop := match X with | neg_infty => False | real _ => True | infty => Falsetheorem ExtendedReal.finite_eq_coe {X: ExtendedReal} (hX: X.IsFinite) : X = ((X:Real):ExtendedReal) := X:ExtendedRealhX:X.IsFiniteX = real (match X with | neg_infty => 0 | real x => x | infty => 0) hX:neg_infty.IsFiniteneg_infty = real (match neg_infty with | neg_infty => 0 | real x => x | infty => 0)x✝:RealhX:(real x✝).IsFinitereal x✝ = real (match real x✝ with | neg_infty => 0 | real x => x | infty => 0)hX:infty.IsFiniteinfty = real (match infty with | neg_infty => 0 | real x => x | infty => 0) hX:neg_infty.IsFiniteneg_infty = real (match neg_infty with | neg_infty => 0 | real x => x | infty => 0)x✝:RealhX:(real x✝).IsFinitereal x✝ = real (match real x✝ with | neg_infty => 0 | real x => x | infty => 0)hX:infty.IsFiniteinfty = real (match infty with | neg_infty => 0 | real x => x | infty => 0) try All goals completed! 🐙 All goals completed! 🐙open Classical in /-- Визначення 5.5.10 (Супремум)-/ noncomputable abbrev ExtendedReal.sup (E: Set Real) : ExtendedReal := if h1:E.Nonempty then (if h2:BddAbove E then ((Real.LUB_exist h1 h2).choose:Real) else ) else

Визначення 5.5.10 (Супремум)

theorem ExtendedReal.sup_of_empty : sup = := sup = All goals completed! 🐙

Визначення 5.5.10 (Супремум)

theorem ExtendedReal.sup_of_unbounded {E: Set Real} (hb: ¬ BddAbove E) : sup E = := E:Set Realhb:¬BddAbove Esup E = have hE : E.Nonempty := E:Set Realhb:¬BddAbove Esup E = E:Set Realhb:E = BddAbove E; All goals completed! 🐙 All goals completed! 🐙

Визначення 5.5.10 (Супремум)

theorem ExtendedReal.sup_of_bounded {E: Set Real} (hnon: E.Nonempty) (hb: BddAbove E) : IsLUB E (sup E) := E:Set Realhnon:E.Nonemptyhb:BddAbove EIsLUB E (match sup E with | neg_infty => 0 | real x => x | infty => 0) E:Set Realhnon:E.Nonemptyhb:BddAbove EIsLUB E .choose; All goals completed! 🐙
theorem ExtendedReal.sup_of_bounded_finite {E: Set Real} (hnon: E.Nonempty) (hb: BddAbove E) : (sup E).IsFinite := E:Set Realhnon:E.Nonemptyhb:BddAbove E(sup E).IsFinite All goals completed! 🐙

Твердження 5.5.12

theorem declaration uses 'sorry'Real.exist_sqrt_two : x:Real, x^2 = 2 := x, x ^ 2 = 2 -- цей доказ написан так, щоб співпадати із структурою орігінального тексту. E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2} x, x ^ 2 = 2 have claim1: 2 upperBounds E := x, x ^ 2 = 2 E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2} x E, x 2 E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}y:Realhy:y Ey 2; E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}y:Realhy:0 y y ^ 2 < 2y 2; E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}y:Realhy:2 < y0 y 2 y ^ 2 E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}y:Realhy:2 < yhpos:0 y2 y ^ 2 calc _ 2 * 2 := E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}y:Realhy:2 < yhpos:0 y2 2 * 2 All goals completed! 🐙 _ y * y := E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}y:Realhy:2 < yhpos:0 y2 * 2 y * y All goals completed! 🐙 _ = y^2 := E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}y:Realhy:2 < yhpos:0 yy * y = y ^ 2 All goals completed! 🐙 have claim1' : BddAbove E := x, x ^ 2 = 2 E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512 M, M upperBounds E; All goals completed! 🐙 have claim2: 1 E := x, x ^ 2 = 2 All goals completed! 🐙 E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonempty x, x ^ 2 = 2 E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0 x, x ^ 2 = 2 have claim3 : IsLUB E x := x, x ^ 2 = 2 All goals completed! 🐙 have claim4 : x 1 := x, x ^ 2 = 2 All goals completed! 🐙 have claim5 : x 2 := x, x ^ 2 = 2 All goals completed! 🐙 have claim6 : x.IsPos := x, x ^ 2 = 2 E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := ?_mvar.301817claim4:_fvar.301506 1 := ?_mvar.307942claim5:_fvar.301506 2 := ?_mvar.314096x > 0; All goals completed! 🐙 E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := ?_mvar.301817claim4:_fvar.301506 1 := ?_mvar.307942claim5:_fvar.301506 2 := ?_mvar.314096claim6:Chapter5.Real.IsPos _fvar.301506 := ?_mvar.319645x ^ 2 = 2; E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := ?_mvar.301817claim4:_fvar.301506 1 := ?_mvar.307942claim5:_fvar.301506 2 := ?_mvar.314096claim6:Chapter5.Real.IsPos _fvar.301506 := ?_mvar.319645h:x ^ 2 > 2x ^ 2 = 2E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := ?_mvar.301817claim4:_fvar.301506 1 := ?_mvar.307942claim5:_fvar.301506 2 := ?_mvar.314096claim6:Chapter5.Real.IsPos _fvar.301506 := ?_mvar.319645h:x ^ 2 < 2x ^ 2 = 2E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := ?_mvar.301817claim4:_fvar.301506 1 := ?_mvar.307942claim5:_fvar.301506 2 := ?_mvar.314096claim6:Chapter5.Real.IsPos _fvar.301506 := ?_mvar.319645h:x ^ 2 = 2x ^ 2 = 2 E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := ?_mvar.301817claim4:_fvar.301506 1 := ?_mvar.307942claim5:_fvar.301506 2 := ?_mvar.314096claim6:Chapter5.Real.IsPos _fvar.301506 := ?_mvar.319645h:x ^ 2 > 2x ^ 2 = 2 have claim11: ε, 0 < ε ε < 1 x^2 - 4*ε > 2 := x, x ^ 2 = 2 E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := ?_mvar.301817claim4:_fvar.301506 1 := ?_mvar.307942claim5:_fvar.301506 2 := ?_mvar.314096claim6:Chapter5.Real.IsPos _fvar.301506 := ?_mvar.319645h:x ^ 2 > 2ε:Chapter5.Real := min (1 / 2) ((_fvar.301506 ^ 2 - 2) / 8) ε, 0 < ε ε < 1 x ^ 2 - 4 * ε > 2 have hx : x^2 - 2 > 0 := x, x ^ 2 = 2 All goals completed! 🐙 have : 0 < ε := x, x ^ 2 = 2 All goals completed! 🐙 E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := ?_mvar.301817claim4:_fvar.301506 1 := ?_mvar.307942claim5:_fvar.301506 2 := ?_mvar.314096claim6:Chapter5.Real.IsPos _fvar.301506 := ?_mvar.319645h:x ^ 2 > 2ε:Chapter5.Real := min (1 / 2) ((_fvar.301506 ^ 2 - 2) / 8)hx:_fvar.301506 ^ 2 - 2 > 0 := ?_mvar.324201:0 < _fvar.323757 := ?_mvar.324488hε1:min (1 / 2) ((x ^ 2 - 2) / 8) 1 / 2 ε, 0 < ε ε < 1 x ^ 2 - 4 * ε > 2 E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := ?_mvar.301817claim4:_fvar.301506 1 := ?_mvar.307942claim5:_fvar.301506 2 := ?_mvar.314096claim6:Chapter5.Real.IsPos _fvar.301506 := ?_mvar.319645h:x ^ 2 > 2ε:Chapter5.Real := min (1 / 2) ((_fvar.301506 ^ 2 - 2) / 8)hx:_fvar.301506 ^ 2 - 2 > 0 := ?_mvar.324201:0 < _fvar.323757 := ?_mvar.324488hε1:min (1 / 2) ((x ^ 2 - 2) / 8) 1 / 2hε2:min (1 / 2) ((x ^ 2 - 2) / 8) (x ^ 2 - 2) / 8 ε, 0 < ε ε < 1 x ^ 2 - 4 * ε > 2 E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := ?_mvar.301817claim4:_fvar.301506 1 := ?_mvar.307942claim5:_fvar.301506 2 := ?_mvar.314096claim6:Chapter5.Real.IsPos _fvar.301506 := ?_mvar.319645h:x ^ 2 > 2ε:Chapter5.Real := min (1 / 2) ((_fvar.301506 ^ 2 - 2) / 8)hx:_fvar.301506 ^ 2 - 2 > 0 := ?_mvar.324201:0 < _fvar.323757 := ?_mvar.324488hε1:min (1 / 2) ((x ^ 2 - 2) / 8) 1 / 2hε2:min (1 / 2) ((x ^ 2 - 2) / 8) (x ^ 2 - 2) / 8ε < 1E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := ?_mvar.301817claim4:_fvar.301506 1 := ?_mvar.307942claim5:_fvar.301506 2 := ?_mvar.314096claim6:Chapter5.Real.IsPos _fvar.301506 := ?_mvar.319645h:x ^ 2 > 2ε:Chapter5.Real := min (1 / 2) ((_fvar.301506 ^ 2 - 2) / 8)hx:_fvar.301506 ^ 2 - 2 > 0 := ?_mvar.324201:0 < _fvar.323757 := ?_mvar.324488hε1:min (1 / 2) ((x ^ 2 - 2) / 8) 1 / 2hε2:min (1 / 2) ((x ^ 2 - 2) / 8) (x ^ 2 - 2) / 8x ^ 2 - 4 * ε > 2 E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := ?_mvar.301817claim4:_fvar.301506 1 := ?_mvar.307942claim5:_fvar.301506 2 := ?_mvar.314096claim6:Chapter5.Real.IsPos _fvar.301506 := ?_mvar.319645h:x ^ 2 > 2ε:Chapter5.Real := min (1 / 2) ((_fvar.301506 ^ 2 - 2) / 8)hx:_fvar.301506 ^ 2 - 2 > 0 := ?_mvar.324201:0 < _fvar.323757 := ?_mvar.324488hε1:min (1 / 2) ((x ^ 2 - 2) / 8) 1 / 2hε2:min (1 / 2) ((x ^ 2 - 2) / 8) (x ^ 2 - 2) / 8ε < 1E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := ?_mvar.301817claim4:_fvar.301506 1 := ?_mvar.307942claim5:_fvar.301506 2 := ?_mvar.314096claim6:Chapter5.Real.IsPos _fvar.301506 := ?_mvar.319645h:x ^ 2 > 2ε:Chapter5.Real := min (1 / 2) ((_fvar.301506 ^ 2 - 2) / 8)hx:_fvar.301506 ^ 2 - 2 > 0 := ?_mvar.324201:0 < _fvar.323757 := ?_mvar.324488hε1:min (1 / 2) ((x ^ 2 - 2) / 8) 1 / 2hε2:min (1 / 2) ((x ^ 2 - 2) / 8) (x ^ 2 - 2) / 8x ^ 2 - 4 * ε > 2 All goals completed! 🐙 E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := ?_mvar.301817claim4:_fvar.301506 1 := ?_mvar.307942claim5:_fvar.301506 2 := ?_mvar.314096claim6:Chapter5.Real.IsPos _fvar.301506 := ?_mvar.319645h:x ^ 2 > 2ε:Realhε1:0 < εhε2:ε < 1hε3:x ^ 2 - 4 * ε > 2x ^ 2 = 2 have claim12: (x-ε)^2 > 2 := calc _ = x^2 - 2 * ε * x + ε * ε := E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter5.Real.upperBound_def _fvar.284319 2)))) fun y hy => Mathlib.Tactic.Contrapose.mtr (Eq.mpr (id (implies_congr (Mathlib.Tactic.PushNeg.not_le_eq y 2) (Eq.trans (Mathlib.Tactic.PushNeg.not_and_eq (0 y) (y ^ 2 < 2)) (implies_congr (Eq.refl (0 y)) (Mathlib.Tactic.PushNeg.not_lt_eq (y ^ 2) 2))))) fun hy hpos => Trans.trans (Trans.trans (Mathlib.Meta.NormNum.isNat_le_true (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Eq.refl 4)) (Eq.refl true)) (mul_le_mul (le_of_lt hy) (le_of_lt hy) (le_of_lt (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))) (le_of_lt (lt_trans (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Eq.refl (Nat.ble 1 2))) hy)))) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pp_pf_overlap y (Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw 1) (Mathlib.Meta.NormNum.IsNat.of_raw 1) (Eq.refl 2))) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))) (Mathlib.Tactic.Ring.mul_zero (y ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1 + 0))) (Mathlib.Tactic.Ring.zero_mul (y ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1 + 0)))) (Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 2))) (Mathlib.Tactic.Ring.pow_add (Mathlib.Tactic.Ring.single_pow (Mathlib.Tactic.Ring.mul_pow (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 2)) (Mathlib.Tactic.Ring.one_pow (Nat.rawCast 2)))) (Mathlib.Tactic.Ring.pow_zero (y ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left y (Nat.rawCast 2) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))) (Mathlib.Tactic.Ring.mul_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1 + 0))) (Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1 + 0))))))) (Eq.mp (congrArg (fun x => y setOf x) (funext fun y => congrArg (fun x => x y ^ 2 < 2) ge_iff_le._simp_1)) hy)claim1':BddAbove _fvar.284319 := Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter5.Real.bddAbove_def _fvar.284319)))) (Exists.intro 2 _fvar.284513)claim2:1 _fvar.284319 := of_eq_true (Eq.trans (congrArg (fun x => 1 setOf x) (funext fun y => congrArg (fun x => x y ^ 2 < 2) ge_iff_le._simp_1)) (Eq.trans (congr (congrArg And zero_le_one._simp_1) (Eq.trans (congrArg (fun x => x < 2) (one_pow 2)) Nat.one_lt_ofNat._simp_1)) (and_self True)))claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := Chapter5.Real.exist_sqrt_two._proof_3 _fvar.294982 _fvar.301418claim4:_fvar.301506 1 := Chapter5.Real.exist_sqrt_two._proof_4 _fvar.295130 _fvar.301818claim5:_fvar.301506 2 := Chapter5.Real.exist_sqrt_two._proof_5 _fvar.284513 _fvar.301818claim6:Chapter5.Real.IsPos _fvar.301506 := Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter5.Real.isPos_iff _fvar.301506)))) (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.add_congr (Mathlib.Tactic.Ring.neg_congr (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_one)) (Mathlib.Tactic.Ring.neg_add (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 Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.negOfNat 1))))) Mathlib.Tactic.Ring.neg_zero)) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_one)) (Mathlib.Tactic.Ring.atom_pf _fvar.301506) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul _fvar.301506 (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 Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.301506 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.ofNat 0)))) (Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.301506 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.301506) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_zero)) (Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero (Mathlib.Tactic.Ring.add_pf_add_zero (_fvar.301506 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.301506 (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_zero_add 0))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_zero)))) (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one) (Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.307943)) (Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))h:x ^ 2 > 2ε:Realhε1:0 < εhε2:ε < 1hε3:x ^ 2 - 4 * ε > 2(x - ε) ^ 2 = x ^ 2 - 2 * ε * x + ε * ε All goals completed! 🐙 _ x^2 - 2 * ε * 2 + 0 * 0 := E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter5.Real.upperBound_def _fvar.284319 2)))) fun y hy => Mathlib.Tactic.Contrapose.mtr (Eq.mpr (id (implies_congr (Mathlib.Tactic.PushNeg.not_le_eq y 2) (Eq.trans (Mathlib.Tactic.PushNeg.not_and_eq (0 y) (y ^ 2 < 2)) (implies_congr (Eq.refl (0 y)) (Mathlib.Tactic.PushNeg.not_lt_eq (y ^ 2) 2))))) fun hy hpos => Trans.trans (Trans.trans (Mathlib.Meta.NormNum.isNat_le_true (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Eq.refl 4)) (Eq.refl true)) (mul_le_mul (le_of_lt hy) (le_of_lt hy) (le_of_lt (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))) (le_of_lt (lt_trans (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Eq.refl (Nat.ble 1 2))) hy)))) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pp_pf_overlap y (Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw 1) (Mathlib.Meta.NormNum.IsNat.of_raw 1) (Eq.refl 2))) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))) (Mathlib.Tactic.Ring.mul_zero (y ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1 + 0))) (Mathlib.Tactic.Ring.zero_mul (y ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1 + 0)))) (Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 2))) (Mathlib.Tactic.Ring.pow_add (Mathlib.Tactic.Ring.single_pow (Mathlib.Tactic.Ring.mul_pow (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 2)) (Mathlib.Tactic.Ring.one_pow (Nat.rawCast 2)))) (Mathlib.Tactic.Ring.pow_zero (y ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left y (Nat.rawCast 2) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))) (Mathlib.Tactic.Ring.mul_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1 + 0))) (Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1 + 0))))))) (Eq.mp (congrArg (fun x => y setOf x) (funext fun y => congrArg (fun x => x y ^ 2 < 2) ge_iff_le._simp_1)) hy)claim1':BddAbove _fvar.284319 := Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter5.Real.bddAbove_def _fvar.284319)))) (Exists.intro 2 _fvar.284513)claim2:1 _fvar.284319 := of_eq_true (Eq.trans (congrArg (fun x => 1 setOf x) (funext fun y => congrArg (fun x => x y ^ 2 < 2) ge_iff_le._simp_1)) (Eq.trans (congr (congrArg And zero_le_one._simp_1) (Eq.trans (congrArg (fun x => x < 2) (one_pow 2)) Nat.one_lt_ofNat._simp_1)) (and_self True)))claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := Chapter5.Real.exist_sqrt_two._proof_3 _fvar.294982 _fvar.301418claim4:_fvar.301506 1 := Chapter5.Real.exist_sqrt_two._proof_4 _fvar.295130 _fvar.301818claim5:_fvar.301506 2 := Chapter5.Real.exist_sqrt_two._proof_5 _fvar.284513 _fvar.301818claim6:Chapter5.Real.IsPos _fvar.301506 := Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter5.Real.isPos_iff _fvar.301506)))) (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.add_congr (Mathlib.Tactic.Ring.neg_congr (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_one)) (Mathlib.Tactic.Ring.neg_add (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 Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.negOfNat 1))))) Mathlib.Tactic.Ring.neg_zero)) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_one)) (Mathlib.Tactic.Ring.atom_pf _fvar.301506) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul _fvar.301506 (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 Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.301506 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.ofNat 0)))) (Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.301506 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.301506) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_zero)) (Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero (Mathlib.Tactic.Ring.add_pf_add_zero (_fvar.301506 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.301506 (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_zero_add 0))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_zero)))) (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one) (Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.307943)) (Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))h:x ^ 2 > 2ε:Realhε1:0 < εhε2:ε < 1hε3:x ^ 2 - 4 * ε > 2x ^ 2 - 2 * ε * x + ε * ε x ^ 2 - 2 * ε * 2 + 0 * 0 All goals completed! 🐙 _ = x^2 - 4 * ε := E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter5.Real.upperBound_def _fvar.284319 2)))) fun y hy => Mathlib.Tactic.Contrapose.mtr (Eq.mpr (id (implies_congr (Mathlib.Tactic.PushNeg.not_le_eq y 2) (Eq.trans (Mathlib.Tactic.PushNeg.not_and_eq (0 y) (y ^ 2 < 2)) (implies_congr (Eq.refl (0 y)) (Mathlib.Tactic.PushNeg.not_lt_eq (y ^ 2) 2))))) fun hy hpos => Trans.trans (Trans.trans (Mathlib.Meta.NormNum.isNat_le_true (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Eq.refl 4)) (Eq.refl true)) (mul_le_mul (le_of_lt hy) (le_of_lt hy) (le_of_lt (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))) (le_of_lt (lt_trans (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Eq.refl (Nat.ble 1 2))) hy)))) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pp_pf_overlap y (Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw 1) (Mathlib.Meta.NormNum.IsNat.of_raw 1) (Eq.refl 2))) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))) (Mathlib.Tactic.Ring.mul_zero (y ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1 + 0))) (Mathlib.Tactic.Ring.zero_mul (y ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1 + 0)))) (Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 2))) (Mathlib.Tactic.Ring.pow_add (Mathlib.Tactic.Ring.single_pow (Mathlib.Tactic.Ring.mul_pow (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 2)) (Mathlib.Tactic.Ring.one_pow (Nat.rawCast 2)))) (Mathlib.Tactic.Ring.pow_zero (y ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left y (Nat.rawCast 2) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))) (Mathlib.Tactic.Ring.mul_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1 + 0))) (Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1 + 0))))))) (Eq.mp (congrArg (fun x => y setOf x) (funext fun y => congrArg (fun x => x y ^ 2 < 2) ge_iff_le._simp_1)) hy)claim1':BddAbove _fvar.284319 := Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter5.Real.bddAbove_def _fvar.284319)))) (Exists.intro 2 _fvar.284513)claim2:1 _fvar.284319 := of_eq_true (Eq.trans (congrArg (fun x => 1 setOf x) (funext fun y => congrArg (fun x => x y ^ 2 < 2) ge_iff_le._simp_1)) (Eq.trans (congr (congrArg And zero_le_one._simp_1) (Eq.trans (congrArg (fun x => x < 2) (one_pow 2)) Nat.one_lt_ofNat._simp_1)) (and_self True)))claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := Chapter5.Real.exist_sqrt_two._proof_3 _fvar.294982 _fvar.301418claim4:_fvar.301506 1 := Chapter5.Real.exist_sqrt_two._proof_4 _fvar.295130 _fvar.301818claim5:_fvar.301506 2 := Chapter5.Real.exist_sqrt_two._proof_5 _fvar.284513 _fvar.301818claim6:Chapter5.Real.IsPos _fvar.301506 := Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter5.Real.isPos_iff _fvar.301506)))) (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.add_congr (Mathlib.Tactic.Ring.neg_congr (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_one)) (Mathlib.Tactic.Ring.neg_add (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 Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.negOfNat 1))))) Mathlib.Tactic.Ring.neg_zero)) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_one)) (Mathlib.Tactic.Ring.atom_pf _fvar.301506) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul _fvar.301506 (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 Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.301506 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.ofNat 0)))) (Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.301506 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.301506) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_zero)) (Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero (Mathlib.Tactic.Ring.add_pf_add_zero (_fvar.301506 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.301506 (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_zero_add 0))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_zero)))) (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one) (Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.307943)) (Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))h:x ^ 2 > 2ε:Realhε1:0 < εhε2:ε < 1hε3:x ^ 2 - 4 * ε > 2x ^ 2 - 2 * ε * 2 + 0 * 0 = x ^ 2 - 4 * ε All goals completed! 🐙 _ > 2 := hε3 have why (y:Real) (hy: y E) : x - ε y := x, x ^ 2 = 2 All goals completed! 🐙 have claim13: x-ε upperBounds E := x, x ^ 2 = 2 rwa [upperBound_defE:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := ?_mvar.301817claim4:_fvar.301506 1 := ?_mvar.307942claim5:_fvar.301506 2 := ?_mvar.314096claim6:Chapter5.Real.IsPos _fvar.301506 := ?_mvar.319645h:x ^ 2 > 2ε:Realhε1:0 < εhε2:ε < 1hε3:x ^ 2 - 4 * ε > 2claim12:(_fvar.301506 - _fvar.472342) ^ 2 > 2 := Trans.trans (Trans.trans (Trans.trans ?_mvar.473091 ?_mvar.473458) ?_mvar.474001) _fvar.472364why: y _fvar.284319, _fvar.301506 - _fvar.472342 y := fun y hy => @?_mvar.500906 y hy x_1 E, x_1 x - ε have claim14: x x-ε := x, x ^ 2 = 2 All goals completed! 🐙 All goals completed! 🐙 E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := ?_mvar.301817claim4:_fvar.301506 1 := ?_mvar.307942claim5:_fvar.301506 2 := ?_mvar.314096claim6:Chapter5.Real.IsPos _fvar.301506 := ?_mvar.319645h:x ^ 2 < 2x ^ 2 = 2 have claim7 : ε, 0 < ε ε < 1 x^2 + 5*ε < 2 := x, x ^ 2 = 2 E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := ?_mvar.301817claim4:_fvar.301506 1 := ?_mvar.307942claim5:_fvar.301506 2 := ?_mvar.314096claim6:Chapter5.Real.IsPos _fvar.301506 := ?_mvar.319645h:x ^ 2 < 2ε:Chapter5.Real := min (1 / 2) ((2 - _fvar.301506 ^ 2) / 10) ε, 0 < ε ε < 1 x ^ 2 + 5 * ε < 2 have hx : 2 - x^2 > 0 := x, x ^ 2 = 2 All goals completed! 🐙 have : 0 < ε := x, x ^ 2 = 2 All goals completed! 🐙 E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := ?_mvar.301817claim4:_fvar.301506 1 := ?_mvar.307942claim5:_fvar.301506 2 := ?_mvar.314096claim6:Chapter5.Real.IsPos _fvar.301506 := ?_mvar.319645h:x ^ 2 < 2ε:Chapter5.Real := min (1 / 2) ((2 - _fvar.301506 ^ 2) / 10)hx:2 - _fvar.301506 ^ 2 > 0 := ?_mvar.522105:0 < _fvar.521661 := ?_mvar.522395hε1:_fvar.521661 1 / 2 := min_le_left ?_mvar.525916 ?_mvar.525917 ε, 0 < ε ε < 1 x ^ 2 + 5 * ε < 2 E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := ?_mvar.301817claim4:_fvar.301506 1 := ?_mvar.307942claim5:_fvar.301506 2 := ?_mvar.314096claim6:Chapter5.Real.IsPos _fvar.301506 := ?_mvar.319645h:x ^ 2 < 2ε:Chapter5.Real := min (1 / 2) ((2 - _fvar.301506 ^ 2) / 10)hx:2 - _fvar.301506 ^ 2 > 0 := ?_mvar.522105:0 < _fvar.521661 := ?_mvar.522395hε1:_fvar.521661 1 / 2 := min_le_left ?_mvar.525916 ?_mvar.525917hε2:_fvar.521661 (2 - _fvar.301506 ^ 2) / 10 := min_le_right ?_mvar.526350 ?_mvar.526351 ε, 0 < ε ε < 1 x ^ 2 + 5 * ε < 2 E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := ?_mvar.301817claim4:_fvar.301506 1 := ?_mvar.307942claim5:_fvar.301506 2 := ?_mvar.314096claim6:Chapter5.Real.IsPos _fvar.301506 := ?_mvar.319645h:x ^ 2 < 2ε:Chapter5.Real := min (1 / 2) ((2 - _fvar.301506 ^ 2) / 10)hx:2 - _fvar.301506 ^ 2 > 0 := ?_mvar.522105:0 < _fvar.521661 := ?_mvar.522395hε1:_fvar.521661 1 / 2 := min_le_left ?_mvar.525916 ?_mvar.525917hε2:_fvar.521661 (2 - _fvar.301506 ^ 2) / 10 := min_le_right ?_mvar.526350 ?_mvar.526351ε < 1E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := ?_mvar.301817claim4:_fvar.301506 1 := ?_mvar.307942claim5:_fvar.301506 2 := ?_mvar.314096claim6:Chapter5.Real.IsPos _fvar.301506 := ?_mvar.319645h:x ^ 2 < 2ε:Chapter5.Real := min (1 / 2) ((2 - _fvar.301506 ^ 2) / 10)hx:2 - _fvar.301506 ^ 2 > 0 := ?_mvar.522105:0 < _fvar.521661 := ?_mvar.522395hε1:_fvar.521661 1 / 2 := min_le_left ?_mvar.525916 ?_mvar.525917hε2:_fvar.521661 (2 - _fvar.301506 ^ 2) / 10 := min_le_right ?_mvar.526350 ?_mvar.526351x ^ 2 + 5 * ε < 2 E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := ?_mvar.301817claim4:_fvar.301506 1 := ?_mvar.307942claim5:_fvar.301506 2 := ?_mvar.314096claim6:Chapter5.Real.IsPos _fvar.301506 := ?_mvar.319645h:x ^ 2 < 2ε:Chapter5.Real := min (1 / 2) ((2 - _fvar.301506 ^ 2) / 10)hx:2 - _fvar.301506 ^ 2 > 0 := ?_mvar.522105:0 < _fvar.521661 := ?_mvar.522395hε1:_fvar.521661 1 / 2 := min_le_left ?_mvar.525916 ?_mvar.525917hε2:_fvar.521661 (2 - _fvar.301506 ^ 2) / 10 := min_le_right ?_mvar.526350 ?_mvar.526351ε < 1E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := ?_mvar.301817claim4:_fvar.301506 1 := ?_mvar.307942claim5:_fvar.301506 2 := ?_mvar.314096claim6:Chapter5.Real.IsPos _fvar.301506 := ?_mvar.319645h:x ^ 2 < 2ε:Chapter5.Real := min (1 / 2) ((2 - _fvar.301506 ^ 2) / 10)hx:2 - _fvar.301506 ^ 2 > 0 := ?_mvar.522105:0 < _fvar.521661 := ?_mvar.522395hε1:_fvar.521661 1 / 2 := min_le_left ?_mvar.525916 ?_mvar.525917hε2:_fvar.521661 (2 - _fvar.301506 ^ 2) / 10 := min_le_right ?_mvar.526350 ?_mvar.526351x ^ 2 + 5 * ε < 2 All goals completed! 🐙 E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := ?_mvar.301817claim4:_fvar.301506 1 := ?_mvar.307942claim5:_fvar.301506 2 := ?_mvar.314096claim6:Chapter5.Real.IsPos _fvar.301506 := ?_mvar.319645h:x ^ 2 < 2ε:Realhε1:0 < εhε2:ε < 1hε3:x ^ 2 + 5 * ε < 2x ^ 2 = 2 have claim8 : (x+ε)^2 < 2 := calc _ = x^2 + (2*x)*ε + ε*ε := E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter5.Real.upperBound_def _fvar.284319 2)))) fun y hy => Mathlib.Tactic.Contrapose.mtr (Eq.mpr (id (implies_congr (Mathlib.Tactic.PushNeg.not_le_eq y 2) (Eq.trans (Mathlib.Tactic.PushNeg.not_and_eq (0 y) (y ^ 2 < 2)) (implies_congr (Eq.refl (0 y)) (Mathlib.Tactic.PushNeg.not_lt_eq (y ^ 2) 2))))) fun hy hpos => Trans.trans (Trans.trans (Mathlib.Meta.NormNum.isNat_le_true (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Eq.refl 4)) (Eq.refl true)) (mul_le_mul (le_of_lt hy) (le_of_lt hy) (le_of_lt (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))) (le_of_lt (lt_trans (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Eq.refl (Nat.ble 1 2))) hy)))) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pp_pf_overlap y (Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw 1) (Mathlib.Meta.NormNum.IsNat.of_raw 1) (Eq.refl 2))) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))) (Mathlib.Tactic.Ring.mul_zero (y ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1 + 0))) (Mathlib.Tactic.Ring.zero_mul (y ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1 + 0)))) (Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 2))) (Mathlib.Tactic.Ring.pow_add (Mathlib.Tactic.Ring.single_pow (Mathlib.Tactic.Ring.mul_pow (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 2)) (Mathlib.Tactic.Ring.one_pow (Nat.rawCast 2)))) (Mathlib.Tactic.Ring.pow_zero (y ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left y (Nat.rawCast 2) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))) (Mathlib.Tactic.Ring.mul_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1 + 0))) (Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1 + 0))))))) (Eq.mp (congrArg (fun x => y setOf x) (funext fun y => congrArg (fun x => x y ^ 2 < 2) ge_iff_le._simp_1)) hy)claim1':BddAbove _fvar.284319 := Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter5.Real.bddAbove_def _fvar.284319)))) (Exists.intro 2 _fvar.284513)claim2:1 _fvar.284319 := of_eq_true (Eq.trans (congrArg (fun x => 1 setOf x) (funext fun y => congrArg (fun x => x y ^ 2 < 2) ge_iff_le._simp_1)) (Eq.trans (congr (congrArg And zero_le_one._simp_1) (Eq.trans (congrArg (fun x => x < 2) (one_pow 2)) Nat.one_lt_ofNat._simp_1)) (and_self True)))claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := Chapter5.Real.exist_sqrt_two._proof_3 _fvar.294982 _fvar.301418claim4:_fvar.301506 1 := Chapter5.Real.exist_sqrt_two._proof_4 _fvar.295130 _fvar.301818claim5:_fvar.301506 2 := Chapter5.Real.exist_sqrt_two._proof_5 _fvar.284513 _fvar.301818claim6:Chapter5.Real.IsPos _fvar.301506 := Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter5.Real.isPos_iff _fvar.301506)))) (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.add_congr (Mathlib.Tactic.Ring.neg_congr (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_one)) (Mathlib.Tactic.Ring.neg_add (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 Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.negOfNat 1))))) Mathlib.Tactic.Ring.neg_zero)) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_one)) (Mathlib.Tactic.Ring.atom_pf _fvar.301506) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul _fvar.301506 (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 Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.301506 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.ofNat 0)))) (Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.301506 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.301506) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_zero)) (Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero (Mathlib.Tactic.Ring.add_pf_add_zero (_fvar.301506 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.301506 (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_zero_add 0))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_zero)))) (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one) (Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.307943)) (Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))h:x ^ 2 < 2ε:Realhε1:0 < εhε2:ε < 1hε3:x ^ 2 + 5 * ε < 2(x + ε) ^ 2 = x ^ 2 + 2 * x * ε + ε * ε All goals completed! 🐙 _ x^2 + (2*2)*ε + 1*ε := E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter5.Real.upperBound_def _fvar.284319 2)))) fun y hy => Mathlib.Tactic.Contrapose.mtr (Eq.mpr (id (implies_congr (Mathlib.Tactic.PushNeg.not_le_eq y 2) (Eq.trans (Mathlib.Tactic.PushNeg.not_and_eq (0 y) (y ^ 2 < 2)) (implies_congr (Eq.refl (0 y)) (Mathlib.Tactic.PushNeg.not_lt_eq (y ^ 2) 2))))) fun hy hpos => Trans.trans (Trans.trans (Mathlib.Meta.NormNum.isNat_le_true (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Eq.refl 4)) (Eq.refl true)) (mul_le_mul (le_of_lt hy) (le_of_lt hy) (le_of_lt (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))) (le_of_lt (lt_trans (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Eq.refl (Nat.ble 1 2))) hy)))) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pp_pf_overlap y (Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw 1) (Mathlib.Meta.NormNum.IsNat.of_raw 1) (Eq.refl 2))) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))) (Mathlib.Tactic.Ring.mul_zero (y ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1 + 0))) (Mathlib.Tactic.Ring.zero_mul (y ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1 + 0)))) (Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 2))) (Mathlib.Tactic.Ring.pow_add (Mathlib.Tactic.Ring.single_pow (Mathlib.Tactic.Ring.mul_pow (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 2)) (Mathlib.Tactic.Ring.one_pow (Nat.rawCast 2)))) (Mathlib.Tactic.Ring.pow_zero (y ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left y (Nat.rawCast 2) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))) (Mathlib.Tactic.Ring.mul_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1 + 0))) (Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1 + 0))))))) (Eq.mp (congrArg (fun x => y setOf x) (funext fun y => congrArg (fun x => x y ^ 2 < 2) ge_iff_le._simp_1)) hy)claim1':BddAbove _fvar.284319 := Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter5.Real.bddAbove_def _fvar.284319)))) (Exists.intro 2 _fvar.284513)claim2:1 _fvar.284319 := of_eq_true (Eq.trans (congrArg (fun x => 1 setOf x) (funext fun y => congrArg (fun x => x y ^ 2 < 2) ge_iff_le._simp_1)) (Eq.trans (congr (congrArg And zero_le_one._simp_1) (Eq.trans (congrArg (fun x => x < 2) (one_pow 2)) Nat.one_lt_ofNat._simp_1)) (and_self True)))claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := Chapter5.Real.exist_sqrt_two._proof_3 _fvar.294982 _fvar.301418claim4:_fvar.301506 1 := Chapter5.Real.exist_sqrt_two._proof_4 _fvar.295130 _fvar.301818claim5:_fvar.301506 2 := Chapter5.Real.exist_sqrt_two._proof_5 _fvar.284513 _fvar.301818claim6:Chapter5.Real.IsPos _fvar.301506 := Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter5.Real.isPos_iff _fvar.301506)))) (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.add_congr (Mathlib.Tactic.Ring.neg_congr (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_one)) (Mathlib.Tactic.Ring.neg_add (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 Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.negOfNat 1))))) Mathlib.Tactic.Ring.neg_zero)) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_one)) (Mathlib.Tactic.Ring.atom_pf _fvar.301506) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul _fvar.301506 (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 Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.301506 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.ofNat 0)))) (Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.301506 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.301506) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_zero)) (Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero (Mathlib.Tactic.Ring.add_pf_add_zero (_fvar.301506 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.301506 (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_zero_add 0))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_zero)))) (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one) (Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.307943)) (Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))h:x ^ 2 < 2ε:Realhε1:0 < εhε2:ε < 1hε3:x ^ 2 + 5 * ε < 2x ^ 2 + 2 * x * ε + ε * ε x ^ 2 + 2 * 2 * ε + 1 * ε All goals completed! 🐙 _ = x^2 + 5*ε := E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter5.Real.upperBound_def _fvar.284319 2)))) fun y hy => Mathlib.Tactic.Contrapose.mtr (Eq.mpr (id (implies_congr (Mathlib.Tactic.PushNeg.not_le_eq y 2) (Eq.trans (Mathlib.Tactic.PushNeg.not_and_eq (0 y) (y ^ 2 < 2)) (implies_congr (Eq.refl (0 y)) (Mathlib.Tactic.PushNeg.not_lt_eq (y ^ 2) 2))))) fun hy hpos => Trans.trans (Trans.trans (Mathlib.Meta.NormNum.isNat_le_true (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Eq.refl 4)) (Eq.refl true)) (mul_le_mul (le_of_lt hy) (le_of_lt hy) (le_of_lt (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))) (le_of_lt (lt_trans (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real (Eq.refl 2)) (Eq.refl (Nat.ble 1 2))) hy)))) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pp_pf_overlap y (Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw 1) (Mathlib.Meta.NormNum.IsNat.of_raw 1) (Eq.refl 2))) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))) (Mathlib.Tactic.Ring.mul_zero (y ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1 + 0))) (Mathlib.Tactic.Ring.zero_mul (y ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1 + 0)))) (Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 2))) (Mathlib.Tactic.Ring.pow_add (Mathlib.Tactic.Ring.single_pow (Mathlib.Tactic.Ring.mul_pow (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 2)) (Mathlib.Tactic.Ring.one_pow (Nat.rawCast 2)))) (Mathlib.Tactic.Ring.pow_zero (y ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left y (Nat.rawCast 2) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))) (Mathlib.Tactic.Ring.mul_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1 + 0))) (Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 2 * Nat.rawCast 1 + 0))))))) (Eq.mp (congrArg (fun x => y setOf x) (funext fun y => congrArg (fun x => x y ^ 2 < 2) ge_iff_le._simp_1)) hy)claim1':BddAbove _fvar.284319 := Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter5.Real.bddAbove_def _fvar.284319)))) (Exists.intro 2 _fvar.284513)claim2:1 _fvar.284319 := of_eq_true (Eq.trans (congrArg (fun x => 1 setOf x) (funext fun y => congrArg (fun x => x y ^ 2 < 2) ge_iff_le._simp_1)) (Eq.trans (congr (congrArg And zero_le_one._simp_1) (Eq.trans (congrArg (fun x => x < 2) (one_pow 2)) Nat.one_lt_ofNat._simp_1)) (and_self True)))claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := Chapter5.Real.exist_sqrt_two._proof_3 _fvar.294982 _fvar.301418claim4:_fvar.301506 1 := Chapter5.Real.exist_sqrt_two._proof_4 _fvar.295130 _fvar.301818claim5:_fvar.301506 2 := Chapter5.Real.exist_sqrt_two._proof_5 _fvar.284513 _fvar.301818claim6:Chapter5.Real.IsPos _fvar.301506 := Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter5.Real.isPos_iff _fvar.301506)))) (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.add_congr (Mathlib.Tactic.Ring.neg_congr (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_one)) (Mathlib.Tactic.Ring.neg_add (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 Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.negOfNat 1))))) Mathlib.Tactic.Ring.neg_zero)) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_one)) (Mathlib.Tactic.Ring.atom_pf _fvar.301506) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul _fvar.301506 (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 Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.301506 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.ofNat 0)))) (Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.301506 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.301506) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_zero)) (Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero (Mathlib.Tactic.Ring.add_pf_add_zero (_fvar.301506 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.301506 (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw Chapter5.Real (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw Chapter5.Real 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_zero_add 0))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Chapter5.Real Nat.cast_zero)))) (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one) (Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.307943)) (Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))h:x ^ 2 < 2ε:Realhε1:0 < εhε2:ε < 1hε3:x ^ 2 + 5 * ε < 2x ^ 2 + 2 * 2 * ε + 1 * ε = x ^ 2 + 5 * ε All goals completed! 🐙 _ < 2 := hε3 have claim9 : x + ε E := x, x ^ 2 = 2 E:Set Chapter5.Real := {y | y 0 y ^ 2 < 2}claim1:2 upperBounds _fvar.284319 := ?_mvar.284512claim1':BddAbove _fvar.284319 := ?_mvar.294981claim2:1 _fvar.284319 := ?_mvar.295129claim2':E.Nonemptyx:Chapter5.Real := match Chapter5.ExtendedReal.sup _fvar.284319 with | Chapter5.ExtendedReal.neg_infty => 0 | Chapter5.ExtendedReal.real x => x | Chapter5.ExtendedReal.infty => 0claim3:IsLUB _fvar.284319 _fvar.301506 := ?_mvar.301817claim4:_fvar.301506 1 := ?_mvar.307942claim5:_fvar.301506 2 := ?_mvar.314096claim6:Chapter5.Real.IsPos _fvar.301506 := ?_mvar.319645h:x ^ 2 < 2ε:Realhε1:0 < εhε2:ε < 1hε3:x ^ 2 + 5 * ε < 2claim8:(_fvar.301506 + _fvar.535552) ^ 2 < 2 := Trans.trans (Trans.trans (Trans.trans ?_mvar.536256 ?_mvar.536604) ?_mvar.537122) _fvar.5355740 x + ε; All goals completed! 🐙 have claim10 : x + ε x := x, x ^ 2 = 2 All goals completed! 🐙 All goals completed! 🐙 All goals completed! 🐙

Ремарка 5.5.13

theorem declaration uses 'sorry'Real.exist_irrational : x:Real, ¬ q:, x = (q:Real) := x, ¬ q, x = q All goals completed! 🐙

Допоміжна лема для Вправи 5.5.1.

theorem Real.mem_neg (E: Set Real) (x:Real) : x -E -x E := Set.mem_neg

Вправа 5.5.1

theorem declaration uses 'sorry'Real.inf_neg {E: Set Real} {M:Real} (h: IsLUB E M) : IsGLB (-E) (-M) := E:Set RealM:Realh:IsLUB E MIsGLB (-E) (-M) All goals completed! 🐙
theorem declaration uses 'sorry'Real.GLB_exist {E: Set Real} (hE: Set.Nonempty E) (hbound: BddBelow E): S, IsGLB E S := E:Set RealhE:E.Nonemptyhbound:BddBelow E S, IsGLB E S All goals completed! 🐙open Classical in noncomputable abbrev ExtendedReal.inf (E: Set Real) : ExtendedReal := if h1:E.Nonempty then (if h2:BddBelow E then ((Real.GLB_exist h1 h2).choose:Real) else ) else theorem ExtendedReal.inf_of_empty : inf = := inf = All goals completed! 🐙theorem ExtendedReal.inf_of_unbounded {E: Set Real} (hb: ¬ BddBelow E) : inf E = := E:Set Realhb:¬BddBelow Einf E = have hE : E.Nonempty := E:Set Realhb:¬BddBelow Einf E = E:Set Realhb:E = BddBelow E; All goals completed! 🐙 All goals completed! 🐙theorem ExtendedReal.inf_of_bounded {E: Set Real} (hnon: E.Nonempty) (hb: BddBelow E) : IsGLB E (inf E) := E:Set Realhnon:E.Nonemptyhb:BddBelow EIsGLB E (match inf E with | neg_infty => 0 | real x => x | infty => 0) E:Set Realhnon:E.Nonemptyhb:BddBelow EIsGLB E .choose; All goals completed! 🐙theorem ExtendedReal.inf_of_bounded_finite {E: Set Real} (hnon: E.Nonempty) (hb: BddBelow E) : (inf E).IsFinite := E:Set Realhnon:E.Nonemptyhb:BddBelow E(inf E).IsFinite All goals completed! 🐙

Вправа 5.5.5

theorem declaration uses 'sorry'Real.irrat_between {x y:Real} (hxy: x < y) : z, x < z z < y ¬ q:, z = (q:Real) := x:Realy:Realhxy:x < y z, x < z z < y ¬ q, z = q All goals completed! 🐙
/- Використайте поняття супремуму в цьому розділі для визначення операції `sSup` в Mathlib -/ noncomputable instance Real.inst_SupSet : SupSet Real where sSup E := ((ExtendedReal.sup E):Real)

Використайте операцію SupSet.sSup.{u_1} {α : Type u_1} [self : SupSet α] : Set α αsSup для побудови умовно повної ґратчастої структури на Chapter5.Real : TypeReal

noncomputable instance Real.inst_conditionallyCompleteLattice : ConditionallyCompleteLattice Real := conditionallyCompleteLatticeOfLatticeOfsSup Real ( (s : Set Real), BddAbove s s.Nonempty IsLUB s (sSup s) s✝:Set Reala✝¹:BddAbove s✝a✝:s✝.NonemptyIsLUB s✝ (sSup s✝); All goals completed! 🐙)
theorem ExtendedReal.sSup_of_bounded {E: Set Real} (hnon: E.Nonempty) (hb: BddAbove E) : IsLUB E (sSup E) := sup_of_bounded hnon hbend Chapter5