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

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.6.1

abbrev BddAboveOn (f: ) (X:Set ) : Prop := M, x X, f x M
abbrev BddBelowOn (f: ) (X:Set ) : Prop := M, x X, -M f xabbrev BddOn (f: ) (X:Set ) : Prop := M, x X, |f x| M

Ремарка 9.6.2

theorem declaration uses 'sorry'BddOn.iff (f: ) (X:Set ) : BddOn f X BddAboveOn f X BddBelowOn f X := f: X:Set BddOn f X BddAboveOn f X BddBelowOn f X All goals completed! 🐙
theorem declaration uses 'sorry'BddOn.iff' (f: ) (X:Set ) : BddOn f X Bornology.IsBounded (f '' X) := f: X:Set BddOn f X Bornology.IsBounded (f '' X) All goals completed! 🐙declaration uses 'sorry'example : Continuous (fun x: x) := Continuous fun x => x All goals completed! 🐙declaration uses 'sorry'example : ¬ BddOn (fun x: x) Set.univ := ¬BddOn (fun x => x) Set.univ All goals completed! 🐙declaration uses 'sorry'example : BddOn (fun x: x) (Set.Icc 1 2) := BddOn (fun x => x) (Set.Icc 1 2) All goals completed! 🐙declaration uses 'sorry'example : ContinuousOn (fun x: 1/x) (Set.Ioo 0 1) := ContinuousOn (fun x => 1 / x) (Set.Ioo 0 1) All goals completed! 🐙declaration uses 'sorry'example : ¬ BddOn (fun x: 1/x) (Set.Ioo 0 1) := ¬BddOn (fun x => 1 / x) (Set.Ioo 0 1) All goals completed! 🐙theorem declaration uses 'sorry'why_7_6_3 {n: } (hn: StrictMono n) (j:) : n j j := n: hn:StrictMono nj:n j j All goals completed! 🐙

Лема 7.6.3

