Module evalcheck

Source
Expand description

The multivariate evalcheck polynomial protocol.

This protocol can be used to verify a list of evaluation claims on the multilinears in the crate::oracle::MultilinearOracleSet. For each claim, if they contain a subclaim, we recursively prove the subclaim. Otherwise, we evaluate the claim if they are virtual, further reduced to sumcheck constraints for crate::oracle::MultilinearPolyVariant::Shifted, crate::oracle::MultilinearPolyVariant::Packed, or crate::oracle::MultilinearPolyVariant::Composite. All the committed polynomials are collected and should be handled by the crate::ring_switch module. crate::protocols::greedy_evalcheck shows how the protocol is used in a round-by-round manner. See EvalcheckProver::prove for more details.

Modules§

subclaims
This module contains helpers to create bivariate sumcheck instances originating from:

Structs§

EvalPoint
A wrapper struct for evaluation points.
EvalPointOracleIdMap
Data structure for efficiently querying and inserting evaluations of claims.
EvalcheckMultilinearClaim
This struct represents a claim to be verified through the evalcheck protocol.
EvalcheckProver
A mutable prover state.
EvalcheckVerifier
A mutable verifier state.

Enums§

Error
EvalcheckHint
A hint is an instruction that the prover sends to the verifier, instructing them how to check the current claim efficiently.
VerificationError

Functions§

deserialize_evalcheck_proof
Deserializes the EvalcheckProof object from the given transcript.
serialize_evalcheck_proof
Serializes the EvalcheckProof into the transcript