zorch.sumcheck.eq.accumulators¶
Accumulator pre-computation for the small-value EqPoly sumcheck (Procedure 9).
Each round i ≤ l₀ of the small-value phase reads a precomputed table Aᵢ(v, u) that already contracts every variable except the first i, so the round polynomial is a cheap contraction Rᵢ·Aᵢ instead of a fresh pass over the cube. Aᵢ(v, u) sums Πₖ pₖ(v, u, x) weighted by eq(w, ·) over the extended prefix v ∈ U_dⁱ⁻¹, node u ∈ Û_d, and the bound suffix. precompute_accumulators fills all l₀ tables in one sweep over β ∈ U_dˡ⁰; the index maps below route each β to the (round, v, u, y) slots it contributes to.
precompute_accumulators ¶
precompute_accumulators(
p_evals: Array, e_in: Array, e_out: list[Array]
) -> list[Array]
Tables [A₁, …, Aₗ₀], Aᵢ of shape ((d+1)ⁱ⁻¹, d) over (v ∈ U_dⁱ⁻¹, u ∈ Û_d). e_in = eq(w_in, x_in) over {0,1}^{l/2}; e_out[i−1] = eq over (y, x_out) for round i (both the y and x_out domains, not x_out alone).
Source code in zorch/sumcheck/eq/accumulators.py
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | |