Documentation

Mathlib.Analysis.Asymptotics.ExpGrowth

Exponential growth #

This file defines the exponential growth of a sequence u : ℕ → ℝ≥0∞. This notion comes in two versions, using a liminf and a limsup respectively.

Main definitions #

Tags #

asymptotics, exponential

Definition #

noncomputable def ExpGrowth.expGrowthInf (u : ℕ → ENNReal) :

Lower exponential growth of a sequence of extended nonnegative real numbers.

Equations
Instances For
    noncomputable def ExpGrowth.expGrowthSup (u : ℕ → ENNReal) :

    Upper exponential growth of a sequence of extended nonnegative real numbers.

    Equations
    Instances For

      Basic properties #

      theorem ExpGrowth.expGrowthInf_le_iff {u : ℕ → ENNReal} {a : EReal} :
      expGrowthInf u ≤ a ↔ ∀ b > a, ∃ᶠ (n : ℕ) in Filter.atTop, u n ≤ (b * ↑n).exp
      theorem ExpGrowth.le_expGrowthInf_iff {u : ℕ → ENNReal} {a : EReal} :
      a ≤ expGrowthInf u ↔ ∀ b < a, ∀ᶠ (n : ℕ) in Filter.atTop, (b * ↑n).exp ≤ u n
      theorem ExpGrowth.expGrowthSup_le_iff {u : ℕ → ENNReal} {a : EReal} :
      expGrowthSup u ≤ a ↔ ∀ b > a, ∀ᶠ (n : ℕ) in Filter.atTop, u n ≤ (b * ↑n).exp
      theorem ExpGrowth.le_expGrowthSup_iff {u : ℕ → ENNReal} {a : EReal} :
      a ≤ expGrowthSup u ↔ ∀ b < a, ∃ᶠ (n : ℕ) in Filter.atTop, (b * ↑n).exp ≤ u n
      theorem ExpGrowth.frequently_le_exp {u : ℕ → ENNReal} {a : EReal} (h : expGrowthInf u < a) :
      ∃ᶠ (n : ℕ) in Filter.atTop, u n ≤ (a * ↑n).exp
      theorem ExpGrowth.eventually_exp_le {u : ℕ → ENNReal} {a : EReal} (h : a < expGrowthInf u) :
      ∀ᶠ (n : ℕ) in Filter.atTop, (a * ↑n).exp ≤ u n
      theorem ExpGrowth.eventually_le_exp {u : ℕ → ENNReal} {a : EReal} (h : expGrowthSup u < a) :
      ∀ᶠ (n : ℕ) in Filter.atTop, u n ≤ (a * ↑n).exp
      theorem ExpGrowth.frequently_exp_le {u : ℕ → ENNReal} {a : EReal} (h : a < expGrowthSup u) :
      ∃ᶠ (n : ℕ) in Filter.atTop, (a * ↑n).exp ≤ u n

      Special cases #

      theorem ExpGrowth.expGrowthInf_const {b : ENNReal} (h : b ≠ 0) (h' : b ≠ ⊤) :
      (expGrowthInf fun (x : ℕ) => b) = 0
      theorem ExpGrowth.expGrowthSup_const {b : ENNReal} (h : b ≠ 0) (h' : b ≠ ⊤) :
      (expGrowthSup fun (x : ℕ) => b) = 0
      theorem ExpGrowth.expGrowthInf_pow {b : ENNReal} :
      (expGrowthInf fun (n : ℕ) => b ^ n) = b.log
      theorem ExpGrowth.expGrowthSup_pow {b : ENNReal} :
      (expGrowthSup fun (n : ℕ) => b ^ n) = b.log
      theorem ExpGrowth.expGrowthInf_exp {a : EReal} :
      (expGrowthInf fun (n : ℕ) => (a * ↑n).exp) = a
      theorem ExpGrowth.expGrowthSup_exp {a : EReal} :
      (expGrowthSup fun (n : ℕ) => (a * ↑n).exp) = a

      Multiplication and inversion #

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

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

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

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

      Comparison #

      Infimum and supremum #

      Lower exponential growth as an InfTopHom.

      Equations
      Instances For
        theorem ExpGrowth.expGrowthInf_biInf {α : Type u_1} (u : α → ℕ → ENNReal) {s : Set α} (hs : s.Finite) :
        expGrowthInf (⨅ x ∈ s, u x) = ⨅ x ∈ s, expGrowthInf (u x)
        theorem ExpGrowth.expGrowthInf_iInf {ι : Type u_1} [Finite ι] (u : ι → ℕ → ENNReal) :
        expGrowthInf (⨅ (i : ι), u i) = ⨅ (i : ι), expGrowthInf (u i)

        Upper exponential growth as a SupBotHom.

        Equations
        Instances For
          theorem ExpGrowth.expGrowthSup_biSup {α : Type u_1} (u : α → ℕ → ENNReal) {s : Set α} (hs : s.Finite) :
          expGrowthSup (⨆ x ∈ s, u x) = ⨆ x ∈ s, expGrowthSup (u x)
          theorem ExpGrowth.expGrowthSup_iSup {ι : Type u_1} [Finite ι] (u : ι → ℕ → ENNReal) :
          expGrowthSup (⨆ (i : ι), u i) = ⨆ (i : ι), expGrowthSup (u i)

          Addition #

          theorem ExpGrowth.expGrowthSup_sum {α : Type u_1} (u : α → ℕ → ENNReal) (s : Finset α) :
          expGrowthSup (∑ x ∈ s, u x) = ⨆ x ∈ s, expGrowthSup (u x)

          Composition #

          theorem ExpGrowth.expGrowthSup_comp_le {u : ℕ → ENNReal} {v : ℕ → ℕ} (hu : ∃ᶠ (n : ℕ) in Filter.atTop, 1 ≤ u n) (hv₀ : (LinearGrowth.linearGrowthSup fun (n : ℕ) => ↑(v n)) ≠ 0) (hv₁ : (LinearGrowth.linearGrowthSup fun (n : ℕ) => ↑(v n)) ≠ ⊤) (hv₂ : Filter.Tendsto v Filter.atTop Filter.atTop) :

          Monotone sequences #

          theorem Monotone.expGrowthInf_comp_le {u : ℕ → ENNReal} {v : ℕ → ℕ} (h : Monotone u) (hv₀ : (LinearGrowth.linearGrowthSup fun (n : ℕ) => ↑(v n)) ≠ 0) (hv₁ : (LinearGrowth.linearGrowthSup fun (n : ℕ) => ↑(v n)) ≠ ⊤) :
          theorem Monotone.le_expGrowthSup_comp {u : ℕ → ENNReal} {v : ℕ → ℕ} (h : Monotone u) (hv : (LinearGrowth.linearGrowthInf fun (n : ℕ) => ↑(v n)) ≠ 0) :
          theorem Monotone.expGrowthInf_comp {u : ℕ → ENNReal} {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.expGrowthSup_comp {u : ℕ → ENNReal} {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.expGrowthInf_comp_mul {u : ℕ → ENNReal} {m : ℕ} (h : Monotone u) (hm : m ≠ 0) :
          (ExpGrowth.expGrowthInf fun (n : ℕ) => u (m * n)) = ↑m * ExpGrowth.expGrowthInf u
          theorem Monotone.expGrowthSup_comp_mul {u : ℕ → ENNReal} {m : ℕ} (h : Monotone u) (hm : m ≠ 0) :
          (ExpGrowth.expGrowthSup fun (n : ℕ) => u (m * n)) = ↑m * ExpGrowth.expGrowthSup u