Expand description
The verifier’s “view” of a “fully-bound” polynomial relationship between an output layer and those of its inputs (see documentation within crate::expression for more general information).
Specifically, the VerifierExpr is exactly the struct a GKR verifier uses to compute its “oracle query” at the end of the sumcheck protocol, wherein
- The prover has sent over the last sumcheck message, i.e. the univariate polynomial f_{n - 1}(x) = \sum_{b_1, …, b_{n - 1}} f(b_1, …, b_{n - 1}, x)
- The verifier samples r_n uniformly from \mathbb{F} and wishes to check that Expr(r_1, …, r_n) = f_{n - 1}(r_n). Specifically, the verifier wishes to “plug in” r_1, …, r_n to Expr(x_1, …, x_n) and additionally add in prover-claimed values for each of the MLEs at the leaves of Expr(x_1, …, x_n) to check the above. The VerifierExpr allows the verifier to do exactly this, as the conversion from a super::circuit_expr::ExprDescription to a VerifierExpr involves exactly the process of “binding” the sumcheck challenges and “populating” each leaf MLE with the prover-claimed value for the evaluation of that MLE at the bound sumcheck challenge points.
Structs§
- Verifier
Expr - Placeholder type for defining
Expression<F, VerifierExpr>, the type used for representing expressions for the Verifier.