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

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.7.1 (Intermediate value theorem)

theorem declaration uses 'sorry'intermediate_value {a b:} (hab: a < b) {f: } (hf: ContinuousOn f (Set.Icc a b)) {y:} (hy: y Set.Icc (f a) (f b) y Set.Icc (f a) (f b)) : c Set.Icc a b, f c = y := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y -- цей доказ написан так, щоб співпадати із структурою орігінального тексту. a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:y Set.Icc (f a) (f b) c Set.Icc a b, f c = ya:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_right:y Set.Icc (f a) (f b) c Set.Icc a b, f c = y a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:y Set.Icc (f a) (f b) c Set.Icc a b, f c = y a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:y Set.Icc (f a) (f b)hya:y = f a c Set.Icc a b, f c = ya:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:y Set.Icc (f a) (f b)hya:¬y = f a c Set.Icc a b, f c = y a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:y Set.Icc (f a) (f b)hya:y = f a c Set.Icc a b, f c = y a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:y Set.Icc (f a) (f b)hya:y = f aa Set.Icc a b f a = y; All goals completed! 🐙 a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:y Set.Icc (f a) (f b)hya:¬y = f ahyb:y = f b c Set.Icc a b, f c = ya:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:y Set.Icc (f a) (f b)hya:¬y = f ahyb:¬y = f b c Set.Icc a b, f c = y a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:y Set.Icc (f a) (f b)hya:¬y = f ahyb:y = f b c Set.Icc a b, f c = y a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:y Set.Icc (f a) (f b)hya:¬y = f ahyb:y = f bb Set.Icc a b f b = y; All goals completed! 🐙 a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hya:¬y = f ahyb:¬y = f bhy_left:f a y y f b c Set.Icc a b, f c = y replace hya : f a < y := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hyb:¬y = f bhy_left:f a y y f bhya:y f ay = f a; All goals completed! 🐙 replace hyb : y < f b := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:f b yy = f b; All goals completed! 🐙 a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y} c Set.Icc a b, f c = y have hE : E Set.Icc a b := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}x:hx₁:x Set.Icc a bhx₂:f x < yx Set.Icc a b; All goals completed! 🐙 a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove E c Set.Icc a b, f c = y have hEa : a E := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y All goals completed! 🐙 have hE_nonempty : E.Nonempty := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y All goals completed! 🐙 a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup E c Set.Icc a b, f c = y have hc : c Set.Icc a b := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ea c c b a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ea ca:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ec b a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ea c All goals completed! 🐙 a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Eb = sSup (Set.Icc a b) All goals completed! 🐙 a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bf c = y have hfc_upper : f c y := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y have hxe (n:) : x E, c - 1/(n+1:) < x := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y have : 1/(n+1:) > 0 := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y All goals completed! 🐙 replace : c - 1/(n+1:) < sSup E := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y All goals completed! 🐙 All goals completed! 🐙 a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhxe: (n : ), x E, c - 1 / (n + 1) < xx: := fun n => .choosef c y a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhxe: (n : ), x E, c - 1 / (n + 1) < xx: := fun n => .choosehx1: (n : ), x n Ef c y a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhxe: (n : ), x E, c - 1 / (n + 1) < xx: := fun n => .choosehx1: (n : ), x n Ehx2: (n : ), c - 1 / (n + 1) < x nf c y have : Filter.Tendsto x Filter.atTop (nhds c) := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhxe: (n : ), x E, c - 1 / (n + 1) < xx: := fun n => .choosehx1: (n : ), x n Ehx2: (n : ), c - 1 / (n + 1) < x nFilter.Tendsto (fun j => c - 1 / (j + 1)) Filter.atTop (nhds c)a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhxe: (n : ), x E, c - 1 / (n + 1) < xx: := fun n => .choosehx1: (n : ), x n Ehx2: (n : ), c - 1 / (n + 1) < x nFilter.Tendsto (fun j => c) Filter.atTop (nhds c)a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhxe: (n : ), x E, c - 1 / (n + 1) < xx: := fun n => .choosehx1: (n : ), x n Ehx2: (n : ), c - 1 / (n + 1) < x n(fun j => c - 1 / (j + 1)) xa:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhxe: (n : ), x E, c - 1 / (n + 1) < xx: := fun n => .choosehx1: (n : ), x n Ehx2: (n : ), c - 1 / (n + 1) < x nx fun j => c a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhxe: (n : ), x E, c - 1 / (n + 1) < xx: := fun n => .choosehx1: (n : ), x n Ehx2: (n : ), c - 1 / (n + 1) < x nFilter.Tendsto (fun j => c - 1 / (j + 1)) Filter.atTop (nhds c) a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhxe: (n : ), x E, c - 1 / (n + 1) < xx: := fun n => .choosehx1: (n : ), x n Ehx2: (n : ), c - 1 / (n + 1) < x nc = c - 0a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhxe: (n : ), x E, c - 1 / (n + 1) < xx: := fun n => .choosehx1: (n : ), x n Ehx2: (n : ), c - 1 / (n + 1) < x nFilter.Tendsto (fun j => 1 / (j + 1)) Filter.atTop (nhds 0) a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhxe: (n : ), x E, c - 1 / (n + 1) < xx: := fun n => .choosehx1: (n : ), x n Ehx2: (n : ), c - 1 / (n + 1) < x nc = c - 0 All goals completed! 🐙 All goals completed! 🐙 a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhxe: (n : ), x E, c - 1 / (n + 1) < xx: := fun n => .choosehx1: (n : ), x n Ehx2: (n : ), c - 1 / (n + 1) < x nFilter.Tendsto (fun j => c) Filter.atTop (nhds c) All goals completed! 🐙 a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhxe: (n : ), x E, c - 1 / (n + 1) < xx: := fun n => .choosehx1: (n : ), x n Ehx2: (n : ), c - 1 / (n + 1) < x n(fun j => c - 1 / (j + 1)) x All goals completed! 🐙 All goals completed! 🐙 a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhxe: (n : ), x E, c - 1 / (n + 1) < xx: := fun n => .choosehx1: (n : ), x n Ehx2: (n : ), c - 1 / (n + 1) < x nthis:Filter.Tendsto (fun n => f (x n)) Filter.atTop (nhds (f c))f c y have hfxny (n:) : f (x n) y := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhxe: (n : ), x E, c - 1 / (n + 1) < xx: := fun n => .choosehx2: (n : ), c - 1 / (n + 1) < x nthis:Filter.Tendsto (fun n => f (x n)) Filter.atTop (nhds (f c))n:hx1:x n Ef (x n) y a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhxe: (n : ), x E, c - 1 / (n + 1) < xx: := fun n => .choosehx2: (n : ), c - 1 / (n + 1) < x nthis:Filter.Tendsto (fun n => f (x n)) Filter.atTop (nhds (f c))n:hx1:(a x n x n b) f (x n) < yf (x n) y All goals completed! 🐙 All goals completed! 🐙 have hne : c b := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:c = by < f c rwa [hfc_uppera:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:c = by < f b replace hne : c < b := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:b cc = b; a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehfc_upper:f c yhne:b chc:a c c bc = b; All goals completed! 🐙 have hfc_lower : y f c := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y have : N:, n N, (c+1/(n+1:)) < b := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:c < bN:hN:1 / (b - c) < N N, n N, c + 1 / (n + 1) < b a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:c < bN:hN:1 / (b - c) < N n N, c + 1 / (n + 1) < b a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:c < bN:hN:1 / (b - c) < Nn:hn:n Nc + 1 / (n + 1) < b have hpos : 0 < b-c := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y All goals completed! 🐙 have : 1/(n+1:) < b-c := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:c < bN:hN:1 / (b - c) < Nn:hn:n Nhpos:0 < b - c1 / (b - c) < n + 1 a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:c < bN:hN:1 / (b - c) < Nn:hn:n Nhpos:0 < b - cN < n + 1; a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:c < bN:hN:1 / (b - c) < Nn:hn:n Nhpos:0 < b - cN < n + 1; All goals completed! 🐙 All goals completed! 🐙 a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:c < bN:hN: n N, c + 1 / (n + 1) < by f c have hmem : n N, (c + 1/(n+1:)) Set.Icc a b := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:c < bN:hN: n N, c + 1 / (n + 1) < bn:hn:n Nc + 1 / (n + 1) Set.Icc a b a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:c < bN:hN: n N, c + 1 / (n + 1) < bn:hn:n Na c + 1 / (n + 1) have : 1/(n+1:) > 0 := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y All goals completed! 🐙 replace : c + 1/(n+1:) > c := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y All goals completed! 🐙 a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehfc_upper:f c yhne:c < bN:hN: n N, c + 1 / (n + 1) < bn:hn:n Nthis:c + 1 / (n + 1) > chc:a c c ba c + 1 / (n + 1) All goals completed! 🐙 have : n N, c + 1/(n+1:) E := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:c < bN:hN: n N, c + 1 / (n + 1) < bhmem: n N, c + 1 / (n + 1) Set.Icc a bn:a✝:n Nc + 1 / (n + 1) E have : 1/(n+1:) > 0 := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y All goals completed! 🐙 replace : c + 1/(n+1:) > c := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y All goals completed! 🐙 All goals completed! 🐙 replace : n N, f (c + 1/(n+1:)) y := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:c < bN:hN: n N, c + 1 / (n + 1) < bhmem: n N, c + 1 / (n + 1) Set.Icc a bthis: n N, c + 1 / (n + 1) En:hn:n Nf (c + 1 / (n + 1)) y a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:c < bN:hN: n N, c + 1 / (n + 1) < bhmem: n N, c + 1 / (n + 1) Set.Icc a bn:hn:n Nthis:c + 1 / (n + 1) Ef (c + 1 / (n + 1)) y a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:c < bN:hN: n N, c + 1 / (n + 1) < bhmem: n N, c + 1 / (n + 1) Set.Icc a bn:hn:n Nthis:f (c + 1 / (n + 1)) < yc + 1 / (n + 1) E a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:c < bN:hN: n N, c + 1 / (n + 1) < bhmem: n N, c + 1 / (n + 1) Set.Icc a bn:hn:n Nthis:f (c + 1 / (n + 1)) < ya c + 1 / (n + 1) a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:c < bN:hN: n N, c + 1 / (n + 1) < bhmem: n N, c + 1 / (n + 1) Set.Icc a bn:hn:n Nthis✝:f (c + 1 / (n + 1)) < ythis:c + 1 / (n + 1) Set.Icc a ba c + 1 / (n + 1) a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:c < bN:hN: n N, c + 1 / (n + 1) < bhmem: n N, c + 1 / (n + 1) Set.Icc a bn:hn:n Nthis✝:f (c + 1 / (n + 1)) < ythis:a c + 1 / (n + 1) c + 1 / (n + 1) ba c + 1 / (n + 1) All goals completed! 🐙 have hconv : Filter.Tendsto (fun n: c + 1/(n+1:)) Filter.atTop (nhds c) := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:c < bN:hN: n N, c + 1 / (n + 1) < bhmem: n N, c + 1 / (n + 1) Set.Icc a bthis: n N, f (c + 1 / (n + 1)) yc = c + 0a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:c < bN:hN: n N, c + 1 / (n + 1) < bhmem: n N, c + 1 / (n + 1) Set.Icc a bthis: n N, f (c + 1 / (n + 1)) yFilter.Tendsto (fun k => 1 / (k + 1)) Filter.atTop (nhds 0) a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:c < bN:hN: n N, c + 1 / (n + 1) < bhmem: n N, c + 1 / (n + 1) Set.Icc a bthis: n N, f (c + 1 / (n + 1)) yc = c + 0 All goals completed! 🐙 All goals completed! 🐙 a:b:hab:a < bf: y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:c < bN:hN: n N, c + 1 / (n + 1) < bhmem: n N, c + 1 / (n + 1) Set.Icc a bthis: n N, f (c + 1 / (n + 1)) yhconv:Filter.Tendsto (fun n => c + 1 / (n + 1)) Filter.atTop (nhds c)hf:Filter.Tendsto f (nhdsWithin c (Set.Icc a b)) (nhds (f c))y f c a:b:hab:a < bf: y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:c < bN:hN: n N, c + 1 / (n + 1) < bhmem: n N, c + 1 / (n + 1) Set.Icc a bthis: n N, f (c + 1 / (n + 1)) yhconv:Filter.Tendsto (fun n => c + 1 / (n + 1)) Filter.atTop (nhds c)hf:Filter.Tendsto f (nhds c Filter.principal (Set.Icc a b)) (nhds (f c))y f c have hconv' : Filter.Tendsto (fun n: c + 1/(n+1:)) Filter.atTop (Filter.principal (Set.Icc a b)) := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:y Set.Icc (f a) (f b) y Set.Icc (f a) (f b) c Set.Icc a b, f c = y a:b:hab:a < bf: y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:c < bN:hN: n N, c + 1 / (n + 1) < bhmem: n N, c + 1 / (n + 1) Set.Icc a bthis: n N, f (c + 1 / (n + 1)) yhconv:Filter.Tendsto (fun n => c + 1 / (n + 1)) Filter.atTop (nhds c)hf:Filter.Tendsto f (nhds c Filter.principal (Set.Icc a b)) (nhds (f c)) a_1, b_1 a_1, c + 1 / (b_1 + 1) Set.Icc a b All goals completed! 🐙 a:b:hab:a < bf: y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:c < bN:hN: n N, c + 1 / (n + 1) < bhmem: n N, c + 1 / (n + 1) Set.Icc a bthis: n N, f (c + 1 / (n + 1)) yhconv:Filter.Tendsto (fun n => c + 1 / (n + 1)) Filter.atTop (nhds c)hf:Filter.Tendsto f (nhds c Filter.principal (Set.Icc a b)) (nhds (f c))hconv':Filter.Tendsto (fun n => c + 1 / (n + 1)) Filter.atTop (nhds c Filter.principal (Set.Icc a b))y f c a:b:hab:a < bf: y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:c < bN:hN: n N, c + 1 / (n + 1) < bhmem: n N, c + 1 / (n + 1) Set.Icc a bthis: n N, f (c + 1 / (n + 1)) yhconv:Filter.Tendsto (fun n => c + 1 / (n + 1)) Filter.atTop (nhds c)hf:Filter.Tendsto f (nhds c Filter.principal (Set.Icc a b)) (nhds (f c))hconv':Filter.Tendsto (fun n => c + 1 / (n + 1)) Filter.atTop (nhds c Filter.principal (Set.Icc a b))∀ᶠ (c_1 : ) in Filter.atTop, y (f fun n => c + 1 / (n + 1)) c_1 a:b:hab:a < bf: y:hy_left:f a y y f bhya:f a < yhyb:y < f bE:Set := {x | x Set.Icc a b f x < y}hE:E Set.Icc a bhE_bdd:BddAbove EhEa:a EhE_nonempty:E.Nonemptyc: := sSup Ehc:c Set.Icc a bhfc_upper:f c yhne:c < bN:hN: n N, c + 1 / (n + 1) < bhmem: n N, c + 1 / (n + 1) Set.Icc a bthis: n N, f (c + 1 / (n + 1)) yhconv:Filter.Tendsto (fun n => c + 1 / (n + 1)) Filter.atTop (nhds c)hf:Filter.Tendsto f (nhds c Filter.principal (Set.Icc a b)) (nhds (f c))hconv':Filter.Tendsto (fun n => c + 1 / (n + 1)) Filter.atTop (nhds c Filter.principal (Set.Icc a b)) a, b a, y f (c + 1 / (b + 1)) All goals completed! 🐙 All goals completed! 🐙 All goals completed! 🐙
open Classical in noncomputable abbrev f_9_7_1 : := fun x if x 0 then -1 else 1declaration uses 'sorry'example : 0 Set.Icc (f_9_7_1 (-1)) (f_9_7_1 1) ¬ x Set.Icc (-1) 1, f_9_7_1 x = 0 := 0 Set.Icc (f_9_7_1 (-1)) (f_9_7_1 1) ¬ x Set.Icc (-1) 1, f_9_7_1 x = 0 All goals completed! 🐙

Ремарка 9.7.2

abbrev f_9_7_2 : := fun x x^3 - x
declaration uses 'sorry'example : f_9_7_2 (-2) = -6 := f_9_7_2 (-2) = -6 All goals completed! 🐙declaration uses 'sorry'example : f_9_7_2 2 = 6 := f_9_7_2 2 = 6 All goals completed! 🐙declaration uses 'sorry'example : f_9_7_2 (-1) = 0 := f_9_7_2 (-1) = 0 All goals completed! 🐙declaration uses 'sorry'example : f_9_7_2 0 = 0 := f_9_7_2 0 = 0 All goals completed! 🐙declaration uses 'sorry'example : f_9_7_2 1 = 0 := f_9_7_2 1 = 0 All goals completed! 🐙

Ремарка 9.7.3

declaration uses 'sorry'example : x:, 0 x x 2 x^2 = 2 := x, 0 x x 2 x ^ 2 = 2 All goals completed! 🐙

Наслідок 9.7.4 (Images of continuous functions) / Вправа 9.7.1

theorem declaration uses 'sorry'continuous_image_Icc {a b:} (hab: a < b) {f: } (hf: ContinuousOn f (Set.Icc a b)) {y:} (hy: sInf (f '' Set.Icc a b) y y sSup (f '' Set.Icc a b)) : c Set.Icc a b, f c = y := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)y:hy:sInf (f '' Set.Icc a b) y y sSup (f '' Set.Icc a b) c Set.Icc a b, f c = y All goals completed! 🐙
theorem declaration uses 'sorry'continuous_image_Icc' {a b:} (hab: a < b) {f: } (hf: ContinuousOn f (Set.Icc a b)) : f '' Set.Icc a b = Set.Icc (sInf (f '' Set.Icc a b)) (sSup (f '' Set.Icc a b)) := a:b:hab:a < bf: hf:ContinuousOn f (Set.Icc a b)f '' Set.Icc a b = Set.Icc (sInf (f '' Set.Icc a b)) (sSup (f '' Set.Icc a b)) All goals completed! 🐙

Вправа 9.7.2

theorem declaration uses 'sorry'exists_fixed_pt {f: } (hf: ContinuousOn f (Set.Icc 0 1)) (hmap: f '' Set.Icc 0 1 Set.Icc 0 1) : x Set.Icc 0 1, f x = x := f: hf:ContinuousOn f (Set.Icc 0 1)hmap:f '' Set.Icc 0 1 Set.Icc 0 1 x Set.Icc 0 1, f x = x All goals completed! 🐙
end Chapter9