Аналіз I, Глава 9.5

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 Chapter9

Визначення 9.5.1. We give left and right limits the "junk" value of 0 if the limit does not exist.

abbrev right_limit_exists (X: Set ) (f: ) (x₀:) : Prop := L, Filter.Tendsto f ((nhds x₀) Filter.principal (X Set.Ioi x₀)) (nhds L)
open Classical in noncomputable abbrev right_limit (X: Set ) (f: ) (x₀:) : := if h : right_limit_exists X f x₀ then h.choose else 0abbrev left_limit_exists (X: Set ) (f: ) (x₀:) : Prop := L, Filter.Tendsto f ((nhds x₀) Filter.principal (X Set.Iio x₀)) (nhds L)open Classical in noncomputable abbrev left_limit (X: Set ) (f: ) (x₀:) : := if h: left_limit_exists X f x₀ then h.choose else 0theorem right_limit.eq {X: Set } {f: } {x₀:} {L:} (had: AdherentPt x₀ (X Set.Ioi x₀)) (h: Filter.Tendsto f ((nhds x₀) Filter.principal (X Set.Ioi x₀)) (nhds L)) : right_limit X f x₀ = L := X:Set f: x₀:L:had:AdherentPt x₀ (X Set.Ioi x₀)h:Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Ioi x₀)) (nhds L)right_limit X f x₀ = L have h' : right_limit_exists X f x₀ := X:Set f: x₀:L:had:AdherentPt x₀ (X Set.Ioi x₀)h:Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Ioi x₀)) (nhds L)right_limit X f x₀ = L All goals completed! 🐙 X:Set f: x₀:L:had:AdherentPt x₀ (X Set.Ioi x₀)h:Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Ioi x₀)) (nhds L)h':right_limit_exists X f x₀Exists.choose = L have hne : (nhds x₀ Filter.principal (X Set.Ioi x₀)).NeBot := X:Set f: x₀:L:had:AdherentPt x₀ (X Set.Ioi x₀)h:Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Ioi x₀)) (nhds L)right_limit X f x₀ = L rwa [nhdsWithin.eq_1, mem_closure_iff_nhdsWithin_neBot, closure_def'X:Set f: x₀:L:had:AdherentPt x₀ (X Set.Ioi x₀)h:Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Ioi x₀)) (nhds L)h':right_limit_exists X f x₀AdherentPt x₀ (X Set.Ioi x₀) All goals completed! 🐙theorem left_limit.eq {X: Set } {f: } {x₀:} {L:} (had: AdherentPt x₀ (X Set.Iio x₀)) (h: Filter.Tendsto f ((nhds x₀) Filter.principal (X Set.Iio x₀)) (nhds L)) : left_limit X f x₀ = L := X:Set f: x₀:L:had:AdherentPt x₀ (X Set.Iio x₀)h:Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Iio x₀)) (nhds L)left_limit X f x₀ = L have h' : left_limit_exists X f x₀ := X:Set f: x₀:L:had:AdherentPt x₀ (X Set.Iio x₀)h:Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Iio x₀)) (nhds L)left_limit X f x₀ = L All goals completed! 🐙 X:Set f: x₀:L:had:AdherentPt x₀ (X Set.Iio x₀)h:Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Iio x₀)) (nhds L)h':left_limit_exists X f x₀Exists.choose = L have hne : (nhds x₀ Filter.principal (X Set.Iio x₀)).NeBot := X:Set f: x₀:L:had:AdherentPt x₀ (X Set.Iio x₀)h:Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Iio x₀)) (nhds L)left_limit X f x₀ = L rwa [nhdsWithin.eq_1, mem_closure_iff_nhdsWithin_neBot, closure_def'X:Set f: x₀:L:had:AdherentPt x₀ (X Set.Iio x₀)h:Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Iio x₀)) (nhds L)h':left_limit_exists X f x₀AdherentPt x₀ (X Set.Iio x₀) All goals completed! 🐙theorem right_limit.eq' {X: Set } {f: } {x₀:} (h: right_limit_exists X f x₀) : Filter.Tendsto f ((nhds x₀) Filter.principal (X Set.Ioi x₀)) (nhds (right_limit X f x₀)) := X:Set f: x₀:h:right_limit_exists X f x₀Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Ioi x₀)) (nhds (right_limit X f x₀)) X:Set f: x₀:h:right_limit_exists X f x₀Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Ioi x₀)) (nhds (Exists.choose )) All goals completed! 🐙theorem left_limit.eq' {X: Set } {f: } {x₀:} (h: left_limit_exists X f x₀) : Filter.Tendsto f ((nhds x₀) Filter.principal (X Set.Iio x₀)) (nhds (left_limit X f x₀)) := X:Set f: x₀:h:left_limit_exists X f x₀Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Iio x₀)) (nhds (left_limit X f x₀)) X:Set f: x₀:h:left_limit_exists X f x₀Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Iio x₀)) (nhds (Exists.choose )) All goals completed! 🐙

