Analysis I, Section 11.9: The two fundamental theorems of calculus

I have attempted to make the translation as faithful a paraphrasing as possible of the original text. When there is a choice between a more idiomatic Lean solution and a more faithful translation, I have generally chosen the latter. In particular, there will be places where the Lean code could be "golfed" to be more elegant and idiomatic, but I have consciously avoided doing so.

Main constructions and results of this section:

namespace Chapter11open Chapter9 Chapter10 BoundedInterval

Theorem 11.9.1 (First Fundamental Theorem of Calculus)

theorem cts_of_integ {a b:} {f: } (hf: IntegrableOn f (Icc a b)) : ContinuousOn (fun x => integ f (Icc a x)) (.Icc a b) := a:b:f: hf:IntegrableOn f (Icc a b)ContinuousOn (fun x => integ f (Icc a x)) (Set.Icc a b) -- This proof is written to follow the structure of the original text. a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)ContinuousOn F (Set.Icc a b) a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| MContinuousOn F (Set.Icc a b) have {x y:} (hxy: x < y) (hx: x Set.Icc a b) (hy: y Set.Icc a b) : |F y - F x| M * (y - x) := a:b:f: hf:IntegrableOn f (Icc a b)ContinuousOn (fun x => integ f (Icc a x)) (Set.Icc a b) a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mx:y:hxy:x < yhx:a x x bhy:a y y b|F y - F x| M * (y - x) a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mx:y:hxy:x < yhx:a x x bhy:a y y bthis:?_mvar.4814 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)|F y - F x| M * (y - x) a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mx:y:hxy:x < yhx:a x x bhy:a y y bthis:?_mvar.4814 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)integ f (Ioc x y) M * (y - x) -integ f (Ioc x y) M * (y - x) a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mx:y:hxy:x < yhx:a x x bhy:a y y bthis:?_mvar.4814 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)integ f (Ioc x y) M * (y - x)a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mx:y:hxy:x < yhx:a x x bhy:a y y bthis:?_mvar.4814 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)-integ f (Ioc x y) M * (y - x) a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mx:y:hxy:x < yhx:a x x bhy:a y y bthis:?_mvar.4814 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)integ f (Ioc x y) M * (y - x) a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mx:y:hxy:x < yhx:a x x bhy:a y y bthis:?_mvar.4814 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)M * (y - x) = integ (fun x => M) (Ioc x y)a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mx:y:hxy:x < yhx:a x x bhy:a y y bthis:?_mvar.4814 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)MajorizesOn (fun x => M) f (Ioc x y) a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mx:y:hxy:x < yhx:a x x bhy:a y y bthis:?_mvar.4814 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)M * (y - x) = integ (fun x => M) (Ioc x y) All goals completed! 🐙 a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mx:y:hxy:x < yhx:a x x bhy:a y y bthis:?_mvar.4814 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)z:hz:z (Ioc x y)f z (fun x => M) z a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mx:y:hxy:x < yhx:a x x bhy:a y y bthis:?_mvar.4814 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)z:hz:z (Ioc x y)z (Icc a b)a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:x:y:hxy:x < yhx:a x x bhy:a y y bthis:?_mvar.4814 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)z:hz:z (Ioc x y)hM:|f z| Mf z (fun x => M) z a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mx:y:hxy:x < yhx:a x x bhy:a y y bthis:?_mvar.4814 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)z:hz:z (Ioc x y)z (Icc a b) a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:x:y:hxy:x < yhx:a x x bhy:a y y bthis:Chapter11.IntegrableOn _fvar.269 (Chapter11.BoundedInterval.Ioc _fvar.369 _fvar.371) Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 _fvar.371) = Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 _fvar.369) + Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Ioc _fvar.369 _fvar.371) := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)z:hM: (x : ), a x x b |f x| Mhz:x < z z ya z z b; All goals completed! 🐙 All goals completed! 🐙 a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mx:y:hxy:x < yhx:a x x bhy:a y y bthis:?_mvar.4814 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)-(M * (y - x)) integ f (Ioc x y) a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mx:y:hxy:x < yhx:a x x bhy:a y y bthis:?_mvar.4814 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)-(M * (y - x)) = integ (fun x => -M) (Ioc x y)a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mx:y:hxy:x < yhx:a x x bhy:a y y bthis:?_mvar.4814 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)MajorizesOn f (fun x => -M) (Ioc x y) a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mx:y:hxy:x < yhx:a x x bhy:a y y bthis:?_mvar.4814 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)-(M * (y - x)) = integ (fun x => -M) (Ioc x y) All goals completed! 🐙 a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mx:y:hxy:x < yhx:a x x bhy:a y y bthis:?_mvar.4814 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)z:hz:z (Ioc x y)(fun x => -M) z f z a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mx:y:hxy:x < yhx:a x x bhy:a y y bthis:?_mvar.4814 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)z:hz:z (Ioc x y)z (Icc a b)a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:x:y:hxy:x < yhx:a x x bhy:a y y bthis:?_mvar.4814 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)z:hz:z (Ioc x y)hM:|f z| M(fun x => -M) z f z a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mx:y:hxy:x < yhx:a x x bhy:a y y bthis:?_mvar.4814 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)z:hz:z (Ioc x y)z (Icc a b) a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:x:y:hxy:x < yhx:a x x bhy:a y y bthis:Chapter11.IntegrableOn _fvar.269 (Chapter11.BoundedInterval.Ioc _fvar.369 _fvar.371) Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 _fvar.371) = Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 _fvar.369) + Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Ioc _fvar.369 _fvar.371) := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)z:hM: (x : ), a x x b |f x| Mhz:x < z z ya z z b; All goals completed! 🐙 All goals completed! 🐙 replace {x y:} (hx: x Set.Icc a b) (hy: y Set.Icc a b) : |F y - F x| M * |x-y| := a:b:f: hf:IntegrableOn f (Icc a b)ContinuousOn (fun x => integ f (Icc a x)) (Set.Icc a b) a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mthis: {x y : }, x < y x Set.Icc _fvar.267 _fvar.268 y Set.Icc _fvar.267 _fvar.268 |@_fvar.281 y - @_fvar.281 x| _fvar.360 * (y - x) := fun {x y} hxy hx hy => @?_mvar.783 x y hxy hx hyx:y:hx:x Set.Icc a bhy:y Set.Icc a bh:x < y|F y - F x| M * |x - y|a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mthis: {x y : }, x < y x Set.Icc _fvar.267 _fvar.268 y Set.Icc _fvar.267 _fvar.268 |@_fvar.281 y - @_fvar.281 x| _fvar.360 * (y - x) := fun {x y} hxy hx hy => @?_mvar.783 x y hxy hx hyx:hx:x Set.Icc a bhy:x Set.Icc a b|F x - F x| M * |x - x|a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mthis: {x y : }, x < y x Set.Icc _fvar.267 _fvar.268 y Set.Icc _fvar.267 _fvar.268 |@_fvar.281 y - @_fvar.281 x| _fvar.360 * (y - x) := fun {x y} hxy hx hy => @?_mvar.783 x y hxy hx hyx:y:hx:x Set.Icc a bhy:y Set.Icc a bh:y < x|F y - F x| M * |x - y| a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mthis: {x y : }, x < y x Set.Icc _fvar.267 _fvar.268 y Set.Icc _fvar.267 _fvar.268 |@_fvar.281 y - @_fvar.281 x| _fvar.360 * (y - x) := fun {x y} hxy hx hy => @?_mvar.783 x y hxy hx hyx:y:hx:x Set.Icc a bhy:y Set.Icc a bh:x < y|F y - F x| M * |x - y| All goals completed! 🐙 a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mthis: {x y : }, x < y x Set.Icc _fvar.267 _fvar.268 y Set.Icc _fvar.267 _fvar.268 |@_fvar.281 y - @_fvar.281 x| _fvar.360 * (y - x) := fun {x y} hxy hx hy => @?_mvar.783 x y hxy hx hyx:hx:x Set.Icc a bhy:x Set.Icc a b|F x - F x| M * |x - x| All goals completed! 🐙 a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mthis: {x y : }, x < y x Set.Icc _fvar.267 _fvar.268 y Set.Icc _fvar.267 _fvar.268 |@_fvar.281 y - @_fvar.281 x| _fvar.360 * (y - x) := fun {x y} hxy hx hy => @?_mvar.783 x y hxy hx hyx:y:hx:x Set.Icc a bhy:y Set.Icc a bh:y < x|F y - F x| M * |x - y| All goals completed! 🐙 replace : UniformContinuousOn F (.Icc a b) := a:b:f: hf:IntegrableOn f (Icc a b)ContinuousOn (fun x => integ f (Icc a x)) (Set.Icc a b) a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mthis: {x y : }, x Set.Icc _fvar.267 _fvar.268 y Set.Icc _fvar.267 _fvar.268 |@_fvar.281 y - @_fvar.281 x| _fvar.360 * |x - y| := fun {x y} hx hy => @?_mvar.113520 x y hx hy (ε : ), 0 < ε δ, 0 < δ x Set.Icc a b, y Set.Icc a b, |x - y| < δ |F x - F y| < ε a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mthis: {x y : }, x Set.Icc _fvar.267 _fvar.268 y Set.Icc _fvar.267 _fvar.268 |@_fvar.281 y - @_fvar.281 x| _fvar.360 * |x - y| := fun {x y} hx hy => @?_mvar.113520 x y hx hyε::0 < ε δ, 0 < δ x Set.Icc a b, y Set.Icc a b, |x - y| < δ |F x - F y| < ε use (ε/(max M 1)), (a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mthis: {x y : }, x Set.Icc _fvar.267 _fvar.268 y Set.Icc _fvar.267 _fvar.268 |@_fvar.281 y - @_fvar.281 x| _fvar.360 * |x - y| := fun {x y} hx hy => Or.casesOn (lt_trichotomy x y) (fun h => of_eq_true (Eq.trans (congrArg (fun x_1 => |@_fvar.281 y - @_fvar.281 x| _fvar.360 * x_1) (Eq.trans (abs_of_neg (have this := lt_of_not_ge fun a => Mathlib.Tactic.Linarith.lt_irrefl (Eq.mp (congrArg (fun _a => _a < 0) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf x) (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (x ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf x) (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (x ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul x (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Eq.refl (Int.ofNat 1))))))) Mathlib.Tactic.Ring.neg_zero)) (Mathlib.Tactic.Ring.add_pf_zero_add (x ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + (y ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero x (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))) (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h) (Mathlib.Tactic.Linarith.sub_nonpos_of_le a))); this)) (neg_sub x y))) (eq_true (@_fvar.784 x y h hx hy)))) fun h => Or.casesOn h (fun h => Eq.ndrec (motive := fun {y} => y Set.Icc _fvar.267 _fvar.268 |@_fvar.281 y - @_fvar.281 x| _fvar.360 * |x - y|) (fun hy => of_eq_true (Eq.trans (congr (congrArg LE.le (Eq.trans (congrArg abs (sub_self (@_fvar.281 x))) abs_zero)) (Eq.trans (congrArg (HMul.hMul _fvar.360) (Eq.trans (congrArg abs (sub_self x)) abs_zero)) (mul_zero _fvar.360))) (le_refl._simp_1 0))) h hy) fun h => of_eq_true (Eq.trans (congr (congrArg LE.le (abs_sub_comm (@_fvar.281 y) (@_fvar.281 x))) (congrArg (HMul.hMul _fvar.360) (abs_of_pos (have this := lt_of_not_ge fun a => Mathlib.Tactic.Linarith.lt_irrefl (Eq.mp (congrArg (fun _a => _a < 0) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.atom_pf x) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul x (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (y ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (x ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf x) (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_gt (y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) (Mathlib.Tactic.Ring.add_pf_add_zero (x ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)) (Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + (x ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero x (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))) (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h) (Mathlib.Tactic.Linarith.sub_nonpos_of_le a))); this)))) (eq_true (@_fvar.784 y x h hy hx)))ε::0 < ε0 < ε / max M 1 All goals completed! 🐙) a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mthis: {x y : }, x Set.Icc _fvar.267 _fvar.268 y Set.Icc _fvar.267 _fvar.268 |@_fvar.281 y - @_fvar.281 x| _fvar.360 * |x - y| := fun {x y} hx hy => @?_mvar.113520 x y hx hyε::0 < εx:hx:x Set.Icc a by:hy:y Set.Icc a bhxy:|x - y| < ε / max M 1|F x - F y| < ε calc _ = |F y - F x| := a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mthis: {x y : }, x Set.Icc _fvar.267 _fvar.268 y Set.Icc _fvar.267 _fvar.268 |@_fvar.281 y - @_fvar.281 x| _fvar.360 * |x - y| := fun {x y} hx hy => Or.casesOn (lt_trichotomy x y) (fun h => of_eq_true (Eq.trans (congrArg (fun x_1 => |@_fvar.281 y - @_fvar.281 x| _fvar.360 * x_1) (Eq.trans (abs_of_neg (have this := lt_of_not_ge fun a => Mathlib.Tactic.Linarith.lt_irrefl (Eq.mp (congrArg (fun _a => _a < 0) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf x) (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (x ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf x) (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (x ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul x (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Eq.refl (Int.ofNat 1))))))) Mathlib.Tactic.Ring.neg_zero)) (Mathlib.Tactic.Ring.add_pf_zero_add (x ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + (y ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero x (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))) (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h) (Mathlib.Tactic.Linarith.sub_nonpos_of_le a))); this)) (neg_sub x y))) (eq_true (@_fvar.784 x y h hx hy)))) fun h => Or.casesOn h (fun h => Eq.ndrec (motive := fun {y} => y Set.Icc _fvar.267 _fvar.268 |@_fvar.281 y - @_fvar.281 x| _fvar.360 * |x - y|) (fun hy => of_eq_true (Eq.trans (congr (congrArg LE.le (Eq.trans (congrArg abs (sub_self (@_fvar.281 x))) abs_zero)) (Eq.trans (congrArg (HMul.hMul _fvar.360) (Eq.trans (congrArg abs (sub_self x)) abs_zero)) (mul_zero _fvar.360))) (le_refl._simp_1 0))) h hy) fun h => of_eq_true (Eq.trans (congr (congrArg LE.le (abs_sub_comm (@_fvar.281 y) (@_fvar.281 x))) (congrArg (HMul.hMul _fvar.360) (abs_of_pos (have this := lt_of_not_ge fun a => Mathlib.Tactic.Linarith.lt_irrefl (Eq.mp (congrArg (fun _a => _a < 0) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.atom_pf x) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul x (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (y ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (x ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf x) (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_gt (y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) (Mathlib.Tactic.Ring.add_pf_add_zero (x ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)) (Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + (x ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero x (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))) (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h) (Mathlib.Tactic.Linarith.sub_nonpos_of_le a))); this)))) (eq_true (@_fvar.784 y x h hy hx)))ε::0 < εx:hx:x Set.Icc a by:hy:y Set.Icc a bhxy:|x - y| < ε / max M 1|F x - F y| = |F y - F x| All goals completed! 🐙 _ M * |x-y| := this hx hy _ (max M 1) * |x-y| := a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mthis: {x y : }, x Set.Icc _fvar.267 _fvar.268 y Set.Icc _fvar.267 _fvar.268 |@_fvar.281 y - @_fvar.281 x| _fvar.360 * |x - y| := fun {x y} hx hy => Or.casesOn (lt_trichotomy x y) (fun h => of_eq_true (Eq.trans (congrArg (fun x_1 => |@_fvar.281 y - @_fvar.281 x| _fvar.360 * x_1) (Eq.trans (abs_of_neg (have this := lt_of_not_ge fun a => Mathlib.Tactic.Linarith.lt_irrefl (Eq.mp (congrArg (fun _a => _a < 0) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf x) (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (x ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf x) (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (x ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul x (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Eq.refl (Int.ofNat 1))))))) Mathlib.Tactic.Ring.neg_zero)) (Mathlib.Tactic.Ring.add_pf_zero_add (x ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + (y ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero x (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))) (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h) (Mathlib.Tactic.Linarith.sub_nonpos_of_le a))); this)) (neg_sub x y))) (eq_true (@_fvar.784 x y h hx hy)))) fun h => Or.casesOn h (fun h => Eq.ndrec (motive := fun {y} => y Set.Icc _fvar.267 _fvar.268 |@_fvar.281 y - @_fvar.281 x| _fvar.360 * |x - y|) (fun hy => of_eq_true (Eq.trans (congr (congrArg LE.le (Eq.trans (congrArg abs (sub_self (@_fvar.281 x))) abs_zero)) (Eq.trans (congrArg (HMul.hMul _fvar.360) (Eq.trans (congrArg abs (sub_self x)) abs_zero)) (mul_zero _fvar.360))) (le_refl._simp_1 0))) h hy) fun h => of_eq_true (Eq.trans (congr (congrArg LE.le (abs_sub_comm (@_fvar.281 y) (@_fvar.281 x))) (congrArg (HMul.hMul _fvar.360) (abs_of_pos (have this := lt_of_not_ge fun a => Mathlib.Tactic.Linarith.lt_irrefl (Eq.mp (congrArg (fun _a => _a < 0) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.atom_pf x) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul x (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (y ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (x ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf x) (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_gt (y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) (Mathlib.Tactic.Ring.add_pf_add_zero (x ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)) (Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + (x ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero x (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))) (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h) (Mathlib.Tactic.Linarith.sub_nonpos_of_le a))); this)))) (eq_true (@_fvar.784 y x h hy hx)))ε::0 < εx:hx:x Set.Icc a by:hy:y Set.Icc a bhxy:|x - y| < ε / max M 1M * |x - y| max M 1 * |x - y| a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mthis: {x y : }, x Set.Icc _fvar.267 _fvar.268 y Set.Icc _fvar.267 _fvar.268 |@_fvar.281 y - @_fvar.281 x| _fvar.360 * |x - y| := fun {x y} hx hy => Or.casesOn (lt_trichotomy x y) (fun h => of_eq_true (Eq.trans (congrArg (fun x_1 => |@_fvar.281 y - @_fvar.281 x| _fvar.360 * x_1) (Eq.trans (abs_of_neg (have this := lt_of_not_ge fun a => Mathlib.Tactic.Linarith.lt_irrefl (Eq.mp (congrArg (fun _a => _a < 0) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf x) (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (x ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf x) (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (x ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul x (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Eq.refl (Int.ofNat 1))))))) Mathlib.Tactic.Ring.neg_zero)) (Mathlib.Tactic.Ring.add_pf_zero_add (x ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + (y ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero x (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))) (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h) (Mathlib.Tactic.Linarith.sub_nonpos_of_le a))); this)) (neg_sub x y))) (eq_true (@_fvar.784 x y h hx hy)))) fun h => Or.casesOn h (fun h => Eq.ndrec (motive := fun {y} => y Set.Icc _fvar.267 _fvar.268 |@_fvar.281 y - @_fvar.281 x| _fvar.360 * |x - y|) (fun hy => of_eq_true (Eq.trans (congr (congrArg LE.le (Eq.trans (congrArg abs (sub_self (@_fvar.281 x))) abs_zero)) (Eq.trans (congrArg (HMul.hMul _fvar.360) (Eq.trans (congrArg abs (sub_self x)) abs_zero)) (mul_zero _fvar.360))) (le_refl._simp_1 0))) h hy) fun h => of_eq_true (Eq.trans (congr (congrArg LE.le (abs_sub_comm (@_fvar.281 y) (@_fvar.281 x))) (congrArg (HMul.hMul _fvar.360) (abs_of_pos (have this := lt_of_not_ge fun a => Mathlib.Tactic.Linarith.lt_irrefl (Eq.mp (congrArg (fun _a => _a < 0) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.atom_pf x) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul x (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (y ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (x ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf x) (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_gt (y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) (Mathlib.Tactic.Ring.add_pf_add_zero (x ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)) (Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + (x ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero x (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))) (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h) (Mathlib.Tactic.Linarith.sub_nonpos_of_le a))); this)))) (eq_true (@_fvar.784 y x h hy hx)))ε::0 < εx:hx:x Set.Icc a by:hy:y Set.Icc a bhxy:|x - y| < ε / max M 1M max M 1; All goals completed! 🐙 _ < (max M 1) * (ε / (max M 1)) := a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mthis: {x y : }, x Set.Icc _fvar.267 _fvar.268 y Set.Icc _fvar.267 _fvar.268 |@_fvar.281 y - @_fvar.281 x| _fvar.360 * |x - y| := fun {x y} hx hy => Or.casesOn (lt_trichotomy x y) (fun h => of_eq_true (Eq.trans (congrArg (fun x_1 => |@_fvar.281 y - @_fvar.281 x| _fvar.360 * x_1) (Eq.trans (abs_of_neg (have this := lt_of_not_ge fun a => Mathlib.Tactic.Linarith.lt_irrefl (Eq.mp (congrArg (fun _a => _a < 0) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf x) (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (x ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf x) (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (x ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul x (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Eq.refl (Int.ofNat 1))))))) Mathlib.Tactic.Ring.neg_zero)) (Mathlib.Tactic.Ring.add_pf_zero_add (x ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + (y ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero x (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))) (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h) (Mathlib.Tactic.Linarith.sub_nonpos_of_le a))); this)) (neg_sub x y))) (eq_true (@_fvar.784 x y h hx hy)))) fun h => Or.casesOn h (fun h => Eq.ndrec (motive := fun {y} => y Set.Icc _fvar.267 _fvar.268 |@_fvar.281 y - @_fvar.281 x| _fvar.360 * |x - y|) (fun hy => of_eq_true (Eq.trans (congr (congrArg LE.le (Eq.trans (congrArg abs (sub_self (@_fvar.281 x))) abs_zero)) (Eq.trans (congrArg (HMul.hMul _fvar.360) (Eq.trans (congrArg abs (sub_self x)) abs_zero)) (mul_zero _fvar.360))) (le_refl._simp_1 0))) h hy) fun h => of_eq_true (Eq.trans (congr (congrArg LE.le (abs_sub_comm (@_fvar.281 y) (@_fvar.281 x))) (congrArg (HMul.hMul _fvar.360) (abs_of_pos (have this := lt_of_not_ge fun a => Mathlib.Tactic.Linarith.lt_irrefl (Eq.mp (congrArg (fun _a => _a < 0) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.atom_pf x) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul x (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (y ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (x ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf x) (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_gt (y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) (Mathlib.Tactic.Ring.add_pf_add_zero (x ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)) (Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + (x ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero x (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))) (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h) (Mathlib.Tactic.Linarith.sub_nonpos_of_le a))); this)))) (eq_true (@_fvar.784 y x h hy hx)))ε::0 < εx:hx:x Set.Icc a by:hy:y Set.Icc a bhxy:|x - y| < ε / max M 1max M 1 * |x - y| < max M 1 * (ε / max M 1) All goals completed! 🐙 _ = _ := a:b:f: hf:IntegrableOn f (Icc a b)F: := fun x => Chapter11.integ _fvar.269 (Chapter11.BoundedInterval.Icc _fvar.267 x)M:hM: x (Icc a b), |f x| Mthis: {x y : }, x Set.Icc _fvar.267 _fvar.268 y Set.Icc _fvar.267 _fvar.268 |@_fvar.281 y - @_fvar.281 x| _fvar.360 * |x - y| := fun {x y} hx hy => Or.casesOn (lt_trichotomy x y) (fun h => of_eq_true (Eq.trans (congrArg (fun x_1 => |@_fvar.281 y - @_fvar.281 x| _fvar.360 * x_1) (Eq.trans (abs_of_neg (have this := lt_of_not_ge fun a => Mathlib.Tactic.Linarith.lt_irrefl (Eq.mp (congrArg (fun _a => _a < 0) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf x) (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (x ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf x) (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (x ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul x (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Eq.refl (Int.ofNat 1))))))) Mathlib.Tactic.Ring.neg_zero)) (Mathlib.Tactic.Ring.add_pf_zero_add (x ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + (y ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero x (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))) (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h) (Mathlib.Tactic.Linarith.sub_nonpos_of_le a))); this)) (neg_sub x y))) (eq_true (@_fvar.784 x y h hx hy)))) fun h => Or.casesOn h (fun h => Eq.ndrec (motive := fun {y} => y Set.Icc _fvar.267 _fvar.268 |@_fvar.281 y - @_fvar.281 x| _fvar.360 * |x - y|) (fun hy => of_eq_true (Eq.trans (congr (congrArg LE.le (Eq.trans (congrArg abs (sub_self (@_fvar.281 x))) abs_zero)) (Eq.trans (congrArg (HMul.hMul _fvar.360) (Eq.trans (congrArg abs (sub_self x)) abs_zero)) (mul_zero _fvar.360))) (le_refl._simp_1 0))) h hy) fun h => of_eq_true (Eq.trans (congr (congrArg LE.le (abs_sub_comm (@_fvar.281 y) (@_fvar.281 x))) (congrArg (HMul.hMul _fvar.360) (abs_of_pos (have this := lt_of_not_ge fun a => Mathlib.Tactic.Linarith.lt_irrefl (Eq.mp (congrArg (fun _a => _a < 0) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.atom_pf x) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul x (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (y ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (x ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf x) (Mathlib.Tactic.Ring.atom_pf y) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul y (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_gt (y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) (Mathlib.Tactic.Ring.add_pf_add_zero (x ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)) (Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero (Mathlib.Tactic.Ring.add_pf_add_zero (y ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + (x ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero y (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero x (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_zero_add 0)))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))) (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h) (Mathlib.Tactic.Linarith.sub_nonpos_of_le a))); this)))) (eq_true (@_fvar.784 y x h hy hx)))ε::0 < εx:hx:x Set.Icc a by:hy:y Set.Icc a bhxy:|x - y| < ε / max M 1max M 1 * (ε / max M 1) = ε All goals completed! 🐙 All goals completed! 🐙
theorem declaration uses 'sorry'deriv_of_integ {a b:} (hab: a < b) {f: } (hf: IntegrableOn f (Icc a b)) {x₀:} (hx₀ : x₀ Set.Icc a b) (hcts: ContinuousWithinAt f (Icc a b) x₀) : HasDerivWithinAt (fun x => integ f (Icc a x)) (f x₀) (.Icc a b) x₀ := a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:hx₀:x₀ Set.Icc a bhcts:ContinuousWithinAt f (↑(Icc a b)) x₀HasDerivWithinAt (fun x => integ f (Icc a x)) (f x₀) (Set.Icc a b) x₀ -- This proof is written to follow the structure of the original text. a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:hx₀:x₀ Set.Icc a bhcts:ContinuousWithinAt f (↑(Icc a b)) x₀ ε > 0, δ > 0, x Set.Icc a b, |x - x₀| < δ |integ f (Icc a x) - integ f (Icc a x₀) - f x₀ * (x - x₀)| ε * |x - x₀| a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:hx₀:x₀ Set.Icc a bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b |x - x₀| < δ |f x - f x₀| < ε ε > 0, δ > 0, x Set.Icc a b, |x - x₀| < δ |integ f (Icc a x) - integ f (Icc a x₀) - f x₀ * (x - x₀)| ε * |x - x₀| a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:hx₀:x₀ Set.Icc a bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ::δ > 0hconv: (x : ), a x x b |x - x₀| < δ |f x - f x₀| < ε x Set.Icc a b, |x - x₀| < δ |integ f (Icc a x) - integ f (Icc a x₀) - f x₀ * (x - x₀)| ε * |x - x₀|; a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:hx₀:x₀ Set.Icc a bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ::δ > 0hconv: (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εy:hy:y Set.Icc a bhyδ:|y - x₀| < δ|integ f (Icc a y) - integ f (Icc a x₀) - f x₀ * (y - x₀)| ε * |y - x₀| a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:hx₀:x₀ Set.Icc a bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ::δ > 0hconv: (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εy:hy:y Set.Icc a bhyδ:|y - x₀| < δhx₀y:x₀ < y|integ f (Icc a y) - integ f (Icc a x₀) - f x₀ * (y - x₀)| ε * |y - x₀|a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:hx₀:x₀ Set.Icc a bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ::δ > 0hconv: (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εhy:x₀ Set.Icc a bhyδ:|x₀ - x₀| < δ|integ f (Icc a x₀) - integ f (Icc a x₀) - f x₀ * (x₀ - x₀)| ε * |x₀ - x₀|a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:hx₀:x₀ Set.Icc a bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ::δ > 0hconv: (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εy:hy:y Set.Icc a bhyδ:|y - x₀| < δhx₀y:y < x₀|integ f (Icc a y) - integ f (Icc a x₀) - f x₀ * (y - x₀)| ε * |y - x₀| a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:hx₀:x₀ Set.Icc a bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ::δ > 0hconv: (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εy:hy:y Set.Icc a bhyδ:|y - x₀| < δhx₀y:x₀ < y|integ f (Icc a y) - integ f (Icc a x₀) - f x₀ * (y - x₀)| ε * |y - x₀| a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:hx₀:x₀ Set.Icc a bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ::δ > 0hconv: (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εy:hy:y Set.Icc a bhyδ:|y - x₀| < δhx₀y:x₀ < ythis:?_mvar.180784 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)|integ f (Icc a y) - integ f (Icc a x₀) - f x₀ * (y - x₀)| ε * |y - x₀| a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:hx₀:x₀ Set.Icc a bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ::δ > 0hconv: (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εy:hy:y Set.Icc a bhyδ:|y - x₀| < δhx₀y:x₀ < ythis:?_mvar.180784 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)integ f (Ioc x₀ y) ε * (y - x₀) + f x₀ * (y - x₀) f x₀ * (y - x₀) ε * (y - x₀) + integ f (Ioc x₀ y) a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:hx₀:x₀ Set.Icc a bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ::δ > 0hconv: (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εy:hy:y Set.Icc a bhyδ:|y - x₀| < δhx₀y:x₀ < ythis:?_mvar.180784 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)h1:?_mvar.193198 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)integ f (Ioc x₀ y) ε * (y - x₀) + f x₀ * (y - x₀) f x₀ * (y - x₀) ε * (y - x₀) + integ f (Ioc x₀ y)a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:hx₀:x₀ Set.Icc a bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ::δ > 0hconv: (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εy:hy:y Set.Icc a bhyδ:|y - x₀| < δhx₀y:x₀ < ythis:?_mvar.180784 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)MajorizesOn (fun x => f x₀ + ε) f (Ioc x₀ y) a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:hx₀:x₀ Set.Icc a bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ::δ > 0hconv: (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εy:hy:y Set.Icc a bhyδ:|y - x₀| < δhx₀y:x₀ < ythis:?_mvar.180784 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)h1:?_mvar.193198 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)h2:?_mvar.193278 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)integ f (Ioc x₀ y) ε * (y - x₀) + f x₀ * (y - x₀) f x₀ * (y - x₀) ε * (y - x₀) + integ f (Ioc x₀ y)a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:hx₀:x₀ Set.Icc a bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ::δ > 0hconv: (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εy:hy:y Set.Icc a bhyδ:|y - x₀| < δhx₀y:x₀ < ythis:?_mvar.180784 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)h1:?_mvar.193198 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)MajorizesOn f (fun x => f x₀ - ε) (Ioc x₀ y)a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:hx₀:x₀ Set.Icc a bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ::δ > 0hconv: (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εy:hy:y Set.Icc a bhyδ:|y - x₀| < δhx₀y:x₀ < ythis:?_mvar.180784 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)MajorizesOn (fun x => f x₀ + ε) f (Ioc x₀ y) a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:hx₀:x₀ Set.Icc a bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ::δ > 0hconv: (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εy:hy:y Set.Icc a bhyδ:|y - x₀| < δhx₀y:x₀ < ythis:?_mvar.180784 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)h1:?_mvar.193198 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)h2:?_mvar.193278 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)integ f (Ioc x₀ y) ε * (y - x₀) + f x₀ * (y - x₀) f x₀ * (y - x₀) ε * (y - x₀) + integ f (Ioc x₀ y) a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:hx₀:x₀ Set.Icc a bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ::δ > 0hconv: (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εy:hy:y Set.Icc a bhyδ:|y - x₀| < δhx₀y:x₀ < ythis:?_mvar.180784 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)h1:integ f (Ioc x₀ y) (f x₀ + ε) * ((Ioc x₀ y).b - (Ioc x₀ y).a)h2:(f x₀ - ε) * ((Ioc x₀ y).b - (Ioc x₀ y).a) integ f (Ioc x₀ y)integ f (Ioc x₀ y) ε * (y - x₀) + f x₀ * (y - x₀) f x₀ * (y - x₀) ε * (y - x₀) + integ f (Ioc x₀ y) a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:hx₀:x₀ Set.Icc a bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ::δ > 0hconv: (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εy:hy:y Set.Icc a bhyδ:|y - x₀| < δhx₀y:x₀ < ythis:?_mvar.180784 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)h1:integ f (Ioc x₀ y) (f x₀ + ε) * ((Ioc x₀ y).b - (Ioc x₀ y).a)h2:(f x₀ - ε) * ((Ioc x₀ y).b - (Ioc x₀ y).a) integ f (Ioc x₀ y)integ f (Ioc x₀ y) ε * (y - x₀) + f x₀ * (y - x₀)a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:hx₀:x₀ Set.Icc a bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ::δ > 0hconv: (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εy:hy:y Set.Icc a bhyδ:|y - x₀| < δhx₀y:x₀ < ythis:?_mvar.180784 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)h1:integ f (Ioc x₀ y) (f x₀ + ε) * ((Ioc x₀ y).b - (Ioc x₀ y).a)h2:(f x₀ - ε) * ((Ioc x₀ y).b - (Ioc x₀ y).a) integ f (Ioc x₀ y)f x₀ * (y - x₀) ε * (y - x₀) + integ f (Ioc x₀ y) a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:hx₀:x₀ Set.Icc a bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ::δ > 0hconv: (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εy:hy:y Set.Icc a bhyδ:|y - x₀| < δhx₀y:x₀ < ythis:?_mvar.180784 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)h1:integ f (Ioc x₀ y) (f x₀ + ε) * ((Ioc x₀ y).b - (Ioc x₀ y).a)h2:(f x₀ - ε) * ((Ioc x₀ y).b - (Ioc x₀ y).a) integ f (Ioc x₀ y)integ f (Ioc x₀ y) ε * (y - x₀) + f x₀ * (y - x₀) a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:hx₀:x₀ Set.Icc a bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ::δ > 0hconv: (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εy:hy:y Set.Icc a bhyδ:|y - x₀| < δhx₀y:x₀ < ythis:?_mvar.180784 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)h1:integ f (Ioc x₀ y) (f x₀ + ε) * ((Ioc x₀ y).b - (Ioc x₀ y).a)h2:(f x₀ - ε) * ((Ioc x₀ y).b - (Ioc x₀ y).a) integ f (Ioc x₀ y)ε * (y - x₀) + f x₀ * (y - x₀) = (f x₀ + ε) * ((Ioc x₀ y).b - (Ioc x₀ y).a); All goals completed! 🐙 a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:hx₀:x₀ Set.Icc a bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ::δ > 0hconv: (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εy:hy:y Set.Icc a bhyδ:|y - x₀| < δhx₀y:x₀ < ythis:?_mvar.180784 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)h1:integ f (Ioc x₀ y) (f x₀ + ε) * ((Ioc x₀ y).b - (Ioc x₀ y).a)h2:(f x₀ - ε) * ((Ioc x₀ y).b - (Ioc x₀ y).a) integ f (Ioc x₀ y)f x₀ * (y - x₀) ε * (y - x₀) + integ f (Ioc x₀ y) a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:ε:δ:y:hyδ:|y - x₀| < δhx₀y:x₀ < ythis:Chapter11.IntegrableOn _fvar.162054 (Chapter11.BoundedInterval.Ioc _fvar.162056 _fvar.180693) Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Icc _fvar.162051 _fvar.180693) = Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Icc _fvar.162051 _fvar.162056) + Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Ioc _fvar.162056 _fvar.180693) := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hx₀:0 x₀ - a - 0 0 b - x₀ - 0hcts: (ε : ), 0 < ε δ, 0 < δ (x : ), 0 x - a - 0 0 b - x - 0 |x - x₀| < δ |f x - f x₀| < ε:0 < ε:0 < δhconv: (x : ), 0 x - a - 0 0 b - x - 0 |x - x₀| < δ |f x - f x₀| < εhy:0 y - a - 0 0 b - y - 0h1:0 (f x₀ + ε) * ((Ioc x₀ y).b - (Ioc x₀ y).a) - integ f (Ioc x₀ y) - 0h2:0 integ f (Ioc x₀ y) - (f x₀ - ε) * ((Ioc x₀ y).b - (Ioc x₀ y).a) - 00 ε * (y - x₀) + integ f (Ioc x₀ y) - f x₀ * (y - x₀) - 0; a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:ε:δ:y:hyδ:|y - x₀| < δhx₀y:x₀ < ythis:Chapter11.IntegrableOn _fvar.162054 (Chapter11.BoundedInterval.Ioc _fvar.162056 _fvar.180693) Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Icc _fvar.162051 _fvar.180693) = Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Icc _fvar.162051 _fvar.162056) + Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Ioc _fvar.162056 _fvar.180693) := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hx₀:0 x₀ - a - 0 0 b - x₀ - 0hcts: (ε : ), 0 < ε δ, 0 < δ (x : ), 0 x - a - 0 0 b - x - 0 |x - x₀| < δ |f x - f x₀| < ε:0 < ε:0 < δhconv: (x : ), 0 x - a - 0 0 b - x - 0 |x - x₀| < δ |f x - f x₀| < εhy:0 y - a - 0 0 b - y - 0h1:0 (f x₀ + ε) * ((Ioc x₀ y).b - (Ioc x₀ y).a) - integ f (Ioc x₀ y) - 0h2:0 integ f (Ioc x₀ y) - (f x₀ - ε) * ((Ioc x₀ y).b - (Ioc x₀ y).a) - 0ε * (y - x₀) + integ f (Ioc x₀ y) - f x₀ * (y - x₀) - 0 = integ f (Ioc x₀ y) - (f x₀ - ε) * ((Ioc x₀ y).b - (Ioc x₀ y).a) - 0; All goals completed! 🐙 all_goals a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:hx₀:x₀ Set.Icc a bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ::δ > 0hconv: (x : ), a x x b |x - x₀| < δ |f x - f x₀| < εy:hy:y Set.Icc a bhyδ:|y - x₀| < δhx₀y:x₀ < ythis:?_mvar.180784 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)z:hz:z (Ioc x₀ y)f z (fun x => f x₀ + ε) z; a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:ε:δ:y:hx₀y:x₀ < ythis:Chapter11.IntegrableOn _fvar.162054 (Chapter11.BoundedInterval.Ioc _fvar.162056 _fvar.180693) Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Icc _fvar.162051 _fvar.180693) = Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Icc _fvar.162051 _fvar.162056) + Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Ioc _fvar.162056 _fvar.180693) := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)z:hx₀:a x₀ x₀ bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b x₀ < δ + x x - x₀ < δ f x₀ < ε + f x f x - f x₀ < ε:0 < ε:0 < δhconv: (x : ), a x x b x₀ < δ + x x - x₀ < δ f x₀ < ε + f x f x - f x₀ < εhy:a y y bhyδ:x₀ < δ + y y - x₀ < δhz:x₀ < z z yf z f x₀ + ε; a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:ε:δ:y:hx₀y:x₀ < ythis:Chapter11.IntegrableOn _fvar.162054 (Chapter11.BoundedInterval.Ioc _fvar.162056 _fvar.180693) Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Icc _fvar.162051 _fvar.180693) = Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Icc _fvar.162051 _fvar.162056) + Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Ioc _fvar.162056 _fvar.180693) := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)z:hx₀:a x₀ x₀ bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b x₀ < δ + x x - x₀ < δ f x₀ < ε + f x f x - f x₀ < ε:0 < ε:0 < δhconv: (x : ), a x x b x₀ < δ + x x - x₀ < δ f x₀ < ε + f x f x - f x₀ < εhy:a y y bhyδ:x₀ < δ + y y - x₀ < δhz:x₀ < z z ya za:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:ε:δ:y:hx₀y:x₀ < ythis:Chapter11.IntegrableOn _fvar.162054 (Chapter11.BoundedInterval.Ioc _fvar.162056 _fvar.180693) Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Icc _fvar.162051 _fvar.180693) = Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Icc _fvar.162051 _fvar.162056) + Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Ioc _fvar.162056 _fvar.180693) := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)z:hx₀:a x₀ x₀ bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b x₀ < δ + x x - x₀ < δ f x₀ < ε + f x f x - f x₀ < ε:0 < ε:0 < δhconv: (x : ), a x x b x₀ < δ + x x - x₀ < δ f x₀ < ε + f x f x - f x₀ < εhy:a y y bhyδ:x₀ < δ + y y - x₀ < δhz:x₀ < z z yz ba:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:ε:δ:y:hx₀y:x₀ < ythis:Chapter11.IntegrableOn _fvar.162054 (Chapter11.BoundedInterval.Ioc _fvar.162056 _fvar.180693) Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Icc _fvar.162051 _fvar.180693) = Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Icc _fvar.162051 _fvar.162056) + Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Ioc _fvar.162056 _fvar.180693) := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)z:hx₀:a x₀ x₀ bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b x₀ < δ + x x - x₀ < δ f x₀ < ε + f x f x - f x₀ < ε:0 < ε:0 < δhconv: (x : ), a x x b x₀ < δ + x x - x₀ < δ f x₀ < ε + f x f x - f x₀ < εhy:a y y bhyδ:x₀ < δ + y y - x₀ < δhz:x₀ < z z yx₀ < δ + za:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:ε:δ:y:hx₀y:x₀ < ythis:Chapter11.IntegrableOn _fvar.162054 (Chapter11.BoundedInterval.Ioc _fvar.162056 _fvar.180693) Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Icc _fvar.162051 _fvar.180693) = Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Icc _fvar.162051 _fvar.162056) + Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Ioc _fvar.162056 _fvar.180693) := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)z:hx₀:a x₀ x₀ bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b x₀ < δ + x x - x₀ < δ f x₀ < ε + f x f x - f x₀ < ε:0 < ε:0 < δhconv: (x : ), a x x b x₀ < δ + x x - x₀ < δ f x₀ < ε + f x f x - f x₀ < εhy:a y y bhyδ:x₀ < δ + y y - x₀ < δhz:x₀ < z z yz - x₀ < δa:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:ε:δ:y:hx₀y:x₀ < ythis:Chapter11.IntegrableOn _fvar.162054 (Chapter11.BoundedInterval.Ioc _fvar.162056 _fvar.180693) Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Icc _fvar.162051 _fvar.180693) = Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Icc _fvar.162051 _fvar.162056) + Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Ioc _fvar.162056 _fvar.180693) := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)z:hx₀:a x₀ x₀ bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b x₀ < δ + x x - x₀ < δ f x₀ < ε + f x f x - f x₀ < ε:0 < ε:0 < δhy:a y y bhyδ:x₀ < δ + y y - x₀ < δhz:x₀ < z z yhconv:f x₀ < ε + f z f z - f x₀ < εf z f x₀ + ε a:b:hab:a < bf: hf:IntegrableOn f (Icc a b)x₀:ε:δ:y:hx₀y:x₀ < ythis:Chapter11.IntegrableOn _fvar.162054 (Chapter11.BoundedInterval.Ioc _fvar.162056 _fvar.180693) Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Icc _fvar.162051 _fvar.180693) = Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Icc _fvar.162051 _fvar.162056) + Chapter11.integ _fvar.162054 (Chapter11.BoundedInterval.Ioc _fvar.162056 _fvar.180693) := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)z:hx₀:a x₀ x₀ bhcts: (ε : ), 0 < ε δ, 0 < δ (x : ), a x x b x₀ < δ + x x - x₀ < δ f x₀ < ε + f x f x - f x₀ < ε:0 < ε:0 < δhconv: (x : ), a x x b x₀ < δ + x x - x₀ < δ f x₀ < ε + f x f x - f x₀ < εhy:a y y bhyδ:x₀ < δ + y y - x₀ < δhz:x₀ < z z ya za:b:hab:a < b