Proof of Theorem 5.4, display p. 777 — (2^d)^T ≤ C_1(d)·(log Ind K)^{C_2(d)}
ProvedBarvinokCount.ShortFormula.two_pow_iterCount_lebarvinok-algorithmcomplexityp2o-batch-pfp1ap2o-gran-per-chapterp2o-plan-paperp2o-v1
Let and let be an integer (in the paper ), and let be the smallest integer with . Put
Then
For fixed , and are constants and is bounded by a polynomial in the input size, so this inequality is what makes the number of primitive cones in Theorem 5.4 polynomial.
Formalization Note The hypothesis is added: for , and the right side is while the left side is (and in the definition of is undefined). The exponent is a real power of the positive number . Natural logarithms.
Preamble
import Mathlib import Definitions.Def_BarvinokCount_ShortFormula_iterCount
Formal statement
namespace BarvinokCount.ShortFormula
theorem two_pow_iterCount_le {d N : ℕ} (hd : 2 ≤ d) (hN : 2 ≤ N) :
(((2 : ℝ) ^ d) ^ iterCount d N) ≤
Real.exp (((-Real.log (Real.log (1.9 : ℝ))) / (Real.log (d : ℝ) - Real.log ((d : ℝ) - 1)) + 1) *
Real.log ((2 : ℝ) ^ d)) *
(Real.log (N : ℝ)) ^
(Real.log ((2 : ℝ) ^ d) / (Real.log (d : ℝ) - Real.log ((d : ℝ) - 1))) := by sorry
end BarvinokCount.ShortFormula
Source
Barvinok, A polynomial time algorithm for counting integral points in polyhedra when the dimension is fixed, Math. Oper. Res. 19 (1994), p. 777, proof of Theorem 5.4 (definitions of C_1(d), C_2(d) and the display (2^d)^T ≤ C_1(d)·(log(Ind K))^{C_2(d)})
Human review
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.