theorem BddOn.of_continuous_on_compact {a b:} (h:a < b) {f: } (hf: ContinuousOn f (Set.Icc a b) ) : BddOn f (Set.Icc a b) := a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)BddOn f (Set.Icc a b) -- цей доказ написан так, щоб співпадати із структурою орігінального тексту. a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)hunbound:¬BddOn f (Set.Icc a b)False a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)hunbound: (x : ), x_1, a x_1 x_1 b x < |f x_1|False a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)hunbound: (x : ), x_1, a x_1 x_1 b x < |f x_1|x: := fun n => .chooseFalse a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)hunbound: (x : ), x_1, a x_1 x_1 b x < |f x_1|x: := fun n => .choosehx: (n : ), a x n x n b n < |f (x n)|False a:b:h:a < bf: hunbound: (x : ), x_1, a x_1 x_1 b x < |f x_1|x: := fun n => .choosehx: (n : ), a x n x n b n < |f (x n)|X:Set := Set.Icc a bhf:ContinuousOn f XFalse have hXclosed : IsClosed X := Icc_closed (a:b:h:a < bf: hunbound: (x : ), x_1, a x_1 x_1 b x < |f x_1|x: := fun n => .choosehx: (n : ), a x n x n b n < |f (x n)|X:Set := Set.Icc a bhf:ContinuousOn f Xa b All goals completed! 🐙) a:b:h:a < bf: hunbound: (x : ), x_1, a x_1 x_1 b x < |f x_1|x: := fun n => .choosehx: (n : ), a x n x n b n < |f (x n)|X:Set := Set.Icc a bhf:ContinuousOn f XhXclosed:IsClosed XhXbounded:Bornology.IsBounded XFalse have haX (n:): x n X := a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)BddOn f (Set.Icc a b) a:b:h:a < bf: hunbound: (x : ), x_1, a x_1 x_1 b x < |f x_1|x: := fun n => .choosehx: (n : ), a x n x n b n < |f (x n)|X:Set := Set.Icc a bhf:ContinuousOn f XhXclosed:IsClosed XhXbounded:Bornology.IsBounded Xn:a x n x n b; All goals completed! 🐙 a:b:h:a < bf: hunbound: (x : ), x_1, a x_1 x_1 b x < |f x_1|x: := fun n => .choosehx: (n : ), a x n x n b n < |f (x n)|X:Set := Set.Icc a bhf:ContinuousOn f XhXclosed:IsClosed XhXbounded:Bornology.IsBounded XhaX: (n : ), x n Xn: hn:StrictMono nL:hLX:L Xhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds L)False a:b:h:a < bf: hunbound: (x : ), x_1, a x_1 x_1 b x < |f x_1|x: := fun n => .choosehx: (n : ), a x n x n b n < |f (x n)|X:Set := Set.Icc a bhf:ContinuousOn f XhXclosed:IsClosed XhXbounded:Bornology.IsBounded XhaX: (n : ), x n Xn: hn:StrictMono nL:hLX:L Xhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds L)why: (j : ), n j jFalse a:b:h:a < bf: hunbound: (x : ), x_1, a x_1 x_1 b x < |f x_1|x: := fun n => .choosehx: (n : ), a x n x n b n < |f (x n)|X:Set := Set.Icc a bhXclosed:IsClosed XhXbounded:Bornology.IsBounded XhaX: (n : ), x n Xn: hn:StrictMono nL:hLX:L Xhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds L)why: (j : ), n j jhf:ContinuousWithinAt f X LFalse a:b:h:a < bf: hunbound: (x : ), x_1, a x_1 x_1 b x < |f x_1|x: := fun n => .choosehx: (n : ), a x n x n b n < |f (x n)|X:Set := Set.Icc a bhXclosed:IsClosed XhXbounded:Bornology.IsBounded XhaX: (n : ), x n Xn: hn:StrictMono nL:hLX:L Xhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds L)why: (j : ), n j jhf:Convergesto X f (f L) LFalse a:b:h:a < bf: hunbound: (x : ), x_1, a x_1 x_1 b x < |f x_1|x: := fun n => .choosehx: (n : ), a x n x n b n < |f (x n)|X:Set := Set.Icc a bhXclosed:IsClosed XhXbounded:Bornology.IsBounded XhaX: (n : ), x n Xn: hn:StrictMono nL:hLX:L Xhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds L)why: (j : ), n j jhf:Filter.Tendsto (fun n_1 => f (x (n n_1))) Filter.atTop (nhds (f L))False a:b:h:a < bf: hunbound: (x : ), x_1, a x_1 x_1 b x < |f x_1|x: := fun n => .choosehx: (n : ), a x n x n b n < |f (x n)|X:Set := Set.Icc a bhXclosed:IsClosed XhXbounded:Bornology.IsBounded XhaX: (n : ), x n Xn: hn:StrictMono nL:hLX:L Xhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds L)why: (j : ), n j jhf:Bornology.IsBounded (Set.range fun n_1 => f (x (n n_1)))False a:b:h:a < bf: hunbound: (x : ), x_1, a x_1 x_1 b x < |f x_1|x: := fun n => .choosehx: (n : ), a x n x n b n < |f (x n)|X:Set := Set.Icc a bhXclosed:IsClosed XhXbounded:Bornology.IsBounded XhaX: (n : ), x n Xn: hn:StrictMono nL:hLX:L Xhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds L)why: (j : ), n j jhf: M > 0, (Set.range fun n_1 => f (x (n n_1))) Set.Icc (-M) MFalse a:b:h:a < bf: hunbound: (x : ), x_1, a x_1 x_1 b x < |f x_1|x: := fun n => .choosehx: (n : ), a x n x n b n < |f (x n)|X:Set := Set.Icc a bhXclosed:IsClosed XhXbounded:Bornology.IsBounded XhaX: (n : ), x n Xn: hn:StrictMono nL:hLX:L Xhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds L)why: (j : ), n j jM:hpos:M > 0hM:(Set.range fun n_1 => f (x (n n_1))) Set.Icc (-M) MFalse a:b:h:a < bf: hunbound: (x : ), x_1, a x_1 x_1 b x < |f x_1|x: := fun n => .choosehx: (n : ), a x n x n b n < |f (x n)|X:Set := Set.Icc a bhXclosed:IsClosed XhXbounded:Bornology.IsBounded XhaX: (n : ), x n Xn: hn:StrictMono nL:hLX:L Xhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds L)why: (j : ), n j jM:hpos:M > 0hM:(Set.range fun n_1 => f (x (n n_1))) Set.Icc (-M) Mj:hj:M < jFalse a:b:h:a < bf: hunbound: (x : ), x_1, a x_1 x_1 b x < |f x_1|x: := fun n => .chooseX:Set := Set.Icc a bhXclosed:IsClosed XhXbounded:Bornology.IsBounded XhaX: (n : ), x n Xn: hn:StrictMono nL:hLX:L Xhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds L)why: (j : ), n j jM:hpos:M > 0hM:(Set.range fun n_1 => f (x (n n_1))) Set.Icc (-M) Mj:hj:M < jhx:(n j) < |f (x (n j))|False replace hM : f (x (n j)) Set.Icc (-M) M := a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)BddOn f (Set.Icc a b) a:b:h:a < bf: hunbound: (x : ), x_1, a x_1 x_1 b x < |f x_1|x: := fun n => .chooseX:Set := Set.Icc a bhXclosed:IsClosed XhXbounded:Bornology.IsBounded XhaX: (n : ), x n Xn: hn:StrictMono nL:hLX:L Xhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds L)why: (j : ), n j jM:hpos:M > 0hM:(Set.range fun n_1 => f (x (n n_1))) Set.Icc (-M) Mj:hj:M < jhx:(n j) < |f (x (n j))|f (x (n j)) Set.range fun n_1 => f (x (n n_1)); All goals completed! 🐙 a:b:h:a < bf: hunbound: (x : ), x_1, a x_1 x_1 b x < |f x_1|x: := fun n => .chooseX:Set := Set.Icc a bhXclosed:IsClosed XhXbounded:Bornology.IsBounded XhaX: (n : ), x n Xn: hn:StrictMono nL:hLX:L Xhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds L)why: (j : ), n j jM:hpos:M > 0j:hj:M < jhx:(n j) < |f (x (n j))|hM:|f (x (n j))| MFalse have : n j (j:) := a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)BddOn f (Set.Icc a b) All goals completed! 🐙 All goals completed! 🐙
/- Definition 9.6.5. Use the Mathlib `IsMaxOn` type. -/ isMaxOn_iff.{u, v} {α : Type u} {β : Type v} [Preorder β] {f : α → β} {s : Set α} {a : α} : IsMaxOn f s a ↔ ∀ x ∈ s, f x ≤ f a#check isMaxOn_iff
isMaxOn_iff.{u, v} {α : Type u} {β : Type v} [Preorder β] {f : α → β} {s : Set α} {a : α} :
  IsMaxOn f s a ↔ ∀ x ∈ s, f x ≤ f a
