Documentation

Analysis.Section_7_1

Аналіз I, Глава 7.1 #

I have attempted to make the translation as faithful a paraphrasing as possible of the original text. hen 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.

Technical note: it is convenient in Lean to extend finite sequences (usually by zero) to be functions on the entire integers.

Main constructions and results of this section:

We do not attempt to replicate the full API for Finset.sum here, but in subsequent sections we shall make liberal use of this API.

theorem Finset.sum_of_empty {n m : } (h : n < m) (a : ) :
iIcc m n, a i = 0

Визначення 7.1.1

theorem Finset.sum_of_nonempty {n m : } (h : n m - 1) (a : ) :
iIcc m (n + 1), a i = iIcc m n, a i + a (n + 1)

Визначення 7.1.1. This is similar to Mathlib's Finset.sum_Icc_succ_top except that the latter involves summation over the natural numbers rather than integers.

theorem Finset.concat_finite_series {m n p : } (hmn : m n + 1) (hpn : n p) (a : ) :
iIcc m n, a i + iIcc (n + 1) p, a i = iIcc m p, a i

Лема 7.1.4(a) / Вправа 7.1.1

theorem Finset.shift_finite_series {m n k : } (a : ) :
iIcc m n, a i = iIcc (m + k) (n + k), a (i - k)

Лема 7.1.4(b) / Вправа 7.1.1

theorem Finset.finite_series_add {m n : } (a b : ) :
iIcc m n, (a i + b i) = iIcc m n, a i + iIcc m n, b i

Лема 7.1.4(c) / Вправа 7.1.1

theorem Finset.finite_series_const_mul {m n : } (a : ) (c : ) :
iIcc m n, c * a i = c * iIcc m n, a i

Лема 7.1.4(d) / Вправа 7.1.1

theorem Finset.abs_finite_series_le {m n : } (a : ) (c : ) :
|iIcc m n, a i| iIcc m n, |a i|

Лема 7.1.4(e) / Вправа 7.1.1

theorem Finset.finite_series_of_le {m n : } {a b : } (h : ∀ (i : ), m ii na i b i) :
iIcc m n, a i iIcc m n, b i

Лема 7.1.4(f) / Вправа 7.1.1

theorem Finset.finite_series_of_rearrange {n : } {X' : Type u_1} (X : Finset X') (hcard : X.card = n) (f : X') (g h : { x : // x Icc 1 n }{ x : X' // x X }) (hg : Function.Bijective g) (hh : Function.Bijective h) :
(∑ iIcc 1 n, if hi : i Icc 1 n then f (g i, hi) else 0) = iIcc 1 n, if hi : i Icc 1 n then f (h i, hi) else 0

Proposition 7.1.8. There is an unfortunate hack here in that one needs to extend the expressions f g i and f h i outside of Icc 1 n, leading to a certain uglification of the code.

theorem Finset.exist_bijection {n : } {Y : Type u_1} (X : Finset Y) (hcard : X.card = n) :
∃ (g : { x : // x Icc 1 n }{ x : Y // x X }), Function.Bijective g

This fact ensures that Definition 7.1.6 would be well-defined even if we did not appeal to the existing Finset.sum method.

theorem Finset.finite_series_eq {n : } {Y : Type u_1} (X : Finset Y) (f : Y) (g : { x : // x Icc 1 n }{ x : Y // x X }) (hg : Function.Bijective g) :
iX, f i = iIcc 1 n, if hi : i Icc 1 n then f (g i, hi) else 0

Визначення 7.1.6

theorem Finset.finite_series_of_empty {X' : Type u_1} (f : X') :
i, f i = 0

Твердження 7.1.11(a) / Вправа 7.1.2

theorem Finset.finite_series_of_singleton {X' : Type u_1} (f : X') (x₀ : X') :
i{x₀}, f i = f x₀

Твердження 7.1.11(b) / Вправа 7.1.2

theorem Finset.finite_series_of_fintype {X' : Type u_1} (f : X') (X : Finset X') :
xX, f x = x : { x : X' // x X }, f x

A technical lemma relating a sum over a finset with a sum over a fintype. Combines well with tools such as map_finite_series below.

theorem Finset.map_finite_series {Y : Type u_2} {X : Type u_1} [Fintype X] [Fintype Y] (f : X) {g : YX} (hg : Function.Bijective g) :
x : X, f x = y : Y, f (g y)

Твердження 7.1.11(c) / Вправа 7.1.2

theorem Finset.finite_series_of_disjoint_union {Z : Type u_1} {X Y : Finset Z} (hdisj : Disjoint X Y) (f : Z) :
zX Y, f z = zX, f z + zY, f z

Твердження 7.1.11(e) / Вправа 7.1.2

theorem Finset.finite_series_of_add {X' : Type u_1} (f g : X') (X : Finset X') :
xX, (f + g) x = xX, f x + xX, g x

Твердження 7.1.11(f) / Вправа 7.1.2

theorem Finset.finite_series_of_const_mul {X' : Type u_1} (f : X') (X : Finset X') (c : ) :
xX, c * f x = c * xX, f x

Твердження 7.1.11(g) / Вправа 7.1.2

theorem Finset.finite_series_of_le' {X' : Type u_1} (f g : X') (X : Finset X') (h : xX, f x g x) :
xX, f x xX, g x

Твердження 7.1.11(h) / Вправа 7.1.2

theorem Finset.abs_finite_series_le' {X' : Type u_1} (f : X') (X : Finset X') :
|xX, f x| xX, |f x|

Твердження 7.1.11(i) / Вправа 7.1.2

theorem Finset.finite_series_of_finite_series {XX : Type u_1} {YY : Type u_2} (X : Finset XX) (Y : Finset YY) (f : XX × YY) :
xX, yY, f (x, y) = zX.product Y, f z

Лема 7.1.13 -

theorem Finset.finite_series_refl {XX : Type u_1} {YY : Type u_2} (X : Finset XX) (Y : Finset YY) (f : XX × YY) :
zX.product Y, f z = zY.product X, f (z.2, z.1)

Наслідок 7.1.14 (Fubini's theorem for finite series)

theorem Finset.finite_series_comm {XX : Type u_1} {YY : Type u_2} (X : Finset XX) (Y : Finset YY) (f : XX × YY) :
xX, yY, f (x, y) = yY, xX, f (x, y)
theorem Finset.binomial_theorem {k : } (x y : ) (n : ) :
(x + y) ^ n = jIcc 0 n, n.factorial / (j.toNat.factorial * (n - j).toNat.factorial) * x ^ k * y ^ (n - k)

Вправа 7.1.4. Note: there may be some technicalities passing back and forth between natural numbers and integers. Look into the tactics zify, norm_cast, and omega

theorem Finset.lim_of_finite_series {X : Type u_1} [Fintype X] (a : X) (L : X) (h : ∀ (x : X), Filter.Tendsto (a x) Filter.atTop (nhds (L x))) :
Filter.Tendsto (fun (n : ) => x : X, a x n) Filter.atTop (nhds (∑ x : X, L x))

Вправа 7.1.5