Documentation

Mathlib.Computability.AkraBazzi.GrowsPolynomially

Akra-Bazzi theorem: the polynomial growth condition #

This file defines and develops an API for the polynomial growth condition that appears in the statement of the Akra-Bazzi theorem: for the theorem to hold, the function g must satisfy the condition that c₁ g(n) ≤ g(u) ≤ c₂ g(n), for u between b*n and n for any constant b ∈ (0,1).

Implementation notes #

Our definition requires that the condition hold for any b ∈ (0,1). This is equivalent to requiring it only for b = 1 / 2 (or any other particular value in (0, 1)). While this could, in principle, make it harder to prove that a particular function grows polynomially, this issue does not seem to arise in practice.

The growth condition that the function g must satisfy for the Akra-Bazzi theorem to apply. It roughly states that c₁ g(n) ≤ g(u) ≤ c₂ g(n), for u between b * n and n, for any constant b ∈ (0, 1).

Equations
Instances For
    theorem AkraBazziRecurrence.GrowsPolynomially.eventually_atTop_le {f : ℝ → ℝ} {b : ℝ} (hb : b ∈ Set.Ioo 0 1) (hf : GrowsPolynomially f) :
    ∃ c > 0, ∀ᶠ (x : ℝ) in Filter.atTop, ∀ u ∈ Set.Icc (b * x) x, f u ≤ c * f x
    theorem AkraBazziRecurrence.GrowsPolynomially.eventually_atTop_le_nat {f : ℝ → ℝ} {b : ℝ} (hb : b ∈ Set.Ioo 0 1) (hf : GrowsPolynomially f) :
    ∃ c > 0, ∀ᶠ (n : ℕ) in Filter.atTop, ∀ u ∈ Set.Icc (b * ↑n) ↑n, f u ≤ c * f ↑n
    theorem AkraBazziRecurrence.GrowsPolynomially.eventually_atTop_ge {f : ℝ → ℝ} {b : ℝ} (hb : b ∈ Set.Ioo 0 1) (hf : GrowsPolynomially f) :
    ∃ c > 0, ∀ᶠ (x : ℝ) in Filter.atTop, ∀ u ∈ Set.Icc (b * x) x, c * f x ≤ f u
    theorem AkraBazziRecurrence.GrowsPolynomially.eventually_atTop_ge_nat {f : ℝ → ℝ} {b : ℝ} (hb : b ∈ Set.Ioo 0 1) (hf : GrowsPolynomially f) :
    ∃ c > 0, ∀ᶠ (n : ℕ) in Filter.atTop, ∀ u ∈ Set.Icc (b * ↑n) ↑n, c * f ↑n ≤ f u
    theorem AkraBazziRecurrence.GrowsPolynomially.rpow {f : ℝ → ℝ} (p : ℝ) (hf : GrowsPolynomially f) (hf_nonneg : ∀ᶠ (x : ℝ) in Filter.atTop, 0 ≤ f x) :
    GrowsPolynomially fun (x : ℝ) => f x ^ p
    theorem AkraBazziRecurrence.GrowsPolynomially.pow {f : ℝ → ℝ} (p : ℕ) (hf : GrowsPolynomially f) (hf_nonneg : ∀ᶠ (x : ℝ) in Filter.atTop, 0 ≤ f x) :
    GrowsPolynomially fun (x : ℝ) => f x ^ p
    theorem AkraBazziRecurrence.GrowsPolynomially.zpow {f : ℝ → ℝ} (p : ℤ) (hf : GrowsPolynomially f) (hf_nonneg : ∀ᶠ (x : ℝ) in Filter.atTop, 0 ≤ f x) :
    GrowsPolynomially fun (x : ℝ) => f x ^ p