Imports
import Mathlib.Tactic import Analysis.Section_9_8 import Analysis.Section_11_5

Analysis I, Section 11.6: Riemann integrability of monotone functions

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:

  • Riemann integrability of monotone functions.

namespace Chapter11open Chapter9 BoundedInterval

Proposition 11.6.1

set_option maxHeartbeats 300000 intheorem integ_of_monotone {a b:} {f: } (hf: MonotoneOn f (Icc a b)) : IntegrableOn f (Icc a b) := a:b:f: hf:MonotoneOn f (Icc a b)IntegrableOn f (Icc a b) -- This proof is adapted from the structure of the original text. a:b:f: hf:MonotoneOn f (Icc a b)hab:0 < b - aIntegrableOn f (Icc a b)a:b:f: hf:MonotoneOn f (Icc a b)hab:¬0 < b - aIntegrableOn f (Icc a b) a:b:f: hf:MonotoneOn f (Icc a b)hab:¬0 < b - aIntegrableOn f (Icc a b)a:b:f: hf:MonotoneOn f (Icc a b)hab:0 < b - aIntegrableOn f (Icc a b) a:b:f: hf:MonotoneOn f (Icc a b)hab:¬0 < b - aIntegrableOn f (Icc a b) a:b:f: hf:MonotoneOn f (Icc a b)hab:¬0 < b - a(Icc a b).length = 0; a:b:f: hf:MonotoneOn f (Icc a b)hab:¬0 < b - aSubsingleton (Icc a b); All goals completed! 🐙 a:b:f: hf:MonotoneOn f (Icc a b)hab:0 < b - ahbound:BddOn f (Set.Icc a b)IntegrableOn f (Icc a b) a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f IIntegrableOn f I have hab' : a b := a:b:f: hf:MonotoneOn f (Icc a b)IntegrableOn f (Icc a b) All goals completed! 🐙 have (ε:) (: 0 < ε) : upper_integral f I - lower_integral f I ((f b - f a) * (b-a)) *ε := a:b:f: hf:MonotoneOn f (Icc a b)IntegrableOn f (Icc a b) a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < Nupper_integral f I - lower_integral f I (f b - f a) * (b - a) * ε have hNpos : 0 < N := a:b:f: hf:MonotoneOn f (Icc a b)IntegrableOn f (Icc a b) a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < N0 < N; linarith [show 0 < 1/ε a:b:f: hf:MonotoneOn f (Icc a b)IntegrableOn f (Icc a b) All goals completed! 🐙] a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nupper_integral f I - lower_integral f I (f b - f a) * (b - a) * ε have hδpos : 0 < δ := a:b:f: hf:MonotoneOn f (Icc a b)IntegrableOn f (Icc a b) All goals completed! 🐙 have hbeq : b = a + δ*N := a:b:f: hf:MonotoneOn f (Icc a b)IntegrableOn f (Icc a b) a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δb = a + (b - a) / N * N; a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δb = a + (b - a); All goals completed! 🐙 set e : BoundedInterval := { toFun j := Ico (a + δ*j) (a + δ*(j+1)) inj' j k hjk := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Nj:k:hjk:(fun j Ico (a + δ * j) (a + δ * (j + 1))) j = (fun j Ico (a + δ * j) (a + δ * (j + 1))) kj = k a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Nj:k:hjk:j = k δ = 0j = k; a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Nj:k:h✝:j = kj = ka:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Nj:k:h✝:δ = 0j = k a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Nj:k:h✝:j = kj = ka:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Nj:k:h✝:δ = 0j = k All goals completed! 🐙 } set P : Partition I := { intervals := insert (Icc b b) (.map e (.range N)) exists_unique := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := } x I, ∃! J, J insert (Icc b b) (Finset.map e (Finset.range N)) x J intro x a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hx:x I∃! J, J insert (Icc b b) (Finset.map e (Finset.range N)) x J; a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hx:x I∃! J, (J = Icc b b a < N, e a = J) x J; a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hx:x Ihb:x = b∃! J, (J = Icc b b a < N, e a = J) x Ja:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hx:x Ihb:¬x = b∃! J, (J = Icc b b a < N, e a = J) x J a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hx:x Ihb:x = b∃! J, (J = Icc b b a < N, e a = J) x J a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hx:x Ihb:x = b(Icc b b = Icc b b a < N, e a = Icc b b) x Icc b ba:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hx:x Ihb:x = b (y : BoundedInterval), (y = Icc b b a < N, e a = y) x y y = Icc b b a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hx:x Ihb:x = b(Icc b b = Icc b b a < N, e a = Icc b b) x Icc b b All goals completed! 🐙 a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hx:x Ihb:x = bhJb:x Icc b bIcc b b = Icc b ba:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hx:x Ihb:x = bj:hA:j < NhJb:x e je j = Icc b b; a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hx:x Ihb:x = bj:hA:j < NhJb:x e je j = Icc b b a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hx:x Ihb:x = bj:hA:j < NhJb:δ * j δ * N δ * N < δ * (j + 1)e j = Icc b b a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hx:x Ihb:x = bj:hA:j < NhJb:δ * N < δ * (j + 1)e j = Icc b b a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hx:x Ihb:x = bj:hA:j < NhJb:N < j + 1e j = Icc b b a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hx:x Ihb:x = bj:hA:j < NhJb:N < j + 1e j = Icc b b; All goals completed! 🐙 a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x b∃! J, (J = Icc b b a < N, e a = J) x J a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊∃! J, (J = Icc b b a < N, e a = J) x J have hxa : 0 x-a := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := } x I, ∃! J, J insert (Icc b b) (Finset.map e (Finset.range N)) x J All goals completed! 🐙 have hxaδ : 0 (x-a)/δ := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := } x I, ∃! J, J insert (Icc b b) (Finset.map e (Finset.range N)) x J All goals completed! 🐙 a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < b∃! J, (J = Icc b b a < N, e a = J) x J have hxj : x e j := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := } x I, ∃! J, J insert (Icc b b) (Finset.map e (Finset.range N)) x J a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < ba + δ * (x - a) / δ⌋₊ x x < a + δ * ((x - a) / δ⌋₊ + 1); a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < ba + δ * (x - a) / δ⌋₊ xa:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < bx < a + δ * ((x - a) / δ⌋₊ + 1) a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < ba + δ * (x - a) / δ⌋₊ x calc _ a + δ * ((x-a)/δ) := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < ba + δ * (x - a) / δ⌋₊ a + δ * ((x - a) / δ) a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < b(x - a) / δ⌋₊ (x - a) / δ; All goals completed! 🐙 _ = x := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < ba + δ * ((x - a) / δ) = x All goals completed! 🐙 calc _ = a + δ * ((x-a)/δ) := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < bx = a + δ * ((x - a) / δ) a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < bx = a + (x - a); All goals completed! 🐙 _ < _ := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < ba + δ * ((x - a) / δ) < a + δ * ((x - a) / δ⌋₊ + 1) a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < b(x - a) / δ < (x - a) / δ⌋₊ + 1; All goals completed! 🐙 a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < bhxj:x e j(e j = Icc b b a < N, e a = e j) x e ja:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < bhxj:x e j (y : BoundedInterval), (y = Icc b b a < N, e a = y) x y y = e j a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < bhxj:x e j(e j = Icc b b a < N, e a = e j) x e j a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < bhxj:x e je j = Icc b b a < N, e a = e j; a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < bhxj:x e j a < N, e a = e j; a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < bhxj:x e jj < N e j = e j; a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < bhxj:x e jx - a < δ * N; All goals completed! 🐙 a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < bhxj:x e jhxJ:x Icc b bIcc b b = e ja:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < bhxj:x e jk:hk:k < NhxJ:x e ke k = e j a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < bhxj:x e jhxJ:x Icc b bIcc b b = e j a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < bhxj:x e jhxJ:x = bIcc b b = e j; All goals completed! 🐙 a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < bk:hk:k < NhxJ:a + δ * k x x < a + δ * (k + 1)hxj:a + δ * j x x < a + δ * (j + 1)e k = e j a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < bk:hk:k < NhxJ:a + δ * k x x < a + δ * (k + 1)hxj:a + δ * j x x < a + δ * (j + 1)hjk:j < ke k = e ja:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < bhxj:a + δ * j x x < a + δ * (j + 1)hk:j < NhxJ:a + δ * j x x < a + δ * (j + 1)e j = e ja:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < bk:hk:k < NhxJ:a + δ * k x x < a + δ * (k + 1)hxj:a + δ * j x x < a + δ * (j + 1)hjk:k < je k = e j a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < bk:hk:k < NhxJ:a + δ * k x x < a + δ * (k + 1)hxj:a + δ * j x x < a + δ * (j + 1)hjk:j < ke k = e j replace hjk : δ*((j:)+1) δ*(k:) := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := } x I, ∃! J, J insert (Icc b b) (Finset.map e (Finset.range N)) x J a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < bk:hk:k < NhxJ:a + δ * k x x < a + δ * (k + 1)hxj:a + δ * j x x < a + δ * (j + 1)hjk:j < kj + 1 k; All goals completed! 🐙 All goals completed! 🐙 a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < bhxj:a + δ * j x x < a + δ * (j + 1)hk:j < NhxJ:a + δ * j x x < a + δ * (j + 1)e j = e j All goals completed! 🐙 replace hjk : δ*((k:)+1) δ*(j:) := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := } x I, ∃! J, J insert (Icc b b) (Finset.map e (Finset.range N)) x J a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }x:hb:¬x = bhx:a x x bj: := (x - a) / δ⌋₊hxa:0 x - ahxaδ:0 (x - a) / δhxb:x < bk:hk:k < NhxJ:a + δ * k x x < a + δ * (k + 1)hxj:a + δ * j x x < a + δ * (j + 1)hjk:k < jk + 1 j; All goals completed! 🐙 All goals completed! 🐙 contains J hJ := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }J:BoundedIntervalhJ:J insert (Icc b b) (Finset.map e (Finset.range N))J I a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }J:BoundedIntervalhJ:J = Icc b b a < N, e a = JJ I; a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }Icc b b Ia:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }j:hj:j < Ne j I a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }Icc b b Ia:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }j:hj:j < Ne j I a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }j:hj:j < NSet.Ico (a + δ * j) (a + δ * (j + 1)) Set.Icc a b a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }a b All goals completed! 🐙 a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }j:hj:j < Na a + δ * ja:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }j:hj:j < Na + δ * (j + 1) b a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }j:hj:j < Na a + δ * j a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }j:hj:j < N0 δ * j; All goals completed! 🐙 a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }j:hj:j < Nδ * (j + 1) δ * N; a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }j:hj:j < Nj + 1 N; All goals completed! 🐙 } have hup := calc upper_integral f I J P.intervals, (sSup (f '' (J:Set ))) * |J|ₗ := upper_integ_le_upper_sum hbound P _ = j .range N, (sSup (f '' (Ico (a + δ*j) (a + δ*(j+1))))) * |Ico (a + δ*j) (a + δ*(j+1))|ₗ := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := } J P.intervals, sSup (f '' J) * J.length = j Finset.range N, sSup (f '' (Ico (a + δ * j) (a + δ * (j + 1)))) * (Ico (a + δ * j) (a + δ * (j + 1))).length a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := } x Finset.range N, sSup (f '' (e x)) * (e x).length = x Finset.range N, sSup (f '' Set.Ico (a + δ * x) (a + δ * (x + 1))) * (Ico (a + δ * x) (a + δ * (x + 1))).length; All goals completed! 🐙 _ j .range N, f (a + δ*(j+1)) * δ := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := } j Finset.range N, sSup (f '' (Ico (a + δ * j) (a + δ * (j + 1)))) * (Ico (a + δ * j) (a + δ * (j + 1))).length j Finset.range N, f (a + δ * (j + 1)) * δ a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := } i Finset.range N, sSup (f '' (Ico (a + δ * i) (a + δ * (i + 1)))) * (Ico (a + δ * i) (a + δ * (i + 1))).length f (a + δ * (i + 1)) * δ; intro j a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }j:hj:j Finset.range NsSup (f '' (Ico (a + δ * j) (a + δ * (j + 1)))) * (Ico (a + δ * j) (a + δ * (j + 1))).length f (a + δ * (j + 1)) * δ a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }j:hj:j Finset.range N(Ico (a + δ * j) (a + δ * (j + 1))).length = δa:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }j:hj:j Finset.range NsSup (f '' (Ico (a + δ * j) (a + δ * (j + 1)))) f (a + δ * (j + 1)) a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }j:hj:j Finset.range N(Ico (a + δ * j) (a + δ * (j + 1))).length = δ a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }j:hj:j Finset.range Nmax (δ * (j + 1) - δ * j) 0 = δ; a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }j:hj:j Finset.range Nmax δ 0 = δ; All goals completed! 🐙 a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }j:hj:j Finset.range N(f '' (Ico (a + δ * j) (a + δ * (j + 1)))).Nonemptya:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }j:hj:j Finset.range N b f '' (Ico (a + δ * j) (a + δ * (j + 1))), b f (a + δ * (j + 1)) a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }j:hj:j Finset.range N(f '' (Ico (a + δ * j) (a + δ * (j + 1)))).Nonempty a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }j:hj:j Finset.range Nδ * j < δ * (j + 1); All goals completed! 🐙 intro y a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }j:hj:j Finset.range Ny:hy:y f '' (Ico (a + δ * j) (a + δ * (j + 1)))y f (a + δ * (j + 1)); a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }j:hj:j Finset.range Ny:hy: x, (a + δ * j x x < a + δ * (j + 1)) f x = yy f (a + δ * (j + 1)); a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }j:hj:j Finset.range Nx:hx1:a + δ * j xhx2:x < a + δ * (j + 1)f x f (a + δ * (j + 1)) have : a + δ*(j+1) b := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := } j Finset.range N, sSup (f '' (Ico (a + δ * j) (a + δ * (j + 1)))) * (Ico (a + δ * j) (a + δ * (j + 1))).length j Finset.range N, f (a + δ * (j + 1)) * δ a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }j:hj:j Finset.range Nx:hx1:a + δ * j xhx2:x < a + δ * (j + 1)δ * (j + 1) δ * N; a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }j:hj:j Finset.range Nx:hx1:a + δ * j xhx2:x < a + δ * (j + 1)j + 1 N; a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }j:hj:j Finset.range Nx:hx1:a + δ * j xhx2:x < a + δ * (j + 1)j + 1 N; All goals completed! 🐙 have hδj : 0 δ*j := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := } j Finset.range N, sSup (f '' (Ico (a + δ * j) (a + δ * (j + 1)))) * (Ico (a + δ * j) (a + δ * (j + 1))).length j Finset.range N, f (a + δ * (j + 1)) * δ All goals completed! 🐙 have hδj1 : 0 δ*(j+1) := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := } j Finset.range N, sSup (f '' (Ico (a + δ * j) (a + δ * (j + 1)))) * (Ico (a + δ * j) (a + δ * (j + 1))).length j Finset.range N, f (a + δ * (j + 1)) * δ All goals completed! 🐙 apply hf _ _ (a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }j:hj:j Finset.range Nx:hx1:a + δ * j xhx2:x < a + δ * (j + 1)this:a + δ * (j + 1) bhδj:0 δ * jhδj1:0 δ * (j + 1)x a + δ * (j + 1) All goals completed! 🐙) a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }j:hj:j Finset.range Nx:hx1:a + δ * j xhx2:x < a + δ * (j + 1)this:a + δ * (j + 1) bhδj:0 δ * jhδj1:0 δ * (j + 1)x Ia:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }j:hj:j Finset.range Nx:hx1:a + δ * j xhx2:x < a + δ * (j + 1)this:a + δ * (j + 1) bhδj:0 δ * jhδj1:0 δ * (j + 1)a + δ * (j + 1) I All goals completed! 🐙; All goals completed! 🐙 have hdown := calc lower_integral f I J P.intervals, (sInf (f '' (J:Set ))) * |J|ₗ := lower_integ_ge_lower_sum hbound P _ = j .range N, (sInf (f '' (Ico (a + δ*j) (a + δ*(j+1))))) * |Ico (a + δ*j) (a + δ*(j+1))|ₗ := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δ J P.intervals, sInf (f '' J) * J.length = j Finset.range N, sInf (f '' (Ico (a + δ * j) (a + δ * (j + 1)))) * (Ico (a + δ * j) (a + δ * (j + 1))).length a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δ x Finset.range N, sInf (f '' (e x)) * (e x).length = x Finset.range N, sInf (f '' Set.Ico (a + δ * x) (a + δ * (x + 1))) * (Ico (a + δ * x) (a + δ * (x + 1))).length; All goals completed! 🐙 _ j .range N, f (a + δ*j) * δ := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δ j Finset.range N, sInf (f '' (Ico (a + δ * j) (a + δ * (j + 1)))) * (Ico (a + δ * j) (a + δ * (j + 1))).length j Finset.range N, f (a + δ * j) * δ a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δ i Finset.range N, f (a + δ * i) * δ sInf (f '' (Ico (a + δ * i) (a + δ * (i + 1)))) * (Ico (a + δ * i) (a + δ * (i + 1))).length; intro j a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δj:hj:j Finset.range Nf (a + δ * j) * δ sInf (f '' (Ico (a + δ * j) (a + δ * (j + 1)))) * (Ico (a + δ * j) (a + δ * (j + 1))).length a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δj:hj:j Finset.range N(Ico (a + δ * j) (a + δ * (j + 1))).length = δa:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δj:hj:j Finset.range Nf (a + δ * j) sInf (f '' (Ico (a + δ * j) (a + δ * (j + 1)))) a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δj:hj:j Finset.range N(Ico (a + δ * j) (a + δ * (j + 1))).length = δ a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δj:hj:j Finset.range Nmax (δ * (j + 1) - δ * j) 0 = δ; a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δj:hj:j Finset.range Nmax δ 0 = δ; All goals completed! 🐙 a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δj:hj:j Finset.range N(f '' (Ico (a + δ * j) (a + δ * (j + 1)))).Nonemptya:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δj:hj:j Finset.range N b f '' (Ico (a + δ * j) (a + δ * (j + 1))), f (a + δ * j) b a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δj:hj:j Finset.range N(f '' (Ico (a + δ * j) (a + δ * (j + 1)))).Nonempty a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δj:hj:j Finset.range Nδ * j < δ * (j + 1); All goals completed! 🐙 intro y a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δj:hj:j Finset.range Ny:hy:y f '' (Ico (a + δ * j) (a + δ * (j + 1)))f (a + δ * j) y; a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δj:hj:j Finset.range Ny:hy: x, (a + δ * j x x < a + δ * (j + 1)) f x = yf (a + δ * j) y; a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δj:hj:j Finset.range Nx:hx1:a + δ * j xhx2:x < a + δ * (j + 1)f (a + δ * j) f x have hajb': a + δ*(j+1) b := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δ j Finset.range N, sInf (f '' (Ico (a + δ * j) (a + δ * (j + 1)))) * (Ico (a + δ * j) (a + δ * (j + 1))).length j Finset.range N, f (a + δ * j) * δ a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δj:hj:j Finset.range Nx:hx1:a + δ * j xhx2:x < a + δ * (j + 1)δ * (j + 1) δ * N; a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δj:hj:j Finset.range Nx:hx1:a + δ * j xhx2:x < a + δ * (j + 1)j + 1 N; a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δj:hj:j Finset.range Nx:hx1:a + δ * j xhx2:x < a + δ * (j + 1)j + 1 N; All goals completed! 🐙 have hδj : 0 δ*j := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δ j Finset.range N, sInf (f '' (Ico (a + δ * j) (a + δ * (j + 1)))) * (Ico (a + δ * j) (a + δ * (j + 1))).length j Finset.range N, f (a + δ * j) * δ All goals completed! 🐙 have hδj1 : 0 δ*(j+1) := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δ j Finset.range N, sInf (f '' (Ico (a + δ * j) (a + δ * (j + 1)))) * (Ico (a + δ * j) (a + δ * (j + 1))).length j Finset.range N, f (a + δ * j) * δ All goals completed! 🐙 a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δj:hj:j Finset.range Nx:hx1:a + δ * j xhx2:x < a + δ * (j + 1)hajb':a + δ * (j + 1) bhδj:0 δ * jhδj1:0 δ * (j + 1)a + δ * j Ia:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δj:hj:j Finset.range Nx:hx1:a + δ * j xhx2:x < a + δ * (j + 1)hajb':a + δ * (j + 1) bhδj:0 δ * jhδj1:0 δ * (j + 1)x I a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δj:hj:j Finset.range Nx:hx1:a + δ * j xhx2:x < a + δ * (j + 1)hajb':a + δ * (j + 1) bhδj:0 δ * jhδj1:0 δ * (j + 1)a + δ * j Ia:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δj:hj:j Finset.range Nx:hx1:a + δ * j xhx2:x < a + δ * (j + 1)hajb':a + δ * (j + 1) bhδj:0 δ * jhδj1:0 δ * (j + 1)x I a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δj:hj:j Finset.range Nx:hx1:a + δ * j xhx2:x < a + δ * (j + 1)hajb':a + δ * (j + 1) bhδj:0 δ * jhδj1:0 δ * (j + 1)a x x b a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δj:hj:j Finset.range Nx:hx1:a + δ * j xhx2:x < a + δ * (j + 1)hajb':a + δ * (j + 1) bhδj:0 δ * jhδj1:0 δ * (j + 1)a + δ * j ba:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δj:hj:j Finset.range Nx:hx1:a + δ * j xhx2:x < a + δ * (j + 1)hajb':a + δ * (j + 1) bhδj:0 δ * jhδj1:0 δ * (j + 1)a x x b All goals completed! 🐙 calc _ j .range N, f (a + δ*(j+1)) * δ - j .range N, f (a + δ*j) * δ := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δupper_integral f I - lower_integral f I j Finset.range N, f (a + δ * (j + 1)) * δ - j Finset.range N, f (a + δ * j) * δ All goals completed! 🐙 _ = (f b - f a) * δ := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δ j Finset.range N, f (a + δ * (j + 1)) * δ - j Finset.range N, f (a + δ * j) * δ = (f b - f a) * δ a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δ x Finset.range N, (f (a + δ * (x + 1)) * δ - f (a + δ * x) * δ) = (f b - f a) * δ a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δthis: i Finset.range N, (f (a + δ * (i + 1)) * δ - f (a + δ * i) * δ) = f (a + δ * N) * δ - f (a + δ * 0) * δ x Finset.range N, (f (a + δ * (x + 1)) * δ - f (a + δ * x) * δ) = (f b - f a) * δ a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δthis: x Finset.range N, (f (a + δ * (x + 1)) * δ - f (a + δ * x) * δ) = f (a + δ * N) * δ - f (a + δ * 0) * δ x Finset.range N, (f (a + δ * (x + 1)) * δ - f (a + δ * x) * δ) = (f b - f a) * δ a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δthis: x Finset.range N, (f (a + δ * (x + 1)) * δ - f (a + δ * x) * δ) = f (a + δ * N) * δ - f (a + δ * 0) * δ(f b - f a) * δ = f (a + δ * N) * δ - f (a + δ * 0) * δ; a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δthis: x Finset.range N, (f (a + δ * (x + 1)) * δ - f (a + δ * x) * δ) = f (a + δ * N) * δ - f (a + δ * 0) * δ(f (a + δ * N) - f a) * δ = f (a + δ * N) * δ - f a * δ; All goals completed! 🐙 _ _ := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δ(f b - f a) * δ (f b - f a) * (b - a) * ε have : 0 f b - f a := a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δ(f b - f a) * δ (f b - f a) * (b - a) * ε a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δf a f b; a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δa Ia:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δb Ia:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δa b a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δa Ia:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δb Ia:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δa b All goals completed! 🐙 a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δthis:0 f b - f a(f b - f a) * ((b - a) / N) (f b - f a) * ((b - a) * ε); a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δthis:0 f b - f a(b - a) / N (b - a) * ε a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δthis:0 f b - f ab - a (b - a) * (ε * N)a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δthis:0 f b - f a0 < N a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δthis:0 f b - f a(b - a) * 1 (b - a) * (ε * N)a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δthis:0 f b - f a0 < N a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δthis:0 f b - f a1 ε * Na:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δthis:0 f b - f a0 < N; a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δthis:0 f b - f a1 / ε Na:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δthis:0 f b - f a0 < εa:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δthis:0 f b - f a0 < N; a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δthis:0 f b - f a0 < εa:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bε::0 < εN:hN:1 / ε < NhNpos:0 < Nδ: := (b - a) / Nhδpos:0 < δhbeq:b = a + δ * Ne: BoundedInterval := { toFun := fun j Ico (a + δ * j) (a + δ * (j + 1)), inj' := }P:Partition I := { intervals := insert (Icc b b) (Finset.map e (Finset.range N)), exists_unique := , contains := }hup:upper_integral f I j Finset.range N, f (a + δ * (j + 1)) * δhdown:lower_integral f I j Finset.range N, f (a + δ * j) * δthis:0 f b - f a0 < N all_goals All goals completed! 🐙 a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bthis: (ε : ), 0 < ε upper_integral f I - lower_integral f I (f b - f a) * (b - a) * εlower_integral f I = upper_integral f I a:b:f: hab:0 < b - ahbound:BddOn f (Set.Icc a b)I:BoundedInterval := Icc a bhf:MonotoneOn f Ihab':a bthis: (ε : ), 0 < ε upper_integral f I - lower_integral f I (f b - f a) * (b - a) * εlow_le_up:lower_integral f I upper_integral f Ilower_integral f I = upper_integral f I All goals completed! 🐙

Proposition 11.6.1

theorem integ_of_antitone {a b:} {f: } (hf: AntitoneOn f (Icc a b)) : IntegrableOn f (Icc a b) := a:b:f: hf:AntitoneOn f (Icc a b)IntegrableOn f (Icc a b) a:b:f: hf:AntitoneOn f (Icc a b)IntegrableOn (- -f) (Icc a b); a:b:f: hf:AntitoneOn f (Icc a b)MonotoneOn (-f) (Icc a b); All goals completed! 🐙

Corollary 11.6.3 / Exercise 11.6.1

theorem declaration uses `sorry`integ_of_bdd_monotone {I:BoundedInterval} {f: } (hbound: BddOn f I) (hf: MonotoneOn f I) : IntegrableOn f I := I:BoundedIntervalf: hbound:BddOn f Ihf:MonotoneOn f IIntegrableOn f I All goals completed! 🐙
theorem declaration uses `sorry`integ_of_bdd_antitone {I:BoundedInterval} {f: } (hbound: BddOn f I) (hf: AntitoneOn f I) : IntegrableOn f I := I:BoundedIntervalf: hbound:BddOn f Ihf:AntitoneOn f IIntegrableOn f I All goals completed! 🐙

Proposition 11.6.4 (Integral test)

theorem declaration uses `sorry`summable_iff_integ_of_antitone {f: } (hnon: x 0, f x 0) (hf: AntitoneOn f (.Ici 0)) : Summable f M, N 0, integ f (Icc 0 N) M := f: hnon: x 0, f x 0hf:AntitoneOn f (Set.Ici 0)Summable f M, N 0, integ f (Icc 0 N) M All goals completed! 🐙
-- Exercise 11.6.2: Formulate a reasonable notion of a piecewise monotone function, and then -- show that all bounded piecewise monotone functions are Riemann integrable. /-- Exercise 11.6.4 -/ declaration uses `sorry`example : (f: ) (hnon: x 0, f x 0), Summable f ¬ M, N 0, integ f (Icc 0 N) M := f, (_ : x 0, f x 0), Summable f ¬ M, N 0, integ f (Icc 0 N) M All goals completed! 🐙declaration uses `sorry`example : (f: ) (hnon: x 0, f x 0), ¬ Summable f M, N 0, integ f (Icc 0 N) M := f, (_ : x 0, f x 0), ¬Summable f M, N 0, integ f (Icc 0 N) M All goals completed! 🐙end Chapter11