Приклад 9.5.2. The second part of this example is no longer operative as we assign "junk" values to our functions instead of leaving them undefined.

declaration uses 'sorry'example : right_limit Set.univ Real.sign 0 = 1 := right_limit Set.univ Real.sign 0 = 1 All goals completed! 🐙
declaration uses 'sorry'example : left_limit Set.univ Real.sign 0 = -1 := left_limit Set.univ Real.sign 0 = -1 All goals completed! 🐙theorem right_limit.conv {X: Set } {f: } {x₀:} {unused variable `L` note: this linter can be disabled with `set_option linter.unusedVariables false`L:} (had: AdherentPt x₀ (X Set.Ioi x₀)) (h: right_limit_exists X f x₀) (a: ) (ha: n, a n X Set.Ioi x₀) (hconv: Filter.Tendsto a Filter.atTop (nhds x₀)) : Filter.Tendsto (fun n f (a n)) Filter.atTop (nhds (right_limit X f x₀)) := X:Set f: x₀:L:had:AdherentPt x₀ (X Set.Ioi x₀)h:right_limit_exists X f x₀a: ha: (n : ), a n X Set.Ioi x₀hconv:Filter.Tendsto a Filter.atTop (nhds x₀)Filter.Tendsto (fun n => f (a n)) Filter.atTop (nhds (right_limit X f x₀)) X:Set f: x₀:L✝:had:AdherentPt x₀ (X Set.Ioi x₀)a: ha: (n : ), a n X Set.Ioi x₀hconv:Filter.Tendsto a Filter.atTop (nhds x₀)L:hL:Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Ioi x₀)) (nhds L)Filter.Tendsto (fun n => f (a n)) Filter.atTop (nhds (right_limit X f x₀)) X:Set f: x₀:L✝:had:AdherentPt x₀ (X Set.Ioi x₀)a: ha: (n : ), a n X Set.Ioi x₀hconv:Filter.Tendsto a Filter.atTop (nhds x₀)L:hL:Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Ioi x₀)) (nhds L)Convergesto (X Set.Ioi x₀) f (right_limit X f x₀) x₀ rwa [Convergesto.iff, right_limit.eq had hLX:Set f: x₀:L✝:had:AdherentPt x₀ (X Set.Ioi x₀)a: ha: (n : ), a n X Set.Ioi x₀hconv:Filter.Tendsto a Filter.atTop (nhds x₀)L:hL:Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Ioi x₀)) (nhds L)Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Ioi x₀)) (nhds L)theorem left_limit.conv {X: Set } {f: } {x₀:} {unused variable `L` note: this linter can be disabled with `set_option linter.unusedVariables false`L:} (had: AdherentPt x₀ (X Set.Iio x₀)) (h: left_limit_exists X f x₀) (a: ) (ha: n, a n X Set.Iio x₀) (hconv: Filter.Tendsto a Filter.atTop (nhds x₀)) : Filter.Tendsto (fun n f (a n)) Filter.atTop (nhds (left_limit X f x₀)) := X:Set f: x₀:L:had:AdherentPt x₀ (X Set.Iio x₀)h:left_limit_exists X f x₀a: ha: (n : ), a n X Set.Iio x₀hconv:Filter.Tendsto a Filter.atTop (nhds x₀)Filter.Tendsto (fun n => f (a n)) Filter.atTop (nhds (left_limit X f x₀)) X:Set f: x₀:L✝:had:AdherentPt x₀ (X Set.Iio x₀)a: ha: (n : ), a n X Set.Iio x₀hconv:Filter.Tendsto a Filter.atTop (nhds x₀)L:hL:Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Iio x₀)) (nhds L)Filter.Tendsto (fun n => f (a n)) Filter.atTop (nhds (left_limit X f x₀)) X:Set f: x₀:L✝:had:AdherentPt x₀ (X Set.Iio x₀)a: ha: (n : ), a n X Set.Iio x₀hconv:Filter.Tendsto a Filter.atTop (nhds x₀)L:hL:Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Iio x₀)) (nhds L)Convergesto (X Set.Iio x₀) f (left_limit X f x₀) x₀ rwa [Convergesto.iff, left_limit.eq had hLX:Set f: x₀:L✝:had:AdherentPt x₀ (X Set.Iio x₀)a: ha: (n : ), a n X Set.Iio x₀hconv:Filter.Tendsto a Filter.atTop (nhds x₀)L:hL:Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Iio x₀)) (nhds L)Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Iio x₀)) (nhds L)

