pub fn b_poly<F: Field>(chals: &[F], x: F) -> FExpand description
Evaluates the challenge polynomial b(X) at point x.
The challenge polynomial is defined as:
b(X) = prod_{i=0}^{k-1} (1 + u_{k-i} * X^{2^i})where chals = [u_1, ..., u_k] are the IPA challenges.
This polynomial was introduced in Section 3.2 of the
Halo paper as part of the Inner Product
Argument. It efficiently encodes the folded evaluation point: after k rounds
of IPA, the evaluation point vector is reduced to a single value b(x).
The polynomial has degree 2^k - 1 and can be evaluated in O(k) field
operations using the product form above. Its coefficients can be computed
using b_poly_coefficients.
§Usage
- In the verifier (
ipa.rs),b_polyis called to compute evaluations at the challenge points (e.g.,zeta,zeta * omega). - In
RecursionChallenge::evals, it computes evaluations for the batched polynomial commitment check.
§References
- Halo paper, Section 3.2 - original definition of the challenge polynomial
- PCD paper, Appendix A.2, Step 8 - use in accumulation context