Documentation

Analysis.Section_8_2

Аналіз I, Розділ 8.2: Підсумовування на нескінченних множинах #

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

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

Надано деякі нетривіальні API, що доповнюють матеріал підручника і пов'язують ці поняття з існуючими поняттями підсумовування.

Після цього розділу позначення для підсумовування, розроблене тут, буде застаріле на користь API Mathlib для Summable і tsum.

@[reducible, inline]
abbrev Chapter8.AbsConvergent {X : Type} (f : X) :

Визначення 8.2.1 (Ряди на лічильних множинах). Зверніть увагу, що з цією дефініцією функції, визначені на скінчених множинах, не будуть абсолютно збіжними; для таких випадків слід використовувати випадки AbsConvergent'.

Equations
Instances For
    theorem Chapter8.AbsConvergent.mk {X : Type} {f : X} {g : X} (h : Function.Bijective g) (hfg : { m := 0, seq := fun (n : ) => if n 0 then (f g) n.toNat else 0, vanish := }.absConverges) :
    @[reducible, inline]
    noncomputable abbrev Chapter8.Sum {X : Type} (f : X) :

    Дефініція була обрана таким чином, щоб давати змістовне значення, коли X скінченна, навіть якщо AbsConvergent за визначенням є хибним у цьому контексті.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      theorem Chapter8.Sum.of_finite {X : Type} [hX : Finite X] (f : X) :
      Sum f = x : X, f x
      theorem Chapter8.AbsConvergent.comp {X : Type} {f : X} {g : X} (h : Function.Bijective g) (hf : AbsConvergent f) :
      { m := 0, seq := fun (n : ) => if n 0 then (f g) n.toNat else 0, vanish := }.absConverges
      theorem Chapter8.Sum.eq {X : Type} {f : X} {g : X} (h : Function.Bijective g) (hfg : { m := 0, seq := fun (n : ) => if n 0 then (f g) n.toNat else 0, vanish := }.absConverges) :
      { m := 0, seq := fun (n : ) => if n 0 then (f g) n.toNat else 0, vanish := }.convergesTo (Sum f)
      theorem Chapter8.Sum.of_comp {X Y : Type} {f : X} (h : AbsConvergent f) {g : YX} (hbij : Function.Bijective g) :
      AbsConvergent (f g) Sum f = Sum (f g)
      theorem Chapter8.sum_of_sum_of_AbsConvergent_nonneg {f : × } (hf : AbsConvergent f) (hpos : ∀ (n m : ), 0 f (n, m)) :
      (∀ (n : ), { m := 0, seq := fun (n_1 : ) => if n_1 0 then (fun (m : ) => f (n, m)) n_1.toNat else 0, vanish := }.converges) { m := 0, seq := fun (n : ) => if n 0 then (fun (n : ) => { m := 0, seq := fun (n_1 : ) => if n_1 0 then (fun (m : ) => f (n, m)) n_1.toNat else 0, vanish := }.sum) n.toNat else 0, vanish := }.convergesTo (Sum f)

      Теорема 8.2.2, попередня версія. Аргументи тут трохи переставлені порівняно з текстом.

      theorem Chapter8.sum_of_sum_of_AbsConvergent {f : × } (hf : AbsConvergent f) :
      (∀ (n : ), { m := 0, seq := fun (n_1 : ) => if n_1 0 then (fun (m : ) => f (n, m)) n_1.toNat else 0, vanish := }.absConverges) { m := 0, seq := fun (n : ) => if n 0 then (fun (n : ) => { m := 0, seq := fun (n_1 : ) => if n_1 0 then (fun (m : ) => f (n, m)) n_1.toNat else 0, vanish := }.sum) n.toNat else 0, vanish := }.convergesTo (Sum f)

      Теорема 8.2.2, друга версія

      theorem Chapter8.sum_of_sum_of_AbsConvergent' {f : × } (hf : AbsConvergent f) :
      (∀ (m : ), { m := 0, seq := fun (n : ) => if n 0 then (fun (n : ) => f (n, m)) n.toNat else 0, vanish := }.absConverges) { m := 0, seq := fun (n : ) => if n 0 then (fun (m : ) => { m := 0, seq := fun (n : ) => if n 0 then (fun (n : ) => f (n, m)) n.toNat else 0, vanish := }.sum) n.toNat else 0, vanish := }.convergesTo (Sum f)

      Теорема 8.2.2, третя версія

      theorem Chapter8.sum_comm {f : × } (hf : AbsConvergent f) :
      { m := 0, seq := fun (n : ) => if n 0 then (fun (n : ) => { m := 0, seq := fun (n_1 : ) => if n_1 0 then (fun (m : ) => f (n, m)) n_1.toNat else 0, vanish := }.sum) n.toNat else 0, vanish := }.sum = { m := 0, seq := fun (n : ) => if n 0 then (fun (m : ) => { m := 0, seq := fun (n : ) => if n 0 then (fun (n : ) => f (n, m)) n.toNat else 0, vanish := }.sum) n.toNat else 0, vanish := }.sum

      Теорема 8.2.2, четверта версія

      theorem Chapter8.AbsConvergent.iff {X : Type} (hX : CountablyInfinite X) (f : X) :
      AbsConvergent f BddAbove ((fun (A : Finset X) => xA, |f x|) '' Set.univ)

      Лема 8.2.3 / Вправа 8.2.1

      @[reducible, inline]
      abbrev Chapter8.AbsConvergent' {X : Type} (f : X) :
      Equations
      Instances For

        Не в підручнику, але мала б бути включена.

        theorem Chapter8.AbsConvergent'.countable_supp {X : Type} {f : X} (hf : AbsConvergent' f) :
        AtMostCountable {x : X | f x 0}

        Лема 8.2.5 / Вправа 8.2.2

        theorem Chapter8.AbsConvergent'.subtype {X : Type} {f : X} (hf : AbsConvergent' f) (A : Set X) :
        AbsConvergent' fun (x : A) => f x

        Порівняйте із Mathlib-овським Summable.subtype

        @[reducible, inline]
        noncomputable abbrev Chapter8.Sum' {X : Type} (f : X) :

        Узагальнена сума. Зверніть увагу, що це дасть некоректні значення, якщо f не є AbsConvergent'.

        Equations
        Instances For
          theorem Chapter8.Sum'.of_finsupp {X : Type} {f : X} {A : Finset X} (h : xA, f x = 0) :
          Sum' f = xA, f x

          Не в підручнику, але мала б бути включена (закони рядів значно важче встановити без цього).

          theorem Chapter8.Sum'.of_countable_supp {X : Type} {f : X} {A : Set X} (hA : CountablyInfinite A) (hfA : xA, f x = 0) (hconv : AbsConvergent' f) :
          (AbsConvergent' fun (x : A) => f x) Sum' f = Sum fun (x : A) => f x

          Не в підручнику, але мала б бути включена (закони рядів значно важче встановити без цього).

          Зв'язок з властивістю Summable Mathlib. Можлива якась версія доказу може бути підходящою для Mathlib?

          Можливо, підходить для перенесення в Mathlib?

          theorem Chapter8.Sum'.eq_tsum {X : Type} (f : X) (h : AbsConvergent' f) :
          Sum' f = ∑' (x : X), f x

          Зв'язок з операцією tsum (або Σ') Mathlib.

          theorem Chapter8.Sum'.add {X : Type} {f g : X} (hf : AbsConvergent' f) (hg : AbsConvergent' g) :
          AbsConvergent' (f + g) Sum' (f + g) = Sum' f + Sum' g

          Твердження 8.2.6 (a) (Закони для абсолютно збіжних рядів) / Вправа 8.2.3

          theorem Chapter8.Sum'.smul {X : Type} {f : X} (hf : AbsConvergent' f) (c : ) :
          AbsConvergent' (c f) Sum' (c f) = c * Sum' f

          Твердження 8.2.6 (b) (Закони для абсолютно збіжних рядів) / Вправа 8.2.3

          theorem Chapter8.Sum'.sub {X : Type} {f g : X} (hf : AbsConvergent' f) (hg : AbsConvergent' g) :
          AbsConvergent' (f - g) Sum' (f - g) = Sum' f - Sum' g

          Цей закон не вказаний явно в Твердженні 8.2.6, але легко випливає з частин (a) та (b).

          theorem Chapter8.Sum'.of_disjoint_union {X : Type} {f : X} (hf : AbsConvergent' f) {X₁ X₂ : Set X} (hdisj : Disjoint X₁ X₂) :
          (Sum' fun (x : ↑(X₁ X₂)) => f x) = (Sum' fun (x : X₁) => f x) + Sum' fun (x : X₂) => f x

          Твердження 8.2.6 (c) (Закони для абсолютно збіжних рядів) / Вправа 8.2.3. Перша частина цього твердження була переміщена до AbsConvergent'.subtype.

          theorem Chapter8.Sum'.of_univ {X : Type} {f : X} (hf : AbsConvergent' f) :
          (Sum' fun (x : Set.univ) => f x) = Sum' f

          Це технічне твердження, аналог tsum_univ, необхідне через те, як Mathlib обробляє множини.

          theorem Chapter8.Sum'.of_comp {X Y : Type} {f : X} (hf : AbsConvergent' f) {φ : YX} ( : Function.Bijective φ) :
          AbsConvergent' (f φ) Sum' f = Sum' (f φ)
          theorem Chapter8.divergent_parts_of_divergent {a : } (ha : { m := 0, seq := fun (n : ) => if n 0 then a n.toNat else 0, vanish := }.converges) (ha' : ¬{ m := 0, seq := fun (n : ) => if n 0 then a n.toNat else 0, vanish := }.absConverges) :
          (¬AbsConvergent fun (n : {n : | a n 0}) => a n) ¬AbsConvergent fun (n : {n : | a n < 0}) => a n

          Лема 8.2.7 / Вправа 8.2.4

          theorem Chapter8.permute_convergesTo_of_divergent {a : } (ha : { m := 0, seq := fun (n : ) => if n 0 then a n.toNat else 0, vanish := }.converges) (ha' : ¬{ m := 0, seq := fun (n : ) => if n 0 then a n.toNat else 0, vanish := }.absConverges) (L : ) :
          ∃ (f : ), Function.Bijective f { m := 0, seq := fun (n : ) => if n 0 then (a f) n.toNat else 0, vanish := }.convergesTo L

          Теорема 8.2.8 (Теорема Рімана про перестановку) / Вправа 8.2.5

          theorem Chapter8.permute_diverges_of_divergent {a : } (ha : { m := 0, seq := fun (n : ) => if n 0 then a n.toNat else 0, vanish := }.converges) (ha' : ¬{ m := 0, seq := fun (n : ) => if n 0 then a n.toNat else 0, vanish := }.absConverges) :
          ∃ (f : ), Function.Bijective f Filter.Tendsto (fun (N : ) => ({ m := 0, seq := fun (n : ) => if n 0 then (a f) n.toNat else 0, vanish := }.partial N)) Filter.atTop (nhds )

          Вправа 8.2.6

          theorem Chapter8.permute_diverges_of_divergent' {a : } (ha : { m := 0, seq := fun (n : ) => if n 0 then a n.toNat else 0, vanish := }.converges) (ha' : ¬{ m := 0, seq := fun (n : ) => if n 0 then a n.toNat else 0, vanish := }.absConverges) :
          ∃ (f : ), Function.Bijective f Filter.Tendsto (fun (N : ) => ({ m := 0, seq := fun (n : ) => if n 0 then (a f) n.toNat else 0, vanish := }.partial N)) Filter.atTop (nhds )