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 #
linearGrowthInf,linearGrowthSup: respectively,liminfandlimsupof(u n) / n.linearGrowthInfTopHom,linearGrowthSupBotHom: the functionslinearGrowthInf,linearGrowthSupas homomorphisms preserving finitaryInf/Suprespectively.
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_congr
{R : Type u_1}
[ConditionallyCompleteLattice R]
[Div R]
[NatCast R]
{u v : โ โ R}
(h : u =แถ [Filter.atTop] v)
:
theorem
LinearGrowth.linearGrowthSup_congr
{R : Type u_1}
[ConditionallyCompleteLattice R]
[Div R]
[NatCast R]
{u v : โ โ R}
(h : u =แถ [Filter.atTop] v)
:
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_eventually_monotone
{u v : โ โ EReal}
(h : u โคแถ [Filter.atTop] v)
:
theorem
LinearGrowth.linearGrowthSup_eventually_monotone
{u v : โ โ EReal}
(h : u โคแถ [Filter.atTop] v)
:
theorem
LinearGrowth.linearGrowthInf_le_linearGrowthSup_of_frequently_le
{u v : โ โ EReal}
(h : โแถ (n : โ) in Filter.atTop, u n โค v n)
:
theorem
LinearGrowth.frequently_le_mul
{u : โ โ EReal}
{a : EReal}
(h : linearGrowthInf u < a)
:
theorem
LinearGrowth.eventually_mul_le
{u : โ โ EReal}
{a : EReal}
(h : a < linearGrowthInf u)
:
theorem
LinearGrowth.eventually_le_mul
{u : โ โ EReal}
{a : EReal}
(h : linearGrowthSup u < a)
:
theorem
LinearGrowth.frequently_mul_le
{u : โ โ EReal}
{a : EReal}
(h : a < linearGrowthSup u)
:
Special cases #
theorem
LinearGrowth.tendsto_atTop_of_linearGrowthInf_pos
{u : โ โ EReal}
(h : 0 < linearGrowthInf u)
:
Addition and negation #
theorem
LinearGrowth.linearGrowthInf_add_le
{u v : โ โ EReal}
(h : linearGrowthSup u โ โฅ โจ linearGrowthInf v โ โค)
(h' : linearGrowthSup u โ โค โจ linearGrowthInf v โ โฅ)
:
See linearGrowthInf_add_le' for a version with swapped argument u and v.
theorem
LinearGrowth.linearGrowthInf_add_le'
{u v : โ โ EReal}
(h : linearGrowthInf u โ โฅ โจ linearGrowthSup v โ โค)
(h' : linearGrowthInf u โ โค โจ linearGrowthSup v โ โฅ)
:
See linearGrowthInf_add_le for a version with swapped argument u and v.
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.
theorem
LinearGrowth.linearGrowthSup_add_le
{u v : โ โ EReal}
(h : linearGrowthSup u โ โฅ โจ linearGrowthSup v โ โค)
(h' : linearGrowthSup u โ โค โจ linearGrowthSup v โ โฅ)
:
Affine bounds #
Infimum and supremum #
Composition #
theorem
LinearGrowth.tendsto_atTop_of_linearGrowthInf_natCast_pos
{v : โ โ โ}
(h : (linearGrowthInf fun (n : โ) => โ(v n)) โ 0)
:
theorem
LinearGrowth.le_linearGrowthInf_comp
{u : โ โ EReal}
{v : โ โ โ}
(hu : 0 โคแถ [Filter.atTop] u)
(hv : Filter.Tendsto v Filter.atTop Filter.atTop)
:
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)
:
Monotone sequences #
theorem
LinearGrowth.linearGrowthInf_comp_nonneg
{u : โ โ EReal}
{v : โ โ โ}
(h : Monotone u)
(h' : u โ โฅ)
(hv : Filter.Tendsto v Filter.atTop Filter.atTop)
:
theorem
LinearGrowth.linearGrowthSup_comp_nonneg
{u : โ โ EReal}
{v : โ โ โ}
(h : Monotone u)
(h' : u โ โฅ)
(hv : Filter.Tendsto v Filter.atTop Filter.atTop)
:
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)) โ โค)
:
LinearGrowth.linearGrowthInf (u โ v) โค (LinearGrowth.linearGrowthSup fun (n : โ) => โ(v n)) * LinearGrowth.linearGrowthInf u
theorem
Monotone.le_linearGrowthSup_comp
{u : โ โ EReal}
{v : โ โ โ}
(h : Monotone u)
(hv : (LinearGrowth.linearGrowthInf fun (n : โ) => โ(v n)) โ 0)
:
(LinearGrowth.linearGrowthInf fun (n : โ) => โ(v n)) * LinearGrowth.linearGrowthSup u โค LinearGrowth.linearGrowthSup (u โ v)
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 โ โค)
: