InformationTheory.Shannon.Sanov.MultinomialLowerBound
Multinomial lower bound (Stirling-free) #
The Stirling-free multinomial lower bound for the type class cardinality
(Cover-Thomas):
(n+1)^{-|α|} · n^n / ∏ c(a)^{c(a)} ≤ |T_c|.
Main statements #
typeClassByCount_card_ge— multinomial lower bound (Stirling-free):(n+1)^{-|α|} · n^n / ∏ c(a)^{c(a)} ≤ |T_c|.typeClassByCount_Qn_ge— lower bound onQ^n(T_c):Q^n(T_c) ≥ (n+1)^{-|α|} · exp(-n · klDivIndex c n Q).
Implementation notes #
- The multinomial lower bound is proved without Stirling's approximation, using only
the per-letter inequality
c! · c^k ≤ k! · c^c.
References #
- T. M. Cover and J. A. Thomas, Elements of Information Theory (2nd ed.), Wiley, 2006.
Multinomial lower bound (Stirling-free) #
InformationTheory.Shannon.numTypes_le
sourceThe number of types (count vectors c : α → ℕ with ∑ a, c a = n, equivalently the
elements of piAntidiag univ n) is at most (n+1)^{|α|}.
Used by
InformationTheory.Shannon.prod_div_pow_eq_prod_pow_div_npow_of_sum
sourceUsed by
InformationTheory.Shannon.inv_mul_div_le_of_one_le_mul_mul_div
sourceUsed by
InformationTheory.Shannon.multinomial_mul_prod_ratio_pow_le
source{α : Type u_1}
[Fintype α]
{n : ℕ}
(c k : α → ℕ)
(hc_sum : ∑ a : α, c a = n)
(hk_sum : ∑ a : α, k a = n)
:
↑(Nat.multinomial Finset.univ k) * ∏ a : α, (↑(c a) / ↑n) ^ k a ≤ ↑(Nat.multinomial Finset.univ c) * ∏ a : α, (↑(c a) / ↑n) ^ c a
Used by
InformationTheory.Shannon.typeClassByCount_card_ge
sourceMultinomial lower bound:
(n+1)^{-|α|} · n^n / ∏ c(a)^{c(a)} ≤ |T_c|.
Used by
InformationTheory.Shannon.typeClassByCount_card_le
sourceMultinomial upper bound (method of types):
|T_c| ≤ n^n / ∏ c(a)^{c(a)}.
Used by
InformationTheory.Shannon.typeClassByCount_Qn_ge
source{α : Type u_1}
[Fintype α]
[DecidableEq α]
[MeasurableSpace α]
[MeasurableSingletonClass α]
(Q : MeasureTheory.Measure α)
[MeasureTheory.IsProbabilityMeasure Q]
(hQpos : ∀ (a : α), 0 < Q.real {a})
{n : ℕ}
(hn : 0 < n)
(c : α → ℕ)
(hc_sum : ∑ a : α, c a = n)
:
((↑n + 1) ^ Fintype.card α)⁻¹ * Real.exp (-(↑n * klDivIndex c n Q)) ≤ ((MeasureTheory.Measure.pi fun (x : Fin n) => Q) (typeClassByCount c)).toReal
Lower bound on Q^n(T_c): Q^n(T_c) ≥ (n+1)^{-|α|} · exp(-n · klDivIndex c n Q).