Documentation

Analysis.Section_7_1

Аналіз I, Розділ 7.1: Скінченні ряди #

Я (прим. перекл. Терренс Тао) намагався зробити переклад якомога точнішим перефразуванням оригінального тексту. Коли є вибір між більш ідіоматичним підходом Lean та більш точним перекладом, я зазвичай обирав останній. Зокрема, будуть місця, де код Lean можна було б "підправити", щоб зробити його більш елегантним та ідіоматичним, але я свідомо уникав цього вибору.

Технічна примітка: у Lean зручно поширювати скінченні послідовності (зазвичай доповнюючи нулями) до функцій на всіх цілих числах.

Основні конструкції та результати цього розділу:

Ми не намагаємося відтворити повний API Finset.sum тут, але в наступних розділах широко користуватимемося цим 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. Це схоже на Mathlib's Finset.sum_Icc_succ_top, тільки там сума береться по натуральних числах, а не по цілих.

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

Твердження 7.1.8.

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

Цей факт гарантує, що Визначення 7.1.6 буде коректним навіть без звертання до існуючого методу Finset.sum.

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

Технічна лема, що пов'язує суму по finset із сумою по fintype. Добре поєднується з інструментами такими як map_finite_series нижче.

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 (Теорема Фубіні для скінченних сум)

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 (x y : ) (n : ) :
(x + y) ^ n = jIcc 0 n, n.factorial / (j.toNat.factorial * (n - j).toNat.factorial) * x ^ j * y ^ (n - j)

Вправа 7.1.4. Примітка: можуть виникнути технічні питання при переходах між натуральними числами і цілими. Ознайомтеся з тактиками zify, norm_cast і 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