pub fn univariate_round_message_extension_domain<F>(
log_words: usize,
a_words: &[Word],
b_words: &[Word],
big_field_challenges: &[F],
prover_message_domain: &BinarySubspace<Rijndael8b>,
) -> [F; 64]Expand description
Generates a univariate polynomial for the sumcheck protocol in AND constraint reduction.
Let our oblong polynomials be A(Z, X₀, …), B(Z, X₀, …), and C(Z, X₀, …)
Let our zerocheck challenges be (r₀, …)
It turns out that the first k zerocheck challenges can actually be deterministic, since our polynomials have 1-bit coefficients as long as their tensor product expansion is an F2-linearly-independent set.
Note: Deterministic here means that the first k zerocheck challenges are a compile-time agreed-upon parameter to the proof, and not sampled randomly by the verifier
We choose k=3 because we want them to be in a field isomorphic to the 8-bit NTT domain field
Computes a univariate polynomial: R₀(Z) = ∑_{X₀,…,Xₙ₋₁ ∈ {0,1}} (A·B - C)·eq(X₀,…,Xₙ₋₁; r₀,…,rₙ₋₁)
This is zero at every point on the hypercube IFF A*B-C evaluates to zero at (r₀,…,rₙ₋₁) for every Z on the univariate domain. Since R₀(Z) is 0 on the univariate domain, the prover sends only enough values such that the verifier learns a domain of evaluations of size > deg(R₀(Z))
The product constraint column C is not an input. Each C word is derived in registers as the AND of the matching A and B words. A satisfying witness makes that derivation exact on every row. So no third column is ever built or streamed.
§Arguments
log_words- Base-2 logarithm of the constraint axis’s lengtha_words- First multiplicand (a) as a one-bit oblong multilinear polynomialb_words- Second multiplicand (b) as a one-bit oblong multilinear polynomialeq_ind_big_field_challenges- Partial equality indicator evaluations for big field variablesprover_message_domain- The NTT domain subspace (dimensionSKIPPED_VARS + 1) from which the low-degree-extension lookup table is built internally
§Preconditions
- The two columns have equal length, at most
1 << log_words. They need not fill the constraint axis: a shorter column has its remaining rows read as zero. Such a row forces the derivedC = A & Bto zero as well, soA * B - Cvanishes on it at every point of the univariate domain and it adds nothing to the message.
§Returns
The evaluations of R₀(Z), a univariate polynomial of degree at most 2*(|D| - 1) where |D| is the domain size, on another, disjoint |D|-sized domain. This allows the verifier to construct R₀(Z), since it must equal zero on D.
§Type Parameters
F- The challenge field type (must be a binary field)
§Panics
Panics if any of the following don’t hold:
big_field_challenges.len() == log_words.saturating_sub(N_FIXED_SMALL_CHALLENGES)a_words.len() == b_words.len()a_words.len() <= 1 << log_words