isMinOn_iff.{u, v} {α : Type u} {β : Type v} [Preorder β] {f : α → β} {s : Set α} {a : α} : IsMinOn f s a ↔ ∀ x ∈ s, f a ≤ f x#check isMinOn_iff
isMinOn_iff.{u, v} {α : Type u} {β : Type v} [Preorder β] {f : α → β} {s : Set α} {a : α} :
  IsMinOn f s a ↔ ∀ x ∈ s, f a ≤ f x

Ремарка 9.6.6

theorem declaration uses 'sorry'BddAboveOn.isMaxOn {f: } {X:Set } {x₀:} (h: IsMaxOn f X x₀): BddAboveOn f X := f: X:Set x₀:h:IsMaxOn f X x₀BddAboveOn f X All goals completed! 🐙
theorem declaration uses 'sorry'BddBelowOn.isMinOn {f: } {X:Set } {x₀:} (h: IsMinOn f X x₀): BddBelowOn f X := f: X:Set x₀:h:IsMinOn f X x₀BddBelowOn f X All goals completed! 🐙

Твердження 9.6.7 (Maximum principle)

theorem declaration uses 'sorry'IsMaxOn.of_continuous_on_compact {a b:} (h:a < b) {f: } (hf: ContinuousOn f (Set.Icc a b)) : xmax Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax := a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b) xmax Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax -- цей доказ написан так, щоб співпадати із структурою орігінального тексту. a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)hbound:BddOn f (Set.Icc a b) xmax Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| M xmax Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a b xmax Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax have hE : E Set.Icc (-M) M := a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b) xmax Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bx:hx:x Set.Icc a bf x Set.Icc (-M) M All goals completed! 🐙 have hnon : E := a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b) xmax Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) M¬Set.Icc a b = a:b:f: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mh:Set.Icc a b = b a a:b:f: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mh:¬a bb a All goals completed! 🐙 a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup E xmax Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y m xmax Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax a:b:h✝:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mh: xmax Set.Icc a b, f xmax = m xmax Set.Icc a b, IsMaxOn f (Set.Icc a b) xmaxa:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y m xmax Set.Icc a b, f xmax = m a:b:h✝:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mh: xmax Set.Icc a b, f xmax = m xmax Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax All goals completed! 🐙 have claim2 (n:) : x Set.Icc a b, m - 1/(n+1:) < f x := a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b) xmax Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax have : 1/(n+1:) > 0 := a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b) xmax Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax All goals completed! 🐙 replace : m - 1/(n+1:) < sSup E := a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b) xmax Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax All goals completed! 🐙 a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E.Nonemptym: := sSup Eclaim1: {y : }, y E y mn:this:m - 1 / (n + 1) < sSup E x Set.Icc a b, m - 1 / (n + 1) < f x a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E.Nonemptym: := sSup Eclaim1: {y : }, y E y mn:this: a E, m - 1 / (n + 1) < a x Set.Icc a b, m - 1 / (n + 1) < f x a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E.Nonemptym: := sSup Eclaim1: {y : }, y E y mn:this: a_1 Set.Icc a b, m - 1 / (n + 1) < f a_1 x Set.Icc a b, m - 1 / (n + 1) < f x All goals completed! 🐙 a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mclaim2: (n : ), x Set.Icc a b, m - 1 / (n + 1) < f xx: := fun n => .choose xmax Set.Icc a b, f xmax = m a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mclaim2: (n : ), x Set.Icc a b, m - 1 / (n + 1) < f xx: := fun n => .choosehx: (n : ), x n Set.Icc a b xmax Set.Icc a b, f xmax = m a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mclaim2: (n : ), x Set.Icc a b, m - 1 / (n + 1) < f xx: := fun n => .choosehx: (n : ), x n Set.Icc a bhfx: (n : ), m - 1 / (n + 1) < f (x n) xmax Set.Icc a b, f xmax = m have hclosed : IsClosed (Set.Icc a b) := Icc_closed (a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mclaim2: (n : ), x Set.Icc a b, m - 1 / (n + 1) < f xx: := fun n => .choosehx: (n : ), x n Set.Icc a bhfx: (n : ), m - 1 / (n + 1) < f (x n)a b All goals completed! 🐙) a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mclaim2: (n : ), x Set.Icc a b, m - 1 / (n + 1) < f xx: := fun n => .choosehx: (n : ), x n Set.Icc a bhfx: (n : ), m - 1 / (n + 1) < f (x n)hclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b) xmax Set.Icc a b, f xmax = m a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mclaim2: (n : ), x Set.Icc a b, m - 1 / (n + 1) < f xx: := fun n => .choosehx: (n : ), x n Set.Icc a bhfx: (n : ), m - 1 / (n + 1) < f (x n)hclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n: hn:StrictMono nxmax:hmax:xmax Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax) xmax Set.Icc a b, f xmax = m a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mclaim2: (n : ), x Set.Icc a b, m - 1 / (n + 1) < f xx: := fun n => .choosehx: (n : ), x n Set.Icc a bhfx: (n : ), m - 1 / (n + 1) < f (x n)hclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n: hn:StrictMono nxmax:hmax:xmax Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)f xmax = m a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mclaim2: (n : ), x Set.Icc a b, m - 1 / (n + 1) < f xx: := fun n => .choosehx: (n : ), x n Set.Icc a bhfx: (n : ), m - 1 / (n + 1) < f (x n)hclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n: hn:StrictMono nxmax:hmax:xmax Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower: (j : ), n j jf xmax = m a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mclaim2: (n : ), x Set.Icc a b, m - 1 / (n + 1) < f xx: := fun n => .choosehx: (n : ), x n Set.Icc a bhfx: (n : ), m - 1 / (n + 1) < f (x n)hclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n: hn:StrictMono nxmax:hmax:xmax Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower: (j : ), n j jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax))f xmax = m have hlower (j:) : m - 1/(j+1:) < f (x (n j)) := a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b) xmax Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mclaim2: (n : ), x Set.Icc a b, m - 1 / (n + 1) < f xx: := fun n => .choosehx: (n : ), x n Set.Icc a bhfx: (n : ), m - 1 / (n + 1) < f (x n)hclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n: hn:StrictMono nxmax:hmax:xmax Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower: (j : ), n j jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax))j:m - 1 / (j + 1) m - 1 / ((n j) + 1) a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mclaim2: (n : ), x Set.Icc a b, m - 1 / (n + 1) < f xx: := fun n => .choosehx: (n : ), x n Set.Icc a bhfx: (n : ), m - 1 / (n + 1) < f (x n)hclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n: hn:StrictMono nxmax:hmax:xmax Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower: (j : ), n j jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax))j:j n j All goals completed! 🐙 have hupper (j:) : f (x (n j)) m := a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b) xmax Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mclaim2: (n : ), x Set.Icc a b, m - 1 / (n + 1) < f xx: := fun n => .choosehx: (n : ), x n Set.Icc a bhfx: (n : ), m - 1 / (n + 1) < f (x n)hclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n: hn:StrictMono nxmax:hmax:xmax Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower: (j : ), n j jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax))hlower: (j : ), m - 1 / (j + 1) < f (x (n j))j:f (x (n j)) E a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mclaim2: (n : ), x Set.Icc a b, m - 1 / (n + 1) < f xx: := fun n => .choosehx: (n : ), x n Set.Icc a bhfx: (n : ), m - 1 / (n + 1) < f (x n)hclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n: hn:StrictMono nxmax:hmax:xmax Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower: (j : ), n j jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax))hlower: (j : ), m - 1 / (j + 1) < f (x (n j))j: x_1 Set.Icc a b, f x_1 = f (x (n j)) All goals completed! 🐙 have hconvm : Filter.Tendsto (fun j f (x (n j))) Filter.atTop (nhds m) := a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b) xmax Set.Icc a b, IsMaxOn f (Set.Icc a b) xmax a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mclaim2: (n : ), x Set.Icc a b, m - 1 / (n + 1) < f xx: := fun n => .choosehx: (n : ), x n Set.Icc a bhfx: (n : ), m - 1 / (n + 1) < f (x n)hclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n: hn:StrictMono nxmax:hmax:xmax Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower: (j : ), n j jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax))hlower: (j : ), m - 1 / (j + 1) < f (x (n j))hupper: (j : ), f (x (n j)) mFilter.Tendsto (fun j => m - 1 / (j + 1)) Filter.atTop (nhds m)a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mclaim2: (n : ), x Set.Icc a b, m - 1 / (n + 1) < f xx: := fun n => .choosehx: (n : ), x n Set.Icc a bhfx: (n : ), m - 1 / (n + 1) < f (x n)hclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n: hn:StrictMono nxmax:hmax:xmax Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower: (j : ), n j jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax))hlower: (j : ), m - 1 / (j + 1) < f (x (n j))hupper: (j : ), f (x (n j)) mFilter.Tendsto (fun j => m) Filter.atTop (nhds m)a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mclaim2: (n : ), x Set.Icc a b, m - 1 / (n + 1) < f xx: := fun n => .choosehx: (n : ), x n Set.Icc a bhfx: (n : ), m - 1 / (n + 1) < f (x n)hclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n: hn:StrictMono nxmax:hmax:xmax Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower: (j : ), n j jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax))hlower: (j : ), m - 1 / (j + 1) < f (x (n j))hupper: (j : ), f (x (n j)) m(fun j => m - 1 / (j + 1)) fun j => f (x (n j))a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mclaim2: (n : ), x Set.Icc a b, m - 1 / (n + 1) < f xx: := fun n => .choosehx: (n : ), x n Set.Icc a bhfx: (n : ), m - 1 / (n + 1) < f (x n)hclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n: hn:StrictMono nxmax:hmax:xmax Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower: (j : ), n j jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax))hlower: (j : ), m - 1 / (j + 1) < f (x (n j))hupper: (j : ), f (x (n j)) m(fun j => f (x (n j))) fun j => m a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mclaim2: (n : ), x Set.Icc a b, m - 1 / (n + 1) < f xx: := fun n => .choosehx: (n : ), x n Set.Icc a bhfx: (n : ), m - 1 / (n + 1) < f (x n)hclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n: hn:StrictMono nxmax:hmax:xmax Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower: (j : ), n j jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax))hlower: (j : ), m - 1 / (j + 1) < f (x (n j))hupper: (j : ), f (x (n j)) mFilter.Tendsto (fun j => m - 1 / (j + 1)) Filter.atTop (nhds m) a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mclaim2: (n : ), x Set.Icc a b, m - 1 / (n + 1) < f xx: := fun n => .choosehx: (n : ), x n Set.Icc a bhfx: (n : ), m - 1 / (n + 1) < f (x n)hclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n: hn:StrictMono nxmax:hmax:xmax Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower: (j : ), n j jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax))hlower: (j : ), m - 1 / (j + 1) < f (x (n j))hupper: (j : ), f (x (n j)) mm = m - 0a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mclaim2: (n : ), x Set.Icc a b, m - 1 / (n + 1) < f xx: := fun n => .choosehx: (n : ), x n Set.Icc a bhfx: (n : ), m - 1 / (n + 1) < f (x n)hclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n: hn:StrictMono nxmax:hmax:xmax Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower: (j : ), n j jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax))hlower: (j : ), m - 1 / (j + 1) < f (x (n j))hupper: (j : ), f (x (n j)) mFilter.Tendsto (fun j => 1 / (j + 1)) Filter.atTop (nhds 0) a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mclaim2: (n : ), x Set.Icc a b, m - 1 / (n + 1) < f xx: := fun n => .choosehx: (n : ), x n Set.Icc a bhfx: (n : ), m - 1 / (n + 1) < f (x n)hclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n: hn:StrictMono nxmax:hmax:xmax Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower: (j : ), n j jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax))hlower: (j : ), m - 1 / (j + 1) < f (x (n j))hupper: (j : ), f (x (n j)) mm = m - 0 All goals completed! 🐙 All goals completed! 🐙 a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mclaim2: (n : ), x Set.Icc a b, m - 1 / (n + 1) < f xx: := fun n => .choosehx: (n : ), x n Set.Icc a bhfx: (n : ), m - 1 / (n + 1) < f (x n)hclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n: hn:StrictMono nxmax:hmax:xmax Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower: (j : ), n j jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax))hlower: (j : ), m - 1 / (j + 1) < f (x (n j))hupper: (j : ), f (x (n j)) mFilter.Tendsto (fun j => m) Filter.atTop (nhds m) All goals completed! 🐙 a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mclaim2: (n : ), x Set.Icc a b, m - 1 / (n + 1) < f xx: := fun n => .choosehx: (n : ), x n Set.Icc a bhfx: (n : ), m - 1 / (n + 1) < f (x n)hclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n: hn:StrictMono nxmax:hmax:xmax Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower: (j : ), n j jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax))hlower: (j : ), m - 1 / (j + 1) < f (x (n j))hupper: (j : ), f (x (n j)) m(fun j => m - 1 / (j + 1)) fun j => f (x (n j)) a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)M:hM: x Set.Icc a b, |f x| ME:Set := f '' Set.Icc a bhE:E Set.Icc (-M) Mhnon:E m: := sSup Eclaim1: {y : }, y E y mclaim2: (n : ), x Set.Icc a b, m - 1 / (n + 1) < f xx: := fun n => .choosehx: (n : ), x n Set.Icc a bhfx: (n : ), m - 1 / (n + 1) < f (x n)hclosed:IsClosed (Set.Icc a b)hbounded:Bornology.IsBounded (Set.Icc a b)n: hn:StrictMono nxmax:hmax:xmax Set.Icc a bhconv:Filter.Tendsto (fun j => x (n j)) Filter.atTop (nhds xmax)hn_lower: (j : ), n j jhconv':Filter.Tendsto (fun j => f (x (n j))) Filter.atTop (nhds (f xmax))hlower: (j : ), m - 1 / (j + 1) < f (x (n j))hupper: (j : ), f (x (n j)) mj:(fun j => m - 1 / (j + 1)) j (fun j => f (x (n j))) j; All goals completed! 🐙 All goals completed! 🐙 All goals completed! 🐙
theorem declaration uses 'sorry'IsMinOn.of_continuous_on_compact {a b:} (h:a < b) {f: } (hf: ContinuousOn f (Set.Icc a b)) : xmin Set.Icc a b, IsMinOn f (Set.Icc a b) xmin := a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b) xmin Set.Icc a b, IsMinOn f (Set.Icc a b) xmin All goals completed! 🐙declaration uses 'sorry'example : IsMaxOn (fun x x^2) (Set.Icc (-2) 2) 2 := IsMaxOn (fun x => x ^ 2) (Set.Icc (-2) 2) 2 All goals completed! 🐙declaration uses 'sorry'example : IsMaxOn (fun x x^2) (Set.Icc (-2) 2) (-2) := IsMaxOn (fun x => x ^ 2) (Set.Icc (-2) 2) (-2) All goals completed! 🐙theorem sSup.of_isMaxOn {f: } {X:Set } {x₀:} (hx₀: x₀ X) (h: IsMaxOn f X x₀) : sSup (f '' X) = f x₀ := f: X:Set x₀:hx₀:x₀ Xh:IsMaxOn f X x₀sSup (f '' X) = f x₀ f: X:Set x₀:hx₀:x₀ Xh:IsMaxOn f X x₀IsGreatest (f '' X) (f x₀) f: X:Set x₀:hx₀:x₀ Xh:IsMaxOn f X x₀(∃ x X, f x = f x₀) a X, f a f x₀ All goals completed! 🐙theorem sInf.of_isMinOn {f: } {X:Set } {x₀:} (hx₀: x₀ X) (h: IsMinOn f X x₀) : sInf (f '' X) = f x₀ := f: X:Set x₀:hx₀:x₀ Xh:IsMinOn f X x₀sInf (f '' X) = f x₀ f: X:Set x₀:hx₀:x₀ Xh:IsMinOn f X x₀IsLeast (f '' X) (f x₀) f: X:Set x₀:hx₀:x₀ Xh:IsMinOn f X x₀(∃ x X, f x = f x₀) a X, f x₀ f a All goals completed! 🐙theorem sSup.of_continuous_on_compact {a b:} (h:a < b) (f: ) (hf: ContinuousOn f (Set.Icc a b)) : xmax Set.Icc a b, sSup (f '' Set.Icc a b) = f xmax := a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b) xmax Set.Icc a b, sSup (f '' Set.Icc a b) = f xmax a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)xmax:hmax:xmax Set.Icc a bhhas:IsMaxOn f (Set.Icc a b) xmax xmax Set.Icc a b, sSup (f '' Set.Icc a b) = f xmax All goals completed! 🐙theorem sInf.of_continuous_on_compact {a b:} (h:a < b) (f: ) (hf: ContinuousOn f (Set.Icc a b)) : xmin Set.Icc a b, sInf (f '' Set.Icc a b) = f xmin := a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b) xmin Set.Icc a b, sInf (f '' Set.Icc a b) = f xmin a:b:h:a < bf: hf:ContinuousOn f (Set.Icc a b)xmin:hmin:xmin Set.Icc a bhhas:IsMinOn f (Set.Icc a b) xmin xmin Set.Icc a b, sInf (f '' Set.Icc a b) = f xmin All goals completed! 🐙

