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 developped 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) :