Твердження 9.5.3

theorem declaration uses 'sorry'ContinuousAt.iff_eq_left_right_limit {X: Set } {f: } {x₀:} (h: x₀ X) (had_left: AdherentPt x₀ (X Set.Iio x₀)) (had_right: AdherentPt x₀ (X Set.Ioi x₀)) : ContinuousWithinAt f X x₀ right_limit_exists X f x₀ left_limit_exists X f x₀ right_limit X f x₀ = f x₀ left_limit X f x₀ = f x₀ := X:Set f: x₀:h:x₀ Xhad_left:AdherentPt x₀ (X Set.Iio x₀)had_right:AdherentPt x₀ (X Set.Ioi x₀)ContinuousWithinAt f X x₀ right_limit_exists X f x₀ left_limit_exists X f x₀ right_limit X f x₀ = f x₀ left_limit X f x₀ = f x₀ -- цей доказ написан так, щоб співпадати із структурою орігінального тексту. X:Set f: x₀:h:x₀ Xhad_left:AdherentPt x₀ (X Set.Iio x₀)had_right:AdherentPt x₀ (X Set.Ioi x₀)ContinuousWithinAt f X x₀ right_limit_exists X f x₀ left_limit_exists X f x₀ right_limit X f x₀ = f x₀ left_limit X f x₀ = f x₀X:Set f: x₀:h:x₀ Xhad_left:AdherentPt x₀ (X Set.Iio x₀)had_right:AdherentPt x₀ (X Set.Ioi x₀)right_limit_exists X f x₀ left_limit_exists X f x₀ right_limit X f x₀ = f x₀ left_limit X f x₀ = f x₀ ContinuousWithinAt f X x₀ X:Set f: x₀:h:x₀ Xhad_left:AdherentPt x₀ (X Set.Iio x₀)had_right:AdherentPt x₀ (X Set.Ioi x₀)ContinuousWithinAt f X x₀ right_limit_exists X f x₀ left_limit_exists X f x₀ right_limit X f x₀ = f x₀ left_limit X f x₀ = f x₀ All goals completed! 🐙 X:Set f: x₀:h:x₀ Xhad_left:AdherentPt x₀ (X Set.Iio x₀)had_right:AdherentPt x₀ (X Set.Ioi x₀)hre:right_limit_exists X f x₀hle:left_limit_exists X f x₀hright:right_limit X f x₀ = f x₀lheft:left_limit X f x₀ = f x₀ContinuousWithinAt f X x₀ X:Set f: x₀:h:x₀ Xhad_left:AdherentPt x₀ (X Set.Iio x₀)had_right:AdherentPt x₀ (X Set.Ioi x₀)hre:right_limit_exists X f x₀hle:left_limit_exists X f x₀L: := f x₀hright:right_limit X f x₀ = Llheft:left_limit X f x₀ = LContinuousWithinAt f X x₀ X:Set f: x₀:h:x₀ Xhad_left:AdherentPt x₀ (X Set.Iio x₀)had_right:AdherentPt x₀ (X Set.Ioi x₀)hre:right_limit_exists X f x₀hle:left_limit_exists X f x₀L: := f x₀hright:right_limit X f x₀ = Llheft:left_limit X f x₀ = Lthis:ContinuousWithinAt f X x₀ ε > 0, δ > 0, x X, |x - x₀| < δ |f x - f x₀| < εContinuousWithinAt f X x₀ X:Set f: x₀:h:x₀ Xhad_left:AdherentPt x₀ (X Set.Iio x₀)had_right:AdherentPt x₀ (X Set.Ioi x₀)hre:right_limit_exists X f x₀hle:left_limit_exists X f x₀L: := f x₀hright:right_limit X f x₀ = Llheft:left_limit X f x₀ = Lthis:ContinuousWithinAt f X x₀ ε > 0, δ > 0, x X, |x - x₀| < δ |f x - f x₀| < ε ε > 0, δ > 0, x X, |x - x₀| < δ |f x - f x₀| < ε X:Set f: x₀:h:x₀ Xhad_left:AdherentPt x₀ (X Set.Iio x₀)had_right:AdherentPt x₀ (X Set.Ioi x₀)hre:right_limit_exists X f x₀hle:left_limit_exists X f x₀L: := f x₀hright:right_limit X f x₀ = Llheft:left_limit X f x₀ = Lthis:ContinuousWithinAt f X x₀ ε > 0, δ > 0, x X, |x - x₀| < δ |f x - f x₀| < εε::ε > 0 δ > 0, x X, |x - x₀| < δ |f x - f x₀| < ε X:Set f: x₀:h:x₀ Xhad_left:AdherentPt x₀ (X Set.Iio x₀)had_right:AdherentPt x₀ (X Set.Ioi x₀)hle:left_limit_exists X f x₀L: := f x₀hright:right_limit X f x₀ = Llheft:left_limit X f x₀ = Lthis:ContinuousWithinAt f X x₀ ε > 0, δ > 0, x X, |x - x₀| < δ |f x - f x₀| < εε::ε > 0hre:Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Ioi x₀)) (nhds (right_limit X f x₀)) δ > 0, x X, |x - x₀| < δ |f x - f x₀| < ε X:Set f: x₀:h:x₀ Xhad_left:AdherentPt x₀ (X Set.Iio x₀)had_right:AdherentPt x₀ (X Set.Ioi x₀)L: := f x₀hright:right_limit X f x₀ = Llheft:left_limit X f x₀ = Lthis:ContinuousWithinAt f X x₀ ε > 0, δ > 0, x X, |x - x₀| < δ |f x - f x₀| < εε::ε > 0hre:Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Ioi x₀)) (nhds (right_limit X f x₀))hle:Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Iio x₀)) (nhds (left_limit X f x₀)) δ > 0, x X, |x - x₀| < δ |f x - f x₀| < ε X:Set f: x₀:h:x₀ Xhad_left:AdherentPt x₀ (X Set.Iio x₀)had_right:AdherentPt x₀ (X Set.Ioi x₀)L: := f x₀hright:right_limit X f x₀ = Llheft:left_limit X f x₀ = Lthis:ContinuousWithinAt f X x₀ ε > 0, δ > 0, x X, |x - x₀| < δ |f x - f x₀| < εε::ε > 0hre:Convergesto (X Set.Ioi x₀) f L x₀hle:Filter.Tendsto f (nhds x₀ Filter.principal (X Set.Iio x₀)) (nhds (left_limit X f x₀)) δ > 0, x X, |x - x₀| < δ |f x - f x₀| < ε X:Set f: x₀:h:x₀ Xhad_left:AdherentPt x₀ (X Set.Iio x₀)had_right:AdherentPt x₀ (X Set.Ioi x₀)L: := f x₀hright:right_limit X f x₀ = Llheft:left_limit X f x₀ = Lthis:ContinuousWithinAt f X x₀ ε > 0, δ > 0, x X, |x - x₀| < δ |f x - f x₀| < εε::ε > 0hre:Convergesto (X Set.Ioi x₀) f L x₀hle:Convergesto (X Set.Iio x₀) f L x₀ δ > 0, x X, |x - x₀| < δ |f x - f x₀| < ε X:Set f: x₀:h:x₀ Xhad_left:AdherentPt x₀ (X Set.Iio x₀)had_right:AdherentPt x₀ (X Set.Ioi x₀)L: := f x₀hright:right_limit X f x₀ = Llheft:left_limit X f x₀ = Lthis:ContinuousWithinAt f X x₀ ε > 0, δ > 0, x X, |x - x₀| < δ |f x - f x₀| < εε::ε > 0hre: (ε : ), 0 < ε δ, 0 < δ x X, x₀ < x x₀ - δ < x x < x₀ + δ |f x - L| < εhle: (ε : ), 0 < ε δ, 0 < δ x X, x < x₀ x₀ - δ < x x < x₀ + δ |f x - L| < ε δ > 0, x X, |x - x₀| < δ |f x - f x₀| < ε X:Set f: x₀:h:x₀ Xhad_left:AdherentPt x₀ (X Set.Iio x₀)had_right:AdherentPt x₀ (X Set.Ioi x₀)L: := f x₀hright:right_limit X f x₀ = Llheft:left_limit X f x₀ = Lthis:ContinuousWithinAt f X x₀ ε > 0, δ > 0, x X, |x - x₀| < δ |f x - f x₀| < εε::ε > 0hle: (ε : ), 0 < ε δ, 0 < δ x X, x < x₀ x₀ - δ < x x < x₀ + δ |f x - L| < εhre: δ, 0 < δ x X, x₀ < x x₀ - δ < x x < x₀ + δ |f x - L| < ε δ > 0, x X, |x - x₀| < δ |f x - f x₀| < ε X:Set f: x₀:h:x₀ Xhad_left:AdherentPt x₀ (X Set.Iio x₀)had_right:AdherentPt x₀ (X Set.Ioi x₀)L: := f x₀hright:right_limit X f x₀ = Llheft:left_limit X f x₀ = Lthis:ContinuousWithinAt f X x₀ ε > 0, δ > 0, x X, |x - x₀| < δ |f x - f x₀| < εε::ε > 0hre: δ, 0 < δ x X, x₀ < x x₀ - δ < x x < x₀ + δ |f x - L| < εhle: δ, 0 < δ x X, x < x₀ x₀ - δ < x x < x₀ + δ |f x - L| < ε δ > 0, x X, |x - x₀| < δ |f x - f x₀| < ε X:Set f: x₀:h:x₀ Xhad_left:AdherentPt x₀ (X Set.Iio x₀)had_right:AdherentPt x₀ (X Set.Ioi x₀)L: := f x₀hright:right_limit X f x₀ = Llheft:left_limit X f x₀ = Lthis:ContinuousWithinAt f X x₀ ε > 0, δ > 0, x X, |x - x₀| < δ |f x - f x₀| < εε::ε > 0hle: δ, 0 < δ x X, x < x₀ x₀ - δ < x x < x₀ + δ |f x - L| < εδ_plus:hδ_plus:0 < δ_plushre: x X, x₀ < x x₀ - δ_plus < x x < x₀ + δ_plus |f x - L| < ε δ > 0, x X, |x - x₀| < δ |f x - f x₀| < ε X:Set f: x₀:h:x₀ Xhad_left:AdherentPt x₀ (X Set.Iio x₀)had_right:AdherentPt x₀ (X Set.Ioi x₀)L: := f x₀hright:right_limit X f x₀ = Llheft:left_limit X f x₀ = Lthis:ContinuousWithinAt f X x₀ ε > 0, δ > 0, x X, |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ_plus:hδ_plus:0 < δ_plushre: x X, x₀ < x x₀ - δ_plus < x x < x₀ + δ_plus |f x - L| < εδ_minus:hδ_minus:0 < δ_minushle: x X, x < x₀ x₀ - δ_minus < x x < x₀ + δ_minus |f x - L| < ε δ > 0, x X, |x - x₀| < δ |f x - f x₀| < ε use min δ_plus δ_minus, (X:Set f: x₀:h:x₀ Xhad_left:AdherentPt x₀ (X Set.Iio x₀)had_right:AdherentPt x₀ (X Set.Ioi x₀)L: := f x₀hright:right_limit X f x₀ = Llheft:left_limit X f x₀ = Lthis:ContinuousWithinAt f X x₀ ε > 0, δ > 0, x X, |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ_plus:hδ_plus:0 < δ_plushre: x X, x₀ < x x₀ - δ_plus < x x < x₀ + δ_plus |f x - L| < εδ_minus:hδ_minus:0 < δ_minushle: x X, x < x₀ x₀ - δ_minus < x x < x₀ + δ_minus |f x - L| < εmin δ_plus δ_minus > 0 All goals completed! 🐙) X:Set f: x₀:h:x₀ Xhad_left:AdherentPt x₀ (X Set.Iio x₀)had_right:AdherentPt x₀ (X Set.Ioi x₀)L: := f x₀hright:right_limit X f x₀ = Llheft:left_limit X f x₀ = Lthis:ContinuousWithinAt f X x₀ ε > 0, δ > 0, x X, |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ_plus:hδ_plus:0 < δ_plushre: x X, x₀ < x x₀ - δ_plus < x x < x₀ + δ_plus |f x - L| < εδ_minus:hδ_minus:0 < δ_minushle: x X, x < x₀ x₀ - δ_minus < x x < x₀ + δ_minus |f x - L| < εx:hx:x Xhxx₀:|x - x₀| < min δ_plus δ_minus|f x - f x₀| < ε X:Set f: x₀:h:x₀ Xhad_left:AdherentPt x₀ (X Set.Iio x₀)had_right:AdherentPt x₀ (X Set.Ioi x₀)L: := f x₀hright:right_limit X f x₀ = Llheft:left_limit X f x₀ = Lthis:ContinuousWithinAt f X x₀ ε > 0, δ > 0, x X, |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ_plus:hδ_plus:0 < δ_plushre: x X, x₀ < x x₀ - δ_plus < x x < x₀ + δ_plus |f x - L| < εδ_minus:hδ_minus:0 < δ_minushle: x X, x < x₀ x₀ - δ_minus < x x < x₀ + δ_minus |f x - L| < εx:hx:x Xhxx₀:|x - x₀| < min δ_plus δ_minushlt:x < x₀|f x - f x₀| < εX:Set f: x₀:h:x₀ Xhad_left:AdherentPt x₀ (X Set.Iio x₀)had_right:AdherentPt x₀ (X Set.Ioi x₀)L: := f x₀hright:right_limit X f x₀ = Llheft:left_limit X f x₀ = Lthis:ContinuousWithinAt f X x₀ ε > 0, δ > 0, x X, |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ_plus:hδ_plus:0 < δ_plushre: x X, x₀ < x x₀ - δ_plus < x x < x₀ + δ_plus |f x - L| < εδ_minus:hδ_minus:0 < δ_minushle: x X, x < x₀ x₀ - δ_minus < x x < x₀ + δ_minus |f x - L| < εx:hx:x Xhxx₀:|x - x₀| < min δ_plus δ_minusheq:x = x₀|f x - f x₀| < εX:Set f: x₀:h:x₀ Xhad_left:AdherentPt x₀ (X Set.Iio x₀)had_right:AdherentPt x₀ (X Set.Ioi x₀)L: := f x₀hright:right_limit X f x₀ = Llheft:left_limit X f x₀ = Lthis:ContinuousWithinAt f X x₀ ε > 0, δ > 0, x X, |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ_plus:hδ_plus:0 < δ_plushre: x X, x₀ < x x₀ - δ_plus < x x < x₀ + δ_plus |f x - L| < εδ_minus:hδ_minus:0 < δ_minushle: x X, x < x₀ x₀ - δ_minus < x x < x₀ + δ_minus |f x - L| < εx:hx:x Xhxx₀:|x - x₀| < min δ_plus δ_minushgt:x₀ < x|f x - f x₀| < ε X:Set f: x₀:h:x₀ Xhad_left:AdherentPt x₀ (X Set.Iio x₀)had_right:AdherentPt x₀ (X Set.Ioi x₀)L: := f x₀hright:right_limit X f x₀ = Llheft:left_limit X f x₀ = Lthis:ContinuousWithinAt f X x₀ ε > 0, δ > 0, x X, |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ_plus:hδ_plus:0 < δ_plushre: x X, x₀ < x x₀ - δ_plus < x x < x₀ + δ_plus |f x - L| < εδ_minus:hδ_minus:0 < δ_minushle: x X, x < x₀ x₀ - δ_minus < x x < x₀ + δ_minus |f x - L| < εx:hx:x Xhxx₀:|x - x₀| < min δ_plus δ_minushlt:x < x₀|f x - f x₀| < ε All goals completed! 🐙 X:Set f: x₀:h:x₀ Xhad_left:AdherentPt x₀ (X Set.Iio x₀)had_right:AdherentPt x₀ (X Set.Ioi x₀)L: := f x₀hright:right_limit X f x₀ = Llheft:left_limit X f x₀ = Lthis:ContinuousWithinAt f X x₀ ε > 0, δ > 0, x X, |x - x₀| < δ |f x - f x₀| < εε::ε > 0δ_plus:hδ_plus:0 < δ_plushre: x X, x₀ < x x₀ - δ_plus < x x < x₀ + δ_plus |f x - L| < εδ_minus:hδ_minus:0 < δ_minushle: x X, x < x₀ x₀ - δ_minus < x x < x₀ + δ_minus |f x - L| < εx:hx:x Xhxx₀:|x - x₀| < min δ_plus δ_minusheq:x = x₀|f x - f x₀| < ε All goals completed! 🐙 All goals completed! 🐙
abbrev has_jump_discontinuity (X: Set ) (f: ) (x₀:) : Prop := right_limit_exists X f x₀ left_limit_exists X f x₀ right_limit X f x₀ left_limit X f x₀declaration uses 'sorry'example : has_jump_discontinuity Set.univ Real.sign 0 := has_jump_discontinuity Set.univ Real.sign 0 All goals completed! 🐙abbrev has_removable_discontinuity (X: Set ) (f: ) (x₀:) : Prop := right_limit_exists X f x₀ left_limit_exists X f x₀ right_limit X f x₀ = left_limit X f x₀ right_limit X f x₀ f x₀declaration uses 'sorry'example : has_removable_discontinuity Set.univ f_9_3_17 0 := has_removable_discontinuity Set.univ f_9_3_17 0 All goals completed! 🐙declaration uses 'sorry'example : ¬ has_removable_discontinuity Set.univ (fun x 1/x) 0 := ¬has_removable_discontinuity Set.univ (fun x => 1 / x) 0 All goals completed! 🐙declaration uses 'sorry'example : ¬ has_jump_discontinuity Set.univ (fun x 1/x) 0 := ¬has_jump_discontinuity Set.univ (fun x => 1 / x) 0 All goals completed! 🐙/- Вправа 9.5.1: Write down a definition of what it would mean for a limit of a function to be `+∞` or `-∞`, apply to `fun x ↦ 1/x`, and state and prove a version of Proposition 9.3.9. -/ end Chapter9