Documentation

Analysis.Section_6_1

Analysis I, Section 6.1: Convergence and limit laws #

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:

@[reducible, inline]
abbrev Real.Close (ε x y : ) :
Equations
Instances For
    theorem Real.close_def (ε x y : ) :
    ε.Close x y dist x y ε

    Definition 6.1.2 (ε-close). This is similar to the previous notion of ε-closeness, but where all quantities are real instead of rational.

    Definition 6.1.3 (Sequence). This is similar to the Chapter 5 sequence, except that now the sequence is real-valued. As with Chapter 5, we start sequences from 0 by default.

    Instances For
      theorem Chapter6.Sequence.ext_iff {x y : Sequence} :
      x = y x.m = y.m x.seq = y.seq
      theorem Chapter6.Sequence.ext {x y : Sequence} (m : x.m = y.m) (seq : x.seq = y.seq) :
      x = y

      Sequences can be thought of as functions from ℤ to ℝ.

      Equations
      @[reducible, inline]
      Equations
      Instances For

        Functions from ℕ to ℝ can be thought of as sequences.

        Equations
        @[reducible, inline]
        abbrev Chapter6.Sequence.mk' (m : ) (a : { n : // n m }) :
        Equations
        Instances For
          theorem Chapter6.Sequence.eval_mk {n m : } (a : { n : // n m }) (h : n m) :
          (mk' m a).seq n = a n, h
          @[simp]
          theorem Chapter6.Sequence.eval_coe (n : ) (a : ) :
          (↑a).seq n = a n
          @[reducible, inline]

          a.from n₁ starts a:Sequence from n₁. It is intended for use when n₁ ≥ n₀, but returns the "junk" value of the original sequence a otherwise.

          Equations
          Instances For
            theorem Chapter6.Sequence.from_eval (a : Sequence) {m₁ n : } (hn : n m₁) :
            (a.from m₁).seq n = a.seq n
            @[reducible, inline]
            abbrev Real.Steady (ε : ) (a : Chapter6.Sequence) :

            Definition 6.1.3 (ε-steady)

            Equations
            Instances For
              theorem Real.steady_def (ε : ) (a : Chapter6.Sequence) :
              ε.Steady a na.m, ma.m, ε.Close (a.seq n) (a.seq m)

              Definition 6.1.3 (ε-steady)

              @[reducible, inline]

              Definition 6.1.3 (Eventually ε-steady)

              Equations
              Instances For
                theorem Real.eventuallySteady_def (ε : ) (a : Chapter6.Sequence) :
                ε.EventuallySteady a Na.m, ε.Steady (a.from N)

                Definition 6.1.3 (Eventually ε-steady)

                theorem Real.Steady.mono {a : Chapter6.Sequence} {ε₁ ε₂ : } ( : ε₁ ε₂) (hsteady : ε₁.Steady a) :
                ε₂.Steady a

                For fixed s, the function ε ↦ ε.Steady s is monotone

                theorem Real.EventuallySteady.mono {a : Chapter6.Sequence} {ε₁ ε₂ : } ( : ε₁ ε₂) (hsteady : ε₁.EventuallySteady a) :

                For fixed s, the function ε ↦ ε.EventuallySteady s is monotone

                @[reducible, inline]

                Definition 6.1.3 (Cauchy sequence)

                Equations
                Instances For

                  Definition 6.1.3 (Cauchy sequence)

                  theorem Chapter6.Sequence.IsCauchy.coe (a : ) :
                  (↑a).IsCauchy ε > 0, ∃ (N : ), jN, kN, dist (a j) (a k) ε

                  This is almost the same as Chapter5.Sequence.IsCauchy.coe

                  theorem Chapter6.Sequence.IsCauchy.mk {n₀ : } (a : { n : // n n₀ }) :
                  (mk' n₀ a).IsCauchy ε > 0, Nn₀, jN, kN, dist ((mk' n₀ a).seq j) ((mk' n₀ a).seq k) ε
                  @[reducible, inline]
                  Equations
                  • a = { m := a.n₀, seq := fun (n : ) => (a.seq n), vanish := }
                  Instances For
                    @[simp]
                    theorem Chapter6.Chapter5.coe_sequence_eval (a : Chapter5.Sequence) (n : ) :
                    (↑a).seq n = (a.seq n)
                    @[reducible, inline]
                    abbrev Real.CloseSeq (ε : ) (a : Chapter6.Sequence) (L : ) :

                    Definition 6.1.5

                    Equations
                    Instances For
                      theorem Real.closeSeq_def (ε : ) (a : Chapter6.Sequence) (L : ) :
                      ε.CloseSeq a L na.m, dist (a.seq n) L ε

                      Definition 6.1.5

                      @[reducible, inline]

                      Definition 6.1.5

                      Equations
                      Instances For
                        theorem Real.eventuallyClose_def (ε : ) (a : Chapter6.Sequence) (L : ) :
                        ε.EventuallyClose a L Na.m, ε.CloseSeq (a.from N) L

                        Definition 6.1.5

                        theorem Real.CloseSeq.coe (ε : ) (a : ) (L : ) :
                        ε.CloseSeq (↑a) L ∀ (n : ), dist (a n) L ε
                        theorem Real.CloseSeq.mono {a : Chapter6.Sequence} {ε₁ ε₂ L : } ( : ε₁ ε₂) (hclose : ε₁.CloseSeq a L) :
                        ε₂.CloseSeq a L
                        theorem Real.EventuallyClose.mono {a : Chapter6.Sequence} {ε₁ ε₂ L : } ( : ε₁ ε₂) (hclose : ε₁.EventuallyClose a L) :
                        ε₂.EventuallyClose a L
                        @[reducible, inline]
                        Equations
                        Instances For
                          theorem Chapter6.Sequence.tendsTo_def (a : Sequence) (L : ) :
                          a.TendsTo L ε > 0, ε.EventuallyClose a L
                          theorem Chapter6.Sequence.tendsTo_iff (a : Sequence) (L : ) :
                          a.TendsTo L ε > 0, ∃ (N : ), nN, |a.seq n - L| ε

                          Exercise 6.1.2

                          noncomputable def Chapter6.seq_6_1_6 :
                          Equations
                          Instances For
                            theorem Chapter6.Sequence.tendsTo_unique (a : Sequence) {L L' : } (h : L L') :
                            ¬(a.TendsTo L a.TendsTo L')

                            Proposition 6.1.7 (Uniqueness of limits)

                            @[reducible, inline]

                            Definition 6.1.8

                            Equations
                            Instances For

                              Definition 6.1.8

                              @[reducible, inline]

                              Definition 6.1.8

                              Equations
                              Instances For
                                @[reducible, inline]
                                noncomputable abbrev Chapter6.lim (a : Sequence) :

                                Definition 6.1.8. We give the limit of a sequence the junk value of 0 if it is not convergent.

                                Equations
                                Instances For

                                  Definition 6.1.8

                                  Definition 6.1.8

                                  theorem Chapter6.Sequence.lim_harmonic :
                                  (↑fun (n : ) => (n + 1)⁻¹).Convergent (lim fun (n : ) => (n + 1)⁻¹) = 0

                                  Proposition 6.1.11

                                  Proposition 6.1.12 / Exercise 6.1.5

                                  theorem Chapter6.Sequence.lim_eq_LIM {a : } (h : (↑a).IsCauchy) :

                                  Proposition 6.1.15 / Exercise 6.1.6 (Formal limits are genuine limits)

                                  @[reducible, inline]

                                  Definition 6.1.16

                                  Equations
                                  Instances For
                                    theorem Chapter6.Sequence.boundedBy_def (a : Sequence) (M : ) :
                                    a.BoundedBy M ∀ (n : ), |a.seq n| M

                                    Definition 6.1.16

                                    @[reducible, inline]

                                    Definition 6.1.16

                                    Equations
                                    Instances For

                                      Definition 6.1.16

                                      Equations
                                      @[simp]
                                      theorem Chapter6.Sequence.add_eval {a b : Sequence} (n : ) :
                                      (a + b).seq n = a.seq n + b.seq n
                                      theorem Chapter6.Sequence.add_coe (a b : ) :
                                      a + b = fun (n : ) => a n + b n
                                      theorem Chapter6.Sequence.tendsTo_add {a b : Sequence} {L M : } (ha : a.TendsTo L) (hb : b.TendsTo M) :
                                      (a + b).TendsTo (L + M)

                                      Theorem 6.1.19(a) (limit laws). The tendsTo version is more usable than the lim version in applications.

                                      theorem Chapter6.Sequence.lim_add {a b : Sequence} (ha : a.Convergent) (hb : b.Convergent) :
                                      (a + b).Convergent lim (a + b) = lim a + lim b
                                      Equations
                                      @[simp]
                                      theorem Chapter6.Sequence.mul_eval {a b : Sequence} (n : ) :
                                      (a * b).seq n = a.seq n * b.seq n
                                      theorem Chapter6.Sequence.mul_coe (a b : ) :
                                      a * b = fun (n : ) => a n * b n
                                      theorem Chapter6.Sequence.tendsTo_mul {a b : Sequence} {L M : } (ha : a.TendsTo L) (hb : b.TendsTo M) :
                                      (a * b).TendsTo (L * M)

                                      Theorem 6.1.19(b) (limit laws). The tendsTo version is more usable than the lim version in applications.

                                      theorem Chapter6.Sequence.lim_mul {a b : Sequence} (ha : a.Convergent) (hb : b.Convergent) :
                                      (a * b).Convergent lim (a * b) = lim a * lim b
                                      Equations
                                      @[simp]
                                      theorem Chapter6.Sequence.smul_eval {a : Sequence} (c : ) (n : ) :
                                      (c a).seq n = c * a.seq n
                                      theorem Chapter6.Sequence.smul_coe (c : ) (a : ) :
                                      c a = fun (n : ) => c * a n
                                      theorem Chapter6.Sequence.tendsTo_smul (c : ) {a : Sequence} {L : } (ha : a.TendsTo L) :
                                      (c a).TendsTo (c * L)

                                      Theorem 6.1.19(c) (limit laws). The tendsTo version is more usable than the lim version in applications.

                                      theorem Chapter6.Sequence.lim_smul (c : ) {a : Sequence} (ha : a.Convergent) :
                                      (c a).Convergent lim (c a) = c * lim a
                                      Equations
                                      @[simp]
                                      theorem Chapter6.Sequence.sub_eval {a b : Sequence} (n : ) :
                                      (a - b).seq n = a.seq n - b.seq n
                                      theorem Chapter6.Sequence.sub_coe (a b : ) :
                                      a - b = fun (n : ) => a n - b n
                                      theorem Chapter6.Sequence.tendsTo_sub {a b : Sequence} {L M : } (ha : a.TendsTo L) (hb : b.TendsTo M) :
                                      (a - b).TendsTo (L - M)

                                      Theorem 6.1.19(d) (limit laws). The tendsTo version is more usable than the lim version in applications.

                                      theorem Chapter6.Sequence.LIM_sub {a b : Sequence} (ha : a.Convergent) (hb : b.Convergent) :
                                      (a - b).Convergent lim (a - b) = lim a - lim b
                                      noncomputable instance Chapter6.Sequence.inst_inv :
                                      Equations
                                      @[simp]
                                      theorem Chapter6.Sequence.inv_eval {a : Sequence} (n : ) :
                                      a⁻¹.seq n = (a.seq n)⁻¹
                                      theorem Chapter6.Sequence.inv_coe (a : ) :
                                      (↑a)⁻¹ = fun (n : ) => (a n)⁻¹
                                      theorem Chapter6.Sequence.tendsTo_inv {a : Sequence} {L : } (ha : a.TendsTo L) (hnon : L 0) :

                                      Theorem 6.1.19(e) (limit laws). The tendsTo version is more usable than the lim version in applications.

                                      noncomputable instance Chapter6.Sequence.inst_div :
                                      Equations
                                      @[simp]
                                      theorem Chapter6.Sequence.div_eval {a b : Sequence} (n : ) :
                                      (a / b).seq n = a.seq n / b.seq n
                                      theorem Chapter6.Sequence.div_coe (a b : ) :
                                      a / b = fun (n : ) => a n / b n
                                      theorem Chapter6.Sequence.tendsTo_div {a b : Sequence} {L M : } (ha : a.TendsTo L) (hb : b.TendsTo M) (hnon : M 0) :
                                      (a / b).TendsTo (L / M)

                                      Theorem 6.1.19(f) (limit laws). The tendsTo version is more usable than the lim version in applications.

                                      theorem Chapter6.Sequence.lim_div {a b : Sequence} (ha : a.Convergent) (hb : b.Convergent) (hnon : lim b 0) :
                                      (a / b).Convergent lim (a / b) = lim a / lim b
                                      Equations
                                      @[simp]
                                      theorem Chapter6.Sequence.max_eval {a b : Sequence} (n : ) :
                                      (ab).seq n = max (a.seq n) (b.seq n)
                                      theorem Chapter6.Sequence.max_coe (a b : ) :
                                      ab = fun (n : ) => max (a n) (b n)
                                      theorem Chapter6.Sequence.tendsTo_max {a b : Sequence} {L M : } (ha : a.TendsTo L) (hb : b.TendsTo M) :
                                      (ab).TendsTo (max L M)

                                      Theorem 6.1.19(g) (limit laws). The tendsTo version is more usable than the lim version in applications.

                                      theorem Chapter6.Sequence.lim_max {a b : Sequence} (ha : a.Convergent) (hb : b.Convergent) :
                                      (ab).Convergent lim (ab) = max (lim a) (lim b)
                                      Equations
                                      @[simp]
                                      theorem Chapter6.Sequence.min_eval {a b : Sequence} (n : ) :
                                      (ab).seq n = min (a.seq n) (b.seq n)
                                      theorem Chapter6.Sequence.min_coe (a b : ) :
                                      ab = fun (n : ) => min (a n) (b n)
                                      theorem Chapter6.Sequence.tendsTo_min {a b : Sequence} {L M : } (ha : a.TendsTo L) (hb : b.TendsTo M) :
                                      (ab).TendsTo (min L M)

                                      Theorem 6.1.19(h) (limit laws)

                                      theorem Chapter6.Sequence.lim_min {a b : Sequence} (ha : a.Convergent) (hb : b.Convergent) :
                                      (ab).Convergent lim (ab) = min (lim a) (lim b)
                                      theorem Chapter6.Sequence.mono_if {a : } (ha : ∀ (n : ), a (n + 1) > a n) {n m : } (hnm : m > n) :
                                      a m > a n

                                      Exercise 6.1.1

                                      theorem Chapter6.Sequence.tendsTo_of_from {a : Sequence} {c : } (m : ) :
                                      a.TendsTo c (a.from m).TendsTo c

                                      Exercise 6.1.3

                                      theorem Chapter6.Sequence.tendsTo_of_shift {a : Sequence} {c : } (k : ) :
                                      a.TendsTo c (mk' a.m fun (n : { n : // n a.m }) => a.seq (n + k)).TendsTo c

                                      Exercise 6.1.4

                                      Exercise 6.1.9

                                      theorem Chapter6.Chapter5.Sequence.IsCauchy_iff (a : Chapter5.Sequence) :
                                      a.IsCauchy ε > 0, Na.n₀, nN, mN, |a.seq n - a.seq m| ε
                                      @[reducible, inline]
                                      Equations
                                      Instances For
                                        @[reducible, inline]
                                        Equations
                                        Instances For
                                          @[reducible, inline]
                                          Equations
                                          Instances For