zorch.sumcheck.eq.small_value¶
EqPoly small-value sumcheck (Algorithm 6): the eq-weighted product sumcheck of Algorithm 5, sped up over its first l₀ rounds by precomputed accumulators.
Three phases proving one sumcheck, so the messages match prove_eq_poly on the same challenges (testing/small_value_test.py):
- Rounds 1..l₀ (SmallValueRound): the round polynomial is a contraction of the running R tensor against the round's accumulator; the factors are never touched, only R grows (by a Lagrange tensor factor) and the eq mass advances.
- Round l₀+1 (transition): materialize the postponed folds — one refold of [P₁, …, P_d, eq(w,·)] over the l₀ bound variables — then a TransitionRound over those factors, handing the tail its folded factors.
- Rounds l₀+2..l: the ordinary EqPolyRound tail.
SmallValueRound ¶
Bases: ProverRound
The accumulator round: sᵢ = lᵢ · (Rᵢ · Aᵢ), then grow R by the round's Lagrange tensor and advance the eq mass + table. One object drives all l₀ rounds under fold_rounds — it reads the round index off the eq table (which doubles each round) and picks that round's accumulator, the same shape as EqPolyRound.
Product-bound: the accumulators were precomputed over Û_d against a product contraction (Procedure 9), so unlike EqPolyRound it takes no general summand.
Source code in zorch/sumcheck/eq/small_value.py
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 84 85 86 87 88 89 90 91 92 93 | |
TransitionRound ¶
Bases: ProverRound
The √-space→eq-poly handoff (round l₀+1): one product round over the d+1 factors [P₁..P_d, eq(w,·)] at Û_d, binding the variable and advancing the eq mass for the tail. Runs on the materialized factors — the boundary compute_folded_evaluations has already collapsed the folds the accumulator phase postponed.
Source code in zorch/sumcheck/eq/small_value.py
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | |
prove_eq_poly_small_value ¶
prove_eq_poly_small_value(
p_initial: Array,
w: Array,
l_0: int,
claim: Array,
transcript: Transcript,
*,
challenges: ChallengePolicy
) -> tuple[Array, Transcript, list[Array]]
Prove the eq-weighted sumcheck with l₀ small-value rounds. Returns the final folded factors (d, 1), the transcript, and all l round messages (each over Û_d).
Source code in zorch/sumcheck/eq/small_value.py
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 | |