Documentation

Mathlib.Analysis.Asymptotics.LinearGrowth

Linear growth #

This file defines the linear growth of a sequence u : ℕ → R. This notion comes in two versions, using a liminf and a limsup respectively. Most properties are developed for R = EReal.

Main definitions #

TODO #

Generalize statements from EReal to ENNReal (or others). This may need additional typeclasses.

Lemma about coercion from ENNReal to EReal. This needs additional lemmas about ENNReal.toEReal.

Definition #

noncomputable def LinearGrowth.linearGrowthInf {R : Type u_1} [ConditionallyCompleteLattice R] [Div R] [NatCast R] (u : R) :
R

Lower linear growth of a sequence.

Equations
    Instances For
      noncomputable def LinearGrowth.linearGrowthSup {R : Type u_1} [ConditionallyCompleteLattice R] [Div R] [NatCast R] (u : R) :
      R

      Upper linear growth of a sequence.

      Equations
        Instances For

          Basic properties #

          theorem LinearGrowth.linearGrowthInf_le_linearGrowthSup {R : Type u_1} [ConditionallyCompleteLattice R] [Div R] [NatCast R] {u : R} (h : Filter.IsBoundedUnder (fun (x1 x2 : R) => x1 x2) Filter.atTop fun (n : ) => u n / n := by isBoundedDefault) (h' : Filter.IsBoundedUnder (fun (x1 x2 : R) => x1 x2) Filter.atTop fun (n : ) => u n / n := by isBoundedDefault) :
          theorem LinearGrowth.linearGrowthInf_le_iff {u : EReal} {a : EReal} :
          linearGrowthInf u a b > a, ∃ᶠ (n : ) in Filter.atTop, u n b * n
          theorem LinearGrowth.le_linearGrowthInf_iff {u : EReal} {a : EReal} :
          a linearGrowthInf u b < a, ∀ᶠ (n : ) in Filter.atTop, b * n u n
          theorem LinearGrowth.linearGrowthSup_le_iff {u : EReal} {a : EReal} :
          linearGrowthSup u a b > a, ∀ᶠ (n : ) in Filter.atTop, u n b * n
          theorem LinearGrowth.le_linearGrowthSup_iff {u : EReal} {a : EReal} :
          a linearGrowthSup u b < a, ∃ᶠ (n : ) in Filter.atTop, b * n u n
          theorem LinearGrowth.frequently_le_mul {u : EReal} {a : EReal} (h : linearGrowthInf u < a) :
          ∃ᶠ (n : ) in Filter.atTop, u n a * n
          theorem LinearGrowth.eventually_mul_le {u : EReal} {a : EReal} (h : a < linearGrowthInf u) :
          ∀ᶠ (n : ) in Filter.atTop, a * n u n
          theorem LinearGrowth.eventually_le_mul {u : EReal} {a : EReal} (h : linearGrowthSup u < a) :
          ∀ᶠ (n : ) in Filter.atTop, u n a * n
          theorem LinearGrowth.frequently_mul_le {u : EReal} {a : EReal} (h : a < linearGrowthSup u) :
          ∃ᶠ (n : ) in Filter.atTop, a * n u n

          Special cases #

          theorem LinearGrowth.linearGrowthInf_const {b : EReal} (h : b ) (h' : b ) :
          (linearGrowthInf fun (x : ) => b) = 0
          theorem LinearGrowth.linearGrowthSup_const {b : EReal} (h : b ) (h' : b ) :
          (linearGrowthSup fun (x : ) => b) = 0

          Addition and negation #

          See le_linearGrowthSup_add' for a version with swapped argument u and v.

          See le_linearGrowthSup_add for a version with swapped argument u and v.

          Affine bounds #

          Infimum and supremum #

          Lower linear growth as an InfTopHom.

          Equations
            Instances For
              theorem LinearGrowth.linearGrowthInf_biInf {α : Type u_1} (u : αEReal) {s : Set α} (hs : s.Finite) :
              linearGrowthInf (⨅ xs, u x) = xs, linearGrowthInf (u x)
              theorem LinearGrowth.linearGrowthInf_iInf {ι : Type u_1} [Finite ι] (u : ιEReal) :
              linearGrowthInf (⨅ (i : ι), u i) = ⨅ (i : ι), linearGrowthInf (u i)

              Upper linear growth as a SupBotHom.

              Equations
                Instances For
                  theorem LinearGrowth.linearGrowthSup_biSup {α : Type u_1} (u : αEReal) {s : Set α} (hs : s.Finite) :
                  linearGrowthSup (⨆ xs, u x) = xs, linearGrowthSup (u x)
                  theorem LinearGrowth.linearGrowthSup_iSup {ι : Type u_1} [Finite ι] (u : ιEReal) :
                  linearGrowthSup (⨆ (i : ι), u i) = ⨆ (i : ι), linearGrowthSup (u i)

                  Composition #

                  theorem LinearGrowth.Real.eventually_atTop_exists_int_between {a b : } (h : a < b) :
                  ∀ᶠ (x : ) in Filter.atTop, ∃ (n : ), a * x n n b * x
                  theorem LinearGrowth.Real.eventually_atTop_exists_nat_between {a b : } (h : a < b) (hb : 0 b) :
                  ∀ᶠ (x : ) in Filter.atTop, ∃ (n : ), a * x n n b * x
                  theorem LinearGrowth.EReal.eventually_atTop_exists_nat_between {a b : EReal} (h : a < b) (hb : 0 b) :
                  ∀ᶠ (n : ) in Filter.atTop, ∃ (m : ), a * n m m b * n
                  theorem LinearGrowth.linearGrowthSup_comp_le {u : EReal} {v : } (hu : ∃ᶠ (n : ) in Filter.atTop, 0 u n) (hv₀ : (linearGrowthSup fun (n : ) => (v n)) 0) (hv₁ : (linearGrowthSup fun (n : ) => (v n)) ) (hv₂ : Filter.Tendsto v Filter.atTop Filter.atTop) :
                  linearGrowthSup (u v) (linearGrowthSup fun (n : ) => (v n)) * linearGrowthSup u

                  Monotone sequences #

                  theorem Monotone.linearGrowthInf_comp_le {u : EReal} {v : } (h : Monotone u) (hv₀ : (LinearGrowth.linearGrowthSup fun (n : ) => (v n)) 0) (hv₁ : (LinearGrowth.linearGrowthSup fun (n : ) => (v n)) ) :
                  theorem Monotone.linearGrowthInf_comp {u : EReal} {v : } {a : EReal} (h : Monotone u) (hv : Filter.Tendsto (fun (n : ) => (v n) / n) Filter.atTop (nhds a)) (ha : a 0) (ha' : a ) :
                  theorem Monotone.linearGrowthSup_comp {u : EReal} {v : } {a : EReal} (h : Monotone u) (hv : Filter.Tendsto (fun (n : ) => (v n) / n) Filter.atTop (nhds a)) (ha : a 0) (ha' : a ) :
                  theorem Monotone.linearGrowthInf_comp_mul {u : EReal} {m : } (h : Monotone u) (hm : m 0) :
                  theorem Monotone.linearGrowthSup_comp_mul {u : EReal} {m : } (h : Monotone u) (hm : m 0) :