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 #
expGrowthInf,expGrowthSup: respectively,liminfandlimsupoflog (u n) / n.expGrowthInfTopHom,expGrowthSupBotHom: the functionsexpGrowthInf,expGrowthSupas homomorphisms preserving finitaryInf/Suprespectively.
Tags #
asymptotics, exponential
Definition #
Lower exponential growth of a sequence of extended nonnegative real numbers.
Equations
- ExpGrowth.expGrowthInf u = Filter.liminf (fun (n : ℕ) => (u n).log / ↑n) Filter.atTop
Instances For
Upper exponential growth of a sequence of extended nonnegative real numbers.
Equations
- ExpGrowth.expGrowthSup u = Filter.limsup (fun (n : ℕ) => (u n).log / ↑n) Filter.atTop
Instances For
Basic properties #
theorem ExpGrowth.expGrowthInf_le_expGrowthSup_of_frequently_le {u v : ℕ → ENNReal} (h : ∃ᶠ (n : ℕ) in Filter.atTop, u n ≤ v n) :
Special cases #
Multiplication and inversion #
theorem ExpGrowth.expGrowthInf_mul_le {u v : ℕ → ENNReal} (h : expGrowthSup u ≠ ⊥ ∨ expGrowthInf v ≠ ⊤) (h' : expGrowthSup u ≠ ⊤ ∨ expGrowthInf v ≠ ⊥) :
See expGrowthInf_mul_le' for a version with swapped argument u and v.
theorem ExpGrowth.expGrowthInf_mul_le' {u v : ℕ → ENNReal} (h : expGrowthInf u ≠ ⊥ ∨ expGrowthSup v ≠ ⊤) (h' : expGrowthInf u ≠ ⊤ ∨ expGrowthSup 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.
theorem ExpGrowth.expGrowthSup_mul_le {u v : ℕ → ENNReal} (h : expGrowthSup u ≠ ⊥ ∨ expGrowthSup v ≠ ⊤) (h' : expGrowthSup u ≠ ⊤ ∨ expGrowthSup v ≠ ⊥) :
Comparison #
Infimum and supremum #
Lower exponential growth as an InfTopHom.
Equations
- ExpGrowth.expGrowthInfTopHom = { toFun := ExpGrowth.expGrowthInf, map_inf' := ⋯, map_top' := ExpGrowth.expGrowthInf_top }
Instances For
Upper exponential growth as a SupBotHom.
Equations
- ExpGrowth.expGrowthSupBotHom = { toFun := ExpGrowth.expGrowthSup, map_sup' := ⋯, map_bot' := ExpGrowth.expGrowthSup_zero }
Instances For
Addition #
Composition #
theorem ExpGrowth.le_expGrowthInf_comp {u : ℕ → ENNReal} {v : ℕ → ℕ} (hu : 1 ≤ᶠ[Filter.atTop] u) (hv : Filter.Tendsto v Filter.atTop Filter.atTop) :
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 ExpGrowth.expGrowthInf_comp_nonneg {u : ℕ → ENNReal} {v : ℕ → ℕ} (h : Monotone u) (h' : u ≠ 0) (hv : Filter.Tendsto v Filter.atTop Filter.atTop) :
theorem ExpGrowth.expGrowthSup_comp_nonneg {u : ℕ → ENNReal} {v : ℕ → ℕ} (h : Monotone u) (h' : u ≠ 0) (hv : Filter.Tendsto v Filter.atTop Filter.atTop) :
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)) ≠ ⊤) :
ExpGrowth.expGrowthInf (u ∘ v) ≤ (LinearGrowth.linearGrowthSup fun (n : ℕ) => ↑(v n)) * ExpGrowth.expGrowthInf u
theorem Monotone.le_expGrowthSup_comp {u : ℕ → ENNReal} {v : ℕ → ℕ} (h : Monotone u) (hv : (LinearGrowth.linearGrowthInf fun (n : ℕ) => ↑(v n)) ≠ 0) :
(LinearGrowth.linearGrowthInf fun (n : ℕ) => ↑(v n)) * ExpGrowth.expGrowthSup u ≤ ExpGrowth.expGrowthSup (u ∘ v)
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 ≠ ⊤) :