The greedy allocation (the proof notes, §3) #
Columns b < p with entries c_b, c_b + 2, c_b + 4, … (c_b = colVal n p b).
At step i take the smallest untaken entry gval i, from column gpick i; galloc i b is the
number of entries taken from column b before step i.
sum_galloc:∑_{b<p} galloc i b = i;allocCost_galloc:allocCost n p (galloc i) = ∑_{j<i} gval j;gval_le:gval i ≤ c_b + 2 galloc i bfor everyb < p(greedy rule);gbasis i = ∏_{b<p} (X + b)^{galloc i b}is monic of degreei, withgalloc i bzeros in the class of-b(Adm_gbasis).
theorem
Zeta32.Arith.Local.exists_greedy_choice
(n p : ℕ)
(hp : 0 < p)
(κ : ℕ → ℕ)
:
∃ b ∈ Finset.range p, ∀ b' ∈ Finset.range p, colVal n p b + 2 * ↑(κ b) ≤ colVal n p b' + 2 * ↑(κ b')
The greedy choice of a column.
Equations
- Zeta32.Arith.Local.gchoice n p κ = if h : 0 < p then ⋯.choose else 0
Instances For
The allocation before step i.
Equations
- Zeta32.Arith.Local.galloc n p 0 = fun (x : ℕ) => 0
- Zeta32.Arith.Local.galloc n p i.succ = fun (b : ℕ) => Zeta32.Arith.Local.galloc n p i b + if b = Zeta32.Arith.Local.gchoice n p (Zeta32.Arith.Local.galloc n p i) then 1 else 0
Instances For
The column chosen at step i.
Equations
- Zeta32.Arith.Local.gpick n p i = Zeta32.Arith.Local.gchoice n p (Zeta32.Arith.Local.galloc n p i)
Instances For
The entry taken at step i.
Equations
- Zeta32.Arith.Local.gval n p i = Zeta32.colVal n p (Zeta32.Arith.Local.gpick n p i) + 2 * ↑(Zeta32.Arith.Local.galloc n p i (Zeta32.Arith.Local.gpick n p i))
Instances For
The basis #
∏_{b<p} (X + b)^{galloc i b}.
Equations
- Zeta32.Arith.Local.gbasis n p i = ∏ b ∈ Finset.range p, (Polynomial.X + Polynomial.C ↑b) ^ Zeta32.Arith.Local.galloc n p i b