Вправа 9.6.1

declaration uses 'sorry'example : f: , ContinuousOn f (Set.Ioo 1 2) BddOn f (Set.Ioo 1 2) x₀ Set.Ioo 1 2, IsMinOn f (Set.Ioo 1 2) x₀ ¬ x₀ Set.Ioo 1 2, IsMaxOn f (Set.Ioo 1 2) x₀ := f, ContinuousOn f (Set.Ioo 1 2) BddOn f (Set.Ioo 1 2) x₀ Set.Ioo 1 2, IsMinOn f (Set.Ioo 1 2) x₀ ¬ x₀ Set.Ioo 1 2, IsMaxOn f (Set.Ioo 1 2) x₀ All goals completed! 🐙

Вправа 9.6.1

declaration uses 'sorry'example : f: , ContinuousOn f (Set.Ioo 1 2) BddOn f (Set.Ioo 1 2) x₀ Set.Ioo 1 2, IsMaxOn f (Set.Ioo 1 2) x₀ ¬ x₀ Set.Ioo 1 2, IsMinOn f (Set.Ioo 1 2) x₀ := f, ContinuousOn f (Set.Ioo 1 2) BddOn f (Set.Ioo 1 2) x₀ Set.Ioo 1 2, IsMaxOn f (Set.Ioo 1 2) x₀ ¬ x₀ Set.Ioo 1 2, IsMinOn f (Set.Ioo 1 2) x₀ All goals completed! 🐙

Вправа 9.6.1

declaration uses 'sorry'example : f: , BddOn f (Set.Icc (-1) 1) ¬ x₀ Set.Icc (-1) 1, IsMinOn f (Set.Icc (-1) 1) x₀ ¬ x₀ Set.Icc (-1) 1, IsMaxOn f (Set.Icc (-1) 1) x₀ := f, BddOn f (Set.Icc (-1) 1) ¬ x₀ Set.Icc (-1) 1, IsMinOn f (Set.Icc (-1) 1) x₀ ¬ x₀ Set.Icc (-1) 1, IsMaxOn f (Set.Icc (-1) 1) x₀ All goals completed! 🐙

Вправа 9.6.1

declaration uses 'sorry'example : f: , ¬ BddAboveOn f (Set.Icc (-1) 1) ¬ BddBelowOn f (Set.Icc (-1) 1) := f, ¬BddAboveOn f (Set.Icc (-1) 1) ¬BddBelowOn f (Set.Icc (-1) 1) All goals completed! 🐙
end Chapter9